diff --git a/.github/workflows/golang-test.yaml b/.github/workflows/golang-test.yaml index b03017e..a537e3c 100644 --- a/.github/workflows/golang-test.yaml +++ b/.github/workflows/golang-test.yaml @@ -10,7 +10,7 @@ jobs: full_ci: strategy: matrix: - go_version: [ 1.24.x ] + go_version: [ 1.26.x ] runs-on: ubuntu-24.04 diff --git a/.github/workflows/golangci-lint.yaml b/.github/workflows/golangci-lint.yaml index 99f6ea9..f190afb 100644 --- a/.github/workflows/golangci-lint.yaml +++ b/.github/workflows/golangci-lint.yaml @@ -15,12 +15,12 @@ jobs: name: lint runs-on: ubuntu-latest steps: + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: - go-version: '1.24' - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + go-version-file: 'go.mod' - name: golangci-lint uses: golangci/golangci-lint-action@4afd733a84b1f43292c63897423277bb7f4313a9 # v8.0.0 with: - version: latest + version: v2.12.2 args: --timeout=10m diff --git a/.github/workflows/goreleaser.yaml b/.github/workflows/goreleaser.yaml index 2ca4502..a413ade 100644 --- a/.github/workflows/goreleaser.yaml +++ b/.github/workflows/goreleaser.yaml @@ -23,11 +23,13 @@ jobs: # Strip the 'refs/tags/' prefix TAG_NAME=${GITHUB_REF#refs/tags/} - # Extract suffix from tag name after the last '-' (e.g., 'dencun' from 'v1.0.0-dencun') - RELEASE_SUFFIX=${TAG_NAME##*-} - - # Check if the suffix is still a version pattern (e.g., 'v0.0.44'), in which case there's no suffix - if [[ $RELEASE_SUFFIX =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + # A release-branch tag is a semver core followed by everything after the + # FIRST '-' (e.g. 'glamsterdam-devnet-7' from '0.0.1-glamsterdam-devnet-7', + # 'dencun' from 'v1.0.0-dencun'). Anchoring on the semver core keeps + # multi-word suffixes intact and leaves plain 'vX.Y.Z' tags unsuffixed. + if [[ $TAG_NAME =~ ^v?[0-9]+\.[0-9]+\.[0-9]+-(.+)$ ]]; then + RELEASE_SUFFIX="${BASH_REMATCH[1]}" + else RELEASE_SUFFIX="" fi @@ -38,7 +40,7 @@ jobs: - name: Set up Go uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: - go-version: '1.24.x' + go-version-file: 'go.mod' - uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3.8.2 name: Set up Node with: diff --git a/.golangci.yml b/.golangci.yml index 6135bdb..5d9f2c2 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -76,7 +76,15 @@ linters: - gocritic - gosec - wsl + - goconst path: _test\.go + # The agent, server and store packages repeat logrus field keys and + # prometheus label names (a fixed logging vocabulary) across many files; + # goconst flags the shared keys but turning them into Go constants adds + # no real value. + - linters: + - goconst + path: pkg/(agent|server|store)/ paths: - third_party$ - builtin$ diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 272177e..71dff77 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -43,7 +43,7 @@ dockers: dockerfile: goreleaser-scratch.Dockerfile image_templates: - "ethpandaops/{{ .ProjectName }}:{{ .Version }}-amd64" - - "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-amd64" + - "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}{{ else }}latest{{ end }}-amd64" build_flag_templates: - "--platform=linux/amd64" - "--label=org.opencontainers.image.created={{.Date}}" @@ -56,7 +56,7 @@ dockers: dockerfile: goreleaser-scratch.Dockerfile image_templates: - "ethpandaops/{{ .ProjectName }}:{{ .Version }}-arm64v8" - - "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-arm64v8" + - "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}{{ else }}latest{{ end }}-arm64v8" build_flag_templates: - "--platform=linux/arm64/v8" - "--label=org.opencontainers.image.created={{.Date}}" @@ -70,7 +70,7 @@ dockers: dockerfile: goreleaser-debian.Dockerfile image_templates: - "ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian-amd64" - - "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest-amd64" + - "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-debian{{ else }}debian-latest{{ end }}-amd64" build_flag_templates: - "--platform=linux/amd64" - "--label=org.opencontainers.image.created={{.Date}}" @@ -83,7 +83,7 @@ dockers: dockerfile: goreleaser-debian.Dockerfile image_templates: - "ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian-arm64v8" - - "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest-arm64v8" + - "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-debian{{ else }}debian-latest{{ end }}-arm64v8" build_flag_templates: - "--platform=linux/arm64/v8" - "--label=org.opencontainers.image.created={{.Date}}" @@ -99,10 +99,10 @@ docker_manifests: - name_template: ethpandaops/{{ .ProjectName }}:{{ .Version }}-arm64 image_templates: - ethpandaops/{{ .ProjectName }}:{{ .Version }}-arm64v8 - - name_template: ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest + - name_template: ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}{{ else }}latest{{ end }} image_templates: - - ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-amd64 - - ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-arm64v8 + - ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}{{ else }}latest{{ end }}-amd64 + - ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}{{ else }}latest{{ end }}-arm64v8 ## Debian - name_template: ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian @@ -112,7 +112,7 @@ docker_manifests: - name_template: ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian-arm64 image_templates: - ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian-arm64v8 - - name_template: ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest + - name_template: ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-debian{{ else }}debian-latest{{ end }} image_templates: - - ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest-amd64 - - ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest-arm64v8 + - ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-debian{{ else }}debian-latest{{ end }}-amd64 + - ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-debian{{ else }}debian-latest{{ end }}-arm64v8 diff --git a/Dockerfile b/Dockerfile index 5104994..9513a29 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.24.6 AS builder +FROM golang:1.26 AS builder WORKDIR /src COPY go.sum go.mod ./ RUN go mod download diff --git a/deploy/docker-compose/tracoor-server.yaml b/deploy/docker-compose/tracoor-server.yaml index 28abc21..3291f49 100644 --- a/deploy/docker-compose/tracoor-server.yaml +++ b/deploy/docker-compose/tracoor-server.yaml @@ -14,6 +14,7 @@ services: retention: beaconStates: 30m beaconBlocks: 30m + executionPayloadEnvelopes: 30m executionBlockTrace: 30m store: diff --git a/deploy/docker-compose/tracoor-single.yaml b/deploy/docker-compose/tracoor-single.yaml index 27da923..7f873a2 100644 --- a/deploy/docker-compose/tracoor-single.yaml +++ b/deploy/docker-compose/tracoor-single.yaml @@ -16,6 +16,7 @@ server: beaconStates: 1m executionBlockTraces: 15m beaconBlocks: 1m + executionPayloadEnvelopes: 1m # ethereum: # network: devnet-name # config: @@ -38,6 +39,7 @@ agents: features: fetchBeaconState: true fetchBeaconBlock: true + fetchExecutionPayloadEnvelope: true fetchBeaconBadBlock: true fetchBeaconBadBlob: true fetchExecutionBlockTrace: true diff --git a/example_agent_config.yaml b/example_agent_config.yaml index 5cc6a1f..2a3e81c 100644 --- a/example_agent_config.yaml +++ b/example_agent_config.yaml @@ -8,6 +8,7 @@ ethereum: # features: # fetchBeaconState: true # fetchBeaconBlock: true + # fetchExecutionPayloadEnvelope: true # fetchBeaconBadBlock: true # fetchBeaconBadBlob: true # fetchExecutionBlockTrace: true diff --git a/example_server_config.yaml b/example_server_config.yaml index e0a2445..7105274 100644 --- a/example_server_config.yaml +++ b/example_server_config.yaml @@ -14,6 +14,7 @@ services: retention: beaconStates: 30m beaconBlocks: 30m + executionPayloadEnvelopes: 30m beaconBadBlocks: 30m beaconBadBlobs: 30m executionBlockTrace: 30m diff --git a/example_single_config.yaml b/example_single_config.yaml index b96703b..fa595df 100644 --- a/example_single_config.yaml +++ b/example_single_config.yaml @@ -15,6 +15,7 @@ server: beaconStates: 30m executionBlockTraces: 30m beaconBlocks: 30m + executionPayloadEnvelopes: 30m # Use the following to configure Tracoor for a custom network # ethereum: # config: @@ -38,6 +39,7 @@ agents: # features: # fetchBeaconState: true # fetchBeaconBlock: true + # fetchExecutionPayloadEnvelope: true # fetchBeaconBadBlock: true # fetchBeaconBadBlob: true # fetchExecutionBlockTrace: true diff --git a/go.mod b/go.mod index 3aa6ba7..5a5ef9b 100644 --- a/go.mod +++ b/go.mod @@ -1,36 +1,34 @@ module github.com/ethpandaops/tracoor -go 1.24.6 - -replace github.com/attestantio/go-eth2-client => github.com/attestantio/go-eth2-client v0.26.1-0.20250721122214-dc2928832acc +go 1.26.1 require ( github.com/0xsequence/ethkit v1.38.1 - github.com/attestantio/go-eth2-client v0.26.0 github.com/aws/aws-sdk-go-v2 v1.25.0 github.com/aws/aws-sdk-go-v2/credentials v1.17.1 github.com/aws/aws-sdk-go-v2/service/s3 v1.48.1 github.com/aws/smithy-go v1.20.0 github.com/cenkalti/backoff/v4 v4.2.1 github.com/creasty/defaults v1.7.0 - github.com/ethpandaops/beacon v0.64.0 + github.com/ethpandaops/beacon v0.69.1-0.20260716043407-1de3961bc7c9 github.com/ethpandaops/ethwallclock v0.3.0 + github.com/ethpandaops/go-eth2-client v0.1.7-0.20260712074542-bca0dce49005 github.com/glebarez/sqlite v1.10.0 github.com/go-co-op/gocron v1.27.1 github.com/google/uuid v1.6.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 github.com/hashicorp/golang-lru/v2 v2.0.7 github.com/lib/pq v1.10.9 github.com/pkg/errors v0.9.1 - github.com/prometheus/client_golang v1.18.0 + github.com/prometheus/client_golang v1.23.2 github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.9.1 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.1 github.com/testcontainers/testcontainers-go v0.35.0 - golang.org/x/sync v0.14.0 - google.golang.org/grpc v1.64.1 - google.golang.org/protobuf v1.34.2 + golang.org/x/sync v0.19.0 + google.golang.org/grpc v1.78.0 + google.golang.org/protobuf v1.36.11 gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0 gopkg.in/yaml.v3 v3.0.1 gorm.io/driver/postgres v1.5.4 @@ -43,6 +41,8 @@ require ( dario.cat/mergo v1.0.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/OffchainLabs/go-bitfield v0.0.0-20251031151322-f427d04d8506 // indirect + github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.0 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.0 // indirect @@ -53,16 +53,15 @@ require ( github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.10 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bits-and-blooms/bitset v1.22.0 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.5 // indirect + github.com/casbin/govaluate v1.10.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chuckpreslar/emission v0.0.0-20170206194824-a7ddd980baf9 // indirect - github.com/consensys/bavard v0.1.30 // indirect - github.com/consensys/gnark-crypto v0.17.0 // indirect + github.com/consensys/gnark-crypto v0.18.1 // indirect github.com/containerd/containerd v1.7.18 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect github.com/cpuguy83/dockercfg v0.3.2 // indirect - github.com/crate-crypto/go-eth-kzg v1.3.0 // indirect + github.com/crate-crypto/go-eth-kzg v1.5.0 // indirect github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/deckarep/golang-set/v2 v2.8.0 // indirect @@ -72,22 +71,18 @@ require ( github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/emicklei/dot v1.6.4 // indirect - github.com/ethereum/c-kzg-4844/v2 v2.1.1 // indirect - github.com/ethereum/go-ethereum v1.14.10 // indirect + github.com/ethereum/c-kzg-4844/v2 v2.1.6 // indirect + github.com/ethereum/go-ethereum v1.17.3-0.20260507223249-73944e329925 // indirect github.com/ethereum/go-verkle v0.2.2 // indirect - github.com/fatih/color v1.18.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/ferranbt/fastssz v0.1.4 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/glebarez/go-sqlite v1.21.2 // indirect - github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect - github.com/go-playground/validator/v10 v10.11.1 // indirect - github.com/goccy/go-yaml v1.9.8 // indirect + github.com/goccy/go-yaml v1.19.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect + github.com/golang/snappy v1.0.0 // indirect github.com/gorilla/websocket v1.5.3 // indirect github.com/goware/breaker v0.2.0 // indirect github.com/goware/superr v0.0.2 // indirect @@ -99,64 +94,58 @@ require ( github.com/jackc/pgx/v5 v5.4.3 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect - github.com/klauspost/compress v1.17.5 // indirect - github.com/klauspost/cpuid/v2 v2.2.10 // indirect + github.com/klauspost/compress v1.18.0 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-sqlite3 v1.14.22 // indirect - github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/patternmatcher v0.6.0 // indirect github.com/moby/sys/sequential v0.5.0 // indirect github.com/moby/sys/user v0.1.0 // indirect github.com/moby/term v0.5.0 // indirect github.com/morikuni/aec v1.0.0 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect - github.com/pk910/dynamic-ssz v0.0.4 // indirect + github.com/pk910/dynamic-ssz v1.3.2 // indirect + github.com/pk910/hashtree-bindings v0.2.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect - github.com/prometheus/client_model v0.5.0 // indirect - github.com/prometheus/common v0.45.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect - github.com/prysmaticlabs/go-bitfield v0.0.0-20240618144021-706c95b2dd15 // indirect + github.com/prometheus/client_model v0.6.2 // indirect + github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/procfs v0.16.1 // indirect github.com/r3labs/sse/v2 v2.10.0 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/robfig/cron/v3 v3.0.1 // indirect github.com/rs/zerolog v1.32.0 // indirect github.com/shirou/gopsutil/v3 v3.23.12 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect - github.com/spf13/cast v1.5.0 // indirect + github.com/spf13/cast v1.10.0 // indirect github.com/spf13/pflag v1.0.6 // indirect - github.com/supranational/blst v0.3.14 // indirect + github.com/supranational/blst v0.3.16 // indirect github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.24.0 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/trace v1.24.0 // indirect + go.opentelemetry.io/otel v1.40.0 // indirect + go.opentelemetry.io/otel/metric v1.40.0 // indirect + go.opentelemetry.io/otel/trace v1.40.0 // indirect go.uber.org/atomic v1.11.0 // indirect - golang.org/x/crypto v0.38.0 // indirect - golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect - golang.org/x/net v0.40.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.25.0 // indirect - golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect - gopkg.in/Knetic/govaluate.v3 v3.0.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect + golang.org/x/crypto v0.47.0 // indirect + golang.org/x/net v0.49.0 // indirect + golang.org/x/sys v0.40.0 // indirect + golang.org/x/text v0.33.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect modernc.org/libc v1.22.5 // indirect modernc.org/mathutil v1.5.0 // indirect modernc.org/memory v1.5.0 // indirect modernc.org/sqlite v1.23.1 // indirect - rsc.io/tmplfunc v0.0.3 // indirect ) diff --git a/go.sum b/go.sum index d1170c0..9125415 100644 --- a/go.sum +++ b/go.sum @@ -44,6 +44,10 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/OffchainLabs/go-bitfield v0.0.0-20251031151322-f427d04d8506 h1:d/SJkN8/9Ca+1YmuDiUJxAiV4w/a9S8NcsG7GMQSrVI= +github.com/OffchainLabs/go-bitfield v0.0.0-20251031151322-f427d04d8506/go.mod h1:6TZI4FU6zT8x6ZfWa1J8YQ2NgW0wLV/W3fHRca8ISBo= +github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 h1:1zYrtlhrZ6/b6SAjLSfKzWtdgqK0U+HtH/VcBWh1BaU= +github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6/go.mod h1:ioLG6R+5bUSO1oeGSDxOV3FADARuMoytZCSX6MEMQkI= github.com/alecthomas/kingpin/v2 v2.3.1/go.mod h1:oYL5vtsvEHZGHxU7DMp32Dvx+qL+ptGn6lWaot2vCNE= github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -52,8 +56,6 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= -github.com/attestantio/go-eth2-client v0.26.1-0.20250721122214-dc2928832acc h1:rLrx/o7WeRqmE9iXvhyBMDrugOPZRhNBLQD/4XbG6hU= -github.com/attestantio/go-eth2-client v0.26.1-0.20250721122214-dc2928832acc/go.mod h1:fvULSL9WtNskkOB4i+Yyr6BKpNHXvmpGZj9969fCrfY= github.com/aws/aws-sdk-go-v2 v1.25.0 h1:sv7+1JVJxOu/dD/sz/csHX7jFqmP001TIY7aytBWDSQ= github.com/aws/aws-sdk-go-v2 v1.25.0/go.mod h1:G104G1Aho5WqF+SR3mDIobTABQzpYV0WxMsKxlMggOA= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4 h1:OCs21ST2LrepDfD3lwlQiOqIGp6JiEUqG84GzTDoyJs= @@ -92,8 +94,12 @@ github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/ github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE= github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 h1:59Kx4K6lzOW5w6nFlA0v5+lk/6sjybR934QNHSJZPTQ= github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/casbin/govaluate v1.10.0 h1:ffGw51/hYH3w3rZcxO/KcaUIDOLP84w7nsidMVgaDG0= +github.com/casbin/govaluate v1.10.0/go.mod h1:G/UnbIjZk/0uMNaLwZZmFQrR72tYRZWQkO70si/iR7A= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= +github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/cp v1.1.1 h1:nCb6ZLdB7NRaqsm91JtQTAme2SKJzXVsdPIPkyJr1MU= github.com/cespare/cp v1.1.1/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= @@ -109,10 +115,8 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P 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/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/consensys/bavard v0.1.30 h1:wwAj9lSnMLFXjEclKwyhf7Oslg8EoaFz9u1QGgt0bsk= -github.com/consensys/bavard v0.1.30/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs= -github.com/consensys/gnark-crypto v0.17.0 h1:vKDhZMOrySbpZDCvGMOELrHFv/A9mJ7+9I8HEfRZSkI= -github.com/consensys/gnark-crypto v0.17.0/go.mod h1:A2URlMHUT81ifJ0UlLzSlm7TmnE3t7VxEThApdMukJw= +github.com/consensys/gnark-crypto v0.18.1 h1:RyLV6UhPRoYYzaFnPQA4qK3DyuDgkTgskDdoGqFt3fI= +github.com/consensys/gnark-crypto v0.18.1/go.mod h1:L3mXGFTe1ZN+RSJ+CLjUt9x7PNdx8ubaYfDROyp2Z8c= github.com/containerd/containerd v1.7.18 h1:jqjZTQNfXGoEaZdW1WwPU0RqSn1Bm2Ay/KJPUuO8nao= github.com/containerd/containerd v1.7.18/go.mod h1:IYEk9/IO6wAPUz2bCMVUbsfXjzw5UNP5fLz4PsUygQ4= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= @@ -123,8 +127,8 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= -github.com/crate-crypto/go-eth-kzg v1.3.0 h1:05GrhASN9kDAidaFJOda6A4BEvgvuXbazXg/0E3OOdI= -github.com/crate-crypto/go-eth-kzg v1.3.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI= +github.com/crate-crypto/go-eth-kzg v1.5.0 h1:FYRiJMJG2iv+2Dy3fi14SVGjcPteZ5HAAUe4YWlJygc= +github.com/crate-crypto/go-eth-kzg v1.5.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v1.1.0 h1:EN/u9k2TF6OWSHrCCDBBU6GLNMq88OspHHlMnHfoyU4= @@ -153,31 +157,26 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/emicklei/dot v1.6.4 h1:cG9ycT67d9Yw22G+mAb4XiuUz6E6H1S0zePp/5Cwe/c= -github.com/emicklei/dot v1.6.4/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/c-kzg-4844/v2 v2.1.1 h1:KhzBVjmURsfr1+S3k/VE35T02+AW2qU9t9gr4R6YpSo= -github.com/ethereum/c-kzg-4844/v2 v2.1.1/go.mod h1:TC48kOKjJKPbN7C++qIgt0TJzZ70QznYR7Ob+WXl57E= -github.com/ethereum/go-ethereum v1.14.10 h1:kC24WjYeRjDy86LVo6MfF5Xs7nnUu+XG4AjaYIaZYko= -github.com/ethereum/go-ethereum v1.14.10/go.mod h1:+l/fr42Mma+xBnhefL/+z11/hcmJ2egl+ScIVPjhc7E= +github.com/ethereum/c-kzg-4844/v2 v2.1.6 h1:xQymkKCT5E2Jiaoqf3v4wsNgjZLY0lRSkZn27fRjSls= +github.com/ethereum/c-kzg-4844/v2 v2.1.6/go.mod h1:8HMkUZ5JRv4hpw/XUrYWSQNAUzhHMg2UDb/U+5m+XNw= +github.com/ethereum/go-ethereum v1.17.3-0.20260507223249-73944e329925 h1:d0kQnVKgCER1xIEYB0ucuNLfq4PtBZw+abMceZKUO8g= +github.com/ethereum/go-ethereum v1.17.3-0.20260507223249-73944e329925/go.mod h1:f2EhRwqewIZkGoQekywI2Y2RZAMTSavLNkD9qItFy1A= github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= -github.com/ethpandaops/beacon v0.64.0 h1:sNYEhd86aC6XEL8rYus1NJB8/lzd6bcW4Xo8NtNUB8o= -github.com/ethpandaops/beacon v0.64.0/go.mod h1:WopgtcqWZR+FNQCjFlLqHAdzNCYQyxXOnB6YD+/MS6I= +github.com/ethpandaops/beacon v0.69.1-0.20260716043407-1de3961bc7c9 h1:I0bfsRbH2y4VhOMIcgtzbsemCIePH7QTiulxR7inHgc= +github.com/ethpandaops/beacon v0.69.1-0.20260716043407-1de3961bc7c9/go.mod h1:Bg1gTi65Y34ImJPAl9v3KFvQLPFQrn0D1A7ANs8uORY= github.com/ethpandaops/ethwallclock v0.3.0 h1:xF5fwtBf+bHFHZKBnwiPFEuelW3sMM7SD3ZNFq1lJY4= github.com/ethpandaops/ethwallclock v0.3.0/go.mod h1:y0Cu+mhGLlem19vnAV2x0hpFS5KZ7oOi2SWYayv9l24= -github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/ethpandaops/go-eth2-client v0.1.7-0.20260712074542-bca0dce49005 h1:hN4nugJUYn/O1Or4cW8jBYJBgCCrIGeMU2bXbpKWInU= +github.com/ethpandaops/go-eth2-client v0.1.7-0.20260712074542-bca0dce49005/go.mod h1:97Oq3omOQSGPPYgrbsOIIw2Pc4T5Ph21f8ZRyHJQBHU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/ferranbt/fastssz v0.1.4 h1:OCDB+dYDEQDvAgtAGnTSidK1Pe2tW3nFV40XyMkTeDY= -github.com/ferranbt/fastssz v0.1.4/go.mod h1:Ea3+oeoRGGLGm5shYAeDgu6PGUlcvQhE2fILyD9+tGg= -github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= -github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= 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/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= @@ -201,26 +200,16 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= -github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= -github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= -github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= -github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= -github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/goccy/go-yaml v1.9.8 h1:5gMyLUeU1/6zl+WFfR1hN7D2kf+1/eRGa7DFtToiBvQ= -github.com/goccy/go-yaml v1.9.8/go.mod h1:JubOolP3gh0HpiBc4BLRD4YmjEjHAmIIB2aaXKkTfoE= +github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM= +github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -256,8 +245,8 @@ github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= +github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -272,8 +261,9 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.6/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-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -289,7 +279,6 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20230207041349-798e818bf904 h1:4/hN5RUoecvl+RmJRE2YxKWtnnQls6rQjjW5oV7qg2U= github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -302,8 +291,8 @@ github.com/goware/superr v0.0.2 h1:71xI6ojd+YXyq2RamI8lMpkYTNoErI5Uyrv8vFAPr1U= github.com/goware/superr v0.0.2/go.mod h1:EcKklaJ9ql9J+gKfwThuYsQ1IpUlOdUabO3qkAJrv60= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 h1:/c3QmbOGMGTOumP2iT/rCwB7b0QDGLKzqOmktBjT+Is= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1/go.mod h1:5SN9VR2LTsRFsrEC6FHgRbTWrTHu6tqPeKxEQv15giM= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= @@ -341,10 +330,10 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.5 h1:d4vBd+7CHydUqpFBgUEKkSdtSugf9YFmSkvUYPquI5E= -github.com/klauspost/compress v1.17.5/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= -github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= -github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -361,20 +350,15 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4= github.com/leanovate/gopter v0.2.11/go.mod h1:aK3tzZP/C+p1m3SPRE4SYZFGP7jjkuSI4f7Xvpt0S9c= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= -github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= @@ -383,15 +367,6 @@ github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= -github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= -github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= @@ -409,6 +384,8 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= @@ -424,8 +401,10 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= -github.com/pk910/dynamic-ssz v0.0.4 h1:DT29+1055tCEPCaR4V/ez+MOKW7BzBsmjyFvBRqx0ME= -github.com/pk910/dynamic-ssz v0.0.4/go.mod h1:b6CrLaB2X7pYA+OSEEbkgXDEcRnjLOZIxZTsMuO/Y9c= +github.com/pk910/dynamic-ssz v1.3.2 h1:65UR/O+ss+U2Dn86Rdl7LwehHo3u2ElutduS/pcuUXE= +github.com/pk910/dynamic-ssz v1.3.2/go.mod h1:lqmnou2bjr2UWQ3C/L3082TGW0SFl/SwT7ionwM0+FU= +github.com/pk910/hashtree-bindings v0.2.2 h1:gkczxxekBW2NeMK9N3OLj7Jepe7zPmJGVwr8LyofGsA= +github.com/pk910/hashtree-bindings v0.2.2/go.mod h1:zrWt88783JmhBfcgni6kkIMYRdXTZi/FL//OyI5T/l4= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -443,8 +422,8 @@ github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrb github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -452,8 +431,8 @@ github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6T github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= -github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= -github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= @@ -461,8 +440,8 @@ github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+ github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= -github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= -github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= @@ -471,12 +450,8 @@ github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/prysmaticlabs/go-bitfield v0.0.0-20240618144021-706c95b2dd15 h1:lC8kiphgdOBTcbTvo8MwkvpKjO0SlAgjv4xIK5FGJ94= -github.com/prysmaticlabs/go-bitfield v0.0.0-20240618144021-706c95b2dd15/go.mod h1:8svFBIKKu31YriBG/pNizo9N0Jr9i5PQ+dFkxWg3x5k= -github.com/prysmaticlabs/gohashtree v0.0.4-beta h1:H/EbCuXPeTV3lpKeXGPpEV9gsUpkqOOVnWapUyeWro4= -github.com/prysmaticlabs/gohashtree v0.0.4-beta/go.mod h1:BFdtALS+Ffhg3lGQIHv9HDWuHS8cTvHZzrHWxwOtGOs= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/r3labs/sse/v2 v2.10.0 h1:hFEkLLFY4LDifoHdiCN/LlGBAdVJYsANaLqNYa1l/v0= github.com/r3labs/sse/v2 v2.10.0/go.mod h1:Igau6Whc+F17QUgML1fYe1VPZzTV6EMCnYktEmkNJ7I= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= @@ -486,12 +461,11 @@ github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= @@ -507,8 +481,8 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= +github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= @@ -522,17 +496,16 @@ github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/supranational/blst v0.3.14 h1:xNMoHRJOTwMn63ip6qoWJ2Ymgvj7E2b9jY2FAwY+qRo= -github.com/supranational/blst v0.3.14/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/supranational/blst v0.3.16 h1:bTDadT+3fK497EvLdWRQEjiGnUtzJ7jjIUMF0jqwYhE= +github.com/supranational/blst v0.3.16/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/testcontainers/testcontainers-go v0.35.0 h1:uADsZpTKFAtp8SLK+hMwSaa+X+JiERHtd4sQAFmXeMo= @@ -557,25 +530,33 @@ go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 h1:IeMeyr1aBvBiPVYihXIaeIZba6b8E1bYp7lbdxK8CQg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o= -go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= -go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= -go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= +go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.40.0 h1:wVZXIWjQSeSmMoxF74LzAnpVQOAFDo3pPji9Y4SOFKc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.40.0/go.mod h1:khvBS2IggMFNwZK/6lEeHg/W57h/IX6J4URh57fuI40= +go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= +go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= +go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= +go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= +go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/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-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -583,9 +564,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U 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.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= +golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= +golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -655,15 +635,14 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R 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-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= 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.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -687,8 +666,8 @@ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJ 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.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -711,7 +690,6 @@ golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -736,10 +714,8 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/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-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/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-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220406163625-3f8b81556e12/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -753,14 +729,14 @@ golang.org/x/sys v0.9.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.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= 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.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/term v0.39.0 h1:RclSuaJf32jOqZz74CkPA9qFuVTX7vhLlpfj/IGWlqY= +golang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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= @@ -770,13 +746,13 @@ 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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= +golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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= @@ -827,6 +803,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -879,10 +857,10 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -895,8 +873,8 @@ google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKa google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= -google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= 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= @@ -913,12 +891,10 @@ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0 h1:FVCohIoYO7IJoDDVpV2pdq7SgrMH6wHnuTyrdrxJNoY= gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0/go.mod h1:OdE7CF6DbADk7lN8LIKRzRJTTZXIjtWgA5THM5lhBAw= -gopkg.in/Knetic/govaluate.v3 v3.0.0 h1:18mUyIt4ZlRlFZAAfVetz4/rzlJs9yhN+U02F4u1AOc= -gopkg.in/Knetic/govaluate.v3 v3.0.0/go.mod h1:csKLBORsPbafmSCGTEh3U7Ozmsuq8ZSIlKk1bcqph0E= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/cenkalti/backoff.v1 v1.1.0 h1:Arh75ttbsvlpVA7WtVpH4u9h6Zl46xuptxqLxPiSo4Y= gopkg.in/cenkalti/backoff.v1 v1.1.0/go.mod h1:J6Vskwqd+OMVJl8C33mmtxTBs2gyzfv7UDAkHu8BrjI= @@ -939,7 +915,6 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= 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.0-20210107192922-496545a6307b/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= gorm.io/driver/postgres v1.5.4 h1:Iyrp9Meh3GmbSuyIAGyjkN+n9K+GHX9b9MqsTL4EJCo= @@ -971,5 +946,3 @@ modernc.org/sqlite v1.23.1/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= -rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= diff --git a/pkg/agent/agent.go b/pkg/agent/agent.go index 6bcbe5e..0d11a43 100644 --- a/pkg/agent/agent.go +++ b/pkg/agent/agent.go @@ -15,9 +15,10 @@ import ( //nolint:gosec // only exposed if pprofAddr config is set _ "net/http/pprof" - eth2v1 "github.com/attestantio/go-eth2-client/api/v1" - "github.com/attestantio/go-eth2-client/spec/phase0" + eth2v1 "github.com/ethpandaops/go-eth2-client/api/v1" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/ethpandaops/tracoor/pkg/agent/ethereum" + "github.com/ethpandaops/tracoor/pkg/agent/ethereum/execution" "github.com/ethpandaops/tracoor/pkg/agent/indexer" "github.com/ethpandaops/tracoor/pkg/compression" "github.com/ethpandaops/tracoor/pkg/networks" @@ -45,12 +46,13 @@ type agent struct { store store.Store - beaconStateQueue chan *BeaconStateRequest - beaconBlockQueue chan *BeaconBlockRequest - beaconBadBlockQueue chan *BeaconBadBlockRequest - beaconBadBlobQueue chan *BeaconBadBlobRequest - executionBlockTraceQueue chan *ExecutionBlockTraceRequest - executionBadBlockQueue chan *ExecutionBadBlockRequest + beaconStateQueue chan *BeaconStateRequest + beaconBlockQueue chan *BeaconBlockRequest + executionPayloadEnvelopeQueue chan *ExecutionPayloadEnvelopeRequest + beaconBadBlockQueue chan *BeaconBadBlockRequest + beaconBadBlobQueue chan *BeaconBadBlobRequest + executionBlockTraceQueue chan *ExecutionBlockTraceRequest + executionBadBlockQueue chan *ExecutionBadBlockRequest compressor *compression.Compressor } @@ -79,24 +81,24 @@ func New(ctx context.Context, log logrus.FieldLogger, config *Config) (*agent, e } return &agent{ - Config: config, - node: node, - log: log, - metrics: GetMetricsInstance(namespace), - scheduler: gocron.NewScheduler(time.Local), - indexer: indexerClient, - store: st, - beaconStateQueue: make(chan *BeaconStateRequest, 1000), - beaconBlockQueue: make(chan *BeaconBlockRequest, 1000), - beaconBadBlockQueue: make(chan *BeaconBadBlockRequest, 1000), - beaconBadBlobQueue: make(chan *BeaconBadBlobRequest, 1000), - executionBlockTraceQueue: make(chan *ExecutionBlockTraceRequest, 1000), - executionBadBlockQueue: make(chan *ExecutionBadBlockRequest, 1000), - compressor: compression.NewCompressor(), + Config: config, + node: node, + log: log, + metrics: GetMetricsInstance(namespace), + scheduler: gocron.NewScheduler(time.Local), + indexer: indexerClient, + store: st, + beaconStateQueue: make(chan *BeaconStateRequest, 1000), + beaconBlockQueue: make(chan *BeaconBlockRequest, 1000), + executionPayloadEnvelopeQueue: make(chan *ExecutionPayloadEnvelopeRequest, 1000), + beaconBadBlockQueue: make(chan *BeaconBadBlockRequest, 1000), + beaconBadBlobQueue: make(chan *BeaconBadBlobRequest, 1000), + executionBlockTraceQueue: make(chan *ExecutionBlockTraceRequest, 1000), + executionBadBlockQueue: make(chan *ExecutionBadBlockRequest, 1000), + compressor: compression.NewCompressor(), }, nil } -//nolint:gocyclo // this is a complex function but most of it is event callbacks func (s *agent) Start(ctx context.Context) error { if s.Config.MetricsAddr != "" { observability.StartMetricsServer(ctx, s.Config.MetricsAddr) @@ -146,34 +148,12 @@ func (s *agent) Start(ctx context.Context) error { return nil } - // Fetch the beacon block from the beacon node. - block, err := s.node.Beacon().GetVersionImmuneBlock(ctx, fmt.Sprintf("%#x", event.Block)) - if err != nil { - logCtx.WithError(err).Error("Failed to fetch beacon block") + if err := s.enqueueExecutionBlockTraceForBeaconBlock(ctx, fmt.Sprintf("%#x", event.Block)); err != nil { + logCtx.WithError(err).Error("Failed to queue execution block trace from beacon block event") return err } - if block == nil { - logCtx.Error("Failed to fetch beacon block - the beacon node returned a nil block.") - - return errors.New("failed to fetch beacon block") - } - - // Rip out the execution block number from the block - executionBlockNumber := block.Data.Message.Body.ExecutionPayload.BlockNumber - - executionBlockHash := block.Data.Message.Body.ExecutionPayload.BlockHash - - executionBlockNumberUint, err := strconv.ParseUint(executionBlockNumber, 10, 64) - if err != nil { - logCtx.WithError(err).Error("Failed to parse execution block number when processing beacon block event") - - return err - } - - s.enqueueExecutionBlockTrace(ctx, executionBlockHash, executionBlockNumberUint) - return nil }) @@ -185,6 +165,7 @@ func (s *agent) Start(ctx context.Context) error { go s.processBeaconStateQueue(ctx) go s.processBeaconBlockQueue(ctx) + go s.processExecutionPayloadEnvelopeQueue(ctx) go s.processBeaconBadBlockQueue(ctx) go s.processBeaconBadBlobQueue(ctx) @@ -214,6 +195,7 @@ func (s *agent) Start(ctx context.Context) error { s.enqueueBeaconState(ctx, event.Slot) s.enqueueBeaconBlock(ctx, event.Slot) + s.enqueueExecutionPayloadEnvelope(ctx, event.Slot) return nil }) @@ -247,6 +229,7 @@ func (s *agent) Start(ctx context.Context) error { s.enqueueBeaconState(ctx, slot) s.enqueueBeaconBlock(ctx, slot) + s.enqueueExecutionPayloadEnvelope(ctx, slot) } // Go back and fetch all the new execution block traces @@ -257,32 +240,13 @@ func (s *agent) Start(ctx context.Context) error { logCtx := logrus.WithField("target_slot", slot) - // Fetch a version immune beacon block from the beacon node. - block, err := s.node.Beacon().GetVersionImmuneBlock(ctx, fmt.Sprintf("%d", slot)) - if err != nil { - logCtx.WithError(err).Error("Failed to fetch beacon block") - - return err - } - - // Rip out the execution block number from the block - executionBlockNumber := block.Data.Message.Body.ExecutionPayload.BlockNumber - - executionBlockHash := block.Data.Message.Body.ExecutionPayload.BlockHash + logCtx.Info("Queueing up a fresh execution block trace index after a beacon chain reorg") - executionBlockNumberUint, err := strconv.ParseUint(executionBlockNumber, 10, 64) - if err != nil { - logCtx.WithError(err).Error("Failed to parse execution block number when processing beacon block event") + if err := s.enqueueExecutionBlockTraceForBeaconBlock(ctx, fmt.Sprintf("%d", slot)); err != nil { + logCtx.WithError(err).Error("Failed to queue execution block trace after a beacon chain reorg") return err } - - logCtx.WithFields(logrus.Fields{ - "execution_block_number": executionBlockNumber, - "execution_block_hash": executionBlockHash, - }).Info("Queueing up a fresh execution block trace index after a beacon chain reorg") - - s.enqueueExecutionBlockTrace(ctx, executionBlockHash, executionBlockNumberUint) } return nil @@ -411,6 +375,83 @@ func (s *agent) ServePProf(ctx context.Context) error { return nil } +const ( + executionBlockNumberResolveAttempts = 5 + executionBlockNumberResolveDelay = 3 * time.Second +) + +// enqueueExecutionBlockTraceForBeaconBlock resolves the execution block a +// beacon block commits to and queues a trace fetch for it. Pre-gloas blocks +// embed the execution payload, so the block number is read straight off the +// block. Gloas (ePBS) blocks only commit to the payload's block hash via the +// bid, so the number is resolved from the execution node with a bounded +// retry to give the builder time to reveal the payload. +func (s *agent) enqueueExecutionBlockTraceForBeaconBlock(ctx context.Context, blockID string) error { + block, err := s.node.Beacon().GetVersionImmuneBlock(ctx, blockID) + if err != nil { + return fmt.Errorf("failed to fetch beacon block: %w", err) + } + + if block == nil { + return errors.New("beacon node returned a nil block") + } + + payload := block.Data.Message.Body.ExecutionPayload + if payload.BlockHash != "" { + blockNumber, perr := strconv.ParseUint(payload.BlockNumber, 10, 64) + if perr != nil { + return fmt.Errorf("failed to parse execution block number: %w", perr) + } + + s.enqueueExecutionBlockTrace(ctx, payload.BlockHash, blockNumber) + + return nil + } + + bidBlockHash := block.Data.Message.Body.SignedExecutionPayloadBid.Message.BlockHash + if bidBlockHash == "" { + return errors.New("beacon block contains no execution payload or execution payload bid") + } + + blockNumber, err := s.resolveExecutionBlockNumber(ctx, bidBlockHash) + if err != nil { + return fmt.Errorf("failed to resolve execution block number for bid block hash %s: %w", bidBlockHash, err) + } + + s.enqueueExecutionBlockTrace(ctx, bidBlockHash, blockNumber) + + return nil +} + +// resolveExecutionBlockNumber looks up an execution block number by hash, +// retrying while the execution node reports the block as unknown. +func (s *agent) resolveExecutionBlockNumber(ctx context.Context, blockHash string) (uint64, error) { + var lastErr error + + for attempt := 0; attempt < executionBlockNumberResolveAttempts; attempt++ { + if attempt > 0 { + select { + case <-ctx.Done(): + return 0, ctx.Err() + case <-time.After(executionBlockNumberResolveDelay): + } + } + + number, err := s.node.Execution().GetBlockNumberByHash(ctx, blockHash) + if err == nil { + return number, nil + } + + if !errors.Is(err, execution.ErrBlockNotFound) { + return 0, err + } + + lastErr = err + } + + return 0, lastErr +} + func rootAsString(r phase0.Root) string { return fmt.Sprintf("%#x", r) } diff --git a/pkg/agent/consensus.go b/pkg/agent/consensus.go index d706246..e8567d9 100644 --- a/pkg/agent/consensus.go +++ b/pkg/agent/consensus.go @@ -2,6 +2,7 @@ package agent import ( "context" + goerrors "errors" "fmt" "os" "path/filepath" @@ -9,7 +10,8 @@ import ( "strconv" "time" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/beacon/pkg/beacon/api" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/ethpandaops/tracoor/pkg/agent/ethereum/beacon/services" "github.com/ethpandaops/tracoor/pkg/compression" "github.com/ethpandaops/tracoor/pkg/mime" @@ -266,6 +268,157 @@ func getBadBlocksFilePattern(client string) (*string, error) { return &pattern, nil } +const ( + executionPayloadEnvelopeFetchAttempts = 5 + executionPayloadEnvelopeFetchDelay = 3 * time.Second +) + +// fetchAndIndexExecutionPayloadEnvelope archives the signed execution payload +// envelope for the block at the given slot. Envelopes exist from the gloas +// fork onwards and are revealed by the builder after the block arrives, so +// the fetch retries briefly while the beacon node reports it as not found. A +// payload that is never revealed leaves the slot without an envelope, which +// is not an error. +func (s *agent) fetchAndIndexExecutionPayloadEnvelope(ctx context.Context, slot phase0.Slot) error { + ctx, cancel := context.WithTimeout(ctx, 60*time.Second) + defer cancel() + + spec, err := s.node.Beacon().Node().Spec() + if err != nil { + return err + } + + epoch := uint64(slot) / uint64(spec.SlotsPerEpoch) + + gloas, err := spec.ForkEpochs.GetByName("gloas") + if err != nil || uint64(gloas.Epoch) > epoch { + // The network has no gloas fork scheduled, or the slot pre-dates it. + return nil + } + + blockRoot, err := s.node.Beacon().Node().FetchBlockRoot(ctx, fmt.Sprintf("%d", slot)) + if err != nil { + return errors.Wrap(err, "failed to fetch beacon block root") + } + + blockRootAsString := blockRoot.String() + + location := CreateExecutionPayloadEnvelopeFileName( + s.Config.Name, + string(s.node.Beacon().Metadata().Network.Name), + slot, + blockRootAsString, + ) + + location = fmt.Sprintf("%s.ssz", location) + + // Check if we've somehow already indexed this envelope + rsp, err := s.indexer.ListExecutionPayloadEnvelope(ctx, &indexer.ListExecutionPayloadEnvelopeRequest{ + Node: s.Config.Name, + BlockRoot: blockRootAsString, + Slot: uint64(slot), + Network: string(s.node.Beacon().Metadata().Network.Name), + }) + if err != nil { + s.log. + WithField("block_root", blockRootAsString). + WithField("slot", slot). + WithError(err). + Error("Failed to check if execution payload envelope is already indexed") + } + + if rsp != nil && len(rsp.ExecutionPayloadEnvelopes) > 0 { + s.log. + WithField("block_root", blockRootAsString). + WithField("slot", slot). + Debug("Execution payload envelope already indexed") + + return nil + } + + now := time.Now() + + var envelopeRaw []byte + + for attempt := 0; attempt < executionPayloadEnvelopeFetchAttempts; attempt++ { + if attempt > 0 { + select { + case <-ctx.Done(): + return ctx.Err() + case <-time.After(executionPayloadEnvelopeFetchDelay): + } + } + + envelopeRaw, err = s.node.Beacon().FetchRawExecutionPayloadEnvelope(ctx, blockRootAsString, string(mime.ContentTypeOctet)) + if err == nil { + break + } + + if !goerrors.Is(err, api.ErrNotFound) { + return errors.Wrap(err, "failed to fetch execution payload envelope") + } + } + + if err != nil { + s.log. + WithField("block_root", blockRootAsString). + WithField("slot", slot). + Debug("Execution payload envelope not available, payload was likely never revealed") + + return nil + } + + // Compress it + compressedEnvelope, err := s.compressor.Compress(&envelopeRaw, compression.Gzip) + if err != nil { + return errors.Wrap(err, "failed to compress execution payload envelope") + } + + s.log.WithField("location", location).Debug("Saving execution payload envelope") + + // Upload the envelope to the store + location, err = s.store.SaveExecutionPayloadEnvelope(ctx, &store.SaveParams{ + Data: &compressedEnvelope, + Location: location, + ContentEncoding: compression.Gzip.ContentEncoding, + }) + if err != nil { + return err + } + + // Sleep for 1s to give the store time to update + time.Sleep(1 * time.Second) + + req := &indexer.CreateExecutionPayloadEnvelopeRequest{ + Node: wrapperspb.String(s.Config.Name), + Network: wrapperspb.String(string(s.node.Beacon().Metadata().Network.Name)), + Slot: wrapperspb.UInt64(uint64(slot)), + Epoch: wrapperspb.UInt64(epoch), + BlockRoot: wrapperspb.String(blockRootAsString), + Location: wrapperspb.String(location), + ContentEncoding: wrapperspb.String(compression.Gzip.ContentEncoding), + NodeVersion: wrapperspb.String(s.node.Beacon().Metadata().NodeVersion(ctx)), + BeaconImplementation: wrapperspb.String( + s.node.Beacon().Metadata().Client(ctx), + ), + FetchedAt: timestamppb.New(now), + } + + // Index the envelope + if _, err := s.indexer.CreateExecutionPayloadEnvelope(ctx, req); err != nil { + return err + } + + s.metrics.IncrementItemExported(ExecutionPayloadEnvelopeQueue, s.Config.Name) + + s.log. + WithField("block_root", blockRootAsString). + WithField("slot", slot). + Debug("Indexed execution payload envelope") + + return nil +} + func (s *agent) fetchAndIndexBeaconBadBlocks(ctx context.Context, path string) error { client := s.node.Beacon().Metadata().Client(ctx) diff --git a/pkg/agent/ethereum/beacon/beacon.go b/pkg/agent/ethereum/beacon/beacon.go index 67f2cf4..23bc61d 100644 --- a/pkg/agent/ethereum/beacon/beacon.go +++ b/pkg/agent/ethereum/beacon/beacon.go @@ -81,6 +81,12 @@ func (b *Node) GetVersionImmuneBlock(ctx context.Context, blockID string) (*Vers return block, nil } +// FetchRawExecutionPayloadEnvelope fetches the raw signed execution payload +// envelope for the given block id (gloas onwards). +func (b *Node) FetchRawExecutionPayloadEnvelope(ctx context.Context, blockID, contentType string) ([]byte, error) { + return b.beacon.FetchRawExecutionPayloadEnvelope(ctx, blockID, contentType) +} + func (b *Node) Start(ctx context.Context) error { s := gocron.NewScheduler(time.Local) diff --git a/pkg/agent/ethereum/beacon/block.go b/pkg/agent/ethereum/beacon/block.go index 151c367..b47e3ab 100644 --- a/pkg/agent/ethereum/beacon/block.go +++ b/pkg/agent/ethereum/beacon/block.go @@ -3,6 +3,10 @@ package beacon // VersionImmuneBlock is a block that is immune to version changes. // If this structure changes, good luck with your upgrade. // +// Pre-gloas blocks embed the execution payload in the body. Gloas (ePBS) +// blocks instead carry a signed execution payload bid, which commits to the +// payload's block hash but not its block number. +// //nolint:tagliatelle // requires snake. type VersionImmuneBlock struct { Data struct { @@ -12,6 +16,11 @@ type VersionImmuneBlock struct { BlockNumber string `json:"block_number"` BlockHash string `json:"block_hash"` } `json:"execution_payload"` + SignedExecutionPayloadBid struct { + Message struct { + BlockHash string `json:"block_hash"` + } `json:"message"` + } `json:"signed_execution_payload_bid"` } `json:"body"` } `json:"message"` } `json:"data"` diff --git a/pkg/agent/ethereum/beacon/services/metadata.go b/pkg/agent/ethereum/beacon/services/metadata.go index 45027e0..e7308bf 100644 --- a/pkg/agent/ethereum/beacon/services/metadata.go +++ b/pkg/agent/ethereum/beacon/services/metadata.go @@ -7,11 +7,11 @@ import ( "sync" "time" - v1 "github.com/attestantio/go-eth2-client/api/v1" "github.com/cenkalti/backoff/v4" "github.com/ethpandaops/beacon/pkg/beacon" "github.com/ethpandaops/beacon/pkg/beacon/state" "github.com/ethpandaops/ethwallclock" + v1 "github.com/ethpandaops/go-eth2-client/api/v1" "github.com/ethpandaops/tracoor/pkg/networks" "github.com/go-co-op/gocron" "github.com/sirupsen/logrus" diff --git a/pkg/agent/ethereum/config.go b/pkg/agent/ethereum/config.go index 2aa99a4..20cba30 100644 --- a/pkg/agent/ethereum/config.go +++ b/pkg/agent/ethereum/config.go @@ -3,7 +3,7 @@ package ethereum import ( "fmt" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/ethpandaops/tracoor/pkg/agent/ethereum/beacon" "github.com/ethpandaops/tracoor/pkg/agent/ethereum/execution" ) @@ -47,12 +47,13 @@ func (c *Config) Validate() error { // Features contains feature flags for the agent. type Features struct { - FetchBeaconState *bool `yaml:"fetchBeaconState" default:"true"` - FetchBeaconBlock *bool `yaml:"fetchBeaconBlock" default:"true"` - FetchBeaconBadBlock *bool `yaml:"fetchBeaconBadBlock" default:"true"` - FetchBeaconBadBlob *bool `yaml:"fetchBeaconBadBlob" default:"true"` - FetchExecutionBlockTrace *bool `yaml:"fetchExecutionBlockTrace" default:"true"` - FetchExecutionBadBlock *bool `yaml:"fetchExecutionBadBlock" default:"true"` + FetchBeaconState *bool `yaml:"fetchBeaconState" default:"true"` + FetchBeaconBlock *bool `yaml:"fetchBeaconBlock" default:"true"` + FetchExecutionPayloadEnvelope *bool `yaml:"fetchExecutionPayloadEnvelope" default:"true"` + FetchBeaconBadBlock *bool `yaml:"fetchBeaconBadBlock" default:"true"` + FetchBeaconBadBlob *bool `yaml:"fetchBeaconBadBlob" default:"true"` + FetchExecutionBlockTrace *bool `yaml:"fetchExecutionBlockTrace" default:"true"` + FetchExecutionBadBlock *bool `yaml:"fetchExecutionBadBlock" default:"true"` } func (f Features) Validate() error { @@ -75,6 +76,14 @@ func (f Features) GetFetchBeaconBlock() bool { return *f.FetchBeaconBlock } +func (f Features) GetFetchExecutionPayloadEnvelope() bool { + if f.FetchExecutionPayloadEnvelope == nil { + return true // default value + } + + return *f.FetchExecutionPayloadEnvelope +} + func (f Features) GetFetchBeaconBadBlock() bool { if f.FetchBeaconBadBlock == nil { return true // default value @@ -118,6 +127,10 @@ func (f Features) EnabledFlags() []string { enabled = append(enabled, "FetchBeaconBlock") } + if f.GetFetchExecutionPayloadEnvelope() { + enabled = append(enabled, "FetchExecutionPayloadEnvelope") + } + if f.GetFetchBeaconBadBlock() { enabled = append(enabled, "FetchBeaconBadBlock") } diff --git a/pkg/agent/ethereum/execution/execution.go b/pkg/agent/ethereum/execution/execution.go index 3086b6f..3d020bf 100644 --- a/pkg/agent/ethereum/execution/execution.go +++ b/pkg/agent/ethereum/execution/execution.go @@ -5,6 +5,8 @@ import ( "encoding/json" "errors" "fmt" + "strconv" + "strings" "sync" "github.com/0xsequence/ethkit/ethrpc" @@ -13,6 +15,10 @@ import ( "github.com/sirupsen/logrus" ) +// ErrBlockNotFound is returned when the execution node does not know about +// the requested block, e.g. a gloas payload that has not been revealed yet. +var ErrBlockNotFound = errors.New("execution block not found") + type Node struct { config *Config log logrus.FieldLogger @@ -150,6 +156,44 @@ func (n *Node) GetRawDebugBlockTrace(ctx context.Context, hash, client string) ( return &s, nil } +// GetBlockNumberByHash resolves an execution block number from its hash. +// Returns ErrBlockNotFound if the node does not (yet) have the block. +func (n *Node) GetBlockNumberByHash(ctx context.Context, hash string) (uint64, error) { + data := jsonrpc.Message{} + + rsp, err := n.rpc.Do(ctx, ethrpc.NewCall( + "eth_getBlockByHash", + hash, + false, + )) + if err != nil { + return 0, err + } + + if err = json.Unmarshal(rsp, &data); err != nil { + return 0, err + } + + if len(data.Result) == 0 || string(data.Result) == "null" { + return 0, ErrBlockNotFound + } + + block := struct { + Number string `json:"number"` + }{} + + if err = json.Unmarshal([]byte(data.Result), &block); err != nil { + return 0, err + } + + number, err := strconv.ParseUint(strings.TrimPrefix(block.Number, "0x"), 16, 64) + if err != nil { + return 0, fmt.Errorf("failed to parse block number %q: %w", block.Number, err) + } + + return number, nil +} + func (n *Node) GetBadBlocks(ctx context.Context) (*BadBlocksResponse, error) { data := jsonrpc.Message{} diff --git a/pkg/agent/ethereum/node.go b/pkg/agent/ethereum/node.go index 817e321..86f3797 100644 --- a/pkg/agent/ethereum/node.go +++ b/pkg/agent/ethereum/node.go @@ -4,7 +4,7 @@ import ( "context" "errors" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/ethpandaops/tracoor/pkg/agent/ethereum/beacon" "github.com/ethpandaops/tracoor/pkg/agent/ethereum/execution" "github.com/sirupsen/logrus" diff --git a/pkg/agent/indexer/client.go b/pkg/agent/indexer/client.go index 958c9b1..5c7853d 100644 --- a/pkg/agent/indexer/client.go +++ b/pkg/agent/indexer/client.go @@ -100,6 +100,20 @@ func (c *Client) ListBeaconBlock(ctx context.Context, req *indexer.ListBeaconBlo return c.pb.ListBeaconBlock(ctx, req, grpc.UseCompressor(gzip.Name)) } +func (c *Client) CreateExecutionPayloadEnvelope(ctx context.Context, req *indexer.CreateExecutionPayloadEnvelopeRequest) (*indexer.CreateExecutionPayloadEnvelopeResponse, error) { + md := metadata.New(c.config.Headers) + ctx = metadata.NewOutgoingContext(ctx, md) + + return c.pb.CreateExecutionPayloadEnvelope(ctx, req, grpc.UseCompressor(gzip.Name)) +} + +func (c *Client) ListExecutionPayloadEnvelope(ctx context.Context, req *indexer.ListExecutionPayloadEnvelopeRequest) (*indexer.ListExecutionPayloadEnvelopeResponse, error) { + md := metadata.New(c.config.Headers) + ctx = metadata.NewOutgoingContext(ctx, md) + + return c.pb.ListExecutionPayloadEnvelope(ctx, req, grpc.UseCompressor(gzip.Name)) +} + func (c *Client) CreateBeaconBadBlock(ctx context.Context, req *indexer.CreateBeaconBadBlockRequest) (*indexer.CreateBeaconBadBlockResponse, error) { md := metadata.New(c.config.Headers) ctx = metadata.NewOutgoingContext(ctx, md) diff --git a/pkg/agent/metrics.go b/pkg/agent/metrics.go index 541e77d..58aa72a 100644 --- a/pkg/agent/metrics.go +++ b/pkg/agent/metrics.go @@ -19,12 +19,13 @@ type Metrics struct { type Queue string var ( - BeaconStateQueue Queue = "beacon_state" - BeaconBlockQueue Queue = "beacon_block" - BeaconBadBlockQueue Queue = "beacon_bad_block" - BeaconBadBlobQueue Queue = "beacon_bad_blob" - ExecutionBlockTraceQueue Queue = "execution_block_trace" - ExecutionBadBlockQueue Queue = "execution_bad_block" + BeaconStateQueue Queue = "beacon_state" + BeaconBlockQueue Queue = "beacon_block" + ExecutionPayloadEnvelopeQueue Queue = "execution_payload_envelope" + BeaconBadBlockQueue Queue = "beacon_bad_block" + BeaconBadBlobQueue Queue = "beacon_bad_blob" + ExecutionBlockTraceQueue Queue = "execution_block_trace" + ExecutionBadBlockQueue Queue = "execution_bad_block" ) var ( diff --git a/pkg/agent/path.go b/pkg/agent/path.go index dda0f3a..f08fc6f 100644 --- a/pkg/agent/path.go +++ b/pkg/agent/path.go @@ -4,7 +4,7 @@ import ( "fmt" "path" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" ) func CreateBeaconStateFileName( @@ -39,6 +39,22 @@ func CreateBeaconBlockFileName( ) } +func CreateExecutionPayloadEnvelopeFileName( + node string, + network string, + slot phase0.Slot, + blockRoot string, +) string { + return path.Join( + "execution_payload_envelopes", + network, + "slots", + fmt.Sprintf("%d", slot), + node, + blockRoot, + ) +} + func CreateBeaconBadBlockFileName( node string, network string, diff --git a/pkg/agent/queue.go b/pkg/agent/queue.go index 48cb6c6..4b3d237 100644 --- a/pkg/agent/queue.go +++ b/pkg/agent/queue.go @@ -4,7 +4,7 @@ import ( "context" "time" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" ) type BeaconStateRequest struct { @@ -15,6 +15,10 @@ type BeaconBlockRequest struct { Slot phase0.Slot } +type ExecutionPayloadEnvelopeRequest struct { + Slot phase0.Slot +} + type BeaconBadBlockRequest struct { Path string } @@ -51,6 +55,16 @@ func (s *agent) enqueueBeaconBlock(ctx context.Context, slot phase0.Slot) { } } +func (s *agent) enqueueExecutionPayloadEnvelope(ctx context.Context, slot phase0.Slot) { + if !s.Config.Ethereum.Features.GetFetchExecutionPayloadEnvelope() { + return + } + + s.executionPayloadEnvelopeQueue <- &ExecutionPayloadEnvelopeRequest{ + Slot: slot, + } +} + func (s *agent) enqueueBeaconBadBlock(ctx context.Context, path string) { if !s.Config.Ethereum.Features.GetFetchBeaconBadBlock() { return @@ -157,6 +171,33 @@ func (s *agent) processBeaconBlockQueue(ctx context.Context) { } } +func (s *agent) processExecutionPayloadEnvelopeQueue(ctx context.Context) { + if !s.Config.Ethereum.Features.GetFetchExecutionPayloadEnvelope() { + return + } + + for envelopeRequest := range s.executionPayloadEnvelopeQueue { + s.metrics.SetQueueSize(ExecutionPayloadEnvelopeQueue, len(s.executionPayloadEnvelopeQueue), s.Config.Name) + + start := time.Now() + + if err := s.fetchAndIndexExecutionPayloadEnvelope(ctx, envelopeRequest.Slot); err != nil { + s.log. + WithError(err). + WithField("slot", envelopeRequest.Slot). + Error("Failed to fetch and index execution payload envelope") + + continue + } + + s.metrics.ObserveQueueItemProcessingTime( + ExecutionPayloadEnvelopeQueue, + time.Since(start), + s.Config.Name, + ) + } +} + func (s *agent) processBeaconBadBlockQueue(ctx context.Context) { if !s.Config.Ethereum.Features.GetFetchBeaconBadBlock() { return diff --git a/pkg/api/api.pb.gw.go b/pkg/api/api.pb.gw.go index 65bf160..f9f52f7 100644 --- a/pkg/api/api.pb.gw.go +++ b/pkg/api/api.pb.gw.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: api.proto +// source: pkg/proto/tracoor/api/api.proto /* Package api is a reverse proxy. @@ -202,15 +202,18 @@ func local_request_API_ListBeaconBlock_0(ctx context.Context, marshaler runtime. } +var ( + filter_API_CountBeaconBlock_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + func request_API_CountBeaconBlock_0(ctx context.Context, marshaler runtime.Marshaler, client extApi.APIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extApi.CountBeaconBlockRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_API_CountBeaconBlock_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -223,11 +226,10 @@ func local_request_API_CountBeaconBlock_0(ctx context.Context, marshaler runtime var protoReq extApi.CountBeaconBlockRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_API_CountBeaconBlock_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -270,6 +272,108 @@ func local_request_API_ListUniqueBeaconBlockValues_0(ctx context.Context, marsha } +func request_API_ListExecutionPayloadEnvelope_0(ctx context.Context, marshaler runtime.Marshaler, client extApi.APIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extApi.ListExecutionPayloadEnvelopeRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListExecutionPayloadEnvelope(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_API_ListExecutionPayloadEnvelope_0(ctx context.Context, marshaler runtime.Marshaler, server extApi.APIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extApi.ListExecutionPayloadEnvelopeRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListExecutionPayloadEnvelope(ctx, &protoReq) + return msg, metadata, err + +} + +func request_API_CountExecutionPayloadEnvelope_0(ctx context.Context, marshaler runtime.Marshaler, client extApi.APIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extApi.CountExecutionPayloadEnvelopeRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.CountExecutionPayloadEnvelope(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_API_CountExecutionPayloadEnvelope_0(ctx context.Context, marshaler runtime.Marshaler, server extApi.APIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extApi.CountExecutionPayloadEnvelopeRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.CountExecutionPayloadEnvelope(ctx, &protoReq) + return msg, metadata, err + +} + +func request_API_ListUniqueExecutionPayloadEnvelopeValues_0(ctx context.Context, marshaler runtime.Marshaler, client extApi.APIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extApi.ListUniqueExecutionPayloadEnvelopeValuesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListUniqueExecutionPayloadEnvelopeValues(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_API_ListUniqueExecutionPayloadEnvelopeValues_0(ctx context.Context, marshaler runtime.Marshaler, server extApi.APIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extApi.ListUniqueExecutionPayloadEnvelopeValuesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListUniqueExecutionPayloadEnvelopeValues(ctx, &protoReq) + return msg, metadata, err + +} + func request_API_ListBeaconBadBlock_0(ctx context.Context, marshaler runtime.Marshaler, client extApi.APIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extApi.ListBeaconBadBlockRequest var metadata runtime.ServerMetadata @@ -859,6 +963,81 @@ func RegisterAPIHandlerServer(ctx context.Context, mux *runtime.ServeMux, server }) + mux.Handle("POST", pattern_API_ListExecutionPayloadEnvelope_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/api.API/ListExecutionPayloadEnvelope", runtime.WithHTTPPathPattern("/v1/api/list-execution-payload-envelope")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_API_ListExecutionPayloadEnvelope_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_API_ListExecutionPayloadEnvelope_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_API_CountExecutionPayloadEnvelope_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/api.API/CountExecutionPayloadEnvelope", runtime.WithHTTPPathPattern("/v1/api/count-execution-payload-envelope")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_API_CountExecutionPayloadEnvelope_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_API_CountExecutionPayloadEnvelope_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_API_ListUniqueExecutionPayloadEnvelopeValues_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/api.API/ListUniqueExecutionPayloadEnvelopeValues", runtime.WithHTTPPathPattern("/v1/api/list-unique-execution-payload-envelope-values")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_API_ListUniqueExecutionPayloadEnvelopeValues_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_API_ListUniqueExecutionPayloadEnvelopeValues_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_API_ListBeaconBadBlock_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1354,6 +1533,72 @@ func RegisterAPIHandlerClient(ctx context.Context, mux *runtime.ServeMux, client }) + mux.Handle("POST", pattern_API_ListExecutionPayloadEnvelope_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/api.API/ListExecutionPayloadEnvelope", runtime.WithHTTPPathPattern("/v1/api/list-execution-payload-envelope")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_API_ListExecutionPayloadEnvelope_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_API_ListExecutionPayloadEnvelope_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_API_CountExecutionPayloadEnvelope_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/api.API/CountExecutionPayloadEnvelope", runtime.WithHTTPPathPattern("/v1/api/count-execution-payload-envelope")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_API_CountExecutionPayloadEnvelope_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_API_CountExecutionPayloadEnvelope_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_API_ListUniqueExecutionPayloadEnvelopeValues_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/api.API/ListUniqueExecutionPayloadEnvelopeValues", runtime.WithHTTPPathPattern("/v1/api/list-unique-execution-payload-envelope-values")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_API_ListUniqueExecutionPayloadEnvelopeValues_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_API_ListUniqueExecutionPayloadEnvelopeValues_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_API_ListBeaconBadBlock_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1636,6 +1881,12 @@ var ( pattern_API_ListUniqueBeaconBlockValues_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "api", "list-unique-beacon-block-values"}, "")) + pattern_API_ListExecutionPayloadEnvelope_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "api", "list-execution-payload-envelope"}, "")) + + pattern_API_CountExecutionPayloadEnvelope_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "api", "count-execution-payload-envelope"}, "")) + + pattern_API_ListUniqueExecutionPayloadEnvelopeValues_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "api", "list-unique-execution-payload-envelope-values"}, "")) + pattern_API_ListBeaconBadBlock_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "api", "list-beacon-bad-block"}, "")) pattern_API_CountBeaconBadBlock_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "api", "count-beacon-bad-block"}, "")) @@ -1676,6 +1927,12 @@ var ( forward_API_ListUniqueBeaconBlockValues_0 = runtime.ForwardResponseMessage + forward_API_ListExecutionPayloadEnvelope_0 = runtime.ForwardResponseMessage + + forward_API_CountExecutionPayloadEnvelope_0 = runtime.ForwardResponseMessage + + forward_API_ListUniqueExecutionPayloadEnvelopeValues_0 = runtime.ForwardResponseMessage + forward_API_ListBeaconBadBlock_0 = runtime.ForwardResponseMessage forward_API_CountBeaconBadBlock_0 = runtime.ForwardResponseMessage diff --git a/pkg/api/openapiv2/api.swagger.json b/pkg/api/openapiv2/api.swagger.json index df8ed46..29997c6 100644 --- a/pkg/api/openapiv2/api.swagger.json +++ b/pkg/api/openapiv2/api.swagger.json @@ -1,7 +1,7 @@ { "swagger": "2.0", "info": { - "title": "api.proto", + "title": "pkg/proto/tracoor/api/api.proto", "version": "version not set" }, "tags": [ @@ -223,6 +223,15 @@ } } }, + "apiCountExecutionPayloadEnvelopeResponse": { + "type": "object", + "properties": { + "count": { + "type": "string", + "format": "uint64" + } + } + }, "apiEthereumConfig": { "type": "object", "properties": { @@ -313,6 +322,41 @@ } } }, + "apiExecutionPayloadEnvelope": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "node": { + "type": "string" + }, + "fetched_at": { + "type": "string", + "format": "date-time" + }, + "slot": { + "type": "string", + "format": "uint64" + }, + "epoch": { + "type": "string", + "format": "uint64" + }, + "block_root": { + "type": "string" + }, + "node_version": { + "type": "string" + }, + "network": { + "type": "string" + }, + "beacon_implementation": { + "type": "string" + } + } + }, "apiGetConfigResponse": { "type": "object", "properties": { @@ -404,6 +448,18 @@ } } }, + "apiListExecutionPayloadEnvelopeResponse": { + "type": "object", + "properties": { + "execution_payload_envelopes": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiExecutionPayloadEnvelope" + } + } + } + }, "apiListUniqueBeaconBadBlobValuesRequestField": { "type": "string", "enum": [ @@ -775,6 +831,68 @@ } } }, + "apiListUniqueExecutionPayloadEnvelopeValuesRequestField": { + "type": "string", + "enum": [ + "node", + "slot", + "epoch", + "block_root", + "node_version", + "network", + "beacon_implementation" + ], + "default": "node" + }, + "apiListUniqueExecutionPayloadEnvelopeValuesResponse": { + "type": "object", + "properties": { + "node": { + "type": "array", + "items": { + "type": "string" + } + }, + "slot": { + "type": "array", + "items": { + "type": "string", + "format": "uint64" + } + }, + "epoch": { + "type": "array", + "items": { + "type": "string", + "format": "uint64" + } + }, + "block_root": { + "type": "array", + "items": { + "type": "string" + } + }, + "node_version": { + "type": "array", + "items": { + "type": "string" + } + }, + "network": { + "type": "array", + "items": { + "type": "string" + } + }, + "beacon_implementation": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, "apiPaginationCursor": { "type": "object", "properties": { diff --git a/pkg/proto/tracoor/api/api.pb.go b/pkg/proto/tracoor/api/api.pb.go index 9b700bf..f1d2d00 100644 --- a/pkg/proto/tracoor/api/api.pb.go +++ b/pkg/proto/tracoor/api/api.pb.go @@ -1,8 +1,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 +// protoc-gen-go v1.36.6 // protoc (unknown) -// source: api/api.proto +// source: pkg/proto/tracoor/api/api.proto package api @@ -13,6 +13,7 @@ import ( wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -67,11 +68,11 @@ func (x ListUniqueBeaconStateValuesRequest_Field) String() string { } func (ListUniqueBeaconStateValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[0].Descriptor() + return file_pkg_proto_tracoor_api_api_proto_enumTypes[0].Descriptor() } func (ListUniqueBeaconStateValuesRequest_Field) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[0] + return &file_pkg_proto_tracoor_api_api_proto_enumTypes[0] } func (x ListUniqueBeaconStateValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -80,7 +81,7 @@ func (x ListUniqueBeaconStateValuesRequest_Field) Number() protoreflect.EnumNumb // Deprecated: Use ListUniqueBeaconStateValuesRequest_Field.Descriptor instead. func (ListUniqueBeaconStateValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{19, 0} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{20, 0} } type ListUniqueBeaconBlockValuesRequest_Field int32 @@ -128,11 +129,11 @@ func (x ListUniqueBeaconBlockValuesRequest_Field) String() string { } func (ListUniqueBeaconBlockValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[1].Descriptor() + return file_pkg_proto_tracoor_api_api_proto_enumTypes[1].Descriptor() } func (ListUniqueBeaconBlockValuesRequest_Field) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[1] + return &file_pkg_proto_tracoor_api_api_proto_enumTypes[1] } func (x ListUniqueBeaconBlockValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -141,7 +142,68 @@ func (x ListUniqueBeaconBlockValuesRequest_Field) Number() protoreflect.EnumNumb // Deprecated: Use ListUniqueBeaconBlockValuesRequest_Field.Descriptor instead. func (ListUniqueBeaconBlockValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{25, 0} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{26, 0} +} + +type ListUniqueExecutionPayloadEnvelopeValuesRequest_Field int32 + +const ( + ListUniqueExecutionPayloadEnvelopeValuesRequest_node ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 0 + ListUniqueExecutionPayloadEnvelopeValuesRequest_slot ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 1 + ListUniqueExecutionPayloadEnvelopeValuesRequest_epoch ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 2 + ListUniqueExecutionPayloadEnvelopeValuesRequest_block_root ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 3 + ListUniqueExecutionPayloadEnvelopeValuesRequest_node_version ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 4 + ListUniqueExecutionPayloadEnvelopeValuesRequest_network ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 5 + ListUniqueExecutionPayloadEnvelopeValuesRequest_beacon_implementation ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 6 +) + +// Enum value maps for ListUniqueExecutionPayloadEnvelopeValuesRequest_Field. +var ( + ListUniqueExecutionPayloadEnvelopeValuesRequest_Field_name = map[int32]string{ + 0: "node", + 1: "slot", + 2: "epoch", + 3: "block_root", + 4: "node_version", + 5: "network", + 6: "beacon_implementation", + } + ListUniqueExecutionPayloadEnvelopeValuesRequest_Field_value = map[string]int32{ + "node": 0, + "slot": 1, + "epoch": 2, + "block_root": 3, + "node_version": 4, + "network": 5, + "beacon_implementation": 6, + } +) + +func (x ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) Enum() *ListUniqueExecutionPayloadEnvelopeValuesRequest_Field { + p := new(ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) + *p = x + return p +} + +func (x ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { + return file_pkg_proto_tracoor_api_api_proto_enumTypes[2].Descriptor() +} + +func (ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) Type() protoreflect.EnumType { + return &file_pkg_proto_tracoor_api_api_proto_enumTypes[2] +} + +func (x ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ListUniqueExecutionPayloadEnvelopeValuesRequest_Field.Descriptor instead. +func (ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) EnumDescriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{32, 0} } type ListUniqueBeaconBadBlockValuesRequest_Field int32 @@ -189,11 +251,11 @@ func (x ListUniqueBeaconBadBlockValuesRequest_Field) String() string { } func (ListUniqueBeaconBadBlockValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[2].Descriptor() + return file_pkg_proto_tracoor_api_api_proto_enumTypes[3].Descriptor() } func (ListUniqueBeaconBadBlockValuesRequest_Field) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[2] + return &file_pkg_proto_tracoor_api_api_proto_enumTypes[3] } func (x ListUniqueBeaconBadBlockValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -202,7 +264,7 @@ func (x ListUniqueBeaconBadBlockValuesRequest_Field) Number() protoreflect.EnumN // Deprecated: Use ListUniqueBeaconBadBlockValuesRequest_Field.Descriptor instead. func (ListUniqueBeaconBadBlockValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{31, 0} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{38, 0} } type ListUniqueBeaconBadBlobValuesRequest_Field int32 @@ -253,11 +315,11 @@ func (x ListUniqueBeaconBadBlobValuesRequest_Field) String() string { } func (ListUniqueBeaconBadBlobValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[3].Descriptor() + return file_pkg_proto_tracoor_api_api_proto_enumTypes[4].Descriptor() } func (ListUniqueBeaconBadBlobValuesRequest_Field) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[3] + return &file_pkg_proto_tracoor_api_api_proto_enumTypes[4] } func (x ListUniqueBeaconBadBlobValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -266,7 +328,7 @@ func (x ListUniqueBeaconBadBlobValuesRequest_Field) Number() protoreflect.EnumNu // Deprecated: Use ListUniqueBeaconBadBlobValuesRequest_Field.Descriptor instead. func (ListUniqueBeaconBadBlobValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{37, 0} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{44, 0} } type ListUniqueExecutionBlockTraceValuesRequest_Field int32 @@ -311,11 +373,11 @@ func (x ListUniqueExecutionBlockTraceValuesRequest_Field) String() string { } func (ListUniqueExecutionBlockTraceValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[4].Descriptor() + return file_pkg_proto_tracoor_api_api_proto_enumTypes[5].Descriptor() } func (ListUniqueExecutionBlockTraceValuesRequest_Field) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[4] + return &file_pkg_proto_tracoor_api_api_proto_enumTypes[5] } func (x ListUniqueExecutionBlockTraceValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -324,7 +386,7 @@ func (x ListUniqueExecutionBlockTraceValuesRequest_Field) Number() protoreflect. // Deprecated: Use ListUniqueExecutionBlockTraceValuesRequest_Field.Descriptor instead. func (ListUniqueExecutionBlockTraceValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{43, 0} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{50, 0} } type ListUniqueExecutionBadBlockValuesRequest_Field int32 @@ -372,11 +434,11 @@ func (x ListUniqueExecutionBadBlockValuesRequest_Field) String() string { } func (ListUniqueExecutionBadBlockValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[5].Descriptor() + return file_pkg_proto_tracoor_api_api_proto_enumTypes[6].Descriptor() } func (ListUniqueExecutionBadBlockValuesRequest_Field) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[5] + return &file_pkg_proto_tracoor_api_api_proto_enumTypes[6] } func (x ListUniqueExecutionBadBlockValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -385,14 +447,11 @@ func (x ListUniqueExecutionBadBlockValuesRequest_Field) Number() protoreflect.En // Deprecated: Use ListUniqueExecutionBadBlockValuesRequest_Field.Descriptor instead. func (ListUniqueExecutionBadBlockValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{49, 0} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{56, 0} } type BeaconState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,proto3" json:"fetched_at,omitempty"` @@ -402,15 +461,15 @@ type BeaconState struct { NodeVersion *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=node_version,proto3" json:"node_version,omitempty"` Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeaconState) Reset() { *x = BeaconState{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BeaconState) String() string { @@ -420,8 +479,8 @@ func (x *BeaconState) String() string { func (*BeaconState) ProtoMessage() {} func (x *BeaconState) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[0] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -433,7 +492,7 @@ func (x *BeaconState) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconState.ProtoReflect.Descriptor instead. func (*BeaconState) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{0} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{0} } func (x *BeaconState) GetId() *wrapperspb.StringValue { @@ -500,10 +559,7 @@ func (x *BeaconState) GetBeaconImplementation() *wrapperspb.StringValue { } type BeaconBlock struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,proto3" json:"fetched_at,omitempty"` @@ -513,15 +569,15 @@ type BeaconBlock struct { NodeVersion *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=node_version,proto3" json:"node_version,omitempty"` Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeaconBlock) Reset() { *x = BeaconBlock{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BeaconBlock) String() string { @@ -531,8 +587,8 @@ func (x *BeaconBlock) String() string { func (*BeaconBlock) ProtoMessage() {} func (x *BeaconBlock) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[1] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -544,7 +600,7 @@ func (x *BeaconBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlock.ProtoReflect.Descriptor instead. func (*BeaconBlock) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{1} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{1} } func (x *BeaconBlock) GetId() *wrapperspb.StringValue { @@ -610,11 +666,116 @@ func (x *BeaconBlock) GetBeaconImplementation() *wrapperspb.StringValue { return nil } -type BeaconBadBlock struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type ExecutionPayloadEnvelope struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` + FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,proto3" json:"fetched_at,omitempty"` + Slot *wrapperspb.UInt64Value `protobuf:"bytes,4,opt,name=slot,proto3" json:"slot,omitempty"` + Epoch *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=block_root,proto3" json:"block_root,omitempty"` + NodeVersion *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=node_version,proto3" json:"node_version,omitempty"` + Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` + BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecutionPayloadEnvelope) Reset() { + *x = ExecutionPayloadEnvelope{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecutionPayloadEnvelope) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionPayloadEnvelope) ProtoMessage() {} + +func (x *ExecutionPayloadEnvelope) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_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 ExecutionPayloadEnvelope.ProtoReflect.Descriptor instead. +func (*ExecutionPayloadEnvelope) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{2} +} + +func (x *ExecutionPayloadEnvelope) GetId() *wrapperspb.StringValue { + if x != nil { + return x.Id + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetNode() *wrapperspb.StringValue { + if x != nil { + return x.Node + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetFetchedAt() *timestamppb.Timestamp { + if x != nil { + return x.FetchedAt + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetSlot() *wrapperspb.UInt64Value { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetEpoch() *wrapperspb.UInt64Value { + if x != nil { + return x.Epoch + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetBlockRoot() *wrapperspb.StringValue { + if x != nil { + return x.BlockRoot + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetNodeVersion() *wrapperspb.StringValue { + if x != nil { + return x.NodeVersion + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetNetwork() *wrapperspb.StringValue { + if x != nil { + return x.Network + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetBeaconImplementation() *wrapperspb.StringValue { + if x != nil { + return x.BeaconImplementation + } + return nil +} +type BeaconBadBlock struct { + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,proto3" json:"fetched_at,omitempty"` @@ -624,15 +785,15 @@ type BeaconBadBlock struct { NodeVersion *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=node_version,proto3" json:"node_version,omitempty"` Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeaconBadBlock) Reset() { *x = BeaconBadBlock{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BeaconBadBlock) String() string { @@ -642,8 +803,8 @@ func (x *BeaconBadBlock) String() string { func (*BeaconBadBlock) ProtoMessage() {} func (x *BeaconBadBlock) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[3] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -655,7 +816,7 @@ func (x *BeaconBadBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBadBlock.ProtoReflect.Descriptor instead. func (*BeaconBadBlock) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{2} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{3} } func (x *BeaconBadBlock) GetId() *wrapperspb.StringValue { @@ -722,10 +883,7 @@ func (x *BeaconBadBlock) GetBeaconImplementation() *wrapperspb.StringValue { } type BeaconBadBlob struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,proto3" json:"fetched_at,omitempty"` @@ -736,15 +894,15 @@ type BeaconBadBlob struct { Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` Index *wrapperspb.UInt64Value `protobuf:"bytes,10,opt,name=index,proto3" json:"index,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeaconBadBlob) Reset() { *x = BeaconBadBlob{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BeaconBadBlob) String() string { @@ -754,8 +912,8 @@ func (x *BeaconBadBlob) String() string { func (*BeaconBadBlob) ProtoMessage() {} func (x *BeaconBadBlob) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[4] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -767,7 +925,7 @@ func (x *BeaconBadBlob) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBadBlob.ProtoReflect.Descriptor instead. func (*BeaconBadBlob) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{3} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{4} } func (x *BeaconBadBlob) GetId() *wrapperspb.StringValue { @@ -841,10 +999,7 @@ func (x *BeaconBadBlob) GetIndex() *wrapperspb.UInt64Value { } type ExecutionBlockTrace struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,proto3" json:"fetched_at,omitempty"` @@ -853,15 +1008,15 @@ type ExecutionBlockTrace struct { Network *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=network,proto3" json:"network,omitempty"` ExecutionImplementation *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=execution_implementation,proto3" json:"execution_implementation,omitempty"` NodeVersion *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=node_version,proto3" json:"node_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecutionBlockTrace) Reset() { *x = ExecutionBlockTrace{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExecutionBlockTrace) String() string { @@ -871,8 +1026,8 @@ func (x *ExecutionBlockTrace) String() string { func (*ExecutionBlockTrace) ProtoMessage() {} func (x *ExecutionBlockTrace) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[5] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -884,7 +1039,7 @@ func (x *ExecutionBlockTrace) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutionBlockTrace.ProtoReflect.Descriptor instead. func (*ExecutionBlockTrace) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{4} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{5} } func (x *ExecutionBlockTrace) GetId() *wrapperspb.StringValue { @@ -944,10 +1099,7 @@ func (x *ExecutionBlockTrace) GetNodeVersion() *wrapperspb.StringValue { } type ExecutionBadBlock struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,proto3" json:"fetched_at,omitempty"` @@ -957,15 +1109,15 @@ type ExecutionBadBlock struct { ExecutionImplementation *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=execution_implementation,proto3" json:"execution_implementation,omitempty"` NodeVersion *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=node_version,proto3" json:"node_version,omitempty"` BlockExtraData *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=block_extra_data,proto3" json:"block_extra_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecutionBadBlock) Reset() { *x = ExecutionBadBlock{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExecutionBadBlock) String() string { @@ -975,8 +1127,8 @@ func (x *ExecutionBadBlock) String() string { func (*ExecutionBadBlock) ProtoMessage() {} func (x *ExecutionBadBlock) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[6] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -988,7 +1140,7 @@ func (x *ExecutionBadBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutionBadBlock.ProtoReflect.Descriptor instead. func (*ExecutionBadBlock) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{5} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{6} } func (x *ExecutionBadBlock) GetId() *wrapperspb.StringValue { @@ -1055,22 +1207,19 @@ func (x *ExecutionBadBlock) GetBlockExtraData() *wrapperspb.StringValue { } type PaginationCursor struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` + OrderBy string `protobuf:"bytes,3,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` unknownFields protoimpl.UnknownFields - - Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` - OrderBy string `protobuf:"bytes,3,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PaginationCursor) Reset() { *x = PaginationCursor{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PaginationCursor) String() string { @@ -1080,8 +1229,8 @@ func (x *PaginationCursor) String() string { func (*PaginationCursor) ProtoMessage() {} func (x *PaginationCursor) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[7] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1093,7 +1242,7 @@ func (x *PaginationCursor) ProtoReflect() protoreflect.Message { // Deprecated: Use PaginationCursor.ProtoReflect.Descriptor instead. func (*PaginationCursor) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{6} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{7} } func (x *PaginationCursor) GetLimit() int32 { @@ -1118,18 +1267,16 @@ func (x *PaginationCursor) GetOrderBy() string { } type GetConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetConfigRequest) Reset() { *x = GetConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetConfigRequest) String() string { @@ -1139,8 +1286,8 @@ func (x *GetConfigRequest) String() string { func (*GetConfigRequest) ProtoMessage() {} func (x *GetConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[8] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1152,24 +1299,21 @@ func (x *GetConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetConfigRequest.ProtoReflect.Descriptor instead. func (*GetConfigRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{7} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{8} } type GetConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` unknownFields protoimpl.UnknownFields - - Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetConfigResponse) Reset() { *x = GetConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetConfigResponse) String() string { @@ -1179,8 +1323,8 @@ func (x *GetConfigResponse) String() string { func (*GetConfigResponse) ProtoMessage() {} func (x *GetConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[9] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1192,7 +1336,7 @@ func (x *GetConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetConfigResponse.ProtoReflect.Descriptor instead. func (*GetConfigResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{8} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{9} } func (x *GetConfigResponse) GetConfig() *Config { @@ -1203,20 +1347,17 @@ func (x *GetConfigResponse) GetConfig() *Config { } type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ethereum *EthereumConfig `protobuf:"bytes,1,opt,name=ethereum,proto3" json:"ethereum,omitempty"` unknownFields protoimpl.UnknownFields - - Ethereum *EthereumConfig `protobuf:"bytes,1,opt,name=ethereum,proto3" json:"ethereum,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Config) Reset() { *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Config) String() string { @@ -1226,8 +1367,8 @@ func (x *Config) String() string { func (*Config) ProtoMessage() {} func (x *Config) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[10] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1239,7 +1380,7 @@ func (x *Config) ProtoReflect() protoreflect.Message { // Deprecated: Use Config.ProtoReflect.Descriptor instead. func (*Config) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{9} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{10} } func (x *Config) GetEthereum() *EthereumConfig { @@ -1250,21 +1391,18 @@ func (x *Config) GetEthereum() *EthereumConfig { } type EthereumConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Config *EthereumNetworkConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + Tools *ToolsConfig `protobuf:"bytes,2,opt,name=tools,proto3" json:"tools,omitempty"` unknownFields protoimpl.UnknownFields - - Config *EthereumNetworkConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` - Tools *ToolsConfig `protobuf:"bytes,2,opt,name=tools,proto3" json:"tools,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EthereumConfig) Reset() { *x = EthereumConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EthereumConfig) String() string { @@ -1274,8 +1412,8 @@ func (x *EthereumConfig) String() string { func (*EthereumConfig) ProtoMessage() {} func (x *EthereumConfig) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[11] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1287,7 +1425,7 @@ func (x *EthereumConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use EthereumConfig.ProtoReflect.Descriptor instead. func (*EthereumConfig) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{10} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{11} } func (x *EthereumConfig) GetConfig() *EthereumNetworkConfig { @@ -1305,22 +1443,19 @@ func (x *EthereumConfig) GetTools() *ToolsConfig { } type EthereumNetworkConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Repository string `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` + Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` + Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` unknownFields protoimpl.UnknownFields - - Repository string `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EthereumNetworkConfig) Reset() { *x = EthereumNetworkConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EthereumNetworkConfig) String() string { @@ -1330,8 +1465,8 @@ func (x *EthereumNetworkConfig) String() string { func (*EthereumNetworkConfig) ProtoMessage() {} func (x *EthereumNetworkConfig) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[12] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1343,7 +1478,7 @@ func (x *EthereumNetworkConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use EthereumNetworkConfig.ProtoReflect.Descriptor instead. func (*EthereumNetworkConfig) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{11} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{12} } func (x *EthereumNetworkConfig) GetRepository() string { @@ -1368,22 +1503,19 @@ func (x *EthereumNetworkConfig) GetPath() string { } type ToolsConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ncli *GitRepositoryConfig `protobuf:"bytes,1,opt,name=ncli,proto3" json:"ncli,omitempty"` + Lcli *GitRepositoryConfig `protobuf:"bytes,2,opt,name=lcli,proto3" json:"lcli,omitempty"` + Zcli *ZcliConfig `protobuf:"bytes,3,opt,name=zcli,proto3" json:"zcli,omitempty"` unknownFields protoimpl.UnknownFields - - Ncli *GitRepositoryConfig `protobuf:"bytes,1,opt,name=ncli,proto3" json:"ncli,omitempty"` - Lcli *GitRepositoryConfig `protobuf:"bytes,2,opt,name=lcli,proto3" json:"lcli,omitempty"` - Zcli *ZcliConfig `protobuf:"bytes,3,opt,name=zcli,proto3" json:"zcli,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ToolsConfig) Reset() { *x = ToolsConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ToolsConfig) String() string { @@ -1393,8 +1525,8 @@ func (x *ToolsConfig) String() string { func (*ToolsConfig) ProtoMessage() {} func (x *ToolsConfig) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[13] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1406,7 +1538,7 @@ func (x *ToolsConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ToolsConfig.ProtoReflect.Descriptor instead. func (*ToolsConfig) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{12} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{13} } func (x *ToolsConfig) GetNcli() *GitRepositoryConfig { @@ -1431,21 +1563,18 @@ func (x *ToolsConfig) GetZcli() *ZcliConfig { } type GitRepositoryConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Repository string `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` + Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` unknownFields protoimpl.UnknownFields - - Repository string `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GitRepositoryConfig) Reset() { *x = GitRepositoryConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GitRepositoryConfig) String() string { @@ -1455,8 +1584,8 @@ func (x *GitRepositoryConfig) String() string { func (*GitRepositoryConfig) ProtoMessage() {} func (x *GitRepositoryConfig) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[14] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1468,7 +1597,7 @@ func (x *GitRepositoryConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use GitRepositoryConfig.ProtoReflect.Descriptor instead. func (*GitRepositoryConfig) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{13} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{14} } func (x *GitRepositoryConfig) GetRepository() string { @@ -1486,20 +1615,17 @@ func (x *GitRepositoryConfig) GetBranch() string { } type ZcliConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fork string `protobuf:"bytes,1,opt,name=fork,proto3" json:"fork,omitempty"` unknownFields protoimpl.UnknownFields - - Fork string `protobuf:"bytes,1,opt,name=fork,proto3" json:"fork,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ZcliConfig) Reset() { *x = ZcliConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ZcliConfig) String() string { @@ -1509,8 +1635,8 @@ func (x *ZcliConfig) String() string { func (*ZcliConfig) ProtoMessage() {} func (x *ZcliConfig) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[15] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1522,7 +1648,7 @@ func (x *ZcliConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ZcliConfig.ProtoReflect.Descriptor instead. func (*ZcliConfig) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{14} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{15} } func (x *ZcliConfig) GetFork() string { @@ -1533,10 +1659,7 @@ func (x *ZcliConfig) GetFork() string { } type ListBeaconStateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -1548,15 +1671,15 @@ type ListBeaconStateRequest struct { Pagination *PaginationCursor `protobuf:"bytes,9,opt,name=pagination,proto3" json:"pagination,omitempty"` BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconStateRequest) Reset() { *x = ListBeaconStateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconStateRequest) String() string { @@ -1566,8 +1689,8 @@ func (x *ListBeaconStateRequest) String() string { func (*ListBeaconStateRequest) ProtoMessage() {} func (x *ListBeaconStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[16] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1579,7 +1702,7 @@ func (x *ListBeaconStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconStateRequest.ProtoReflect.Descriptor instead. func (*ListBeaconStateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{15} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{16} } func (x *ListBeaconStateRequest) GetNode() string { @@ -1660,20 +1783,17 @@ func (x *ListBeaconStateRequest) GetId() string { } type ListBeaconStateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + BeaconStates []*BeaconState `protobuf:"bytes,1,rep,name=beacon_states,proto3" json:"beacon_states,omitempty"` unknownFields protoimpl.UnknownFields - - BeaconStates []*BeaconState `protobuf:"bytes,1,rep,name=beacon_states,proto3" json:"beacon_states,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListBeaconStateResponse) Reset() { *x = ListBeaconStateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconStateResponse) String() string { @@ -1683,8 +1803,8 @@ func (x *ListBeaconStateResponse) String() string { func (*ListBeaconStateResponse) ProtoMessage() {} func (x *ListBeaconStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[17] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1696,7 +1816,7 @@ func (x *ListBeaconStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconStateResponse.ProtoReflect.Descriptor instead. func (*ListBeaconStateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{16} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{17} } func (x *ListBeaconStateResponse) GetBeaconStates() []*BeaconState { @@ -1707,10 +1827,7 @@ func (x *ListBeaconStateResponse) GetBeaconStates() []*BeaconState { } type CountBeaconStateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -1720,15 +1837,15 @@ type CountBeaconStateRequest struct { BeaconImplementation string `protobuf:"bytes,7,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` Before *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=before,proto3" json:"before,omitempty"` After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountBeaconStateRequest) Reset() { *x = CountBeaconStateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconStateRequest) String() string { @@ -1738,8 +1855,8 @@ func (x *CountBeaconStateRequest) String() string { func (*CountBeaconStateRequest) ProtoMessage() {} func (x *CountBeaconStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[18] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1751,7 +1868,7 @@ func (x *CountBeaconStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconStateRequest.ProtoReflect.Descriptor instead. func (*CountBeaconStateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{17} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{18} } func (x *CountBeaconStateRequest) GetNode() string { @@ -1818,20 +1935,17 @@ func (x *CountBeaconStateRequest) GetAfter() *timestamppb.Timestamp { } type CountBeaconStateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountBeaconStateResponse) Reset() { *x = CountBeaconStateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconStateResponse) String() string { @@ -1841,8 +1955,8 @@ func (x *CountBeaconStateResponse) String() string { func (*CountBeaconStateResponse) ProtoMessage() {} func (x *CountBeaconStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[19] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1854,7 +1968,7 @@ func (x *CountBeaconStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconStateResponse.ProtoReflect.Descriptor instead. func (*CountBeaconStateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{18} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{19} } func (x *CountBeaconStateResponse) GetCount() *wrapperspb.UInt64Value { @@ -1865,20 +1979,17 @@ func (x *CountBeaconStateResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueBeaconStateValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueBeaconStateValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueBeaconStateValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueBeaconStateValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueBeaconStateValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconStateValuesRequest) Reset() { *x = ListUniqueBeaconStateValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconStateValuesRequest) String() string { @@ -1888,8 +1999,8 @@ func (x *ListUniqueBeaconStateValuesRequest) String() string { func (*ListUniqueBeaconStateValuesRequest) ProtoMessage() {} func (x *ListUniqueBeaconStateValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[20] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1901,7 +2012,7 @@ func (x *ListUniqueBeaconStateValuesRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ListUniqueBeaconStateValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconStateValuesRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{19} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{20} } func (x *ListUniqueBeaconStateValuesRequest) GetFields() []ListUniqueBeaconStateValuesRequest_Field { @@ -1912,26 +2023,23 @@ func (x *ListUniqueBeaconStateValuesRequest) GetFields() []ListUniqueBeaconState } type ListUniqueBeaconStateValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` - Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` - StateRoot []string `protobuf:"bytes,4,rep,name=state_root,proto3" json:"state_root,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` - Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` - BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + StateRoot []string `protobuf:"bytes,4,rep,name=state_root,proto3" json:"state_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` + Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconStateValuesResponse) Reset() { *x = ListUniqueBeaconStateValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconStateValuesResponse) String() string { @@ -1941,8 +2049,8 @@ func (x *ListUniqueBeaconStateValuesResponse) String() string { func (*ListUniqueBeaconStateValuesResponse) ProtoMessage() {} func (x *ListUniqueBeaconStateValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[21] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1954,7 +2062,7 @@ func (x *ListUniqueBeaconStateValuesResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use ListUniqueBeaconStateValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconStateValuesResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{20} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{21} } func (x *ListUniqueBeaconStateValuesResponse) GetNode() []string { @@ -2007,10 +2115,7 @@ func (x *ListUniqueBeaconStateValuesResponse) GetBeaconImplementation() []string } type ListBeaconBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -2022,15 +2127,15 @@ type ListBeaconBlockRequest struct { Pagination *PaginationCursor `protobuf:"bytes,9,opt,name=pagination,proto3" json:"pagination,omitempty"` BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBlockRequest) Reset() { *x = ListBeaconBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBlockRequest) String() string { @@ -2040,8 +2145,8 @@ func (x *ListBeaconBlockRequest) String() string { func (*ListBeaconBlockRequest) ProtoMessage() {} func (x *ListBeaconBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[22] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2053,7 +2158,7 @@ func (x *ListBeaconBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBlockRequest.ProtoReflect.Descriptor instead. func (*ListBeaconBlockRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{21} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{22} } func (x *ListBeaconBlockRequest) GetNode() string { @@ -2134,20 +2239,17 @@ func (x *ListBeaconBlockRequest) GetId() string { } type ListBeaconBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + BeaconBlocks []*BeaconBlock `protobuf:"bytes,1,rep,name=beacon_blocks,proto3" json:"beacon_blocks,omitempty"` unknownFields protoimpl.UnknownFields - - BeaconBlocks []*BeaconBlock `protobuf:"bytes,1,rep,name=beacon_blocks,proto3" json:"beacon_blocks,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListBeaconBlockResponse) Reset() { *x = ListBeaconBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBlockResponse) String() string { @@ -2157,8 +2259,8 @@ func (x *ListBeaconBlockResponse) String() string { func (*ListBeaconBlockResponse) ProtoMessage() {} func (x *ListBeaconBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[23] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2170,7 +2272,7 @@ func (x *ListBeaconBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBlockResponse.ProtoReflect.Descriptor instead. func (*ListBeaconBlockResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{22} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{23} } func (x *ListBeaconBlockResponse) GetBeaconBlocks() []*BeaconBlock { @@ -2181,10 +2283,7 @@ func (x *ListBeaconBlockResponse) GetBeaconBlocks() []*BeaconBlock { } type CountBeaconBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -2194,15 +2293,15 @@ type CountBeaconBlockRequest struct { BeaconImplementation string `protobuf:"bytes,7,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` Before *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=before,proto3" json:"before,omitempty"` After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountBeaconBlockRequest) Reset() { *x = CountBeaconBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBlockRequest) String() string { @@ -2212,8 +2311,8 @@ func (x *CountBeaconBlockRequest) String() string { func (*CountBeaconBlockRequest) ProtoMessage() {} func (x *CountBeaconBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[24] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2225,7 +2324,7 @@ func (x *CountBeaconBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBlockRequest.ProtoReflect.Descriptor instead. func (*CountBeaconBlockRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{23} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{24} } func (x *CountBeaconBlockRequest) GetNode() string { @@ -2235,88 +2334,541 @@ func (x *CountBeaconBlockRequest) GetNode() string { return "" } -func (x *CountBeaconBlockRequest) GetSlot() uint64 { +func (x *CountBeaconBlockRequest) GetSlot() uint64 { + if x != nil { + return x.Slot + } + return 0 +} + +func (x *CountBeaconBlockRequest) GetEpoch() uint64 { + if x != nil { + return x.Epoch + } + return 0 +} + +func (x *CountBeaconBlockRequest) GetBlockRoot() string { + if x != nil { + return x.BlockRoot + } + return "" +} + +func (x *CountBeaconBlockRequest) GetNodeVersion() string { + if x != nil { + return x.NodeVersion + } + return "" +} + +func (x *CountBeaconBlockRequest) GetNetwork() string { + if x != nil { + return x.Network + } + return "" +} + +func (x *CountBeaconBlockRequest) GetBeaconImplementation() string { + if x != nil { + return x.BeaconImplementation + } + return "" +} + +func (x *CountBeaconBlockRequest) GetBefore() *timestamppb.Timestamp { + if x != nil { + return x.Before + } + return nil +} + +func (x *CountBeaconBlockRequest) GetAfter() *timestamppb.Timestamp { + if x != nil { + return x.After + } + return nil +} + +type CountBeaconBlockResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CountBeaconBlockResponse) Reset() { + *x = CountBeaconBlockResponse{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CountBeaconBlockResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CountBeaconBlockResponse) ProtoMessage() {} + +func (x *CountBeaconBlockResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_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 CountBeaconBlockResponse.ProtoReflect.Descriptor instead. +func (*CountBeaconBlockResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{25} +} + +func (x *CountBeaconBlockResponse) GetCount() *wrapperspb.UInt64Value { + if x != nil { + return x.Count + } + return nil +} + +type ListUniqueBeaconBlockValuesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueBeaconBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueBeaconBlockValuesRequest_Field" json:"fields,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListUniqueBeaconBlockValuesRequest) Reset() { + *x = ListUniqueBeaconBlockValuesRequest{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListUniqueBeaconBlockValuesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListUniqueBeaconBlockValuesRequest) ProtoMessage() {} + +func (x *ListUniqueBeaconBlockValuesRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_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 ListUniqueBeaconBlockValuesRequest.ProtoReflect.Descriptor instead. +func (*ListUniqueBeaconBlockValuesRequest) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{26} +} + +func (x *ListUniqueBeaconBlockValuesRequest) GetFields() []ListUniqueBeaconBlockValuesRequest_Field { + if x != nil { + return x.Fields + } + return nil +} + +type ListUniqueBeaconBlockValuesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,proto3" json:"block_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` + Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListUniqueBeaconBlockValuesResponse) Reset() { + *x = ListUniqueBeaconBlockValuesResponse{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListUniqueBeaconBlockValuesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListUniqueBeaconBlockValuesResponse) ProtoMessage() {} + +func (x *ListUniqueBeaconBlockValuesResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_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 ListUniqueBeaconBlockValuesResponse.ProtoReflect.Descriptor instead. +func (*ListUniqueBeaconBlockValuesResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{27} +} + +func (x *ListUniqueBeaconBlockValuesResponse) GetNode() []string { + if x != nil { + return x.Node + } + return nil +} + +func (x *ListUniqueBeaconBlockValuesResponse) GetSlot() []uint64 { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ListUniqueBeaconBlockValuesResponse) GetEpoch() []uint64 { + if x != nil { + return x.Epoch + } + return nil +} + +func (x *ListUniqueBeaconBlockValuesResponse) GetBlockRoot() []string { + if x != nil { + return x.BlockRoot + } + return nil +} + +func (x *ListUniqueBeaconBlockValuesResponse) GetNodeVersion() []string { + if x != nil { + return x.NodeVersion + } + return nil +} + +func (x *ListUniqueBeaconBlockValuesResponse) GetNetwork() []string { + if x != nil { + return x.Network + } + return nil +} + +func (x *ListUniqueBeaconBlockValuesResponse) GetBeaconImplementation() []string { + if x != nil { + return x.BeaconImplementation + } + return nil +} + +type ListExecutionPayloadEnvelopeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` + Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot string `protobuf:"bytes,4,opt,name=block_root,proto3" json:"block_root,omitempty"` + NodeVersion string `protobuf:"bytes,5,opt,name=node_version,proto3" json:"node_version,omitempty"` + Network string `protobuf:"bytes,6,opt,name=network,proto3" json:"network,omitempty"` + Before *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=before,proto3" json:"before,omitempty"` + After *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=after,proto3" json:"after,omitempty"` + Pagination *PaginationCursor `protobuf:"bytes,9,opt,name=pagination,proto3" json:"pagination,omitempty"` + BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListExecutionPayloadEnvelopeRequest) Reset() { + *x = ListExecutionPayloadEnvelopeRequest{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListExecutionPayloadEnvelopeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListExecutionPayloadEnvelopeRequest) ProtoMessage() {} + +func (x *ListExecutionPayloadEnvelopeRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_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 ListExecutionPayloadEnvelopeRequest.ProtoReflect.Descriptor instead. +func (*ListExecutionPayloadEnvelopeRequest) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{28} +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetNode() string { + if x != nil { + return x.Node + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetSlot() uint64 { + if x != nil { + return x.Slot + } + return 0 +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetEpoch() uint64 { + if x != nil { + return x.Epoch + } + return 0 +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetBlockRoot() string { + if x != nil { + return x.BlockRoot + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetNodeVersion() string { + if x != nil { + return x.NodeVersion + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetNetwork() string { + if x != nil { + return x.Network + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetBefore() *timestamppb.Timestamp { + if x != nil { + return x.Before + } + return nil +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetAfter() *timestamppb.Timestamp { + if x != nil { + return x.After + } + return nil +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetPagination() *PaginationCursor { + if x != nil { + return x.Pagination + } + return nil +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetBeaconImplementation() string { + if x != nil { + return x.BeaconImplementation + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type ListExecutionPayloadEnvelopeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + ExecutionPayloadEnvelopes []*ExecutionPayloadEnvelope `protobuf:"bytes,1,rep,name=execution_payload_envelopes,proto3" json:"execution_payload_envelopes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListExecutionPayloadEnvelopeResponse) Reset() { + *x = ListExecutionPayloadEnvelopeResponse{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListExecutionPayloadEnvelopeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListExecutionPayloadEnvelopeResponse) ProtoMessage() {} + +func (x *ListExecutionPayloadEnvelopeResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_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 ListExecutionPayloadEnvelopeResponse.ProtoReflect.Descriptor instead. +func (*ListExecutionPayloadEnvelopeResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{29} +} + +func (x *ListExecutionPayloadEnvelopeResponse) GetExecutionPayloadEnvelopes() []*ExecutionPayloadEnvelope { + if x != nil { + return x.ExecutionPayloadEnvelopes + } + return nil +} + +type CountExecutionPayloadEnvelopeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` + Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot string `protobuf:"bytes,4,opt,name=block_root,proto3" json:"block_root,omitempty"` + NodeVersion string `protobuf:"bytes,5,opt,name=node_version,proto3" json:"node_version,omitempty"` + Network string `protobuf:"bytes,6,opt,name=network,proto3" json:"network,omitempty"` + BeaconImplementation string `protobuf:"bytes,7,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + Before *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=before,proto3" json:"before,omitempty"` + After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CountExecutionPayloadEnvelopeRequest) Reset() { + *x = CountExecutionPayloadEnvelopeRequest{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CountExecutionPayloadEnvelopeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CountExecutionPayloadEnvelopeRequest) ProtoMessage() {} + +func (x *CountExecutionPayloadEnvelopeRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_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 CountExecutionPayloadEnvelopeRequest.ProtoReflect.Descriptor instead. +func (*CountExecutionPayloadEnvelopeRequest) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{30} +} + +func (x *CountExecutionPayloadEnvelopeRequest) GetNode() string { + if x != nil { + return x.Node + } + return "" +} + +func (x *CountExecutionPayloadEnvelopeRequest) GetSlot() uint64 { if x != nil { return x.Slot } return 0 } -func (x *CountBeaconBlockRequest) GetEpoch() uint64 { +func (x *CountExecutionPayloadEnvelopeRequest) GetEpoch() uint64 { if x != nil { return x.Epoch } return 0 } -func (x *CountBeaconBlockRequest) GetBlockRoot() string { +func (x *CountExecutionPayloadEnvelopeRequest) GetBlockRoot() string { if x != nil { return x.BlockRoot } return "" } -func (x *CountBeaconBlockRequest) GetNodeVersion() string { +func (x *CountExecutionPayloadEnvelopeRequest) GetNodeVersion() string { if x != nil { return x.NodeVersion } return "" } -func (x *CountBeaconBlockRequest) GetNetwork() string { +func (x *CountExecutionPayloadEnvelopeRequest) GetNetwork() string { if x != nil { return x.Network } return "" } -func (x *CountBeaconBlockRequest) GetBeaconImplementation() string { +func (x *CountExecutionPayloadEnvelopeRequest) GetBeaconImplementation() string { if x != nil { return x.BeaconImplementation } return "" } -func (x *CountBeaconBlockRequest) GetBefore() *timestamppb.Timestamp { +func (x *CountExecutionPayloadEnvelopeRequest) GetBefore() *timestamppb.Timestamp { if x != nil { return x.Before } return nil } -func (x *CountBeaconBlockRequest) GetAfter() *timestamppb.Timestamp { +func (x *CountExecutionPayloadEnvelopeRequest) GetAfter() *timestamppb.Timestamp { if x != nil { return x.After } return nil } -type CountBeaconBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type CountExecutionPayloadEnvelopeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *CountBeaconBlockResponse) Reset() { - *x = CountBeaconBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *CountExecutionPayloadEnvelopeResponse) Reset() { + *x = CountExecutionPayloadEnvelopeResponse{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *CountBeaconBlockResponse) String() string { +func (x *CountExecutionPayloadEnvelopeResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CountBeaconBlockResponse) ProtoMessage() {} +func (*CountExecutionPayloadEnvelopeResponse) ProtoMessage() {} -func (x *CountBeaconBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { +func (x *CountExecutionPayloadEnvelopeResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[31] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2326,44 +2878,41 @@ func (x *CountBeaconBlockResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CountBeaconBlockResponse.ProtoReflect.Descriptor instead. -func (*CountBeaconBlockResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{24} +// Deprecated: Use CountExecutionPayloadEnvelopeResponse.ProtoReflect.Descriptor instead. +func (*CountExecutionPayloadEnvelopeResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{31} } -func (x *CountBeaconBlockResponse) GetCount() *wrapperspb.UInt64Value { +func (x *CountExecutionPayloadEnvelopeResponse) GetCount() *wrapperspb.UInt64Value { if x != nil { return x.Count } return nil } -type ListUniqueBeaconBlockValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type ListUniqueExecutionPayloadEnvelopeValuesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueExecutionPayloadEnvelopeValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueExecutionPayloadEnvelopeValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueBeaconBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueBeaconBlockValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *ListUniqueBeaconBlockValuesRequest) Reset() { - *x = ListUniqueBeaconBlockValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *ListUniqueExecutionPayloadEnvelopeValuesRequest) Reset() { + *x = ListUniqueExecutionPayloadEnvelopeValuesRequest{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ListUniqueBeaconBlockValuesRequest) String() string { +func (x *ListUniqueExecutionPayloadEnvelopeValuesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListUniqueBeaconBlockValuesRequest) ProtoMessage() {} +func (*ListUniqueExecutionPayloadEnvelopeValuesRequest) ProtoMessage() {} -func (x *ListUniqueBeaconBlockValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { +func (x *ListUniqueExecutionPayloadEnvelopeValuesRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[32] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2373,50 +2922,47 @@ func (x *ListUniqueBeaconBlockValuesRequest) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ListUniqueBeaconBlockValuesRequest.ProtoReflect.Descriptor instead. -func (*ListUniqueBeaconBlockValuesRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{25} +// Deprecated: Use ListUniqueExecutionPayloadEnvelopeValuesRequest.ProtoReflect.Descriptor instead. +func (*ListUniqueExecutionPayloadEnvelopeValuesRequest) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{32} } -func (x *ListUniqueBeaconBlockValuesRequest) GetFields() []ListUniqueBeaconBlockValuesRequest_Field { +func (x *ListUniqueExecutionPayloadEnvelopeValuesRequest) GetFields() []ListUniqueExecutionPayloadEnvelopeValuesRequest_Field { if x != nil { return x.Fields } return nil } -type ListUniqueBeaconBlockValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` - Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` - BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,proto3" json:"block_root,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` - Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` - BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` +type ListUniqueExecutionPayloadEnvelopeValuesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,proto3" json:"block_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` + Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ListUniqueBeaconBlockValuesResponse) Reset() { - *x = ListUniqueBeaconBlockValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) Reset() { + *x = ListUniqueExecutionPayloadEnvelopeValuesResponse{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ListUniqueBeaconBlockValuesResponse) String() string { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListUniqueBeaconBlockValuesResponse) ProtoMessage() {} +func (*ListUniqueExecutionPayloadEnvelopeValuesResponse) ProtoMessage() {} -func (x *ListUniqueBeaconBlockValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[33] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2426,54 +2972,54 @@ func (x *ListUniqueBeaconBlockValuesResponse) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use ListUniqueBeaconBlockValuesResponse.ProtoReflect.Descriptor instead. -func (*ListUniqueBeaconBlockValuesResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{26} +// Deprecated: Use ListUniqueExecutionPayloadEnvelopeValuesResponse.ProtoReflect.Descriptor instead. +func (*ListUniqueExecutionPayloadEnvelopeValuesResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{33} } -func (x *ListUniqueBeaconBlockValuesResponse) GetNode() []string { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetNode() []string { if x != nil { return x.Node } return nil } -func (x *ListUniqueBeaconBlockValuesResponse) GetSlot() []uint64 { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetSlot() []uint64 { if x != nil { return x.Slot } return nil } -func (x *ListUniqueBeaconBlockValuesResponse) GetEpoch() []uint64 { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetEpoch() []uint64 { if x != nil { return x.Epoch } return nil } -func (x *ListUniqueBeaconBlockValuesResponse) GetBlockRoot() []string { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetBlockRoot() []string { if x != nil { return x.BlockRoot } return nil } -func (x *ListUniqueBeaconBlockValuesResponse) GetNodeVersion() []string { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetNodeVersion() []string { if x != nil { return x.NodeVersion } return nil } -func (x *ListUniqueBeaconBlockValuesResponse) GetNetwork() []string { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetNetwork() []string { if x != nil { return x.Network } return nil } -func (x *ListUniqueBeaconBlockValuesResponse) GetBeaconImplementation() []string { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetBeaconImplementation() []string { if x != nil { return x.BeaconImplementation } @@ -2481,10 +3027,7 @@ func (x *ListUniqueBeaconBlockValuesResponse) GetBeaconImplementation() []string } type ListBeaconBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -2496,15 +3039,15 @@ type ListBeaconBadBlockRequest struct { Pagination *PaginationCursor `protobuf:"bytes,9,opt,name=pagination,proto3" json:"pagination,omitempty"` BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBadBlockRequest) Reset() { *x = ListBeaconBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBadBlockRequest) String() string { @@ -2514,8 +3057,8 @@ func (x *ListBeaconBadBlockRequest) String() string { func (*ListBeaconBadBlockRequest) ProtoMessage() {} func (x *ListBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[34] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2527,7 +3070,7 @@ func (x *ListBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBadBlockRequest.ProtoReflect.Descriptor instead. func (*ListBeaconBadBlockRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{27} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{34} } func (x *ListBeaconBadBlockRequest) GetNode() string { @@ -2608,20 +3151,17 @@ func (x *ListBeaconBadBlockRequest) GetId() string { } type ListBeaconBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BeaconBadBlocks []*BeaconBadBlock `protobuf:"bytes,1,rep,name=beacon_bad_blocks,proto3" json:"beacon_bad_blocks,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + BeaconBadBlocks []*BeaconBadBlock `protobuf:"bytes,1,rep,name=beacon_bad_blocks,proto3" json:"beacon_bad_blocks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBadBlockResponse) Reset() { *x = ListBeaconBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBadBlockResponse) String() string { @@ -2631,8 +3171,8 @@ func (x *ListBeaconBadBlockResponse) String() string { func (*ListBeaconBadBlockResponse) ProtoMessage() {} func (x *ListBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[35] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2644,7 +3184,7 @@ func (x *ListBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBadBlockResponse.ProtoReflect.Descriptor instead. func (*ListBeaconBadBlockResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{28} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{35} } func (x *ListBeaconBadBlockResponse) GetBeaconBadBlocks() []*BeaconBadBlock { @@ -2655,10 +3195,7 @@ func (x *ListBeaconBadBlockResponse) GetBeaconBadBlocks() []*BeaconBadBlock { } type CountBeaconBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -2668,15 +3205,15 @@ type CountBeaconBadBlockRequest struct { BeaconImplementation string `protobuf:"bytes,7,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` Before *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=before,proto3" json:"before,omitempty"` After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountBeaconBadBlockRequest) Reset() { *x = CountBeaconBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBadBlockRequest) String() string { @@ -2686,8 +3223,8 @@ func (x *CountBeaconBadBlockRequest) String() string { func (*CountBeaconBadBlockRequest) ProtoMessage() {} func (x *CountBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[36] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2699,7 +3236,7 @@ func (x *CountBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBadBlockRequest.ProtoReflect.Descriptor instead. func (*CountBeaconBadBlockRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{29} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{36} } func (x *CountBeaconBadBlockRequest) GetNode() string { @@ -2766,20 +3303,17 @@ func (x *CountBeaconBadBlockRequest) GetAfter() *timestamppb.Timestamp { } type CountBeaconBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountBeaconBadBlockResponse) Reset() { *x = CountBeaconBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBadBlockResponse) String() string { @@ -2789,8 +3323,8 @@ func (x *CountBeaconBadBlockResponse) String() string { func (*CountBeaconBadBlockResponse) ProtoMessage() {} func (x *CountBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[37] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2802,7 +3336,7 @@ func (x *CountBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBadBlockResponse.ProtoReflect.Descriptor instead. func (*CountBeaconBadBlockResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{30} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{37} } func (x *CountBeaconBadBlockResponse) GetCount() *wrapperspb.UInt64Value { @@ -2813,20 +3347,17 @@ func (x *CountBeaconBadBlockResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueBeaconBadBlockValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueBeaconBadBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueBeaconBadBlockValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueBeaconBadBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueBeaconBadBlockValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBadBlockValuesRequest) Reset() { *x = ListUniqueBeaconBadBlockValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBadBlockValuesRequest) String() string { @@ -2836,8 +3367,8 @@ func (x *ListUniqueBeaconBadBlockValuesRequest) String() string { func (*ListUniqueBeaconBadBlockValuesRequest) ProtoMessage() {} func (x *ListUniqueBeaconBadBlockValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[38] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2849,7 +3380,7 @@ func (x *ListUniqueBeaconBadBlockValuesRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use ListUniqueBeaconBadBlockValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBadBlockValuesRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{31} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{38} } func (x *ListUniqueBeaconBadBlockValuesRequest) GetFields() []ListUniqueBeaconBadBlockValuesRequest_Field { @@ -2860,26 +3391,23 @@ func (x *ListUniqueBeaconBadBlockValuesRequest) GetFields() []ListUniqueBeaconBa } type ListUniqueBeaconBadBlockValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` - Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` - BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,proto3" json:"block_root,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` - Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` - BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,proto3" json:"block_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` + Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBadBlockValuesResponse) Reset() { *x = ListUniqueBeaconBadBlockValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBadBlockValuesResponse) String() string { @@ -2889,8 +3417,8 @@ func (x *ListUniqueBeaconBadBlockValuesResponse) String() string { func (*ListUniqueBeaconBadBlockValuesResponse) ProtoMessage() {} func (x *ListUniqueBeaconBadBlockValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[39] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2902,7 +3430,7 @@ func (x *ListUniqueBeaconBadBlockValuesResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use ListUniqueBeaconBadBlockValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBadBlockValuesResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{32} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{39} } func (x *ListUniqueBeaconBadBlockValuesResponse) GetNode() []string { @@ -2955,10 +3483,7 @@ func (x *ListUniqueBeaconBadBlockValuesResponse) GetBeaconImplementation() []str } type ListBeaconBadBlobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -2971,15 +3496,15 @@ type ListBeaconBadBlobRequest struct { BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` Index *wrapperspb.UInt64Value `protobuf:"bytes,12,opt,name=index,proto3" json:"index,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBadBlobRequest) Reset() { *x = ListBeaconBadBlobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBadBlobRequest) String() string { @@ -2989,8 +3514,8 @@ func (x *ListBeaconBadBlobRequest) String() string { func (*ListBeaconBadBlobRequest) ProtoMessage() {} func (x *ListBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[40] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3002,7 +3527,7 @@ func (x *ListBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBadBlobRequest.ProtoReflect.Descriptor instead. func (*ListBeaconBadBlobRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{33} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{40} } func (x *ListBeaconBadBlobRequest) GetNode() string { @@ -3090,20 +3615,17 @@ func (x *ListBeaconBadBlobRequest) GetIndex() *wrapperspb.UInt64Value { } type ListBeaconBadBlobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BeaconBadBlobs []*BeaconBadBlob `protobuf:"bytes,1,rep,name=beacon_bad_blobs,proto3" json:"beacon_bad_blobs,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + BeaconBadBlobs []*BeaconBadBlob `protobuf:"bytes,1,rep,name=beacon_bad_blobs,proto3" json:"beacon_bad_blobs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBadBlobResponse) Reset() { *x = ListBeaconBadBlobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBadBlobResponse) String() string { @@ -3113,8 +3635,8 @@ func (x *ListBeaconBadBlobResponse) String() string { func (*ListBeaconBadBlobResponse) ProtoMessage() {} func (x *ListBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[41] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3126,7 +3648,7 @@ func (x *ListBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBadBlobResponse.ProtoReflect.Descriptor instead. func (*ListBeaconBadBlobResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{34} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{41} } func (x *ListBeaconBadBlobResponse) GetBeaconBadBlobs() []*BeaconBadBlob { @@ -3137,10 +3659,7 @@ func (x *ListBeaconBadBlobResponse) GetBeaconBadBlobs() []*BeaconBadBlob { } type CountBeaconBadBlobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -3151,15 +3670,15 @@ type CountBeaconBadBlobRequest struct { Before *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=before,proto3" json:"before,omitempty"` After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` Index *wrapperspb.UInt64Value `protobuf:"bytes,10,opt,name=index,proto3" json:"index,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountBeaconBadBlobRequest) Reset() { *x = CountBeaconBadBlobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBadBlobRequest) String() string { @@ -3169,8 +3688,8 @@ func (x *CountBeaconBadBlobRequest) String() string { func (*CountBeaconBadBlobRequest) ProtoMessage() {} func (x *CountBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[42] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3182,7 +3701,7 @@ func (x *CountBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBadBlobRequest.ProtoReflect.Descriptor instead. func (*CountBeaconBadBlobRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{35} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{42} } func (x *CountBeaconBadBlobRequest) GetNode() string { @@ -3256,20 +3775,17 @@ func (x *CountBeaconBadBlobRequest) GetIndex() *wrapperspb.UInt64Value { } type CountBeaconBadBlobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountBeaconBadBlobResponse) Reset() { *x = CountBeaconBadBlobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBadBlobResponse) String() string { @@ -3279,8 +3795,8 @@ func (x *CountBeaconBadBlobResponse) String() string { func (*CountBeaconBadBlobResponse) ProtoMessage() {} func (x *CountBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[43] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3292,7 +3808,7 @@ func (x *CountBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBadBlobResponse.ProtoReflect.Descriptor instead. func (*CountBeaconBadBlobResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{36} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{43} } func (x *CountBeaconBadBlobResponse) GetCount() *wrapperspb.UInt64Value { @@ -3303,20 +3819,17 @@ func (x *CountBeaconBadBlobResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueBeaconBadBlobValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueBeaconBadBlobValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueBeaconBadBlobValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueBeaconBadBlobValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueBeaconBadBlobValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBadBlobValuesRequest) Reset() { *x = ListUniqueBeaconBadBlobValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBadBlobValuesRequest) String() string { @@ -3326,8 +3839,8 @@ func (x *ListUniqueBeaconBadBlobValuesRequest) String() string { func (*ListUniqueBeaconBadBlobValuesRequest) ProtoMessage() {} func (x *ListUniqueBeaconBadBlobValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[44] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3339,7 +3852,7 @@ func (x *ListUniqueBeaconBadBlobValuesRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use ListUniqueBeaconBadBlobValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBadBlobValuesRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{37} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{44} } func (x *ListUniqueBeaconBadBlobValuesRequest) GetFields() []ListUniqueBeaconBadBlobValuesRequest_Field { @@ -3350,27 +3863,24 @@ func (x *ListUniqueBeaconBadBlobValuesRequest) GetFields() []ListUniqueBeaconBad } type ListUniqueBeaconBadBlobValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` - Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` - BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,proto3" json:"block_root,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` - Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` - BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` - Index []uint64 `protobuf:"varint,8,rep,packed,name=index,proto3" json:"index,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,proto3" json:"block_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` + Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + Index []uint64 `protobuf:"varint,8,rep,packed,name=index,proto3" json:"index,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBadBlobValuesResponse) Reset() { *x = ListUniqueBeaconBadBlobValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBadBlobValuesResponse) String() string { @@ -3380,8 +3890,8 @@ func (x *ListUniqueBeaconBadBlobValuesResponse) String() string { func (*ListUniqueBeaconBadBlobValuesResponse) ProtoMessage() {} func (x *ListUniqueBeaconBadBlobValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[45] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3393,7 +3903,7 @@ func (x *ListUniqueBeaconBadBlobValuesResponse) ProtoReflect() protoreflect.Mess // Deprecated: Use ListUniqueBeaconBadBlobValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBadBlobValuesResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{38} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{45} } func (x *ListUniqueBeaconBadBlobValuesResponse) GetNode() []string { @@ -3453,10 +3963,7 @@ func (x *ListUniqueBeaconBadBlobValuesResponse) GetIndex() []uint64 { } type ListExecutionBlockTraceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` BlockNumber int64 `protobuf:"varint,2,opt,name=block_number,proto3" json:"block_number,omitempty"` BlockHash string `protobuf:"bytes,3,opt,name=block_hash,proto3" json:"block_hash,omitempty"` @@ -3467,15 +3974,15 @@ type ListExecutionBlockTraceRequest struct { Id string `protobuf:"bytes,9,opt,name=id,proto3" json:"id,omitempty"` ExecutionImplementation string `protobuf:"bytes,10,opt,name=execution_implementation,proto3" json:"execution_implementation,omitempty"` NodeVersion string `protobuf:"bytes,11,opt,name=node_version,proto3" json:"node_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListExecutionBlockTraceRequest) Reset() { *x = ListExecutionBlockTraceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListExecutionBlockTraceRequest) String() string { @@ -3485,8 +3992,8 @@ func (x *ListExecutionBlockTraceRequest) String() string { func (*ListExecutionBlockTraceRequest) ProtoMessage() {} func (x *ListExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[46] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3498,7 +4005,7 @@ func (x *ListExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExecutionBlockTraceRequest.ProtoReflect.Descriptor instead. func (*ListExecutionBlockTraceRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{39} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{46} } func (x *ListExecutionBlockTraceRequest) GetNode() string { @@ -3572,20 +4079,17 @@ func (x *ListExecutionBlockTraceRequest) GetNodeVersion() string { } type ListExecutionBlockTraceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` ExecutionBlockTraces []*ExecutionBlockTrace `protobuf:"bytes,1,rep,name=execution_block_traces,proto3" json:"execution_block_traces,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListExecutionBlockTraceResponse) Reset() { *x = ListExecutionBlockTraceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListExecutionBlockTraceResponse) String() string { @@ -3595,8 +4099,8 @@ func (x *ListExecutionBlockTraceResponse) String() string { func (*ListExecutionBlockTraceResponse) ProtoMessage() {} func (x *ListExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[47] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3608,7 +4112,7 @@ func (x *ListExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExecutionBlockTraceResponse.ProtoReflect.Descriptor instead. func (*ListExecutionBlockTraceResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{40} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{47} } func (x *ListExecutionBlockTraceResponse) GetExecutionBlockTraces() []*ExecutionBlockTrace { @@ -3619,10 +4123,7 @@ func (x *ListExecutionBlockTraceResponse) GetExecutionBlockTraces() []*Execution } type CountExecutionBlockTraceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` BlockNumber int64 `protobuf:"varint,2,opt,name=block_number,proto3" json:"block_number,omitempty"` BlockHash string `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` @@ -3631,15 +4132,15 @@ type CountExecutionBlockTraceRequest struct { Before *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=before,proto3" json:"before,omitempty"` After *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=after,proto3" json:"after,omitempty"` NodeVersion string `protobuf:"bytes,9,opt,name=node_version,proto3" json:"node_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountExecutionBlockTraceRequest) Reset() { *x = CountExecutionBlockTraceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountExecutionBlockTraceRequest) String() string { @@ -3649,8 +4150,8 @@ func (x *CountExecutionBlockTraceRequest) String() string { func (*CountExecutionBlockTraceRequest) ProtoMessage() {} func (x *CountExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[48] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3662,7 +4163,7 @@ func (x *CountExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountExecutionBlockTraceRequest.ProtoReflect.Descriptor instead. func (*CountExecutionBlockTraceRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{41} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{48} } func (x *CountExecutionBlockTraceRequest) GetNode() string { @@ -3722,20 +4223,17 @@ func (x *CountExecutionBlockTraceRequest) GetNodeVersion() string { } type CountExecutionBlockTraceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountExecutionBlockTraceResponse) Reset() { *x = CountExecutionBlockTraceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountExecutionBlockTraceResponse) String() string { @@ -3745,8 +4243,8 @@ func (x *CountExecutionBlockTraceResponse) String() string { func (*CountExecutionBlockTraceResponse) ProtoMessage() {} func (x *CountExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[49] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3758,7 +4256,7 @@ func (x *CountExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountExecutionBlockTraceResponse.ProtoReflect.Descriptor instead. func (*CountExecutionBlockTraceResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{42} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{49} } func (x *CountExecutionBlockTraceResponse) GetCount() *wrapperspb.UInt64Value { @@ -3769,20 +4267,17 @@ func (x *CountExecutionBlockTraceResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueExecutionBlockTraceValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueExecutionBlockTraceValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueExecutionBlockTraceValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueExecutionBlockTraceValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueExecutionBlockTraceValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueExecutionBlockTraceValuesRequest) Reset() { *x = ListUniqueExecutionBlockTraceValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueExecutionBlockTraceValuesRequest) String() string { @@ -3792,8 +4287,8 @@ func (x *ListUniqueExecutionBlockTraceValuesRequest) String() string { func (*ListUniqueExecutionBlockTraceValuesRequest) ProtoMessage() {} func (x *ListUniqueExecutionBlockTraceValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[50] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3805,7 +4300,7 @@ func (x *ListUniqueExecutionBlockTraceValuesRequest) ProtoReflect() protoreflect // Deprecated: Use ListUniqueExecutionBlockTraceValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueExecutionBlockTraceValuesRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{43} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{50} } func (x *ListUniqueExecutionBlockTraceValuesRequest) GetFields() []ListUniqueExecutionBlockTraceValuesRequest_Field { @@ -3816,25 +4311,22 @@ func (x *ListUniqueExecutionBlockTraceValuesRequest) GetFields() []ListUniqueExe } type ListUniqueExecutionBlockTraceValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - BlockHash []string `protobuf:"bytes,2,rep,name=block_hash,proto3" json:"block_hash,omitempty"` - BlockNumber []int64 `protobuf:"varint,3,rep,packed,name=block_number,proto3" json:"block_number,omitempty"` - Network []string `protobuf:"bytes,4,rep,name=network,proto3" json:"network,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` - ExecutionImplementation []string `protobuf:"bytes,6,rep,name=execution_implementation,proto3" json:"execution_implementation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + BlockHash []string `protobuf:"bytes,2,rep,name=block_hash,proto3" json:"block_hash,omitempty"` + BlockNumber []int64 `protobuf:"varint,3,rep,packed,name=block_number,proto3" json:"block_number,omitempty"` + Network []string `protobuf:"bytes,4,rep,name=network,proto3" json:"network,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` + ExecutionImplementation []string `protobuf:"bytes,6,rep,name=execution_implementation,proto3" json:"execution_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueExecutionBlockTraceValuesResponse) Reset() { *x = ListUniqueExecutionBlockTraceValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueExecutionBlockTraceValuesResponse) String() string { @@ -3844,8 +4336,8 @@ func (x *ListUniqueExecutionBlockTraceValuesResponse) String() string { func (*ListUniqueExecutionBlockTraceValuesResponse) ProtoMessage() {} func (x *ListUniqueExecutionBlockTraceValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[51] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3857,7 +4349,7 @@ func (x *ListUniqueExecutionBlockTraceValuesResponse) ProtoReflect() protoreflec // Deprecated: Use ListUniqueExecutionBlockTraceValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueExecutionBlockTraceValuesResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{44} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{51} } func (x *ListUniqueExecutionBlockTraceValuesResponse) GetNode() []string { @@ -3903,10 +4395,7 @@ func (x *ListUniqueExecutionBlockTraceValuesResponse) GetExecutionImplementation } type ListExecutionBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` BlockNumber int64 `protobuf:"varint,2,opt,name=block_number,proto3" json:"block_number,omitempty"` BlockHash string `protobuf:"bytes,3,opt,name=block_hash,proto3" json:"block_hash,omitempty"` @@ -3918,15 +4407,15 @@ type ListExecutionBadBlockRequest struct { ExecutionImplementation string `protobuf:"bytes,10,opt,name=execution_implementation,proto3" json:"execution_implementation,omitempty"` NodeVersion string `protobuf:"bytes,11,opt,name=node_version,proto3" json:"node_version,omitempty"` BlockExtraData string `protobuf:"bytes,12,opt,name=block_extra_data,proto3" json:"block_extra_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListExecutionBadBlockRequest) Reset() { *x = ListExecutionBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListExecutionBadBlockRequest) String() string { @@ -3936,8 +4425,8 @@ func (x *ListExecutionBadBlockRequest) String() string { func (*ListExecutionBadBlockRequest) ProtoMessage() {} func (x *ListExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[52] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3949,7 +4438,7 @@ func (x *ListExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExecutionBadBlockRequest.ProtoReflect.Descriptor instead. func (*ListExecutionBadBlockRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{45} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{52} } func (x *ListExecutionBadBlockRequest) GetNode() string { @@ -4030,20 +4519,17 @@ func (x *ListExecutionBadBlockRequest) GetBlockExtraData() string { } type ListExecutionBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ExecutionBadBlocks []*ExecutionBadBlock `protobuf:"bytes,1,rep,name=execution_bad_blocks,proto3" json:"execution_bad_blocks,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ExecutionBadBlocks []*ExecutionBadBlock `protobuf:"bytes,1,rep,name=execution_bad_blocks,proto3" json:"execution_bad_blocks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListExecutionBadBlockResponse) Reset() { *x = ListExecutionBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListExecutionBadBlockResponse) String() string { @@ -4053,8 +4539,8 @@ func (x *ListExecutionBadBlockResponse) String() string { func (*ListExecutionBadBlockResponse) ProtoMessage() {} func (x *ListExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[46] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[53] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4066,7 +4552,7 @@ func (x *ListExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExecutionBadBlockResponse.ProtoReflect.Descriptor instead. func (*ListExecutionBadBlockResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{46} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{53} } func (x *ListExecutionBadBlockResponse) GetExecutionBadBlocks() []*ExecutionBadBlock { @@ -4077,10 +4563,7 @@ func (x *ListExecutionBadBlockResponse) GetExecutionBadBlocks() []*ExecutionBadB } type CountExecutionBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` BlockNumber int64 `protobuf:"varint,2,opt,name=block_number,proto3" json:"block_number,omitempty"` BlockHash string `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` @@ -4090,15 +4573,15 @@ type CountExecutionBadBlockRequest struct { After *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=after,proto3" json:"after,omitempty"` NodeVersion string `protobuf:"bytes,9,opt,name=node_version,proto3" json:"node_version,omitempty"` BlockExtraData string `protobuf:"bytes,10,opt,name=block_extra_data,proto3" json:"block_extra_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountExecutionBadBlockRequest) Reset() { *x = CountExecutionBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountExecutionBadBlockRequest) String() string { @@ -4108,8 +4591,8 @@ func (x *CountExecutionBadBlockRequest) String() string { func (*CountExecutionBadBlockRequest) ProtoMessage() {} func (x *CountExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[54] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4121,7 +4604,7 @@ func (x *CountExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountExecutionBadBlockRequest.ProtoReflect.Descriptor instead. func (*CountExecutionBadBlockRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{47} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{54} } func (x *CountExecutionBadBlockRequest) GetNode() string { @@ -4188,20 +4671,17 @@ func (x *CountExecutionBadBlockRequest) GetBlockExtraData() string { } type CountExecutionBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountExecutionBadBlockResponse) Reset() { *x = CountExecutionBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountExecutionBadBlockResponse) String() string { @@ -4211,8 +4691,8 @@ func (x *CountExecutionBadBlockResponse) String() string { func (*CountExecutionBadBlockResponse) ProtoMessage() {} func (x *CountExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[48] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[55] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4224,7 +4704,7 @@ func (x *CountExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountExecutionBadBlockResponse.ProtoReflect.Descriptor instead. func (*CountExecutionBadBlockResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{48} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{55} } func (x *CountExecutionBadBlockResponse) GetCount() *wrapperspb.UInt64Value { @@ -4235,20 +4715,17 @@ func (x *CountExecutionBadBlockResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueExecutionBadBlockValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueExecutionBadBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueExecutionBadBlockValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueExecutionBadBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueExecutionBadBlockValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueExecutionBadBlockValuesRequest) Reset() { *x = ListUniqueExecutionBadBlockValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueExecutionBadBlockValuesRequest) String() string { @@ -4258,8 +4735,8 @@ func (x *ListUniqueExecutionBadBlockValuesRequest) String() string { func (*ListUniqueExecutionBadBlockValuesRequest) ProtoMessage() {} func (x *ListUniqueExecutionBadBlockValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[56] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4271,7 +4748,7 @@ func (x *ListUniqueExecutionBadBlockValuesRequest) ProtoReflect() protoreflect.M // Deprecated: Use ListUniqueExecutionBadBlockValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueExecutionBadBlockValuesRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{49} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{56} } func (x *ListUniqueExecutionBadBlockValuesRequest) GetFields() []ListUniqueExecutionBadBlockValuesRequest_Field { @@ -4282,26 +4759,23 @@ func (x *ListUniqueExecutionBadBlockValuesRequest) GetFields() []ListUniqueExecu } type ListUniqueExecutionBadBlockValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - BlockHash []string `protobuf:"bytes,2,rep,name=block_hash,proto3" json:"block_hash,omitempty"` - BlockNumber []int64 `protobuf:"varint,3,rep,packed,name=block_number,proto3" json:"block_number,omitempty"` - Network []string `protobuf:"bytes,4,rep,name=network,proto3" json:"network,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` - ExecutionImplementation []string `protobuf:"bytes,6,rep,name=execution_implementation,proto3" json:"execution_implementation,omitempty"` - BlockExtraData []string `protobuf:"bytes,7,rep,name=block_extra_data,proto3" json:"block_extra_data,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + BlockHash []string `protobuf:"bytes,2,rep,name=block_hash,proto3" json:"block_hash,omitempty"` + BlockNumber []int64 `protobuf:"varint,3,rep,packed,name=block_number,proto3" json:"block_number,omitempty"` + Network []string `protobuf:"bytes,4,rep,name=network,proto3" json:"network,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` + ExecutionImplementation []string `protobuf:"bytes,6,rep,name=execution_implementation,proto3" json:"execution_implementation,omitempty"` + BlockExtraData []string `protobuf:"bytes,7,rep,name=block_extra_data,proto3" json:"block_extra_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueExecutionBadBlockValuesResponse) Reset() { *x = ListUniqueExecutionBadBlockValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueExecutionBadBlockValuesResponse) String() string { @@ -4311,8 +4785,8 @@ func (x *ListUniqueExecutionBadBlockValuesResponse) String() string { func (*ListUniqueExecutionBadBlockValuesResponse) ProtoMessage() {} func (x *ListUniqueExecutionBadBlockValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[50] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[57] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4324,7 +4798,7 @@ func (x *ListUniqueExecutionBadBlockValuesResponse) ProtoReflect() protoreflect. // Deprecated: Use ListUniqueExecutionBadBlockValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueExecutionBadBlockValuesResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{50} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{57} } func (x *ListUniqueExecutionBadBlockValuesResponse) GetNode() []string { @@ -4376,1813 +4850,828 @@ func (x *ListUniqueExecutionBadBlockValuesResponse) GetBlockExtraData() []string return nil } -var File_api_api_proto protoreflect.FileDescriptor - -var file_api_api_proto_rawDesc = []byte{ - 0x0a, 0x0d, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x03, 0x61, 0x70, 0x69, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9b, 0x04, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 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, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, - 0x6c, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3c, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x52, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x62, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x04, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 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, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x12, - 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3c, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, - 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, - 0x6f, 0x6f, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x52, 0x0a, - 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x9e, 0x04, 0x0a, 0x0e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 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, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3c, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x52, - 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0xd1, 0x04, 0x0a, 0x0d, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 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, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3c, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x52, - 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x84, 0x04, 0x0a, 0x13, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x2c, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x3a, - 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 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, 0x0a, - 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x3f, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x12, 0x58, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0c, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xcc, 0x04, - 0x0a, 0x11, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 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, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x12, - 0x3c, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x3f, 0x0a, - 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x36, - 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x58, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x40, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, - 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5b, 0x0a, 0x10, - 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x19, - 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0x12, 0x0a, 0x10, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x38, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x39, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x2f, 0x0a, 0x08, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, - 0x75, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, - 0x75, 0x6d, 0x22, 0x6c, 0x0a, 0x0e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, - 0x65, 0x75, 0x6d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x26, 0x0a, 0x05, 0x74, 0x6f, 0x6f, 0x6c, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x6f, - 0x6f, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x74, 0x6f, 0x6f, 0x6c, 0x73, - 0x22, 0x63, 0x0a, 0x15, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, - 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, - 0x68, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x8e, 0x01, 0x0a, 0x0b, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x63, 0x6c, 0x69, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x6e, - 0x63, 0x6c, 0x69, 0x12, 0x2c, 0x0a, 0x04, 0x6c, 0x63, 0x6c, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x6c, 0x63, 0x6c, - 0x69, 0x12, 0x23, 0x0a, 0x04, 0x7a, 0x63, 0x6c, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x5a, 0x63, 0x6c, 0x69, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x04, 0x7a, 0x63, 0x6c, 0x69, 0x22, 0x4d, 0x0a, 0x13, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x0a, - 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x16, 0x0a, - 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, - 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x20, 0x0a, 0x0a, 0x5a, 0x63, 0x6c, 0x69, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x66, 0x6f, 0x72, 0x6b, 0x22, 0x97, 0x03, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, - 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, - 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, - 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, - 0x66, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x62, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x51, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0d, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x17, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, - 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, - 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 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, 0x06, - 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x22, 0x4e, 0x0a, 0x18, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xdd, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, - 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x45, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x70, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, - 0x08, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x10, 0x02, 0x12, 0x0e, - 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x10, 0x03, 0x12, 0x10, - 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x04, - 0x12, 0x0b, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x05, 0x12, 0x19, 0x0a, - 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x06, 0x22, 0xf7, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, - 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, - 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, - 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x97, 0x03, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, - 0x6f, 0x72, 0x65, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, - 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, - 0x35, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, - 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x51, 0x0a, 0x17, - 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0d, 0x62, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x0d, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, - 0xd1, 0x02, 0x0a, 0x17, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, - 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, - 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, - 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, - 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, - 0x74, 0x65, 0x72, 0x22, 0x4e, 0x0a, 0x18, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x32, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0xdd, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, - 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x06, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x22, 0x70, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x10, 0x01, 0x12, 0x09, - 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x10, 0x06, 0x22, 0xf7, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, - 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x04, 0x73, - 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, - 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9a, 0x03, - 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, - 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, - 0x65, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, - 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, - 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5f, 0x0a, 0x1a, 0x4c, 0x69, - 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x11, 0x62, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x11, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x62, 0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0xd4, 0x02, 0x0a, 0x1a, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, - 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x06, - 0x62, 0x65, 0x66, 0x6f, 0x72, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, - 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, 0x74, - 0x65, 0x72, 0x22, 0x51, 0x0a, 0x1b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x32, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe3, 0x01, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, - 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x48, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x70, 0x0a, 0x05, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, - 0x73, 0x6c, 0x6f, 0x74, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x10, - 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x10, - 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x05, - 0x12, 0x19, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x06, 0x22, 0xfa, 0x01, 0x0a, 0x26, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, - 0x6f, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xcd, 0x03, 0x0a, 0x18, 0x4c, 0x69, 0x73, - 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, - 0x6f, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 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, 0x06, 0x62, - 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, - 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, - 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x62, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x5b, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x10, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, - 0x62, 0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x62, 0x52, 0x10, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x64, 0x5f, - 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x22, 0x87, 0x03, 0x0a, 0x19, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, - 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x34, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, - 0x65, 0x72, 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, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, - 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, - 0x50, 0x0a, 0x1a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, - 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, - 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0xec, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x06, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x22, 0x7b, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x10, 0x01, - 0x12, 0x09, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x04, 0x12, 0x0b, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x62, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x10, 0x07, - 0x22, 0x8f, 0x02, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, - 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x22, 0x9f, 0x03, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, - 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, - 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, - 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x73, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x16, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, - 0x65, 0x52, 0x16, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x22, 0xd8, 0x02, 0x0a, 0x1f, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x3a, - 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, - 0x66, 0x6f, 0x72, 0x65, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, - 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, - 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x56, 0x0a, 0x20, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xed, 0x01, 0x0a, - 0x2a, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x06, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x70, 0x0a, 0x05, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x10, 0x00, 0x12, 0x0e, 0x0a, - 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x10, 0x01, 0x12, 0x10, 0x0a, - 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x10, 0x02, 0x12, - 0x0b, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x04, 0x12, 0x1c, - 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x05, 0x22, 0xff, 0x01, 0x0a, - 0x2b, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x22, - 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc9, - 0x03, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 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, 0x06, 0x62, - 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, - 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, - 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, - 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6b, 0x0a, 0x1d, 0x4c, 0x69, - 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x14, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x52, 0x14, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x64, - 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x82, 0x03, 0x0a, 0x1d, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, - 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, - 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x3a, 0x0a, 0x18, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, - 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, - 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x22, 0x54, 0x0a, 0x1e, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, - 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x80, 0x02, 0x0a, 0x28, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, - 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x4b, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x86, 0x01, 0x0a, - 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x10, 0x00, - 0x12, 0x0e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x10, 0x01, - 0x12, 0x10, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x03, 0x12, - 0x10, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, - 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x05, 0x12, - 0x14, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x10, 0x06, 0x22, 0xa9, 0x02, 0x0a, 0x29, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, - 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0c, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x18, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x18, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, - 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x32, 0xfa, 0x0e, 0x0a, 0x03, 0x41, 0x50, 0x49, 0x12, 0x3c, 0x0a, 0x09, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x10, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x1b, 0x4c, 0x69, - 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, - 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, - 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, - 0x0a, 0x10, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x72, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, - 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1e, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, - 0x0a, 0x13, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x1e, 0x4c, 0x69, - 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, - 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, - 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x1d, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, - 0x12, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x62, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, - 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, - 0x62, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, - 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, - 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x66, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x18, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x12, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, - 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x8a, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, - 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x60, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x63, 0x0a, 0x16, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x22, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2d, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x36, - 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, - 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x6f, 0x6f, 0x72, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x6f, - 0x6f, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +var File_pkg_proto_tracoor_api_api_proto protoreflect.FileDescriptor + +const file_pkg_proto_tracoor_api_api_proto_rawDesc = "" + + "\n" + + "\x1fpkg/proto/tracoor/api/api.proto\x12\x03api\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x9b\x04\n" + + "\vBeaconState\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x12:\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "fetched_at\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12<\n" + + "\n" + + "state_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "state_root\x12@\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\fnode_version\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12R\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x15beacon_implementation\"\x9b\x04\n" + + "\vBeaconBlock\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x12:\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "fetched_at\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12<\n" + + "\n" + + "block_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "block_root\x12@\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\fnode_version\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12R\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x15beacon_implementation\"\xa8\x04\n" + + "\x18ExecutionPayloadEnvelope\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x12:\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "fetched_at\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12<\n" + + "\n" + + "block_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "block_root\x12@\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\fnode_version\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12R\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x15beacon_implementation\"\x9e\x04\n" + + "\x0eBeaconBadBlock\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x12:\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "fetched_at\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12<\n" + + "\n" + + "block_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "block_root\x12@\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\fnode_version\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12R\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x15beacon_implementation\"\xd1\x04\n" + + "\rBeaconBadBlob\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x12:\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "fetched_at\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12<\n" + + "\n" + + "block_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "block_root\x12@\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\fnode_version\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12R\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x15beacon_implementation\x122\n" + + "\x05index\x18\n" + + " \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05index\"\x84\x04\n" + + "\x13ExecutionBlockTrace\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x12:\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "fetched_at\x12<\n" + + "\n" + + "block_hash\x18\x04 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "block_hash\x12?\n" + + "\fblock_number\x18\x05 \x01(\v2\x1b.google.protobuf.Int64ValueR\fblock_number\x126\n" + + "\anetwork\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12X\n" + + "\x18execution_implementation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\x18execution_implementation\x12@\n" + + "\fnode_version\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\fnode_version\"\xcc\x04\n" + + "\x11ExecutionBadBlock\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x12:\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "fetched_at\x12<\n" + + "\n" + + "block_hash\x18\x04 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "block_hash\x12?\n" + + "\fblock_number\x18\x05 \x01(\v2\x1b.google.protobuf.Int64ValueR\fblock_number\x126\n" + + "\anetwork\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12X\n" + + "\x18execution_implementation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\x18execution_implementation\x12@\n" + + "\fnode_version\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\fnode_version\x12H\n" + + "\x10block_extra_data\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x10block_extra_data\"[\n" + + "\x10PaginationCursor\x12\x14\n" + + "\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x02 \x01(\x05R\x06offset\x12\x19\n" + + "\border_by\x18\x03 \x01(\tR\aorderBy\"\x12\n" + + "\x10GetConfigRequest\"8\n" + + "\x11GetConfigResponse\x12#\n" + + "\x06config\x18\x01 \x01(\v2\v.api.ConfigR\x06config\"9\n" + + "\x06Config\x12/\n" + + "\bethereum\x18\x01 \x01(\v2\x13.api.EthereumConfigR\bethereum\"l\n" + + "\x0eEthereumConfig\x122\n" + + "\x06config\x18\x01 \x01(\v2\x1a.api.EthereumNetworkConfigR\x06config\x12&\n" + + "\x05tools\x18\x02 \x01(\v2\x10.api.ToolsConfigR\x05tools\"c\n" + + "\x15EthereumNetworkConfig\x12\x1e\n" + + "\n" + + "repository\x18\x01 \x01(\tR\n" + + "repository\x12\x16\n" + + "\x06branch\x18\x02 \x01(\tR\x06branch\x12\x12\n" + + "\x04path\x18\x03 \x01(\tR\x04path\"\x8e\x01\n" + + "\vToolsConfig\x12,\n" + + "\x04ncli\x18\x01 \x01(\v2\x18.api.GitRepositoryConfigR\x04ncli\x12,\n" + + "\x04lcli\x18\x02 \x01(\v2\x18.api.GitRepositoryConfigR\x04lcli\x12#\n" + + "\x04zcli\x18\x03 \x01(\v2\x0f.api.ZcliConfigR\x04zcli\"M\n" + + "\x13GitRepositoryConfig\x12\x1e\n" + + "\n" + + "repository\x18\x01 \x01(\tR\n" + + "repository\x12\x16\n" + + "\x06branch\x18\x02 \x01(\tR\x06branch\" \n" + + "\n" + + "ZcliConfig\x12\x12\n" + + "\x04fork\x18\x01 \x01(\tR\x04fork\"\x97\x03\n" + + "\x16ListBeaconStateRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "state_root\x18\x04 \x01(\tR\n" + + "state_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x125\n" + + "\n" + + "pagination\x18\t \x01(\v2\x15.api.PaginationCursorR\n" + + "pagination\x124\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x15beacon_implementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\"Q\n" + + "\x17ListBeaconStateResponse\x126\n" + + "\rbeacon_states\x18\x01 \x03(\v2\x10.api.BeaconStateR\rbeacon_states\"\xd1\x02\n" + + "\x17CountBeaconStateRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "state_root\x18\x04 \x01(\tR\n" + + "state_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x01(\tR\x15beacon_implementation\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\"N\n" + + "\x18CountBeaconStateResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xdd\x01\n" + + "\"ListUniqueBeaconStateValuesRequest\x12E\n" + + "\x06fields\x18\x01 \x03(\x0e2-.api.ListUniqueBeaconStateValuesRequest.FieldR\x06fields\"p\n" + + "\x05Field\x12\b\n" + + "\x04node\x10\x00\x12\b\n" + + "\x04slot\x10\x01\x12\t\n" + + "\x05epoch\x10\x02\x12\x0e\n" + + "\n" + + "state_root\x10\x03\x12\x10\n" + + "\fnode_version\x10\x04\x12\v\n" + + "\anetwork\x10\x05\x12\x19\n" + + "\x15beacon_implementation\x10\x06\"\xf7\x01\n" + + "#ListUniqueBeaconStateValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "state_root\x18\x04 \x03(\tR\n" + + "state_root\x12\"\n" + + "\fnode_version\x18\x05 \x03(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x03(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x03(\tR\x15beacon_implementation\"\x97\x03\n" + + "\x16ListBeaconBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x125\n" + + "\n" + + "pagination\x18\t \x01(\v2\x15.api.PaginationCursorR\n" + + "pagination\x124\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x15beacon_implementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\"Q\n" + + "\x17ListBeaconBlockResponse\x126\n" + + "\rbeacon_blocks\x18\x01 \x03(\v2\x10.api.BeaconBlockR\rbeacon_blocks\"\xd1\x02\n" + + "\x17CountBeaconBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x01(\tR\x15beacon_implementation\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\"N\n" + + "\x18CountBeaconBlockResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xdd\x01\n" + + "\"ListUniqueBeaconBlockValuesRequest\x12E\n" + + "\x06fields\x18\x01 \x03(\x0e2-.api.ListUniqueBeaconBlockValuesRequest.FieldR\x06fields\"p\n" + + "\x05Field\x12\b\n" + + "\x04node\x10\x00\x12\b\n" + + "\x04slot\x10\x01\x12\t\n" + + "\x05epoch\x10\x02\x12\x0e\n" + + "\n" + + "block_root\x10\x03\x12\x10\n" + + "\fnode_version\x10\x04\x12\v\n" + + "\anetwork\x10\x05\x12\x19\n" + + "\x15beacon_implementation\x10\x06\"\xf7\x01\n" + + "#ListUniqueBeaconBlockValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x03(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x03(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x03(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x03(\tR\x15beacon_implementation\"\xa4\x03\n" + + "#ListExecutionPayloadEnvelopeRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x125\n" + + "\n" + + "pagination\x18\t \x01(\v2\x15.api.PaginationCursorR\n" + + "pagination\x124\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x15beacon_implementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\"\x87\x01\n" + + "$ListExecutionPayloadEnvelopeResponse\x12_\n" + + "\x1bexecution_payload_envelopes\x18\x01 \x03(\v2\x1d.api.ExecutionPayloadEnvelopeR\x1bexecution_payload_envelopes\"\xde\x02\n" + + "$CountExecutionPayloadEnvelopeRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x01(\tR\x15beacon_implementation\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\"[\n" + + "%CountExecutionPayloadEnvelopeResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xf7\x01\n" + + "/ListUniqueExecutionPayloadEnvelopeValuesRequest\x12R\n" + + "\x06fields\x18\x01 \x03(\x0e2:.api.ListUniqueExecutionPayloadEnvelopeValuesRequest.FieldR\x06fields\"p\n" + + "\x05Field\x12\b\n" + + "\x04node\x10\x00\x12\b\n" + + "\x04slot\x10\x01\x12\t\n" + + "\x05epoch\x10\x02\x12\x0e\n" + + "\n" + + "block_root\x10\x03\x12\x10\n" + + "\fnode_version\x10\x04\x12\v\n" + + "\anetwork\x10\x05\x12\x19\n" + + "\x15beacon_implementation\x10\x06\"\x84\x02\n" + + "0ListUniqueExecutionPayloadEnvelopeValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x03(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x03(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x03(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x03(\tR\x15beacon_implementation\"\x9a\x03\n" + + "\x19ListBeaconBadBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x125\n" + + "\n" + + "pagination\x18\t \x01(\v2\x15.api.PaginationCursorR\n" + + "pagination\x124\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x15beacon_implementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\"_\n" + + "\x1aListBeaconBadBlockResponse\x12A\n" + + "\x11beacon_bad_blocks\x18\x01 \x03(\v2\x13.api.BeaconBadBlockR\x11beacon_bad_blocks\"\xd4\x02\n" + + "\x1aCountBeaconBadBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x01(\tR\x15beacon_implementation\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\"Q\n" + + "\x1bCountBeaconBadBlockResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xe3\x01\n" + + "%ListUniqueBeaconBadBlockValuesRequest\x12H\n" + + "\x06fields\x18\x01 \x03(\x0e20.api.ListUniqueBeaconBadBlockValuesRequest.FieldR\x06fields\"p\n" + + "\x05Field\x12\b\n" + + "\x04node\x10\x00\x12\b\n" + + "\x04slot\x10\x01\x12\t\n" + + "\x05epoch\x10\x02\x12\x0e\n" + + "\n" + + "block_root\x10\x03\x12\x10\n" + + "\fnode_version\x10\x04\x12\v\n" + + "\anetwork\x10\x05\x12\x19\n" + + "\x15beacon_implementation\x10\x06\"\xfa\x01\n" + + "&ListUniqueBeaconBadBlockValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x03(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x03(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x03(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x03(\tR\x15beacon_implementation\"\xcd\x03\n" + + "\x18ListBeaconBadBlobRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x125\n" + + "\n" + + "pagination\x18\t \x01(\v2\x15.api.PaginationCursorR\n" + + "pagination\x124\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x15beacon_implementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x122\n" + + "\x05index\x18\f \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05index\"[\n" + + "\x19ListBeaconBadBlobResponse\x12>\n" + + "\x10beacon_bad_blobs\x18\x01 \x03(\v2\x12.api.BeaconBadBlobR\x10beacon_bad_blobs\"\x87\x03\n" + + "\x19CountBeaconBadBlobRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x01(\tR\x15beacon_implementation\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x122\n" + + "\x05index\x18\n" + + " \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05index\"P\n" + + "\x1aCountBeaconBadBlobResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xec\x01\n" + + "$ListUniqueBeaconBadBlobValuesRequest\x12G\n" + + "\x06fields\x18\x01 \x03(\x0e2/.api.ListUniqueBeaconBadBlobValuesRequest.FieldR\x06fields\"{\n" + + "\x05Field\x12\b\n" + + "\x04node\x10\x00\x12\b\n" + + "\x04slot\x10\x01\x12\t\n" + + "\x05epoch\x10\x02\x12\x0e\n" + + "\n" + + "block_root\x10\x03\x12\x10\n" + + "\fnode_version\x10\x04\x12\v\n" + + "\anetwork\x10\x05\x12\x19\n" + + "\x15beacon_implementation\x10\x06\x12\t\n" + + "\x05index\x10\a\"\x8f\x02\n" + + "%ListUniqueBeaconBadBlobValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x03(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x03(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x03(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x03(\tR\x15beacon_implementation\x12\x14\n" + + "\x05index\x18\b \x03(\x04R\x05index\"\x9f\x03\n" + + "\x1eListExecutionBlockTraceRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\"\n" + + "\fblock_number\x18\x02 \x01(\x03R\fblock_number\x12\x1e\n" + + "\n" + + "block_hash\x18\x03 \x01(\tR\n" + + "block_hash\x12\x18\n" + + "\anetwork\x18\x05 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x125\n" + + "\n" + + "pagination\x18\b \x01(\v2\x15.api.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\t \x01(\tR\x02id\x12:\n" + + "\x18execution_implementation\x18\n" + + " \x01(\tR\x18execution_implementation\x12\"\n" + + "\fnode_version\x18\v \x01(\tR\fnode_version\"s\n" + + "\x1fListExecutionBlockTraceResponse\x12P\n" + + "\x16execution_block_traces\x18\x01 \x03(\v2\x18.api.ExecutionBlockTraceR\x16execution_block_traces\"\xd8\x02\n" + + "\x1fCountExecutionBlockTraceRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\"\n" + + "\fblock_number\x18\x02 \x01(\x03R\fblock_number\x12\x1d\n" + + "\n" + + "block_hash\x18\x03 \x01(\tR\tblockHash\x12\x18\n" + + "\anetwork\x18\x05 \x01(\tR\anetwork\x12:\n" + + "\x18execution_implementation\x18\x06 \x01(\tR\x18execution_implementation\x122\n" + + "\x06before\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x12\"\n" + + "\fnode_version\x18\t \x01(\tR\fnode_version\"V\n" + + " CountExecutionBlockTraceResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xed\x01\n" + + "*ListUniqueExecutionBlockTraceValuesRequest\x12M\n" + + "\x06fields\x18\x01 \x03(\x0e25.api.ListUniqueExecutionBlockTraceValuesRequest.FieldR\x06fields\"p\n" + + "\x05Field\x12\b\n" + + "\x04node\x10\x00\x12\x0e\n" + + "\n" + + "block_hash\x10\x01\x12\x10\n" + + "\fblock_number\x10\x02\x12\v\n" + + "\anetwork\x10\x03\x12\x10\n" + + "\fnode_version\x10\x04\x12\x1c\n" + + "\x18execution_implementation\x10\x05\"\xff\x01\n" + + "+ListUniqueExecutionBlockTraceValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x1e\n" + + "\n" + + "block_hash\x18\x02 \x03(\tR\n" + + "block_hash\x12\"\n" + + "\fblock_number\x18\x03 \x03(\x03R\fblock_number\x12\x18\n" + + "\anetwork\x18\x04 \x03(\tR\anetwork\x12\"\n" + + "\fnode_version\x18\x05 \x03(\tR\fnode_version\x12:\n" + + "\x18execution_implementation\x18\x06 \x03(\tR\x18execution_implementation\"\xc9\x03\n" + + "\x1cListExecutionBadBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\"\n" + + "\fblock_number\x18\x02 \x01(\x03R\fblock_number\x12\x1e\n" + + "\n" + + "block_hash\x18\x03 \x01(\tR\n" + + "block_hash\x12\x18\n" + + "\anetwork\x18\x05 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x125\n" + + "\n" + + "pagination\x18\b \x01(\v2\x15.api.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\t \x01(\tR\x02id\x12:\n" + + "\x18execution_implementation\x18\n" + + " \x01(\tR\x18execution_implementation\x12\"\n" + + "\fnode_version\x18\v \x01(\tR\fnode_version\x12*\n" + + "\x10block_extra_data\x18\f \x01(\tR\x10block_extra_data\"k\n" + + "\x1dListExecutionBadBlockResponse\x12J\n" + + "\x14execution_bad_blocks\x18\x01 \x03(\v2\x16.api.ExecutionBadBlockR\x14execution_bad_blocks\"\x82\x03\n" + + "\x1dCountExecutionBadBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\"\n" + + "\fblock_number\x18\x02 \x01(\x03R\fblock_number\x12\x1d\n" + + "\n" + + "block_hash\x18\x03 \x01(\tR\tblockHash\x12\x18\n" + + "\anetwork\x18\x05 \x01(\tR\anetwork\x12:\n" + + "\x18execution_implementation\x18\x06 \x01(\tR\x18execution_implementation\x122\n" + + "\x06before\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x12\"\n" + + "\fnode_version\x18\t \x01(\tR\fnode_version\x12*\n" + + "\x10block_extra_data\x18\n" + + " \x01(\tR\x10block_extra_data\"T\n" + + "\x1eCountExecutionBadBlockResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\x80\x02\n" + + "(ListUniqueExecutionBadBlockValuesRequest\x12K\n" + + "\x06fields\x18\x01 \x03(\x0e23.api.ListUniqueExecutionBadBlockValuesRequest.FieldR\x06fields\"\x86\x01\n" + + "\x05Field\x12\b\n" + + "\x04node\x10\x00\x12\x0e\n" + + "\n" + + "block_hash\x10\x01\x12\x10\n" + + "\fblock_number\x10\x02\x12\v\n" + + "\anetwork\x10\x03\x12\x10\n" + + "\fnode_version\x10\x04\x12\x1c\n" + + "\x18execution_implementation\x10\x05\x12\x14\n" + + "\x10block_extra_data\x10\x06\"\xa9\x02\n" + + ")ListUniqueExecutionBadBlockValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x1e\n" + + "\n" + + "block_hash\x18\x02 \x03(\tR\n" + + "block_hash\x12\"\n" + + "\fblock_number\x18\x03 \x03(\x03R\fblock_number\x12\x18\n" + + "\anetwork\x18\x04 \x03(\tR\anetwork\x12\"\n" + + "\fnode_version\x18\x05 \x03(\tR\fnode_version\x12:\n" + + "\x18execution_implementation\x18\x06 \x03(\tR\x18execution_implementation\x12*\n" + + "\x10block_extra_data\x18\a \x03(\tR\x10block_extra_data2\x87\x12\n" + + "\x03API\x12<\n" + + "\tGetConfig\x12\x15.api.GetConfigRequest\x1a\x16.api.GetConfigResponse\"\x00\x12N\n" + + "\x0fListBeaconState\x12\x1b.api.ListBeaconStateRequest\x1a\x1c.api.ListBeaconStateResponse\"\x00\x12Q\n" + + "\x10CountBeaconState\x12\x1c.api.CountBeaconStateRequest\x1a\x1d.api.CountBeaconStateResponse\"\x00\x12r\n" + + "\x1bListUniqueBeaconStateValues\x12'.api.ListUniqueBeaconStateValuesRequest\x1a(.api.ListUniqueBeaconStateValuesResponse\"\x00\x12N\n" + + "\x0fListBeaconBlock\x12\x1b.api.ListBeaconBlockRequest\x1a\x1c.api.ListBeaconBlockResponse\"\x00\x12Q\n" + + "\x10CountBeaconBlock\x12\x1c.api.CountBeaconBlockRequest\x1a\x1d.api.CountBeaconBlockResponse\"\x00\x12r\n" + + "\x1bListUniqueBeaconBlockValues\x12'.api.ListUniqueBeaconBlockValuesRequest\x1a(.api.ListUniqueBeaconBlockValuesResponse\"\x00\x12u\n" + + "\x1cListExecutionPayloadEnvelope\x12(.api.ListExecutionPayloadEnvelopeRequest\x1a).api.ListExecutionPayloadEnvelopeResponse\"\x00\x12x\n" + + "\x1dCountExecutionPayloadEnvelope\x12).api.CountExecutionPayloadEnvelopeRequest\x1a*.api.CountExecutionPayloadEnvelopeResponse\"\x00\x12\x99\x01\n" + + "(ListUniqueExecutionPayloadEnvelopeValues\x124.api.ListUniqueExecutionPayloadEnvelopeValuesRequest\x1a5.api.ListUniqueExecutionPayloadEnvelopeValuesResponse\"\x00\x12W\n" + + "\x12ListBeaconBadBlock\x12\x1e.api.ListBeaconBadBlockRequest\x1a\x1f.api.ListBeaconBadBlockResponse\"\x00\x12Z\n" + + "\x13CountBeaconBadBlock\x12\x1f.api.CountBeaconBadBlockRequest\x1a .api.CountBeaconBadBlockResponse\"\x00\x12{\n" + + "\x1eListUniqueBeaconBadBlockValues\x12*.api.ListUniqueBeaconBadBlockValuesRequest\x1a+.api.ListUniqueBeaconBadBlockValuesResponse\"\x00\x12T\n" + + "\x11ListBeaconBadBlob\x12\x1d.api.ListBeaconBadBlobRequest\x1a\x1e.api.ListBeaconBadBlobResponse\"\x00\x12W\n" + + "\x12CountBeaconBadBlob\x12\x1e.api.CountBeaconBadBlobRequest\x1a\x1f.api.CountBeaconBadBlobResponse\"\x00\x12x\n" + + "\x1dListUniqueBeaconBadBlobValues\x12).api.ListUniqueBeaconBadBlobValuesRequest\x1a*.api.ListUniqueBeaconBadBlobValuesResponse\"\x00\x12f\n" + + "\x17ListExecutionBlockTrace\x12#.api.ListExecutionBlockTraceRequest\x1a$.api.ListExecutionBlockTraceResponse\"\x00\x12i\n" + + "\x18CountExecutionBlockTrace\x12$.api.CountExecutionBlockTraceRequest\x1a%.api.CountExecutionBlockTraceResponse\"\x00\x12\x8a\x01\n" + + "#ListUniqueExecutionBlockTraceValues\x12/.api.ListUniqueExecutionBlockTraceValuesRequest\x1a0.api.ListUniqueExecutionBlockTraceValuesResponse\"\x00\x12`\n" + + "\x15ListExecutionBadBlock\x12!.api.ListExecutionBadBlockRequest\x1a\".api.ListExecutionBadBlockResponse\"\x00\x12c\n" + + "\x16CountExecutionBadBlock\x12\".api.CountExecutionBadBlockRequest\x1a#.api.CountExecutionBadBlockResponse\"\x00\x12\x84\x01\n" + + "!ListUniqueExecutionBadBlockValues\x12-.api.ListUniqueExecutionBadBlockValuesRequest\x1a..api.ListUniqueExecutionBadBlockValuesResponse\"\x00B6Z4github.com/ethpandaops/tracoor/pkg/proto/tracoor/apib\x06proto3" var ( - file_api_api_proto_rawDescOnce sync.Once - file_api_api_proto_rawDescData = file_api_api_proto_rawDesc + file_pkg_proto_tracoor_api_api_proto_rawDescOnce sync.Once + file_pkg_proto_tracoor_api_api_proto_rawDescData []byte ) -func file_api_api_proto_rawDescGZIP() []byte { - file_api_api_proto_rawDescOnce.Do(func() { - file_api_api_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_api_proto_rawDescData) +func file_pkg_proto_tracoor_api_api_proto_rawDescGZIP() []byte { + file_pkg_proto_tracoor_api_api_proto_rawDescOnce.Do(func() { + file_pkg_proto_tracoor_api_api_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_pkg_proto_tracoor_api_api_proto_rawDesc), len(file_pkg_proto_tracoor_api_api_proto_rawDesc))) }) - return file_api_api_proto_rawDescData -} - -var file_api_api_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_api_api_proto_msgTypes = make([]protoimpl.MessageInfo, 51) -var file_api_api_proto_goTypes = []interface{}{ - (ListUniqueBeaconStateValuesRequest_Field)(0), // 0: api.ListUniqueBeaconStateValuesRequest.Field - (ListUniqueBeaconBlockValuesRequest_Field)(0), // 1: api.ListUniqueBeaconBlockValuesRequest.Field - (ListUniqueBeaconBadBlockValuesRequest_Field)(0), // 2: api.ListUniqueBeaconBadBlockValuesRequest.Field - (ListUniqueBeaconBadBlobValuesRequest_Field)(0), // 3: api.ListUniqueBeaconBadBlobValuesRequest.Field - (ListUniqueExecutionBlockTraceValuesRequest_Field)(0), // 4: api.ListUniqueExecutionBlockTraceValuesRequest.Field - (ListUniqueExecutionBadBlockValuesRequest_Field)(0), // 5: api.ListUniqueExecutionBadBlockValuesRequest.Field - (*BeaconState)(nil), // 6: api.BeaconState - (*BeaconBlock)(nil), // 7: api.BeaconBlock - (*BeaconBadBlock)(nil), // 8: api.BeaconBadBlock - (*BeaconBadBlob)(nil), // 9: api.BeaconBadBlob - (*ExecutionBlockTrace)(nil), // 10: api.ExecutionBlockTrace - (*ExecutionBadBlock)(nil), // 11: api.ExecutionBadBlock - (*PaginationCursor)(nil), // 12: api.PaginationCursor - (*GetConfigRequest)(nil), // 13: api.GetConfigRequest - (*GetConfigResponse)(nil), // 14: api.GetConfigResponse - (*Config)(nil), // 15: api.Config - (*EthereumConfig)(nil), // 16: api.EthereumConfig - (*EthereumNetworkConfig)(nil), // 17: api.EthereumNetworkConfig - (*ToolsConfig)(nil), // 18: api.ToolsConfig - (*GitRepositoryConfig)(nil), // 19: api.GitRepositoryConfig - (*ZcliConfig)(nil), // 20: api.ZcliConfig - (*ListBeaconStateRequest)(nil), // 21: api.ListBeaconStateRequest - (*ListBeaconStateResponse)(nil), // 22: api.ListBeaconStateResponse - (*CountBeaconStateRequest)(nil), // 23: api.CountBeaconStateRequest - (*CountBeaconStateResponse)(nil), // 24: api.CountBeaconStateResponse - (*ListUniqueBeaconStateValuesRequest)(nil), // 25: api.ListUniqueBeaconStateValuesRequest - (*ListUniqueBeaconStateValuesResponse)(nil), // 26: api.ListUniqueBeaconStateValuesResponse - (*ListBeaconBlockRequest)(nil), // 27: api.ListBeaconBlockRequest - (*ListBeaconBlockResponse)(nil), // 28: api.ListBeaconBlockResponse - (*CountBeaconBlockRequest)(nil), // 29: api.CountBeaconBlockRequest - (*CountBeaconBlockResponse)(nil), // 30: api.CountBeaconBlockResponse - (*ListUniqueBeaconBlockValuesRequest)(nil), // 31: api.ListUniqueBeaconBlockValuesRequest - (*ListUniqueBeaconBlockValuesResponse)(nil), // 32: api.ListUniqueBeaconBlockValuesResponse - (*ListBeaconBadBlockRequest)(nil), // 33: api.ListBeaconBadBlockRequest - (*ListBeaconBadBlockResponse)(nil), // 34: api.ListBeaconBadBlockResponse - (*CountBeaconBadBlockRequest)(nil), // 35: api.CountBeaconBadBlockRequest - (*CountBeaconBadBlockResponse)(nil), // 36: api.CountBeaconBadBlockResponse - (*ListUniqueBeaconBadBlockValuesRequest)(nil), // 37: api.ListUniqueBeaconBadBlockValuesRequest - (*ListUniqueBeaconBadBlockValuesResponse)(nil), // 38: api.ListUniqueBeaconBadBlockValuesResponse - (*ListBeaconBadBlobRequest)(nil), // 39: api.ListBeaconBadBlobRequest - (*ListBeaconBadBlobResponse)(nil), // 40: api.ListBeaconBadBlobResponse - (*CountBeaconBadBlobRequest)(nil), // 41: api.CountBeaconBadBlobRequest - (*CountBeaconBadBlobResponse)(nil), // 42: api.CountBeaconBadBlobResponse - (*ListUniqueBeaconBadBlobValuesRequest)(nil), // 43: api.ListUniqueBeaconBadBlobValuesRequest - (*ListUniqueBeaconBadBlobValuesResponse)(nil), // 44: api.ListUniqueBeaconBadBlobValuesResponse - (*ListExecutionBlockTraceRequest)(nil), // 45: api.ListExecutionBlockTraceRequest - (*ListExecutionBlockTraceResponse)(nil), // 46: api.ListExecutionBlockTraceResponse - (*CountExecutionBlockTraceRequest)(nil), // 47: api.CountExecutionBlockTraceRequest - (*CountExecutionBlockTraceResponse)(nil), // 48: api.CountExecutionBlockTraceResponse - (*ListUniqueExecutionBlockTraceValuesRequest)(nil), // 49: api.ListUniqueExecutionBlockTraceValuesRequest - (*ListUniqueExecutionBlockTraceValuesResponse)(nil), // 50: api.ListUniqueExecutionBlockTraceValuesResponse - (*ListExecutionBadBlockRequest)(nil), // 51: api.ListExecutionBadBlockRequest - (*ListExecutionBadBlockResponse)(nil), // 52: api.ListExecutionBadBlockResponse - (*CountExecutionBadBlockRequest)(nil), // 53: api.CountExecutionBadBlockRequest - (*CountExecutionBadBlockResponse)(nil), // 54: api.CountExecutionBadBlockResponse - (*ListUniqueExecutionBadBlockValuesRequest)(nil), // 55: api.ListUniqueExecutionBadBlockValuesRequest - (*ListUniqueExecutionBadBlockValuesResponse)(nil), // 56: api.ListUniqueExecutionBadBlockValuesResponse - (*wrapperspb.StringValue)(nil), // 57: google.protobuf.StringValue - (*timestamppb.Timestamp)(nil), // 58: google.protobuf.Timestamp - (*wrapperspb.UInt64Value)(nil), // 59: google.protobuf.UInt64Value - (*wrapperspb.Int64Value)(nil), // 60: google.protobuf.Int64Value -} -var file_api_api_proto_depIdxs = []int32{ - 57, // 0: api.BeaconState.id:type_name -> google.protobuf.StringValue - 57, // 1: api.BeaconState.node:type_name -> google.protobuf.StringValue - 58, // 2: api.BeaconState.fetched_at:type_name -> google.protobuf.Timestamp - 59, // 3: api.BeaconState.slot:type_name -> google.protobuf.UInt64Value - 59, // 4: api.BeaconState.epoch:type_name -> google.protobuf.UInt64Value - 57, // 5: api.BeaconState.state_root:type_name -> google.protobuf.StringValue - 57, // 6: api.BeaconState.node_version:type_name -> google.protobuf.StringValue - 57, // 7: api.BeaconState.network:type_name -> google.protobuf.StringValue - 57, // 8: api.BeaconState.beacon_implementation:type_name -> google.protobuf.StringValue - 57, // 9: api.BeaconBlock.id:type_name -> google.protobuf.StringValue - 57, // 10: api.BeaconBlock.node:type_name -> google.protobuf.StringValue - 58, // 11: api.BeaconBlock.fetched_at:type_name -> google.protobuf.Timestamp - 59, // 12: api.BeaconBlock.slot:type_name -> google.protobuf.UInt64Value - 59, // 13: api.BeaconBlock.epoch:type_name -> google.protobuf.UInt64Value - 57, // 14: api.BeaconBlock.block_root:type_name -> google.protobuf.StringValue - 57, // 15: api.BeaconBlock.node_version:type_name -> google.protobuf.StringValue - 57, // 16: api.BeaconBlock.network:type_name -> google.protobuf.StringValue - 57, // 17: api.BeaconBlock.beacon_implementation:type_name -> google.protobuf.StringValue - 57, // 18: api.BeaconBadBlock.id:type_name -> google.protobuf.StringValue - 57, // 19: api.BeaconBadBlock.node:type_name -> google.protobuf.StringValue - 58, // 20: api.BeaconBadBlock.fetched_at:type_name -> google.protobuf.Timestamp - 59, // 21: api.BeaconBadBlock.slot:type_name -> google.protobuf.UInt64Value - 59, // 22: api.BeaconBadBlock.epoch:type_name -> google.protobuf.UInt64Value - 57, // 23: api.BeaconBadBlock.block_root:type_name -> google.protobuf.StringValue - 57, // 24: api.BeaconBadBlock.node_version:type_name -> google.protobuf.StringValue - 57, // 25: api.BeaconBadBlock.network:type_name -> google.protobuf.StringValue - 57, // 26: api.BeaconBadBlock.beacon_implementation:type_name -> google.protobuf.StringValue - 57, // 27: api.BeaconBadBlob.id:type_name -> google.protobuf.StringValue - 57, // 28: api.BeaconBadBlob.node:type_name -> google.protobuf.StringValue - 58, // 29: api.BeaconBadBlob.fetched_at:type_name -> google.protobuf.Timestamp - 59, // 30: api.BeaconBadBlob.slot:type_name -> google.protobuf.UInt64Value - 59, // 31: api.BeaconBadBlob.epoch:type_name -> google.protobuf.UInt64Value - 57, // 32: api.BeaconBadBlob.block_root:type_name -> google.protobuf.StringValue - 57, // 33: api.BeaconBadBlob.node_version:type_name -> google.protobuf.StringValue - 57, // 34: api.BeaconBadBlob.network:type_name -> google.protobuf.StringValue - 57, // 35: api.BeaconBadBlob.beacon_implementation:type_name -> google.protobuf.StringValue - 59, // 36: api.BeaconBadBlob.index:type_name -> google.protobuf.UInt64Value - 57, // 37: api.ExecutionBlockTrace.id:type_name -> google.protobuf.StringValue - 57, // 38: api.ExecutionBlockTrace.node:type_name -> google.protobuf.StringValue - 58, // 39: api.ExecutionBlockTrace.fetched_at:type_name -> google.protobuf.Timestamp - 57, // 40: api.ExecutionBlockTrace.block_hash:type_name -> google.protobuf.StringValue - 60, // 41: api.ExecutionBlockTrace.block_number:type_name -> google.protobuf.Int64Value - 57, // 42: api.ExecutionBlockTrace.network:type_name -> google.protobuf.StringValue - 57, // 43: api.ExecutionBlockTrace.execution_implementation:type_name -> google.protobuf.StringValue - 57, // 44: api.ExecutionBlockTrace.node_version:type_name -> google.protobuf.StringValue - 57, // 45: api.ExecutionBadBlock.id:type_name -> google.protobuf.StringValue - 57, // 46: api.ExecutionBadBlock.node:type_name -> google.protobuf.StringValue - 58, // 47: api.ExecutionBadBlock.fetched_at:type_name -> google.protobuf.Timestamp - 57, // 48: api.ExecutionBadBlock.block_hash:type_name -> google.protobuf.StringValue - 60, // 49: api.ExecutionBadBlock.block_number:type_name -> google.protobuf.Int64Value - 57, // 50: api.ExecutionBadBlock.network:type_name -> google.protobuf.StringValue - 57, // 51: api.ExecutionBadBlock.execution_implementation:type_name -> google.protobuf.StringValue - 57, // 52: api.ExecutionBadBlock.node_version:type_name -> google.protobuf.StringValue - 57, // 53: api.ExecutionBadBlock.block_extra_data:type_name -> google.protobuf.StringValue - 15, // 54: api.GetConfigResponse.config:type_name -> api.Config - 16, // 55: api.Config.ethereum:type_name -> api.EthereumConfig - 17, // 56: api.EthereumConfig.config:type_name -> api.EthereumNetworkConfig - 18, // 57: api.EthereumConfig.tools:type_name -> api.ToolsConfig - 19, // 58: api.ToolsConfig.ncli:type_name -> api.GitRepositoryConfig - 19, // 59: api.ToolsConfig.lcli:type_name -> api.GitRepositoryConfig - 20, // 60: api.ToolsConfig.zcli:type_name -> api.ZcliConfig - 58, // 61: api.ListBeaconStateRequest.before:type_name -> google.protobuf.Timestamp - 58, // 62: api.ListBeaconStateRequest.after:type_name -> google.protobuf.Timestamp - 12, // 63: api.ListBeaconStateRequest.pagination:type_name -> api.PaginationCursor - 6, // 64: api.ListBeaconStateResponse.beacon_states:type_name -> api.BeaconState - 58, // 65: api.CountBeaconStateRequest.before:type_name -> google.protobuf.Timestamp - 58, // 66: api.CountBeaconStateRequest.after:type_name -> google.protobuf.Timestamp - 59, // 67: api.CountBeaconStateResponse.count:type_name -> google.protobuf.UInt64Value - 0, // 68: api.ListUniqueBeaconStateValuesRequest.fields:type_name -> api.ListUniqueBeaconStateValuesRequest.Field - 58, // 69: api.ListBeaconBlockRequest.before:type_name -> google.protobuf.Timestamp - 58, // 70: api.ListBeaconBlockRequest.after:type_name -> google.protobuf.Timestamp - 12, // 71: api.ListBeaconBlockRequest.pagination:type_name -> api.PaginationCursor - 7, // 72: api.ListBeaconBlockResponse.beacon_blocks:type_name -> api.BeaconBlock - 58, // 73: api.CountBeaconBlockRequest.before:type_name -> google.protobuf.Timestamp - 58, // 74: api.CountBeaconBlockRequest.after:type_name -> google.protobuf.Timestamp - 59, // 75: api.CountBeaconBlockResponse.count:type_name -> google.protobuf.UInt64Value - 1, // 76: api.ListUniqueBeaconBlockValuesRequest.fields:type_name -> api.ListUniqueBeaconBlockValuesRequest.Field - 58, // 77: api.ListBeaconBadBlockRequest.before:type_name -> google.protobuf.Timestamp - 58, // 78: api.ListBeaconBadBlockRequest.after:type_name -> google.protobuf.Timestamp - 12, // 79: api.ListBeaconBadBlockRequest.pagination:type_name -> api.PaginationCursor - 8, // 80: api.ListBeaconBadBlockResponse.beacon_bad_blocks:type_name -> api.BeaconBadBlock - 58, // 81: api.CountBeaconBadBlockRequest.before:type_name -> google.protobuf.Timestamp - 58, // 82: api.CountBeaconBadBlockRequest.after:type_name -> google.protobuf.Timestamp - 59, // 83: api.CountBeaconBadBlockResponse.count:type_name -> google.protobuf.UInt64Value - 2, // 84: api.ListUniqueBeaconBadBlockValuesRequest.fields:type_name -> api.ListUniqueBeaconBadBlockValuesRequest.Field - 58, // 85: api.ListBeaconBadBlobRequest.before:type_name -> google.protobuf.Timestamp - 58, // 86: api.ListBeaconBadBlobRequest.after:type_name -> google.protobuf.Timestamp - 12, // 87: api.ListBeaconBadBlobRequest.pagination:type_name -> api.PaginationCursor - 59, // 88: api.ListBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value - 9, // 89: api.ListBeaconBadBlobResponse.beacon_bad_blobs:type_name -> api.BeaconBadBlob - 58, // 90: api.CountBeaconBadBlobRequest.before:type_name -> google.protobuf.Timestamp - 58, // 91: api.CountBeaconBadBlobRequest.after:type_name -> google.protobuf.Timestamp - 59, // 92: api.CountBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value - 59, // 93: api.CountBeaconBadBlobResponse.count:type_name -> google.protobuf.UInt64Value - 3, // 94: api.ListUniqueBeaconBadBlobValuesRequest.fields:type_name -> api.ListUniqueBeaconBadBlobValuesRequest.Field - 58, // 95: api.ListExecutionBlockTraceRequest.before:type_name -> google.protobuf.Timestamp - 58, // 96: api.ListExecutionBlockTraceRequest.after:type_name -> google.protobuf.Timestamp - 12, // 97: api.ListExecutionBlockTraceRequest.pagination:type_name -> api.PaginationCursor - 10, // 98: api.ListExecutionBlockTraceResponse.execution_block_traces:type_name -> api.ExecutionBlockTrace - 58, // 99: api.CountExecutionBlockTraceRequest.before:type_name -> google.protobuf.Timestamp - 58, // 100: api.CountExecutionBlockTraceRequest.after:type_name -> google.protobuf.Timestamp - 59, // 101: api.CountExecutionBlockTraceResponse.count:type_name -> google.protobuf.UInt64Value - 4, // 102: api.ListUniqueExecutionBlockTraceValuesRequest.fields:type_name -> api.ListUniqueExecutionBlockTraceValuesRequest.Field - 58, // 103: api.ListExecutionBadBlockRequest.before:type_name -> google.protobuf.Timestamp - 58, // 104: api.ListExecutionBadBlockRequest.after:type_name -> google.protobuf.Timestamp - 12, // 105: api.ListExecutionBadBlockRequest.pagination:type_name -> api.PaginationCursor - 11, // 106: api.ListExecutionBadBlockResponse.execution_bad_blocks:type_name -> api.ExecutionBadBlock - 58, // 107: api.CountExecutionBadBlockRequest.before:type_name -> google.protobuf.Timestamp - 58, // 108: api.CountExecutionBadBlockRequest.after:type_name -> google.protobuf.Timestamp - 59, // 109: api.CountExecutionBadBlockResponse.count:type_name -> google.protobuf.UInt64Value - 5, // 110: api.ListUniqueExecutionBadBlockValuesRequest.fields:type_name -> api.ListUniqueExecutionBadBlockValuesRequest.Field - 13, // 111: api.API.GetConfig:input_type -> api.GetConfigRequest - 21, // 112: api.API.ListBeaconState:input_type -> api.ListBeaconStateRequest - 23, // 113: api.API.CountBeaconState:input_type -> api.CountBeaconStateRequest - 25, // 114: api.API.ListUniqueBeaconStateValues:input_type -> api.ListUniqueBeaconStateValuesRequest - 27, // 115: api.API.ListBeaconBlock:input_type -> api.ListBeaconBlockRequest - 29, // 116: api.API.CountBeaconBlock:input_type -> api.CountBeaconBlockRequest - 31, // 117: api.API.ListUniqueBeaconBlockValues:input_type -> api.ListUniqueBeaconBlockValuesRequest - 33, // 118: api.API.ListBeaconBadBlock:input_type -> api.ListBeaconBadBlockRequest - 35, // 119: api.API.CountBeaconBadBlock:input_type -> api.CountBeaconBadBlockRequest - 37, // 120: api.API.ListUniqueBeaconBadBlockValues:input_type -> api.ListUniqueBeaconBadBlockValuesRequest - 39, // 121: api.API.ListBeaconBadBlob:input_type -> api.ListBeaconBadBlobRequest - 41, // 122: api.API.CountBeaconBadBlob:input_type -> api.CountBeaconBadBlobRequest - 43, // 123: api.API.ListUniqueBeaconBadBlobValues:input_type -> api.ListUniqueBeaconBadBlobValuesRequest - 45, // 124: api.API.ListExecutionBlockTrace:input_type -> api.ListExecutionBlockTraceRequest - 47, // 125: api.API.CountExecutionBlockTrace:input_type -> api.CountExecutionBlockTraceRequest - 49, // 126: api.API.ListUniqueExecutionBlockTraceValues:input_type -> api.ListUniqueExecutionBlockTraceValuesRequest - 51, // 127: api.API.ListExecutionBadBlock:input_type -> api.ListExecutionBadBlockRequest - 53, // 128: api.API.CountExecutionBadBlock:input_type -> api.CountExecutionBadBlockRequest - 55, // 129: api.API.ListUniqueExecutionBadBlockValues:input_type -> api.ListUniqueExecutionBadBlockValuesRequest - 14, // 130: api.API.GetConfig:output_type -> api.GetConfigResponse - 22, // 131: api.API.ListBeaconState:output_type -> api.ListBeaconStateResponse - 24, // 132: api.API.CountBeaconState:output_type -> api.CountBeaconStateResponse - 26, // 133: api.API.ListUniqueBeaconStateValues:output_type -> api.ListUniqueBeaconStateValuesResponse - 28, // 134: api.API.ListBeaconBlock:output_type -> api.ListBeaconBlockResponse - 30, // 135: api.API.CountBeaconBlock:output_type -> api.CountBeaconBlockResponse - 32, // 136: api.API.ListUniqueBeaconBlockValues:output_type -> api.ListUniqueBeaconBlockValuesResponse - 34, // 137: api.API.ListBeaconBadBlock:output_type -> api.ListBeaconBadBlockResponse - 36, // 138: api.API.CountBeaconBadBlock:output_type -> api.CountBeaconBadBlockResponse - 38, // 139: api.API.ListUniqueBeaconBadBlockValues:output_type -> api.ListUniqueBeaconBadBlockValuesResponse - 40, // 140: api.API.ListBeaconBadBlob:output_type -> api.ListBeaconBadBlobResponse - 42, // 141: api.API.CountBeaconBadBlob:output_type -> api.CountBeaconBadBlobResponse - 44, // 142: api.API.ListUniqueBeaconBadBlobValues:output_type -> api.ListUniqueBeaconBadBlobValuesResponse - 46, // 143: api.API.ListExecutionBlockTrace:output_type -> api.ListExecutionBlockTraceResponse - 48, // 144: api.API.CountExecutionBlockTrace:output_type -> api.CountExecutionBlockTraceResponse - 50, // 145: api.API.ListUniqueExecutionBlockTraceValues:output_type -> api.ListUniqueExecutionBlockTraceValuesResponse - 52, // 146: api.API.ListExecutionBadBlock:output_type -> api.ListExecutionBadBlockResponse - 54, // 147: api.API.CountExecutionBadBlock:output_type -> api.CountExecutionBadBlockResponse - 56, // 148: api.API.ListUniqueExecutionBadBlockValues:output_type -> api.ListUniqueExecutionBadBlockValuesResponse - 130, // [130:149] is the sub-list for method output_type - 111, // [111:130] is the sub-list for method input_type - 111, // [111:111] is the sub-list for extension type_name - 111, // [111:111] is the sub-list for extension extendee - 0, // [0:111] is the sub-list for field type_name -} - -func init() { file_api_api_proto_init() } -func file_api_api_proto_init() { - if File_api_api_proto != nil { + return file_pkg_proto_tracoor_api_api_proto_rawDescData +} + +var file_pkg_proto_tracoor_api_api_proto_enumTypes = make([]protoimpl.EnumInfo, 7) +var file_pkg_proto_tracoor_api_api_proto_msgTypes = make([]protoimpl.MessageInfo, 58) +var file_pkg_proto_tracoor_api_api_proto_goTypes = []any{ + (ListUniqueBeaconStateValuesRequest_Field)(0), // 0: api.ListUniqueBeaconStateValuesRequest.Field + (ListUniqueBeaconBlockValuesRequest_Field)(0), // 1: api.ListUniqueBeaconBlockValuesRequest.Field + (ListUniqueExecutionPayloadEnvelopeValuesRequest_Field)(0), // 2: api.ListUniqueExecutionPayloadEnvelopeValuesRequest.Field + (ListUniqueBeaconBadBlockValuesRequest_Field)(0), // 3: api.ListUniqueBeaconBadBlockValuesRequest.Field + (ListUniqueBeaconBadBlobValuesRequest_Field)(0), // 4: api.ListUniqueBeaconBadBlobValuesRequest.Field + (ListUniqueExecutionBlockTraceValuesRequest_Field)(0), // 5: api.ListUniqueExecutionBlockTraceValuesRequest.Field + (ListUniqueExecutionBadBlockValuesRequest_Field)(0), // 6: api.ListUniqueExecutionBadBlockValuesRequest.Field + (*BeaconState)(nil), // 7: api.BeaconState + (*BeaconBlock)(nil), // 8: api.BeaconBlock + (*ExecutionPayloadEnvelope)(nil), // 9: api.ExecutionPayloadEnvelope + (*BeaconBadBlock)(nil), // 10: api.BeaconBadBlock + (*BeaconBadBlob)(nil), // 11: api.BeaconBadBlob + (*ExecutionBlockTrace)(nil), // 12: api.ExecutionBlockTrace + (*ExecutionBadBlock)(nil), // 13: api.ExecutionBadBlock + (*PaginationCursor)(nil), // 14: api.PaginationCursor + (*GetConfigRequest)(nil), // 15: api.GetConfigRequest + (*GetConfigResponse)(nil), // 16: api.GetConfigResponse + (*Config)(nil), // 17: api.Config + (*EthereumConfig)(nil), // 18: api.EthereumConfig + (*EthereumNetworkConfig)(nil), // 19: api.EthereumNetworkConfig + (*ToolsConfig)(nil), // 20: api.ToolsConfig + (*GitRepositoryConfig)(nil), // 21: api.GitRepositoryConfig + (*ZcliConfig)(nil), // 22: api.ZcliConfig + (*ListBeaconStateRequest)(nil), // 23: api.ListBeaconStateRequest + (*ListBeaconStateResponse)(nil), // 24: api.ListBeaconStateResponse + (*CountBeaconStateRequest)(nil), // 25: api.CountBeaconStateRequest + (*CountBeaconStateResponse)(nil), // 26: api.CountBeaconStateResponse + (*ListUniqueBeaconStateValuesRequest)(nil), // 27: api.ListUniqueBeaconStateValuesRequest + (*ListUniqueBeaconStateValuesResponse)(nil), // 28: api.ListUniqueBeaconStateValuesResponse + (*ListBeaconBlockRequest)(nil), // 29: api.ListBeaconBlockRequest + (*ListBeaconBlockResponse)(nil), // 30: api.ListBeaconBlockResponse + (*CountBeaconBlockRequest)(nil), // 31: api.CountBeaconBlockRequest + (*CountBeaconBlockResponse)(nil), // 32: api.CountBeaconBlockResponse + (*ListUniqueBeaconBlockValuesRequest)(nil), // 33: api.ListUniqueBeaconBlockValuesRequest + (*ListUniqueBeaconBlockValuesResponse)(nil), // 34: api.ListUniqueBeaconBlockValuesResponse + (*ListExecutionPayloadEnvelopeRequest)(nil), // 35: api.ListExecutionPayloadEnvelopeRequest + (*ListExecutionPayloadEnvelopeResponse)(nil), // 36: api.ListExecutionPayloadEnvelopeResponse + (*CountExecutionPayloadEnvelopeRequest)(nil), // 37: api.CountExecutionPayloadEnvelopeRequest + (*CountExecutionPayloadEnvelopeResponse)(nil), // 38: api.CountExecutionPayloadEnvelopeResponse + (*ListUniqueExecutionPayloadEnvelopeValuesRequest)(nil), // 39: api.ListUniqueExecutionPayloadEnvelopeValuesRequest + (*ListUniqueExecutionPayloadEnvelopeValuesResponse)(nil), // 40: api.ListUniqueExecutionPayloadEnvelopeValuesResponse + (*ListBeaconBadBlockRequest)(nil), // 41: api.ListBeaconBadBlockRequest + (*ListBeaconBadBlockResponse)(nil), // 42: api.ListBeaconBadBlockResponse + (*CountBeaconBadBlockRequest)(nil), // 43: api.CountBeaconBadBlockRequest + (*CountBeaconBadBlockResponse)(nil), // 44: api.CountBeaconBadBlockResponse + (*ListUniqueBeaconBadBlockValuesRequest)(nil), // 45: api.ListUniqueBeaconBadBlockValuesRequest + (*ListUniqueBeaconBadBlockValuesResponse)(nil), // 46: api.ListUniqueBeaconBadBlockValuesResponse + (*ListBeaconBadBlobRequest)(nil), // 47: api.ListBeaconBadBlobRequest + (*ListBeaconBadBlobResponse)(nil), // 48: api.ListBeaconBadBlobResponse + (*CountBeaconBadBlobRequest)(nil), // 49: api.CountBeaconBadBlobRequest + (*CountBeaconBadBlobResponse)(nil), // 50: api.CountBeaconBadBlobResponse + (*ListUniqueBeaconBadBlobValuesRequest)(nil), // 51: api.ListUniqueBeaconBadBlobValuesRequest + (*ListUniqueBeaconBadBlobValuesResponse)(nil), // 52: api.ListUniqueBeaconBadBlobValuesResponse + (*ListExecutionBlockTraceRequest)(nil), // 53: api.ListExecutionBlockTraceRequest + (*ListExecutionBlockTraceResponse)(nil), // 54: api.ListExecutionBlockTraceResponse + (*CountExecutionBlockTraceRequest)(nil), // 55: api.CountExecutionBlockTraceRequest + (*CountExecutionBlockTraceResponse)(nil), // 56: api.CountExecutionBlockTraceResponse + (*ListUniqueExecutionBlockTraceValuesRequest)(nil), // 57: api.ListUniqueExecutionBlockTraceValuesRequest + (*ListUniqueExecutionBlockTraceValuesResponse)(nil), // 58: api.ListUniqueExecutionBlockTraceValuesResponse + (*ListExecutionBadBlockRequest)(nil), // 59: api.ListExecutionBadBlockRequest + (*ListExecutionBadBlockResponse)(nil), // 60: api.ListExecutionBadBlockResponse + (*CountExecutionBadBlockRequest)(nil), // 61: api.CountExecutionBadBlockRequest + (*CountExecutionBadBlockResponse)(nil), // 62: api.CountExecutionBadBlockResponse + (*ListUniqueExecutionBadBlockValuesRequest)(nil), // 63: api.ListUniqueExecutionBadBlockValuesRequest + (*ListUniqueExecutionBadBlockValuesResponse)(nil), // 64: api.ListUniqueExecutionBadBlockValuesResponse + (*wrapperspb.StringValue)(nil), // 65: google.protobuf.StringValue + (*timestamppb.Timestamp)(nil), // 66: google.protobuf.Timestamp + (*wrapperspb.UInt64Value)(nil), // 67: google.protobuf.UInt64Value + (*wrapperspb.Int64Value)(nil), // 68: google.protobuf.Int64Value +} +var file_pkg_proto_tracoor_api_api_proto_depIdxs = []int32{ + 65, // 0: api.BeaconState.id:type_name -> google.protobuf.StringValue + 65, // 1: api.BeaconState.node:type_name -> google.protobuf.StringValue + 66, // 2: api.BeaconState.fetched_at:type_name -> google.protobuf.Timestamp + 67, // 3: api.BeaconState.slot:type_name -> google.protobuf.UInt64Value + 67, // 4: api.BeaconState.epoch:type_name -> google.protobuf.UInt64Value + 65, // 5: api.BeaconState.state_root:type_name -> google.protobuf.StringValue + 65, // 6: api.BeaconState.node_version:type_name -> google.protobuf.StringValue + 65, // 7: api.BeaconState.network:type_name -> google.protobuf.StringValue + 65, // 8: api.BeaconState.beacon_implementation:type_name -> google.protobuf.StringValue + 65, // 9: api.BeaconBlock.id:type_name -> google.protobuf.StringValue + 65, // 10: api.BeaconBlock.node:type_name -> google.protobuf.StringValue + 66, // 11: api.BeaconBlock.fetched_at:type_name -> google.protobuf.Timestamp + 67, // 12: api.BeaconBlock.slot:type_name -> google.protobuf.UInt64Value + 67, // 13: api.BeaconBlock.epoch:type_name -> google.protobuf.UInt64Value + 65, // 14: api.BeaconBlock.block_root:type_name -> google.protobuf.StringValue + 65, // 15: api.BeaconBlock.node_version:type_name -> google.protobuf.StringValue + 65, // 16: api.BeaconBlock.network:type_name -> google.protobuf.StringValue + 65, // 17: api.BeaconBlock.beacon_implementation:type_name -> google.protobuf.StringValue + 65, // 18: api.ExecutionPayloadEnvelope.id:type_name -> google.protobuf.StringValue + 65, // 19: api.ExecutionPayloadEnvelope.node:type_name -> google.protobuf.StringValue + 66, // 20: api.ExecutionPayloadEnvelope.fetched_at:type_name -> google.protobuf.Timestamp + 67, // 21: api.ExecutionPayloadEnvelope.slot:type_name -> google.protobuf.UInt64Value + 67, // 22: api.ExecutionPayloadEnvelope.epoch:type_name -> google.protobuf.UInt64Value + 65, // 23: api.ExecutionPayloadEnvelope.block_root:type_name -> google.protobuf.StringValue + 65, // 24: api.ExecutionPayloadEnvelope.node_version:type_name -> google.protobuf.StringValue + 65, // 25: api.ExecutionPayloadEnvelope.network:type_name -> google.protobuf.StringValue + 65, // 26: api.ExecutionPayloadEnvelope.beacon_implementation:type_name -> google.protobuf.StringValue + 65, // 27: api.BeaconBadBlock.id:type_name -> google.protobuf.StringValue + 65, // 28: api.BeaconBadBlock.node:type_name -> google.protobuf.StringValue + 66, // 29: api.BeaconBadBlock.fetched_at:type_name -> google.protobuf.Timestamp + 67, // 30: api.BeaconBadBlock.slot:type_name -> google.protobuf.UInt64Value + 67, // 31: api.BeaconBadBlock.epoch:type_name -> google.protobuf.UInt64Value + 65, // 32: api.BeaconBadBlock.block_root:type_name -> google.protobuf.StringValue + 65, // 33: api.BeaconBadBlock.node_version:type_name -> google.protobuf.StringValue + 65, // 34: api.BeaconBadBlock.network:type_name -> google.protobuf.StringValue + 65, // 35: api.BeaconBadBlock.beacon_implementation:type_name -> google.protobuf.StringValue + 65, // 36: api.BeaconBadBlob.id:type_name -> google.protobuf.StringValue + 65, // 37: api.BeaconBadBlob.node:type_name -> google.protobuf.StringValue + 66, // 38: api.BeaconBadBlob.fetched_at:type_name -> google.protobuf.Timestamp + 67, // 39: api.BeaconBadBlob.slot:type_name -> google.protobuf.UInt64Value + 67, // 40: api.BeaconBadBlob.epoch:type_name -> google.protobuf.UInt64Value + 65, // 41: api.BeaconBadBlob.block_root:type_name -> google.protobuf.StringValue + 65, // 42: api.BeaconBadBlob.node_version:type_name -> google.protobuf.StringValue + 65, // 43: api.BeaconBadBlob.network:type_name -> google.protobuf.StringValue + 65, // 44: api.BeaconBadBlob.beacon_implementation:type_name -> google.protobuf.StringValue + 67, // 45: api.BeaconBadBlob.index:type_name -> google.protobuf.UInt64Value + 65, // 46: api.ExecutionBlockTrace.id:type_name -> google.protobuf.StringValue + 65, // 47: api.ExecutionBlockTrace.node:type_name -> google.protobuf.StringValue + 66, // 48: api.ExecutionBlockTrace.fetched_at:type_name -> google.protobuf.Timestamp + 65, // 49: api.ExecutionBlockTrace.block_hash:type_name -> google.protobuf.StringValue + 68, // 50: api.ExecutionBlockTrace.block_number:type_name -> google.protobuf.Int64Value + 65, // 51: api.ExecutionBlockTrace.network:type_name -> google.protobuf.StringValue + 65, // 52: api.ExecutionBlockTrace.execution_implementation:type_name -> google.protobuf.StringValue + 65, // 53: api.ExecutionBlockTrace.node_version:type_name -> google.protobuf.StringValue + 65, // 54: api.ExecutionBadBlock.id:type_name -> google.protobuf.StringValue + 65, // 55: api.ExecutionBadBlock.node:type_name -> google.protobuf.StringValue + 66, // 56: api.ExecutionBadBlock.fetched_at:type_name -> google.protobuf.Timestamp + 65, // 57: api.ExecutionBadBlock.block_hash:type_name -> google.protobuf.StringValue + 68, // 58: api.ExecutionBadBlock.block_number:type_name -> google.protobuf.Int64Value + 65, // 59: api.ExecutionBadBlock.network:type_name -> google.protobuf.StringValue + 65, // 60: api.ExecutionBadBlock.execution_implementation:type_name -> google.protobuf.StringValue + 65, // 61: api.ExecutionBadBlock.node_version:type_name -> google.protobuf.StringValue + 65, // 62: api.ExecutionBadBlock.block_extra_data:type_name -> google.protobuf.StringValue + 17, // 63: api.GetConfigResponse.config:type_name -> api.Config + 18, // 64: api.Config.ethereum:type_name -> api.EthereumConfig + 19, // 65: api.EthereumConfig.config:type_name -> api.EthereumNetworkConfig + 20, // 66: api.EthereumConfig.tools:type_name -> api.ToolsConfig + 21, // 67: api.ToolsConfig.ncli:type_name -> api.GitRepositoryConfig + 21, // 68: api.ToolsConfig.lcli:type_name -> api.GitRepositoryConfig + 22, // 69: api.ToolsConfig.zcli:type_name -> api.ZcliConfig + 66, // 70: api.ListBeaconStateRequest.before:type_name -> google.protobuf.Timestamp + 66, // 71: api.ListBeaconStateRequest.after:type_name -> google.protobuf.Timestamp + 14, // 72: api.ListBeaconStateRequest.pagination:type_name -> api.PaginationCursor + 7, // 73: api.ListBeaconStateResponse.beacon_states:type_name -> api.BeaconState + 66, // 74: api.CountBeaconStateRequest.before:type_name -> google.protobuf.Timestamp + 66, // 75: api.CountBeaconStateRequest.after:type_name -> google.protobuf.Timestamp + 67, // 76: api.CountBeaconStateResponse.count:type_name -> google.protobuf.UInt64Value + 0, // 77: api.ListUniqueBeaconStateValuesRequest.fields:type_name -> api.ListUniqueBeaconStateValuesRequest.Field + 66, // 78: api.ListBeaconBlockRequest.before:type_name -> google.protobuf.Timestamp + 66, // 79: api.ListBeaconBlockRequest.after:type_name -> google.protobuf.Timestamp + 14, // 80: api.ListBeaconBlockRequest.pagination:type_name -> api.PaginationCursor + 8, // 81: api.ListBeaconBlockResponse.beacon_blocks:type_name -> api.BeaconBlock + 66, // 82: api.CountBeaconBlockRequest.before:type_name -> google.protobuf.Timestamp + 66, // 83: api.CountBeaconBlockRequest.after:type_name -> google.protobuf.Timestamp + 67, // 84: api.CountBeaconBlockResponse.count:type_name -> google.protobuf.UInt64Value + 1, // 85: api.ListUniqueBeaconBlockValuesRequest.fields:type_name -> api.ListUniqueBeaconBlockValuesRequest.Field + 66, // 86: api.ListExecutionPayloadEnvelopeRequest.before:type_name -> google.protobuf.Timestamp + 66, // 87: api.ListExecutionPayloadEnvelopeRequest.after:type_name -> google.protobuf.Timestamp + 14, // 88: api.ListExecutionPayloadEnvelopeRequest.pagination:type_name -> api.PaginationCursor + 9, // 89: api.ListExecutionPayloadEnvelopeResponse.execution_payload_envelopes:type_name -> api.ExecutionPayloadEnvelope + 66, // 90: api.CountExecutionPayloadEnvelopeRequest.before:type_name -> google.protobuf.Timestamp + 66, // 91: api.CountExecutionPayloadEnvelopeRequest.after:type_name -> google.protobuf.Timestamp + 67, // 92: api.CountExecutionPayloadEnvelopeResponse.count:type_name -> google.protobuf.UInt64Value + 2, // 93: api.ListUniqueExecutionPayloadEnvelopeValuesRequest.fields:type_name -> api.ListUniqueExecutionPayloadEnvelopeValuesRequest.Field + 66, // 94: api.ListBeaconBadBlockRequest.before:type_name -> google.protobuf.Timestamp + 66, // 95: api.ListBeaconBadBlockRequest.after:type_name -> google.protobuf.Timestamp + 14, // 96: api.ListBeaconBadBlockRequest.pagination:type_name -> api.PaginationCursor + 10, // 97: api.ListBeaconBadBlockResponse.beacon_bad_blocks:type_name -> api.BeaconBadBlock + 66, // 98: api.CountBeaconBadBlockRequest.before:type_name -> google.protobuf.Timestamp + 66, // 99: api.CountBeaconBadBlockRequest.after:type_name -> google.protobuf.Timestamp + 67, // 100: api.CountBeaconBadBlockResponse.count:type_name -> google.protobuf.UInt64Value + 3, // 101: api.ListUniqueBeaconBadBlockValuesRequest.fields:type_name -> api.ListUniqueBeaconBadBlockValuesRequest.Field + 66, // 102: api.ListBeaconBadBlobRequest.before:type_name -> google.protobuf.Timestamp + 66, // 103: api.ListBeaconBadBlobRequest.after:type_name -> google.protobuf.Timestamp + 14, // 104: api.ListBeaconBadBlobRequest.pagination:type_name -> api.PaginationCursor + 67, // 105: api.ListBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value + 11, // 106: api.ListBeaconBadBlobResponse.beacon_bad_blobs:type_name -> api.BeaconBadBlob + 66, // 107: api.CountBeaconBadBlobRequest.before:type_name -> google.protobuf.Timestamp + 66, // 108: api.CountBeaconBadBlobRequest.after:type_name -> google.protobuf.Timestamp + 67, // 109: api.CountBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value + 67, // 110: api.CountBeaconBadBlobResponse.count:type_name -> google.protobuf.UInt64Value + 4, // 111: api.ListUniqueBeaconBadBlobValuesRequest.fields:type_name -> api.ListUniqueBeaconBadBlobValuesRequest.Field + 66, // 112: api.ListExecutionBlockTraceRequest.before:type_name -> google.protobuf.Timestamp + 66, // 113: api.ListExecutionBlockTraceRequest.after:type_name -> google.protobuf.Timestamp + 14, // 114: api.ListExecutionBlockTraceRequest.pagination:type_name -> api.PaginationCursor + 12, // 115: api.ListExecutionBlockTraceResponse.execution_block_traces:type_name -> api.ExecutionBlockTrace + 66, // 116: api.CountExecutionBlockTraceRequest.before:type_name -> google.protobuf.Timestamp + 66, // 117: api.CountExecutionBlockTraceRequest.after:type_name -> google.protobuf.Timestamp + 67, // 118: api.CountExecutionBlockTraceResponse.count:type_name -> google.protobuf.UInt64Value + 5, // 119: api.ListUniqueExecutionBlockTraceValuesRequest.fields:type_name -> api.ListUniqueExecutionBlockTraceValuesRequest.Field + 66, // 120: api.ListExecutionBadBlockRequest.before:type_name -> google.protobuf.Timestamp + 66, // 121: api.ListExecutionBadBlockRequest.after:type_name -> google.protobuf.Timestamp + 14, // 122: api.ListExecutionBadBlockRequest.pagination:type_name -> api.PaginationCursor + 13, // 123: api.ListExecutionBadBlockResponse.execution_bad_blocks:type_name -> api.ExecutionBadBlock + 66, // 124: api.CountExecutionBadBlockRequest.before:type_name -> google.protobuf.Timestamp + 66, // 125: api.CountExecutionBadBlockRequest.after:type_name -> google.protobuf.Timestamp + 67, // 126: api.CountExecutionBadBlockResponse.count:type_name -> google.protobuf.UInt64Value + 6, // 127: api.ListUniqueExecutionBadBlockValuesRequest.fields:type_name -> api.ListUniqueExecutionBadBlockValuesRequest.Field + 15, // 128: api.API.GetConfig:input_type -> api.GetConfigRequest + 23, // 129: api.API.ListBeaconState:input_type -> api.ListBeaconStateRequest + 25, // 130: api.API.CountBeaconState:input_type -> api.CountBeaconStateRequest + 27, // 131: api.API.ListUniqueBeaconStateValues:input_type -> api.ListUniqueBeaconStateValuesRequest + 29, // 132: api.API.ListBeaconBlock:input_type -> api.ListBeaconBlockRequest + 31, // 133: api.API.CountBeaconBlock:input_type -> api.CountBeaconBlockRequest + 33, // 134: api.API.ListUniqueBeaconBlockValues:input_type -> api.ListUniqueBeaconBlockValuesRequest + 35, // 135: api.API.ListExecutionPayloadEnvelope:input_type -> api.ListExecutionPayloadEnvelopeRequest + 37, // 136: api.API.CountExecutionPayloadEnvelope:input_type -> api.CountExecutionPayloadEnvelopeRequest + 39, // 137: api.API.ListUniqueExecutionPayloadEnvelopeValues:input_type -> api.ListUniqueExecutionPayloadEnvelopeValuesRequest + 41, // 138: api.API.ListBeaconBadBlock:input_type -> api.ListBeaconBadBlockRequest + 43, // 139: api.API.CountBeaconBadBlock:input_type -> api.CountBeaconBadBlockRequest + 45, // 140: api.API.ListUniqueBeaconBadBlockValues:input_type -> api.ListUniqueBeaconBadBlockValuesRequest + 47, // 141: api.API.ListBeaconBadBlob:input_type -> api.ListBeaconBadBlobRequest + 49, // 142: api.API.CountBeaconBadBlob:input_type -> api.CountBeaconBadBlobRequest + 51, // 143: api.API.ListUniqueBeaconBadBlobValues:input_type -> api.ListUniqueBeaconBadBlobValuesRequest + 53, // 144: api.API.ListExecutionBlockTrace:input_type -> api.ListExecutionBlockTraceRequest + 55, // 145: api.API.CountExecutionBlockTrace:input_type -> api.CountExecutionBlockTraceRequest + 57, // 146: api.API.ListUniqueExecutionBlockTraceValues:input_type -> api.ListUniqueExecutionBlockTraceValuesRequest + 59, // 147: api.API.ListExecutionBadBlock:input_type -> api.ListExecutionBadBlockRequest + 61, // 148: api.API.CountExecutionBadBlock:input_type -> api.CountExecutionBadBlockRequest + 63, // 149: api.API.ListUniqueExecutionBadBlockValues:input_type -> api.ListUniqueExecutionBadBlockValuesRequest + 16, // 150: api.API.GetConfig:output_type -> api.GetConfigResponse + 24, // 151: api.API.ListBeaconState:output_type -> api.ListBeaconStateResponse + 26, // 152: api.API.CountBeaconState:output_type -> api.CountBeaconStateResponse + 28, // 153: api.API.ListUniqueBeaconStateValues:output_type -> api.ListUniqueBeaconStateValuesResponse + 30, // 154: api.API.ListBeaconBlock:output_type -> api.ListBeaconBlockResponse + 32, // 155: api.API.CountBeaconBlock:output_type -> api.CountBeaconBlockResponse + 34, // 156: api.API.ListUniqueBeaconBlockValues:output_type -> api.ListUniqueBeaconBlockValuesResponse + 36, // 157: api.API.ListExecutionPayloadEnvelope:output_type -> api.ListExecutionPayloadEnvelopeResponse + 38, // 158: api.API.CountExecutionPayloadEnvelope:output_type -> api.CountExecutionPayloadEnvelopeResponse + 40, // 159: api.API.ListUniqueExecutionPayloadEnvelopeValues:output_type -> api.ListUniqueExecutionPayloadEnvelopeValuesResponse + 42, // 160: api.API.ListBeaconBadBlock:output_type -> api.ListBeaconBadBlockResponse + 44, // 161: api.API.CountBeaconBadBlock:output_type -> api.CountBeaconBadBlockResponse + 46, // 162: api.API.ListUniqueBeaconBadBlockValues:output_type -> api.ListUniqueBeaconBadBlockValuesResponse + 48, // 163: api.API.ListBeaconBadBlob:output_type -> api.ListBeaconBadBlobResponse + 50, // 164: api.API.CountBeaconBadBlob:output_type -> api.CountBeaconBadBlobResponse + 52, // 165: api.API.ListUniqueBeaconBadBlobValues:output_type -> api.ListUniqueBeaconBadBlobValuesResponse + 54, // 166: api.API.ListExecutionBlockTrace:output_type -> api.ListExecutionBlockTraceResponse + 56, // 167: api.API.CountExecutionBlockTrace:output_type -> api.CountExecutionBlockTraceResponse + 58, // 168: api.API.ListUniqueExecutionBlockTraceValues:output_type -> api.ListUniqueExecutionBlockTraceValuesResponse + 60, // 169: api.API.ListExecutionBadBlock:output_type -> api.ListExecutionBadBlockResponse + 62, // 170: api.API.CountExecutionBadBlock:output_type -> api.CountExecutionBadBlockResponse + 64, // 171: api.API.ListUniqueExecutionBadBlockValues:output_type -> api.ListUniqueExecutionBadBlockValuesResponse + 150, // [150:172] is the sub-list for method output_type + 128, // [128:150] is the sub-list for method input_type + 128, // [128:128] is the sub-list for extension type_name + 128, // [128:128] is the sub-list for extension extendee + 0, // [0:128] is the sub-list for field type_name +} + +func init() { file_pkg_proto_tracoor_api_api_proto_init() } +func file_pkg_proto_tracoor_api_api_proto_init() { + if File_pkg_proto_tracoor_api_api_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_api_api_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BeaconState); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BeaconBlock); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BeaconBadBlock); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BeaconBadBlob); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutionBlockTrace); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutionBadBlock); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PaginationCursor); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Config); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EthereumConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EthereumNetworkConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ToolsConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GitRepositoryConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZcliConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconStateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconStateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconStateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconStateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconStateValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconStateValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBlockValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBlockValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBadBlockValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBadBlockValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBadBlobRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBadBlobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBadBlobRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBadBlobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBadBlobValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBadBlobValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExecutionBlockTraceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExecutionBlockTraceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountExecutionBlockTraceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountExecutionBlockTraceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueExecutionBlockTraceValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueExecutionBlockTraceValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExecutionBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExecutionBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountExecutionBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountExecutionBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueExecutionBadBlockValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueExecutionBadBlockValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_api_api_proto_rawDesc, - NumEnums: 6, - NumMessages: 51, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_pkg_proto_tracoor_api_api_proto_rawDesc), len(file_pkg_proto_tracoor_api_api_proto_rawDesc)), + NumEnums: 7, + NumMessages: 58, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_api_api_proto_goTypes, - DependencyIndexes: file_api_api_proto_depIdxs, - EnumInfos: file_api_api_proto_enumTypes, - MessageInfos: file_api_api_proto_msgTypes, + GoTypes: file_pkg_proto_tracoor_api_api_proto_goTypes, + DependencyIndexes: file_pkg_proto_tracoor_api_api_proto_depIdxs, + EnumInfos: file_pkg_proto_tracoor_api_api_proto_enumTypes, + MessageInfos: file_pkg_proto_tracoor_api_api_proto_msgTypes, }.Build() - File_api_api_proto = out.File - file_api_api_proto_rawDesc = nil - file_api_api_proto_goTypes = nil - file_api_api_proto_depIdxs = nil + File_pkg_proto_tracoor_api_api_proto = out.File + file_pkg_proto_tracoor_api_api_proto_goTypes = nil + file_pkg_proto_tracoor_api_api_proto_depIdxs = nil } diff --git a/pkg/proto/tracoor/api/api.proto b/pkg/proto/tracoor/api/api.proto index 58b6700..3a9c60f 100644 --- a/pkg/proto/tracoor/api/api.proto +++ b/pkg/proto/tracoor/api/api.proto @@ -33,6 +33,19 @@ message BeaconBlock { [ json_name = "beacon_implementation" ]; } +message ExecutionPayloadEnvelope { + google.protobuf.StringValue id = 1; + google.protobuf.StringValue node = 2; + google.protobuf.Timestamp fetched_at = 3 [ json_name = "fetched_at" ]; + google.protobuf.UInt64Value slot = 4; + google.protobuf.UInt64Value epoch = 5; + google.protobuf.StringValue block_root = 6 [ json_name = "block_root" ]; + google.protobuf.StringValue node_version = 7 [ json_name = "node_version" ]; + google.protobuf.StringValue network = 8; + google.protobuf.StringValue beacon_implementation = 9 + [ json_name = "beacon_implementation" ]; +} + message BeaconBadBlock { google.protobuf.StringValue id = 1; google.protobuf.StringValue node = 2; @@ -103,6 +116,14 @@ service API { rpc ListUniqueBeaconBlockValues(ListUniqueBeaconBlockValuesRequest) returns (ListUniqueBeaconBlockValuesResponse) {} + rpc ListExecutionPayloadEnvelope(ListExecutionPayloadEnvelopeRequest) + returns (ListExecutionPayloadEnvelopeResponse) {} + rpc CountExecutionPayloadEnvelope(CountExecutionPayloadEnvelopeRequest) + returns (CountExecutionPayloadEnvelopeResponse) {} + rpc ListUniqueExecutionPayloadEnvelopeValues( + ListUniqueExecutionPayloadEnvelopeValuesRequest) + returns (ListUniqueExecutionPayloadEnvelopeValuesResponse) {} + rpc ListBeaconBadBlock(ListBeaconBadBlockRequest) returns (ListBeaconBadBlockResponse) {} rpc CountBeaconBadBlock(CountBeaconBadBlockRequest) @@ -292,6 +313,67 @@ message ListUniqueBeaconBlockValuesResponse { [ json_name = "beacon_implementation" ]; } +message ListExecutionPayloadEnvelopeRequest { + string node = 1; + uint64 slot = 2; + uint64 epoch = 3; + string block_root = 4 [ json_name = "block_root" ]; + string node_version = 5 [ json_name = "node_version" ]; + string network = 6; + google.protobuf.Timestamp before = 7; + google.protobuf.Timestamp after = 8; + + PaginationCursor pagination = 9; + + string beacon_implementation = 10 [ json_name = "beacon_implementation" ]; + string id = 11; +} + +message ListExecutionPayloadEnvelopeResponse { + repeated ExecutionPayloadEnvelope execution_payload_envelopes = 1 + [ json_name = "execution_payload_envelopes" ]; +} + +message CountExecutionPayloadEnvelopeRequest { + string node = 1; + uint64 slot = 2; + uint64 epoch = 3; + string block_root = 4 [ json_name = "block_root" ]; + string node_version = 5 [ json_name = "node_version" ]; + string network = 6; + string beacon_implementation = 7 [ json_name = "beacon_implementation" ]; + google.protobuf.Timestamp before = 8; + google.protobuf.Timestamp after = 9; +} + +message CountExecutionPayloadEnvelopeResponse { + google.protobuf.UInt64Value count = 1; +} + +message ListUniqueExecutionPayloadEnvelopeValuesRequest { + enum Field { + node = 0; + slot = 1; + epoch = 2; + block_root = 3; + node_version = 4; + network = 5; + beacon_implementation = 6; + } + repeated Field fields = 1 [ json_name = "fields" ]; +} + +message ListUniqueExecutionPayloadEnvelopeValuesResponse { + repeated string node = 1; + repeated uint64 slot = 2; + repeated uint64 epoch = 3; + repeated string block_root = 4 [ json_name = "block_root" ]; + repeated string node_version = 5 [ json_name = "node_version" ]; + repeated string network = 6; + repeated string beacon_implementation = 7 + [ json_name = "beacon_implementation" ]; +} + message ListBeaconBadBlockRequest { string node = 1; uint64 slot = 2; diff --git a/pkg/proto/tracoor/api/api_grpc.pb.go b/pkg/proto/tracoor/api/api_grpc.pb.go index e47fc96..7997cdd 100644 --- a/pkg/proto/tracoor/api/api_grpc.pb.go +++ b/pkg/proto/tracoor/api/api_grpc.pb.go @@ -1,8 +1,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.6.2 // - protoc (unknown) -// source: api/api.proto +// source: pkg/proto/tracoor/api/api.proto package api @@ -15,29 +15,32 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( - API_GetConfig_FullMethodName = "/api.API/GetConfig" - API_ListBeaconState_FullMethodName = "/api.API/ListBeaconState" - API_CountBeaconState_FullMethodName = "/api.API/CountBeaconState" - API_ListUniqueBeaconStateValues_FullMethodName = "/api.API/ListUniqueBeaconStateValues" - API_ListBeaconBlock_FullMethodName = "/api.API/ListBeaconBlock" - API_CountBeaconBlock_FullMethodName = "/api.API/CountBeaconBlock" - API_ListUniqueBeaconBlockValues_FullMethodName = "/api.API/ListUniqueBeaconBlockValues" - API_ListBeaconBadBlock_FullMethodName = "/api.API/ListBeaconBadBlock" - API_CountBeaconBadBlock_FullMethodName = "/api.API/CountBeaconBadBlock" - API_ListUniqueBeaconBadBlockValues_FullMethodName = "/api.API/ListUniqueBeaconBadBlockValues" - API_ListBeaconBadBlob_FullMethodName = "/api.API/ListBeaconBadBlob" - API_CountBeaconBadBlob_FullMethodName = "/api.API/CountBeaconBadBlob" - API_ListUniqueBeaconBadBlobValues_FullMethodName = "/api.API/ListUniqueBeaconBadBlobValues" - API_ListExecutionBlockTrace_FullMethodName = "/api.API/ListExecutionBlockTrace" - API_CountExecutionBlockTrace_FullMethodName = "/api.API/CountExecutionBlockTrace" - API_ListUniqueExecutionBlockTraceValues_FullMethodName = "/api.API/ListUniqueExecutionBlockTraceValues" - API_ListExecutionBadBlock_FullMethodName = "/api.API/ListExecutionBadBlock" - API_CountExecutionBadBlock_FullMethodName = "/api.API/CountExecutionBadBlock" - API_ListUniqueExecutionBadBlockValues_FullMethodName = "/api.API/ListUniqueExecutionBadBlockValues" + API_GetConfig_FullMethodName = "/api.API/GetConfig" + API_ListBeaconState_FullMethodName = "/api.API/ListBeaconState" + API_CountBeaconState_FullMethodName = "/api.API/CountBeaconState" + API_ListUniqueBeaconStateValues_FullMethodName = "/api.API/ListUniqueBeaconStateValues" + API_ListBeaconBlock_FullMethodName = "/api.API/ListBeaconBlock" + API_CountBeaconBlock_FullMethodName = "/api.API/CountBeaconBlock" + API_ListUniqueBeaconBlockValues_FullMethodName = "/api.API/ListUniqueBeaconBlockValues" + API_ListExecutionPayloadEnvelope_FullMethodName = "/api.API/ListExecutionPayloadEnvelope" + API_CountExecutionPayloadEnvelope_FullMethodName = "/api.API/CountExecutionPayloadEnvelope" + API_ListUniqueExecutionPayloadEnvelopeValues_FullMethodName = "/api.API/ListUniqueExecutionPayloadEnvelopeValues" + API_ListBeaconBadBlock_FullMethodName = "/api.API/ListBeaconBadBlock" + API_CountBeaconBadBlock_FullMethodName = "/api.API/CountBeaconBadBlock" + API_ListUniqueBeaconBadBlockValues_FullMethodName = "/api.API/ListUniqueBeaconBadBlockValues" + API_ListBeaconBadBlob_FullMethodName = "/api.API/ListBeaconBadBlob" + API_CountBeaconBadBlob_FullMethodName = "/api.API/CountBeaconBadBlob" + API_ListUniqueBeaconBadBlobValues_FullMethodName = "/api.API/ListUniqueBeaconBadBlobValues" + API_ListExecutionBlockTrace_FullMethodName = "/api.API/ListExecutionBlockTrace" + API_CountExecutionBlockTrace_FullMethodName = "/api.API/CountExecutionBlockTrace" + API_ListUniqueExecutionBlockTraceValues_FullMethodName = "/api.API/ListUniqueExecutionBlockTraceValues" + API_ListExecutionBadBlock_FullMethodName = "/api.API/ListExecutionBadBlock" + API_CountExecutionBadBlock_FullMethodName = "/api.API/CountExecutionBadBlock" + API_ListUniqueExecutionBadBlockValues_FullMethodName = "/api.API/ListUniqueExecutionBadBlockValues" ) // APIClient is the client API for API service. @@ -51,6 +54,9 @@ type APIClient interface { ListBeaconBlock(ctx context.Context, in *ListBeaconBlockRequest, opts ...grpc.CallOption) (*ListBeaconBlockResponse, error) CountBeaconBlock(ctx context.Context, in *CountBeaconBlockRequest, opts ...grpc.CallOption) (*CountBeaconBlockResponse, error) ListUniqueBeaconBlockValues(ctx context.Context, in *ListUniqueBeaconBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBlockValuesResponse, error) + ListExecutionPayloadEnvelope(ctx context.Context, in *ListExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*ListExecutionPayloadEnvelopeResponse, error) + CountExecutionPayloadEnvelope(ctx context.Context, in *CountExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*CountExecutionPayloadEnvelopeResponse, error) + ListUniqueExecutionPayloadEnvelopeValues(ctx context.Context, in *ListUniqueExecutionPayloadEnvelopeValuesRequest, opts ...grpc.CallOption) (*ListUniqueExecutionPayloadEnvelopeValuesResponse, error) ListBeaconBadBlock(ctx context.Context, in *ListBeaconBadBlockRequest, opts ...grpc.CallOption) (*ListBeaconBadBlockResponse, error) CountBeaconBadBlock(ctx context.Context, in *CountBeaconBadBlockRequest, opts ...grpc.CallOption) (*CountBeaconBadBlockResponse, error) ListUniqueBeaconBadBlockValues(ctx context.Context, in *ListUniqueBeaconBadBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBadBlockValuesResponse, error) @@ -74,8 +80,9 @@ func NewAPIClient(cc grpc.ClientConnInterface) APIClient { } func (c *aPIClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*GetConfigResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetConfigResponse) - err := c.cc.Invoke(ctx, API_GetConfig_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_GetConfig_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -83,8 +90,9 @@ func (c *aPIClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts .. } func (c *aPIClient) ListBeaconState(ctx context.Context, in *ListBeaconStateRequest, opts ...grpc.CallOption) (*ListBeaconStateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListBeaconStateResponse) - err := c.cc.Invoke(ctx, API_ListBeaconState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListBeaconState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -92,8 +100,9 @@ func (c *aPIClient) ListBeaconState(ctx context.Context, in *ListBeaconStateRequ } func (c *aPIClient) CountBeaconState(ctx context.Context, in *CountBeaconStateRequest, opts ...grpc.CallOption) (*CountBeaconStateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountBeaconStateResponse) - err := c.cc.Invoke(ctx, API_CountBeaconState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_CountBeaconState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -101,8 +110,9 @@ func (c *aPIClient) CountBeaconState(ctx context.Context, in *CountBeaconStateRe } func (c *aPIClient) ListUniqueBeaconStateValues(ctx context.Context, in *ListUniqueBeaconStateValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconStateValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueBeaconStateValuesResponse) - err := c.cc.Invoke(ctx, API_ListUniqueBeaconStateValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListUniqueBeaconStateValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -110,8 +120,9 @@ func (c *aPIClient) ListUniqueBeaconStateValues(ctx context.Context, in *ListUni } func (c *aPIClient) ListBeaconBlock(ctx context.Context, in *ListBeaconBlockRequest, opts ...grpc.CallOption) (*ListBeaconBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListBeaconBlockResponse) - err := c.cc.Invoke(ctx, API_ListBeaconBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListBeaconBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -119,8 +130,9 @@ func (c *aPIClient) ListBeaconBlock(ctx context.Context, in *ListBeaconBlockRequ } func (c *aPIClient) CountBeaconBlock(ctx context.Context, in *CountBeaconBlockRequest, opts ...grpc.CallOption) (*CountBeaconBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountBeaconBlockResponse) - err := c.cc.Invoke(ctx, API_CountBeaconBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_CountBeaconBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -128,8 +140,39 @@ func (c *aPIClient) CountBeaconBlock(ctx context.Context, in *CountBeaconBlockRe } func (c *aPIClient) ListUniqueBeaconBlockValues(ctx context.Context, in *ListUniqueBeaconBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBlockValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueBeaconBlockValuesResponse) - err := c.cc.Invoke(ctx, API_ListUniqueBeaconBlockValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListUniqueBeaconBlockValues_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *aPIClient) ListExecutionPayloadEnvelope(ctx context.Context, in *ListExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*ListExecutionPayloadEnvelopeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListExecutionPayloadEnvelopeResponse) + err := c.cc.Invoke(ctx, API_ListExecutionPayloadEnvelope_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *aPIClient) CountExecutionPayloadEnvelope(ctx context.Context, in *CountExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*CountExecutionPayloadEnvelopeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CountExecutionPayloadEnvelopeResponse) + err := c.cc.Invoke(ctx, API_CountExecutionPayloadEnvelope_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *aPIClient) ListUniqueExecutionPayloadEnvelopeValues(ctx context.Context, in *ListUniqueExecutionPayloadEnvelopeValuesRequest, opts ...grpc.CallOption) (*ListUniqueExecutionPayloadEnvelopeValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListUniqueExecutionPayloadEnvelopeValuesResponse) + err := c.cc.Invoke(ctx, API_ListUniqueExecutionPayloadEnvelopeValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -137,8 +180,9 @@ func (c *aPIClient) ListUniqueBeaconBlockValues(ctx context.Context, in *ListUni } func (c *aPIClient) ListBeaconBadBlock(ctx context.Context, in *ListBeaconBadBlockRequest, opts ...grpc.CallOption) (*ListBeaconBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListBeaconBadBlockResponse) - err := c.cc.Invoke(ctx, API_ListBeaconBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListBeaconBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -146,8 +190,9 @@ func (c *aPIClient) ListBeaconBadBlock(ctx context.Context, in *ListBeaconBadBlo } func (c *aPIClient) CountBeaconBadBlock(ctx context.Context, in *CountBeaconBadBlockRequest, opts ...grpc.CallOption) (*CountBeaconBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountBeaconBadBlockResponse) - err := c.cc.Invoke(ctx, API_CountBeaconBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_CountBeaconBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -155,8 +200,9 @@ func (c *aPIClient) CountBeaconBadBlock(ctx context.Context, in *CountBeaconBadB } func (c *aPIClient) ListUniqueBeaconBadBlockValues(ctx context.Context, in *ListUniqueBeaconBadBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBadBlockValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueBeaconBadBlockValuesResponse) - err := c.cc.Invoke(ctx, API_ListUniqueBeaconBadBlockValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListUniqueBeaconBadBlockValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -164,8 +210,9 @@ func (c *aPIClient) ListUniqueBeaconBadBlockValues(ctx context.Context, in *List } func (c *aPIClient) ListBeaconBadBlob(ctx context.Context, in *ListBeaconBadBlobRequest, opts ...grpc.CallOption) (*ListBeaconBadBlobResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListBeaconBadBlobResponse) - err := c.cc.Invoke(ctx, API_ListBeaconBadBlob_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListBeaconBadBlob_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -173,8 +220,9 @@ func (c *aPIClient) ListBeaconBadBlob(ctx context.Context, in *ListBeaconBadBlob } func (c *aPIClient) CountBeaconBadBlob(ctx context.Context, in *CountBeaconBadBlobRequest, opts ...grpc.CallOption) (*CountBeaconBadBlobResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountBeaconBadBlobResponse) - err := c.cc.Invoke(ctx, API_CountBeaconBadBlob_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_CountBeaconBadBlob_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -182,8 +230,9 @@ func (c *aPIClient) CountBeaconBadBlob(ctx context.Context, in *CountBeaconBadBl } func (c *aPIClient) ListUniqueBeaconBadBlobValues(ctx context.Context, in *ListUniqueBeaconBadBlobValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBadBlobValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueBeaconBadBlobValuesResponse) - err := c.cc.Invoke(ctx, API_ListUniqueBeaconBadBlobValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListUniqueBeaconBadBlobValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -191,8 +240,9 @@ func (c *aPIClient) ListUniqueBeaconBadBlobValues(ctx context.Context, in *ListU } func (c *aPIClient) ListExecutionBlockTrace(ctx context.Context, in *ListExecutionBlockTraceRequest, opts ...grpc.CallOption) (*ListExecutionBlockTraceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListExecutionBlockTraceResponse) - err := c.cc.Invoke(ctx, API_ListExecutionBlockTrace_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListExecutionBlockTrace_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -200,8 +250,9 @@ func (c *aPIClient) ListExecutionBlockTrace(ctx context.Context, in *ListExecuti } func (c *aPIClient) CountExecutionBlockTrace(ctx context.Context, in *CountExecutionBlockTraceRequest, opts ...grpc.CallOption) (*CountExecutionBlockTraceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountExecutionBlockTraceResponse) - err := c.cc.Invoke(ctx, API_CountExecutionBlockTrace_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_CountExecutionBlockTrace_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -209,8 +260,9 @@ func (c *aPIClient) CountExecutionBlockTrace(ctx context.Context, in *CountExecu } func (c *aPIClient) ListUniqueExecutionBlockTraceValues(ctx context.Context, in *ListUniqueExecutionBlockTraceValuesRequest, opts ...grpc.CallOption) (*ListUniqueExecutionBlockTraceValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueExecutionBlockTraceValuesResponse) - err := c.cc.Invoke(ctx, API_ListUniqueExecutionBlockTraceValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListUniqueExecutionBlockTraceValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -218,8 +270,9 @@ func (c *aPIClient) ListUniqueExecutionBlockTraceValues(ctx context.Context, in } func (c *aPIClient) ListExecutionBadBlock(ctx context.Context, in *ListExecutionBadBlockRequest, opts ...grpc.CallOption) (*ListExecutionBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListExecutionBadBlockResponse) - err := c.cc.Invoke(ctx, API_ListExecutionBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListExecutionBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -227,8 +280,9 @@ func (c *aPIClient) ListExecutionBadBlock(ctx context.Context, in *ListExecution } func (c *aPIClient) CountExecutionBadBlock(ctx context.Context, in *CountExecutionBadBlockRequest, opts ...grpc.CallOption) (*CountExecutionBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountExecutionBadBlockResponse) - err := c.cc.Invoke(ctx, API_CountExecutionBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_CountExecutionBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -236,8 +290,9 @@ func (c *aPIClient) CountExecutionBadBlock(ctx context.Context, in *CountExecuti } func (c *aPIClient) ListUniqueExecutionBadBlockValues(ctx context.Context, in *ListUniqueExecutionBadBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueExecutionBadBlockValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueExecutionBadBlockValuesResponse) - err := c.cc.Invoke(ctx, API_ListUniqueExecutionBadBlockValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListUniqueExecutionBadBlockValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -246,7 +301,7 @@ func (c *aPIClient) ListUniqueExecutionBadBlockValues(ctx context.Context, in *L // APIServer is the server API for API service. // All implementations must embed UnimplementedAPIServer -// for forward compatibility +// for forward compatibility. type APIServer interface { GetConfig(context.Context, *GetConfigRequest) (*GetConfigResponse, error) ListBeaconState(context.Context, *ListBeaconStateRequest) (*ListBeaconStateResponse, error) @@ -255,6 +310,9 @@ type APIServer interface { ListBeaconBlock(context.Context, *ListBeaconBlockRequest) (*ListBeaconBlockResponse, error) CountBeaconBlock(context.Context, *CountBeaconBlockRequest) (*CountBeaconBlockResponse, error) ListUniqueBeaconBlockValues(context.Context, *ListUniqueBeaconBlockValuesRequest) (*ListUniqueBeaconBlockValuesResponse, error) + ListExecutionPayloadEnvelope(context.Context, *ListExecutionPayloadEnvelopeRequest) (*ListExecutionPayloadEnvelopeResponse, error) + CountExecutionPayloadEnvelope(context.Context, *CountExecutionPayloadEnvelopeRequest) (*CountExecutionPayloadEnvelopeResponse, error) + ListUniqueExecutionPayloadEnvelopeValues(context.Context, *ListUniqueExecutionPayloadEnvelopeValuesRequest) (*ListUniqueExecutionPayloadEnvelopeValuesResponse, error) ListBeaconBadBlock(context.Context, *ListBeaconBadBlockRequest) (*ListBeaconBadBlockResponse, error) CountBeaconBadBlock(context.Context, *CountBeaconBadBlockRequest) (*CountBeaconBadBlockResponse, error) ListUniqueBeaconBadBlockValues(context.Context, *ListUniqueBeaconBadBlockValuesRequest) (*ListUniqueBeaconBadBlockValuesResponse, error) @@ -270,68 +328,81 @@ type APIServer interface { mustEmbedUnimplementedAPIServer() } -// UnimplementedAPIServer must be embedded to have forward compatible implementations. -type UnimplementedAPIServer struct { -} +// UnimplementedAPIServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedAPIServer struct{} func (UnimplementedAPIServer) GetConfig(context.Context, *GetConfigRequest) (*GetConfigResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetConfig not implemented") + return nil, status.Error(codes.Unimplemented, "method GetConfig not implemented") } func (UnimplementedAPIServer) ListBeaconState(context.Context, *ListBeaconStateRequest) (*ListBeaconStateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBeaconState not implemented") + return nil, status.Error(codes.Unimplemented, "method ListBeaconState not implemented") } func (UnimplementedAPIServer) CountBeaconState(context.Context, *CountBeaconStateRequest) (*CountBeaconStateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountBeaconState not implemented") + return nil, status.Error(codes.Unimplemented, "method CountBeaconState not implemented") } func (UnimplementedAPIServer) ListUniqueBeaconStateValues(context.Context, *ListUniqueBeaconStateValuesRequest) (*ListUniqueBeaconStateValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueBeaconStateValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueBeaconStateValues not implemented") } func (UnimplementedAPIServer) ListBeaconBlock(context.Context, *ListBeaconBlockRequest) (*ListBeaconBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBeaconBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method ListBeaconBlock not implemented") } func (UnimplementedAPIServer) CountBeaconBlock(context.Context, *CountBeaconBlockRequest) (*CountBeaconBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountBeaconBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CountBeaconBlock not implemented") } func (UnimplementedAPIServer) ListUniqueBeaconBlockValues(context.Context, *ListUniqueBeaconBlockValuesRequest) (*ListUniqueBeaconBlockValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueBeaconBlockValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueBeaconBlockValues not implemented") +} +func (UnimplementedAPIServer) ListExecutionPayloadEnvelope(context.Context, *ListExecutionPayloadEnvelopeRequest) (*ListExecutionPayloadEnvelopeResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ListExecutionPayloadEnvelope not implemented") +} +func (UnimplementedAPIServer) CountExecutionPayloadEnvelope(context.Context, *CountExecutionPayloadEnvelopeRequest) (*CountExecutionPayloadEnvelopeResponse, error) { + return nil, status.Error(codes.Unimplemented, "method CountExecutionPayloadEnvelope not implemented") +} +func (UnimplementedAPIServer) ListUniqueExecutionPayloadEnvelopeValues(context.Context, *ListUniqueExecutionPayloadEnvelopeValuesRequest) (*ListUniqueExecutionPayloadEnvelopeValuesResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ListUniqueExecutionPayloadEnvelopeValues not implemented") } func (UnimplementedAPIServer) ListBeaconBadBlock(context.Context, *ListBeaconBadBlockRequest) (*ListBeaconBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBeaconBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method ListBeaconBadBlock not implemented") } func (UnimplementedAPIServer) CountBeaconBadBlock(context.Context, *CountBeaconBadBlockRequest) (*CountBeaconBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountBeaconBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CountBeaconBadBlock not implemented") } func (UnimplementedAPIServer) ListUniqueBeaconBadBlockValues(context.Context, *ListUniqueBeaconBadBlockValuesRequest) (*ListUniqueBeaconBadBlockValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueBeaconBadBlockValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueBeaconBadBlockValues not implemented") } func (UnimplementedAPIServer) ListBeaconBadBlob(context.Context, *ListBeaconBadBlobRequest) (*ListBeaconBadBlobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBeaconBadBlob not implemented") + return nil, status.Error(codes.Unimplemented, "method ListBeaconBadBlob not implemented") } func (UnimplementedAPIServer) CountBeaconBadBlob(context.Context, *CountBeaconBadBlobRequest) (*CountBeaconBadBlobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountBeaconBadBlob not implemented") + return nil, status.Error(codes.Unimplemented, "method CountBeaconBadBlob not implemented") } func (UnimplementedAPIServer) ListUniqueBeaconBadBlobValues(context.Context, *ListUniqueBeaconBadBlobValuesRequest) (*ListUniqueBeaconBadBlobValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueBeaconBadBlobValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueBeaconBadBlobValues not implemented") } func (UnimplementedAPIServer) ListExecutionBlockTrace(context.Context, *ListExecutionBlockTraceRequest) (*ListExecutionBlockTraceResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListExecutionBlockTrace not implemented") + return nil, status.Error(codes.Unimplemented, "method ListExecutionBlockTrace not implemented") } func (UnimplementedAPIServer) CountExecutionBlockTrace(context.Context, *CountExecutionBlockTraceRequest) (*CountExecutionBlockTraceResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountExecutionBlockTrace not implemented") + return nil, status.Error(codes.Unimplemented, "method CountExecutionBlockTrace not implemented") } func (UnimplementedAPIServer) ListUniqueExecutionBlockTraceValues(context.Context, *ListUniqueExecutionBlockTraceValuesRequest) (*ListUniqueExecutionBlockTraceValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueExecutionBlockTraceValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueExecutionBlockTraceValues not implemented") } func (UnimplementedAPIServer) ListExecutionBadBlock(context.Context, *ListExecutionBadBlockRequest) (*ListExecutionBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListExecutionBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method ListExecutionBadBlock not implemented") } func (UnimplementedAPIServer) CountExecutionBadBlock(context.Context, *CountExecutionBadBlockRequest) (*CountExecutionBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountExecutionBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CountExecutionBadBlock not implemented") } func (UnimplementedAPIServer) ListUniqueExecutionBadBlockValues(context.Context, *ListUniqueExecutionBadBlockValuesRequest) (*ListUniqueExecutionBadBlockValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueExecutionBadBlockValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueExecutionBadBlockValues not implemented") } func (UnimplementedAPIServer) mustEmbedUnimplementedAPIServer() {} +func (UnimplementedAPIServer) testEmbeddedByValue() {} // UnsafeAPIServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to APIServer will @@ -341,6 +412,13 @@ type UnsafeAPIServer interface { } func RegisterAPIServer(s grpc.ServiceRegistrar, srv APIServer) { + // If the following call panics, it indicates UnimplementedAPIServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&API_ServiceDesc, srv) } @@ -470,6 +548,60 @@ func _API_ListUniqueBeaconBlockValues_Handler(srv interface{}, ctx context.Conte return interceptor(ctx, in, info, handler) } +func _API_ListExecutionPayloadEnvelope_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListExecutionPayloadEnvelopeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(APIServer).ListExecutionPayloadEnvelope(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: API_ListExecutionPayloadEnvelope_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(APIServer).ListExecutionPayloadEnvelope(ctx, req.(*ListExecutionPayloadEnvelopeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _API_CountExecutionPayloadEnvelope_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CountExecutionPayloadEnvelopeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(APIServer).CountExecutionPayloadEnvelope(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: API_CountExecutionPayloadEnvelope_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(APIServer).CountExecutionPayloadEnvelope(ctx, req.(*CountExecutionPayloadEnvelopeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _API_ListUniqueExecutionPayloadEnvelopeValues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListUniqueExecutionPayloadEnvelopeValuesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(APIServer).ListUniqueExecutionPayloadEnvelopeValues(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: API_ListUniqueExecutionPayloadEnvelopeValues_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(APIServer).ListUniqueExecutionPayloadEnvelopeValues(ctx, req.(*ListUniqueExecutionPayloadEnvelopeValuesRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _API_ListBeaconBadBlock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListBeaconBadBlockRequest) if err := dec(in); err != nil { @@ -721,6 +853,18 @@ var API_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListUniqueBeaconBlockValues", Handler: _API_ListUniqueBeaconBlockValues_Handler, }, + { + MethodName: "ListExecutionPayloadEnvelope", + Handler: _API_ListExecutionPayloadEnvelope_Handler, + }, + { + MethodName: "CountExecutionPayloadEnvelope", + Handler: _API_CountExecutionPayloadEnvelope_Handler, + }, + { + MethodName: "ListUniqueExecutionPayloadEnvelopeValues", + Handler: _API_ListUniqueExecutionPayloadEnvelopeValues_Handler, + }, { MethodName: "ListBeaconBadBlock", Handler: _API_ListBeaconBadBlock_Handler, @@ -771,5 +915,5 @@ var API_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "api/api.proto", + Metadata: "pkg/proto/tracoor/api/api.proto", } diff --git a/pkg/proto/tracoor/api/config.yaml b/pkg/proto/tracoor/api/config.yaml index 029ec3a..370d755 100644 --- a/pkg/proto/tracoor/api/config.yaml +++ b/pkg/proto/tracoor/api/config.yaml @@ -25,6 +25,14 @@ http: body: "*" - selector: api.API.CountBeaconBlock post: /v1/api/count-beacon-block + - selector: api.API.ListExecutionPayloadEnvelope + post: /v1/api/list-execution-payload-envelope + body: "*" + - selector: api.API.ListUniqueExecutionPayloadEnvelopeValues + post: /v1/api/list-unique-execution-payload-envelope-values + body: "*" + - selector: api.API.CountExecutionPayloadEnvelope + post: /v1/api/count-execution-payload-envelope body: "*" - selector: api.API.ListBeaconBadBlock diff --git a/pkg/proto/tracoor/api/validate.go b/pkg/proto/tracoor/api/validate.go index 1295cfb..4b24f28 100644 --- a/pkg/proto/tracoor/api/validate.go +++ b/pkg/proto/tracoor/api/validate.go @@ -25,6 +25,16 @@ func (r *ListBeaconBlockRequest) Validate() error { return nil } +func (r *ListExecutionPayloadEnvelopeRequest) Validate() error { + if r.Pagination != nil { + if err := r.Pagination.Validate(); err != nil { + return fmt.Errorf("invalid pagination: %w", err) + } + } + + return nil +} + func (r *ListBeaconBadBlockRequest) Validate() error { if r.Pagination != nil { if err := r.Pagination.Validate(); err != nil { @@ -97,6 +107,18 @@ func (r *ListUniqueBeaconBlockValuesRequest) Validate() error { return nil } +func (r *ListUniqueExecutionPayloadEnvelopeValuesRequest) Validate() error { + if r == nil { + return errors.New("request is nil") + } + + if len(r.Fields) == 0 { + return errors.New("fields is required") + } + + return nil +} + func (r *ListUniqueBeaconBadBlockValuesRequest) Validate() error { if r == nil { return errors.New("request is nil") diff --git a/pkg/proto/tracoor/indexer/indexer.pb.go b/pkg/proto/tracoor/indexer/indexer.pb.go index 07706ac..ae754fe 100644 --- a/pkg/proto/tracoor/indexer/indexer.pb.go +++ b/pkg/proto/tracoor/indexer/indexer.pb.go @@ -1,8 +1,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 +// protoc-gen-go v1.36.6 // protoc (unknown) -// source: indexer/indexer.proto +// source: pkg/proto/tracoor/indexer/indexer.proto package indexer @@ -13,6 +13,7 @@ import ( wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -70,11 +71,11 @@ func (x ListUniqueExecutionBlockTraceValuesRequest_Field) String() string { } func (ListUniqueExecutionBlockTraceValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_indexer_indexer_proto_enumTypes[0].Descriptor() + return file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[0].Descriptor() } func (ListUniqueExecutionBlockTraceValuesRequest_Field) Type() protoreflect.EnumType { - return &file_indexer_indexer_proto_enumTypes[0] + return &file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[0] } func (x ListUniqueExecutionBlockTraceValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -83,7 +84,7 @@ func (x ListUniqueExecutionBlockTraceValuesRequest_Field) Number() protoreflect. // Deprecated: Use ListUniqueExecutionBlockTraceValuesRequest_Field.Descriptor instead. func (ListUniqueExecutionBlockTraceValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{30, 0} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{33, 0} } type ListUniqueBeaconStateValuesRequest_Field int32 @@ -134,11 +135,11 @@ func (x ListUniqueBeaconStateValuesRequest_Field) String() string { } func (ListUniqueBeaconStateValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_indexer_indexer_proto_enumTypes[1].Descriptor() + return file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[1].Descriptor() } func (ListUniqueBeaconStateValuesRequest_Field) Type() protoreflect.EnumType { - return &file_indexer_indexer_proto_enumTypes[1] + return &file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[1] } func (x ListUniqueBeaconStateValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -147,7 +148,7 @@ func (x ListUniqueBeaconStateValuesRequest_Field) Number() protoreflect.EnumNumb // Deprecated: Use ListUniqueBeaconStateValuesRequest_Field.Descriptor instead. func (ListUniqueBeaconStateValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{32, 0} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{35, 0} } type ListUniqueBeaconBlockValuesRequest_Field int32 @@ -198,11 +199,11 @@ func (x ListUniqueBeaconBlockValuesRequest_Field) String() string { } func (ListUniqueBeaconBlockValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_indexer_indexer_proto_enumTypes[2].Descriptor() + return file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[2].Descriptor() } func (ListUniqueBeaconBlockValuesRequest_Field) Type() protoreflect.EnumType { - return &file_indexer_indexer_proto_enumTypes[2] + return &file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[2] } func (x ListUniqueBeaconBlockValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -211,7 +212,7 @@ func (x ListUniqueBeaconBlockValuesRequest_Field) Number() protoreflect.EnumNumb // Deprecated: Use ListUniqueBeaconBlockValuesRequest_Field.Descriptor instead. func (ListUniqueBeaconBlockValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{38, 0} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{41, 0} } type ListUniqueBeaconBadBlockValuesRequest_Field int32 @@ -262,11 +263,11 @@ func (x ListUniqueBeaconBadBlockValuesRequest_Field) String() string { } func (ListUniqueBeaconBadBlockValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_indexer_indexer_proto_enumTypes[3].Descriptor() + return file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[3].Descriptor() } func (ListUniqueBeaconBadBlockValuesRequest_Field) Type() protoreflect.EnumType { - return &file_indexer_indexer_proto_enumTypes[3] + return &file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[3] } func (x ListUniqueBeaconBadBlockValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -275,7 +276,71 @@ func (x ListUniqueBeaconBadBlockValuesRequest_Field) Number() protoreflect.EnumN // Deprecated: Use ListUniqueBeaconBadBlockValuesRequest_Field.Descriptor instead. func (ListUniqueBeaconBadBlockValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{44, 0} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{47, 0} +} + +type ListUniqueExecutionPayloadEnvelopeValuesRequest_Field int32 + +const ( + ListUniqueExecutionPayloadEnvelopeValuesRequest_NODE ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 0 + ListUniqueExecutionPayloadEnvelopeValuesRequest_SLOT ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 1 + ListUniqueExecutionPayloadEnvelopeValuesRequest_EPOCH ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 2 + ListUniqueExecutionPayloadEnvelopeValuesRequest_BLOCK_ROOT ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 3 + ListUniqueExecutionPayloadEnvelopeValuesRequest_NODE_VERSION ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 4 + ListUniqueExecutionPayloadEnvelopeValuesRequest_LOCATION ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 5 + ListUniqueExecutionPayloadEnvelopeValuesRequest_NETWORK ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 6 + ListUniqueExecutionPayloadEnvelopeValuesRequest_BEACON_IMPLEMENTATION ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 7 +) + +// Enum value maps for ListUniqueExecutionPayloadEnvelopeValuesRequest_Field. +var ( + ListUniqueExecutionPayloadEnvelopeValuesRequest_Field_name = map[int32]string{ + 0: "NODE", + 1: "SLOT", + 2: "EPOCH", + 3: "BLOCK_ROOT", + 4: "NODE_VERSION", + 5: "LOCATION", + 6: "NETWORK", + 7: "BEACON_IMPLEMENTATION", + } + ListUniqueExecutionPayloadEnvelopeValuesRequest_Field_value = map[string]int32{ + "NODE": 0, + "SLOT": 1, + "EPOCH": 2, + "BLOCK_ROOT": 3, + "NODE_VERSION": 4, + "LOCATION": 5, + "NETWORK": 6, + "BEACON_IMPLEMENTATION": 7, + } +) + +func (x ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) Enum() *ListUniqueExecutionPayloadEnvelopeValuesRequest_Field { + p := new(ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) + *p = x + return p +} + +func (x ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { + return file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[4].Descriptor() +} + +func (ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) Type() protoreflect.EnumType { + return &file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[4] +} + +func (x ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ListUniqueExecutionPayloadEnvelopeValuesRequest_Field.Descriptor instead. +func (ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) EnumDescriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{49, 0} } type ListUniqueBeaconBadBlobValuesRequest_Field int32 @@ -329,11 +394,11 @@ func (x ListUniqueBeaconBadBlobValuesRequest_Field) String() string { } func (ListUniqueBeaconBadBlobValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_indexer_indexer_proto_enumTypes[4].Descriptor() + return file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[5].Descriptor() } func (ListUniqueBeaconBadBlobValuesRequest_Field) Type() protoreflect.EnumType { - return &file_indexer_indexer_proto_enumTypes[4] + return &file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[5] } func (x ListUniqueBeaconBadBlobValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -342,7 +407,7 @@ func (x ListUniqueBeaconBadBlobValuesRequest_Field) Number() protoreflect.EnumNu // Deprecated: Use ListUniqueBeaconBadBlobValuesRequest_Field.Descriptor instead. func (ListUniqueBeaconBadBlobValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{50, 0} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{59, 0} } type ListUniqueExecutionBadBlockValuesRequest_Field int32 @@ -396,11 +461,11 @@ func (x ListUniqueExecutionBadBlockValuesRequest_Field) String() string { } func (ListUniqueExecutionBadBlockValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_indexer_indexer_proto_enumTypes[5].Descriptor() + return file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[6].Descriptor() } func (ListUniqueExecutionBadBlockValuesRequest_Field) Type() protoreflect.EnumType { - return &file_indexer_indexer_proto_enumTypes[5] + return &file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[6] } func (x ListUniqueExecutionBadBlockValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -409,14 +474,11 @@ func (x ListUniqueExecutionBadBlockValuesRequest_Field) Number() protoreflect.En // Deprecated: Use ListUniqueExecutionBadBlockValuesRequest_Field.Descriptor instead. func (ListUniqueExecutionBadBlockValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{63, 0} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{72, 0} } type BeaconState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` @@ -428,15 +490,15 @@ type BeaconState struct { Network *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,11,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeaconState) Reset() { *x = BeaconState{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BeaconState) String() string { @@ -446,8 +508,8 @@ func (x *BeaconState) String() string { func (*BeaconState) ProtoMessage() {} func (x *BeaconState) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[0] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -459,7 +521,7 @@ func (x *BeaconState) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconState.ProtoReflect.Descriptor instead. func (*BeaconState) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{0} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{0} } func (x *BeaconState) GetId() *wrapperspb.StringValue { @@ -540,10 +602,7 @@ func (x *BeaconState) GetContentEncoding() *wrapperspb.StringValue { } type BeaconBlock struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` @@ -555,15 +614,15 @@ type BeaconBlock struct { Network *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,11,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeaconBlock) Reset() { *x = BeaconBlock{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BeaconBlock) String() string { @@ -573,8 +632,8 @@ func (x *BeaconBlock) String() string { func (*BeaconBlock) ProtoMessage() {} func (x *BeaconBlock) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[1] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -586,7 +645,7 @@ func (x *BeaconBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlock.ProtoReflect.Descriptor instead. func (*BeaconBlock) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{1} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{1} } func (x *BeaconBlock) GetId() *wrapperspb.StringValue { @@ -666,11 +725,132 @@ func (x *BeaconBlock) GetContentEncoding() *wrapperspb.StringValue { return nil } -type BeaconBadBlock struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type ExecutionPayloadEnvelope struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` + FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` + Slot *wrapperspb.UInt64Value `protobuf:"bytes,4,opt,name=slot,proto3" json:"slot,omitempty"` + Epoch *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` + NodeVersion *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=location,proto3" json:"location,omitempty"` + Network *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=network,proto3" json:"network,omitempty"` + BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,11,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecutionPayloadEnvelope) Reset() { + *x = ExecutionPayloadEnvelope{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecutionPayloadEnvelope) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionPayloadEnvelope) ProtoMessage() {} + +func (x *ExecutionPayloadEnvelope) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_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 ExecutionPayloadEnvelope.ProtoReflect.Descriptor instead. +func (*ExecutionPayloadEnvelope) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{2} +} + +func (x *ExecutionPayloadEnvelope) GetId() *wrapperspb.StringValue { + if x != nil { + return x.Id + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetNode() *wrapperspb.StringValue { + if x != nil { + return x.Node + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetFetchedAt() *timestamppb.Timestamp { + if x != nil { + return x.FetchedAt + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetSlot() *wrapperspb.UInt64Value { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetEpoch() *wrapperspb.UInt64Value { + if x != nil { + return x.Epoch + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetBlockRoot() *wrapperspb.StringValue { + if x != nil { + return x.BlockRoot + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetNodeVersion() *wrapperspb.StringValue { + if x != nil { + return x.NodeVersion + } + return nil +} +func (x *ExecutionPayloadEnvelope) GetLocation() *wrapperspb.StringValue { + if x != nil { + return x.Location + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetNetwork() *wrapperspb.StringValue { + if x != nil { + return x.Network + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetBeaconImplementation() *wrapperspb.StringValue { + if x != nil { + return x.BeaconImplementation + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetContentEncoding() *wrapperspb.StringValue { + if x != nil { + return x.ContentEncoding + } + return nil +} + +type BeaconBadBlock struct { + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` @@ -682,15 +862,15 @@ type BeaconBadBlock struct { Network *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,11,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeaconBadBlock) Reset() { *x = BeaconBadBlock{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BeaconBadBlock) String() string { @@ -700,8 +880,8 @@ func (x *BeaconBadBlock) String() string { func (*BeaconBadBlock) ProtoMessage() {} func (x *BeaconBadBlock) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[3] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -713,7 +893,7 @@ func (x *BeaconBadBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBadBlock.ProtoReflect.Descriptor instead. func (*BeaconBadBlock) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{2} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{3} } func (x *BeaconBadBlock) GetId() *wrapperspb.StringValue { @@ -794,10 +974,7 @@ func (x *BeaconBadBlock) GetContentEncoding() *wrapperspb.StringValue { } type BeaconBadBlob struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` @@ -810,15 +987,15 @@ type BeaconBadBlob struct { BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` Index *wrapperspb.UInt64Value `protobuf:"bytes,11,opt,name=index,proto3" json:"index,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,12,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeaconBadBlob) Reset() { *x = BeaconBadBlob{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BeaconBadBlob) String() string { @@ -828,8 +1005,8 @@ func (x *BeaconBadBlob) String() string { func (*BeaconBadBlob) ProtoMessage() {} func (x *BeaconBadBlob) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[4] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -841,7 +1018,7 @@ func (x *BeaconBadBlob) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBadBlob.ProtoReflect.Descriptor instead. func (*BeaconBadBlob) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{3} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{4} } func (x *BeaconBadBlob) GetId() *wrapperspb.StringValue { @@ -929,10 +1106,7 @@ func (x *BeaconBadBlob) GetContentEncoding() *wrapperspb.StringValue { } type ExecutionBlockTrace struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` @@ -943,15 +1117,15 @@ type ExecutionBlockTrace struct { ExecutionImplementation *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` NodeVersion *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecutionBlockTrace) Reset() { *x = ExecutionBlockTrace{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExecutionBlockTrace) String() string { @@ -961,8 +1135,8 @@ func (x *ExecutionBlockTrace) String() string { func (*ExecutionBlockTrace) ProtoMessage() {} func (x *ExecutionBlockTrace) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[5] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -974,7 +1148,7 @@ func (x *ExecutionBlockTrace) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutionBlockTrace.ProtoReflect.Descriptor instead. func (*ExecutionBlockTrace) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{4} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{5} } func (x *ExecutionBlockTrace) GetId() *wrapperspb.StringValue { @@ -1048,10 +1222,7 @@ func (x *ExecutionBlockTrace) GetContentEncoding() *wrapperspb.StringValue { } type ExecutionBadBlock struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` @@ -1063,15 +1234,15 @@ type ExecutionBadBlock struct { NodeVersion *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` BlockExtraData *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=block_extra_data,json=blockExtraData,proto3" json:"block_extra_data,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,11,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecutionBadBlock) Reset() { *x = ExecutionBadBlock{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExecutionBadBlock) String() string { @@ -1081,8 +1252,8 @@ func (x *ExecutionBadBlock) String() string { func (*ExecutionBadBlock) ProtoMessage() {} func (x *ExecutionBadBlock) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[6] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1094,7 +1265,7 @@ func (x *ExecutionBadBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutionBadBlock.ProtoReflect.Descriptor instead. func (*ExecutionBadBlock) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{5} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{6} } func (x *ExecutionBadBlock) GetId() *wrapperspb.StringValue { @@ -1175,20 +1346,17 @@ func (x *ExecutionBadBlock) GetContentEncoding() *wrapperspb.StringValue { } type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ethereum *EthereumConfig `protobuf:"bytes,1,opt,name=ethereum,proto3" json:"ethereum,omitempty"` unknownFields protoimpl.UnknownFields - - Ethereum *EthereumConfig `protobuf:"bytes,1,opt,name=ethereum,proto3" json:"ethereum,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Config) Reset() { *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Config) String() string { @@ -1198,8 +1366,8 @@ func (x *Config) String() string { func (*Config) ProtoMessage() {} func (x *Config) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[7] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1211,7 +1379,7 @@ func (x *Config) ProtoReflect() protoreflect.Message { // Deprecated: Use Config.ProtoReflect.Descriptor instead. func (*Config) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{6} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{7} } func (x *Config) GetEthereum() *EthereumConfig { @@ -1222,22 +1390,19 @@ func (x *Config) GetEthereum() *EthereumConfig { } type EthereumConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Network *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=network,proto3" json:"network,omitempty"` + Config *EthereumNetworkConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` + Tools *ToolsConfig `protobuf:"bytes,3,opt,name=tools,proto3" json:"tools,omitempty"` unknownFields protoimpl.UnknownFields - - Network *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=network,proto3" json:"network,omitempty"` - Config *EthereumNetworkConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` - Tools *ToolsConfig `protobuf:"bytes,3,opt,name=tools,proto3" json:"tools,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EthereumConfig) Reset() { *x = EthereumConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EthereumConfig) String() string { @@ -1247,8 +1412,8 @@ func (x *EthereumConfig) String() string { func (*EthereumConfig) ProtoMessage() {} func (x *EthereumConfig) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[8] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1260,7 +1425,7 @@ func (x *EthereumConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use EthereumConfig.ProtoReflect.Descriptor instead. func (*EthereumConfig) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{7} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{8} } func (x *EthereumConfig) GetNetwork() *wrapperspb.StringValue { @@ -1285,22 +1450,19 @@ func (x *EthereumConfig) GetTools() *ToolsConfig { } type EthereumNetworkConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Repository *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` + Branch *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` + Path *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` unknownFields protoimpl.UnknownFields - - Repository *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - Branch *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` - Path *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EthereumNetworkConfig) Reset() { *x = EthereumNetworkConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EthereumNetworkConfig) String() string { @@ -1310,8 +1472,8 @@ func (x *EthereumNetworkConfig) String() string { func (*EthereumNetworkConfig) ProtoMessage() {} func (x *EthereumNetworkConfig) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[9] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1323,7 +1485,7 @@ func (x *EthereumNetworkConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use EthereumNetworkConfig.ProtoReflect.Descriptor instead. func (*EthereumNetworkConfig) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{8} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{9} } func (x *EthereumNetworkConfig) GetRepository() *wrapperspb.StringValue { @@ -1348,22 +1510,19 @@ func (x *EthereumNetworkConfig) GetPath() *wrapperspb.StringValue { } type ToolsConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ncli *GitRepositoryConfig `protobuf:"bytes,1,opt,name=ncli,proto3" json:"ncli,omitempty"` + Lcli *GitRepositoryConfig `protobuf:"bytes,2,opt,name=lcli,proto3" json:"lcli,omitempty"` + Zcli *ZcliConfig `protobuf:"bytes,3,opt,name=zcli,proto3" json:"zcli,omitempty"` unknownFields protoimpl.UnknownFields - - Ncli *GitRepositoryConfig `protobuf:"bytes,1,opt,name=ncli,proto3" json:"ncli,omitempty"` - Lcli *GitRepositoryConfig `protobuf:"bytes,2,opt,name=lcli,proto3" json:"lcli,omitempty"` - Zcli *ZcliConfig `protobuf:"bytes,3,opt,name=zcli,proto3" json:"zcli,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ToolsConfig) Reset() { *x = ToolsConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ToolsConfig) String() string { @@ -1373,8 +1532,8 @@ func (x *ToolsConfig) String() string { func (*ToolsConfig) ProtoMessage() {} func (x *ToolsConfig) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[10] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1386,7 +1545,7 @@ func (x *ToolsConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ToolsConfig.ProtoReflect.Descriptor instead. func (*ToolsConfig) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{9} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{10} } func (x *ToolsConfig) GetNcli() *GitRepositoryConfig { @@ -1411,21 +1570,18 @@ func (x *ToolsConfig) GetZcli() *ZcliConfig { } type GitRepositoryConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Repository *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` + Branch *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` unknownFields protoimpl.UnknownFields - - Repository *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - Branch *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GitRepositoryConfig) Reset() { *x = GitRepositoryConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GitRepositoryConfig) String() string { @@ -1435,8 +1591,8 @@ func (x *GitRepositoryConfig) String() string { func (*GitRepositoryConfig) ProtoMessage() {} func (x *GitRepositoryConfig) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[11] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1448,7 +1604,7 @@ func (x *GitRepositoryConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use GitRepositoryConfig.ProtoReflect.Descriptor instead. func (*GitRepositoryConfig) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{10} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{11} } func (x *GitRepositoryConfig) GetRepository() *wrapperspb.StringValue { @@ -1466,20 +1622,17 @@ func (x *GitRepositoryConfig) GetBranch() *wrapperspb.StringValue { } type ZcliConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fork *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=fork,proto3" json:"fork,omitempty"` unknownFields protoimpl.UnknownFields - - Fork *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=fork,proto3" json:"fork,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ZcliConfig) Reset() { *x = ZcliConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ZcliConfig) String() string { @@ -1489,8 +1642,8 @@ func (x *ZcliConfig) String() string { func (*ZcliConfig) ProtoMessage() {} func (x *ZcliConfig) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[12] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1502,7 +1655,7 @@ func (x *ZcliConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ZcliConfig.ProtoReflect.Descriptor instead. func (*ZcliConfig) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{11} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{12} } func (x *ZcliConfig) GetFork() *wrapperspb.StringValue { @@ -1513,18 +1666,16 @@ func (x *ZcliConfig) GetFork() *wrapperspb.StringValue { } type GetConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetConfigRequest) Reset() { *x = GetConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetConfigRequest) String() string { @@ -1534,8 +1685,8 @@ func (x *GetConfigRequest) String() string { func (*GetConfigRequest) ProtoMessage() {} func (x *GetConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[13] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1547,24 +1698,21 @@ func (x *GetConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetConfigRequest.ProtoReflect.Descriptor instead. func (*GetConfigRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{12} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{13} } type GetConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` unknownFields protoimpl.UnknownFields - - Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetConfigResponse) Reset() { *x = GetConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetConfigResponse) String() string { @@ -1574,8 +1722,8 @@ func (x *GetConfigResponse) String() string { func (*GetConfigResponse) ProtoMessage() {} func (x *GetConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[14] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1587,7 +1735,7 @@ func (x *GetConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetConfigResponse.ProtoReflect.Descriptor instead. func (*GetConfigResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{13} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{14} } func (x *GetConfigResponse) GetConfig() *Config { @@ -1598,21 +1746,18 @@ func (x *GetConfigResponse) GetConfig() *Config { } type GetStorageHandshakeTokenRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetStorageHandshakeTokenRequest) Reset() { *x = GetStorageHandshakeTokenRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetStorageHandshakeTokenRequest) String() string { @@ -1622,8 +1767,8 @@ func (x *GetStorageHandshakeTokenRequest) String() string { func (*GetStorageHandshakeTokenRequest) ProtoMessage() {} func (x *GetStorageHandshakeTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[15] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1635,7 +1780,7 @@ func (x *GetStorageHandshakeTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStorageHandshakeTokenRequest.ProtoReflect.Descriptor instead. func (*GetStorageHandshakeTokenRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{14} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{15} } func (x *GetStorageHandshakeTokenRequest) GetNode() string { @@ -1653,20 +1798,17 @@ func (x *GetStorageHandshakeTokenRequest) GetToken() string { } type GetStorageHandshakeTokenResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetStorageHandshakeTokenResponse) Reset() { *x = GetStorageHandshakeTokenResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetStorageHandshakeTokenResponse) String() string { @@ -1676,8 +1818,8 @@ func (x *GetStorageHandshakeTokenResponse) String() string { func (*GetStorageHandshakeTokenResponse) ProtoMessage() {} func (x *GetStorageHandshakeTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[16] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1689,7 +1831,7 @@ func (x *GetStorageHandshakeTokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStorageHandshakeTokenResponse.ProtoReflect.Descriptor instead. func (*GetStorageHandshakeTokenResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{15} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{16} } func (x *GetStorageHandshakeTokenResponse) GetToken() string { @@ -1700,10 +1842,7 @@ func (x *GetStorageHandshakeTokenResponse) GetToken() string { } type CreateBeaconStateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` Slot *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=slot,proto3" json:"slot,omitempty"` @@ -1714,15 +1853,15 @@ type CreateBeaconStateRequest struct { Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateBeaconStateRequest) Reset() { *x = CreateBeaconStateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBeaconStateRequest) String() string { @@ -1732,8 +1871,8 @@ func (x *CreateBeaconStateRequest) String() string { func (*CreateBeaconStateRequest) ProtoMessage() {} func (x *CreateBeaconStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[17] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1745,7 +1884,7 @@ func (x *CreateBeaconStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBeaconStateRequest.ProtoReflect.Descriptor instead. func (*CreateBeaconStateRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{16} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{17} } func (x *CreateBeaconStateRequest) GetNode() *wrapperspb.StringValue { @@ -1819,20 +1958,17 @@ func (x *CreateBeaconStateRequest) GetContentEncoding() *wrapperspb.StringValue } type CreateBeaconStateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateBeaconStateResponse) Reset() { *x = CreateBeaconStateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBeaconStateResponse) String() string { @@ -1842,8 +1978,8 @@ func (x *CreateBeaconStateResponse) String() string { func (*CreateBeaconStateResponse) ProtoMessage() {} func (x *CreateBeaconStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[18] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1855,7 +1991,7 @@ func (x *CreateBeaconStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBeaconStateResponse.ProtoReflect.Descriptor instead. func (*CreateBeaconStateResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{17} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{18} } func (x *CreateBeaconStateResponse) GetId() *wrapperspb.StringValue { @@ -1866,10 +2002,7 @@ func (x *CreateBeaconStateResponse) GetId() *wrapperspb.StringValue { } type CreateBeaconBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` Slot *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=slot,proto3" json:"slot,omitempty"` @@ -1880,15 +2013,15 @@ type CreateBeaconBlockRequest struct { Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateBeaconBlockRequest) Reset() { *x = CreateBeaconBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBeaconBlockRequest) String() string { @@ -1898,8 +2031,8 @@ func (x *CreateBeaconBlockRequest) String() string { func (*CreateBeaconBlockRequest) ProtoMessage() {} func (x *CreateBeaconBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[19] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1911,7 +2044,7 @@ func (x *CreateBeaconBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBeaconBlockRequest.ProtoReflect.Descriptor instead. func (*CreateBeaconBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{18} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{19} } func (x *CreateBeaconBlockRequest) GetNode() *wrapperspb.StringValue { @@ -1985,20 +2118,17 @@ func (x *CreateBeaconBlockRequest) GetContentEncoding() *wrapperspb.StringValue } type CreateBeaconBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateBeaconBlockResponse) Reset() { *x = CreateBeaconBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBeaconBlockResponse) String() string { @@ -2008,8 +2138,8 @@ func (x *CreateBeaconBlockResponse) String() string { func (*CreateBeaconBlockResponse) ProtoMessage() {} func (x *CreateBeaconBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[20] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2021,7 +2151,7 @@ func (x *CreateBeaconBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBeaconBlockResponse.ProtoReflect.Descriptor instead. func (*CreateBeaconBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{19} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{20} } func (x *CreateBeaconBlockResponse) GetId() *wrapperspb.StringValue { @@ -2031,11 +2161,168 @@ func (x *CreateBeaconBlockResponse) GetId() *wrapperspb.StringValue { return nil } -type CreateBeaconBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type CreateExecutionPayloadEnvelopeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + FetchedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` + Slot *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=slot,proto3" json:"slot,omitempty"` + Epoch *wrapperspb.UInt64Value `protobuf:"bytes,4,opt,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` + NodeVersion *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=location,proto3" json:"location,omitempty"` + Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` + BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateExecutionPayloadEnvelopeRequest) Reset() { + *x = CreateExecutionPayloadEnvelopeRequest{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateExecutionPayloadEnvelopeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateExecutionPayloadEnvelopeRequest) ProtoMessage() {} + +func (x *CreateExecutionPayloadEnvelopeRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_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 CreateExecutionPayloadEnvelopeRequest.ProtoReflect.Descriptor instead. +func (*CreateExecutionPayloadEnvelopeRequest) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{21} +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetNode() *wrapperspb.StringValue { + if x != nil { + return x.Node + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetFetchedAt() *timestamppb.Timestamp { + if x != nil { + return x.FetchedAt + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetSlot() *wrapperspb.UInt64Value { + if x != nil { + return x.Slot + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetEpoch() *wrapperspb.UInt64Value { + if x != nil { + return x.Epoch + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetBlockRoot() *wrapperspb.StringValue { + if x != nil { + return x.BlockRoot + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetNodeVersion() *wrapperspb.StringValue { + if x != nil { + return x.NodeVersion + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetLocation() *wrapperspb.StringValue { + if x != nil { + return x.Location + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetNetwork() *wrapperspb.StringValue { + if x != nil { + return x.Network + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetBeaconImplementation() *wrapperspb.StringValue { + if x != nil { + return x.BeaconImplementation + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetContentEncoding() *wrapperspb.StringValue { + if x != nil { + return x.ContentEncoding + } + return nil +} + +type CreateExecutionPayloadEnvelopeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateExecutionPayloadEnvelopeResponse) Reset() { + *x = CreateExecutionPayloadEnvelopeResponse{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateExecutionPayloadEnvelopeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateExecutionPayloadEnvelopeResponse) ProtoMessage() {} + +func (x *CreateExecutionPayloadEnvelopeResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_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 CreateExecutionPayloadEnvelopeResponse.ProtoReflect.Descriptor instead. +func (*CreateExecutionPayloadEnvelopeResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{22} +} + +func (x *CreateExecutionPayloadEnvelopeResponse) GetId() *wrapperspb.StringValue { + if x != nil { + return x.Id + } + return nil +} +type CreateBeaconBadBlockRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` Node *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` Slot *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=slot,proto3" json:"slot,omitempty"` @@ -2046,15 +2333,15 @@ type CreateBeaconBadBlockRequest struct { Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateBeaconBadBlockRequest) Reset() { *x = CreateBeaconBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBeaconBadBlockRequest) String() string { @@ -2064,8 +2351,8 @@ func (x *CreateBeaconBadBlockRequest) String() string { func (*CreateBeaconBadBlockRequest) ProtoMessage() {} func (x *CreateBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[23] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2077,7 +2364,7 @@ func (x *CreateBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBeaconBadBlockRequest.ProtoReflect.Descriptor instead. func (*CreateBeaconBadBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{20} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{23} } func (x *CreateBeaconBadBlockRequest) GetNode() *wrapperspb.StringValue { @@ -2151,20 +2438,17 @@ func (x *CreateBeaconBadBlockRequest) GetContentEncoding() *wrapperspb.StringVal } type CreateBeaconBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateBeaconBadBlockResponse) Reset() { *x = CreateBeaconBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBeaconBadBlockResponse) String() string { @@ -2174,8 +2458,8 @@ func (x *CreateBeaconBadBlockResponse) String() string { func (*CreateBeaconBadBlockResponse) ProtoMessage() {} func (x *CreateBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[24] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2187,7 +2471,7 @@ func (x *CreateBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBeaconBadBlockResponse.ProtoReflect.Descriptor instead. func (*CreateBeaconBadBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{21} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{24} } func (x *CreateBeaconBadBlockResponse) GetId() *wrapperspb.StringValue { @@ -2198,10 +2482,7 @@ func (x *CreateBeaconBadBlockResponse) GetId() *wrapperspb.StringValue { } type CreateBeaconBadBlobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` Slot *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=slot,proto3" json:"slot,omitempty"` @@ -2213,15 +2494,15 @@ type CreateBeaconBadBlobRequest struct { BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` Index *wrapperspb.UInt64Value `protobuf:"bytes,10,opt,name=index,proto3" json:"index,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,11,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateBeaconBadBlobRequest) Reset() { *x = CreateBeaconBadBlobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBeaconBadBlobRequest) String() string { @@ -2231,8 +2512,8 @@ func (x *CreateBeaconBadBlobRequest) String() string { func (*CreateBeaconBadBlobRequest) ProtoMessage() {} func (x *CreateBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[25] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2244,7 +2525,7 @@ func (x *CreateBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBeaconBadBlobRequest.ProtoReflect.Descriptor instead. func (*CreateBeaconBadBlobRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{22} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{25} } func (x *CreateBeaconBadBlobRequest) GetNode() *wrapperspb.StringValue { @@ -2325,20 +2606,17 @@ func (x *CreateBeaconBadBlobRequest) GetContentEncoding() *wrapperspb.StringValu } type CreateBeaconBadBlobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateBeaconBadBlobResponse) Reset() { *x = CreateBeaconBadBlobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBeaconBadBlobResponse) String() string { @@ -2348,8 +2626,8 @@ func (x *CreateBeaconBadBlobResponse) String() string { func (*CreateBeaconBadBlobResponse) ProtoMessage() {} func (x *CreateBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[26] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2361,7 +2639,7 @@ func (x *CreateBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBeaconBadBlobResponse.ProtoReflect.Descriptor instead. func (*CreateBeaconBadBlobResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{23} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{26} } func (x *CreateBeaconBadBlobResponse) GetId() *wrapperspb.StringValue { @@ -2372,10 +2650,7 @@ func (x *CreateBeaconBadBlobResponse) GetId() *wrapperspb.StringValue { } type CreateExecutionBlockTraceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` BlockHash *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` @@ -2385,15 +2660,15 @@ type CreateExecutionBlockTraceRequest struct { ExecutionImplementation *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` NodeVersion *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateExecutionBlockTraceRequest) Reset() { *x = CreateExecutionBlockTraceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateExecutionBlockTraceRequest) String() string { @@ -2403,8 +2678,8 @@ func (x *CreateExecutionBlockTraceRequest) String() string { func (*CreateExecutionBlockTraceRequest) ProtoMessage() {} func (x *CreateExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[27] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2416,7 +2691,7 @@ func (x *CreateExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateExecutionBlockTraceRequest.ProtoReflect.Descriptor instead. func (*CreateExecutionBlockTraceRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{24} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{27} } func (x *CreateExecutionBlockTraceRequest) GetNode() *wrapperspb.StringValue { @@ -2483,20 +2758,17 @@ func (x *CreateExecutionBlockTraceRequest) GetContentEncoding() *wrapperspb.Stri } type CreateExecutionBlockTraceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateExecutionBlockTraceResponse) Reset() { *x = CreateExecutionBlockTraceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateExecutionBlockTraceResponse) String() string { @@ -2506,8 +2778,8 @@ func (x *CreateExecutionBlockTraceResponse) String() string { func (*CreateExecutionBlockTraceResponse) ProtoMessage() {} func (x *CreateExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[28] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2519,7 +2791,7 @@ func (x *CreateExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message // Deprecated: Use CreateExecutionBlockTraceResponse.ProtoReflect.Descriptor instead. func (*CreateExecutionBlockTraceResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{25} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{28} } func (x *CreateExecutionBlockTraceResponse) GetId() *wrapperspb.StringValue { @@ -2530,10 +2802,7 @@ func (x *CreateExecutionBlockTraceResponse) GetId() *wrapperspb.StringValue { } type ListExecutionBlockTraceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` BlockNumber int64 `protobuf:"varint,2,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` BlockHash string `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` @@ -2545,15 +2814,15 @@ type ListExecutionBlockTraceRequest struct { Id string `protobuf:"bytes,9,opt,name=id,proto3" json:"id,omitempty"` ExecutionImplementation string `protobuf:"bytes,10,opt,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` NodeVersion string `protobuf:"bytes,11,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListExecutionBlockTraceRequest) Reset() { *x = ListExecutionBlockTraceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListExecutionBlockTraceRequest) String() string { @@ -2563,8 +2832,8 @@ func (x *ListExecutionBlockTraceRequest) String() string { func (*ListExecutionBlockTraceRequest) ProtoMessage() {} func (x *ListExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[29] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2576,7 +2845,7 @@ func (x *ListExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExecutionBlockTraceRequest.ProtoReflect.Descriptor instead. func (*ListExecutionBlockTraceRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{26} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{29} } func (x *ListExecutionBlockTraceRequest) GetNode() string { @@ -2657,20 +2926,17 @@ func (x *ListExecutionBlockTraceRequest) GetNodeVersion() string { } type ListExecutionBlockTraceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` ExecutionBlockTraces []*ExecutionBlockTrace `protobuf:"bytes,1,rep,name=execution_block_traces,json=executionBlockTraces,proto3" json:"execution_block_traces,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListExecutionBlockTraceResponse) Reset() { *x = ListExecutionBlockTraceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListExecutionBlockTraceResponse) String() string { @@ -2680,8 +2946,8 @@ func (x *ListExecutionBlockTraceResponse) String() string { func (*ListExecutionBlockTraceResponse) ProtoMessage() {} func (x *ListExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[30] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2693,7 +2959,7 @@ func (x *ListExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExecutionBlockTraceResponse.ProtoReflect.Descriptor instead. func (*ListExecutionBlockTraceResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{27} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{30} } func (x *ListExecutionBlockTraceResponse) GetExecutionBlockTraces() []*ExecutionBlockTrace { @@ -2704,10 +2970,7 @@ func (x *ListExecutionBlockTraceResponse) GetExecutionBlockTraces() []*Execution } type CountExecutionBlockTraceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` BlockNumber int64 `protobuf:"varint,2,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` BlockHash string `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` @@ -2717,15 +2980,15 @@ type CountExecutionBlockTraceRequest struct { After *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=after,proto3" json:"after,omitempty"` ExecutionImplementation string `protobuf:"bytes,8,opt,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` NodeVersion string `protobuf:"bytes,9,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountExecutionBlockTraceRequest) Reset() { *x = CountExecutionBlockTraceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountExecutionBlockTraceRequest) String() string { @@ -2735,8 +2998,8 @@ func (x *CountExecutionBlockTraceRequest) String() string { func (*CountExecutionBlockTraceRequest) ProtoMessage() {} func (x *CountExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[31] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2748,7 +3011,7 @@ func (x *CountExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountExecutionBlockTraceRequest.ProtoReflect.Descriptor instead. func (*CountExecutionBlockTraceRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{28} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{31} } func (x *CountExecutionBlockTraceRequest) GetNode() string { @@ -2815,20 +3078,17 @@ func (x *CountExecutionBlockTraceRequest) GetNodeVersion() string { } type CountExecutionBlockTraceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountExecutionBlockTraceResponse) Reset() { *x = CountExecutionBlockTraceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountExecutionBlockTraceResponse) String() string { @@ -2838,8 +3098,8 @@ func (x *CountExecutionBlockTraceResponse) String() string { func (*CountExecutionBlockTraceResponse) ProtoMessage() {} func (x *CountExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[32] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2851,7 +3111,7 @@ func (x *CountExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountExecutionBlockTraceResponse.ProtoReflect.Descriptor instead. func (*CountExecutionBlockTraceResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{29} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{32} } func (x *CountExecutionBlockTraceResponse) GetCount() *wrapperspb.UInt64Value { @@ -2862,20 +3122,17 @@ func (x *CountExecutionBlockTraceResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueExecutionBlockTraceValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueExecutionBlockTraceValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueExecutionBlockTraceValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueExecutionBlockTraceValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueExecutionBlockTraceValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueExecutionBlockTraceValuesRequest) Reset() { *x = ListUniqueExecutionBlockTraceValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueExecutionBlockTraceValuesRequest) String() string { @@ -2885,8 +3142,8 @@ func (x *ListUniqueExecutionBlockTraceValuesRequest) String() string { func (*ListUniqueExecutionBlockTraceValuesRequest) ProtoMessage() {} func (x *ListUniqueExecutionBlockTraceValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[33] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2898,7 +3155,7 @@ func (x *ListUniqueExecutionBlockTraceValuesRequest) ProtoReflect() protoreflect // Deprecated: Use ListUniqueExecutionBlockTraceValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueExecutionBlockTraceValuesRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{30} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{33} } func (x *ListUniqueExecutionBlockTraceValuesRequest) GetFields() []ListUniqueExecutionBlockTraceValuesRequest_Field { @@ -2909,27 +3166,24 @@ func (x *ListUniqueExecutionBlockTraceValuesRequest) GetFields() []ListUniqueExe } type ListUniqueExecutionBlockTraceValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - BlockHash []string `protobuf:"bytes,2,rep,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` - BlockNumber []int64 `protobuf:"varint,3,rep,packed,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` - Location []string `protobuf:"bytes,4,rep,name=location,proto3" json:"location,omitempty"` - Network []string `protobuf:"bytes,5,rep,name=network,proto3" json:"network,omitempty"` - ExecutionImplementation []string `protobuf:"bytes,6,rep,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` - NodeVersion []string `protobuf:"bytes,7,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` - ClientVersion []string `protobuf:"bytes,8,rep,name=client_version,json=clientVersion,proto3" json:"client_version,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + BlockHash []string `protobuf:"bytes,2,rep,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` + BlockNumber []int64 `protobuf:"varint,3,rep,packed,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` + Location []string `protobuf:"bytes,4,rep,name=location,proto3" json:"location,omitempty"` + Network []string `protobuf:"bytes,5,rep,name=network,proto3" json:"network,omitempty"` + ExecutionImplementation []string `protobuf:"bytes,6,rep,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` + NodeVersion []string `protobuf:"bytes,7,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + ClientVersion []string `protobuf:"bytes,8,rep,name=client_version,json=clientVersion,proto3" json:"client_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueExecutionBlockTraceValuesResponse) Reset() { *x = ListUniqueExecutionBlockTraceValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueExecutionBlockTraceValuesResponse) String() string { @@ -2939,8 +3193,8 @@ func (x *ListUniqueExecutionBlockTraceValuesResponse) String() string { func (*ListUniqueExecutionBlockTraceValuesResponse) ProtoMessage() {} func (x *ListUniqueExecutionBlockTraceValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[34] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2952,7 +3206,7 @@ func (x *ListUniqueExecutionBlockTraceValuesResponse) ProtoReflect() protoreflec // Deprecated: Use ListUniqueExecutionBlockTraceValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueExecutionBlockTraceValuesResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{31} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{34} } func (x *ListUniqueExecutionBlockTraceValuesResponse) GetNode() []string { @@ -3012,20 +3266,17 @@ func (x *ListUniqueExecutionBlockTraceValuesResponse) GetClientVersion() []strin } type ListUniqueBeaconStateValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueBeaconStateValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueBeaconStateValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueBeaconStateValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueBeaconStateValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconStateValuesRequest) Reset() { *x = ListUniqueBeaconStateValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconStateValuesRequest) String() string { @@ -3035,8 +3286,8 @@ func (x *ListUniqueBeaconStateValuesRequest) String() string { func (*ListUniqueBeaconStateValuesRequest) ProtoMessage() {} func (x *ListUniqueBeaconStateValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[35] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3048,7 +3299,7 @@ func (x *ListUniqueBeaconStateValuesRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ListUniqueBeaconStateValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconStateValuesRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{32} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{35} } func (x *ListUniqueBeaconStateValuesRequest) GetFields() []ListUniqueBeaconStateValuesRequest_Field { @@ -3059,27 +3310,24 @@ func (x *ListUniqueBeaconStateValuesRequest) GetFields() []ListUniqueBeaconState } type ListUniqueBeaconStateValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` - Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` - StateRoot []string `protobuf:"bytes,4,rep,name=state_root,json=stateRoot,proto3" json:"state_root,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` - Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` - Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` - BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + StateRoot []string `protobuf:"bytes,4,rep,name=state_root,json=stateRoot,proto3" json:"state_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` + Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconStateValuesResponse) Reset() { *x = ListUniqueBeaconStateValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconStateValuesResponse) String() string { @@ -3089,8 +3337,8 @@ func (x *ListUniqueBeaconStateValuesResponse) String() string { func (*ListUniqueBeaconStateValuesResponse) ProtoMessage() {} func (x *ListUniqueBeaconStateValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[36] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3102,7 +3350,7 @@ func (x *ListUniqueBeaconStateValuesResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use ListUniqueBeaconStateValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconStateValuesResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{33} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{36} } func (x *ListUniqueBeaconStateValuesResponse) GetNode() []string { @@ -3162,10 +3410,7 @@ func (x *ListUniqueBeaconStateValuesResponse) GetBeaconImplementation() []string } type ListBeaconStateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -3178,15 +3423,15 @@ type ListBeaconStateRequest struct { Pagination *PaginationCursor `protobuf:"bytes,10,opt,name=pagination,proto3" json:"pagination,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` BeaconImplementation string `protobuf:"bytes,12,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconStateRequest) Reset() { *x = ListBeaconStateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconStateRequest) String() string { @@ -3196,8 +3441,8 @@ func (x *ListBeaconStateRequest) String() string { func (*ListBeaconStateRequest) ProtoMessage() {} func (x *ListBeaconStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[37] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3209,7 +3454,7 @@ func (x *ListBeaconStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconStateRequest.ProtoReflect.Descriptor instead. func (*ListBeaconStateRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{34} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{37} } func (x *ListBeaconStateRequest) GetNode() string { @@ -3297,20 +3542,17 @@ func (x *ListBeaconStateRequest) GetBeaconImplementation() string { } type ListBeaconStateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + BeaconStates []*BeaconState `protobuf:"bytes,1,rep,name=beacon_states,json=beaconStates,proto3" json:"beacon_states,omitempty"` unknownFields protoimpl.UnknownFields - - BeaconStates []*BeaconState `protobuf:"bytes,1,rep,name=beacon_states,json=beaconStates,proto3" json:"beacon_states,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListBeaconStateResponse) Reset() { *x = ListBeaconStateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconStateResponse) String() string { @@ -3320,8 +3562,8 @@ func (x *ListBeaconStateResponse) String() string { func (*ListBeaconStateResponse) ProtoMessage() {} func (x *ListBeaconStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[38] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3333,7 +3575,7 @@ func (x *ListBeaconStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconStateResponse.ProtoReflect.Descriptor instead. func (*ListBeaconStateResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{35} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{38} } func (x *ListBeaconStateResponse) GetBeaconStates() []*BeaconState { @@ -3344,10 +3586,7 @@ func (x *ListBeaconStateResponse) GetBeaconStates() []*BeaconState { } type CountBeaconStateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -3359,15 +3598,15 @@ type CountBeaconStateRequest struct { After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountBeaconStateRequest) Reset() { *x = CountBeaconStateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconStateRequest) String() string { @@ -3377,8 +3616,8 @@ func (x *CountBeaconStateRequest) String() string { func (*CountBeaconStateRequest) ProtoMessage() {} func (x *CountBeaconStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[39] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3390,7 +3629,7 @@ func (x *CountBeaconStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconStateRequest.ProtoReflect.Descriptor instead. func (*CountBeaconStateRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{36} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{39} } func (x *CountBeaconStateRequest) GetNode() string { @@ -3471,20 +3710,17 @@ func (x *CountBeaconStateRequest) GetId() string { } type CountBeaconStateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountBeaconStateResponse) Reset() { *x = CountBeaconStateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconStateResponse) String() string { @@ -3494,8 +3730,8 @@ func (x *CountBeaconStateResponse) String() string { func (*CountBeaconStateResponse) ProtoMessage() {} func (x *CountBeaconStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[40] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3507,7 +3743,7 @@ func (x *CountBeaconStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconStateResponse.ProtoReflect.Descriptor instead. func (*CountBeaconStateResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{37} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{40} } func (x *CountBeaconStateResponse) GetCount() *wrapperspb.UInt64Value { @@ -3518,20 +3754,17 @@ func (x *CountBeaconStateResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueBeaconBlockValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueBeaconBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueBeaconBlockValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueBeaconBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueBeaconBlockValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBlockValuesRequest) Reset() { *x = ListUniqueBeaconBlockValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBlockValuesRequest) String() string { @@ -3541,8 +3774,8 @@ func (x *ListUniqueBeaconBlockValuesRequest) String() string { func (*ListUniqueBeaconBlockValuesRequest) ProtoMessage() {} func (x *ListUniqueBeaconBlockValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[41] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3554,7 +3787,7 @@ func (x *ListUniqueBeaconBlockValuesRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ListUniqueBeaconBlockValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBlockValuesRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{38} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{41} } func (x *ListUniqueBeaconBlockValuesRequest) GetFields() []ListUniqueBeaconBlockValuesRequest_Field { @@ -3565,27 +3798,24 @@ func (x *ListUniqueBeaconBlockValuesRequest) GetFields() []ListUniqueBeaconBlock } type ListUniqueBeaconBlockValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` - Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` - BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` - Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` - Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` - BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` + Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBlockValuesResponse) Reset() { *x = ListUniqueBeaconBlockValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBlockValuesResponse) String() string { @@ -3595,8 +3825,8 @@ func (x *ListUniqueBeaconBlockValuesResponse) String() string { func (*ListUniqueBeaconBlockValuesResponse) ProtoMessage() {} func (x *ListUniqueBeaconBlockValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[42] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3608,7 +3838,7 @@ func (x *ListUniqueBeaconBlockValuesResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use ListUniqueBeaconBlockValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBlockValuesResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{39} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{42} } func (x *ListUniqueBeaconBlockValuesResponse) GetNode() []string { @@ -3668,10 +3898,7 @@ func (x *ListUniqueBeaconBlockValuesResponse) GetBeaconImplementation() []string } type ListBeaconBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -3684,15 +3911,15 @@ type ListBeaconBlockRequest struct { Pagination *PaginationCursor `protobuf:"bytes,10,opt,name=pagination,proto3" json:"pagination,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` BeaconImplementation string `protobuf:"bytes,12,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBlockRequest) Reset() { *x = ListBeaconBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBlockRequest) String() string { @@ -3702,8 +3929,8 @@ func (x *ListBeaconBlockRequest) String() string { func (*ListBeaconBlockRequest) ProtoMessage() {} func (x *ListBeaconBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[43] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3715,7 +3942,7 @@ func (x *ListBeaconBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBlockRequest.ProtoReflect.Descriptor instead. func (*ListBeaconBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{40} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{43} } func (x *ListBeaconBlockRequest) GetNode() string { @@ -3803,20 +4030,17 @@ func (x *ListBeaconBlockRequest) GetBeaconImplementation() string { } type ListBeaconBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + BeaconBlocks []*BeaconBlock `protobuf:"bytes,1,rep,name=beacon_blocks,json=beaconBlocks,proto3" json:"beacon_blocks,omitempty"` unknownFields protoimpl.UnknownFields - - BeaconBlocks []*BeaconBlock `protobuf:"bytes,1,rep,name=beacon_blocks,json=beaconBlocks,proto3" json:"beacon_blocks,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListBeaconBlockResponse) Reset() { *x = ListBeaconBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBlockResponse) String() string { @@ -3826,8 +4050,8 @@ func (x *ListBeaconBlockResponse) String() string { func (*ListBeaconBlockResponse) ProtoMessage() {} func (x *ListBeaconBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[44] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3839,7 +4063,7 @@ func (x *ListBeaconBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBlockResponse.ProtoReflect.Descriptor instead. func (*ListBeaconBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{41} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{44} } func (x *ListBeaconBlockResponse) GetBeaconBlocks() []*BeaconBlock { @@ -3850,10 +4074,7 @@ func (x *ListBeaconBlockResponse) GetBeaconBlocks() []*BeaconBlock { } type CountBeaconBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -3865,15 +4086,15 @@ type CountBeaconBlockRequest struct { After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountBeaconBlockRequest) Reset() { *x = CountBeaconBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBlockRequest) String() string { @@ -3883,8 +4104,8 @@ func (x *CountBeaconBlockRequest) String() string { func (*CountBeaconBlockRequest) ProtoMessage() {} func (x *CountBeaconBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[45] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3896,7 +4117,7 @@ func (x *CountBeaconBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBlockRequest.ProtoReflect.Descriptor instead. func (*CountBeaconBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{42} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{45} } func (x *CountBeaconBlockRequest) GetNode() string { @@ -3977,20 +4198,17 @@ func (x *CountBeaconBlockRequest) GetId() string { } type CountBeaconBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountBeaconBlockResponse) Reset() { *x = CountBeaconBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBlockResponse) String() string { @@ -4000,8 +4218,8 @@ func (x *CountBeaconBlockResponse) String() string { func (*CountBeaconBlockResponse) ProtoMessage() {} func (x *CountBeaconBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[46] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4013,7 +4231,7 @@ func (x *CountBeaconBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBlockResponse.ProtoReflect.Descriptor instead. func (*CountBeaconBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{43} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{46} } func (x *CountBeaconBlockResponse) GetCount() *wrapperspb.UInt64Value { @@ -4024,20 +4242,17 @@ func (x *CountBeaconBlockResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueBeaconBadBlockValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueBeaconBadBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueBeaconBadBlockValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueBeaconBadBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueBeaconBadBlockValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBadBlockValuesRequest) Reset() { *x = ListUniqueBeaconBadBlockValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBadBlockValuesRequest) String() string { @@ -4047,8 +4262,8 @@ func (x *ListUniqueBeaconBadBlockValuesRequest) String() string { func (*ListUniqueBeaconBadBlockValuesRequest) ProtoMessage() {} func (x *ListUniqueBeaconBadBlockValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[47] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4060,7 +4275,7 @@ func (x *ListUniqueBeaconBadBlockValuesRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use ListUniqueBeaconBadBlockValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBadBlockValuesRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{44} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{47} } func (x *ListUniqueBeaconBadBlockValuesRequest) GetFields() []ListUniqueBeaconBadBlockValuesRequest_Field { @@ -4071,38 +4286,458 @@ func (x *ListUniqueBeaconBadBlockValuesRequest) GetFields() []ListUniqueBeaconBa } type ListUniqueBeaconBadBlockValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` - Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` - BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` - Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` - Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` - BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` + Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBadBlockValuesResponse) Reset() { *x = ListUniqueBeaconBadBlockValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[45] + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListUniqueBeaconBadBlockValuesResponse) ProtoMessage() {} + +func (x *ListUniqueBeaconBadBlockValuesResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_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 ListUniqueBeaconBadBlockValuesResponse.ProtoReflect.Descriptor instead. +func (*ListUniqueBeaconBadBlockValuesResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{48} +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) GetNode() []string { + if x != nil { + return x.Node + } + return nil +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) GetSlot() []uint64 { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) GetEpoch() []uint64 { + if x != nil { + return x.Epoch + } + return nil +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) GetBlockRoot() []string { + if x != nil { + return x.BlockRoot + } + return nil +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) GetNodeVersion() []string { + if x != nil { + return x.NodeVersion + } + return nil +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) GetLocation() []string { + if x != nil { + return x.Location + } + return nil +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) GetNetwork() []string { + if x != nil { + return x.Network + } + return nil +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) GetBeaconImplementation() []string { + if x != nil { + return x.BeaconImplementation + } + return nil +} + +type ListUniqueExecutionPayloadEnvelopeValuesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueExecutionPayloadEnvelopeValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_Field" json:"fields,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesRequest) Reset() { + *x = ListUniqueExecutionPayloadEnvelopeValuesRequest{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListUniqueExecutionPayloadEnvelopeValuesRequest) ProtoMessage() {} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_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 ListUniqueExecutionPayloadEnvelopeValuesRequest.ProtoReflect.Descriptor instead. +func (*ListUniqueExecutionPayloadEnvelopeValuesRequest) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{49} +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesRequest) GetFields() []ListUniqueExecutionPayloadEnvelopeValuesRequest_Field { + if x != nil { + return x.Fields + } + return nil +} + +type ListUniqueExecutionPayloadEnvelopeValuesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` + Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) Reset() { + *x = ListUniqueExecutionPayloadEnvelopeValuesResponse{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListUniqueExecutionPayloadEnvelopeValuesResponse) ProtoMessage() {} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_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 ListUniqueExecutionPayloadEnvelopeValuesResponse.ProtoReflect.Descriptor instead. +func (*ListUniqueExecutionPayloadEnvelopeValuesResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{50} +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetNode() []string { + if x != nil { + return x.Node + } + return nil +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetSlot() []uint64 { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetEpoch() []uint64 { + if x != nil { + return x.Epoch + } + return nil +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetBlockRoot() []string { + if x != nil { + return x.BlockRoot + } + return nil +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetNodeVersion() []string { + if x != nil { + return x.NodeVersion + } + return nil +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetLocation() []string { + if x != nil { + return x.Location + } + return nil +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetNetwork() []string { + if x != nil { + return x.Network + } + return nil +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetBeaconImplementation() []string { + if x != nil { + return x.BeaconImplementation + } + return nil +} + +type ListExecutionPayloadEnvelopeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` + Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot string `protobuf:"bytes,4,opt,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` + NodeVersion string `protobuf:"bytes,5,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location string `protobuf:"bytes,6,opt,name=location,proto3" json:"location,omitempty"` + Network string `protobuf:"bytes,7,opt,name=network,proto3" json:"network,omitempty"` + Before *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=before,proto3" json:"before,omitempty"` + After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` + Pagination *PaginationCursor `protobuf:"bytes,10,opt,name=pagination,proto3" json:"pagination,omitempty"` + Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + BeaconImplementation string `protobuf:"bytes,12,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListExecutionPayloadEnvelopeRequest) Reset() { + *x = ListExecutionPayloadEnvelopeRequest{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListExecutionPayloadEnvelopeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListExecutionPayloadEnvelopeRequest) ProtoMessage() {} + +func (x *ListExecutionPayloadEnvelopeRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[51] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } + return mi.MessageOf(x) +} + +// Deprecated: Use ListExecutionPayloadEnvelopeRequest.ProtoReflect.Descriptor instead. +func (*ListExecutionPayloadEnvelopeRequest) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{51} +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetNode() string { + if x != nil { + return x.Node + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetSlot() uint64 { + if x != nil { + return x.Slot + } + return 0 +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetEpoch() uint64 { + if x != nil { + return x.Epoch + } + return 0 +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetBlockRoot() string { + if x != nil { + return x.BlockRoot + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetNodeVersion() string { + if x != nil { + return x.NodeVersion + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetLocation() string { + if x != nil { + return x.Location + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetNetwork() string { + if x != nil { + return x.Network + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetBefore() *timestamppb.Timestamp { + if x != nil { + return x.Before + } + return nil +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetAfter() *timestamppb.Timestamp { + if x != nil { + return x.After + } + return nil +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetPagination() *PaginationCursor { + if x != nil { + return x.Pagination + } + return nil +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetBeaconImplementation() string { + if x != nil { + return x.BeaconImplementation + } + return "" +} + +type ListExecutionPayloadEnvelopeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + ExecutionPayloadEnvelopes []*ExecutionPayloadEnvelope `protobuf:"bytes,1,rep,name=execution_payload_envelopes,json=executionPayloadEnvelopes,proto3" json:"execution_payload_envelopes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListExecutionPayloadEnvelopeResponse) Reset() { + *x = ListExecutionPayloadEnvelopeResponse{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListExecutionPayloadEnvelopeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListExecutionPayloadEnvelopeResponse) ProtoMessage() {} + +func (x *ListExecutionPayloadEnvelopeResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_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 ListExecutionPayloadEnvelopeResponse.ProtoReflect.Descriptor instead. +func (*ListExecutionPayloadEnvelopeResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{52} +} + +func (x *ListExecutionPayloadEnvelopeResponse) GetExecutionPayloadEnvelopes() []*ExecutionPayloadEnvelope { + if x != nil { + return x.ExecutionPayloadEnvelopes + } + return nil +} + +type CountExecutionPayloadEnvelopeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` + Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot string `protobuf:"bytes,4,opt,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` + NodeVersion string `protobuf:"bytes,5,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location string `protobuf:"bytes,6,opt,name=location,proto3" json:"location,omitempty"` + Network string `protobuf:"bytes,7,opt,name=network,proto3" json:"network,omitempty"` + Before *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=before,proto3" json:"before,omitempty"` + After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` + BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ListUniqueBeaconBadBlockValuesResponse) String() string { +func (x *CountExecutionPayloadEnvelopeRequest) Reset() { + *x = CountExecutionPayloadEnvelopeRequest{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CountExecutionPayloadEnvelopeRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListUniqueBeaconBadBlockValuesResponse) ProtoMessage() {} +func (*CountExecutionPayloadEnvelopeRequest) ProtoMessage() {} -func (x *ListUniqueBeaconBadBlockValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { +func (x *CountExecutionPayloadEnvelopeRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[53] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4112,72 +4747,134 @@ func (x *ListUniqueBeaconBadBlockValuesResponse) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use ListUniqueBeaconBadBlockValuesResponse.ProtoReflect.Descriptor instead. -func (*ListUniqueBeaconBadBlockValuesResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{45} +// Deprecated: Use CountExecutionPayloadEnvelopeRequest.ProtoReflect.Descriptor instead. +func (*CountExecutionPayloadEnvelopeRequest) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{53} } -func (x *ListUniqueBeaconBadBlockValuesResponse) GetNode() []string { +func (x *CountExecutionPayloadEnvelopeRequest) GetNode() string { if x != nil { return x.Node } - return nil + return "" } -func (x *ListUniqueBeaconBadBlockValuesResponse) GetSlot() []uint64 { +func (x *CountExecutionPayloadEnvelopeRequest) GetSlot() uint64 { if x != nil { return x.Slot } - return nil + return 0 } -func (x *ListUniqueBeaconBadBlockValuesResponse) GetEpoch() []uint64 { +func (x *CountExecutionPayloadEnvelopeRequest) GetEpoch() uint64 { if x != nil { return x.Epoch } - return nil + return 0 } -func (x *ListUniqueBeaconBadBlockValuesResponse) GetBlockRoot() []string { +func (x *CountExecutionPayloadEnvelopeRequest) GetBlockRoot() string { if x != nil { return x.BlockRoot } - return nil + return "" } -func (x *ListUniqueBeaconBadBlockValuesResponse) GetNodeVersion() []string { +func (x *CountExecutionPayloadEnvelopeRequest) GetNodeVersion() string { if x != nil { return x.NodeVersion } - return nil + return "" } -func (x *ListUniqueBeaconBadBlockValuesResponse) GetLocation() []string { +func (x *CountExecutionPayloadEnvelopeRequest) GetLocation() string { if x != nil { return x.Location } - return nil + return "" } -func (x *ListUniqueBeaconBadBlockValuesResponse) GetNetwork() []string { +func (x *CountExecutionPayloadEnvelopeRequest) GetNetwork() string { if x != nil { return x.Network } + return "" +} + +func (x *CountExecutionPayloadEnvelopeRequest) GetBefore() *timestamppb.Timestamp { + if x != nil { + return x.Before + } return nil } -func (x *ListUniqueBeaconBadBlockValuesResponse) GetBeaconImplementation() []string { +func (x *CountExecutionPayloadEnvelopeRequest) GetAfter() *timestamppb.Timestamp { if x != nil { - return x.BeaconImplementation + return x.After } return nil } -type ListBeaconBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +func (x *CountExecutionPayloadEnvelopeRequest) GetBeaconImplementation() string { + if x != nil { + return x.BeaconImplementation + } + return "" +} + +func (x *CountExecutionPayloadEnvelopeRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type CountExecutionPayloadEnvelopeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CountExecutionPayloadEnvelopeResponse) Reset() { + *x = CountExecutionPayloadEnvelopeResponse{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CountExecutionPayloadEnvelopeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CountExecutionPayloadEnvelopeResponse) ProtoMessage() {} + +func (x *CountExecutionPayloadEnvelopeResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_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 CountExecutionPayloadEnvelopeResponse.ProtoReflect.Descriptor instead. +func (*CountExecutionPayloadEnvelopeResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{54} +} + +func (x *CountExecutionPayloadEnvelopeResponse) GetCount() *wrapperspb.UInt64Value { + if x != nil { + return x.Count + } + return nil +} +type ListBeaconBadBlockRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -4190,15 +4887,15 @@ type ListBeaconBadBlockRequest struct { Pagination *PaginationCursor `protobuf:"bytes,10,opt,name=pagination,proto3" json:"pagination,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` BeaconImplementation string `protobuf:"bytes,12,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBadBlockRequest) Reset() { *x = ListBeaconBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBadBlockRequest) String() string { @@ -4208,8 +4905,8 @@ func (x *ListBeaconBadBlockRequest) String() string { func (*ListBeaconBadBlockRequest) ProtoMessage() {} func (x *ListBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[46] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[55] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4221,7 +4918,7 @@ func (x *ListBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBadBlockRequest.ProtoReflect.Descriptor instead. func (*ListBeaconBadBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{46} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{55} } func (x *ListBeaconBadBlockRequest) GetNode() string { @@ -4309,20 +5006,17 @@ func (x *ListBeaconBadBlockRequest) GetBeaconImplementation() string { } type ListBeaconBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BeaconBadBlocks []*BeaconBadBlock `protobuf:"bytes,1,rep,name=beacon_bad_blocks,json=beaconBadBlocks,proto3" json:"beacon_bad_blocks,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + BeaconBadBlocks []*BeaconBadBlock `protobuf:"bytes,1,rep,name=beacon_bad_blocks,json=beaconBadBlocks,proto3" json:"beacon_bad_blocks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBadBlockResponse) Reset() { *x = ListBeaconBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBadBlockResponse) String() string { @@ -4332,8 +5026,8 @@ func (x *ListBeaconBadBlockResponse) String() string { func (*ListBeaconBadBlockResponse) ProtoMessage() {} func (x *ListBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[56] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4345,7 +5039,7 @@ func (x *ListBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBadBlockResponse.ProtoReflect.Descriptor instead. func (*ListBeaconBadBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{47} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{56} } func (x *ListBeaconBadBlockResponse) GetBeaconBadBlocks() []*BeaconBadBlock { @@ -4356,10 +5050,7 @@ func (x *ListBeaconBadBlockResponse) GetBeaconBadBlocks() []*BeaconBadBlock { } type CountBeaconBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -4371,15 +5062,15 @@ type CountBeaconBadBlockRequest struct { After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountBeaconBadBlockRequest) Reset() { *x = CountBeaconBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBadBlockRequest) String() string { @@ -4389,8 +5080,8 @@ func (x *CountBeaconBadBlockRequest) String() string { func (*CountBeaconBadBlockRequest) ProtoMessage() {} func (x *CountBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[48] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[57] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4402,7 +5093,7 @@ func (x *CountBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBadBlockRequest.ProtoReflect.Descriptor instead. func (*CountBeaconBadBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{48} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{57} } func (x *CountBeaconBadBlockRequest) GetNode() string { @@ -4483,20 +5174,17 @@ func (x *CountBeaconBadBlockRequest) GetId() string { } type CountBeaconBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountBeaconBadBlockResponse) Reset() { *x = CountBeaconBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBadBlockResponse) String() string { @@ -4506,8 +5194,8 @@ func (x *CountBeaconBadBlockResponse) String() string { func (*CountBeaconBadBlockResponse) ProtoMessage() {} func (x *CountBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[58] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4519,7 +5207,7 @@ func (x *CountBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBadBlockResponse.ProtoReflect.Descriptor instead. func (*CountBeaconBadBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{49} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{58} } func (x *CountBeaconBadBlockResponse) GetCount() *wrapperspb.UInt64Value { @@ -4530,20 +5218,17 @@ func (x *CountBeaconBadBlockResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueBeaconBadBlobValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueBeaconBadBlobValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueBeaconBadBlobValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueBeaconBadBlobValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueBeaconBadBlobValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBadBlobValuesRequest) Reset() { *x = ListUniqueBeaconBadBlobValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBadBlobValuesRequest) String() string { @@ -4553,8 +5238,8 @@ func (x *ListUniqueBeaconBadBlobValuesRequest) String() string { func (*ListUniqueBeaconBadBlobValuesRequest) ProtoMessage() {} func (x *ListUniqueBeaconBadBlobValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[50] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[59] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4566,7 +5251,7 @@ func (x *ListUniqueBeaconBadBlobValuesRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use ListUniqueBeaconBadBlobValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBadBlobValuesRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{50} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{59} } func (x *ListUniqueBeaconBadBlobValuesRequest) GetFields() []ListUniqueBeaconBadBlobValuesRequest_Field { @@ -4577,28 +5262,25 @@ func (x *ListUniqueBeaconBadBlobValuesRequest) GetFields() []ListUniqueBeaconBad } type ListUniqueBeaconBadBlobValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` - Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` - BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` - Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` - Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` - BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` - Index []uint64 `protobuf:"varint,9,rep,packed,name=index,proto3" json:"index,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` + Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + Index []uint64 `protobuf:"varint,9,rep,packed,name=index,proto3" json:"index,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBadBlobValuesResponse) Reset() { *x = ListUniqueBeaconBadBlobValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBadBlobValuesResponse) String() string { @@ -4608,8 +5290,8 @@ func (x *ListUniqueBeaconBadBlobValuesResponse) String() string { func (*ListUniqueBeaconBadBlobValuesResponse) ProtoMessage() {} func (x *ListUniqueBeaconBadBlobValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[51] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[60] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4621,7 +5303,7 @@ func (x *ListUniqueBeaconBadBlobValuesResponse) ProtoReflect() protoreflect.Mess // Deprecated: Use ListUniqueBeaconBadBlobValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBadBlobValuesResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{51} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{60} } func (x *ListUniqueBeaconBadBlobValuesResponse) GetNode() []string { @@ -4688,10 +5370,7 @@ func (x *ListUniqueBeaconBadBlobValuesResponse) GetIndex() []uint64 { } type ListBeaconBadBlobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -4705,15 +5384,15 @@ type ListBeaconBadBlobRequest struct { Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` BeaconImplementation string `protobuf:"bytes,12,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` Index *wrapperspb.UInt64Value `protobuf:"bytes,13,opt,name=index,proto3" json:"index,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBadBlobRequest) Reset() { *x = ListBeaconBadBlobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBadBlobRequest) String() string { @@ -4723,8 +5402,8 @@ func (x *ListBeaconBadBlobRequest) String() string { func (*ListBeaconBadBlobRequest) ProtoMessage() {} func (x *ListBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[52] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[61] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4736,7 +5415,7 @@ func (x *ListBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBadBlobRequest.ProtoReflect.Descriptor instead. func (*ListBeaconBadBlobRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{52} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{61} } func (x *ListBeaconBadBlobRequest) GetNode() string { @@ -4831,20 +5510,17 @@ func (x *ListBeaconBadBlobRequest) GetIndex() *wrapperspb.UInt64Value { } type ListBeaconBadBlobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BeaconBadBlobs []*BeaconBadBlob `protobuf:"bytes,1,rep,name=beacon_bad_blobs,json=beaconBadBlobs,proto3" json:"beacon_bad_blobs,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + BeaconBadBlobs []*BeaconBadBlob `protobuf:"bytes,1,rep,name=beacon_bad_blobs,json=beaconBadBlobs,proto3" json:"beacon_bad_blobs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBadBlobResponse) Reset() { *x = ListBeaconBadBlobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[53] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBadBlobResponse) String() string { @@ -4854,8 +5530,8 @@ func (x *ListBeaconBadBlobResponse) String() string { func (*ListBeaconBadBlobResponse) ProtoMessage() {} func (x *ListBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[53] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[62] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4867,7 +5543,7 @@ func (x *ListBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBadBlobResponse.ProtoReflect.Descriptor instead. func (*ListBeaconBadBlobResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{53} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{62} } func (x *ListBeaconBadBlobResponse) GetBeaconBadBlobs() []*BeaconBadBlob { @@ -4878,10 +5554,7 @@ func (x *ListBeaconBadBlobResponse) GetBeaconBadBlobs() []*BeaconBadBlob { } type CountBeaconBadBlobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -4894,15 +5567,15 @@ type CountBeaconBadBlobRequest struct { BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` Index *wrapperspb.UInt64Value `protobuf:"bytes,12,opt,name=index,proto3" json:"index,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountBeaconBadBlobRequest) Reset() { *x = CountBeaconBadBlobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBadBlobRequest) String() string { @@ -4912,8 +5585,8 @@ func (x *CountBeaconBadBlobRequest) String() string { func (*CountBeaconBadBlobRequest) ProtoMessage() {} func (x *CountBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[54] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[63] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4925,7 +5598,7 @@ func (x *CountBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBadBlobRequest.ProtoReflect.Descriptor instead. func (*CountBeaconBadBlobRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{54} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{63} } func (x *CountBeaconBadBlobRequest) GetNode() string { @@ -5013,20 +5686,17 @@ func (x *CountBeaconBadBlobRequest) GetIndex() *wrapperspb.UInt64Value { } type CountBeaconBadBlobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountBeaconBadBlobResponse) Reset() { *x = CountBeaconBadBlobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBadBlobResponse) String() string { @@ -5036,8 +5706,8 @@ func (x *CountBeaconBadBlobResponse) String() string { func (*CountBeaconBadBlobResponse) ProtoMessage() {} func (x *CountBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[55] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[64] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5049,7 +5719,7 @@ func (x *CountBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBadBlobResponse.ProtoReflect.Descriptor instead. func (*CountBeaconBadBlobResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{55} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{64} } func (x *CountBeaconBadBlobResponse) GetCount() *wrapperspb.UInt64Value { @@ -5060,22 +5730,19 @@ func (x *CountBeaconBadBlobResponse) GetCount() *wrapperspb.UInt64Value { } type PaginationCursor struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` + OrderBy string `protobuf:"bytes,3,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` unknownFields protoimpl.UnknownFields - - Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` - OrderBy string `protobuf:"bytes,3,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PaginationCursor) Reset() { *x = PaginationCursor{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PaginationCursor) String() string { @@ -5085,8 +5752,8 @@ func (x *PaginationCursor) String() string { func (*PaginationCursor) ProtoMessage() {} func (x *PaginationCursor) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[56] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[65] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5098,7 +5765,7 @@ func (x *PaginationCursor) ProtoReflect() protoreflect.Message { // Deprecated: Use PaginationCursor.ProtoReflect.Descriptor instead. func (*PaginationCursor) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{56} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{65} } func (x *PaginationCursor) GetLimit() int32 { @@ -5123,10 +5790,7 @@ func (x *PaginationCursor) GetOrderBy() string { } type CreateExecutionBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` BlockHash *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` @@ -5137,15 +5801,15 @@ type CreateExecutionBadBlockRequest struct { NodeVersion *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` BlockExtraData *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=block_extra_data,json=blockExtraData,proto3" json:"block_extra_data,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateExecutionBadBlockRequest) Reset() { *x = CreateExecutionBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateExecutionBadBlockRequest) String() string { @@ -5155,8 +5819,8 @@ func (x *CreateExecutionBadBlockRequest) String() string { func (*CreateExecutionBadBlockRequest) ProtoMessage() {} func (x *CreateExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[57] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[66] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5168,7 +5832,7 @@ func (x *CreateExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateExecutionBadBlockRequest.ProtoReflect.Descriptor instead. func (*CreateExecutionBadBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{57} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{66} } func (x *CreateExecutionBadBlockRequest) GetNode() *wrapperspb.StringValue { @@ -5242,20 +5906,17 @@ func (x *CreateExecutionBadBlockRequest) GetContentEncoding() *wrapperspb.String } type CreateExecutionBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateExecutionBadBlockResponse) Reset() { *x = CreateExecutionBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[58] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateExecutionBadBlockResponse) String() string { @@ -5265,8 +5926,8 @@ func (x *CreateExecutionBadBlockResponse) String() string { func (*CreateExecutionBadBlockResponse) ProtoMessage() {} func (x *CreateExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[58] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[67] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5278,7 +5939,7 @@ func (x *CreateExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateExecutionBadBlockResponse.ProtoReflect.Descriptor instead. func (*CreateExecutionBadBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{58} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{67} } func (x *CreateExecutionBadBlockResponse) GetId() *wrapperspb.StringValue { @@ -5289,10 +5950,7 @@ func (x *CreateExecutionBadBlockResponse) GetId() *wrapperspb.StringValue { } type ListExecutionBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` BlockNumber int64 `protobuf:"varint,2,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` BlockHash string `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` @@ -5305,15 +5963,15 @@ type ListExecutionBadBlockRequest struct { ExecutionImplementation string `protobuf:"bytes,10,opt,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` NodeVersion string `protobuf:"bytes,11,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` BlockExtraData string `protobuf:"bytes,12,opt,name=block_extra_data,json=blockExtraData,proto3" json:"block_extra_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListExecutionBadBlockRequest) Reset() { *x = ListExecutionBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[59] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListExecutionBadBlockRequest) String() string { @@ -5323,8 +5981,8 @@ func (x *ListExecutionBadBlockRequest) String() string { func (*ListExecutionBadBlockRequest) ProtoMessage() {} func (x *ListExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[59] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[68] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5336,7 +5994,7 @@ func (x *ListExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExecutionBadBlockRequest.ProtoReflect.Descriptor instead. func (*ListExecutionBadBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{59} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{68} } func (x *ListExecutionBadBlockRequest) GetNode() string { @@ -5424,20 +6082,17 @@ func (x *ListExecutionBadBlockRequest) GetBlockExtraData() string { } type ListExecutionBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ExecutionBadBlocks []*ExecutionBadBlock `protobuf:"bytes,1,rep,name=execution_bad_blocks,json=executionBadBlocks,proto3" json:"execution_bad_blocks,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ExecutionBadBlocks []*ExecutionBadBlock `protobuf:"bytes,1,rep,name=execution_bad_blocks,json=executionBadBlocks,proto3" json:"execution_bad_blocks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListExecutionBadBlockResponse) Reset() { *x = ListExecutionBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListExecutionBadBlockResponse) String() string { @@ -5447,8 +6102,8 @@ func (x *ListExecutionBadBlockResponse) String() string { func (*ListExecutionBadBlockResponse) ProtoMessage() {} func (x *ListExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[60] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[69] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5460,7 +6115,7 @@ func (x *ListExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExecutionBadBlockResponse.ProtoReflect.Descriptor instead. func (*ListExecutionBadBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{60} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{69} } func (x *ListExecutionBadBlockResponse) GetExecutionBadBlocks() []*ExecutionBadBlock { @@ -5471,10 +6126,7 @@ func (x *ListExecutionBadBlockResponse) GetExecutionBadBlocks() []*ExecutionBadB } type CountExecutionBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` BlockNumber int64 `protobuf:"varint,2,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` BlockHash string `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` @@ -5485,15 +6137,15 @@ type CountExecutionBadBlockRequest struct { ExecutionImplementation string `protobuf:"bytes,8,opt,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` NodeVersion string `protobuf:"bytes,9,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` BlockExtraData string `protobuf:"bytes,10,opt,name=block_extra_data,json=blockExtraData,proto3" json:"block_extra_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountExecutionBadBlockRequest) Reset() { *x = CountExecutionBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountExecutionBadBlockRequest) String() string { @@ -5503,8 +6155,8 @@ func (x *CountExecutionBadBlockRequest) String() string { func (*CountExecutionBadBlockRequest) ProtoMessage() {} func (x *CountExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[61] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[70] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5516,7 +6168,7 @@ func (x *CountExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountExecutionBadBlockRequest.ProtoReflect.Descriptor instead. func (*CountExecutionBadBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{61} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{70} } func (x *CountExecutionBadBlockRequest) GetNode() string { @@ -5590,20 +6242,17 @@ func (x *CountExecutionBadBlockRequest) GetBlockExtraData() string { } type CountExecutionBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountExecutionBadBlockResponse) Reset() { *x = CountExecutionBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountExecutionBadBlockResponse) String() string { @@ -5613,8 +6262,8 @@ func (x *CountExecutionBadBlockResponse) String() string { func (*CountExecutionBadBlockResponse) ProtoMessage() {} func (x *CountExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[62] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[71] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5626,7 +6275,7 @@ func (x *CountExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountExecutionBadBlockResponse.ProtoReflect.Descriptor instead. func (*CountExecutionBadBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{62} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{71} } func (x *CountExecutionBadBlockResponse) GetCount() *wrapperspb.UInt64Value { @@ -5637,20 +6286,17 @@ func (x *CountExecutionBadBlockResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueExecutionBadBlockValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueExecutionBadBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueExecutionBadBlockValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueExecutionBadBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueExecutionBadBlockValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueExecutionBadBlockValuesRequest) Reset() { *x = ListUniqueExecutionBadBlockValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[63] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueExecutionBadBlockValuesRequest) String() string { @@ -5660,8 +6306,8 @@ func (x *ListUniqueExecutionBadBlockValuesRequest) String() string { func (*ListUniqueExecutionBadBlockValuesRequest) ProtoMessage() {} func (x *ListUniqueExecutionBadBlockValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[63] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[72] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5673,7 +6319,7 @@ func (x *ListUniqueExecutionBadBlockValuesRequest) ProtoReflect() protoreflect.M // Deprecated: Use ListUniqueExecutionBadBlockValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueExecutionBadBlockValuesRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{63} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{72} } func (x *ListUniqueExecutionBadBlockValuesRequest) GetFields() []ListUniqueExecutionBadBlockValuesRequest_Field { @@ -5684,28 +6330,25 @@ func (x *ListUniqueExecutionBadBlockValuesRequest) GetFields() []ListUniqueExecu } type ListUniqueExecutionBadBlockValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - BlockHash []string `protobuf:"bytes,2,rep,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` - BlockNumber []int64 `protobuf:"varint,3,rep,packed,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` - Location []string `protobuf:"bytes,4,rep,name=location,proto3" json:"location,omitempty"` - Network []string `protobuf:"bytes,5,rep,name=network,proto3" json:"network,omitempty"` - ExecutionImplementation []string `protobuf:"bytes,6,rep,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` - NodeVersion []string `protobuf:"bytes,7,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` - ClientVersion []string `protobuf:"bytes,8,rep,name=client_version,json=clientVersion,proto3" json:"client_version,omitempty"` - BlockExtraData []string `protobuf:"bytes,9,rep,name=block_extra_data,json=blockExtraData,proto3" json:"block_extra_data,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + BlockHash []string `protobuf:"bytes,2,rep,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` + BlockNumber []int64 `protobuf:"varint,3,rep,packed,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` + Location []string `protobuf:"bytes,4,rep,name=location,proto3" json:"location,omitempty"` + Network []string `protobuf:"bytes,5,rep,name=network,proto3" json:"network,omitempty"` + ExecutionImplementation []string `protobuf:"bytes,6,rep,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` + NodeVersion []string `protobuf:"bytes,7,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + ClientVersion []string `protobuf:"bytes,8,rep,name=client_version,json=clientVersion,proto3" json:"client_version,omitempty"` + BlockExtraData []string `protobuf:"bytes,9,rep,name=block_extra_data,json=blockExtraData,proto3" json:"block_extra_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueExecutionBadBlockValuesResponse) Reset() { *x = ListUniqueExecutionBadBlockValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[64] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueExecutionBadBlockValuesResponse) String() string { @@ -5715,8 +6358,8 @@ func (x *ListUniqueExecutionBadBlockValuesResponse) String() string { func (*ListUniqueExecutionBadBlockValuesResponse) ProtoMessage() {} func (x *ListUniqueExecutionBadBlockValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[64] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[73] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5728,7 +6371,7 @@ func (x *ListUniqueExecutionBadBlockValuesResponse) ProtoReflect() protoreflect. // Deprecated: Use ListUniqueExecutionBadBlockValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueExecutionBadBlockValuesResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{64} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{73} } func (x *ListUniqueExecutionBadBlockValuesResponse) GetNode() []string { @@ -5794,2545 +6437,1111 @@ func (x *ListUniqueExecutionBadBlockValuesResponse) GetBlockExtraData() []string return nil } -var File_indexer_indexer_proto protoreflect.FileDescriptor - -var file_indexer_indexer_proto_rawDesc = []byte{ - 0x0a, 0x15, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, - 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x9a, 0x05, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 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, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x30, 0x0a, 0x04, - 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, - 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x32, - 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x70, 0x6f, - 0x63, 0x68, 0x12, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, - 0x3f, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x12, 0x51, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x9a, - 0x05, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2c, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, - 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 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, - 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, - 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, - 0x3b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x3f, 0x0a, 0x0c, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, - 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x51, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x62, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x9d, 0x05, 0x0a, 0x0e, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2c, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, - 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 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, - 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, - 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, - 0x3b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x3f, 0x0a, 0x0c, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, - 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x51, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x62, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0xd0, 0x05, 0x0a, 0x0d, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x2c, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, - 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 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, 0x66, - 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, - 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3b, - 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x3f, 0x0a, 0x0c, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x08, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x51, - 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x82, - 0x05, 0x0a, 0x13, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 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, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3e, - 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x38, - 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x12, 0x57, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, - 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x6e, - 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, - 0x69, 0x6e, 0x67, 0x22, 0xc8, 0x05, 0x0a, 0x11, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x65, 0x74, - 0x63, 0x68, 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, 0x66, 0x65, 0x74, 0x63, 0x68, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x3e, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x12, 0x57, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, - 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0c, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, - 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x72, - 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x3d, - 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x0a, 0x08, 0x65, 0x74, 0x68, 0x65, - 0x72, 0x65, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x65, 0x72, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x08, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x22, 0xac, 0x01, - 0x0a, 0x0e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x36, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x65, 0x72, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x2a, 0x0a, 0x05, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x22, 0xbd, 0x01, 0x0a, - 0x15, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x12, 0x34, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x30, 0x0a, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x9a, 0x01, 0x0a, - 0x0b, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, 0x04, - 0x6e, 0x63, 0x6c, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x65, 0x72, 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x6e, 0x63, 0x6c, 0x69, 0x12, 0x30, - 0x0a, 0x04, 0x6c, 0x63, 0x6c, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x6c, 0x63, 0x6c, 0x69, - 0x12, 0x27, 0x0a, 0x04, 0x7a, 0x63, 0x6c, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x5a, 0x63, 0x6c, 0x69, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x04, 0x7a, 0x63, 0x6c, 0x69, 0x22, 0x89, 0x01, 0x0a, 0x13, 0x47, 0x69, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, - 0x34, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x62, - 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x3e, 0x0a, 0x0a, 0x5a, 0x63, 0x6c, 0x69, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, 0x04, 0x66, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x04, 0x66, 0x6f, 0x72, 0x6b, 0x22, 0x12, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3c, 0x0a, 0x11, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, - 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x4b, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x38, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xf9, - 0x04, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, - 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 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, 0x66, - 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, - 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3b, - 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x3f, 0x0a, 0x0c, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x08, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x51, - 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, - 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x49, 0x0a, 0x19, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x02, 0x69, 0x64, 0x22, 0xf9, 0x04, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 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, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, - 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, - 0x6f, 0x74, 0x12, 0x3f, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x51, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, - 0x67, 0x22, 0x49, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x22, 0xfc, 0x04, 0x0a, - 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, - 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 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, - 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, - 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, - 0x3b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x3f, 0x0a, 0x0c, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, - 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x51, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x62, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x4c, 0x0a, 0x1c, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x22, 0xaf, 0x05, 0x0a, 0x1a, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, - 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x65, - 0x74, 0x63, 0x68, 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, 0x66, 0x65, 0x74, 0x63, - 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3b, 0x0a, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x3f, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x6e, 0x6f, - 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x51, 0x0a, 0x15, 0x62, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, - 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x4b, 0x0a, 0x1b, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x22, 0xe1, 0x04, 0x0a, 0x20, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x39, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 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, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3e, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x57, 0x0a, 0x18, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, - 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x51, 0x0a, 0x21, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x22, - 0xbb, 0x03, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, - 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, - 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, - 0x66, 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x65, 0x72, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x39, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x75, 0x0a, - 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x52, 0x0a, 0x16, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x14, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, - 0x61, 0x63, 0x65, 0x73, 0x22, 0xf1, 0x02, 0x0a, 0x1f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, - 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, - 0x72, 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, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x18, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x56, 0x0a, 0x20, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0x94, 0x02, 0x0a, 0x2a, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, - 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x51, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x39, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, - 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x22, 0x92, 0x01, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, - 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x48, 0x41, 0x53, 0x48, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, - 0x4b, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, - 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, - 0x4e, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x45, - 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x22, 0xbe, 0x02, 0x0a, 0x2b, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, - 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, - 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x12, 0x39, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, - 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xef, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, - 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x49, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x31, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, - 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x7e, 0x0a, 0x05, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, - 0x04, 0x53, 0x4c, 0x4f, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x50, 0x4f, 0x43, 0x48, - 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x4f, 0x4f, 0x54, - 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, - 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x06, 0x12, - 0x19, 0x0a, 0x15, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x4d, - 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x22, 0x90, 0x02, 0x0a, 0x23, 0x4c, - 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, - 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, - 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb4, 0x03, - 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, - 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, - 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, - 0x66, 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x65, 0x72, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x54, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x39, 0x0a, 0x0d, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, - 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0xfa, 0x02, 0x0a, 0x17, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, - 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, - 0x62, 0x65, 0x66, 0x6f, 0x72, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, - 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, 0x74, - 0x65, 0x72, 0x12, 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4e, 0x0a, 0x18, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xef, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, - 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x31, - 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, - 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x7e, 0x0a, 0x05, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, - 0x53, 0x4c, 0x4f, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x10, - 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x10, - 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, - 0x4e, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, - 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x06, 0x12, 0x19, - 0x0a, 0x15, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x4d, 0x45, - 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x22, 0x90, 0x02, 0x0a, 0x23, 0x4c, 0x69, - 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, - 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, - 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x21, - 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, - 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb4, 0x03, 0x0a, - 0x16, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, - 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, - 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, - 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, - 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, - 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x72, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, - 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x33, - 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x62, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x54, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, - 0x0a, 0x0d, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x0c, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0xfa, 0x02, 0x0a, 0x17, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, - 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, - 0x65, 0x66, 0x6f, 0x72, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, - 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, 0x74, 0x65, - 0x72, 0x12, 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4e, 0x0a, 0x18, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xf5, 0x01, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x55, - 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x4c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, - 0x32, 0x34, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, - 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x7e, - 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x44, 0x45, 0x10, - 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x4c, 0x4f, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, - 0x50, 0x4f, 0x43, 0x48, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x52, 0x4f, 0x4f, 0x54, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x56, - 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, - 0x4b, 0x10, 0x06, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x49, 0x4d, - 0x50, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x22, 0x93, - 0x02, 0x0a, 0x26, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, - 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, - 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb7, 0x03, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, - 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, - 0x72, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, - 0x61, 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x39, - 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x61, - 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x11, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x72, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x0f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x73, 0x22, 0xfd, 0x02, 0x0a, 0x1a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, - 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, - 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, - 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x15, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x51, 0x0a, 0x1b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x32, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xff, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, - 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, - 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x33, 0x2e, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, - 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x05, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x08, - 0x0a, 0x04, 0x53, 0x4c, 0x4f, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x50, 0x4f, 0x43, - 0x48, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x52, 0x4f, 0x4f, - 0x54, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x53, - 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x06, - 0x12, 0x19, 0x0a, 0x15, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x45, - 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x49, - 0x4e, 0x44, 0x45, 0x58, 0x10, 0x08, 0x22, 0xa8, 0x02, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x55, - 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x62, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, - 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, - 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x22, 0xea, 0x03, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, - 0x72, 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, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, - 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x5d, - 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x10, 0x62, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x0e, 0x62, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x22, 0xb0, 0x03, - 0x0a, 0x19, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, - 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 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, 0x06, 0x62, - 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, - 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x22, 0x50, 0x0a, 0x1a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, - 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x5b, 0x0a, 0x10, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, - 0xa7, 0x05, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 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, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x3b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3e, 0x0a, 0x0c, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x08, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x57, - 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x17, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x6e, 0x6f, 0x64, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, - 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x4f, 0x0a, 0x1f, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x22, 0xe3, 0x03, 0x0a, 0x1c, 0x4c, - 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, - 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, - 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x61, 0x74, 0x61, - 0x22, 0x6d, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x4c, 0x0a, 0x14, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, - 0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x12, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, - 0x99, 0x03, 0x0a, 0x1d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, - 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, - 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 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, 0x05, 0x61, 0x66, - 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, - 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x61, 0x74, 0x61, 0x22, 0x54, 0x0a, 0x1e, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, - 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0xa6, 0x02, 0x0a, 0x28, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, - 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x37, - 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, - 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, - 0xa8, 0x01, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x44, - 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x48, 0x41, 0x53, - 0x48, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4e, 0x55, 0x4d, - 0x42, 0x45, 0x52, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x04, - 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4d, - 0x50, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x10, - 0x0a, 0x0c, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x06, - 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, - 0x4f, 0x4e, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x58, - 0x54, 0x52, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x08, 0x22, 0xe6, 0x02, 0x0a, 0x29, 0x4c, - 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, - 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x39, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, - 0x61, 0x74, 0x61, 0x32, 0xf8, 0x15, 0x0a, 0x07, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x12, - 0x44, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x2e, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x72, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x71, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x2e, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x22, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, - 0x0a, 0x10, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x20, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7a, 0x0a, 0x1b, 0x4c, 0x69, 0x73, - 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, 0x2e, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x10, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, - 0x20, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x21, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7a, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, - 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x65, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x24, 0x2e, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x25, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x12, 0x4c, 0x69, 0x73, - 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, - 0x22, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x12, 0x23, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, - 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x83, - 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x12, 0x2e, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x23, 0x2e, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x24, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x21, 0x2e, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x22, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x12, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x22, 0x2e, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x23, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x62, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x74, 0x0a, 0x19, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x6e, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x27, 0x2e, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x71, 0x0a, 0x18, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x28, 0x2e, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, - 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x92, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, - 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, - 0x61, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x34, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, - 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x12, 0x27, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x68, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x12, 0x25, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x16, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x26, 0x2e, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x8c, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x3a, - 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, - 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x6f, 0x6f, 0x72, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x6f, - 0x6f, 0x72, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} +var File_pkg_proto_tracoor_indexer_indexer_proto protoreflect.FileDescriptor + +const file_pkg_proto_tracoor_indexer_indexer_proto_rawDesc = "" + + "\n" + + "'pkg/proto/tracoor/indexer/indexer.proto\x12\aindexer\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x9a\x05\n" + + "\vBeaconState\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "state_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\tstateRoot\x12?\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x12G\n" + + "\x10content_encoding\x18\v \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"\x9a\x05\n" + + "\vBeaconBlock\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "block_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\tblockRoot\x12?\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x12G\n" + + "\x10content_encoding\x18\v \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"\xa7\x05\n" + + "\x18ExecutionPayloadEnvelope\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "block_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\tblockRoot\x12?\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x12G\n" + + "\x10content_encoding\x18\v \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"\x9d\x05\n" + + "\x0eBeaconBadBlock\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "block_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\tblockRoot\x12?\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x12G\n" + + "\x10content_encoding\x18\v \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"\xd0\x05\n" + + "\rBeaconBadBlob\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "block_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\tblockRoot\x12?\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x122\n" + + "\x05index\x18\v \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05index\x12G\n" + + "\x10content_encoding\x18\f \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"\x82\x05\n" + + "\x13ExecutionBlockTrace\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x12;\n" + + "\n" + + "block_hash\x18\x04 \x01(\v2\x1c.google.protobuf.StringValueR\tblockHash\x12>\n" + + "\fblock_number\x18\x05 \x01(\v2\x1b.google.protobuf.Int64ValueR\vblockNumber\x128\n" + + "\blocation\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12W\n" + + "\x18execution_implementation\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\x17executionImplementation\x12?\n" + + "\fnode_version\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x12G\n" + + "\x10content_encoding\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"\xc8\x05\n" + + "\x11ExecutionBadBlock\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x12;\n" + + "\n" + + "block_hash\x18\x04 \x01(\v2\x1c.google.protobuf.StringValueR\tblockHash\x12>\n" + + "\fblock_number\x18\x05 \x01(\v2\x1b.google.protobuf.Int64ValueR\vblockNumber\x128\n" + + "\blocation\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12W\n" + + "\x18execution_implementation\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\x17executionImplementation\x12?\n" + + "\fnode_version\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x12F\n" + + "\x10block_extra_data\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x0eblockExtraData\x12G\n" + + "\x10content_encoding\x18\v \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"=\n" + + "\x06Config\x123\n" + + "\bethereum\x18\x01 \x01(\v2\x17.indexer.EthereumConfigR\bethereum\"\xac\x01\n" + + "\x0eEthereumConfig\x126\n" + + "\anetwork\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x126\n" + + "\x06config\x18\x02 \x01(\v2\x1e.indexer.EthereumNetworkConfigR\x06config\x12*\n" + + "\x05tools\x18\x03 \x01(\v2\x14.indexer.ToolsConfigR\x05tools\"\xbd\x01\n" + + "\x15EthereumNetworkConfig\x12<\n" + + "\n" + + "repository\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "repository\x124\n" + + "\x06branch\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x06branch\x120\n" + + "\x04path\x18\x03 \x01(\v2\x1c.google.protobuf.StringValueR\x04path\"\x9a\x01\n" + + "\vToolsConfig\x120\n" + + "\x04ncli\x18\x01 \x01(\v2\x1c.indexer.GitRepositoryConfigR\x04ncli\x120\n" + + "\x04lcli\x18\x02 \x01(\v2\x1c.indexer.GitRepositoryConfigR\x04lcli\x12'\n" + + "\x04zcli\x18\x03 \x01(\v2\x13.indexer.ZcliConfigR\x04zcli\"\x89\x01\n" + + "\x13GitRepositoryConfig\x12<\n" + + "\n" + + "repository\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "repository\x124\n" + + "\x06branch\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x06branch\">\n" + + "\n" + + "ZcliConfig\x120\n" + + "\x04fork\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x04fork\"\x12\n" + + "\x10GetConfigRequest\"<\n" + + "\x11GetConfigResponse\x12'\n" + + "\x06config\x18\x01 \x01(\v2\x0f.indexer.ConfigR\x06config\"K\n" + + "\x1fGetStorageHandshakeTokenRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x14\n" + + "\x05token\x18\x02 \x01(\tR\x05token\"8\n" + + " GetStorageHandshakeTokenResponse\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\"\xf9\x04\n" + + "\x18CreateBeaconStateRequest\x120\n" + + "\x04node\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x03 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "state_root\x18\x05 \x01(\v2\x1c.google.protobuf.StringValueR\tstateRoot\x12?\n" + + "\fnode_version\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x12G\n" + + "\x10content_encoding\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"I\n" + + "\x19CreateBeaconStateResponse\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\"\xf9\x04\n" + + "\x18CreateBeaconBlockRequest\x120\n" + + "\x04node\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x03 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "block_root\x18\x05 \x01(\v2\x1c.google.protobuf.StringValueR\tblockRoot\x12?\n" + + "\fnode_version\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x12G\n" + + "\x10content_encoding\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"I\n" + + "\x19CreateBeaconBlockResponse\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\"\x86\x05\n" + + "%CreateExecutionPayloadEnvelopeRequest\x120\n" + + "\x04node\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x03 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "block_root\x18\x05 \x01(\v2\x1c.google.protobuf.StringValueR\tblockRoot\x12?\n" + + "\fnode_version\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x12G\n" + + "\x10content_encoding\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"V\n" + + "&CreateExecutionPayloadEnvelopeResponse\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\"\xfc\x04\n" + + "\x1bCreateBeaconBadBlockRequest\x120\n" + + "\x04node\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x03 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "block_root\x18\x05 \x01(\v2\x1c.google.protobuf.StringValueR\tblockRoot\x12?\n" + + "\fnode_version\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x12G\n" + + "\x10content_encoding\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"L\n" + + "\x1cCreateBeaconBadBlockResponse\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\"\xaf\x05\n" + + "\x1aCreateBeaconBadBlobRequest\x120\n" + + "\x04node\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x03 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "block_root\x18\x05 \x01(\v2\x1c.google.protobuf.StringValueR\tblockRoot\x12?\n" + + "\fnode_version\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x122\n" + + "\x05index\x18\n" + + " \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05index\x12G\n" + + "\x10content_encoding\x18\v \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"K\n" + + "\x1bCreateBeaconBadBlobResponse\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\"\xe1\x04\n" + + " CreateExecutionBlockTraceRequest\x120\n" + + "\x04node\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x12;\n" + + "\n" + + "block_hash\x18\x03 \x01(\v2\x1c.google.protobuf.StringValueR\tblockHash\x12>\n" + + "\fblock_number\x18\x04 \x01(\v2\x1b.google.protobuf.Int64ValueR\vblockNumber\x128\n" + + "\blocation\x18\x05 \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12W\n" + + "\x18execution_implementation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\x17executionImplementation\x12?\n" + + "\fnode_version\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x12G\n" + + "\x10content_encoding\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"Q\n" + + "!CreateExecutionBlockTraceResponse\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\"\xbb\x03\n" + + "\x1eListExecutionBlockTraceRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12!\n" + + "\fblock_number\x18\x02 \x01(\x03R\vblockNumber\x12\x1d\n" + + "\n" + + "block_hash\x18\x03 \x01(\tR\tblockHash\x12\x1a\n" + + "\blocation\x18\x04 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\x05 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\n" + + "pagination\x18\b \x01(\v2\x19.indexer.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\t \x01(\tR\x02id\x129\n" + + "\x18execution_implementation\x18\n" + + " \x01(\tR\x17executionImplementation\x12!\n" + + "\fnode_version\x18\v \x01(\tR\vnodeVersion\"u\n" + + "\x1fListExecutionBlockTraceResponse\x12R\n" + + "\x16execution_block_traces\x18\x01 \x03(\v2\x1c.indexer.ExecutionBlockTraceR\x14executionBlockTraces\"\xf1\x02\n" + + "\x1fCountExecutionBlockTraceRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12!\n" + + "\fblock_number\x18\x02 \x01(\x03R\vblockNumber\x12\x1d\n" + + "\n" + + "block_hash\x18\x03 \x01(\tR\tblockHash\x12\x1a\n" + + "\blocation\x18\x04 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\x05 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\x18execution_implementation\x18\b \x01(\tR\x17executionImplementation\x12!\n" + + "\fnode_version\x18\t \x01(\tR\vnodeVersion\"V\n" + + " CountExecutionBlockTraceResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\x94\x02\n" + + "*ListUniqueExecutionBlockTraceValuesRequest\x12Q\n" + + "\x06fields\x18\x01 \x03(\x0e29.indexer.ListUniqueExecutionBlockTraceValuesRequest.FieldR\x06fields\"\x92\x01\n" + + "\x05Field\x12\b\n" + + "\x04NODE\x10\x00\x12\x0e\n" + + "\n" + + "BLOCK_HASH\x10\x01\x12\x10\n" + + "\fBLOCK_NUMBER\x10\x02\x12\f\n" + + "\bLOCATION\x10\x03\x12\v\n" + + "\aNETWORK\x10\x04\x12\x1c\n" + + "\x18EXECUTION_IMPLEMENTATION\x10\x05\x12\x10\n" + + "\fNODE_VERSION\x10\x06\x12\x12\n" + + "\x0eCLIENT_VERSION\x10\a\"\xbe\x02\n" + + "+ListUniqueExecutionBlockTraceValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x1d\n" + + "\n" + + "block_hash\x18\x02 \x03(\tR\tblockHash\x12!\n" + + "\fblock_number\x18\x03 \x03(\x03R\vblockNumber\x12\x1a\n" + + "\blocation\x18\x04 \x03(\tR\blocation\x12\x18\n" + + "\anetwork\x18\x05 \x03(\tR\anetwork\x129\n" + + "\x18execution_implementation\x18\x06 \x03(\tR\x17executionImplementation\x12!\n" + + "\fnode_version\x18\a \x03(\tR\vnodeVersion\x12%\n" + + "\x0eclient_version\x18\b \x03(\tR\rclientVersion\"\xef\x01\n" + + "\"ListUniqueBeaconStateValuesRequest\x12I\n" + + "\x06fields\x18\x01 \x03(\x0e21.indexer.ListUniqueBeaconStateValuesRequest.FieldR\x06fields\"~\n" + + "\x05Field\x12\b\n" + + "\x04NODE\x10\x00\x12\b\n" + + "\x04SLOT\x10\x01\x12\t\n" + + "\x05EPOCH\x10\x02\x12\x0e\n" + + "\n" + + "STATE_ROOT\x10\x03\x12\x10\n" + + "\fNODE_VERSION\x10\x04\x12\f\n" + + "\bLOCATION\x10\x05\x12\v\n" + + "\aNETWORK\x10\x06\x12\x19\n" + + "\x15BEACON_IMPLEMENTATION\x10\a\"\x90\x02\n" + + "#ListUniqueBeaconStateValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "state_root\x18\x04 \x03(\tR\tstateRoot\x12!\n" + + "\fnode_version\x18\x05 \x03(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x03(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x03(\tR\anetwork\x123\n" + + "\x15beacon_implementation\x18\b \x03(\tR\x14beaconImplementation\"\xb4\x03\n" + + "\x16ListBeaconStateRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "state_root\x18\x04 \x01(\tR\tstateRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\n" + + "pagination\x18\n" + + " \x01(\v2\x19.indexer.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x123\n" + + "\x15beacon_implementation\x18\f \x01(\tR\x14beaconImplementation\"T\n" + + "\x17ListBeaconStateResponse\x129\n" + + "\rbeacon_states\x18\x01 \x03(\v2\x14.indexer.BeaconStateR\fbeaconStates\"\xfa\x02\n" + + "\x17CountBeaconStateRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "state_root\x18\x04 \x01(\tR\tstateRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x123\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x14beaconImplementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\"N\n" + + "\x18CountBeaconStateResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xef\x01\n" + + "\"ListUniqueBeaconBlockValuesRequest\x12I\n" + + "\x06fields\x18\x01 \x03(\x0e21.indexer.ListUniqueBeaconBlockValuesRequest.FieldR\x06fields\"~\n" + + "\x05Field\x12\b\n" + + "\x04NODE\x10\x00\x12\b\n" + + "\x04SLOT\x10\x01\x12\t\n" + + "\x05EPOCH\x10\x02\x12\x0e\n" + + "\n" + + "BLOCK_ROOT\x10\x03\x12\x10\n" + + "\fNODE_VERSION\x10\x04\x12\f\n" + + "\bLOCATION\x10\x05\x12\v\n" + + "\aNETWORK\x10\x06\x12\x19\n" + + "\x15BEACON_IMPLEMENTATION\x10\a\"\x90\x02\n" + + "#ListUniqueBeaconBlockValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x03(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x03(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x03(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x03(\tR\anetwork\x123\n" + + "\x15beacon_implementation\x18\b \x03(\tR\x14beaconImplementation\"\xb4\x03\n" + + "\x16ListBeaconBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\n" + + "pagination\x18\n" + + " \x01(\v2\x19.indexer.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x123\n" + + "\x15beacon_implementation\x18\f \x01(\tR\x14beaconImplementation\"T\n" + + "\x17ListBeaconBlockResponse\x129\n" + + "\rbeacon_blocks\x18\x01 \x03(\v2\x14.indexer.BeaconBlockR\fbeaconBlocks\"\xfa\x02\n" + + "\x17CountBeaconBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x123\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x14beaconImplementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\"N\n" + + "\x18CountBeaconBlockResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xf5\x01\n" + + "%ListUniqueBeaconBadBlockValuesRequest\x12L\n" + + "\x06fields\x18\x01 \x03(\x0e24.indexer.ListUniqueBeaconBadBlockValuesRequest.FieldR\x06fields\"~\n" + + "\x05Field\x12\b\n" + + "\x04NODE\x10\x00\x12\b\n" + + "\x04SLOT\x10\x01\x12\t\n" + + "\x05EPOCH\x10\x02\x12\x0e\n" + + "\n" + + "BLOCK_ROOT\x10\x03\x12\x10\n" + + "\fNODE_VERSION\x10\x04\x12\f\n" + + "\bLOCATION\x10\x05\x12\v\n" + + "\aNETWORK\x10\x06\x12\x19\n" + + "\x15BEACON_IMPLEMENTATION\x10\a\"\x93\x02\n" + + "&ListUniqueBeaconBadBlockValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x03(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x03(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x03(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x03(\tR\anetwork\x123\n" + + "\x15beacon_implementation\x18\b \x03(\tR\x14beaconImplementation\"\x89\x02\n" + + "/ListUniqueExecutionPayloadEnvelopeValuesRequest\x12V\n" + + "\x06fields\x18\x01 \x03(\x0e2>.indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest.FieldR\x06fields\"~\n" + + "\x05Field\x12\b\n" + + "\x04NODE\x10\x00\x12\b\n" + + "\x04SLOT\x10\x01\x12\t\n" + + "\x05EPOCH\x10\x02\x12\x0e\n" + + "\n" + + "BLOCK_ROOT\x10\x03\x12\x10\n" + + "\fNODE_VERSION\x10\x04\x12\f\n" + + "\bLOCATION\x10\x05\x12\v\n" + + "\aNETWORK\x10\x06\x12\x19\n" + + "\x15BEACON_IMPLEMENTATION\x10\a\"\x9d\x02\n" + + "0ListUniqueExecutionPayloadEnvelopeValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x03(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x03(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x03(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x03(\tR\anetwork\x123\n" + + "\x15beacon_implementation\x18\b \x03(\tR\x14beaconImplementation\"\xc1\x03\n" + + "#ListExecutionPayloadEnvelopeRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\n" + + "pagination\x18\n" + + " \x01(\v2\x19.indexer.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x123\n" + + "\x15beacon_implementation\x18\f \x01(\tR\x14beaconImplementation\"\x89\x01\n" + + "$ListExecutionPayloadEnvelopeResponse\x12a\n" + + "\x1bexecution_payload_envelopes\x18\x01 \x03(\v2!.indexer.ExecutionPayloadEnvelopeR\x19executionPayloadEnvelopes\"\x87\x03\n" + + "$CountExecutionPayloadEnvelopeRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x123\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x14beaconImplementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\"[\n" + + "%CountExecutionPayloadEnvelopeResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xb7\x03\n" + + "\x19ListBeaconBadBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\n" + + "pagination\x18\n" + + " \x01(\v2\x19.indexer.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x123\n" + + "\x15beacon_implementation\x18\f \x01(\tR\x14beaconImplementation\"a\n" + + "\x1aListBeaconBadBlockResponse\x12C\n" + + "\x11beacon_bad_blocks\x18\x01 \x03(\v2\x17.indexer.BeaconBadBlockR\x0fbeaconBadBlocks\"\xfd\x02\n" + + "\x1aCountBeaconBadBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x123\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x14beaconImplementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\"Q\n" + + "\x1bCountBeaconBadBlockResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xff\x01\n" + + "$ListUniqueBeaconBadBlobValuesRequest\x12K\n" + + "\x06fields\x18\x01 \x03(\x0e23.indexer.ListUniqueBeaconBadBlobValuesRequest.FieldR\x06fields\"\x89\x01\n" + + "\x05Field\x12\b\n" + + "\x04NODE\x10\x00\x12\b\n" + + "\x04SLOT\x10\x01\x12\t\n" + + "\x05EPOCH\x10\x02\x12\x0e\n" + + "\n" + + "BLOCK_ROOT\x10\x03\x12\x10\n" + + "\fNODE_VERSION\x10\x04\x12\f\n" + + "\bLOCATION\x10\x05\x12\v\n" + + "\aNETWORK\x10\x06\x12\x19\n" + + "\x15BEACON_IMPLEMENTATION\x10\a\x12\t\n" + + "\x05INDEX\x10\b\"\xa8\x02\n" + + "%ListUniqueBeaconBadBlobValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x03(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x03(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x03(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x03(\tR\anetwork\x123\n" + + "\x15beacon_implementation\x18\b \x03(\tR\x14beaconImplementation\x12\x14\n" + + "\x05index\x18\t \x03(\x04R\x05index\"\xea\x03\n" + + "\x18ListBeaconBadBlobRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\n" + + "pagination\x18\n" + + " \x01(\v2\x19.indexer.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x123\n" + + "\x15beacon_implementation\x18\f \x01(\tR\x14beaconImplementation\x122\n" + + "\x05index\x18\r \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05index\"]\n" + + "\x19ListBeaconBadBlobResponse\x12@\n" + + "\x10beacon_bad_blobs\x18\x01 \x03(\v2\x16.indexer.BeaconBadBlobR\x0ebeaconBadBlobs\"\xb0\x03\n" + + "\x19CountBeaconBadBlobRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x123\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x14beaconImplementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x122\n" + + "\x05index\x18\f \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05index\"P\n" + + "\x1aCountBeaconBadBlobResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"[\n" + + "\x10PaginationCursor\x12\x14\n" + + "\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x02 \x01(\x05R\x06offset\x12\x19\n" + + "\border_by\x18\x03 \x01(\tR\aorderBy\"\xa7\x05\n" + + "\x1eCreateExecutionBadBlockRequest\x120\n" + + "\x04node\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x12;\n" + + "\n" + + "block_hash\x18\x03 \x01(\v2\x1c.google.protobuf.StringValueR\tblockHash\x12>\n" + + "\fblock_number\x18\x04 \x01(\v2\x1b.google.protobuf.Int64ValueR\vblockNumber\x128\n" + + "\blocation\x18\x05 \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12W\n" + + "\x18execution_implementation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\x17executionImplementation\x12?\n" + + "\fnode_version\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x12F\n" + + "\x10block_extra_data\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x0eblockExtraData\x12G\n" + + "\x10content_encoding\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"O\n" + + "\x1fCreateExecutionBadBlockResponse\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\"\xe3\x03\n" + + "\x1cListExecutionBadBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12!\n" + + "\fblock_number\x18\x02 \x01(\x03R\vblockNumber\x12\x1d\n" + + "\n" + + "block_hash\x18\x03 \x01(\tR\tblockHash\x12\x1a\n" + + "\blocation\x18\x04 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\x05 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\n" + + "pagination\x18\b \x01(\v2\x19.indexer.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\t \x01(\tR\x02id\x129\n" + + "\x18execution_implementation\x18\n" + + " \x01(\tR\x17executionImplementation\x12!\n" + + "\fnode_version\x18\v \x01(\tR\vnodeVersion\x12(\n" + + "\x10block_extra_data\x18\f \x01(\tR\x0eblockExtraData\"m\n" + + "\x1dListExecutionBadBlockResponse\x12L\n" + + "\x14execution_bad_blocks\x18\x01 \x03(\v2\x1a.indexer.ExecutionBadBlockR\x12executionBadBlocks\"\x99\x03\n" + + "\x1dCountExecutionBadBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12!\n" + + "\fblock_number\x18\x02 \x01(\x03R\vblockNumber\x12\x1d\n" + + "\n" + + "block_hash\x18\x03 \x01(\tR\tblockHash\x12\x1a\n" + + "\blocation\x18\x04 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\x05 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\x18execution_implementation\x18\b \x01(\tR\x17executionImplementation\x12!\n" + + "\fnode_version\x18\t \x01(\tR\vnodeVersion\x12(\n" + + "\x10block_extra_data\x18\n" + + " \x01(\tR\x0eblockExtraData\"T\n" + + "\x1eCountExecutionBadBlockResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xa6\x02\n" + + "(ListUniqueExecutionBadBlockValuesRequest\x12O\n" + + "\x06fields\x18\x01 \x03(\x0e27.indexer.ListUniqueExecutionBadBlockValuesRequest.FieldR\x06fields\"\xa8\x01\n" + + "\x05Field\x12\b\n" + + "\x04NODE\x10\x00\x12\x0e\n" + + "\n" + + "BLOCK_HASH\x10\x01\x12\x10\n" + + "\fBLOCK_NUMBER\x10\x02\x12\f\n" + + "\bLOCATION\x10\x03\x12\v\n" + + "\aNETWORK\x10\x04\x12\x1c\n" + + "\x18EXECUTION_IMPLEMENTATION\x10\x05\x12\x10\n" + + "\fNODE_VERSION\x10\x06\x12\x12\n" + + "\x0eCLIENT_VERSION\x10\a\x12\x14\n" + + "\x10BLOCK_EXTRA_DATA\x10\b\"\xe6\x02\n" + + ")ListUniqueExecutionBadBlockValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x1d\n" + + "\n" + + "block_hash\x18\x02 \x03(\tR\tblockHash\x12!\n" + + "\fblock_number\x18\x03 \x03(\x03R\vblockNumber\x12\x1a\n" + + "\blocation\x18\x04 \x03(\tR\blocation\x12\x18\n" + + "\anetwork\x18\x05 \x03(\tR\anetwork\x129\n" + + "\x18execution_implementation\x18\x06 \x03(\tR\x17executionImplementation\x12!\n" + + "\fnode_version\x18\a \x03(\tR\vnodeVersion\x12%\n" + + "\x0eclient_version\x18\b \x03(\tR\rclientVersion\x12(\n" + + "\x10block_extra_data\x18\t \x03(\tR\x0eblockExtraData2\xa4\x1a\n" + + "\aIndexer\x12D\n" + + "\tGetConfig\x12\x19.indexer.GetConfigRequest\x1a\x1a.indexer.GetConfigResponse\"\x00\x12q\n" + + "\x18GetStorageHandshakeToken\x12(.indexer.GetStorageHandshakeTokenRequest\x1a).indexer.GetStorageHandshakeTokenResponse\"\x00\x12\\\n" + + "\x11CreateBeaconState\x12!.indexer.CreateBeaconStateRequest\x1a\".indexer.CreateBeaconStateResponse\"\x00\x12V\n" + + "\x0fListBeaconState\x12\x1f.indexer.ListBeaconStateRequest\x1a .indexer.ListBeaconStateResponse\"\x00\x12Y\n" + + "\x10CountBeaconState\x12 .indexer.CountBeaconStateRequest\x1a!.indexer.CountBeaconStateResponse\"\x00\x12z\n" + + "\x1bListUniqueBeaconStateValues\x12+.indexer.ListUniqueBeaconStateValuesRequest\x1a,.indexer.ListUniqueBeaconStateValuesResponse\"\x00\x12\\\n" + + "\x11CreateBeaconBlock\x12!.indexer.CreateBeaconBlockRequest\x1a\".indexer.CreateBeaconBlockResponse\"\x00\x12V\n" + + "\x0fListBeaconBlock\x12\x1f.indexer.ListBeaconBlockRequest\x1a .indexer.ListBeaconBlockResponse\"\x00\x12Y\n" + + "\x10CountBeaconBlock\x12 .indexer.CountBeaconBlockRequest\x1a!.indexer.CountBeaconBlockResponse\"\x00\x12z\n" + + "\x1bListUniqueBeaconBlockValues\x12+.indexer.ListUniqueBeaconBlockValuesRequest\x1a,.indexer.ListUniqueBeaconBlockValuesResponse\"\x00\x12\x83\x01\n" + + "\x1eCreateExecutionPayloadEnvelope\x12..indexer.CreateExecutionPayloadEnvelopeRequest\x1a/.indexer.CreateExecutionPayloadEnvelopeResponse\"\x00\x12}\n" + + "\x1cListExecutionPayloadEnvelope\x12,.indexer.ListExecutionPayloadEnvelopeRequest\x1a-.indexer.ListExecutionPayloadEnvelopeResponse\"\x00\x12\x80\x01\n" + + "\x1dCountExecutionPayloadEnvelope\x12-.indexer.CountExecutionPayloadEnvelopeRequest\x1a..indexer.CountExecutionPayloadEnvelopeResponse\"\x00\x12\xa1\x01\n" + + "(ListUniqueExecutionPayloadEnvelopeValues\x128.indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest\x1a9.indexer.ListUniqueExecutionPayloadEnvelopeValuesResponse\"\x00\x12e\n" + + "\x14CreateBeaconBadBlock\x12$.indexer.CreateBeaconBadBlockRequest\x1a%.indexer.CreateBeaconBadBlockResponse\"\x00\x12_\n" + + "\x12ListBeaconBadBlock\x12\".indexer.ListBeaconBadBlockRequest\x1a#.indexer.ListBeaconBadBlockResponse\"\x00\x12b\n" + + "\x13CountBeaconBadBlock\x12#.indexer.CountBeaconBadBlockRequest\x1a$.indexer.CountBeaconBadBlockResponse\"\x00\x12\x83\x01\n" + + "\x1eListUniqueBeaconBadBlockValues\x12..indexer.ListUniqueBeaconBadBlockValuesRequest\x1a/.indexer.ListUniqueBeaconBadBlockValuesResponse\"\x00\x12b\n" + + "\x13CreateBeaconBadBlob\x12#.indexer.CreateBeaconBadBlobRequest\x1a$.indexer.CreateBeaconBadBlobResponse\"\x00\x12\\\n" + + "\x11ListBeaconBadBlob\x12!.indexer.ListBeaconBadBlobRequest\x1a\".indexer.ListBeaconBadBlobResponse\"\x00\x12_\n" + + "\x12CountBeaconBadBlob\x12\".indexer.CountBeaconBadBlobRequest\x1a#.indexer.CountBeaconBadBlobResponse\"\x00\x12\x80\x01\n" + + "\x1dListUniqueBeaconBadBlobValues\x12-.indexer.ListUniqueBeaconBadBlobValuesRequest\x1a..indexer.ListUniqueBeaconBadBlobValuesResponse\"\x00\x12t\n" + + "\x19CreateExecutionBlockTrace\x12).indexer.CreateExecutionBlockTraceRequest\x1a*.indexer.CreateExecutionBlockTraceResponse\"\x00\x12n\n" + + "\x17ListExecutionBlockTrace\x12'.indexer.ListExecutionBlockTraceRequest\x1a(.indexer.ListExecutionBlockTraceResponse\"\x00\x12q\n" + + "\x18CountExecutionBlockTrace\x12(.indexer.CountExecutionBlockTraceRequest\x1a).indexer.CountExecutionBlockTraceResponse\"\x00\x12\x92\x01\n" + + "#ListUniqueExecutionBlockTraceValues\x123.indexer.ListUniqueExecutionBlockTraceValuesRequest\x1a4.indexer.ListUniqueExecutionBlockTraceValuesResponse\"\x00\x12n\n" + + "\x17CreateExecutionBadBlock\x12'.indexer.CreateExecutionBadBlockRequest\x1a(.indexer.CreateExecutionBadBlockResponse\"\x00\x12h\n" + + "\x15ListExecutionBadBlock\x12%.indexer.ListExecutionBadBlockRequest\x1a&.indexer.ListExecutionBadBlockResponse\"\x00\x12k\n" + + "\x16CountExecutionBadBlock\x12&.indexer.CountExecutionBadBlockRequest\x1a'.indexer.CountExecutionBadBlockResponse\"\x00\x12\x8c\x01\n" + + "!ListUniqueExecutionBadBlockValues\x121.indexer.ListUniqueExecutionBadBlockValuesRequest\x1a2.indexer.ListUniqueExecutionBadBlockValuesResponse\"\x00B:Z8github.com/ethpandaops/tracoor/pkg/proto/tracoor/indexerb\x06proto3" var ( - file_indexer_indexer_proto_rawDescOnce sync.Once - file_indexer_indexer_proto_rawDescData = file_indexer_indexer_proto_rawDesc + file_pkg_proto_tracoor_indexer_indexer_proto_rawDescOnce sync.Once + file_pkg_proto_tracoor_indexer_indexer_proto_rawDescData []byte ) -func file_indexer_indexer_proto_rawDescGZIP() []byte { - file_indexer_indexer_proto_rawDescOnce.Do(func() { - file_indexer_indexer_proto_rawDescData = protoimpl.X.CompressGZIP(file_indexer_indexer_proto_rawDescData) +func file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP() []byte { + file_pkg_proto_tracoor_indexer_indexer_proto_rawDescOnce.Do(func() { + file_pkg_proto_tracoor_indexer_indexer_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_pkg_proto_tracoor_indexer_indexer_proto_rawDesc), len(file_pkg_proto_tracoor_indexer_indexer_proto_rawDesc))) }) - return file_indexer_indexer_proto_rawDescData -} - -var file_indexer_indexer_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_indexer_indexer_proto_msgTypes = make([]protoimpl.MessageInfo, 65) -var file_indexer_indexer_proto_goTypes = []interface{}{ - (ListUniqueExecutionBlockTraceValuesRequest_Field)(0), // 0: indexer.ListUniqueExecutionBlockTraceValuesRequest.Field - (ListUniqueBeaconStateValuesRequest_Field)(0), // 1: indexer.ListUniqueBeaconStateValuesRequest.Field - (ListUniqueBeaconBlockValuesRequest_Field)(0), // 2: indexer.ListUniqueBeaconBlockValuesRequest.Field - (ListUniqueBeaconBadBlockValuesRequest_Field)(0), // 3: indexer.ListUniqueBeaconBadBlockValuesRequest.Field - (ListUniqueBeaconBadBlobValuesRequest_Field)(0), // 4: indexer.ListUniqueBeaconBadBlobValuesRequest.Field - (ListUniqueExecutionBadBlockValuesRequest_Field)(0), // 5: indexer.ListUniqueExecutionBadBlockValuesRequest.Field - (*BeaconState)(nil), // 6: indexer.BeaconState - (*BeaconBlock)(nil), // 7: indexer.BeaconBlock - (*BeaconBadBlock)(nil), // 8: indexer.BeaconBadBlock - (*BeaconBadBlob)(nil), // 9: indexer.BeaconBadBlob - (*ExecutionBlockTrace)(nil), // 10: indexer.ExecutionBlockTrace - (*ExecutionBadBlock)(nil), // 11: indexer.ExecutionBadBlock - (*Config)(nil), // 12: indexer.Config - (*EthereumConfig)(nil), // 13: indexer.EthereumConfig - (*EthereumNetworkConfig)(nil), // 14: indexer.EthereumNetworkConfig - (*ToolsConfig)(nil), // 15: indexer.ToolsConfig - (*GitRepositoryConfig)(nil), // 16: indexer.GitRepositoryConfig - (*ZcliConfig)(nil), // 17: indexer.ZcliConfig - (*GetConfigRequest)(nil), // 18: indexer.GetConfigRequest - (*GetConfigResponse)(nil), // 19: indexer.GetConfigResponse - (*GetStorageHandshakeTokenRequest)(nil), // 20: indexer.GetStorageHandshakeTokenRequest - (*GetStorageHandshakeTokenResponse)(nil), // 21: indexer.GetStorageHandshakeTokenResponse - (*CreateBeaconStateRequest)(nil), // 22: indexer.CreateBeaconStateRequest - (*CreateBeaconStateResponse)(nil), // 23: indexer.CreateBeaconStateResponse - (*CreateBeaconBlockRequest)(nil), // 24: indexer.CreateBeaconBlockRequest - (*CreateBeaconBlockResponse)(nil), // 25: indexer.CreateBeaconBlockResponse - (*CreateBeaconBadBlockRequest)(nil), // 26: indexer.CreateBeaconBadBlockRequest - (*CreateBeaconBadBlockResponse)(nil), // 27: indexer.CreateBeaconBadBlockResponse - (*CreateBeaconBadBlobRequest)(nil), // 28: indexer.CreateBeaconBadBlobRequest - (*CreateBeaconBadBlobResponse)(nil), // 29: indexer.CreateBeaconBadBlobResponse - (*CreateExecutionBlockTraceRequest)(nil), // 30: indexer.CreateExecutionBlockTraceRequest - (*CreateExecutionBlockTraceResponse)(nil), // 31: indexer.CreateExecutionBlockTraceResponse - (*ListExecutionBlockTraceRequest)(nil), // 32: indexer.ListExecutionBlockTraceRequest - (*ListExecutionBlockTraceResponse)(nil), // 33: indexer.ListExecutionBlockTraceResponse - (*CountExecutionBlockTraceRequest)(nil), // 34: indexer.CountExecutionBlockTraceRequest - (*CountExecutionBlockTraceResponse)(nil), // 35: indexer.CountExecutionBlockTraceResponse - (*ListUniqueExecutionBlockTraceValuesRequest)(nil), // 36: indexer.ListUniqueExecutionBlockTraceValuesRequest - (*ListUniqueExecutionBlockTraceValuesResponse)(nil), // 37: indexer.ListUniqueExecutionBlockTraceValuesResponse - (*ListUniqueBeaconStateValuesRequest)(nil), // 38: indexer.ListUniqueBeaconStateValuesRequest - (*ListUniqueBeaconStateValuesResponse)(nil), // 39: indexer.ListUniqueBeaconStateValuesResponse - (*ListBeaconStateRequest)(nil), // 40: indexer.ListBeaconStateRequest - (*ListBeaconStateResponse)(nil), // 41: indexer.ListBeaconStateResponse - (*CountBeaconStateRequest)(nil), // 42: indexer.CountBeaconStateRequest - (*CountBeaconStateResponse)(nil), // 43: indexer.CountBeaconStateResponse - (*ListUniqueBeaconBlockValuesRequest)(nil), // 44: indexer.ListUniqueBeaconBlockValuesRequest - (*ListUniqueBeaconBlockValuesResponse)(nil), // 45: indexer.ListUniqueBeaconBlockValuesResponse - (*ListBeaconBlockRequest)(nil), // 46: indexer.ListBeaconBlockRequest - (*ListBeaconBlockResponse)(nil), // 47: indexer.ListBeaconBlockResponse - (*CountBeaconBlockRequest)(nil), // 48: indexer.CountBeaconBlockRequest - (*CountBeaconBlockResponse)(nil), // 49: indexer.CountBeaconBlockResponse - (*ListUniqueBeaconBadBlockValuesRequest)(nil), // 50: indexer.ListUniqueBeaconBadBlockValuesRequest - (*ListUniqueBeaconBadBlockValuesResponse)(nil), // 51: indexer.ListUniqueBeaconBadBlockValuesResponse - (*ListBeaconBadBlockRequest)(nil), // 52: indexer.ListBeaconBadBlockRequest - (*ListBeaconBadBlockResponse)(nil), // 53: indexer.ListBeaconBadBlockResponse - (*CountBeaconBadBlockRequest)(nil), // 54: indexer.CountBeaconBadBlockRequest - (*CountBeaconBadBlockResponse)(nil), // 55: indexer.CountBeaconBadBlockResponse - (*ListUniqueBeaconBadBlobValuesRequest)(nil), // 56: indexer.ListUniqueBeaconBadBlobValuesRequest - (*ListUniqueBeaconBadBlobValuesResponse)(nil), // 57: indexer.ListUniqueBeaconBadBlobValuesResponse - (*ListBeaconBadBlobRequest)(nil), // 58: indexer.ListBeaconBadBlobRequest - (*ListBeaconBadBlobResponse)(nil), // 59: indexer.ListBeaconBadBlobResponse - (*CountBeaconBadBlobRequest)(nil), // 60: indexer.CountBeaconBadBlobRequest - (*CountBeaconBadBlobResponse)(nil), // 61: indexer.CountBeaconBadBlobResponse - (*PaginationCursor)(nil), // 62: indexer.PaginationCursor - (*CreateExecutionBadBlockRequest)(nil), // 63: indexer.CreateExecutionBadBlockRequest - (*CreateExecutionBadBlockResponse)(nil), // 64: indexer.CreateExecutionBadBlockResponse - (*ListExecutionBadBlockRequest)(nil), // 65: indexer.ListExecutionBadBlockRequest - (*ListExecutionBadBlockResponse)(nil), // 66: indexer.ListExecutionBadBlockResponse - (*CountExecutionBadBlockRequest)(nil), // 67: indexer.CountExecutionBadBlockRequest - (*CountExecutionBadBlockResponse)(nil), // 68: indexer.CountExecutionBadBlockResponse - (*ListUniqueExecutionBadBlockValuesRequest)(nil), // 69: indexer.ListUniqueExecutionBadBlockValuesRequest - (*ListUniqueExecutionBadBlockValuesResponse)(nil), // 70: indexer.ListUniqueExecutionBadBlockValuesResponse - (*wrapperspb.StringValue)(nil), // 71: google.protobuf.StringValue - (*timestamppb.Timestamp)(nil), // 72: google.protobuf.Timestamp - (*wrapperspb.UInt64Value)(nil), // 73: google.protobuf.UInt64Value - (*wrapperspb.Int64Value)(nil), // 74: google.protobuf.Int64Value -} -var file_indexer_indexer_proto_depIdxs = []int32{ - 71, // 0: indexer.BeaconState.id:type_name -> google.protobuf.StringValue - 71, // 1: indexer.BeaconState.node:type_name -> google.protobuf.StringValue - 72, // 2: indexer.BeaconState.fetched_at:type_name -> google.protobuf.Timestamp - 73, // 3: indexer.BeaconState.slot:type_name -> google.protobuf.UInt64Value - 73, // 4: indexer.BeaconState.epoch:type_name -> google.protobuf.UInt64Value - 71, // 5: indexer.BeaconState.state_root:type_name -> google.protobuf.StringValue - 71, // 6: indexer.BeaconState.node_version:type_name -> google.protobuf.StringValue - 71, // 7: indexer.BeaconState.location:type_name -> google.protobuf.StringValue - 71, // 8: indexer.BeaconState.network:type_name -> google.protobuf.StringValue - 71, // 9: indexer.BeaconState.beacon_implementation:type_name -> google.protobuf.StringValue - 71, // 10: indexer.BeaconState.content_encoding:type_name -> google.protobuf.StringValue - 71, // 11: indexer.BeaconBlock.id:type_name -> google.protobuf.StringValue - 71, // 12: indexer.BeaconBlock.node:type_name -> google.protobuf.StringValue - 72, // 13: indexer.BeaconBlock.fetched_at:type_name -> google.protobuf.Timestamp - 73, // 14: indexer.BeaconBlock.slot:type_name -> google.protobuf.UInt64Value - 73, // 15: indexer.BeaconBlock.epoch:type_name -> google.protobuf.UInt64Value - 71, // 16: indexer.BeaconBlock.block_root:type_name -> google.protobuf.StringValue - 71, // 17: indexer.BeaconBlock.node_version:type_name -> google.protobuf.StringValue - 71, // 18: indexer.BeaconBlock.location:type_name -> google.protobuf.StringValue - 71, // 19: indexer.BeaconBlock.network:type_name -> google.protobuf.StringValue - 71, // 20: indexer.BeaconBlock.beacon_implementation:type_name -> google.protobuf.StringValue - 71, // 21: indexer.BeaconBlock.content_encoding:type_name -> google.protobuf.StringValue - 71, // 22: indexer.BeaconBadBlock.id:type_name -> google.protobuf.StringValue - 71, // 23: indexer.BeaconBadBlock.node:type_name -> google.protobuf.StringValue - 72, // 24: indexer.BeaconBadBlock.fetched_at:type_name -> google.protobuf.Timestamp - 73, // 25: indexer.BeaconBadBlock.slot:type_name -> google.protobuf.UInt64Value - 73, // 26: indexer.BeaconBadBlock.epoch:type_name -> google.protobuf.UInt64Value - 71, // 27: indexer.BeaconBadBlock.block_root:type_name -> google.protobuf.StringValue - 71, // 28: indexer.BeaconBadBlock.node_version:type_name -> google.protobuf.StringValue - 71, // 29: indexer.BeaconBadBlock.location:type_name -> google.protobuf.StringValue - 71, // 30: indexer.BeaconBadBlock.network:type_name -> google.protobuf.StringValue - 71, // 31: indexer.BeaconBadBlock.beacon_implementation:type_name -> google.protobuf.StringValue - 71, // 32: indexer.BeaconBadBlock.content_encoding:type_name -> google.protobuf.StringValue - 71, // 33: indexer.BeaconBadBlob.id:type_name -> google.protobuf.StringValue - 71, // 34: indexer.BeaconBadBlob.node:type_name -> google.protobuf.StringValue - 72, // 35: indexer.BeaconBadBlob.fetched_at:type_name -> google.protobuf.Timestamp - 73, // 36: indexer.BeaconBadBlob.slot:type_name -> google.protobuf.UInt64Value - 73, // 37: indexer.BeaconBadBlob.epoch:type_name -> google.protobuf.UInt64Value - 71, // 38: indexer.BeaconBadBlob.block_root:type_name -> google.protobuf.StringValue - 71, // 39: indexer.BeaconBadBlob.node_version:type_name -> google.protobuf.StringValue - 71, // 40: indexer.BeaconBadBlob.location:type_name -> google.protobuf.StringValue - 71, // 41: indexer.BeaconBadBlob.network:type_name -> google.protobuf.StringValue - 71, // 42: indexer.BeaconBadBlob.beacon_implementation:type_name -> google.protobuf.StringValue - 73, // 43: indexer.BeaconBadBlob.index:type_name -> google.protobuf.UInt64Value - 71, // 44: indexer.BeaconBadBlob.content_encoding:type_name -> google.protobuf.StringValue - 71, // 45: indexer.ExecutionBlockTrace.id:type_name -> google.protobuf.StringValue - 71, // 46: indexer.ExecutionBlockTrace.node:type_name -> google.protobuf.StringValue - 72, // 47: indexer.ExecutionBlockTrace.fetched_at:type_name -> google.protobuf.Timestamp - 71, // 48: indexer.ExecutionBlockTrace.block_hash:type_name -> google.protobuf.StringValue - 74, // 49: indexer.ExecutionBlockTrace.block_number:type_name -> google.protobuf.Int64Value - 71, // 50: indexer.ExecutionBlockTrace.location:type_name -> google.protobuf.StringValue - 71, // 51: indexer.ExecutionBlockTrace.network:type_name -> google.protobuf.StringValue - 71, // 52: indexer.ExecutionBlockTrace.execution_implementation:type_name -> google.protobuf.StringValue - 71, // 53: indexer.ExecutionBlockTrace.node_version:type_name -> google.protobuf.StringValue - 71, // 54: indexer.ExecutionBlockTrace.content_encoding:type_name -> google.protobuf.StringValue - 71, // 55: indexer.ExecutionBadBlock.id:type_name -> google.protobuf.StringValue - 71, // 56: indexer.ExecutionBadBlock.node:type_name -> google.protobuf.StringValue - 72, // 57: indexer.ExecutionBadBlock.fetched_at:type_name -> google.protobuf.Timestamp - 71, // 58: indexer.ExecutionBadBlock.block_hash:type_name -> google.protobuf.StringValue - 74, // 59: indexer.ExecutionBadBlock.block_number:type_name -> google.protobuf.Int64Value - 71, // 60: indexer.ExecutionBadBlock.location:type_name -> google.protobuf.StringValue - 71, // 61: indexer.ExecutionBadBlock.network:type_name -> google.protobuf.StringValue - 71, // 62: indexer.ExecutionBadBlock.execution_implementation:type_name -> google.protobuf.StringValue - 71, // 63: indexer.ExecutionBadBlock.node_version:type_name -> google.protobuf.StringValue - 71, // 64: indexer.ExecutionBadBlock.block_extra_data:type_name -> google.protobuf.StringValue - 71, // 65: indexer.ExecutionBadBlock.content_encoding:type_name -> google.protobuf.StringValue - 13, // 66: indexer.Config.ethereum:type_name -> indexer.EthereumConfig - 71, // 67: indexer.EthereumConfig.network:type_name -> google.protobuf.StringValue - 14, // 68: indexer.EthereumConfig.config:type_name -> indexer.EthereumNetworkConfig - 15, // 69: indexer.EthereumConfig.tools:type_name -> indexer.ToolsConfig - 71, // 70: indexer.EthereumNetworkConfig.repository:type_name -> google.protobuf.StringValue - 71, // 71: indexer.EthereumNetworkConfig.branch:type_name -> google.protobuf.StringValue - 71, // 72: indexer.EthereumNetworkConfig.path:type_name -> google.protobuf.StringValue - 16, // 73: indexer.ToolsConfig.ncli:type_name -> indexer.GitRepositoryConfig - 16, // 74: indexer.ToolsConfig.lcli:type_name -> indexer.GitRepositoryConfig - 17, // 75: indexer.ToolsConfig.zcli:type_name -> indexer.ZcliConfig - 71, // 76: indexer.GitRepositoryConfig.repository:type_name -> google.protobuf.StringValue - 71, // 77: indexer.GitRepositoryConfig.branch:type_name -> google.protobuf.StringValue - 71, // 78: indexer.ZcliConfig.fork:type_name -> google.protobuf.StringValue - 12, // 79: indexer.GetConfigResponse.config:type_name -> indexer.Config - 71, // 80: indexer.CreateBeaconStateRequest.node:type_name -> google.protobuf.StringValue - 72, // 81: indexer.CreateBeaconStateRequest.fetched_at:type_name -> google.protobuf.Timestamp - 73, // 82: indexer.CreateBeaconStateRequest.slot:type_name -> google.protobuf.UInt64Value - 73, // 83: indexer.CreateBeaconStateRequest.epoch:type_name -> google.protobuf.UInt64Value - 71, // 84: indexer.CreateBeaconStateRequest.state_root:type_name -> google.protobuf.StringValue - 71, // 85: indexer.CreateBeaconStateRequest.node_version:type_name -> google.protobuf.StringValue - 71, // 86: indexer.CreateBeaconStateRequest.location:type_name -> google.protobuf.StringValue - 71, // 87: indexer.CreateBeaconStateRequest.network:type_name -> google.protobuf.StringValue - 71, // 88: indexer.CreateBeaconStateRequest.beacon_implementation:type_name -> google.protobuf.StringValue - 71, // 89: indexer.CreateBeaconStateRequest.content_encoding:type_name -> google.protobuf.StringValue - 71, // 90: indexer.CreateBeaconStateResponse.id:type_name -> google.protobuf.StringValue - 71, // 91: indexer.CreateBeaconBlockRequest.node:type_name -> google.protobuf.StringValue - 72, // 92: indexer.CreateBeaconBlockRequest.fetched_at:type_name -> google.protobuf.Timestamp - 73, // 93: indexer.CreateBeaconBlockRequest.slot:type_name -> google.protobuf.UInt64Value - 73, // 94: indexer.CreateBeaconBlockRequest.epoch:type_name -> google.protobuf.UInt64Value - 71, // 95: indexer.CreateBeaconBlockRequest.block_root:type_name -> google.protobuf.StringValue - 71, // 96: indexer.CreateBeaconBlockRequest.node_version:type_name -> google.protobuf.StringValue - 71, // 97: indexer.CreateBeaconBlockRequest.location:type_name -> google.protobuf.StringValue - 71, // 98: indexer.CreateBeaconBlockRequest.network:type_name -> google.protobuf.StringValue - 71, // 99: indexer.CreateBeaconBlockRequest.beacon_implementation:type_name -> google.protobuf.StringValue - 71, // 100: indexer.CreateBeaconBlockRequest.content_encoding:type_name -> google.protobuf.StringValue - 71, // 101: indexer.CreateBeaconBlockResponse.id:type_name -> google.protobuf.StringValue - 71, // 102: indexer.CreateBeaconBadBlockRequest.node:type_name -> google.protobuf.StringValue - 72, // 103: indexer.CreateBeaconBadBlockRequest.fetched_at:type_name -> google.protobuf.Timestamp - 73, // 104: indexer.CreateBeaconBadBlockRequest.slot:type_name -> google.protobuf.UInt64Value - 73, // 105: indexer.CreateBeaconBadBlockRequest.epoch:type_name -> google.protobuf.UInt64Value - 71, // 106: indexer.CreateBeaconBadBlockRequest.block_root:type_name -> google.protobuf.StringValue - 71, // 107: indexer.CreateBeaconBadBlockRequest.node_version:type_name -> google.protobuf.StringValue - 71, // 108: indexer.CreateBeaconBadBlockRequest.location:type_name -> google.protobuf.StringValue - 71, // 109: indexer.CreateBeaconBadBlockRequest.network:type_name -> google.protobuf.StringValue - 71, // 110: indexer.CreateBeaconBadBlockRequest.beacon_implementation:type_name -> google.protobuf.StringValue - 71, // 111: indexer.CreateBeaconBadBlockRequest.content_encoding:type_name -> google.protobuf.StringValue - 71, // 112: indexer.CreateBeaconBadBlockResponse.id:type_name -> google.protobuf.StringValue - 71, // 113: indexer.CreateBeaconBadBlobRequest.node:type_name -> google.protobuf.StringValue - 72, // 114: indexer.CreateBeaconBadBlobRequest.fetched_at:type_name -> google.protobuf.Timestamp - 73, // 115: indexer.CreateBeaconBadBlobRequest.slot:type_name -> google.protobuf.UInt64Value - 73, // 116: indexer.CreateBeaconBadBlobRequest.epoch:type_name -> google.protobuf.UInt64Value - 71, // 117: indexer.CreateBeaconBadBlobRequest.block_root:type_name -> google.protobuf.StringValue - 71, // 118: indexer.CreateBeaconBadBlobRequest.node_version:type_name -> google.protobuf.StringValue - 71, // 119: indexer.CreateBeaconBadBlobRequest.location:type_name -> google.protobuf.StringValue - 71, // 120: indexer.CreateBeaconBadBlobRequest.network:type_name -> google.protobuf.StringValue - 71, // 121: indexer.CreateBeaconBadBlobRequest.beacon_implementation:type_name -> google.protobuf.StringValue - 73, // 122: indexer.CreateBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value - 71, // 123: indexer.CreateBeaconBadBlobRequest.content_encoding:type_name -> google.protobuf.StringValue - 71, // 124: indexer.CreateBeaconBadBlobResponse.id:type_name -> google.protobuf.StringValue - 71, // 125: indexer.CreateExecutionBlockTraceRequest.node:type_name -> google.protobuf.StringValue - 72, // 126: indexer.CreateExecutionBlockTraceRequest.fetched_at:type_name -> google.protobuf.Timestamp - 71, // 127: indexer.CreateExecutionBlockTraceRequest.block_hash:type_name -> google.protobuf.StringValue - 74, // 128: indexer.CreateExecutionBlockTraceRequest.block_number:type_name -> google.protobuf.Int64Value - 71, // 129: indexer.CreateExecutionBlockTraceRequest.location:type_name -> google.protobuf.StringValue - 71, // 130: indexer.CreateExecutionBlockTraceRequest.network:type_name -> google.protobuf.StringValue - 71, // 131: indexer.CreateExecutionBlockTraceRequest.execution_implementation:type_name -> google.protobuf.StringValue - 71, // 132: indexer.CreateExecutionBlockTraceRequest.node_version:type_name -> google.protobuf.StringValue - 71, // 133: indexer.CreateExecutionBlockTraceRequest.content_encoding:type_name -> google.protobuf.StringValue - 71, // 134: indexer.CreateExecutionBlockTraceResponse.id:type_name -> google.protobuf.StringValue - 72, // 135: indexer.ListExecutionBlockTraceRequest.before:type_name -> google.protobuf.Timestamp - 72, // 136: indexer.ListExecutionBlockTraceRequest.after:type_name -> google.protobuf.Timestamp - 62, // 137: indexer.ListExecutionBlockTraceRequest.pagination:type_name -> indexer.PaginationCursor - 10, // 138: indexer.ListExecutionBlockTraceResponse.execution_block_traces:type_name -> indexer.ExecutionBlockTrace - 72, // 139: indexer.CountExecutionBlockTraceRequest.before:type_name -> google.protobuf.Timestamp - 72, // 140: indexer.CountExecutionBlockTraceRequest.after:type_name -> google.protobuf.Timestamp - 73, // 141: indexer.CountExecutionBlockTraceResponse.count:type_name -> google.protobuf.UInt64Value - 0, // 142: indexer.ListUniqueExecutionBlockTraceValuesRequest.fields:type_name -> indexer.ListUniqueExecutionBlockTraceValuesRequest.Field - 1, // 143: indexer.ListUniqueBeaconStateValuesRequest.fields:type_name -> indexer.ListUniqueBeaconStateValuesRequest.Field - 72, // 144: indexer.ListBeaconStateRequest.before:type_name -> google.protobuf.Timestamp - 72, // 145: indexer.ListBeaconStateRequest.after:type_name -> google.protobuf.Timestamp - 62, // 146: indexer.ListBeaconStateRequest.pagination:type_name -> indexer.PaginationCursor - 6, // 147: indexer.ListBeaconStateResponse.beacon_states:type_name -> indexer.BeaconState - 72, // 148: indexer.CountBeaconStateRequest.before:type_name -> google.protobuf.Timestamp - 72, // 149: indexer.CountBeaconStateRequest.after:type_name -> google.protobuf.Timestamp - 73, // 150: indexer.CountBeaconStateResponse.count:type_name -> google.protobuf.UInt64Value - 2, // 151: indexer.ListUniqueBeaconBlockValuesRequest.fields:type_name -> indexer.ListUniqueBeaconBlockValuesRequest.Field - 72, // 152: indexer.ListBeaconBlockRequest.before:type_name -> google.protobuf.Timestamp - 72, // 153: indexer.ListBeaconBlockRequest.after:type_name -> google.protobuf.Timestamp - 62, // 154: indexer.ListBeaconBlockRequest.pagination:type_name -> indexer.PaginationCursor - 7, // 155: indexer.ListBeaconBlockResponse.beacon_blocks:type_name -> indexer.BeaconBlock - 72, // 156: indexer.CountBeaconBlockRequest.before:type_name -> google.protobuf.Timestamp - 72, // 157: indexer.CountBeaconBlockRequest.after:type_name -> google.protobuf.Timestamp - 73, // 158: indexer.CountBeaconBlockResponse.count:type_name -> google.protobuf.UInt64Value - 3, // 159: indexer.ListUniqueBeaconBadBlockValuesRequest.fields:type_name -> indexer.ListUniqueBeaconBadBlockValuesRequest.Field - 72, // 160: indexer.ListBeaconBadBlockRequest.before:type_name -> google.protobuf.Timestamp - 72, // 161: indexer.ListBeaconBadBlockRequest.after:type_name -> google.protobuf.Timestamp - 62, // 162: indexer.ListBeaconBadBlockRequest.pagination:type_name -> indexer.PaginationCursor - 8, // 163: indexer.ListBeaconBadBlockResponse.beacon_bad_blocks:type_name -> indexer.BeaconBadBlock - 72, // 164: indexer.CountBeaconBadBlockRequest.before:type_name -> google.protobuf.Timestamp - 72, // 165: indexer.CountBeaconBadBlockRequest.after:type_name -> google.protobuf.Timestamp - 73, // 166: indexer.CountBeaconBadBlockResponse.count:type_name -> google.protobuf.UInt64Value - 4, // 167: indexer.ListUniqueBeaconBadBlobValuesRequest.fields:type_name -> indexer.ListUniqueBeaconBadBlobValuesRequest.Field - 72, // 168: indexer.ListBeaconBadBlobRequest.before:type_name -> google.protobuf.Timestamp - 72, // 169: indexer.ListBeaconBadBlobRequest.after:type_name -> google.protobuf.Timestamp - 62, // 170: indexer.ListBeaconBadBlobRequest.pagination:type_name -> indexer.PaginationCursor - 73, // 171: indexer.ListBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value - 9, // 172: indexer.ListBeaconBadBlobResponse.beacon_bad_blobs:type_name -> indexer.BeaconBadBlob - 72, // 173: indexer.CountBeaconBadBlobRequest.before:type_name -> google.protobuf.Timestamp - 72, // 174: indexer.CountBeaconBadBlobRequest.after:type_name -> google.protobuf.Timestamp - 73, // 175: indexer.CountBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value - 73, // 176: indexer.CountBeaconBadBlobResponse.count:type_name -> google.protobuf.UInt64Value - 71, // 177: indexer.CreateExecutionBadBlockRequest.node:type_name -> google.protobuf.StringValue - 72, // 178: indexer.CreateExecutionBadBlockRequest.fetched_at:type_name -> google.protobuf.Timestamp - 71, // 179: indexer.CreateExecutionBadBlockRequest.block_hash:type_name -> google.protobuf.StringValue - 74, // 180: indexer.CreateExecutionBadBlockRequest.block_number:type_name -> google.protobuf.Int64Value - 71, // 181: indexer.CreateExecutionBadBlockRequest.location:type_name -> google.protobuf.StringValue - 71, // 182: indexer.CreateExecutionBadBlockRequest.network:type_name -> google.protobuf.StringValue - 71, // 183: indexer.CreateExecutionBadBlockRequest.execution_implementation:type_name -> google.protobuf.StringValue - 71, // 184: indexer.CreateExecutionBadBlockRequest.node_version:type_name -> google.protobuf.StringValue - 71, // 185: indexer.CreateExecutionBadBlockRequest.block_extra_data:type_name -> google.protobuf.StringValue - 71, // 186: indexer.CreateExecutionBadBlockRequest.content_encoding:type_name -> google.protobuf.StringValue - 71, // 187: indexer.CreateExecutionBadBlockResponse.id:type_name -> google.protobuf.StringValue - 72, // 188: indexer.ListExecutionBadBlockRequest.before:type_name -> google.protobuf.Timestamp - 72, // 189: indexer.ListExecutionBadBlockRequest.after:type_name -> google.protobuf.Timestamp - 62, // 190: indexer.ListExecutionBadBlockRequest.pagination:type_name -> indexer.PaginationCursor - 11, // 191: indexer.ListExecutionBadBlockResponse.execution_bad_blocks:type_name -> indexer.ExecutionBadBlock - 72, // 192: indexer.CountExecutionBadBlockRequest.before:type_name -> google.protobuf.Timestamp - 72, // 193: indexer.CountExecutionBadBlockRequest.after:type_name -> google.protobuf.Timestamp - 73, // 194: indexer.CountExecutionBadBlockResponse.count:type_name -> google.protobuf.UInt64Value - 5, // 195: indexer.ListUniqueExecutionBadBlockValuesRequest.fields:type_name -> indexer.ListUniqueExecutionBadBlockValuesRequest.Field - 18, // 196: indexer.Indexer.GetConfig:input_type -> indexer.GetConfigRequest - 20, // 197: indexer.Indexer.GetStorageHandshakeToken:input_type -> indexer.GetStorageHandshakeTokenRequest - 22, // 198: indexer.Indexer.CreateBeaconState:input_type -> indexer.CreateBeaconStateRequest - 40, // 199: indexer.Indexer.ListBeaconState:input_type -> indexer.ListBeaconStateRequest - 42, // 200: indexer.Indexer.CountBeaconState:input_type -> indexer.CountBeaconStateRequest - 38, // 201: indexer.Indexer.ListUniqueBeaconStateValues:input_type -> indexer.ListUniqueBeaconStateValuesRequest - 24, // 202: indexer.Indexer.CreateBeaconBlock:input_type -> indexer.CreateBeaconBlockRequest - 46, // 203: indexer.Indexer.ListBeaconBlock:input_type -> indexer.ListBeaconBlockRequest - 48, // 204: indexer.Indexer.CountBeaconBlock:input_type -> indexer.CountBeaconBlockRequest - 44, // 205: indexer.Indexer.ListUniqueBeaconBlockValues:input_type -> indexer.ListUniqueBeaconBlockValuesRequest - 26, // 206: indexer.Indexer.CreateBeaconBadBlock:input_type -> indexer.CreateBeaconBadBlockRequest - 52, // 207: indexer.Indexer.ListBeaconBadBlock:input_type -> indexer.ListBeaconBadBlockRequest - 54, // 208: indexer.Indexer.CountBeaconBadBlock:input_type -> indexer.CountBeaconBadBlockRequest - 50, // 209: indexer.Indexer.ListUniqueBeaconBadBlockValues:input_type -> indexer.ListUniqueBeaconBadBlockValuesRequest - 28, // 210: indexer.Indexer.CreateBeaconBadBlob:input_type -> indexer.CreateBeaconBadBlobRequest - 58, // 211: indexer.Indexer.ListBeaconBadBlob:input_type -> indexer.ListBeaconBadBlobRequest - 60, // 212: indexer.Indexer.CountBeaconBadBlob:input_type -> indexer.CountBeaconBadBlobRequest - 56, // 213: indexer.Indexer.ListUniqueBeaconBadBlobValues:input_type -> indexer.ListUniqueBeaconBadBlobValuesRequest - 30, // 214: indexer.Indexer.CreateExecutionBlockTrace:input_type -> indexer.CreateExecutionBlockTraceRequest - 32, // 215: indexer.Indexer.ListExecutionBlockTrace:input_type -> indexer.ListExecutionBlockTraceRequest - 34, // 216: indexer.Indexer.CountExecutionBlockTrace:input_type -> indexer.CountExecutionBlockTraceRequest - 36, // 217: indexer.Indexer.ListUniqueExecutionBlockTraceValues:input_type -> indexer.ListUniqueExecutionBlockTraceValuesRequest - 63, // 218: indexer.Indexer.CreateExecutionBadBlock:input_type -> indexer.CreateExecutionBadBlockRequest - 65, // 219: indexer.Indexer.ListExecutionBadBlock:input_type -> indexer.ListExecutionBadBlockRequest - 67, // 220: indexer.Indexer.CountExecutionBadBlock:input_type -> indexer.CountExecutionBadBlockRequest - 69, // 221: indexer.Indexer.ListUniqueExecutionBadBlockValues:input_type -> indexer.ListUniqueExecutionBadBlockValuesRequest - 19, // 222: indexer.Indexer.GetConfig:output_type -> indexer.GetConfigResponse - 21, // 223: indexer.Indexer.GetStorageHandshakeToken:output_type -> indexer.GetStorageHandshakeTokenResponse - 23, // 224: indexer.Indexer.CreateBeaconState:output_type -> indexer.CreateBeaconStateResponse - 41, // 225: indexer.Indexer.ListBeaconState:output_type -> indexer.ListBeaconStateResponse - 43, // 226: indexer.Indexer.CountBeaconState:output_type -> indexer.CountBeaconStateResponse - 39, // 227: indexer.Indexer.ListUniqueBeaconStateValues:output_type -> indexer.ListUniqueBeaconStateValuesResponse - 25, // 228: indexer.Indexer.CreateBeaconBlock:output_type -> indexer.CreateBeaconBlockResponse - 47, // 229: indexer.Indexer.ListBeaconBlock:output_type -> indexer.ListBeaconBlockResponse - 49, // 230: indexer.Indexer.CountBeaconBlock:output_type -> indexer.CountBeaconBlockResponse - 45, // 231: indexer.Indexer.ListUniqueBeaconBlockValues:output_type -> indexer.ListUniqueBeaconBlockValuesResponse - 27, // 232: indexer.Indexer.CreateBeaconBadBlock:output_type -> indexer.CreateBeaconBadBlockResponse - 53, // 233: indexer.Indexer.ListBeaconBadBlock:output_type -> indexer.ListBeaconBadBlockResponse - 55, // 234: indexer.Indexer.CountBeaconBadBlock:output_type -> indexer.CountBeaconBadBlockResponse - 51, // 235: indexer.Indexer.ListUniqueBeaconBadBlockValues:output_type -> indexer.ListUniqueBeaconBadBlockValuesResponse - 29, // 236: indexer.Indexer.CreateBeaconBadBlob:output_type -> indexer.CreateBeaconBadBlobResponse - 59, // 237: indexer.Indexer.ListBeaconBadBlob:output_type -> indexer.ListBeaconBadBlobResponse - 61, // 238: indexer.Indexer.CountBeaconBadBlob:output_type -> indexer.CountBeaconBadBlobResponse - 57, // 239: indexer.Indexer.ListUniqueBeaconBadBlobValues:output_type -> indexer.ListUniqueBeaconBadBlobValuesResponse - 31, // 240: indexer.Indexer.CreateExecutionBlockTrace:output_type -> indexer.CreateExecutionBlockTraceResponse - 33, // 241: indexer.Indexer.ListExecutionBlockTrace:output_type -> indexer.ListExecutionBlockTraceResponse - 35, // 242: indexer.Indexer.CountExecutionBlockTrace:output_type -> indexer.CountExecutionBlockTraceResponse - 37, // 243: indexer.Indexer.ListUniqueExecutionBlockTraceValues:output_type -> indexer.ListUniqueExecutionBlockTraceValuesResponse - 64, // 244: indexer.Indexer.CreateExecutionBadBlock:output_type -> indexer.CreateExecutionBadBlockResponse - 66, // 245: indexer.Indexer.ListExecutionBadBlock:output_type -> indexer.ListExecutionBadBlockResponse - 68, // 246: indexer.Indexer.CountExecutionBadBlock:output_type -> indexer.CountExecutionBadBlockResponse - 70, // 247: indexer.Indexer.ListUniqueExecutionBadBlockValues:output_type -> indexer.ListUniqueExecutionBadBlockValuesResponse - 222, // [222:248] is the sub-list for method output_type - 196, // [196:222] is the sub-list for method input_type - 196, // [196:196] is the sub-list for extension type_name - 196, // [196:196] is the sub-list for extension extendee - 0, // [0:196] is the sub-list for field type_name -} - -func init() { file_indexer_indexer_proto_init() } -func file_indexer_indexer_proto_init() { - if File_indexer_indexer_proto != nil { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescData +} + +var file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes = make([]protoimpl.EnumInfo, 7) +var file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes = make([]protoimpl.MessageInfo, 74) +var file_pkg_proto_tracoor_indexer_indexer_proto_goTypes = []any{ + (ListUniqueExecutionBlockTraceValuesRequest_Field)(0), // 0: indexer.ListUniqueExecutionBlockTraceValuesRequest.Field + (ListUniqueBeaconStateValuesRequest_Field)(0), // 1: indexer.ListUniqueBeaconStateValuesRequest.Field + (ListUniqueBeaconBlockValuesRequest_Field)(0), // 2: indexer.ListUniqueBeaconBlockValuesRequest.Field + (ListUniqueBeaconBadBlockValuesRequest_Field)(0), // 3: indexer.ListUniqueBeaconBadBlockValuesRequest.Field + (ListUniqueExecutionPayloadEnvelopeValuesRequest_Field)(0), // 4: indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest.Field + (ListUniqueBeaconBadBlobValuesRequest_Field)(0), // 5: indexer.ListUniqueBeaconBadBlobValuesRequest.Field + (ListUniqueExecutionBadBlockValuesRequest_Field)(0), // 6: indexer.ListUniqueExecutionBadBlockValuesRequest.Field + (*BeaconState)(nil), // 7: indexer.BeaconState + (*BeaconBlock)(nil), // 8: indexer.BeaconBlock + (*ExecutionPayloadEnvelope)(nil), // 9: indexer.ExecutionPayloadEnvelope + (*BeaconBadBlock)(nil), // 10: indexer.BeaconBadBlock + (*BeaconBadBlob)(nil), // 11: indexer.BeaconBadBlob + (*ExecutionBlockTrace)(nil), // 12: indexer.ExecutionBlockTrace + (*ExecutionBadBlock)(nil), // 13: indexer.ExecutionBadBlock + (*Config)(nil), // 14: indexer.Config + (*EthereumConfig)(nil), // 15: indexer.EthereumConfig + (*EthereumNetworkConfig)(nil), // 16: indexer.EthereumNetworkConfig + (*ToolsConfig)(nil), // 17: indexer.ToolsConfig + (*GitRepositoryConfig)(nil), // 18: indexer.GitRepositoryConfig + (*ZcliConfig)(nil), // 19: indexer.ZcliConfig + (*GetConfigRequest)(nil), // 20: indexer.GetConfigRequest + (*GetConfigResponse)(nil), // 21: indexer.GetConfigResponse + (*GetStorageHandshakeTokenRequest)(nil), // 22: indexer.GetStorageHandshakeTokenRequest + (*GetStorageHandshakeTokenResponse)(nil), // 23: indexer.GetStorageHandshakeTokenResponse + (*CreateBeaconStateRequest)(nil), // 24: indexer.CreateBeaconStateRequest + (*CreateBeaconStateResponse)(nil), // 25: indexer.CreateBeaconStateResponse + (*CreateBeaconBlockRequest)(nil), // 26: indexer.CreateBeaconBlockRequest + (*CreateBeaconBlockResponse)(nil), // 27: indexer.CreateBeaconBlockResponse + (*CreateExecutionPayloadEnvelopeRequest)(nil), // 28: indexer.CreateExecutionPayloadEnvelopeRequest + (*CreateExecutionPayloadEnvelopeResponse)(nil), // 29: indexer.CreateExecutionPayloadEnvelopeResponse + (*CreateBeaconBadBlockRequest)(nil), // 30: indexer.CreateBeaconBadBlockRequest + (*CreateBeaconBadBlockResponse)(nil), // 31: indexer.CreateBeaconBadBlockResponse + (*CreateBeaconBadBlobRequest)(nil), // 32: indexer.CreateBeaconBadBlobRequest + (*CreateBeaconBadBlobResponse)(nil), // 33: indexer.CreateBeaconBadBlobResponse + (*CreateExecutionBlockTraceRequest)(nil), // 34: indexer.CreateExecutionBlockTraceRequest + (*CreateExecutionBlockTraceResponse)(nil), // 35: indexer.CreateExecutionBlockTraceResponse + (*ListExecutionBlockTraceRequest)(nil), // 36: indexer.ListExecutionBlockTraceRequest + (*ListExecutionBlockTraceResponse)(nil), // 37: indexer.ListExecutionBlockTraceResponse + (*CountExecutionBlockTraceRequest)(nil), // 38: indexer.CountExecutionBlockTraceRequest + (*CountExecutionBlockTraceResponse)(nil), // 39: indexer.CountExecutionBlockTraceResponse + (*ListUniqueExecutionBlockTraceValuesRequest)(nil), // 40: indexer.ListUniqueExecutionBlockTraceValuesRequest + (*ListUniqueExecutionBlockTraceValuesResponse)(nil), // 41: indexer.ListUniqueExecutionBlockTraceValuesResponse + (*ListUniqueBeaconStateValuesRequest)(nil), // 42: indexer.ListUniqueBeaconStateValuesRequest + (*ListUniqueBeaconStateValuesResponse)(nil), // 43: indexer.ListUniqueBeaconStateValuesResponse + (*ListBeaconStateRequest)(nil), // 44: indexer.ListBeaconStateRequest + (*ListBeaconStateResponse)(nil), // 45: indexer.ListBeaconStateResponse + (*CountBeaconStateRequest)(nil), // 46: indexer.CountBeaconStateRequest + (*CountBeaconStateResponse)(nil), // 47: indexer.CountBeaconStateResponse + (*ListUniqueBeaconBlockValuesRequest)(nil), // 48: indexer.ListUniqueBeaconBlockValuesRequest + (*ListUniqueBeaconBlockValuesResponse)(nil), // 49: indexer.ListUniqueBeaconBlockValuesResponse + (*ListBeaconBlockRequest)(nil), // 50: indexer.ListBeaconBlockRequest + (*ListBeaconBlockResponse)(nil), // 51: indexer.ListBeaconBlockResponse + (*CountBeaconBlockRequest)(nil), // 52: indexer.CountBeaconBlockRequest + (*CountBeaconBlockResponse)(nil), // 53: indexer.CountBeaconBlockResponse + (*ListUniqueBeaconBadBlockValuesRequest)(nil), // 54: indexer.ListUniqueBeaconBadBlockValuesRequest + (*ListUniqueBeaconBadBlockValuesResponse)(nil), // 55: indexer.ListUniqueBeaconBadBlockValuesResponse + (*ListUniqueExecutionPayloadEnvelopeValuesRequest)(nil), // 56: indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest + (*ListUniqueExecutionPayloadEnvelopeValuesResponse)(nil), // 57: indexer.ListUniqueExecutionPayloadEnvelopeValuesResponse + (*ListExecutionPayloadEnvelopeRequest)(nil), // 58: indexer.ListExecutionPayloadEnvelopeRequest + (*ListExecutionPayloadEnvelopeResponse)(nil), // 59: indexer.ListExecutionPayloadEnvelopeResponse + (*CountExecutionPayloadEnvelopeRequest)(nil), // 60: indexer.CountExecutionPayloadEnvelopeRequest + (*CountExecutionPayloadEnvelopeResponse)(nil), // 61: indexer.CountExecutionPayloadEnvelopeResponse + (*ListBeaconBadBlockRequest)(nil), // 62: indexer.ListBeaconBadBlockRequest + (*ListBeaconBadBlockResponse)(nil), // 63: indexer.ListBeaconBadBlockResponse + (*CountBeaconBadBlockRequest)(nil), // 64: indexer.CountBeaconBadBlockRequest + (*CountBeaconBadBlockResponse)(nil), // 65: indexer.CountBeaconBadBlockResponse + (*ListUniqueBeaconBadBlobValuesRequest)(nil), // 66: indexer.ListUniqueBeaconBadBlobValuesRequest + (*ListUniqueBeaconBadBlobValuesResponse)(nil), // 67: indexer.ListUniqueBeaconBadBlobValuesResponse + (*ListBeaconBadBlobRequest)(nil), // 68: indexer.ListBeaconBadBlobRequest + (*ListBeaconBadBlobResponse)(nil), // 69: indexer.ListBeaconBadBlobResponse + (*CountBeaconBadBlobRequest)(nil), // 70: indexer.CountBeaconBadBlobRequest + (*CountBeaconBadBlobResponse)(nil), // 71: indexer.CountBeaconBadBlobResponse + (*PaginationCursor)(nil), // 72: indexer.PaginationCursor + (*CreateExecutionBadBlockRequest)(nil), // 73: indexer.CreateExecutionBadBlockRequest + (*CreateExecutionBadBlockResponse)(nil), // 74: indexer.CreateExecutionBadBlockResponse + (*ListExecutionBadBlockRequest)(nil), // 75: indexer.ListExecutionBadBlockRequest + (*ListExecutionBadBlockResponse)(nil), // 76: indexer.ListExecutionBadBlockResponse + (*CountExecutionBadBlockRequest)(nil), // 77: indexer.CountExecutionBadBlockRequest + (*CountExecutionBadBlockResponse)(nil), // 78: indexer.CountExecutionBadBlockResponse + (*ListUniqueExecutionBadBlockValuesRequest)(nil), // 79: indexer.ListUniqueExecutionBadBlockValuesRequest + (*ListUniqueExecutionBadBlockValuesResponse)(nil), // 80: indexer.ListUniqueExecutionBadBlockValuesResponse + (*wrapperspb.StringValue)(nil), // 81: google.protobuf.StringValue + (*timestamppb.Timestamp)(nil), // 82: google.protobuf.Timestamp + (*wrapperspb.UInt64Value)(nil), // 83: google.protobuf.UInt64Value + (*wrapperspb.Int64Value)(nil), // 84: google.protobuf.Int64Value +} +var file_pkg_proto_tracoor_indexer_indexer_proto_depIdxs = []int32{ + 81, // 0: indexer.BeaconState.id:type_name -> google.protobuf.StringValue + 81, // 1: indexer.BeaconState.node:type_name -> google.protobuf.StringValue + 82, // 2: indexer.BeaconState.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 3: indexer.BeaconState.slot:type_name -> google.protobuf.UInt64Value + 83, // 4: indexer.BeaconState.epoch:type_name -> google.protobuf.UInt64Value + 81, // 5: indexer.BeaconState.state_root:type_name -> google.protobuf.StringValue + 81, // 6: indexer.BeaconState.node_version:type_name -> google.protobuf.StringValue + 81, // 7: indexer.BeaconState.location:type_name -> google.protobuf.StringValue + 81, // 8: indexer.BeaconState.network:type_name -> google.protobuf.StringValue + 81, // 9: indexer.BeaconState.beacon_implementation:type_name -> google.protobuf.StringValue + 81, // 10: indexer.BeaconState.content_encoding:type_name -> google.protobuf.StringValue + 81, // 11: indexer.BeaconBlock.id:type_name -> google.protobuf.StringValue + 81, // 12: indexer.BeaconBlock.node:type_name -> google.protobuf.StringValue + 82, // 13: indexer.BeaconBlock.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 14: indexer.BeaconBlock.slot:type_name -> google.protobuf.UInt64Value + 83, // 15: indexer.BeaconBlock.epoch:type_name -> google.protobuf.UInt64Value + 81, // 16: indexer.BeaconBlock.block_root:type_name -> google.protobuf.StringValue + 81, // 17: indexer.BeaconBlock.node_version:type_name -> google.protobuf.StringValue + 81, // 18: indexer.BeaconBlock.location:type_name -> google.protobuf.StringValue + 81, // 19: indexer.BeaconBlock.network:type_name -> google.protobuf.StringValue + 81, // 20: indexer.BeaconBlock.beacon_implementation:type_name -> google.protobuf.StringValue + 81, // 21: indexer.BeaconBlock.content_encoding:type_name -> google.protobuf.StringValue + 81, // 22: indexer.ExecutionPayloadEnvelope.id:type_name -> google.protobuf.StringValue + 81, // 23: indexer.ExecutionPayloadEnvelope.node:type_name -> google.protobuf.StringValue + 82, // 24: indexer.ExecutionPayloadEnvelope.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 25: indexer.ExecutionPayloadEnvelope.slot:type_name -> google.protobuf.UInt64Value + 83, // 26: indexer.ExecutionPayloadEnvelope.epoch:type_name -> google.protobuf.UInt64Value + 81, // 27: indexer.ExecutionPayloadEnvelope.block_root:type_name -> google.protobuf.StringValue + 81, // 28: indexer.ExecutionPayloadEnvelope.node_version:type_name -> google.protobuf.StringValue + 81, // 29: indexer.ExecutionPayloadEnvelope.location:type_name -> google.protobuf.StringValue + 81, // 30: indexer.ExecutionPayloadEnvelope.network:type_name -> google.protobuf.StringValue + 81, // 31: indexer.ExecutionPayloadEnvelope.beacon_implementation:type_name -> google.protobuf.StringValue + 81, // 32: indexer.ExecutionPayloadEnvelope.content_encoding:type_name -> google.protobuf.StringValue + 81, // 33: indexer.BeaconBadBlock.id:type_name -> google.protobuf.StringValue + 81, // 34: indexer.BeaconBadBlock.node:type_name -> google.protobuf.StringValue + 82, // 35: indexer.BeaconBadBlock.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 36: indexer.BeaconBadBlock.slot:type_name -> google.protobuf.UInt64Value + 83, // 37: indexer.BeaconBadBlock.epoch:type_name -> google.protobuf.UInt64Value + 81, // 38: indexer.BeaconBadBlock.block_root:type_name -> google.protobuf.StringValue + 81, // 39: indexer.BeaconBadBlock.node_version:type_name -> google.protobuf.StringValue + 81, // 40: indexer.BeaconBadBlock.location:type_name -> google.protobuf.StringValue + 81, // 41: indexer.BeaconBadBlock.network:type_name -> google.protobuf.StringValue + 81, // 42: indexer.BeaconBadBlock.beacon_implementation:type_name -> google.protobuf.StringValue + 81, // 43: indexer.BeaconBadBlock.content_encoding:type_name -> google.protobuf.StringValue + 81, // 44: indexer.BeaconBadBlob.id:type_name -> google.protobuf.StringValue + 81, // 45: indexer.BeaconBadBlob.node:type_name -> google.protobuf.StringValue + 82, // 46: indexer.BeaconBadBlob.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 47: indexer.BeaconBadBlob.slot:type_name -> google.protobuf.UInt64Value + 83, // 48: indexer.BeaconBadBlob.epoch:type_name -> google.protobuf.UInt64Value + 81, // 49: indexer.BeaconBadBlob.block_root:type_name -> google.protobuf.StringValue + 81, // 50: indexer.BeaconBadBlob.node_version:type_name -> google.protobuf.StringValue + 81, // 51: indexer.BeaconBadBlob.location:type_name -> google.protobuf.StringValue + 81, // 52: indexer.BeaconBadBlob.network:type_name -> google.protobuf.StringValue + 81, // 53: indexer.BeaconBadBlob.beacon_implementation:type_name -> google.protobuf.StringValue + 83, // 54: indexer.BeaconBadBlob.index:type_name -> google.protobuf.UInt64Value + 81, // 55: indexer.BeaconBadBlob.content_encoding:type_name -> google.protobuf.StringValue + 81, // 56: indexer.ExecutionBlockTrace.id:type_name -> google.protobuf.StringValue + 81, // 57: indexer.ExecutionBlockTrace.node:type_name -> google.protobuf.StringValue + 82, // 58: indexer.ExecutionBlockTrace.fetched_at:type_name -> google.protobuf.Timestamp + 81, // 59: indexer.ExecutionBlockTrace.block_hash:type_name -> google.protobuf.StringValue + 84, // 60: indexer.ExecutionBlockTrace.block_number:type_name -> google.protobuf.Int64Value + 81, // 61: indexer.ExecutionBlockTrace.location:type_name -> google.protobuf.StringValue + 81, // 62: indexer.ExecutionBlockTrace.network:type_name -> google.protobuf.StringValue + 81, // 63: indexer.ExecutionBlockTrace.execution_implementation:type_name -> google.protobuf.StringValue + 81, // 64: indexer.ExecutionBlockTrace.node_version:type_name -> google.protobuf.StringValue + 81, // 65: indexer.ExecutionBlockTrace.content_encoding:type_name -> google.protobuf.StringValue + 81, // 66: indexer.ExecutionBadBlock.id:type_name -> google.protobuf.StringValue + 81, // 67: indexer.ExecutionBadBlock.node:type_name -> google.protobuf.StringValue + 82, // 68: indexer.ExecutionBadBlock.fetched_at:type_name -> google.protobuf.Timestamp + 81, // 69: indexer.ExecutionBadBlock.block_hash:type_name -> google.protobuf.StringValue + 84, // 70: indexer.ExecutionBadBlock.block_number:type_name -> google.protobuf.Int64Value + 81, // 71: indexer.ExecutionBadBlock.location:type_name -> google.protobuf.StringValue + 81, // 72: indexer.ExecutionBadBlock.network:type_name -> google.protobuf.StringValue + 81, // 73: indexer.ExecutionBadBlock.execution_implementation:type_name -> google.protobuf.StringValue + 81, // 74: indexer.ExecutionBadBlock.node_version:type_name -> google.protobuf.StringValue + 81, // 75: indexer.ExecutionBadBlock.block_extra_data:type_name -> google.protobuf.StringValue + 81, // 76: indexer.ExecutionBadBlock.content_encoding:type_name -> google.protobuf.StringValue + 15, // 77: indexer.Config.ethereum:type_name -> indexer.EthereumConfig + 81, // 78: indexer.EthereumConfig.network:type_name -> google.protobuf.StringValue + 16, // 79: indexer.EthereumConfig.config:type_name -> indexer.EthereumNetworkConfig + 17, // 80: indexer.EthereumConfig.tools:type_name -> indexer.ToolsConfig + 81, // 81: indexer.EthereumNetworkConfig.repository:type_name -> google.protobuf.StringValue + 81, // 82: indexer.EthereumNetworkConfig.branch:type_name -> google.protobuf.StringValue + 81, // 83: indexer.EthereumNetworkConfig.path:type_name -> google.protobuf.StringValue + 18, // 84: indexer.ToolsConfig.ncli:type_name -> indexer.GitRepositoryConfig + 18, // 85: indexer.ToolsConfig.lcli:type_name -> indexer.GitRepositoryConfig + 19, // 86: indexer.ToolsConfig.zcli:type_name -> indexer.ZcliConfig + 81, // 87: indexer.GitRepositoryConfig.repository:type_name -> google.protobuf.StringValue + 81, // 88: indexer.GitRepositoryConfig.branch:type_name -> google.protobuf.StringValue + 81, // 89: indexer.ZcliConfig.fork:type_name -> google.protobuf.StringValue + 14, // 90: indexer.GetConfigResponse.config:type_name -> indexer.Config + 81, // 91: indexer.CreateBeaconStateRequest.node:type_name -> google.protobuf.StringValue + 82, // 92: indexer.CreateBeaconStateRequest.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 93: indexer.CreateBeaconStateRequest.slot:type_name -> google.protobuf.UInt64Value + 83, // 94: indexer.CreateBeaconStateRequest.epoch:type_name -> google.protobuf.UInt64Value + 81, // 95: indexer.CreateBeaconStateRequest.state_root:type_name -> google.protobuf.StringValue + 81, // 96: indexer.CreateBeaconStateRequest.node_version:type_name -> google.protobuf.StringValue + 81, // 97: indexer.CreateBeaconStateRequest.location:type_name -> google.protobuf.StringValue + 81, // 98: indexer.CreateBeaconStateRequest.network:type_name -> google.protobuf.StringValue + 81, // 99: indexer.CreateBeaconStateRequest.beacon_implementation:type_name -> google.protobuf.StringValue + 81, // 100: indexer.CreateBeaconStateRequest.content_encoding:type_name -> google.protobuf.StringValue + 81, // 101: indexer.CreateBeaconStateResponse.id:type_name -> google.protobuf.StringValue + 81, // 102: indexer.CreateBeaconBlockRequest.node:type_name -> google.protobuf.StringValue + 82, // 103: indexer.CreateBeaconBlockRequest.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 104: indexer.CreateBeaconBlockRequest.slot:type_name -> google.protobuf.UInt64Value + 83, // 105: indexer.CreateBeaconBlockRequest.epoch:type_name -> google.protobuf.UInt64Value + 81, // 106: indexer.CreateBeaconBlockRequest.block_root:type_name -> google.protobuf.StringValue + 81, // 107: indexer.CreateBeaconBlockRequest.node_version:type_name -> google.protobuf.StringValue + 81, // 108: indexer.CreateBeaconBlockRequest.location:type_name -> google.protobuf.StringValue + 81, // 109: indexer.CreateBeaconBlockRequest.network:type_name -> google.protobuf.StringValue + 81, // 110: indexer.CreateBeaconBlockRequest.beacon_implementation:type_name -> google.protobuf.StringValue + 81, // 111: indexer.CreateBeaconBlockRequest.content_encoding:type_name -> google.protobuf.StringValue + 81, // 112: indexer.CreateBeaconBlockResponse.id:type_name -> google.protobuf.StringValue + 81, // 113: indexer.CreateExecutionPayloadEnvelopeRequest.node:type_name -> google.protobuf.StringValue + 82, // 114: indexer.CreateExecutionPayloadEnvelopeRequest.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 115: indexer.CreateExecutionPayloadEnvelopeRequest.slot:type_name -> google.protobuf.UInt64Value + 83, // 116: indexer.CreateExecutionPayloadEnvelopeRequest.epoch:type_name -> google.protobuf.UInt64Value + 81, // 117: indexer.CreateExecutionPayloadEnvelopeRequest.block_root:type_name -> google.protobuf.StringValue + 81, // 118: indexer.CreateExecutionPayloadEnvelopeRequest.node_version:type_name -> google.protobuf.StringValue + 81, // 119: indexer.CreateExecutionPayloadEnvelopeRequest.location:type_name -> google.protobuf.StringValue + 81, // 120: indexer.CreateExecutionPayloadEnvelopeRequest.network:type_name -> google.protobuf.StringValue + 81, // 121: indexer.CreateExecutionPayloadEnvelopeRequest.beacon_implementation:type_name -> google.protobuf.StringValue + 81, // 122: indexer.CreateExecutionPayloadEnvelopeRequest.content_encoding:type_name -> google.protobuf.StringValue + 81, // 123: indexer.CreateExecutionPayloadEnvelopeResponse.id:type_name -> google.protobuf.StringValue + 81, // 124: indexer.CreateBeaconBadBlockRequest.node:type_name -> google.protobuf.StringValue + 82, // 125: indexer.CreateBeaconBadBlockRequest.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 126: indexer.CreateBeaconBadBlockRequest.slot:type_name -> google.protobuf.UInt64Value + 83, // 127: indexer.CreateBeaconBadBlockRequest.epoch:type_name -> google.protobuf.UInt64Value + 81, // 128: indexer.CreateBeaconBadBlockRequest.block_root:type_name -> google.protobuf.StringValue + 81, // 129: indexer.CreateBeaconBadBlockRequest.node_version:type_name -> google.protobuf.StringValue + 81, // 130: indexer.CreateBeaconBadBlockRequest.location:type_name -> google.protobuf.StringValue + 81, // 131: indexer.CreateBeaconBadBlockRequest.network:type_name -> google.protobuf.StringValue + 81, // 132: indexer.CreateBeaconBadBlockRequest.beacon_implementation:type_name -> google.protobuf.StringValue + 81, // 133: indexer.CreateBeaconBadBlockRequest.content_encoding:type_name -> google.protobuf.StringValue + 81, // 134: indexer.CreateBeaconBadBlockResponse.id:type_name -> google.protobuf.StringValue + 81, // 135: indexer.CreateBeaconBadBlobRequest.node:type_name -> google.protobuf.StringValue + 82, // 136: indexer.CreateBeaconBadBlobRequest.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 137: indexer.CreateBeaconBadBlobRequest.slot:type_name -> google.protobuf.UInt64Value + 83, // 138: indexer.CreateBeaconBadBlobRequest.epoch:type_name -> google.protobuf.UInt64Value + 81, // 139: indexer.CreateBeaconBadBlobRequest.block_root:type_name -> google.protobuf.StringValue + 81, // 140: indexer.CreateBeaconBadBlobRequest.node_version:type_name -> google.protobuf.StringValue + 81, // 141: indexer.CreateBeaconBadBlobRequest.location:type_name -> google.protobuf.StringValue + 81, // 142: indexer.CreateBeaconBadBlobRequest.network:type_name -> google.protobuf.StringValue + 81, // 143: indexer.CreateBeaconBadBlobRequest.beacon_implementation:type_name -> google.protobuf.StringValue + 83, // 144: indexer.CreateBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value + 81, // 145: indexer.CreateBeaconBadBlobRequest.content_encoding:type_name -> google.protobuf.StringValue + 81, // 146: indexer.CreateBeaconBadBlobResponse.id:type_name -> google.protobuf.StringValue + 81, // 147: indexer.CreateExecutionBlockTraceRequest.node:type_name -> google.protobuf.StringValue + 82, // 148: indexer.CreateExecutionBlockTraceRequest.fetched_at:type_name -> google.protobuf.Timestamp + 81, // 149: indexer.CreateExecutionBlockTraceRequest.block_hash:type_name -> google.protobuf.StringValue + 84, // 150: indexer.CreateExecutionBlockTraceRequest.block_number:type_name -> google.protobuf.Int64Value + 81, // 151: indexer.CreateExecutionBlockTraceRequest.location:type_name -> google.protobuf.StringValue + 81, // 152: indexer.CreateExecutionBlockTraceRequest.network:type_name -> google.protobuf.StringValue + 81, // 153: indexer.CreateExecutionBlockTraceRequest.execution_implementation:type_name -> google.protobuf.StringValue + 81, // 154: indexer.CreateExecutionBlockTraceRequest.node_version:type_name -> google.protobuf.StringValue + 81, // 155: indexer.CreateExecutionBlockTraceRequest.content_encoding:type_name -> google.protobuf.StringValue + 81, // 156: indexer.CreateExecutionBlockTraceResponse.id:type_name -> google.protobuf.StringValue + 82, // 157: indexer.ListExecutionBlockTraceRequest.before:type_name -> google.protobuf.Timestamp + 82, // 158: indexer.ListExecutionBlockTraceRequest.after:type_name -> google.protobuf.Timestamp + 72, // 159: indexer.ListExecutionBlockTraceRequest.pagination:type_name -> indexer.PaginationCursor + 12, // 160: indexer.ListExecutionBlockTraceResponse.execution_block_traces:type_name -> indexer.ExecutionBlockTrace + 82, // 161: indexer.CountExecutionBlockTraceRequest.before:type_name -> google.protobuf.Timestamp + 82, // 162: indexer.CountExecutionBlockTraceRequest.after:type_name -> google.protobuf.Timestamp + 83, // 163: indexer.CountExecutionBlockTraceResponse.count:type_name -> google.protobuf.UInt64Value + 0, // 164: indexer.ListUniqueExecutionBlockTraceValuesRequest.fields:type_name -> indexer.ListUniqueExecutionBlockTraceValuesRequest.Field + 1, // 165: indexer.ListUniqueBeaconStateValuesRequest.fields:type_name -> indexer.ListUniqueBeaconStateValuesRequest.Field + 82, // 166: indexer.ListBeaconStateRequest.before:type_name -> google.protobuf.Timestamp + 82, // 167: indexer.ListBeaconStateRequest.after:type_name -> google.protobuf.Timestamp + 72, // 168: indexer.ListBeaconStateRequest.pagination:type_name -> indexer.PaginationCursor + 7, // 169: indexer.ListBeaconStateResponse.beacon_states:type_name -> indexer.BeaconState + 82, // 170: indexer.CountBeaconStateRequest.before:type_name -> google.protobuf.Timestamp + 82, // 171: indexer.CountBeaconStateRequest.after:type_name -> google.protobuf.Timestamp + 83, // 172: indexer.CountBeaconStateResponse.count:type_name -> google.protobuf.UInt64Value + 2, // 173: indexer.ListUniqueBeaconBlockValuesRequest.fields:type_name -> indexer.ListUniqueBeaconBlockValuesRequest.Field + 82, // 174: indexer.ListBeaconBlockRequest.before:type_name -> google.protobuf.Timestamp + 82, // 175: indexer.ListBeaconBlockRequest.after:type_name -> google.protobuf.Timestamp + 72, // 176: indexer.ListBeaconBlockRequest.pagination:type_name -> indexer.PaginationCursor + 8, // 177: indexer.ListBeaconBlockResponse.beacon_blocks:type_name -> indexer.BeaconBlock + 82, // 178: indexer.CountBeaconBlockRequest.before:type_name -> google.protobuf.Timestamp + 82, // 179: indexer.CountBeaconBlockRequest.after:type_name -> google.protobuf.Timestamp + 83, // 180: indexer.CountBeaconBlockResponse.count:type_name -> google.protobuf.UInt64Value + 3, // 181: indexer.ListUniqueBeaconBadBlockValuesRequest.fields:type_name -> indexer.ListUniqueBeaconBadBlockValuesRequest.Field + 4, // 182: indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest.fields:type_name -> indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest.Field + 82, // 183: indexer.ListExecutionPayloadEnvelopeRequest.before:type_name -> google.protobuf.Timestamp + 82, // 184: indexer.ListExecutionPayloadEnvelopeRequest.after:type_name -> google.protobuf.Timestamp + 72, // 185: indexer.ListExecutionPayloadEnvelopeRequest.pagination:type_name -> indexer.PaginationCursor + 9, // 186: indexer.ListExecutionPayloadEnvelopeResponse.execution_payload_envelopes:type_name -> indexer.ExecutionPayloadEnvelope + 82, // 187: indexer.CountExecutionPayloadEnvelopeRequest.before:type_name -> google.protobuf.Timestamp + 82, // 188: indexer.CountExecutionPayloadEnvelopeRequest.after:type_name -> google.protobuf.Timestamp + 83, // 189: indexer.CountExecutionPayloadEnvelopeResponse.count:type_name -> google.protobuf.UInt64Value + 82, // 190: indexer.ListBeaconBadBlockRequest.before:type_name -> google.protobuf.Timestamp + 82, // 191: indexer.ListBeaconBadBlockRequest.after:type_name -> google.protobuf.Timestamp + 72, // 192: indexer.ListBeaconBadBlockRequest.pagination:type_name -> indexer.PaginationCursor + 10, // 193: indexer.ListBeaconBadBlockResponse.beacon_bad_blocks:type_name -> indexer.BeaconBadBlock + 82, // 194: indexer.CountBeaconBadBlockRequest.before:type_name -> google.protobuf.Timestamp + 82, // 195: indexer.CountBeaconBadBlockRequest.after:type_name -> google.protobuf.Timestamp + 83, // 196: indexer.CountBeaconBadBlockResponse.count:type_name -> google.protobuf.UInt64Value + 5, // 197: indexer.ListUniqueBeaconBadBlobValuesRequest.fields:type_name -> indexer.ListUniqueBeaconBadBlobValuesRequest.Field + 82, // 198: indexer.ListBeaconBadBlobRequest.before:type_name -> google.protobuf.Timestamp + 82, // 199: indexer.ListBeaconBadBlobRequest.after:type_name -> google.protobuf.Timestamp + 72, // 200: indexer.ListBeaconBadBlobRequest.pagination:type_name -> indexer.PaginationCursor + 83, // 201: indexer.ListBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value + 11, // 202: indexer.ListBeaconBadBlobResponse.beacon_bad_blobs:type_name -> indexer.BeaconBadBlob + 82, // 203: indexer.CountBeaconBadBlobRequest.before:type_name -> google.protobuf.Timestamp + 82, // 204: indexer.CountBeaconBadBlobRequest.after:type_name -> google.protobuf.Timestamp + 83, // 205: indexer.CountBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value + 83, // 206: indexer.CountBeaconBadBlobResponse.count:type_name -> google.protobuf.UInt64Value + 81, // 207: indexer.CreateExecutionBadBlockRequest.node:type_name -> google.protobuf.StringValue + 82, // 208: indexer.CreateExecutionBadBlockRequest.fetched_at:type_name -> google.protobuf.Timestamp + 81, // 209: indexer.CreateExecutionBadBlockRequest.block_hash:type_name -> google.protobuf.StringValue + 84, // 210: indexer.CreateExecutionBadBlockRequest.block_number:type_name -> google.protobuf.Int64Value + 81, // 211: indexer.CreateExecutionBadBlockRequest.location:type_name -> google.protobuf.StringValue + 81, // 212: indexer.CreateExecutionBadBlockRequest.network:type_name -> google.protobuf.StringValue + 81, // 213: indexer.CreateExecutionBadBlockRequest.execution_implementation:type_name -> google.protobuf.StringValue + 81, // 214: indexer.CreateExecutionBadBlockRequest.node_version:type_name -> google.protobuf.StringValue + 81, // 215: indexer.CreateExecutionBadBlockRequest.block_extra_data:type_name -> google.protobuf.StringValue + 81, // 216: indexer.CreateExecutionBadBlockRequest.content_encoding:type_name -> google.protobuf.StringValue + 81, // 217: indexer.CreateExecutionBadBlockResponse.id:type_name -> google.protobuf.StringValue + 82, // 218: indexer.ListExecutionBadBlockRequest.before:type_name -> google.protobuf.Timestamp + 82, // 219: indexer.ListExecutionBadBlockRequest.after:type_name -> google.protobuf.Timestamp + 72, // 220: indexer.ListExecutionBadBlockRequest.pagination:type_name -> indexer.PaginationCursor + 13, // 221: indexer.ListExecutionBadBlockResponse.execution_bad_blocks:type_name -> indexer.ExecutionBadBlock + 82, // 222: indexer.CountExecutionBadBlockRequest.before:type_name -> google.protobuf.Timestamp + 82, // 223: indexer.CountExecutionBadBlockRequest.after:type_name -> google.protobuf.Timestamp + 83, // 224: indexer.CountExecutionBadBlockResponse.count:type_name -> google.protobuf.UInt64Value + 6, // 225: indexer.ListUniqueExecutionBadBlockValuesRequest.fields:type_name -> indexer.ListUniqueExecutionBadBlockValuesRequest.Field + 20, // 226: indexer.Indexer.GetConfig:input_type -> indexer.GetConfigRequest + 22, // 227: indexer.Indexer.GetStorageHandshakeToken:input_type -> indexer.GetStorageHandshakeTokenRequest + 24, // 228: indexer.Indexer.CreateBeaconState:input_type -> indexer.CreateBeaconStateRequest + 44, // 229: indexer.Indexer.ListBeaconState:input_type -> indexer.ListBeaconStateRequest + 46, // 230: indexer.Indexer.CountBeaconState:input_type -> indexer.CountBeaconStateRequest + 42, // 231: indexer.Indexer.ListUniqueBeaconStateValues:input_type -> indexer.ListUniqueBeaconStateValuesRequest + 26, // 232: indexer.Indexer.CreateBeaconBlock:input_type -> indexer.CreateBeaconBlockRequest + 50, // 233: indexer.Indexer.ListBeaconBlock:input_type -> indexer.ListBeaconBlockRequest + 52, // 234: indexer.Indexer.CountBeaconBlock:input_type -> indexer.CountBeaconBlockRequest + 48, // 235: indexer.Indexer.ListUniqueBeaconBlockValues:input_type -> indexer.ListUniqueBeaconBlockValuesRequest + 28, // 236: indexer.Indexer.CreateExecutionPayloadEnvelope:input_type -> indexer.CreateExecutionPayloadEnvelopeRequest + 58, // 237: indexer.Indexer.ListExecutionPayloadEnvelope:input_type -> indexer.ListExecutionPayloadEnvelopeRequest + 60, // 238: indexer.Indexer.CountExecutionPayloadEnvelope:input_type -> indexer.CountExecutionPayloadEnvelopeRequest + 56, // 239: indexer.Indexer.ListUniqueExecutionPayloadEnvelopeValues:input_type -> indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest + 30, // 240: indexer.Indexer.CreateBeaconBadBlock:input_type -> indexer.CreateBeaconBadBlockRequest + 62, // 241: indexer.Indexer.ListBeaconBadBlock:input_type -> indexer.ListBeaconBadBlockRequest + 64, // 242: indexer.Indexer.CountBeaconBadBlock:input_type -> indexer.CountBeaconBadBlockRequest + 54, // 243: indexer.Indexer.ListUniqueBeaconBadBlockValues:input_type -> indexer.ListUniqueBeaconBadBlockValuesRequest + 32, // 244: indexer.Indexer.CreateBeaconBadBlob:input_type -> indexer.CreateBeaconBadBlobRequest + 68, // 245: indexer.Indexer.ListBeaconBadBlob:input_type -> indexer.ListBeaconBadBlobRequest + 70, // 246: indexer.Indexer.CountBeaconBadBlob:input_type -> indexer.CountBeaconBadBlobRequest + 66, // 247: indexer.Indexer.ListUniqueBeaconBadBlobValues:input_type -> indexer.ListUniqueBeaconBadBlobValuesRequest + 34, // 248: indexer.Indexer.CreateExecutionBlockTrace:input_type -> indexer.CreateExecutionBlockTraceRequest + 36, // 249: indexer.Indexer.ListExecutionBlockTrace:input_type -> indexer.ListExecutionBlockTraceRequest + 38, // 250: indexer.Indexer.CountExecutionBlockTrace:input_type -> indexer.CountExecutionBlockTraceRequest + 40, // 251: indexer.Indexer.ListUniqueExecutionBlockTraceValues:input_type -> indexer.ListUniqueExecutionBlockTraceValuesRequest + 73, // 252: indexer.Indexer.CreateExecutionBadBlock:input_type -> indexer.CreateExecutionBadBlockRequest + 75, // 253: indexer.Indexer.ListExecutionBadBlock:input_type -> indexer.ListExecutionBadBlockRequest + 77, // 254: indexer.Indexer.CountExecutionBadBlock:input_type -> indexer.CountExecutionBadBlockRequest + 79, // 255: indexer.Indexer.ListUniqueExecutionBadBlockValues:input_type -> indexer.ListUniqueExecutionBadBlockValuesRequest + 21, // 256: indexer.Indexer.GetConfig:output_type -> indexer.GetConfigResponse + 23, // 257: indexer.Indexer.GetStorageHandshakeToken:output_type -> indexer.GetStorageHandshakeTokenResponse + 25, // 258: indexer.Indexer.CreateBeaconState:output_type -> indexer.CreateBeaconStateResponse + 45, // 259: indexer.Indexer.ListBeaconState:output_type -> indexer.ListBeaconStateResponse + 47, // 260: indexer.Indexer.CountBeaconState:output_type -> indexer.CountBeaconStateResponse + 43, // 261: indexer.Indexer.ListUniqueBeaconStateValues:output_type -> indexer.ListUniqueBeaconStateValuesResponse + 27, // 262: indexer.Indexer.CreateBeaconBlock:output_type -> indexer.CreateBeaconBlockResponse + 51, // 263: indexer.Indexer.ListBeaconBlock:output_type -> indexer.ListBeaconBlockResponse + 53, // 264: indexer.Indexer.CountBeaconBlock:output_type -> indexer.CountBeaconBlockResponse + 49, // 265: indexer.Indexer.ListUniqueBeaconBlockValues:output_type -> indexer.ListUniqueBeaconBlockValuesResponse + 29, // 266: indexer.Indexer.CreateExecutionPayloadEnvelope:output_type -> indexer.CreateExecutionPayloadEnvelopeResponse + 59, // 267: indexer.Indexer.ListExecutionPayloadEnvelope:output_type -> indexer.ListExecutionPayloadEnvelopeResponse + 61, // 268: indexer.Indexer.CountExecutionPayloadEnvelope:output_type -> indexer.CountExecutionPayloadEnvelopeResponse + 57, // 269: indexer.Indexer.ListUniqueExecutionPayloadEnvelopeValues:output_type -> indexer.ListUniqueExecutionPayloadEnvelopeValuesResponse + 31, // 270: indexer.Indexer.CreateBeaconBadBlock:output_type -> indexer.CreateBeaconBadBlockResponse + 63, // 271: indexer.Indexer.ListBeaconBadBlock:output_type -> indexer.ListBeaconBadBlockResponse + 65, // 272: indexer.Indexer.CountBeaconBadBlock:output_type -> indexer.CountBeaconBadBlockResponse + 55, // 273: indexer.Indexer.ListUniqueBeaconBadBlockValues:output_type -> indexer.ListUniqueBeaconBadBlockValuesResponse + 33, // 274: indexer.Indexer.CreateBeaconBadBlob:output_type -> indexer.CreateBeaconBadBlobResponse + 69, // 275: indexer.Indexer.ListBeaconBadBlob:output_type -> indexer.ListBeaconBadBlobResponse + 71, // 276: indexer.Indexer.CountBeaconBadBlob:output_type -> indexer.CountBeaconBadBlobResponse + 67, // 277: indexer.Indexer.ListUniqueBeaconBadBlobValues:output_type -> indexer.ListUniqueBeaconBadBlobValuesResponse + 35, // 278: indexer.Indexer.CreateExecutionBlockTrace:output_type -> indexer.CreateExecutionBlockTraceResponse + 37, // 279: indexer.Indexer.ListExecutionBlockTrace:output_type -> indexer.ListExecutionBlockTraceResponse + 39, // 280: indexer.Indexer.CountExecutionBlockTrace:output_type -> indexer.CountExecutionBlockTraceResponse + 41, // 281: indexer.Indexer.ListUniqueExecutionBlockTraceValues:output_type -> indexer.ListUniqueExecutionBlockTraceValuesResponse + 74, // 282: indexer.Indexer.CreateExecutionBadBlock:output_type -> indexer.CreateExecutionBadBlockResponse + 76, // 283: indexer.Indexer.ListExecutionBadBlock:output_type -> indexer.ListExecutionBadBlockResponse + 78, // 284: indexer.Indexer.CountExecutionBadBlock:output_type -> indexer.CountExecutionBadBlockResponse + 80, // 285: indexer.Indexer.ListUniqueExecutionBadBlockValues:output_type -> indexer.ListUniqueExecutionBadBlockValuesResponse + 256, // [256:286] is the sub-list for method output_type + 226, // [226:256] is the sub-list for method input_type + 226, // [226:226] is the sub-list for extension type_name + 226, // [226:226] is the sub-list for extension extendee + 0, // [0:226] is the sub-list for field type_name +} + +func init() { file_pkg_proto_tracoor_indexer_indexer_proto_init() } +func file_pkg_proto_tracoor_indexer_indexer_proto_init() { + if File_pkg_proto_tracoor_indexer_indexer_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_indexer_indexer_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BeaconState); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BeaconBlock); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BeaconBadBlock); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BeaconBadBlob); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutionBlockTrace); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutionBadBlock); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Config); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EthereumConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EthereumNetworkConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ToolsConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GitRepositoryConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZcliConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetStorageHandshakeTokenRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetStorageHandshakeTokenResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBeaconStateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBeaconStateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBeaconBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBeaconBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBeaconBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBeaconBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBeaconBadBlobRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBeaconBadBlobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateExecutionBlockTraceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateExecutionBlockTraceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExecutionBlockTraceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExecutionBlockTraceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountExecutionBlockTraceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountExecutionBlockTraceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueExecutionBlockTraceValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueExecutionBlockTraceValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconStateValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconStateValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconStateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconStateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconStateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconStateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBlockValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBlockValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBadBlockValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBadBlockValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBadBlobValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBadBlobValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBadBlobRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBadBlobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBadBlobRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBadBlobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PaginationCursor); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateExecutionBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateExecutionBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExecutionBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExecutionBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountExecutionBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountExecutionBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueExecutionBadBlockValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueExecutionBadBlockValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_indexer_indexer_proto_rawDesc, - NumEnums: 6, - NumMessages: 65, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_pkg_proto_tracoor_indexer_indexer_proto_rawDesc), len(file_pkg_proto_tracoor_indexer_indexer_proto_rawDesc)), + NumEnums: 7, + NumMessages: 74, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_indexer_indexer_proto_goTypes, - DependencyIndexes: file_indexer_indexer_proto_depIdxs, - EnumInfos: file_indexer_indexer_proto_enumTypes, - MessageInfos: file_indexer_indexer_proto_msgTypes, + GoTypes: file_pkg_proto_tracoor_indexer_indexer_proto_goTypes, + DependencyIndexes: file_pkg_proto_tracoor_indexer_indexer_proto_depIdxs, + EnumInfos: file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes, + MessageInfos: file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes, }.Build() - File_indexer_indexer_proto = out.File - file_indexer_indexer_proto_rawDesc = nil - file_indexer_indexer_proto_goTypes = nil - file_indexer_indexer_proto_depIdxs = nil + File_pkg_proto_tracoor_indexer_indexer_proto = out.File + file_pkg_proto_tracoor_indexer_indexer_proto_goTypes = nil + file_pkg_proto_tracoor_indexer_indexer_proto_depIdxs = nil } diff --git a/pkg/proto/tracoor/indexer/indexer.proto b/pkg/proto/tracoor/indexer/indexer.proto index 5935e4d..df650e0 100644 --- a/pkg/proto/tracoor/indexer/indexer.proto +++ b/pkg/proto/tracoor/indexer/indexer.proto @@ -35,6 +35,20 @@ message BeaconBlock { google.protobuf.StringValue content_encoding = 11; } +message ExecutionPayloadEnvelope { + google.protobuf.StringValue id = 1; + google.protobuf.StringValue node = 2; + google.protobuf.Timestamp fetched_at = 3; + google.protobuf.UInt64Value slot = 4; + google.protobuf.UInt64Value epoch = 5; + google.protobuf.StringValue block_root = 6; + google.protobuf.StringValue node_version = 7; + google.protobuf.StringValue location = 8; + google.protobuf.StringValue network = 9; + google.protobuf.StringValue beacon_implementation = 10; + google.protobuf.StringValue content_encoding = 11; +} + message BeaconBadBlock { google.protobuf.StringValue id = 1; google.protobuf.StringValue node = 2; @@ -146,6 +160,17 @@ service Indexer { returns (CountBeaconBlockResponse) {} rpc ListUniqueBeaconBlockValues(ListUniqueBeaconBlockValuesRequest) returns (ListUniqueBeaconBlockValuesResponse) {} + + // ExecutionPayloadEnvelope + rpc CreateExecutionPayloadEnvelope(CreateExecutionPayloadEnvelopeRequest) + returns (CreateExecutionPayloadEnvelopeResponse) {} + rpc ListExecutionPayloadEnvelope(ListExecutionPayloadEnvelopeRequest) + returns (ListExecutionPayloadEnvelopeResponse) {} + rpc CountExecutionPayloadEnvelope(CountExecutionPayloadEnvelopeRequest) + returns (CountExecutionPayloadEnvelopeResponse) {} + rpc ListUniqueExecutionPayloadEnvelopeValues( + ListUniqueExecutionPayloadEnvelopeValuesRequest) + returns (ListUniqueExecutionPayloadEnvelopeValuesResponse) {} // BeaconBadBlock rpc CreateBeaconBadBlock(CreateBeaconBadBlockRequest) returns (CreateBeaconBadBlockResponse) {} @@ -229,6 +254,23 @@ message CreateBeaconBlockRequest { message CreateBeaconBlockResponse { google.protobuf.StringValue id = 1; } +message CreateExecutionPayloadEnvelopeRequest { + google.protobuf.StringValue node = 1; + google.protobuf.Timestamp fetched_at = 2; + google.protobuf.UInt64Value slot = 3; + google.protobuf.UInt64Value epoch = 4; + google.protobuf.StringValue block_root = 5; + google.protobuf.StringValue node_version = 6; + google.protobuf.StringValue location = 7; + google.protobuf.StringValue network = 8; + google.protobuf.StringValue beacon_implementation = 9; + google.protobuf.StringValue content_encoding = 10; +} + +message CreateExecutionPayloadEnvelopeResponse { + google.protobuf.StringValue id = 1; +} + message CreateBeaconBadBlockRequest { google.protobuf.StringValue node = 1; google.protobuf.Timestamp fetched_at = 2; @@ -479,6 +521,69 @@ message ListUniqueBeaconBadBlockValuesResponse { repeated string beacon_implementation = 8; } +message ListUniqueExecutionPayloadEnvelopeValuesRequest { + enum Field { + NODE = 0; + SLOT = 1; + EPOCH = 2; + BLOCK_ROOT = 3; + NODE_VERSION = 4; + LOCATION = 5; + NETWORK = 6; + BEACON_IMPLEMENTATION = 7; + } + repeated Field fields = 1; +} + +message ListUniqueExecutionPayloadEnvelopeValuesResponse { + repeated string node = 1; + repeated uint64 slot = 2; + repeated uint64 epoch = 3; + repeated string block_root = 4; + repeated string node_version = 5; + repeated string location = 6; + repeated string network = 7; + repeated string beacon_implementation = 8; +} + +message ListExecutionPayloadEnvelopeRequest { + string node = 1; + uint64 slot = 2; + uint64 epoch = 3; + string block_root = 4; + string node_version = 5; + string location = 6; + string network = 7; + google.protobuf.Timestamp before = 8; + google.protobuf.Timestamp after = 9; + + PaginationCursor pagination = 10; + string id = 11; + string beacon_implementation = 12; +} + +message ListExecutionPayloadEnvelopeResponse { + repeated ExecutionPayloadEnvelope execution_payload_envelopes = 1; +} + +message CountExecutionPayloadEnvelopeRequest { + string node = 1; + uint64 slot = 2; + uint64 epoch = 3; + string block_root = 4; + string node_version = 5; + string location = 6; + string network = 7; + google.protobuf.Timestamp before = 8; + google.protobuf.Timestamp after = 9; + string beacon_implementation = 10; + string id = 11; +} + +message CountExecutionPayloadEnvelopeResponse { + google.protobuf.UInt64Value count = 1; +} + message ListBeaconBadBlockRequest { string node = 1; uint64 slot = 2; diff --git a/pkg/proto/tracoor/indexer/indexer_grpc.pb.go b/pkg/proto/tracoor/indexer/indexer_grpc.pb.go index da79e0f..c5f1224 100644 --- a/pkg/proto/tracoor/indexer/indexer_grpc.pb.go +++ b/pkg/proto/tracoor/indexer/indexer_grpc.pb.go @@ -1,8 +1,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.6.2 // - protoc (unknown) -// source: indexer/indexer.proto +// source: pkg/proto/tracoor/indexer/indexer.proto package indexer @@ -15,36 +15,40 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( - Indexer_GetConfig_FullMethodName = "/indexer.Indexer/GetConfig" - Indexer_GetStorageHandshakeToken_FullMethodName = "/indexer.Indexer/GetStorageHandshakeToken" - Indexer_CreateBeaconState_FullMethodName = "/indexer.Indexer/CreateBeaconState" - Indexer_ListBeaconState_FullMethodName = "/indexer.Indexer/ListBeaconState" - Indexer_CountBeaconState_FullMethodName = "/indexer.Indexer/CountBeaconState" - Indexer_ListUniqueBeaconStateValues_FullMethodName = "/indexer.Indexer/ListUniqueBeaconStateValues" - Indexer_CreateBeaconBlock_FullMethodName = "/indexer.Indexer/CreateBeaconBlock" - Indexer_ListBeaconBlock_FullMethodName = "/indexer.Indexer/ListBeaconBlock" - Indexer_CountBeaconBlock_FullMethodName = "/indexer.Indexer/CountBeaconBlock" - Indexer_ListUniqueBeaconBlockValues_FullMethodName = "/indexer.Indexer/ListUniqueBeaconBlockValues" - Indexer_CreateBeaconBadBlock_FullMethodName = "/indexer.Indexer/CreateBeaconBadBlock" - Indexer_ListBeaconBadBlock_FullMethodName = "/indexer.Indexer/ListBeaconBadBlock" - Indexer_CountBeaconBadBlock_FullMethodName = "/indexer.Indexer/CountBeaconBadBlock" - Indexer_ListUniqueBeaconBadBlockValues_FullMethodName = "/indexer.Indexer/ListUniqueBeaconBadBlockValues" - Indexer_CreateBeaconBadBlob_FullMethodName = "/indexer.Indexer/CreateBeaconBadBlob" - Indexer_ListBeaconBadBlob_FullMethodName = "/indexer.Indexer/ListBeaconBadBlob" - Indexer_CountBeaconBadBlob_FullMethodName = "/indexer.Indexer/CountBeaconBadBlob" - Indexer_ListUniqueBeaconBadBlobValues_FullMethodName = "/indexer.Indexer/ListUniqueBeaconBadBlobValues" - Indexer_CreateExecutionBlockTrace_FullMethodName = "/indexer.Indexer/CreateExecutionBlockTrace" - Indexer_ListExecutionBlockTrace_FullMethodName = "/indexer.Indexer/ListExecutionBlockTrace" - Indexer_CountExecutionBlockTrace_FullMethodName = "/indexer.Indexer/CountExecutionBlockTrace" - Indexer_ListUniqueExecutionBlockTraceValues_FullMethodName = "/indexer.Indexer/ListUniqueExecutionBlockTraceValues" - Indexer_CreateExecutionBadBlock_FullMethodName = "/indexer.Indexer/CreateExecutionBadBlock" - Indexer_ListExecutionBadBlock_FullMethodName = "/indexer.Indexer/ListExecutionBadBlock" - Indexer_CountExecutionBadBlock_FullMethodName = "/indexer.Indexer/CountExecutionBadBlock" - Indexer_ListUniqueExecutionBadBlockValues_FullMethodName = "/indexer.Indexer/ListUniqueExecutionBadBlockValues" + Indexer_GetConfig_FullMethodName = "/indexer.Indexer/GetConfig" + Indexer_GetStorageHandshakeToken_FullMethodName = "/indexer.Indexer/GetStorageHandshakeToken" + Indexer_CreateBeaconState_FullMethodName = "/indexer.Indexer/CreateBeaconState" + Indexer_ListBeaconState_FullMethodName = "/indexer.Indexer/ListBeaconState" + Indexer_CountBeaconState_FullMethodName = "/indexer.Indexer/CountBeaconState" + Indexer_ListUniqueBeaconStateValues_FullMethodName = "/indexer.Indexer/ListUniqueBeaconStateValues" + Indexer_CreateBeaconBlock_FullMethodName = "/indexer.Indexer/CreateBeaconBlock" + Indexer_ListBeaconBlock_FullMethodName = "/indexer.Indexer/ListBeaconBlock" + Indexer_CountBeaconBlock_FullMethodName = "/indexer.Indexer/CountBeaconBlock" + Indexer_ListUniqueBeaconBlockValues_FullMethodName = "/indexer.Indexer/ListUniqueBeaconBlockValues" + Indexer_CreateExecutionPayloadEnvelope_FullMethodName = "/indexer.Indexer/CreateExecutionPayloadEnvelope" + Indexer_ListExecutionPayloadEnvelope_FullMethodName = "/indexer.Indexer/ListExecutionPayloadEnvelope" + Indexer_CountExecutionPayloadEnvelope_FullMethodName = "/indexer.Indexer/CountExecutionPayloadEnvelope" + Indexer_ListUniqueExecutionPayloadEnvelopeValues_FullMethodName = "/indexer.Indexer/ListUniqueExecutionPayloadEnvelopeValues" + Indexer_CreateBeaconBadBlock_FullMethodName = "/indexer.Indexer/CreateBeaconBadBlock" + Indexer_ListBeaconBadBlock_FullMethodName = "/indexer.Indexer/ListBeaconBadBlock" + Indexer_CountBeaconBadBlock_FullMethodName = "/indexer.Indexer/CountBeaconBadBlock" + Indexer_ListUniqueBeaconBadBlockValues_FullMethodName = "/indexer.Indexer/ListUniqueBeaconBadBlockValues" + Indexer_CreateBeaconBadBlob_FullMethodName = "/indexer.Indexer/CreateBeaconBadBlob" + Indexer_ListBeaconBadBlob_FullMethodName = "/indexer.Indexer/ListBeaconBadBlob" + Indexer_CountBeaconBadBlob_FullMethodName = "/indexer.Indexer/CountBeaconBadBlob" + Indexer_ListUniqueBeaconBadBlobValues_FullMethodName = "/indexer.Indexer/ListUniqueBeaconBadBlobValues" + Indexer_CreateExecutionBlockTrace_FullMethodName = "/indexer.Indexer/CreateExecutionBlockTrace" + Indexer_ListExecutionBlockTrace_FullMethodName = "/indexer.Indexer/ListExecutionBlockTrace" + Indexer_CountExecutionBlockTrace_FullMethodName = "/indexer.Indexer/CountExecutionBlockTrace" + Indexer_ListUniqueExecutionBlockTraceValues_FullMethodName = "/indexer.Indexer/ListUniqueExecutionBlockTraceValues" + Indexer_CreateExecutionBadBlock_FullMethodName = "/indexer.Indexer/CreateExecutionBadBlock" + Indexer_ListExecutionBadBlock_FullMethodName = "/indexer.Indexer/ListExecutionBadBlock" + Indexer_CountExecutionBadBlock_FullMethodName = "/indexer.Indexer/CountExecutionBadBlock" + Indexer_ListUniqueExecutionBadBlockValues_FullMethodName = "/indexer.Indexer/ListUniqueExecutionBadBlockValues" ) // IndexerClient is the client API for Indexer service. @@ -63,6 +67,11 @@ type IndexerClient interface { ListBeaconBlock(ctx context.Context, in *ListBeaconBlockRequest, opts ...grpc.CallOption) (*ListBeaconBlockResponse, error) CountBeaconBlock(ctx context.Context, in *CountBeaconBlockRequest, opts ...grpc.CallOption) (*CountBeaconBlockResponse, error) ListUniqueBeaconBlockValues(ctx context.Context, in *ListUniqueBeaconBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBlockValuesResponse, error) + // ExecutionPayloadEnvelope + CreateExecutionPayloadEnvelope(ctx context.Context, in *CreateExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*CreateExecutionPayloadEnvelopeResponse, error) + ListExecutionPayloadEnvelope(ctx context.Context, in *ListExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*ListExecutionPayloadEnvelopeResponse, error) + CountExecutionPayloadEnvelope(ctx context.Context, in *CountExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*CountExecutionPayloadEnvelopeResponse, error) + ListUniqueExecutionPayloadEnvelopeValues(ctx context.Context, in *ListUniqueExecutionPayloadEnvelopeValuesRequest, opts ...grpc.CallOption) (*ListUniqueExecutionPayloadEnvelopeValuesResponse, error) // BeaconBadBlock CreateBeaconBadBlock(ctx context.Context, in *CreateBeaconBadBlockRequest, opts ...grpc.CallOption) (*CreateBeaconBadBlockResponse, error) ListBeaconBadBlock(ctx context.Context, in *ListBeaconBadBlockRequest, opts ...grpc.CallOption) (*ListBeaconBadBlockResponse, error) @@ -94,8 +103,9 @@ func NewIndexerClient(cc grpc.ClientConnInterface) IndexerClient { } func (c *indexerClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*GetConfigResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetConfigResponse) - err := c.cc.Invoke(ctx, Indexer_GetConfig_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_GetConfig_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -103,8 +113,9 @@ func (c *indexerClient) GetConfig(ctx context.Context, in *GetConfigRequest, opt } func (c *indexerClient) GetStorageHandshakeToken(ctx context.Context, in *GetStorageHandshakeTokenRequest, opts ...grpc.CallOption) (*GetStorageHandshakeTokenResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetStorageHandshakeTokenResponse) - err := c.cc.Invoke(ctx, Indexer_GetStorageHandshakeToken_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_GetStorageHandshakeToken_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -112,8 +123,9 @@ func (c *indexerClient) GetStorageHandshakeToken(ctx context.Context, in *GetSto } func (c *indexerClient) CreateBeaconState(ctx context.Context, in *CreateBeaconStateRequest, opts ...grpc.CallOption) (*CreateBeaconStateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateBeaconStateResponse) - err := c.cc.Invoke(ctx, Indexer_CreateBeaconState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CreateBeaconState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -121,8 +133,9 @@ func (c *indexerClient) CreateBeaconState(ctx context.Context, in *CreateBeaconS } func (c *indexerClient) ListBeaconState(ctx context.Context, in *ListBeaconStateRequest, opts ...grpc.CallOption) (*ListBeaconStateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListBeaconStateResponse) - err := c.cc.Invoke(ctx, Indexer_ListBeaconState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListBeaconState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -130,8 +143,9 @@ func (c *indexerClient) ListBeaconState(ctx context.Context, in *ListBeaconState } func (c *indexerClient) CountBeaconState(ctx context.Context, in *CountBeaconStateRequest, opts ...grpc.CallOption) (*CountBeaconStateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountBeaconStateResponse) - err := c.cc.Invoke(ctx, Indexer_CountBeaconState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CountBeaconState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -139,8 +153,9 @@ func (c *indexerClient) CountBeaconState(ctx context.Context, in *CountBeaconSta } func (c *indexerClient) ListUniqueBeaconStateValues(ctx context.Context, in *ListUniqueBeaconStateValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconStateValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueBeaconStateValuesResponse) - err := c.cc.Invoke(ctx, Indexer_ListUniqueBeaconStateValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListUniqueBeaconStateValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -148,8 +163,9 @@ func (c *indexerClient) ListUniqueBeaconStateValues(ctx context.Context, in *Lis } func (c *indexerClient) CreateBeaconBlock(ctx context.Context, in *CreateBeaconBlockRequest, opts ...grpc.CallOption) (*CreateBeaconBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateBeaconBlockResponse) - err := c.cc.Invoke(ctx, Indexer_CreateBeaconBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CreateBeaconBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -157,8 +173,9 @@ func (c *indexerClient) CreateBeaconBlock(ctx context.Context, in *CreateBeaconB } func (c *indexerClient) ListBeaconBlock(ctx context.Context, in *ListBeaconBlockRequest, opts ...grpc.CallOption) (*ListBeaconBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListBeaconBlockResponse) - err := c.cc.Invoke(ctx, Indexer_ListBeaconBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListBeaconBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -166,8 +183,9 @@ func (c *indexerClient) ListBeaconBlock(ctx context.Context, in *ListBeaconBlock } func (c *indexerClient) CountBeaconBlock(ctx context.Context, in *CountBeaconBlockRequest, opts ...grpc.CallOption) (*CountBeaconBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountBeaconBlockResponse) - err := c.cc.Invoke(ctx, Indexer_CountBeaconBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CountBeaconBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -175,8 +193,49 @@ func (c *indexerClient) CountBeaconBlock(ctx context.Context, in *CountBeaconBlo } func (c *indexerClient) ListUniqueBeaconBlockValues(ctx context.Context, in *ListUniqueBeaconBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBlockValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueBeaconBlockValuesResponse) - err := c.cc.Invoke(ctx, Indexer_ListUniqueBeaconBlockValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListUniqueBeaconBlockValues_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *indexerClient) CreateExecutionPayloadEnvelope(ctx context.Context, in *CreateExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*CreateExecutionPayloadEnvelopeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CreateExecutionPayloadEnvelopeResponse) + err := c.cc.Invoke(ctx, Indexer_CreateExecutionPayloadEnvelope_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *indexerClient) ListExecutionPayloadEnvelope(ctx context.Context, in *ListExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*ListExecutionPayloadEnvelopeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListExecutionPayloadEnvelopeResponse) + err := c.cc.Invoke(ctx, Indexer_ListExecutionPayloadEnvelope_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *indexerClient) CountExecutionPayloadEnvelope(ctx context.Context, in *CountExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*CountExecutionPayloadEnvelopeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CountExecutionPayloadEnvelopeResponse) + err := c.cc.Invoke(ctx, Indexer_CountExecutionPayloadEnvelope_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *indexerClient) ListUniqueExecutionPayloadEnvelopeValues(ctx context.Context, in *ListUniqueExecutionPayloadEnvelopeValuesRequest, opts ...grpc.CallOption) (*ListUniqueExecutionPayloadEnvelopeValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListUniqueExecutionPayloadEnvelopeValuesResponse) + err := c.cc.Invoke(ctx, Indexer_ListUniqueExecutionPayloadEnvelopeValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -184,8 +243,9 @@ func (c *indexerClient) ListUniqueBeaconBlockValues(ctx context.Context, in *Lis } func (c *indexerClient) CreateBeaconBadBlock(ctx context.Context, in *CreateBeaconBadBlockRequest, opts ...grpc.CallOption) (*CreateBeaconBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateBeaconBadBlockResponse) - err := c.cc.Invoke(ctx, Indexer_CreateBeaconBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CreateBeaconBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -193,8 +253,9 @@ func (c *indexerClient) CreateBeaconBadBlock(ctx context.Context, in *CreateBeac } func (c *indexerClient) ListBeaconBadBlock(ctx context.Context, in *ListBeaconBadBlockRequest, opts ...grpc.CallOption) (*ListBeaconBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListBeaconBadBlockResponse) - err := c.cc.Invoke(ctx, Indexer_ListBeaconBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListBeaconBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -202,8 +263,9 @@ func (c *indexerClient) ListBeaconBadBlock(ctx context.Context, in *ListBeaconBa } func (c *indexerClient) CountBeaconBadBlock(ctx context.Context, in *CountBeaconBadBlockRequest, opts ...grpc.CallOption) (*CountBeaconBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountBeaconBadBlockResponse) - err := c.cc.Invoke(ctx, Indexer_CountBeaconBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CountBeaconBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -211,8 +273,9 @@ func (c *indexerClient) CountBeaconBadBlock(ctx context.Context, in *CountBeacon } func (c *indexerClient) ListUniqueBeaconBadBlockValues(ctx context.Context, in *ListUniqueBeaconBadBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBadBlockValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueBeaconBadBlockValuesResponse) - err := c.cc.Invoke(ctx, Indexer_ListUniqueBeaconBadBlockValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListUniqueBeaconBadBlockValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -220,8 +283,9 @@ func (c *indexerClient) ListUniqueBeaconBadBlockValues(ctx context.Context, in * } func (c *indexerClient) CreateBeaconBadBlob(ctx context.Context, in *CreateBeaconBadBlobRequest, opts ...grpc.CallOption) (*CreateBeaconBadBlobResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateBeaconBadBlobResponse) - err := c.cc.Invoke(ctx, Indexer_CreateBeaconBadBlob_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CreateBeaconBadBlob_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -229,8 +293,9 @@ func (c *indexerClient) CreateBeaconBadBlob(ctx context.Context, in *CreateBeaco } func (c *indexerClient) ListBeaconBadBlob(ctx context.Context, in *ListBeaconBadBlobRequest, opts ...grpc.CallOption) (*ListBeaconBadBlobResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListBeaconBadBlobResponse) - err := c.cc.Invoke(ctx, Indexer_ListBeaconBadBlob_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListBeaconBadBlob_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -238,8 +303,9 @@ func (c *indexerClient) ListBeaconBadBlob(ctx context.Context, in *ListBeaconBad } func (c *indexerClient) CountBeaconBadBlob(ctx context.Context, in *CountBeaconBadBlobRequest, opts ...grpc.CallOption) (*CountBeaconBadBlobResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountBeaconBadBlobResponse) - err := c.cc.Invoke(ctx, Indexer_CountBeaconBadBlob_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CountBeaconBadBlob_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -247,8 +313,9 @@ func (c *indexerClient) CountBeaconBadBlob(ctx context.Context, in *CountBeaconB } func (c *indexerClient) ListUniqueBeaconBadBlobValues(ctx context.Context, in *ListUniqueBeaconBadBlobValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBadBlobValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueBeaconBadBlobValuesResponse) - err := c.cc.Invoke(ctx, Indexer_ListUniqueBeaconBadBlobValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListUniqueBeaconBadBlobValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -256,8 +323,9 @@ func (c *indexerClient) ListUniqueBeaconBadBlobValues(ctx context.Context, in *L } func (c *indexerClient) CreateExecutionBlockTrace(ctx context.Context, in *CreateExecutionBlockTraceRequest, opts ...grpc.CallOption) (*CreateExecutionBlockTraceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateExecutionBlockTraceResponse) - err := c.cc.Invoke(ctx, Indexer_CreateExecutionBlockTrace_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CreateExecutionBlockTrace_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -265,8 +333,9 @@ func (c *indexerClient) CreateExecutionBlockTrace(ctx context.Context, in *Creat } func (c *indexerClient) ListExecutionBlockTrace(ctx context.Context, in *ListExecutionBlockTraceRequest, opts ...grpc.CallOption) (*ListExecutionBlockTraceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListExecutionBlockTraceResponse) - err := c.cc.Invoke(ctx, Indexer_ListExecutionBlockTrace_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListExecutionBlockTrace_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -274,8 +343,9 @@ func (c *indexerClient) ListExecutionBlockTrace(ctx context.Context, in *ListExe } func (c *indexerClient) CountExecutionBlockTrace(ctx context.Context, in *CountExecutionBlockTraceRequest, opts ...grpc.CallOption) (*CountExecutionBlockTraceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountExecutionBlockTraceResponse) - err := c.cc.Invoke(ctx, Indexer_CountExecutionBlockTrace_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CountExecutionBlockTrace_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -283,8 +353,9 @@ func (c *indexerClient) CountExecutionBlockTrace(ctx context.Context, in *CountE } func (c *indexerClient) ListUniqueExecutionBlockTraceValues(ctx context.Context, in *ListUniqueExecutionBlockTraceValuesRequest, opts ...grpc.CallOption) (*ListUniqueExecutionBlockTraceValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueExecutionBlockTraceValuesResponse) - err := c.cc.Invoke(ctx, Indexer_ListUniqueExecutionBlockTraceValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListUniqueExecutionBlockTraceValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -292,8 +363,9 @@ func (c *indexerClient) ListUniqueExecutionBlockTraceValues(ctx context.Context, } func (c *indexerClient) CreateExecutionBadBlock(ctx context.Context, in *CreateExecutionBadBlockRequest, opts ...grpc.CallOption) (*CreateExecutionBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateExecutionBadBlockResponse) - err := c.cc.Invoke(ctx, Indexer_CreateExecutionBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CreateExecutionBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -301,8 +373,9 @@ func (c *indexerClient) CreateExecutionBadBlock(ctx context.Context, in *CreateE } func (c *indexerClient) ListExecutionBadBlock(ctx context.Context, in *ListExecutionBadBlockRequest, opts ...grpc.CallOption) (*ListExecutionBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListExecutionBadBlockResponse) - err := c.cc.Invoke(ctx, Indexer_ListExecutionBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListExecutionBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -310,8 +383,9 @@ func (c *indexerClient) ListExecutionBadBlock(ctx context.Context, in *ListExecu } func (c *indexerClient) CountExecutionBadBlock(ctx context.Context, in *CountExecutionBadBlockRequest, opts ...grpc.CallOption) (*CountExecutionBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountExecutionBadBlockResponse) - err := c.cc.Invoke(ctx, Indexer_CountExecutionBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CountExecutionBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -319,8 +393,9 @@ func (c *indexerClient) CountExecutionBadBlock(ctx context.Context, in *CountExe } func (c *indexerClient) ListUniqueExecutionBadBlockValues(ctx context.Context, in *ListUniqueExecutionBadBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueExecutionBadBlockValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueExecutionBadBlockValuesResponse) - err := c.cc.Invoke(ctx, Indexer_ListUniqueExecutionBadBlockValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListUniqueExecutionBadBlockValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -329,7 +404,7 @@ func (c *indexerClient) ListUniqueExecutionBadBlockValues(ctx context.Context, i // IndexerServer is the server API for Indexer service. // All implementations must embed UnimplementedIndexerServer -// for forward compatibility +// for forward compatibility. type IndexerServer interface { GetConfig(context.Context, *GetConfigRequest) (*GetConfigResponse, error) GetStorageHandshakeToken(context.Context, *GetStorageHandshakeTokenRequest) (*GetStorageHandshakeTokenResponse, error) @@ -343,6 +418,11 @@ type IndexerServer interface { ListBeaconBlock(context.Context, *ListBeaconBlockRequest) (*ListBeaconBlockResponse, error) CountBeaconBlock(context.Context, *CountBeaconBlockRequest) (*CountBeaconBlockResponse, error) ListUniqueBeaconBlockValues(context.Context, *ListUniqueBeaconBlockValuesRequest) (*ListUniqueBeaconBlockValuesResponse, error) + // ExecutionPayloadEnvelope + CreateExecutionPayloadEnvelope(context.Context, *CreateExecutionPayloadEnvelopeRequest) (*CreateExecutionPayloadEnvelopeResponse, error) + ListExecutionPayloadEnvelope(context.Context, *ListExecutionPayloadEnvelopeRequest) (*ListExecutionPayloadEnvelopeResponse, error) + CountExecutionPayloadEnvelope(context.Context, *CountExecutionPayloadEnvelopeRequest) (*CountExecutionPayloadEnvelopeResponse, error) + ListUniqueExecutionPayloadEnvelopeValues(context.Context, *ListUniqueExecutionPayloadEnvelopeValuesRequest) (*ListUniqueExecutionPayloadEnvelopeValuesResponse, error) // BeaconBadBlock CreateBeaconBadBlock(context.Context, *CreateBeaconBadBlockRequest) (*CreateBeaconBadBlockResponse, error) ListBeaconBadBlock(context.Context, *ListBeaconBadBlockRequest) (*ListBeaconBadBlockResponse, error) @@ -366,89 +446,105 @@ type IndexerServer interface { mustEmbedUnimplementedIndexerServer() } -// UnimplementedIndexerServer must be embedded to have forward compatible implementations. -type UnimplementedIndexerServer struct { -} +// UnimplementedIndexerServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedIndexerServer struct{} func (UnimplementedIndexerServer) GetConfig(context.Context, *GetConfigRequest) (*GetConfigResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetConfig not implemented") + return nil, status.Error(codes.Unimplemented, "method GetConfig not implemented") } func (UnimplementedIndexerServer) GetStorageHandshakeToken(context.Context, *GetStorageHandshakeTokenRequest) (*GetStorageHandshakeTokenResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetStorageHandshakeToken not implemented") + return nil, status.Error(codes.Unimplemented, "method GetStorageHandshakeToken not implemented") } func (UnimplementedIndexerServer) CreateBeaconState(context.Context, *CreateBeaconStateRequest) (*CreateBeaconStateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateBeaconState not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateBeaconState not implemented") } func (UnimplementedIndexerServer) ListBeaconState(context.Context, *ListBeaconStateRequest) (*ListBeaconStateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBeaconState not implemented") + return nil, status.Error(codes.Unimplemented, "method ListBeaconState not implemented") } func (UnimplementedIndexerServer) CountBeaconState(context.Context, *CountBeaconStateRequest) (*CountBeaconStateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountBeaconState not implemented") + return nil, status.Error(codes.Unimplemented, "method CountBeaconState not implemented") } func (UnimplementedIndexerServer) ListUniqueBeaconStateValues(context.Context, *ListUniqueBeaconStateValuesRequest) (*ListUniqueBeaconStateValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueBeaconStateValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueBeaconStateValues not implemented") } func (UnimplementedIndexerServer) CreateBeaconBlock(context.Context, *CreateBeaconBlockRequest) (*CreateBeaconBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateBeaconBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateBeaconBlock not implemented") } func (UnimplementedIndexerServer) ListBeaconBlock(context.Context, *ListBeaconBlockRequest) (*ListBeaconBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBeaconBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method ListBeaconBlock not implemented") } func (UnimplementedIndexerServer) CountBeaconBlock(context.Context, *CountBeaconBlockRequest) (*CountBeaconBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountBeaconBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CountBeaconBlock not implemented") } func (UnimplementedIndexerServer) ListUniqueBeaconBlockValues(context.Context, *ListUniqueBeaconBlockValuesRequest) (*ListUniqueBeaconBlockValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueBeaconBlockValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueBeaconBlockValues not implemented") +} +func (UnimplementedIndexerServer) CreateExecutionPayloadEnvelope(context.Context, *CreateExecutionPayloadEnvelopeRequest) (*CreateExecutionPayloadEnvelopeResponse, error) { + return nil, status.Error(codes.Unimplemented, "method CreateExecutionPayloadEnvelope not implemented") +} +func (UnimplementedIndexerServer) ListExecutionPayloadEnvelope(context.Context, *ListExecutionPayloadEnvelopeRequest) (*ListExecutionPayloadEnvelopeResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ListExecutionPayloadEnvelope not implemented") +} +func (UnimplementedIndexerServer) CountExecutionPayloadEnvelope(context.Context, *CountExecutionPayloadEnvelopeRequest) (*CountExecutionPayloadEnvelopeResponse, error) { + return nil, status.Error(codes.Unimplemented, "method CountExecutionPayloadEnvelope not implemented") +} +func (UnimplementedIndexerServer) ListUniqueExecutionPayloadEnvelopeValues(context.Context, *ListUniqueExecutionPayloadEnvelopeValuesRequest) (*ListUniqueExecutionPayloadEnvelopeValuesResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ListUniqueExecutionPayloadEnvelopeValues not implemented") } func (UnimplementedIndexerServer) CreateBeaconBadBlock(context.Context, *CreateBeaconBadBlockRequest) (*CreateBeaconBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateBeaconBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateBeaconBadBlock not implemented") } func (UnimplementedIndexerServer) ListBeaconBadBlock(context.Context, *ListBeaconBadBlockRequest) (*ListBeaconBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBeaconBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method ListBeaconBadBlock not implemented") } func (UnimplementedIndexerServer) CountBeaconBadBlock(context.Context, *CountBeaconBadBlockRequest) (*CountBeaconBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountBeaconBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CountBeaconBadBlock not implemented") } func (UnimplementedIndexerServer) ListUniqueBeaconBadBlockValues(context.Context, *ListUniqueBeaconBadBlockValuesRequest) (*ListUniqueBeaconBadBlockValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueBeaconBadBlockValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueBeaconBadBlockValues not implemented") } func (UnimplementedIndexerServer) CreateBeaconBadBlob(context.Context, *CreateBeaconBadBlobRequest) (*CreateBeaconBadBlobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateBeaconBadBlob not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateBeaconBadBlob not implemented") } func (UnimplementedIndexerServer) ListBeaconBadBlob(context.Context, *ListBeaconBadBlobRequest) (*ListBeaconBadBlobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBeaconBadBlob not implemented") + return nil, status.Error(codes.Unimplemented, "method ListBeaconBadBlob not implemented") } func (UnimplementedIndexerServer) CountBeaconBadBlob(context.Context, *CountBeaconBadBlobRequest) (*CountBeaconBadBlobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountBeaconBadBlob not implemented") + return nil, status.Error(codes.Unimplemented, "method CountBeaconBadBlob not implemented") } func (UnimplementedIndexerServer) ListUniqueBeaconBadBlobValues(context.Context, *ListUniqueBeaconBadBlobValuesRequest) (*ListUniqueBeaconBadBlobValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueBeaconBadBlobValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueBeaconBadBlobValues not implemented") } func (UnimplementedIndexerServer) CreateExecutionBlockTrace(context.Context, *CreateExecutionBlockTraceRequest) (*CreateExecutionBlockTraceResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateExecutionBlockTrace not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateExecutionBlockTrace not implemented") } func (UnimplementedIndexerServer) ListExecutionBlockTrace(context.Context, *ListExecutionBlockTraceRequest) (*ListExecutionBlockTraceResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListExecutionBlockTrace not implemented") + return nil, status.Error(codes.Unimplemented, "method ListExecutionBlockTrace not implemented") } func (UnimplementedIndexerServer) CountExecutionBlockTrace(context.Context, *CountExecutionBlockTraceRequest) (*CountExecutionBlockTraceResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountExecutionBlockTrace not implemented") + return nil, status.Error(codes.Unimplemented, "method CountExecutionBlockTrace not implemented") } func (UnimplementedIndexerServer) ListUniqueExecutionBlockTraceValues(context.Context, *ListUniqueExecutionBlockTraceValuesRequest) (*ListUniqueExecutionBlockTraceValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueExecutionBlockTraceValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueExecutionBlockTraceValues not implemented") } func (UnimplementedIndexerServer) CreateExecutionBadBlock(context.Context, *CreateExecutionBadBlockRequest) (*CreateExecutionBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateExecutionBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateExecutionBadBlock not implemented") } func (UnimplementedIndexerServer) ListExecutionBadBlock(context.Context, *ListExecutionBadBlockRequest) (*ListExecutionBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListExecutionBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method ListExecutionBadBlock not implemented") } func (UnimplementedIndexerServer) CountExecutionBadBlock(context.Context, *CountExecutionBadBlockRequest) (*CountExecutionBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountExecutionBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CountExecutionBadBlock not implemented") } func (UnimplementedIndexerServer) ListUniqueExecutionBadBlockValues(context.Context, *ListUniqueExecutionBadBlockValuesRequest) (*ListUniqueExecutionBadBlockValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueExecutionBadBlockValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueExecutionBadBlockValues not implemented") } func (UnimplementedIndexerServer) mustEmbedUnimplementedIndexerServer() {} +func (UnimplementedIndexerServer) testEmbeddedByValue() {} // UnsafeIndexerServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to IndexerServer will @@ -458,6 +554,13 @@ type UnsafeIndexerServer interface { } func RegisterIndexerServer(s grpc.ServiceRegistrar, srv IndexerServer) { + // If the following call panics, it indicates UnimplementedIndexerServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Indexer_ServiceDesc, srv) } @@ -641,6 +744,78 @@ func _Indexer_ListUniqueBeaconBlockValues_Handler(srv interface{}, ctx context.C return interceptor(ctx, in, info, handler) } +func _Indexer_CreateExecutionPayloadEnvelope_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateExecutionPayloadEnvelopeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IndexerServer).CreateExecutionPayloadEnvelope(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Indexer_CreateExecutionPayloadEnvelope_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IndexerServer).CreateExecutionPayloadEnvelope(ctx, req.(*CreateExecutionPayloadEnvelopeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Indexer_ListExecutionPayloadEnvelope_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListExecutionPayloadEnvelopeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IndexerServer).ListExecutionPayloadEnvelope(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Indexer_ListExecutionPayloadEnvelope_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IndexerServer).ListExecutionPayloadEnvelope(ctx, req.(*ListExecutionPayloadEnvelopeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Indexer_CountExecutionPayloadEnvelope_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CountExecutionPayloadEnvelopeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IndexerServer).CountExecutionPayloadEnvelope(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Indexer_CountExecutionPayloadEnvelope_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IndexerServer).CountExecutionPayloadEnvelope(ctx, req.(*CountExecutionPayloadEnvelopeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Indexer_ListUniqueExecutionPayloadEnvelopeValues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListUniqueExecutionPayloadEnvelopeValuesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IndexerServer).ListUniqueExecutionPayloadEnvelopeValues(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Indexer_ListUniqueExecutionPayloadEnvelopeValues_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IndexerServer).ListUniqueExecutionPayloadEnvelopeValues(ctx, req.(*ListUniqueExecutionPayloadEnvelopeValuesRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Indexer_CreateBeaconBadBlock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateBeaconBadBlockRequest) if err := dec(in); err != nil { @@ -976,6 +1151,22 @@ var Indexer_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListUniqueBeaconBlockValues", Handler: _Indexer_ListUniqueBeaconBlockValues_Handler, }, + { + MethodName: "CreateExecutionPayloadEnvelope", + Handler: _Indexer_CreateExecutionPayloadEnvelope_Handler, + }, + { + MethodName: "ListExecutionPayloadEnvelope", + Handler: _Indexer_ListExecutionPayloadEnvelope_Handler, + }, + { + MethodName: "CountExecutionPayloadEnvelope", + Handler: _Indexer_CountExecutionPayloadEnvelope_Handler, + }, + { + MethodName: "ListUniqueExecutionPayloadEnvelopeValues", + Handler: _Indexer_ListUniqueExecutionPayloadEnvelopeValues_Handler, + }, { MethodName: "CreateBeaconBadBlock", Handler: _Indexer_CreateBeaconBadBlock_Handler, @@ -1042,5 +1233,5 @@ var Indexer_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "indexer/indexer.proto", + Metadata: "pkg/proto/tracoor/indexer/indexer.proto", } diff --git a/pkg/proto/tracoor/indexer/validate.go b/pkg/proto/tracoor/indexer/validate.go index 1e3e234..c967738 100644 --- a/pkg/proto/tracoor/indexer/validate.go +++ b/pkg/proto/tracoor/indexer/validate.go @@ -141,6 +141,74 @@ func (r *ListUniqueBeaconBlockValuesRequest) Validate() error { return nil } +func (s *ExecutionPayloadEnvelope) Validate() error { + if s == nil { + return errors.New("execution payload envelope is nil") + } + + if s.GetEpoch() == nil { + return errors.New("epoch is required") + } + + if s.GetSlot() == nil { + return errors.New("slot is required") + } + + if s.GetBlockRoot().Value == "" { + return errors.New("block root is required") + } + + if s.GetId() == nil { + return errors.New("id is required") + } + + if s.GetBeaconImplementation().GetValue() == "" { + return errors.New("beacon implementation is required") + } + + return nil +} + +func (req *CreateExecutionPayloadEnvelopeRequest) Validate() error { + if req.GetLocation().GetValue() == "" { + return fmt.Errorf("location is required") + } + + if req.GetNode().GetValue() == "" { + return fmt.Errorf("node is required") + } + + if req.Epoch == nil { + return fmt.Errorf("epoch is required") + } + + if req.Slot == nil { + return fmt.Errorf("slot is required") + } + + if req.GetBlockRoot().Value == "" { + return fmt.Errorf("block root is required") + } + + if req.GetBeaconImplementation().Value == "" { + return fmt.Errorf("beacon implementation is required") + } + + return nil +} + +func (r *ListUniqueExecutionPayloadEnvelopeValuesRequest) Validate() error { + if r == nil { + return errors.New("request is nil") + } + + if len(r.Fields) == 0 { + return errors.New("fields is required") + } + + return nil +} + func (s *BeaconBadBlock) Validate() error { if s == nil { return errors.New("beacon bad block is nil") diff --git a/pkg/server/download.go b/pkg/server/download.go index 5268704..7bb4d91 100644 --- a/pkg/server/download.go +++ b/pkg/server/download.go @@ -53,6 +53,10 @@ func (d *ObjectDownloader) Start() error { return fmt.Errorf("failed to register beacon block download handler: %v", err) } + if err := d.mux.HandlePath("GET", "/download/execution_payload_envelope/{id}", d.executionPayloadEnvelopeHandler); err != nil { + return fmt.Errorf("failed to register execution payload envelope download handler: %v", err) + } + if err := d.mux.HandlePath("GET", "/download/beacon_bad_block/{id}", d.beaconBadBlockHandler); err != nil { return fmt.Errorf("failed to register beacon bad block download handler: %v", err) } @@ -248,6 +252,94 @@ func (d *ObjectDownloader) beaconBlockHandler(w http.ResponseWriter, r *http.Req } } +func (d *ObjectDownloader) executionPayloadEnvelopeHandler(w http.ResponseWriter, r *http.Request, pathParams map[string]string) { + ctx := r.Context() + + id := pathParams["id"] + if id == "" { + d.writeJSONError(w, "No ID provided", http.StatusBadRequest) + + return + } + + resp, err := d.indexer.ListExecutionPayloadEnvelope(ctx, &indexer.ListExecutionPayloadEnvelopeRequest{ + Id: id, + Pagination: &indexer.PaginationCursor{ + Limit: 1, + }, + }) + if err != nil { + d.log.WithError(err).Errorf("Failed to list execution payload envelopes for ID %s", id) + + d.writeJSONError(w, "Failed to list execution payload envelopes", http.StatusInternalServerError) + + return + } + + if len(resp.ExecutionPayloadEnvelopes) == 0 { + d.writeJSONError(w, "No execution payload envelopes found", http.StatusNotFound) + + return + } + + if len(resp.ExecutionPayloadEnvelopes) > 1 { + d.writeJSONError(w, "More than one execution payload envelope found", http.StatusInternalServerError) + + return + } + + envelope := resp.ExecutionPayloadEnvelopes[0] + + if d.store.PreferURLs() { + var itemURL string + + itemURL, err = d.store.GetExecutionPayloadEnvelopeURL(ctx, &tStore.GetURLParams{ + Location: envelope.Location.Value, + Expiry: 3600, + ContentEncoding: envelope.ContentEncoding.GetValue(), + }) + if err != nil { + d.log.WithError(err).Errorf("Failed to get URL for execution payload envelope ID %s", id) + d.writeJSONError(w, "Failed to get URL for item", http.StatusInternalServerError) + + return + } + + http.Redirect(w, r, itemURL, http.StatusTemporaryRedirect) + + return + } + + data, err := d.store.GetExecutionPayloadEnvelope(ctx, envelope.Location.Value) + if err != nil { + d.log.WithError(err).Errorf("Failed to get execution payload envelope from store for ID %s from %s", id, envelope.Location.Value) + + d.writeJSONError(w, "Failed to get execution payload envelope", http.StatusInternalServerError) + + return + } + + w.Header().Set("Content-Type", string(mime.GetContentTypeFromExtension(filepath.Ext(envelope.Location.Value)))) + + filename := filepath.Base(envelope.Location.Value) + + algo, err := compression.GetCompressionAlgorithmFromContentEncoding(envelope.ContentEncoding.GetValue()) + if err == nil { + w.Header().Set("Content-Encoding", algo.ContentEncoding) + } else if compression.HasCompressionExtension(envelope.Location.Value, algo) { + w.Header().Set("Content-Encoding", algo.ContentEncoding) + + filename = compression.RemoveExtension(filename) + } + + w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%q", filename)) + + _, err = w.Write(*data) + if err != nil { + d.writeJSONError(w, "Failed to write response", http.StatusInternalServerError) + } +} + func (d *ObjectDownloader) beaconBadBlockHandler(w http.ResponseWriter, r *http.Request, pathParams map[string]string) { ctx := r.Context() diff --git a/pkg/server/persistence/db.go b/pkg/server/persistence/db.go index 738523d..b5534bb 100644 --- a/pkg/server/persistence/db.go +++ b/pkg/server/persistence/db.go @@ -80,6 +80,11 @@ func (i *Indexer) Start(ctx context.Context) error { return perrors.Wrap(err, "failed to auto migrate beacon block") } + err = i.db.AutoMigrate(&ExecutionPayloadEnvelope{}) + if err != nil { + return perrors.Wrap(err, "failed to auto migrate execution payload envelope") + } + err = i.db.AutoMigrate(&BeaconBadBlock{}) if err != nil { return perrors.Wrap(err, "failed to auto migrate beacon bad block") diff --git a/pkg/server/persistence/execution_payload_envelope.go b/pkg/server/persistence/execution_payload_envelope.go new file mode 100644 index 0000000..ec18ad3 --- /dev/null +++ b/pkg/server/persistence/execution_payload_envelope.go @@ -0,0 +1,383 @@ +package persistence + +import ( + "context" + "errors" + "strings" + "time" + + "gorm.io/gorm" +) + +type ExecutionPayloadEnvelope struct { + gorm.Model + ID string `gorm:"primaryKey"` + Node string `gorm:"index;index:idx_epe_node_slot_blockroot_network_fetchedat,where:deleted_at IS NULL,priority:1"` + // We have to use int64 here as SQLite doesn't support uint64. This sucks + // but slot 9223372036854775808 is probably around the heat death + // of the universe so we should be OK. + Slot int64 `gorm:"index:idx_epe_slot,where:deleted_at IS NULL;index;index:idx_epe_node_slot_blockroot_network_fetchedat,where:deleted_at IS NULL,priority:2"` + Epoch int64 + BlockRoot string `gorm:"index;index:idx_epe_node_slot_blockroot_network_fetchedat,where:deleted_at IS NULL,priority:3"` + FetchedAt time.Time `gorm:"index;index:idx_epe_node_slot_blockroot_network_fetchedat,where:deleted_at IS NULL,priority:5;index:idx_epe_fetchedat,where:deleted_at IS NULL;index:idx_epe_fetchedat_network,where:deleted_at IS NULL,priority:1"` + BeaconImplementation string + NodeVersion string `gorm:"not null;default:''"` + ContentEncoding string `gorm:"not null;default:''"` + Location string `gorm:"not null;default:''"` + Network string `gorm:"not null;default:'';index;index:idx_epe_node_slot_blockroot_network_fetchedat,where:deleted_at IS NULL,priority:4;index:idx_epe_network,where:deleted_at IS NULL;index:idx_epe_network,where:deleted_at IS NULL;index:idx_epe_fetchedat_network,where:deleted_at IS NULL,priority:2"` +} + +type ExecutionPayloadEnvelopeFilter struct { + ID *string + Node *string + Before *time.Time + After *time.Time + Slot *uint64 + Epoch *uint64 + BlockRoot *string + NodeVersion *string + Location *string + Network *string + BeaconImplementation *string +} + +func (f *ExecutionPayloadEnvelopeFilter) AddID(id string) { + f.ID = &id +} + +func (f *ExecutionPayloadEnvelopeFilter) AddNode(node string) { + f.Node = &node +} + +func (f *ExecutionPayloadEnvelopeFilter) AddBefore(before time.Time) { + f.Before = &before +} + +func (f *ExecutionPayloadEnvelopeFilter) AddAfter(after time.Time) { + f.After = &after +} + +func (f *ExecutionPayloadEnvelopeFilter) AddSlot(slot uint64) { + f.Slot = &slot +} + +func (f *ExecutionPayloadEnvelopeFilter) AddEpoch(epoch uint64) { + f.Epoch = &epoch +} + +func (f *ExecutionPayloadEnvelopeFilter) AddBlockRoot(blockRoot string) { + f.BlockRoot = &blockRoot +} + +func (f *ExecutionPayloadEnvelopeFilter) AddNodeVersion(nodeVersion string) { + f.NodeVersion = &nodeVersion +} + +func (f *ExecutionPayloadEnvelopeFilter) AddLocation(location string) { + f.Location = &location +} + +func (f *ExecutionPayloadEnvelopeFilter) AddNetwork(network string) { + f.Network = &network +} + +func (f *ExecutionPayloadEnvelopeFilter) AddBeaconImplementation(beaconImplementation string) { + f.BeaconImplementation = &beaconImplementation +} + +func (f *ExecutionPayloadEnvelopeFilter) Validate() error { + if f.ID == nil && + f.Node == nil && + f.Before == nil && + f.After == nil && + f.Slot == nil && + f.Epoch == nil && + f.BlockRoot == nil && + f.NodeVersion == nil && + f.Location == nil && + f.BeaconImplementation == nil && + f.Network == nil { + return errors.New("no filter specified") + } + + return nil +} + +func (f *ExecutionPayloadEnvelopeFilter) ApplyToQuery(query *gorm.DB) (*gorm.DB, error) { + if f.ID != nil { + query = query.Where("id = ?", f.ID) + } + + if f.Node != nil { + query = query.Where("node = ?", f.Node) + } + + if f.Before != nil { + query = query.Where("fetched_at <= ?", timestampFormatForDB(*f.Before)) + } + + if f.After != nil { + query = query.Where("fetched_at >= ?", timestampFormatForDB(*f.After)) + } + + if f.Slot != nil { + query = query.Where("slot = ?", f.Slot) + } + + if f.Epoch != nil { + query = query.Where("epoch = ?", f.Epoch) + } + + if f.BlockRoot != nil { + query = query.Where("block_root = ?", f.BlockRoot) + } + + if f.NodeVersion != nil { + query = query.Where("node_version = ?", f.NodeVersion) + } + + if f.Location != nil { + query = query.Where("location = ?", f.Location) + } + + if f.Network != nil { + query = query.Where("network = ?", f.Network) + } + + if f.BeaconImplementation != nil { + query = query.Where("beacon_implementation = ?", f.BeaconImplementation) + } + + return query, nil +} + +func (i *Indexer) InsertExecutionPayloadEnvelope(ctx context.Context, envelope *ExecutionPayloadEnvelope) error { + operation := OperationInsertExecutionPayloadEnvelope + i.metrics.ObserveOperation(operation) + + result := i.db.WithContext(ctx).Create(envelope) + if result.Error != nil { + i.metrics.ObserveOperationError(operation) + } + + return result.Error +} + +func (i *Indexer) RemoveExecutionPayloadEnvelope(ctx context.Context, id string) error { + operation := OperationDeleteExecutionPayloadEnvelope + + i.metrics.ObserveOperation(operation) + + result := i.db.WithContext(ctx).Unscoped().Where("id = ?", id).Delete(&ExecutionPayloadEnvelope{}) + + if result.Error != nil { + i.metrics.ObserveOperationError(operation) + } + + return result.Error +} + +func (i *Indexer) CountExecutionPayloadEnvelope(ctx context.Context, filter *ExecutionPayloadEnvelopeFilter) (int64, error) { + operation := OperationCountExecutionPayloadEnvelope + + i.metrics.ObserveOperation(operation) + + var count int64 + + query := i.db.WithContext(ctx).Model(&ExecutionPayloadEnvelope{}) + + query, err := filter.ApplyToQuery(query) + if err != nil { + i.metrics.ObserveOperationError(operation) + + return 0, err + } + + result := query.Count(&count) + if result.Error != nil { + i.metrics.ObserveOperationError(operation) + + return 0, result.Error + } + + return count, nil +} + +func (i *Indexer) ListExecutionPayloadEnvelope(ctx context.Context, filter *ExecutionPayloadEnvelopeFilter, page *PaginationCursor) ([]*ExecutionPayloadEnvelope, error) { + operation := OperationListExecutionPayloadEnvelope + + i.metrics.ObserveOperation(operation) + + var ExecutionPayloadEnvelopes []*ExecutionPayloadEnvelope + + query := i.db.WithContext(ctx).Model(&ExecutionPayloadEnvelope{}) + + if page != nil { + query = page.ApplyOffsetLimit(query) + + query = page.ApplyOrderBy(query) + } + + query, err := filter.ApplyToQuery(query) + if err != nil { + i.metrics.ObserveOperationError(operation) + + return nil, err + } + + result := query.Find(&ExecutionPayloadEnvelopes) + if result.Error != nil { + i.metrics.ObserveOperationError(operation) + + return nil, result.Error + } + + return ExecutionPayloadEnvelopes, nil +} + +type DistinctExecutionPayloadEnvelopeValueResults struct { + Node []string + Slot []uint64 + Epoch []uint64 + BlockRoot []string + NodeVersion []string + Location []string + Network []string + BeaconImplementation []string +} + +//nolint:errcheck // casting fine here. +func (i *Indexer) DistinctExecutionPayloadEnvelopeValues(ctx context.Context, fields []string) (*DistinctExecutionPayloadEnvelopeValueResults, error) { + operation := OperationDistinctValues + + i.metrics.ObserveOperation(operation) + + results := &DistinctExecutionPayloadEnvelopeValueResults{ + Node: make([]string, 0), + Slot: make([]uint64, 0), + Epoch: make([]uint64, 0), + BlockRoot: make([]string, 0), + NodeVersion: make([]string, 0), + Location: make([]string, 0), + Network: make([]string, 0), + BeaconImplementation: make([]string, 0), + } + query := i.db.WithContext(ctx).Model(&ExecutionPayloadEnvelope{}).Select(fields).Group(strings.Join(fields, ", ")).Limit(1000) + + rows, err := query.Rows() + if err != nil { + i.metrics.ObserveOperationError(operation) + + return nil, err + } + defer rows.Close() + + valueSets := make(map[string]map[interface{}]bool) + for _, field := range fields { + valueSets[field] = make(map[interface{}]bool) + } + + var values []interface{} + for rows.Next() { + values = make([]interface{}, len(fields)) + valuePtrs := make([]interface{}, len(fields)) + + for i := range values { + valuePtrs[i] = &values[i] + } + + err := rows.Scan(valuePtrs...) + if err != nil { + i.metrics.ObserveOperationError(operation) + + return nil, err + } + + for i, field := range fields { + if !valueSets[field][values[i]] { + switch field { + case KeyNode: + results.Node = append(results.Node, values[i].(string)) + case KeySlot: + //nolint:gosec // not worried about int64 overflow here + results.Slot = append(results.Slot, uint64(values[i].(int64))) + case KeyEpoch: + //nolint:gosec // not worried about int64 overflow here + results.Epoch = append(results.Epoch, uint64(values[i].(int64))) + case KeyBlockRoot: + results.BlockRoot = append(results.BlockRoot, values[i].(string)) + case KeyNodeVersion: + results.NodeVersion = append(results.NodeVersion, values[i].(string)) + case KeyLocation: + results.Location = append(results.Location, values[i].(string)) + case KeyNetwork: + results.Network = append(results.Network, values[i].(string)) + case KeyBeaconImplementation: + results.BeaconImplementation = append(results.BeaconImplementation, values[i].(string)) + } + + valueSets[field][values[i]] = true + } + } + } + + if err := rows.Err(); err != nil { + i.metrics.ObserveOperationError(operation) + + return nil, err + } + + return results, nil +} + +func (i *Indexer) DeleteExecutionPayloadEnvelope(ctx context.Context, id string) error { + operation := OperationDeleteExecutionPayloadEnvelope + + i.metrics.ObserveOperation(operation) + + query := i.db.WithContext(ctx) + + result := query.Unscoped().Where("id = ?", id).Delete(&ExecutionPayloadEnvelope{}) + if result.Error != nil { + i.metrics.ObserveOperationError(operation) + + return result.Error + } + + if result.RowsAffected == 0 { + i.metrics.ObserveOperationError(operation) + + return errors.New("execution payload envelope not found") + } + + return nil +} + +func (i *Indexer) UpdateExecutionPayloadEnvelope(ctx context.Context, envelope *ExecutionPayloadEnvelope) error { + operation := OperationUpdateExecutionPayloadEnvelope + + i.metrics.ObserveOperation(operation) + + query := i.db.WithContext(ctx) + + result := query.Save(envelope) + if result.Error != nil { + i.metrics.ObserveOperationError(operation) + + return result.Error + } + + if result.RowsAffected == 0 { + i.metrics.ObserveOperationError(operation) + + return errors.New("execution payload envelope not found") + } + + if result.RowsAffected != 1 { + i.metrics.ObserveOperationError(operation) + + return errors.New("execution payload envelope update affected more than one row") + } + + return nil +} diff --git a/pkg/server/persistence/execution_payload_envelope_test.go b/pkg/server/persistence/execution_payload_envelope_test.go new file mode 100644 index 0000000..dcb6eb2 --- /dev/null +++ b/pkg/server/persistence/execution_payload_envelope_test.go @@ -0,0 +1,318 @@ +package persistence + +import ( + "context" + "fmt" + "math/rand" + "testing" + "time" + + "github.com/google/uuid" + "github.com/stretchr/testify/assert" + "gopkg.in/DATA-DOG/go-sqlmock.v1" +) + +func generateRandomExecutionPayloadEnvelope() *ExecutionPayloadEnvelope { + return &ExecutionPayloadEnvelope{ + ID: generateRandomString(10), + Node: generateRandomString(5), + Slot: generateRandomInt64(), + Epoch: generateRandomInt64(), + BlockRoot: generateRandomString(32), + FetchedAt: time.Now(), + BeaconImplementation: generateRandomString(15), + NodeVersion: generateRandomString(8), + Location: generateRandomString(10), + Network: generateRandomString(5), + } +} +func TestInsertExecutionPayloadEnvelope(t *testing.T) { + indexer, mock, err := NewMockIndexer() + assert.NoError(t, err) + + ctx := context.Background() + block := generateRandomExecutionPayloadEnvelope() + + mock.ExpectBegin() + mock.ExpectExec("INSERT INTO").WithArgs( + sqlmock.AnyArg(), sqlmock.AnyArg(), nil, block.ID, block.Node, block.Slot, block.Epoch, + block.BlockRoot, block.FetchedAt, block.BeaconImplementation, block.NodeVersion, + block.Location, block.Network, + ).WillReturnResult(sqlmock.NewResult(1, 1)) + mock.ExpectCommit() + + err = indexer.InsertExecutionPayloadEnvelope(ctx, block) + assert.NoError(t, err) +} + +func TestRemoveExecutionPayloadEnvelope(t *testing.T) { + indexer, mock, err := NewMockIndexer() + assert.NoError(t, err) + + ctx := context.Background() + id := testID + + mock.ExpectBegin() + mock.ExpectExec("DELETE FROM").WithArgs(id).WillReturnResult(sqlmock.NewResult(1, 1)) + mock.ExpectCommit() + + err = indexer.RemoveExecutionPayloadEnvelope(ctx, id) + assert.NoError(t, err) +} + +func TestCountExecutionPayloadEnvelope(t *testing.T) { + indexer, _, err := NewMockIndexer() + assert.NoError(t, err) + + ctx := context.Background() + + block := generateRandomExecutionPayloadEnvelope() + + err = indexer.InsertExecutionPayloadEnvelope(ctx, block) + assert.NoError(t, err) + + filter := &ExecutionPayloadEnvelopeFilter{ + ID: &block.ID, + } + + count, err := indexer.CountExecutionPayloadEnvelope(ctx, filter) + assert.NoError(t, err) + assert.Equal(t, int64(1), count) +} + +func TestListExecutionPayloadEnvelope(t *testing.T) { + indexer, mock, err := NewMockIndexer() + assert.NoError(t, err) + + ctx := context.Background() + block := generateRandomExecutionPayloadEnvelope() + + err = indexer.InsertExecutionPayloadEnvelope(ctx, block) + assert.NoError(t, err) + + filter := &ExecutionPayloadEnvelopeFilter{ + ID: &block.ID, + } + page := &PaginationCursor{} + + mock.ExpectQuery("SELECT \\* FROM").WithArgs(filter.ID).WillReturnRows(sqlmock.NewRows([]string{"id", "node"}).AddRow(testID, "test-node")) + + blocks, err := indexer.ListExecutionPayloadEnvelope(ctx, filter, page) + assert.NoError(t, err) + assert.Len(t, blocks, 1) + assert.Equal(t, block.ID, blocks[0].ID) + assert.Equal(t, block.Node, blocks[0].Node) +} + +func TestUpdateExecutionPayloadEnvelope(t *testing.T) { + indexer, mock, err := NewMockIndexer() + assert.NoError(t, err) + + ctx := context.Background() + block := generateRandomExecutionPayloadEnvelope() + + err = indexer.InsertExecutionPayloadEnvelope(ctx, block) + assert.NoError(t, err) + + mock.ExpectBegin() + mock.ExpectExec("UPDATE").WithArgs( + block.ID, block.Node, block.Slot, block.Epoch, block.BlockRoot, block.FetchedAt, + block.BeaconImplementation, block.NodeVersion, block.Location, block.Network, + ).WillReturnResult(sqlmock.NewResult(1, 1)) + mock.ExpectCommit() + + err = indexer.UpdateExecutionPayloadEnvelope(ctx, block) + assert.NoError(t, err) +} + +//nolint:gocyclo // Test is long but manageable +func TestExecutionPayloadEnvelopeFilters(t *testing.T) { + t.Run("By random combinations", func(t *testing.T) { + indexer, _, err := NewMockIndexer() + if err != nil { + t.Fatal(err) + } + + // Add 10000 random execution payload envelopes + for i := 0; i < 10000; i++ { + id := uuid.New().String() + node := fmt.Sprintf("node-%d", i) + slot := int64(rand.Intn(1000)) + epoch := int64(rand.Intn(100)) + blockRoot := fmt.Sprintf("blockRoot-%d", rand.Intn(100)) + nodeVersion := fmt.Sprintf("version%d", rand.Intn(10)) + location := fmt.Sprintf("location%d", rand.Intn(10)) + network := fmt.Sprintf("network%d", rand.Intn(10)) + beaconImplementation := fmt.Sprintf("implementation%d", rand.Intn(10)) + + beaconBlock := &ExecutionPayloadEnvelope{ + ID: id, + Node: node, + Slot: slot, + Epoch: epoch, + BlockRoot: blockRoot, + FetchedAt: time.Now(), + NodeVersion: nodeVersion, + Location: location, + Network: network, + BeaconImplementation: beaconImplementation, + } + + err = indexer.InsertExecutionPayloadEnvelope(context.Background(), beaconBlock) + if err != nil { + t.Fatal(err) + } + } + + // List execution payload envelopes with random filters + for i := 0; i < 5000; i++ { + var filter ExecutionPayloadEnvelopeFilter + + if rand.Intn(2) == 1 { + filter.AddID(uuid.New().String()) + } + + if rand.Intn(2) == 1 { + filter.AddNode(fmt.Sprintf("node-%d", rand.Intn(100))) + } + + if rand.Intn(2) == 1 { + filter.AddBefore(time.Now()) + } + + if rand.Intn(2) == 1 { + filter.AddAfter(time.Now().Add(-24 * time.Hour)) + } + + if rand.Intn(2) == 1 { + filter.AddSlot(uint64(rand.Intn(1000))) + } + + if rand.Intn(2) == 1 { + filter.AddEpoch(uint64(rand.Intn(100))) + } + + if rand.Intn(2) == 1 { + filter.AddBlockRoot(fmt.Sprintf("blockRoot-%d", rand.Intn(100))) + } + + if rand.Intn(2) == 1 { + filter.AddNodeVersion(fmt.Sprintf("version%d", rand.Intn(10))) + } + + if rand.Intn(2) == 1 { + filter.AddLocation(fmt.Sprintf("location%d", rand.Intn(10))) + } + + if rand.Intn(2) == 1 { + filter.AddNetwork(fmt.Sprintf("network%d", rand.Intn(10))) + } + + if rand.Intn(2) == 1 { + filter.AddBeaconImplementation(fmt.Sprintf("implementation%d", rand.Intn(10))) + } + + beaconBlocks, err := indexer.ListExecutionPayloadEnvelope(context.Background(), &filter, &PaginationCursor{}) + if err != nil { + t.Fatal(err) + } + + for _, beaconBlock := range beaconBlocks { + if filter.ID != nil && *filter.ID != beaconBlock.ID { + t.Fatalf("expected ID %s, got %s", *filter.ID, beaconBlock.ID) + } + + if filter.Node != nil && *filter.Node != beaconBlock.Node { + t.Fatalf("expected Node %s, got %s", *filter.Node, beaconBlock.Node) + } + + if filter.Before != nil && beaconBlock.FetchedAt.After(*filter.Before) { + t.Fatalf("expected FetchedAt before %s, got %s", *filter.Before, beaconBlock.FetchedAt) + } + + if filter.After != nil && beaconBlock.FetchedAt.Before(*filter.After) { + t.Fatalf("expected FetchedAt after %s, got %s", *filter.After, beaconBlock.FetchedAt) + } + + if filter.Slot != nil && *filter.Slot != uint64(beaconBlock.Slot) { + t.Fatalf("expected Slot %d, got %d", *filter.Slot, beaconBlock.Slot) + } + + if filter.Epoch != nil && *filter.Epoch != uint64(beaconBlock.Epoch) { + t.Fatalf("expected Epoch %d, got %d", *filter.Epoch, beaconBlock.Epoch) + } + + if filter.BlockRoot != nil && *filter.BlockRoot != beaconBlock.BlockRoot { + t.Fatalf("expected BlockRoot %s, got %s", *filter.BlockRoot, beaconBlock.BlockRoot) + } + + if filter.NodeVersion != nil && *filter.NodeVersion != beaconBlock.NodeVersion { + t.Fatalf("expected NodeVersion %s, got %s", *filter.NodeVersion, beaconBlock.NodeVersion) + } + + if filter.Location != nil && *filter.Location != beaconBlock.Location { + t.Fatalf("expected Location %s, got %s", *filter.Location, beaconBlock.Location) + } + + if filter.Network != nil && *filter.Network != beaconBlock.Network { + t.Fatalf("expected Network %s, got %s", *filter.Network, beaconBlock.Network) + } + + if filter.BeaconImplementation != nil && *filter.BeaconImplementation != beaconBlock.BeaconImplementation { + t.Fatalf("expected BeaconImplementation %s, got %s", *filter.BeaconImplementation, beaconBlock.BeaconImplementation) + } + } + } + }) +} +func TestExecutionPayloadEnvelopeIndividualFilters(t *testing.T) { + t.Run("By individual attributes", func(t *testing.T) { + indexer, _, err := NewMockIndexer() + if err != nil { + t.Fatal(err) + } + + beaconBlock := generateRandomExecutionPayloadEnvelope() + + err = indexer.InsertExecutionPayloadEnvelope(context.Background(), beaconBlock) + if err != nil { + t.Fatal(err) + } + + slot := uint64(beaconBlock.Slot) + epoch := uint64(beaconBlock.Epoch) + + // Test filters individually + testCases := []struct { + name string + filter ExecutionPayloadEnvelopeFilter + }{ + {"ID", ExecutionPayloadEnvelopeFilter{ID: &beaconBlock.ID}}, + {"Node", ExecutionPayloadEnvelopeFilter{Node: &beaconBlock.Node}}, + {"Slot", ExecutionPayloadEnvelopeFilter{Slot: &slot}}, + {"Epoch", ExecutionPayloadEnvelopeFilter{Epoch: &epoch}}, + {"BlockRoot", ExecutionPayloadEnvelopeFilter{BlockRoot: &beaconBlock.BlockRoot}}, + {"NodeVersion", ExecutionPayloadEnvelopeFilter{NodeVersion: &beaconBlock.NodeVersion}}, + {"Location", ExecutionPayloadEnvelopeFilter{Location: &beaconBlock.Location}}, + {"Network", ExecutionPayloadEnvelopeFilter{Network: &beaconBlock.Network}}, + {"BeaconImplementation", ExecutionPayloadEnvelopeFilter{BeaconImplementation: &beaconBlock.BeaconImplementation}}, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + beaconBlocks, err := indexer.ListExecutionPayloadEnvelope(context.Background(), &tc.filter, &PaginationCursor{}) + if err != nil { + t.Fatal(err) + } + + if len(beaconBlocks) != 1 { + t.Fatalf("expected 1 execution payload envelope, got %d", len(beaconBlocks)) + } + + if beaconBlocks[0].ID != beaconBlock.ID { + t.Fatalf("expected ID %s, got %s", beaconBlock.ID, beaconBlocks[0].ID) + } + }) + } + }) +} diff --git a/pkg/server/persistence/operation.go b/pkg/server/persistence/operation.go index 1f9c27a..cff6062 100644 --- a/pkg/server/persistence/operation.go +++ b/pkg/server/persistence/operation.go @@ -17,6 +17,12 @@ const ( OperationListBeaconBlock Operation = "list_beacon_block_metadata" OperationUpdateBeaconBlock Operation = "update_beacon_block_metadata" + OperationInsertExecutionPayloadEnvelope Operation = "insert_execution_payload_envelope_metadata" + OperationDeleteExecutionPayloadEnvelope Operation = "delete_execution_payload_envelope_metadata" + OperationCountExecutionPayloadEnvelope Operation = "count_execution_payload_envelope_metadata" + OperationListExecutionPayloadEnvelope Operation = "list_execution_payload_envelope_metadata" + OperationUpdateExecutionPayloadEnvelope Operation = "update_execution_payload_envelope_metadata" + OperationInsertBeaconBadBlock Operation = "insert_beacon_bad_block_metadata" OperationDeleteBeaconBadBlock Operation = "delete_beacon_bad_block_metadata" OperationCountBeaconBadBlock Operation = "count_beacon_bad_block_metadata" diff --git a/pkg/server/service/api/api.go b/pkg/server/service/api/api.go index ee91bb5..b61a652 100644 --- a/pkg/server/service/api/api.go +++ b/pkg/server/service/api/api.go @@ -366,6 +366,139 @@ func (i *API) ListUniqueBeaconBlockValues(ctx context.Context, req *api.ListUniq return response, nil } +func (i *API) ListExecutionPayloadEnvelope(ctx context.Context, req *api.ListExecutionPayloadEnvelopeRequest) (*api.ListExecutionPayloadEnvelopeResponse, error) { + pagination := &indexer.PaginationCursor{ + Limit: 100, + Offset: 0, + OrderBy: "fetched_at DESC", + } + + if req.Pagination != nil { + pagination = &indexer.PaginationCursor{ + Limit: req.Pagination.Limit, + Offset: req.Pagination.Offset, + OrderBy: req.Pagination.OrderBy, + } + } + + rq := &indexer.ListExecutionPayloadEnvelopeRequest{ + Id: req.Id, + Node: req.Node, + Slot: req.Slot, + Epoch: req.Epoch, + BlockRoot: req.BlockRoot, + NodeVersion: req.NodeVersion, + Network: req.Network, + Before: req.Before, + After: req.After, + BeaconImplementation: req.BeaconImplementation, + + Pagination: pagination, + } + + resp, err := i.indexer.ListExecutionPayloadEnvelope(ctx, rq) + if err != nil { + return nil, status.Error(codes.Internal, fmt.Errorf("failed to list execution payload envelopes: %w", err).Error()) + } + + protoEnvelopes := make([]*api.ExecutionPayloadEnvelope, len(resp.ExecutionPayloadEnvelopes)) + for i, envelope := range resp.ExecutionPayloadEnvelopes { + protoEnvelopes[i] = &api.ExecutionPayloadEnvelope{ + Id: envelope.Id, + Node: envelope.Node, + Slot: envelope.Slot, + Epoch: envelope.Epoch, + BlockRoot: envelope.BlockRoot, + NodeVersion: envelope.NodeVersion, + Network: envelope.Network, + FetchedAt: envelope.FetchedAt, + BeaconImplementation: envelope.BeaconImplementation, + } + } + + return &api.ListExecutionPayloadEnvelopeResponse{ + ExecutionPayloadEnvelopes: protoEnvelopes, + }, nil +} + +func (i *API) CountExecutionPayloadEnvelope(ctx context.Context, req *api.CountExecutionPayloadEnvelopeRequest) (*api.CountExecutionPayloadEnvelopeResponse, error) { + rq := &indexer.CountExecutionPayloadEnvelopeRequest{ + Node: req.Node, + Slot: req.Slot, + Epoch: req.Epoch, + BlockRoot: req.BlockRoot, + NodeVersion: req.NodeVersion, + Network: req.Network, + BeaconImplementation: req.BeaconImplementation, + Before: req.Before, + After: req.After, + } + + resp, err := i.indexer.CountExecutionPayloadEnvelope(ctx, rq) + if err != nil { + return nil, status.Error(codes.Internal, fmt.Errorf("failed to count execution payload envelopes: %w", err).Error()) + } + + return &api.CountExecutionPayloadEnvelopeResponse{ + Count: wrapperspb.UInt64(resp.GetCount().GetValue()), + }, nil +} + +func (i *API) ListUniqueExecutionPayloadEnvelopeValues(ctx context.Context, req *api.ListUniqueExecutionPayloadEnvelopeValuesRequest) (*api.ListUniqueExecutionPayloadEnvelopeValuesResponse, error) { + if err := req.Validate(); err != nil { + return nil, status.Error(codes.InvalidArgument, fmt.Errorf("invalid request: %w", err).Error()) + } + + // Create our "indexer" equivalent structs + rq := indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest{ + Fields: []indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_Field{}, + } + + for _, field := range req.Fields { + var f indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_Field + + switch field { + case api.ListUniqueExecutionPayloadEnvelopeValuesRequest_node: + f = indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_NODE + case api.ListUniqueExecutionPayloadEnvelopeValuesRequest_node_version: + f = indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_NODE_VERSION + case api.ListUniqueExecutionPayloadEnvelopeValuesRequest_network: + f = indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_NETWORK + case api.ListUniqueExecutionPayloadEnvelopeValuesRequest_slot: + f = indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_SLOT + case api.ListUniqueExecutionPayloadEnvelopeValuesRequest_epoch: + f = indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_EPOCH + case api.ListUniqueExecutionPayloadEnvelopeValuesRequest_block_root: + f = indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_BLOCK_ROOT + case api.ListUniqueExecutionPayloadEnvelopeValuesRequest_beacon_implementation: + f = indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_BEACON_IMPLEMENTATION + default: + return nil, status.Error(codes.InvalidArgument, fmt.Errorf("invalid field: %s", field.String()).Error()) + } + + rq.Fields = append(rq.Fields, f) + } + + // Call the indexer + resp, err := i.indexer.ListUniqueExecutionPayloadEnvelopeValues(ctx, &rq) + if err != nil { + return nil, status.Error(codes.Internal, fmt.Errorf("failed to list unique execution payload envelope values: %w", err).Error()) + } + + // Convert the response + response := &api.ListUniqueExecutionPayloadEnvelopeValuesResponse{ + Node: resp.Node, + Slot: resp.Slot, + Epoch: resp.Epoch, + BlockRoot: resp.BlockRoot, + NodeVersion: resp.NodeVersion, + Network: resp.Network, + BeaconImplementation: resp.BeaconImplementation, + } + + return response, nil +} + func (i *API) ListBeaconBadBlock(ctx context.Context, req *api.ListBeaconBadBlockRequest) (*api.ListBeaconBadBlockResponse, error) { pagination := &indexer.PaginationCursor{ Limit: 100, diff --git a/pkg/server/service/indexer/config.go b/pkg/server/service/indexer/config.go index abd993b..5d5835d 100644 --- a/pkg/server/service/indexer/config.go +++ b/pkg/server/service/indexer/config.go @@ -3,12 +3,13 @@ package indexer import "github.com/ethpandaops/beacon/pkg/human" type RetentionConfig struct { - BeaconStates human.Duration `yaml:"beaconStates" default:"30m"` - BeaconBlocks human.Duration `yaml:"beaconBlocks" default:"30m"` - BeaconBadBlocks human.Duration `yaml:"beaconBadBlocks" default:"312480m"` // 6 months - BeaconBadBlobs human.Duration `yaml:"beaconBadBlobs" default:"312480m"` // 6 months - ExecutionBlockTraces human.Duration `yaml:"executionBlockTraces" default:"30m"` - ExecutionBadBlocks human.Duration `yaml:"executionBadBlocks" default:"312480m"` // 6 months + BeaconStates human.Duration `yaml:"beaconStates" default:"30m"` + BeaconBlocks human.Duration `yaml:"beaconBlocks" default:"30m"` + ExecutionPayloadEnvelopes human.Duration `yaml:"executionPayloadEnvelopes" default:"30m"` + BeaconBadBlocks human.Duration `yaml:"beaconBadBlocks" default:"312480m"` // 6 months + BeaconBadBlobs human.Duration `yaml:"beaconBadBlobs" default:"312480m"` // 6 months + ExecutionBlockTraces human.Duration `yaml:"executionBlockTraces" default:"30m"` + ExecutionBadBlocks human.Duration `yaml:"executionBadBlocks" default:"312480m"` // 6 months } type Config struct { diff --git a/pkg/server/service/indexer/convert.go b/pkg/server/service/indexer/convert.go index 27eb27b..bf21527 100644 --- a/pkg/server/service/indexer/convert.go +++ b/pkg/server/service/indexer/convert.go @@ -81,6 +81,42 @@ func DBBeaconBlockToProtoBeaconBlock(bs *persistence.BeaconBlock) *indexer.Beaco } } +func ProtoExecutionPayloadEnvelopeToDBExecutionPayloadEnvelope(bs *indexer.ExecutionPayloadEnvelope) *persistence.ExecutionPayloadEnvelope { + return &persistence.ExecutionPayloadEnvelope{ + ID: bs.GetId().GetValue(), + Node: bs.GetNode().GetValue(), + //nolint:gosec // not worried about int64 overflow here + Slot: int64(bs.GetSlot().GetValue()), + //nolint:gosec // not worried about int64 overflow here + Epoch: int64(bs.GetEpoch().GetValue()), + BlockRoot: bs.GetBlockRoot().GetValue(), + FetchedAt: bs.GetFetchedAt().AsTime(), + NodeVersion: bs.GetNodeVersion().GetValue(), + Location: bs.GetLocation().GetValue(), + ContentEncoding: bs.GetContentEncoding().GetValue(), + Network: bs.GetNetwork().GetValue(), + BeaconImplementation: bs.GetBeaconImplementation().GetValue(), + } +} + +func DBExecutionPayloadEnvelopeToProtoExecutionPayloadEnvelope(bs *persistence.ExecutionPayloadEnvelope) *indexer.ExecutionPayloadEnvelope { + return &indexer.ExecutionPayloadEnvelope{ + Id: &wrapperspb.StringValue{Value: bs.ID}, + Node: &wrapperspb.StringValue{Value: bs.Node}, + //nolint:gosec // not worried about int64 overflow here + Slot: &wrapperspb.UInt64Value{Value: uint64(bs.Slot)}, + //nolint:gosec // not worried about int64 overflow here + Epoch: &wrapperspb.UInt64Value{Value: uint64(bs.Epoch)}, + BlockRoot: &wrapperspb.StringValue{Value: bs.BlockRoot}, + FetchedAt: timestamppb.New(bs.FetchedAt), + NodeVersion: &wrapperspb.StringValue{Value: bs.NodeVersion}, + Location: &wrapperspb.StringValue{Value: bs.Location}, + Network: &wrapperspb.StringValue{Value: bs.Network}, + ContentEncoding: &wrapperspb.StringValue{Value: bs.ContentEncoding}, + BeaconImplementation: &wrapperspb.StringValue{Value: bs.BeaconImplementation}, + } +} + func ProtoBeaconBadBlockToDBBeaconBadBlock(bs *indexer.BeaconBadBlock) *persistence.BeaconBadBlock { return &persistence.BeaconBadBlock{ ID: bs.GetId().GetValue(), diff --git a/pkg/server/service/indexer/execution_payload_envelope_test.go b/pkg/server/service/indexer/execution_payload_envelope_test.go new file mode 100644 index 0000000..3bdb082 --- /dev/null +++ b/pkg/server/service/indexer/execution_payload_envelope_test.go @@ -0,0 +1,405 @@ +//nolint:gocyclo // Only used in tests +package indexer + +import ( + "context" + "io" + "net/http" + "testing" + "time" + + "github.com/ethpandaops/tracoor/pkg/compression" + pindexer "github.com/ethpandaops/tracoor/pkg/proto/tracoor/indexer" + "github.com/ethpandaops/tracoor/pkg/store" + "google.golang.org/protobuf/types/known/timestamppb" + "google.golang.org/protobuf/types/known/wrapperspb" +) + +func createRandomExecutionPayloadEnvelopeRequest() *pindexer.CreateExecutionPayloadEnvelopeRequest { + return &pindexer.CreateExecutionPayloadEnvelopeRequest{ + Node: wrapperspb.String(generateRandomString(5)), + Slot: wrapperspb.UInt64(uint64(generateRandomInt64())), + Epoch: wrapperspb.UInt64(uint64(generateRandomInt64())), + BlockRoot: wrapperspb.String(generateRandomString(32)), + FetchedAt: timestamppb.Now(), + BeaconImplementation: wrapperspb.String(generateRandomString(15)), + NodeVersion: wrapperspb.String(generateRandomString(8)), + Location: wrapperspb.String(generateRandomString(10)), + Network: wrapperspb.String(generateRandomString(5)), + } +} + +func TestIndexerExecutionPayloadEnvelopeCount(t *testing.T) { + ctx := context.Background() + config := Config{} + + index, cleanup, err := NewMockIndexer(ctx, &config) + if err != nil { + t.Fatalf("failed to create indexer: %v", err) + } + + defer func() { + if err := cleanup(); err != nil { + t.Fatalf("failed to cleanup: %v", err) + } + }() + + t.Run("Counting", func(t *testing.T) { + _, err := index.CreateExecutionPayloadEnvelope(ctx, createRandomExecutionPayloadEnvelopeRequest()) + if err != nil { + t.Fatalf("failed to create beacon state: %v", err) + } + + rsp, err := index.CountExecutionPayloadEnvelope(ctx, &pindexer.CountExecutionPayloadEnvelopeRequest{}) + if err != nil { + t.Fatalf("failed to count beacon state: %v", err) + } + + if rsp.Count.Value != uint64(1) { + t.Fatalf("expected 1 beacon state, got %d", rsp.Count.Value) + } + }) +} + +func TestIndexerExecutionPayloadEnvelopeDownloading(t *testing.T) { + ctx := context.Background() + config := Config{} + + index, cleanup, err := NewMockIndexer(ctx, &config) + if err != nil { + t.Fatalf("failed to create indexer: %v", err) + } + + defer func() { + if err := cleanup(); err != nil { + t.Fatalf("failed to cleanup: %v", err) + } + }() + + t.Run("Downloading", func(t *testing.T) { + data := []byte("{\"key\": \"value\"}") + + compressor := compression.NewCompressor() + + compressedData, err := compressor.Compress(&data, compression.Gzip) + if err != nil { + t.Fatalf("failed to compress data: %v", err) + } + + location, err := index.Store().SaveExecutionPayloadEnvelope(ctx, &store.SaveParams{ + Data: &compressedData, + Location: "data.json", + ContentEncoding: compression.Gzip.ContentEncoding, + }) + if err != nil { + t.Fatalf("failed to save beacon state: %v", err) + } + + req := createRandomExecutionPayloadEnvelopeRequest() + req.Location = wrapperspb.String(location) + + resp, err := index.CreateExecutionPayloadEnvelope(ctx, req) + if err != nil { + t.Fatalf("failed to create beacon state: %v", err) + } + + // List it + rsp, err := index.ListExecutionPayloadEnvelope(ctx, &pindexer.ListExecutionPayloadEnvelopeRequest{Id: resp.Id.Value}) + if err != nil { + t.Fatalf("failed to get beacon state: %v", err) + } + + url, err := index.Store().GetExecutionPayloadEnvelopeURL(ctx, &store.GetURLParams{ + Location: rsp.ExecutionPayloadEnvelopes[0].Location.GetValue(), + Expiry: 60, + ContentEncoding: rsp.ExecutionPayloadEnvelopes[0].ContentEncoding.GetValue(), + }) + if err != nil { + t.Fatalf("failed to get beacon state URL: %v", err) + } + + if url == "" { + t.Fatalf("expected URL to not be empty") + } + + // Download it via http + if resp, err := http.Get(url); err != nil { + t.Fatalf("failed to download beacon state: %v", err) + } else { + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + t.Fatalf("expected status code to be 200, got %d", resp.StatusCode) + } + + // Check the body contents + body, err := io.ReadAll(resp.Body) + if err != nil { + t.Fatalf("failed to read response body: %v", err) + } + + if len(body) == 0 { + t.Fatalf("expected body to not be empty") + } + } + }) +} + +func TestIndexerExecutionPayloadEnvelope(t *testing.T) { + ctx := context.Background() + config := Config{} + + index, cleanup, err := NewMockIndexer(ctx, &config) + if err != nil { + t.Fatalf("failed to create indexer: %v", err) + } + + defer func() { + if err := cleanup(); err != nil { + t.Fatalf("failed to cleanup: %v", err) + } + }() + + t.Run("Creating", func(t *testing.T) { + _, err := index.CreateExecutionPayloadEnvelope(ctx, createRandomExecutionPayloadEnvelopeRequest()) + if err != nil { + t.Fatalf("failed to create beacon state: %v", err) + } + }) + + t.Run("Creating returns a valid ID", func(t *testing.T) { + rsp, err := index.CreateExecutionPayloadEnvelope(ctx, createRandomExecutionPayloadEnvelopeRequest()) + if err != nil { + t.Fatalf("failed to create beacon state: %v", err) + } + + if rsp.Id == nil { + t.Fatalf("expected ID to not be empty") + } + }) + + t.Run("Handles duplicates", func(t *testing.T) { + req := createRandomExecutionPayloadEnvelopeRequest() + + rsp, err := index.CreateExecutionPayloadEnvelope(ctx, req) + if err != nil { + t.Fatalf("failed to create beacon state: %v", err) + } + + if rsp.Id == nil { + t.Fatalf("expected ID to not be empty") + } + + _, err = index.CreateExecutionPayloadEnvelope(ctx, req) + if err != nil && err.Error() != beaconStateExistsStr { + t.Fatal("expected error to be 'beacon state already exists'") + } + }) + + t.Run("Basic Listing", func(t *testing.T) { + req := createRandomExecutionPayloadEnvelopeRequest() + + resp, err := index.CreateExecutionPayloadEnvelope(ctx, req) + if err != nil { + t.Fatalf("failed to create beacon state: %v", err) + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, &pindexer.ListExecutionPayloadEnvelopeRequest{Id: resp.Id.Value}) + if err != nil { + t.Fatalf("failed to get beacon state: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) != 1 { + t.Fatalf("expected 1 beacon state, got %d", len(rsp.ExecutionPayloadEnvelopes)) + } + }) + + t.Run("Can list by filters", func(t *testing.T) { + req := createRandomExecutionPayloadEnvelopeRequest() + + resp, err := index.CreateExecutionPayloadEnvelope(ctx, req) + if err != nil { + t.Fatalf("failed to create beacon state: %v", err) + } + + t.Run("by Node", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + Node: req.Node.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by node: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by node") + } + }) + + t.Run("by Slot", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + Slot: req.Slot.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by slot: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by slot") + } + }) + + t.Run("by Epoch", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + Epoch: req.Epoch.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by epoch: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by epoch") + } + }) + + t.Run("by BlockRoot", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + BlockRoot: req.BlockRoot.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by state root: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by state root") + } + }) + + t.Run("by Network", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + Network: req.Network.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by network: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by network") + } + }) + + t.Run("by BeaconImplementation", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + BeaconImplementation: req.BeaconImplementation.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by beacon implementation: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by beacon implementation") + } + }) + + t.Run("by NodeVersion", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + NodeVersion: req.NodeVersion.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by node version: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by node version") + } + }) + + t.Run("by Location", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + Location: req.Location.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by location: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by location") + } + }) + + t.Run("by Before", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + Before: timestamppb.New(req.FetchedAt.AsTime().Add(time.Minute)), + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by fetched at: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by fetched at") + } + }) + + t.Run("by After", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + After: timestamppb.New(req.FetchedAt.AsTime().Add(-time.Minute)), + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by fetched at: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by fetched at") + } + }) + + t.Run("by ID", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + Id: resp.Id.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by ID: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by ID") + } + }) + + t.Run("by BlockRoot", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + BlockRoot: req.BlockRoot.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by state root: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by state root") + } + }) + }) +} diff --git a/pkg/server/service/indexer/indexer.go b/pkg/server/service/indexer/indexer.go index 108e876..5086ef5 100644 --- a/pkg/server/service/indexer/indexer.go +++ b/pkg/server/service/indexer/indexer.go @@ -3,7 +3,7 @@ package indexer import ( "context" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/ethpandaops/tracoor/pkg/proto/tracoor/indexer" "github.com/ethpandaops/tracoor/pkg/server/ethereum" "github.com/ethpandaops/tracoor/pkg/server/persistence" @@ -684,6 +684,264 @@ func (i *Indexer) ListUniqueBeaconBlockValues(ctx context.Context, req *indexer. return response, nil } +func (i *Indexer) CreateExecutionPayloadEnvelope(ctx context.Context, req *indexer.CreateExecutionPayloadEnvelopeRequest) (*indexer.CreateExecutionPayloadEnvelopeResponse, error) { + if err := req.Validate(); err != nil { + return nil, status.Error(codes.InvalidArgument, err.Error()) + } + + // Check the store for the envelope + exists, err := i.store.Exists(ctx, req.GetLocation().GetValue()) + if err != nil { + i.log. + WithError(err). + WithField(KeyLocation, req.GetLocation().GetValue()). + WithField(KeyNode, req.GetNode().GetValue()). + Error("Failed to index an execution payload envelope because it could not be found in the store. Check that the agent and server are pointed at the same storage backend.") + + return nil, status.Error(codes.Internal, err.Error()) + } + + if exists { + // Check if the envelope is already indexed + filter := &persistence.ExecutionPayloadEnvelopeFilter{} + + filter.AddNetwork(req.GetNetwork().GetValue()) + filter.AddSlot(req.GetSlot().GetValue()) + filter.AddBlockRoot(req.GetBlockRoot().GetValue()) + filter.AddNode(req.GetNode().GetValue()) + + existing, err := i.db.ListExecutionPayloadEnvelope(ctx, filter, &persistence.PaginationCursor{Limit: 1, Offset: 0}) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + if len(existing) > 0 { + return nil, status.Error(codes.AlreadyExists, "execution payload envelope already indexed") + } + } + + // Create the envelope + envelope := &indexer.ExecutionPayloadEnvelope{ + Id: wrapperspb.String(uuid.New().String()), + Node: req.GetNode(), + Network: req.GetNetwork(), + Slot: req.GetSlot(), + Epoch: req.GetEpoch(), + BlockRoot: req.GetBlockRoot(), + NodeVersion: req.GetNodeVersion(), + ContentEncoding: req.GetContentEncoding(), + Location: req.GetLocation(), + FetchedAt: req.GetFetchedAt(), + BeaconImplementation: req.GetBeaconImplementation(), + } + + if err := envelope.Validate(); err != nil { + return nil, status.Error(codes.InvalidArgument, err.Error()) + } + + logFields := logrus.Fields{ + KeyNode: req.GetNode().GetValue(), + KeyNetwork: req.GetNetwork().GetValue(), + KeySlot: req.GetSlot().GetValue(), + KeyEpoch: req.GetEpoch().GetValue(), + KeyBlockRoot: req.GetBlockRoot().GetValue(), + KeyNodeVersion: req.GetNodeVersion().GetValue(), + KeyContentEncoding: req.GetContentEncoding().GetValue(), + KeyLocation: req.GetLocation().GetValue(), + KeyFetchedAt: req.GetFetchedAt().AsTime(), + KeyBeaconImplementation: req.GetBeaconImplementation().GetValue(), + } + + if err := i.db.InsertExecutionPayloadEnvelope(ctx, ProtoExecutionPayloadEnvelopeToDBExecutionPayloadEnvelope(envelope)); err != nil { + i.log.WithError(err).WithFields(logFields).Error("Failed to index execution payload envelope") + + return nil, status.Error(codes.Internal, "failed to index execution payload envelope") + } + + i.log.WithFields(logFields).WithField("id", envelope.GetId().GetValue()).Debug("Indexed execution payload envelope") + + return &indexer.CreateExecutionPayloadEnvelopeResponse{ + Id: envelope.GetId(), + }, nil +} + +func (i *Indexer) ListExecutionPayloadEnvelope(ctx context.Context, req *indexer.ListExecutionPayloadEnvelopeRequest) (*indexer.ListExecutionPayloadEnvelopeResponse, error) { + filter := &persistence.ExecutionPayloadEnvelopeFilter{} + + if req.Id != "" { + filter.AddID(req.Id) + } + + if req.Node != "" { + filter.AddNode(req.Node) + } + + if req.Slot != 0 { + filter.AddSlot(req.Slot) + } + + if req.Epoch != 0 { + filter.AddEpoch(req.Epoch) + } + + if req.BlockRoot != "" { + filter.AddBlockRoot(req.BlockRoot) + } + + if req.NodeVersion != "" { + filter.AddNodeVersion(req.NodeVersion) + } + + if req.Location != "" { + filter.AddLocation(req.Location) + } + + if req.Network != "" { + filter.AddNetwork(req.Network) + } + + if req.Before != nil { + filter.AddBefore(req.Before.AsTime()) + } + + if req.After != nil { + filter.AddAfter(req.After.AsTime()) + } + + if req.BeaconImplementation != "" { + filter.AddBeaconImplementation(req.BeaconImplementation) + } + + pagination := &persistence.PaginationCursor{ + Limit: 1000, + Offset: 0, + OrderBy: "fetched_at DESC", + } + + if req.Pagination != nil { + pagination = ProtoPaginationCursorToDBPaginationCursor(req.Pagination) + } + + envelopes, err := i.db.ListExecutionPayloadEnvelope(ctx, filter, pagination) + if err != nil { + return nil, err + } + + protoEnvelopes := make([]*indexer.ExecutionPayloadEnvelope, len(envelopes)) + for i, envelope := range envelopes { + protoEnvelopes[i] = DBExecutionPayloadEnvelopeToProtoExecutionPayloadEnvelope(envelope) + } + + return &indexer.ListExecutionPayloadEnvelopeResponse{ + ExecutionPayloadEnvelopes: protoEnvelopes, + }, nil +} + +func (i *Indexer) CountExecutionPayloadEnvelope(ctx context.Context, req *indexer.CountExecutionPayloadEnvelopeRequest) (*indexer.CountExecutionPayloadEnvelopeResponse, error) { + filter := &persistence.ExecutionPayloadEnvelopeFilter{} + + if req.Id != "" { + filter.AddID(req.Id) + } + + if req.Node != "" { + filter.AddNode(req.Node) + } + + if req.Slot != 0 { + filter.AddSlot(req.Slot) + } + + if req.Epoch != 0 { + filter.AddEpoch(req.Epoch) + } + + if req.BlockRoot != "" { + filter.AddBlockRoot(req.BlockRoot) + } + + if req.NodeVersion != "" { + filter.AddNodeVersion(req.NodeVersion) + } + + if req.Location != "" { + filter.AddLocation(req.Location) + } + + if req.Network != "" { + filter.AddNetwork(req.Network) + } + + if req.Before != nil { + filter.AddBefore(req.Before.AsTime()) + } + + if req.After != nil { + filter.AddAfter(req.After.AsTime()) + } + + if req.BeaconImplementation != "" { + filter.AddBeaconImplementation(req.BeaconImplementation) + } + + envelopes, err := i.db.CountExecutionPayloadEnvelope(ctx, filter) + if err != nil { + return nil, err + } + + return &indexer.CountExecutionPayloadEnvelopeResponse{ + //nolint:gosec // not worried about int64 overflow here + Count: wrapperspb.UInt64(uint64(envelopes)), + }, nil +} + +func (i *Indexer) ListUniqueExecutionPayloadEnvelopeValues(ctx context.Context, req *indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest) (*indexer.ListUniqueExecutionPayloadEnvelopeValuesResponse, error) { + if err := req.Validate(); err != nil { + return nil, err + } + + fields := make([]string, len(req.Fields)) + + for idx, field := range req.Fields { + switch field { + case indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_NODE: + fields[idx] = KeyNode + case indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_SLOT: + fields[idx] = KeySlot + case indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_EPOCH: + fields[idx] = KeyEpoch + case indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_BLOCK_ROOT: + fields[idx] = KeyBlockRoot + case indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_NODE_VERSION: + fields[idx] = KeyNodeVersion + case indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_LOCATION: + fields[idx] = KeyLocation + case indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_NETWORK: + fields[idx] = KeyNetwork + case indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_BEACON_IMPLEMENTATION: + fields[idx] = KeyBeaconImplementation + } + } + + distinctValues, err := i.db.DistinctExecutionPayloadEnvelopeValues(ctx, fields) + if err != nil { + return nil, err + } + + response := &indexer.ListUniqueExecutionPayloadEnvelopeValuesResponse{ + Node: distinctValues.Node, + Slot: distinctValues.Slot, + Epoch: distinctValues.Epoch, + BlockRoot: distinctValues.BlockRoot, + NodeVersion: distinctValues.NodeVersion, + Location: distinctValues.Location, + Network: distinctValues.Network, + BeaconImplementation: distinctValues.BeaconImplementation, + } + + return response, nil +} + func (i *Indexer) CreateBeaconBadBlock(ctx context.Context, req *indexer.CreateBeaconBadBlockRequest) (*indexer.CreateBeaconBadBlockResponse, error) { if err := req.Validate(); err != nil { return nil, status.Error(codes.InvalidArgument, err.Error()) diff --git a/pkg/server/service/indexer/permanent_store.go b/pkg/server/service/indexer/permanent_store.go index e6d9814..72e898e 100644 --- a/pkg/server/service/indexer/permanent_store.go +++ b/pkg/server/service/indexer/permanent_store.go @@ -6,7 +6,7 @@ import ( "path/filepath" "time" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" lru "github.com/hashicorp/golang-lru/v2" "github.com/sirupsen/logrus" diff --git a/pkg/server/service/indexer/retention.go b/pkg/server/service/indexer/retention.go index a2ac489..81626d2 100644 --- a/pkg/server/service/indexer/retention.go +++ b/pkg/server/service/indexer/retention.go @@ -5,7 +5,7 @@ import ( "errors" "time" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/ethpandaops/tracoor/pkg/server/persistence" "github.com/ethpandaops/tracoor/pkg/store" "github.com/sirupsen/logrus" @@ -13,12 +13,13 @@ import ( func (i *Indexer) startRetentionWatchers(ctx context.Context) { i.log.WithFields(logrus.Fields{ - "beacon_state": i.config.Retention.BeaconStates.Duration, - "beacon_block": i.config.Retention.BeaconBlocks.Duration, - "beacon_bad_block": i.config.Retention.BeaconBadBlocks.Duration, - "beacon_bad_blob": i.config.Retention.BeaconBadBlobs.Duration, - "execution_block_trace": i.config.Retention.ExecutionBlockTraces.Duration, - "execution_bad_block": i.config.Retention.ExecutionBadBlocks.Duration, + "beacon_state": i.config.Retention.BeaconStates.Duration, + "beacon_block": i.config.Retention.BeaconBlocks.Duration, + "execution_payload_envelope": i.config.Retention.ExecutionPayloadEnvelopes.Duration, + "beacon_bad_block": i.config.Retention.BeaconBadBlocks.Duration, + "beacon_bad_blob": i.config.Retention.BeaconBadBlobs.Duration, + "execution_block_trace": i.config.Retention.ExecutionBlockTraces.Duration, + "execution_bad_block": i.config.Retention.ExecutionBadBlocks.Duration, }).Info("Starting retention watcher") for { @@ -30,6 +31,10 @@ func (i *Indexer) startRetentionWatchers(ctx context.Context) { i.log.WithError(err).Error("Failed to delete old beacon blocks") } + if err := i.purgeOldExecutionPayloadEnvelopes(ctx); err != nil { + i.log.WithError(err).Error("Failed to delete old execution payload envelopes") + } + if err := i.purgeOldBeaconBadBlocks(ctx); err != nil { i.log.WithError(err).Error("Failed to delete old beacon bad blocks") } @@ -161,6 +166,52 @@ func (i *Indexer) purgeOldBeaconBlocks(ctx context.Context) error { return nil } +func (i *Indexer) purgeOldExecutionPayloadEnvelopes(ctx context.Context) error { + before := time.Now().Add(-i.config.Retention.ExecutionPayloadEnvelopes.Duration) + + filter := &persistence.ExecutionPayloadEnvelopeFilter{ + Before: &before, + } + + envelopes, err := i.db.ListExecutionPayloadEnvelope(ctx, filter, &persistence.PaginationCursor{Limit: 10000, Offset: 0, OrderBy: "fetched_at ASC"}) + if err != nil { + return err + } + + i.log.WithField("before", before).Debugf("Purging %d old execution payload envelopes", len(envelopes)) + + for _, envelope := range envelopes { + // Delete from the store first + if err := i.store.DeleteExecutionPayloadEnvelope(ctx, envelope.Location); err != nil { + if errors.Is(err, store.ErrNotFound) { + i.log.WithField("envelope_id", envelope.ID).Warn("Execution payload envelope not found in store") + } else { + i.log.WithError(err).WithField("envelope_id", envelope.ID).Error("Failed to delete execution payload envelope from store, will retry next time") + + continue + } + } + + err := i.db.DeleteExecutionPayloadEnvelope(ctx, envelope.ID) + if err != nil { + i.log.WithError(err).WithField("envelope_id", envelope.ID).Error("Failed to delete execution payload envelope") + + continue + } + + i.log.WithFields( + logrus.Fields{ + "node": envelope.Node, + "network": envelope.Network, + "slot": envelope.Slot, + "id": envelope.ID, + }, + ).Debug("Deleted execution payload envelope") + } + + return nil +} + func (i *Indexer) purgeOldBeaconBadBlocks(ctx context.Context) error { before := time.Now().Add(-i.config.Retention.BeaconBadBlocks.Duration) diff --git a/pkg/store/fs.go b/pkg/store/fs.go index b235915..2e087df 100644 --- a/pkg/store/fs.go +++ b/pkg/store/fs.go @@ -156,6 +156,34 @@ func (s *FSStore) DeleteBeaconBlock(ctx context.Context, location string) error return s.removeFile(path) } +func (s *FSStore) SaveExecutionPayloadEnvelope(ctx context.Context, params *SaveParams) (string, error) { + parts := strings.Split(params.Location, "/") + + path := filepath.Join(s.basePath, filepath.Join(parts...)) + if err := s.saveFile(params.Data, path); err != nil { + return "", err + } + + return params.Location, nil +} + +func (s *FSStore) GetExecutionPayloadEnvelope(ctx context.Context, location string) (*[]byte, error) { + parts := strings.Split(location, "/") + + return s.getFile(filepath.Join(s.basePath, filepath.Join(parts...))) +} + +func (s *FSStore) GetExecutionPayloadEnvelopeURL(ctx context.Context, params *GetURLParams) (string, error) { + return "", errors.New("not supported") +} + +func (s *FSStore) DeleteExecutionPayloadEnvelope(ctx context.Context, location string) error { + parts := strings.Split(location, "/") + path := filepath.Join(s.basePath, filepath.Join(parts...)) + + return s.removeFile(path) +} + func (s *FSStore) SaveBeaconBadBlock(ctx context.Context, params *SaveParams) (string, error) { parts := strings.Split(params.Location, "/") diff --git a/pkg/store/fs_test.go b/pkg/store/fs_test.go index 0c39082..f0a7313 100644 --- a/pkg/store/fs_test.go +++ b/pkg/store/fs_test.go @@ -11,8 +11,9 @@ import ( ) const ( - locationBadBeaconBlock = "beacon_bad_block/location.json" - locationBeaconBlock = "beacon_block/location.json" + locationBadBeaconBlock = "beacon_bad_block/location.json" + locationBeaconBlock = "beacon_block/location.json" + locationExecutionPayloadEnvelope = "execution_payload_envelope/location.json" ) func TestFSStoreOperations(t *testing.T) { @@ -94,6 +95,37 @@ func TestFSStoreOperations(t *testing.T) { require.False(t, exists) }) + t.Run("SaveExecutionPayloadEnvelope", func(t *testing.T) { + location := locationExecutionPayloadEnvelope + data := []byte(`{"block": "data"}`) + _, err := fsStore.SaveExecutionPayloadEnvelope(ctx, &store.SaveParams{ + Data: &data, + Location: location, + }) + require.NoError(t, err) + + savedData, err := fsStore.GetExecutionPayloadEnvelope(ctx, location) + require.NoError(t, err) + require.Equal(t, data, *savedData) + }) + + t.Run("DeleteExecutionPayloadEnvelope", func(t *testing.T) { + location := locationExecutionPayloadEnvelope + data := []byte(`{"block": "data"}`) + _, err := fsStore.SaveExecutionPayloadEnvelope(ctx, &store.SaveParams{ + Data: &data, + Location: location, + }) + require.NoError(t, err) + + err = fsStore.DeleteExecutionPayloadEnvelope(ctx, location) + require.NoError(t, err) + + exists, err := fsStore.Exists(ctx, location) + require.NoError(t, err) + require.False(t, exists) + }) + t.Run("SaveBeaconBadBlock", func(t *testing.T) { location := locationBadBeaconBlock data := []byte(`{"bad_block": "data"}`) diff --git a/pkg/store/s3.go b/pkg/store/s3.go index 6973df5..35513d4 100644 --- a/pkg/store/s3.go +++ b/pkg/store/s3.go @@ -432,6 +432,92 @@ func (s *S3Store) DeleteBeaconBlock(ctx context.Context, location string) error return err } +func (s *S3Store) SaveExecutionPayloadEnvelope(ctx context.Context, params *SaveParams) (string, error) { + if params.Data == nil { + return "", errors.New("data is nil") + } + + input := &s3.PutObjectInput{ + Bucket: aws.String(s.config.BucketName), + Key: aws.String(params.Location), + Body: bytes.NewBuffer(*params.Data), + } + + if params.ContentEncoding != "" { + input.ContentEncoding = aws.String(params.ContentEncoding) + } + + _, err := s.s3Client.PutObject(ctx, input, s3.WithAPIOptions(v4.SwapComputePayloadSHA256ForUnsignedPayloadMiddleware)) + if err != nil { + var apiErr smithy.APIError + + if errors.As(err, &apiErr) { + switch apiErr.(type) { + case *s3types.NoSuchBucket: + return "", errors.New("bucket does not exist: " + apiErr.Error()) + case *s3types.NotFound: + return "", ErrNotFound + default: + return "", errors.New("failed to save frame: " + apiErr.Error()) + } + } + } + + s.basicMetrics.ObserveItemAdded(string(ExecutionPayloadEnvelopeDataType)) + s.basicMetrics.ObserveItemAddedBytes(string(ExecutionPayloadEnvelopeDataType), len(*params.Data)) + + return params.Location, err +} + +func (s *S3Store) GetExecutionPayloadEnvelopeURL(ctx context.Context, params *GetURLParams) (string, error) { + url, err := s.getPresignedURL(ctx, params) + if err != nil { + return "", err + } + + s.basicMetrics.ObserveItemURLRetreived(string(ExecutionPayloadEnvelopeDataType)) + + return url, nil +} + +func (s *S3Store) GetExecutionPayloadEnvelope(ctx context.Context, location string) (*[]byte, error) { + s.basicMetrics.ObserveCacheMiss(string(ExecutionPayloadEnvelopeDataType)) + + data, err := s.GetRaw(ctx, location) + if err != nil { + return nil, err + } + + s.basicMetrics.ObserveItemRetreived(string(ExecutionPayloadEnvelopeDataType)) + + b := data.Bytes() + + return &b, nil +} + +func (s *S3Store) DeleteExecutionPayloadEnvelope(ctx context.Context, location string) error { + _, err := s.s3Client.DeleteObject(ctx, &s3.DeleteObjectInput{ + Bucket: aws.String(s.config.BucketName), + Key: aws.String(location), + }) + if err != nil { + var apiErr smithy.APIError + + if errors.As(err, &apiErr) { + switch apiErr.(type) { + case *s3types.NotFound: + return ErrNotFound + default: + return errors.New("failed to delete: " + apiErr.Error()) + } + } + } + + s.basicMetrics.ObserveItemRemoved(string(ExecutionPayloadEnvelopeDataType)) + + return err +} + func (s *S3Store) SaveBeaconBadBlock(ctx context.Context, params *SaveParams) (string, error) { if params.Data == nil { return "", errors.New("data is nil") diff --git a/pkg/store/s3_test.go b/pkg/store/s3_test.go index 4608c87..6c4335b 100644 --- a/pkg/store/s3_test.go +++ b/pkg/store/s3_test.go @@ -32,6 +32,10 @@ func TestS3StoreOperations(t *testing.T) { testBeaconBlock(ctx, t, store) }) + t.Run("ExecutionPayloadEnvelope", func(t *testing.T) { + testExecutionPayloadEnvelope(ctx, t, store) + }) + t.Run("BeaconBadBlock", func(t *testing.T) { testBeaconBadBlock(ctx, t, store) }) @@ -166,6 +170,61 @@ func testBeaconBlock(ctx context.Context, t *testing.T, store Store) { }) } +func testExecutionPayloadEnvelope(ctx context.Context, t *testing.T, store Store) { + t.Helper() + + location := "execution_payload_envelope/location.json" + data := []byte(`"abc": "def"`) + + var err error + + t.Run("ExecutionPayloadEnvelope", func(t *testing.T) { + if err = store.Healthy(ctx); err != nil { + t.Fatalf("Store is not healthy: %v", err) + } + + location, err = store.SaveExecutionPayloadEnvelope(ctx, &SaveParams{ + Data: &data, + Location: location, + ContentEncoding: "", + }) + if err != nil { + t.Fatalf("Failed to save execution payload envelope: %v", err) + } + + retrievedData, err := store.GetExecutionPayloadEnvelope(ctx, location) + if err != nil { + t.Fatalf("Failed to get execution payload envelope: %v", err) + } + + if retrievedData == nil { + t.Fatal("Retrieved data is nil") + } + + exists, err := store.Exists(ctx, location) + if err != nil { + t.Fatalf("Failed to check existence: %v", err) + } + + if !exists { + t.Fatal("Expected file to exist") + } + + if err = store.DeleteExecutionPayloadEnvelope(ctx, location); err != nil { + t.Fatalf("Failed to delete execution payload envelope: %v", err) + } + + exists, err = store.Exists(ctx, location) + if err != nil { + t.Fatalf("Failed to check existence after deletion: %v", err) + } + + if exists { + t.Fatal("Expected file to not exist after deletion") + } + }) +} + func testBeaconBadBlock(ctx context.Context, t *testing.T, store Store) { t.Helper() diff --git a/pkg/store/store.go b/pkg/store/store.go index 4c1a24b..937769e 100644 --- a/pkg/store/store.go +++ b/pkg/store/store.go @@ -59,6 +59,14 @@ type Store interface { GetBeaconBlockURL(ctx context.Context, params *GetURLParams) (string, error) // DeleteBeaconBlock deletes a beacon block from the store DeleteBeaconBlock(ctx context.Context, location string) error + // SaveExecutionPayloadEnvelope saves an execution payload envelope to the store + SaveExecutionPayloadEnvelope(ctx context.Context, params *SaveParams) (string, error) + // GetExecutionPayloadEnvelope fetches an execution payload envelope from the store + GetExecutionPayloadEnvelope(ctx context.Context, location string) (*[]byte, error) + // GetExecutionPayloadEnvelopeURL returns a URL for the execution payload envelope + GetExecutionPayloadEnvelopeURL(ctx context.Context, params *GetURLParams) (string, error) + // DeleteExecutionPayloadEnvelope deletes an execution payload envelope from the store + DeleteExecutionPayloadEnvelope(ctx context.Context, location string) error // SaveBeaconBadBlock saves a beacon bad block to the store SaveBeaconBadBlock(ctx context.Context, params *SaveParams) (string, error) diff --git a/pkg/store/type.go b/pkg/store/type.go index eacd373..6b8941d 100644 --- a/pkg/store/type.go +++ b/pkg/store/type.go @@ -22,11 +22,12 @@ func IsValidStoreType(st Type) bool { type DataType string const ( - UnknownDataType DataType = "unknown" - BeaconStateDataType DataType = "beacon_state" - BeaconBlockDataType DataType = "beacon_block" - BeaconBadBlockDataType DataType = "beacon_bad_block" - BeaconBadBlobDataType DataType = "beacon_bad_blob" - BlockTraceDataType DataType = "execution_block_trace" - BadBlockDataType DataType = "execution_bad_block" + UnknownDataType DataType = "unknown" + BeaconStateDataType DataType = "beacon_state" + BeaconBlockDataType DataType = "beacon_block" + ExecutionPayloadEnvelopeDataType DataType = "execution_payload_envelope" + BeaconBadBlockDataType DataType = "beacon_bad_block" + BeaconBadBlobDataType DataType = "beacon_bad_blob" + BlockTraceDataType DataType = "execution_block_trace" + BadBlockDataType DataType = "execution_bad_block" ) diff --git a/web/src/api/executionPayloadEnvelope.ts b/web/src/api/executionPayloadEnvelope.ts new file mode 100644 index 0000000..0c18ba5 --- /dev/null +++ b/web/src/api/executionPayloadEnvelope.ts @@ -0,0 +1,74 @@ +import { + V1ListExecutionPayloadEnvelopeResponse, + V1ListExecutionPayloadEnvelopeRequest, + V1CountExecutionPayloadEnvelopeResponse, + V1CountExecutionPayloadEnvelopeRequest, + V1ListUniqueExecutionPayloadEnvelopeValuesResponse, + V1ListUniqueExecutionPayloadEnvelopeValuesRequest, + ExecutionPayloadEnvelope, +} from '@app/types/api'; +import { BASE_URL } from '@utils/environment'; + +export async function fetchListExecutionPayloadEnvelope( + payload: V1ListExecutionPayloadEnvelopeRequest, +): Promise { + const response = await fetch(`${BASE_URL}v1/api/list-execution-payload-envelope`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(payload), + }); + + if (!response.ok) { + throw new Error('Failed to fetch list execution payload envelope data'); + } + const json = (await response.json()) as V1ListExecutionPayloadEnvelopeResponse; + + if (json.execution_payload_envelopes === undefined) + throw new Error('No execution payload envelopes data in response'); + + return json.execution_payload_envelopes as Required; +} + +export async function fetchCountExecutionPayloadEnvelope( + payload: V1CountExecutionPayloadEnvelopeRequest, +): Promise { + const response = await fetch(`${BASE_URL}v1/api/count-execution-payload-envelope`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(payload), + }); + + if (!response.ok) { + throw new Error('Failed to fetch count execution payload envelope data'); + } + const json = (await response.json()) as V1CountExecutionPayloadEnvelopeResponse; + + return json.count ?? 0; +} + +export async function fetchListUniqueExecutionPayloadEnvelopeValues( + payload: V1ListUniqueExecutionPayloadEnvelopeValuesRequest, +): Promise { + const response = await fetch(`${BASE_URL}v1/api/list-unique-execution-payload-envelope-values`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(payload), + }); + + if (!response.ok) { + throw new Error('Failed to fetch list execution payload envelope data'); + } + const executionPayloadEnvelopes = + (await response.json()) as V1ListUniqueExecutionPayloadEnvelopeValuesResponse; + + if (executionPayloadEnvelopes === undefined) + throw new Error('No unique execution payload envelopes values data in response'); + + return executionPayloadEnvelopes as Required; +} diff --git a/web/src/components/ExecutionPayloadEnvelopeFilter.tsx b/web/src/components/ExecutionPayloadEnvelopeFilter.tsx new file mode 100644 index 0000000..92897c4 --- /dev/null +++ b/web/src/components/ExecutionPayloadEnvelopeFilter.tsx @@ -0,0 +1,128 @@ +import { useFormContext, Controller } from 'react-hook-form'; + +import Alert from '@components/Alert'; +import { CustomCombobox } from '@components/Combobox'; +import DebouncedInput from '@components/DebouncedInput'; +import { useUniqueExecutionPayloadEnvelopeValues } from '@hooks/useQuery'; + +export default function FilterForm() { + const { control } = useFormContext(); + + const { data, isLoading, error } = useUniqueExecutionPayloadEnvelopeValues([ + 'node', + 'node_version', + 'beacon_implementation', + ]); + + let errorComp = undefined; + + if (!isLoading && error) { + let message = 'Something went wrong fetching filter values'; + if (typeof error === 'string') { + message = error; + } + errorComp = ; + } + + return ( +
+
+ +
+ ( + + controllerProps={props} + type="text" + name="executionPayloadEnvelopeSlot" + className="block w-full rounded-md border-0 bg-white/45 px-2.5 py-1.5 text-gray-600 shadow-sm ring-1 ring-inset ring-white/10 focus:ring-2 focus:ring-inset focus:ring-sky-500 sm:text-sm sm:leading-6" + /> + )} + /> +
+
+ +
+ +
+ ( + + controllerProps={props} + type="text" + name="executionPayloadEnvelopeEpoch" + className="block w-full rounded-md border-0 bg-white/45 px-2.5 py-1.5 text-gray-600 shadow-sm ring-1 ring-inset ring-white/10 focus:ring-2 focus:ring-inset focus:ring-sky-500 sm:text-sm sm:leading-6" + /> + )} + /> +
+
+ +
+ +
+ ( + + controllerProps={props} + type="text" + name="executionPayloadEnvelopeBlockRoot" + className="block w-full rounded-md border-0 bg-white/45 px-2.5 py-1.5 text-gray-600 shadow-sm ring-1 ring-inset ring-white/10 focus:ring-2 focus:ring-inset focus:ring-sky-500 sm:text-sm sm:leading-6" + /> + )} + /> +
+
+ + {errorComp &&
{errorComp}
} +
+ item} + /> +
+
+ item} + /> +
+
+ item} + /> +
+
+ ); +} diff --git a/web/src/components/ExecutionPayloadEnvelopeId.tsx b/web/src/components/ExecutionPayloadEnvelopeId.tsx new file mode 100644 index 0000000..413eebe --- /dev/null +++ b/web/src/components/ExecutionPayloadEnvelopeId.tsx @@ -0,0 +1,239 @@ +import { ArrowDownTrayIcon } from '@heroicons/react/24/outline'; +import { useFormContext } from 'react-hook-form'; +import TimeAgo from 'react-timeago'; +import { useLocation } from 'wouter'; + +import Alert from '@components/Alert'; +import CopyToClipboard from '@components/CopyToClipboard'; +import useNetwork from '@contexts/network'; +import { useExecutionPayloadEnvelopes } from '@hooks/useQuery'; + +export default function ExecutionPayloadEnvelopeId({ id }: { id: string }) { + const [, setLocation] = useLocation(); + const { setValue } = useFormContext(); + const { network } = useNetwork(); + const { data, isLoading, error } = useExecutionPayloadEnvelopes({ + network: network ? network : undefined, + id: id, + pagination: { + limit: 1, + }, + }); + + const envelope = data?.[0]; + + const handleSearch = (key: string, value: unknown) => { + setValue(key, value); + setLocation('/execution_payload_envelope'); + }; + + let errorMessage = undefined; + + if (error) { + errorMessage = 'Error fetching execution payload envelope'; + if (error instanceof Error) { + errorMessage = `Error fetching execution payload envelope: ${error.message}`; + } + } else if (!isLoading && !envelope) { + errorMessage = 'Execution payload envelope not found'; + } + + if (errorMessage) { + return ( +
+
+
+
+
ID
+
{id}
+
+ +
+
+
+ ); + } + + return ( +
+
+
+
+
ID
+
{id}
+
+
+
Fetched at
+
+ {isLoading ? ( +
+ ) : ( + envelope && + )} +
+
+
+
Network
+
+ {isLoading ? ( +
+ ) : ( + envelope?.network + )} +
+
+
+
Node
+
+ handleSearch('executionPayloadEnvelopeNode', envelope?.node)} + > + {isLoading ? ( +
+ ) : ( + envelope?.node + )} + +
+
+
+
+
Execution Implementation
+
+ + handleSearch( + 'executionPayloadEnvelopeNodeImplementation', + envelope?.beacon_implementation, + ) + } + > + {isLoading ? ( +
+ ) : ( + envelope?.beacon_implementation + )} + +
+
+
+
+
Node version
+
+ + handleSearch('executionPayloadEnvelopeNodeVersion', envelope?.node_version) + } + > + {isLoading ? ( +
+ ) : ( + envelope?.node_version + )} + +
+
+
+
+
Epoch
+
+ + handleSearch('executionPayloadEnvelopeEpoch', envelope?.epoch.toString()) + } + > + {isLoading ? ( +
+ ) : ( + envelope?.epoch + )} + +
+ +
+
+
+
Slot
+
+ + handleSearch('executionPayloadEnvelopeSlot', envelope?.slot.toString()) + } + > + {isLoading ? ( +
+ ) : ( + envelope?.slot + )} + +
+ +
+
+
+
Block root
+
+ + + handleSearch('executionPayloadEnvelopeBlockRoot', envelope?.block_root) + } + > + {isLoading ? ( +
+ ) : ( + envelope?.block_root + )} + +
+
+ + + handleSearch('executionPayloadEnvelopeBlockRoot', envelope?.block_root) + } + > + {isLoading ? ( +
+ ) : ( + envelope?.block_root + )} + +
+ +
+
+
+ +
+
+
+ ); +} diff --git a/web/src/components/ExecutionPayloadEnvelopeInfo.tsx b/web/src/components/ExecutionPayloadEnvelopeInfo.tsx new file mode 100644 index 0000000..232d7b6 --- /dev/null +++ b/web/src/components/ExecutionPayloadEnvelopeInfo.tsx @@ -0,0 +1,18 @@ +export default function ExecutionPayloadEnvelopeInfo() { + return ( +
+

+ + Execution payload envelopes + {' '} + are the signed gloas/ePBS objects that carry the execution payload contents, revealed by the + builder separately from the beacon block, as bytes serialized by SSZ. +

+
+ ); +} diff --git a/web/src/components/ExecutionPayloadEnvelopeTable.tsx b/web/src/components/ExecutionPayloadEnvelopeTable.tsx new file mode 100644 index 0000000..052b5d9 --- /dev/null +++ b/web/src/components/ExecutionPayloadEnvelopeTable.tsx @@ -0,0 +1,562 @@ +import { useState, useMemo, Fragment } from 'react'; + +import { Dialog, Transition } from '@headlessui/react'; +import { + ArrowDownTrayIcon, + ArrowUpIcon, + ArrowDownIcon, + ArrowsUpDownIcon, + XMarkIcon, + MagnifyingGlassCircleIcon, +} from '@heroicons/react/24/outline'; +import classNames from 'classnames'; +import { useFormContext } from 'react-hook-form'; +import TimeAgo from 'react-timeago'; +import { Link, useLocation } from 'wouter'; + +import ExecutionPayloadEnvelopeId from '@components/ExecutionPayloadEnvelopeId'; +import Pagination from '@components/Pagination'; +import useNetwork from '@contexts/network'; +import { Selection } from '@contexts/selection'; +import { useExecutionPayloadEnvelopes, useExecutionPayloadEnvelopesCount } from '@hooks/useQuery'; + +type SortConfig = { + key: string; + direction: 'ASC' | 'DESC'; +}; + +export default function ExecutionPayloadEnvelopeTable({ id }: { id?: string }) { + const { network } = useNetwork(); + const [, setLocation] = useLocation(); + const [sortConfig, setSortConfig] = useState({ + key: 'fetched_at', + direction: 'DESC', + }); + const { watch, setValue } = useFormContext(); + const [currentPage, setCurrentPage] = useState(1); + const itemsPerPage = 100; + + const handleSort = (key: string) => { + setSortConfig((currentSortConfig: SortConfig) => { + if (currentSortConfig.key === key) { + return { + key, + direction: currentSortConfig.direction === 'ASC' ? 'DESC' : 'ASC', + }; + } + return { key, direction: 'DESC' }; + }); + }; + + const [ + executionPayloadEnvelopeSlot, + executionPayloadEnvelopeEpoch, + executionPayloadEnvelopeBlockRoot, + executionPayloadEnvelopeNode, + executionPayloadEnvelopeNodeImplementation, + executionPayloadEnvelopeNodeVersion, + ] = watch([ + 'executionPayloadEnvelopeSlot', + 'executionPayloadEnvelopeEpoch', + 'executionPayloadEnvelopeBlockRoot', + 'executionPayloadEnvelopeNode', + 'executionPayloadEnvelopeNodeImplementation', + 'executionPayloadEnvelopeNodeVersion', + ]); + + const { data, isLoading, error } = useExecutionPayloadEnvelopes({ + network: network ? network : undefined, + slot: executionPayloadEnvelopeSlot ? parseInt(executionPayloadEnvelopeSlot) : undefined, + epoch: executionPayloadEnvelopeEpoch ? parseInt(executionPayloadEnvelopeEpoch) : undefined, + block_root: executionPayloadEnvelopeBlockRoot ? executionPayloadEnvelopeBlockRoot : undefined, + node: executionPayloadEnvelopeNode ? executionPayloadEnvelopeNode : undefined, + node_version: executionPayloadEnvelopeNodeVersion + ? executionPayloadEnvelopeNodeVersion + : undefined, + beacon_implementation: executionPayloadEnvelopeNodeImplementation + ? executionPayloadEnvelopeNodeImplementation + : undefined, + pagination: { + limit: itemsPerPage, + offset: (currentPage - 1) * itemsPerPage, + order_by: `${sortConfig.key} ${sortConfig.direction}`, + }, + }); + + const { data: count } = useExecutionPayloadEnvelopesCount({ + network: network ? network : undefined, + slot: executionPayloadEnvelopeSlot ? parseInt(executionPayloadEnvelopeSlot) : undefined, + epoch: executionPayloadEnvelopeEpoch ? parseInt(executionPayloadEnvelopeEpoch) : undefined, + block_root: executionPayloadEnvelopeBlockRoot ? executionPayloadEnvelopeBlockRoot : undefined, + node: executionPayloadEnvelopeNode ? executionPayloadEnvelopeNode : undefined, + node_version: executionPayloadEnvelopeNodeVersion + ? executionPayloadEnvelopeNodeVersion + : undefined, + beacon_implementation: executionPayloadEnvelopeNodeImplementation + ? executionPayloadEnvelopeNodeImplementation + : undefined, + }); + + const totalPages = count ? Math.ceil(count / itemsPerPage) : 0; + + const loading = useMemo( + () => + Array.from({ length: itemsPerPage }, (_, i) => ( + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + )), + [], + ); + + let otherComp = undefined; + + if (isLoading) { + otherComp = loading; + } else if (error) { + let message = 'Something went wrong fetching data'; + if (typeof error === 'string') { + message = error; + } + otherComp = ( + + + {message} + + + ); + } else if (!data || data.length === 0) { + otherComp = ( + + + No data available + + + ); + } + + return ( + <> +
+
+
+ + + + + + + + + + + + + + + {otherComp + ? otherComp + : data?.map((row) => ( + + + + + + + + + + + ))} + +
handleSort('node')} + > +
+ Node + + {sortConfig.key === 'node' ? ( + sortConfig.direction === 'DESC' ? ( + + ) : ( + + ) + ) : ( + + )} + +
+
handleSort('slot')} + > +
+ Slot + + {sortConfig.key === 'slot' ? ( + sortConfig.direction === 'DESC' ? ( + + ) : ( + + ) + ) : ( + + )} + +
+
+ + + + +
+ setValue('executionPayloadEnvelopeNode', row.node)} + > + {row.node} + + +
+
+
+ + setValue( + 'executionPayloadEnvelopeNodeImplementation', + row.beacon_implementation, + ) + } + > + {row.beacon_implementation} + + +
+
+
+ + setValue('executionPayloadEnvelopeNodeVersion', row.node_version) + } + > + {row.node_version} + + +
+
+
+ setValue('executionPayloadEnvelopeEpoch', row.epoch)} + > + {row.epoch} + + +
+
+
+ setValue('executionPayloadEnvelopeSlot', row.slot)} + > + {row.slot} + + +
+
+
+ + setValue('executionPayloadEnvelopeBlockRoot', row.block_root) + } + > + {row.block_root} + + +
+
+
+ + + + + + +
+
+
+
+
+
+ setCurrentPage(page)} + /> +
+ + + setLocation(`/${Selection.execution_payload_envelope}`)}> + +
+ +
+
+
+ + +
+
+
+ + Execution Payload Envelope + +
+ +
+
+
+ {id && } +
+
+
+
+
+
+
+
+ + ); +} diff --git a/web/src/contexts/selection.tsx b/web/src/contexts/selection.tsx index b534c27..c1201e7 100644 --- a/web/src/contexts/selection.tsx +++ b/web/src/contexts/selection.tsx @@ -13,6 +13,7 @@ export default function useContext() { export enum Selection { beacon_state = 'beacon_state', beacon_block = 'beacon_block', + execution_payload_envelope = 'execution_payload_envelope', beacon_bad_block = 'beacon_bad_block', beacon_bad_blob = 'beacon_bad_blob', execution_block_trace = 'execution_block_trace', diff --git a/web/src/hooks/useQuery.ts b/web/src/hooks/useQuery.ts index 8082311..f8b99e0 100644 --- a/web/src/hooks/useQuery.ts +++ b/web/src/hooks/useQuery.ts @@ -31,6 +31,11 @@ import { fetchListExecutionBlockTrace, fetchCountExecutionBlockTrace, } from '@api/executionBlockTrace'; +import { + fetchListUniqueExecutionPayloadEnvelopeValues, + fetchListExecutionPayloadEnvelope, + fetchCountExecutionPayloadEnvelope, +} from '@api/executionPayloadEnvelope'; import { BeaconBadBlock, BeaconBadBlob, @@ -44,24 +49,29 @@ import { ExecutionBadBlockField, ExecutionBlockTrace, ExecutionBlockTraceField, + ExecutionPayloadEnvelope, + ExecutionPayloadEnvelopeField, V1CountBeaconBadBlockRequest, V1CountBeaconBadBlobRequest, V1CountBeaconBlockRequest, V1CountBeaconStateRequest, V1CountExecutionBadBlockRequest, V1CountExecutionBlockTraceRequest, + V1CountExecutionPayloadEnvelopeRequest, V1ListBeaconBadBlockRequest, V1ListBeaconBadBlobRequest, V1ListBeaconBlockRequest, V1ListBeaconStateRequest, V1ListExecutionBadBlockRequest, V1ListExecutionBlockTraceRequest, + V1ListExecutionPayloadEnvelopeRequest, V1ListUniqueBeaconBadBlockValuesResponse, V1ListUniqueBeaconBadBlobValuesResponse, V1ListUniqueBeaconBlockValuesResponse, V1ListUniqueBeaconStateValuesResponse, V1ListUniqueExecutionBadBlockValuesResponse, V1ListUniqueExecutionBlockTraceValuesResponse, + V1ListUniqueExecutionPayloadEnvelopeValuesResponse, V1GetConfigRequest, Config, } from '@app/types/api'; @@ -282,6 +292,52 @@ export function useUniqueExecutionBadBlockValues(fields: ExecutionBadBlockField[ }); } +export function useExecutionPayloadEnvelopes( + request: V1ListExecutionPayloadEnvelopeRequest, + enabled = true, +) { + return useQuery< + ExecutionPayloadEnvelope[], + unknown, + ExecutionPayloadEnvelope[], + [string, V1ListExecutionPayloadEnvelopeRequest] + >({ + queryKey: ['list-execution-payload-envelope', request], + queryFn: () => fetchListExecutionPayloadEnvelope(request), + enabled, + staleTime: 6_000, + }); +} + +export function useExecutionPayloadEnvelopesCount( + request: V1CountExecutionPayloadEnvelopeRequest, + enabled = true, +) { + return useQuery({ + queryKey: ['count-execution-payload-envelope', request], + queryFn: () => fetchCountExecutionPayloadEnvelope(request), + enabled, + staleTime: 6_000, + }); +} + +export function useUniqueExecutionPayloadEnvelopeValues( + fields: ExecutionPayloadEnvelopeField[], + enabled = true, +) { + return useQuery< + V1ListUniqueExecutionPayloadEnvelopeValuesResponse, + unknown, + V1ListUniqueExecutionPayloadEnvelopeValuesResponse, + [string, ExecutionPayloadEnvelopeField[]] + >({ + queryKey: ['list-unqiue-execution-payload-envelope-values', fields], + queryFn: () => fetchListUniqueExecutionPayloadEnvelopeValues({ fields }), + enabled, + staleTime: 60_000, + }); +} + export function useConfig(request: V1GetConfigRequest, enabled = true) { return useQuery({ queryKey: ['get-config', request], diff --git a/web/src/parts/Filters.tsx b/web/src/parts/Filters.tsx index 4fb0bdd..8e03f63 100644 --- a/web/src/parts/Filters.tsx +++ b/web/src/parts/Filters.tsx @@ -10,6 +10,7 @@ import BeaconBlockFilter from '@components/BeaconBlockFilter'; import BeaconStateFilter from '@components/BeaconStateFilter'; import ExecutionBadBlockFilter from '@components/ExecutionBadBlockFilter'; import ExecutionBlockTraceFilter from '@components/ExecutionBlockTraceFilter'; +import ExecutionPayloadEnvelopeFilter from '@components/ExecutionPayloadEnvelopeFilter'; import useSelection, { Selection } from '@contexts/selection'; export interface V1ListUniqueBeaconStateValuesResponse { @@ -63,6 +64,12 @@ export default function FilterForm() { executionBadBlockNode, executionBadBlockNodeImplementation, executionBadBlockNodeVersion, + executionPayloadEnvelopeSlot, + executionPayloadEnvelopeEpoch, + executionPayloadEnvelopeBlockRoot, + executionPayloadEnvelopeNode, + executionPayloadEnvelopeNodeImplementation, + executionPayloadEnvelopeNodeVersion, ] = watch([ 'beaconStateSlot', 'beaconStateEpoch', @@ -99,6 +106,12 @@ export default function FilterForm() { 'executionBadBlockNode', 'executionBadBlockNodeImplementation', 'executionBadBlockNodeVersion', + 'executionPayloadEnvelopeSlot', + 'executionPayloadEnvelopeEpoch', + 'executionPayloadEnvelopeBlockRoot', + 'executionPayloadEnvelopeNode', + 'executionPayloadEnvelopeNodeImplementation', + 'executionPayloadEnvelopeNodeVersion', ]); let form = undefined; @@ -130,6 +143,19 @@ export default function FilterForm() { hasFilters = true; } break; + case Selection.execution_payload_envelope: + form = ; + if ( + executionPayloadEnvelopeSlot || + executionPayloadEnvelopeEpoch || + executionPayloadEnvelopeBlockRoot || + executionPayloadEnvelopeNode || + executionPayloadEnvelopeNodeImplementation || + executionPayloadEnvelopeNodeVersion + ) { + hasFilters = true; + } + break; case Selection.beacon_bad_block: form = ; if ( @@ -206,6 +232,29 @@ export default function FilterForm() { if (beaconBlockNodeVersion) queryParams.append('beaconBlockNodeVersion', beaconBlockNodeVersion); break; + case Selection.execution_payload_envelope: + if (executionPayloadEnvelopeSlot) + queryParams.append('executionPayloadEnvelopeSlot', executionPayloadEnvelopeSlot); + if (executionPayloadEnvelopeEpoch) + queryParams.append('executionPayloadEnvelopeEpoch', executionPayloadEnvelopeEpoch); + if (executionPayloadEnvelopeBlockRoot) + queryParams.append( + 'executionPayloadEnvelopeBlockRoot', + executionPayloadEnvelopeBlockRoot, + ); + if (executionPayloadEnvelopeNode) + queryParams.append('executionPayloadEnvelopeNode', executionPayloadEnvelopeNode); + if (executionPayloadEnvelopeNodeImplementation) + queryParams.append( + 'executionPayloadEnvelopeNodeImplementation', + executionPayloadEnvelopeNodeImplementation, + ); + if (executionPayloadEnvelopeNodeVersion) + queryParams.append( + 'executionPayloadEnvelopeNodeVersion', + executionPayloadEnvelopeNodeVersion, + ); + break; case Selection.beacon_bad_block: if (beaconBadBlockSlot) queryParams.append('beaconBadBlockSlot', beaconBadBlockSlot); if (beaconBadBlockEpoch) queryParams.append('beaconBadBlockEpoch', beaconBadBlockEpoch); @@ -303,6 +352,12 @@ export default function FilterForm() { executionBadBlockNode, executionBadBlockNodeImplementation, executionBadBlockNodeVersion, + executionPayloadEnvelopeSlot, + executionPayloadEnvelopeEpoch, + executionPayloadEnvelopeBlockRoot, + executionPayloadEnvelopeNode, + executionPayloadEnvelopeNodeImplementation, + executionPayloadEnvelopeNodeVersion, hasFilters, navigate, ]); @@ -325,6 +380,14 @@ export default function FilterForm() { setValue('beaconBlockNodeImplementation', null); setValue('beaconBlockNodeVersion', null); break; + case Selection.execution_payload_envelope: + setValue('executionPayloadEnvelopeSlot', ''); + setValue('executionPayloadEnvelopeEpoch', ''); + setValue('executionPayloadEnvelopeBlockRoot', ''); + setValue('executionPayloadEnvelopeNode', null); + setValue('executionPayloadEnvelopeNodeImplementation', null); + setValue('executionPayloadEnvelopeNodeVersion', null); + break; case Selection.beacon_bad_block: setValue('beaconBadBlockSlot', ''); setValue('beaconBadBlockEpoch', ''); diff --git a/web/src/parts/Info.tsx b/web/src/parts/Info.tsx index 7e93e7d..99f6665 100644 --- a/web/src/parts/Info.tsx +++ b/web/src/parts/Info.tsx @@ -4,6 +4,7 @@ import BeaconBlockInfo from '@components/BeaconBlockInfo'; import BeaconStateInfo from '@components/BeaconStateInfo'; import ExecutionBadBlockInfo from '@components/ExecutionBadBlockInfo'; import ExecutionBlockTraceInfo from '@components/ExecutionBlockTraceInfo'; +import ExecutionPayloadEnvelopeInfo from '@components/ExecutionPayloadEnvelopeInfo'; import GoEVMLabInfo from '@components/GoEVMLabInfo'; import LCLIInfo from '@components/LCLIInfo'; import NCLIInfo from '@components/NCLIInfo'; @@ -21,6 +22,9 @@ export default function Info() { case Selection.beacon_block: info = ; break; + case Selection.execution_payload_envelope: + info = ; + break; case Selection.beacon_bad_block: info = ; break; diff --git a/web/src/parts/Listing.tsx b/web/src/parts/Listing.tsx index ead31f0..aeee439 100644 --- a/web/src/parts/Listing.tsx +++ b/web/src/parts/Listing.tsx @@ -4,6 +4,7 @@ import BeaconBlockTable from '@components/BeaconBlockTable'; import BeaconStateTable from '@components/BeaconStateTable'; import ExecutionBadBlockTable from '@components/ExecutionBadBlockTable'; import ExecutionBlockTraceTable from '@components/ExecutionBlockTraceTable'; +import ExecutionPayloadEnvelopeTable from '@components/ExecutionPayloadEnvelopeTable'; import useSelection, { Selection } from '@contexts/selection'; export default function Listing({ id }: { id?: string }) { @@ -17,6 +18,9 @@ export default function Listing({ id }: { id?: string }) { case Selection.beacon_block: table = ; break; + case Selection.execution_payload_envelope: + table = ; + break; case Selection.beacon_bad_block: table = ; break; diff --git a/web/src/parts/Selector.tsx b/web/src/parts/Selector.tsx index 8610ae4..efeb79d 100644 --- a/web/src/parts/Selector.tsx +++ b/web/src/parts/Selector.tsx @@ -15,6 +15,7 @@ import { useUniqueBeaconBadBlobValues, useUniqueExecutionBlockTraceValues, useUniqueExecutionBadBlockValues, + useUniqueExecutionPayloadEnvelopeValues, } from '@hooks/useQuery'; const categories: { name: string; tabs: Selection[] }[] = [ @@ -23,6 +24,7 @@ const categories: { name: string; tabs: Selection[] }[] = [ tabs: [ Selection.beacon_state, Selection.beacon_block, + Selection.execution_payload_envelope, Selection.beacon_bad_block, Selection.beacon_bad_blob, ], @@ -45,6 +47,7 @@ const categories: { name: string; tabs: Selection[] }[] = [ const tabs: { id: Selection; name: string }[] = [ { id: Selection.beacon_state, name: 'Beacon states' }, { id: Selection.beacon_block, name: 'Beacon blocks' }, + { id: Selection.execution_payload_envelope, name: 'Execution payload envelopes' }, { id: Selection.beacon_bad_block, name: 'Beacon bad blocks' }, { id: Selection.beacon_bad_blob, name: 'Beacon bad blobs' }, { id: Selection.execution_block_trace, name: 'Execution block traces' }, @@ -89,6 +92,15 @@ export default function Selector() { error: beaconBlockError, } = useUniqueBeaconBlockValues(['network'], currentSelection === Selection.beacon_block); + const { + data: executionPayloadEnvelopeData, + isLoading: executionPayloadEnvelopeIsLoading, + error: executionPayloadEnvelopeError, + } = useUniqueExecutionPayloadEnvelopeValues( + ['network'], + currentSelection === Selection.execution_payload_envelope, + ); + const { data: beaconBadBlockData, isLoading: beaconBadBlockIsLoading, @@ -133,6 +145,10 @@ export default function Selector() { case Selection.beacon_block: if (currentSelection !== Selection.beacon_block) setSelection(Selection.beacon_block); break; + case Selection.execution_payload_envelope: + if (currentSelection !== Selection.execution_payload_envelope) + setSelection(Selection.execution_payload_envelope); + break; case Selection.beacon_bad_block: if (currentSelection !== Selection.beacon_bad_block) setSelection(Selection.beacon_bad_block); @@ -186,6 +202,11 @@ export default function Selector() { error = beaconBlockError; isLoading = beaconBlockIsLoading; break; + case Selection.execution_payload_envelope: + data = executionPayloadEnvelopeData?.network; + error = executionPayloadEnvelopeError; + isLoading = executionPayloadEnvelopeIsLoading; + break; case Selection.beacon_bad_block: data = beaconBadBlockData?.network; error = beaconBadBlockError; diff --git a/web/src/types/api.ts b/web/src/types/api.ts index aa42800..38f0f4c 100644 --- a/web/src/types/api.ts +++ b/web/src/types/api.ts @@ -22,6 +22,18 @@ export interface BeaconBlock { beacon_implementation: string; } +export interface ExecutionPayloadEnvelope { + id: string; + node: string; + fetched_at: string; + slot: number; + epoch: number; + block_root: string; + node_version: string; + network: string; + beacon_implementation: string; +} + export interface BeaconBadBlock { id: string; node: string; @@ -88,6 +100,15 @@ export type BeaconBlockField = | 'network' | 'beacon_implementation'; +export type ExecutionPayloadEnvelopeField = + | 'node' + | 'slot' + | 'epoch' + | 'block_root' + | 'node_version' + | 'network' + | 'beacon_implementation'; + export type BeaconBadBlockField = | 'node' | 'slot' @@ -218,6 +239,38 @@ export interface V1ListUniqueBeaconBlockValuesRequest { fields: BeaconBlockField[]; } +export interface V1ListExecutionPayloadEnvelopeRequest { + node?: string; + slot?: number; + epoch?: number; + block_root?: string; + node_version?: string; + network?: string; + beacon_implementation?: string; + before?: string; + after?: string; + id?: string; + pagination?: PaginationCursor; +} + +export interface V1CountExecutionPayloadEnvelopeRequest { + node?: string; + slot?: number; + epoch?: number; + block_root?: string; + node_version?: string; + network?: string; + beacon_implementation?: string; + before?: string; + after?: string; + id?: string; + pagination?: PaginationCursor; +} + +export interface V1ListUniqueExecutionPayloadEnvelopeValuesRequest { + fields: ExecutionPayloadEnvelopeField[]; +} + export interface V1ListBeaconBadBlockRequest { node?: string; slot?: number; @@ -385,6 +438,24 @@ export interface V1ListUniqueBeaconBlockValuesResponse { beacon_implementation?: string[]; } +export interface V1ListExecutionPayloadEnvelopeResponse { + execution_payload_envelopes?: ExecutionPayloadEnvelope[]; +} + +export interface V1CountExecutionPayloadEnvelopeResponse { + count?: number; +} + +export interface V1ListUniqueExecutionPayloadEnvelopeValuesResponse { + node?: string[]; + slot?: number[]; + epoch?: number[]; + block_root?: string[]; + node_version?: string[]; + network?: string[]; + beacon_implementation?: string[]; +} + export interface V1ListBeaconBadBlockResponse { beacon_bad_blocks?: BeaconBadBlock[]; }