Repository: prysmaticlabs/ethereumapis (language: python)

Issue:
ETH2 Types: Epoch
- The corresponding protobuf updates necessary for https://github.com/prysmaticlabs/prysm/pull/8373
- Adds type casting to all `Epoch` fields.
- Target branch is `feature/eth2-types` -- so that we accumulate all the shared types changes and merge it into the `master` when the corresponding changes will be ready on main Prysm repo side.
ETH2 Types: Epoch
- The corresponding protobuf updates necessary for https://github.com/prysmaticlabs/prysm/pull/8373
- Adds type casting to all `Epoch` fields.
- Target branch is `feature/eth2-types` -- so that we accumulate all the shared types changes and merge it into the `master` when the corresponding changes will be ready on main Prysm repo side.


Discussion / hints:

Fix patch:
diff --git a/eth/v1/BUILD.bazel b/eth/v1/BUILD.bazel
index f946f109..abc6f894 100644
--- a/eth/v1/BUILD.bazel
+++ b/eth/v1/BUILD.bazel
@@ -6,6 +6,9 @@ load("//tools:ssz.bzl", "SSZ_DEPS", "ssz_gen_marshal")
 ssz_gen_marshal(
     name = "ssz_generated_files",
     go_proto = ":v1_go_proto",
+    includes = [
+        "@com_github_prysmaticlabs_eth2_types//:go_default_library",
+    ],
     objs = [
         "AggregateAttestationAndProof",
         "Attestation",
@@ -58,6 +61,7 @@ go_proto_library(
         "@com_github_gogo_protobuf//gogoproto:go_default_library",  # keep
         "@com_github_prysmaticlabs_go_bitfield//:go_default_library",  # keep
         "@go_googleapis//google/api:annotations_go_proto",
+        "@com_github_prysmaticlabs_eth2_types//:go_default_library",
     ],
 )
 
diff --git a/eth/v1/beacon_block.pb.go b/eth/v1/beacon_block.pb.go
index 8c23d4c3..2497e421 100644
--- a/eth/v1/beacon_block.pb.go
+++ b/eth/v1/beacon_block.pb.go
@@ -11,6 +11,7 @@ import (
 
 	_ "github.com/gogo/protobuf/gogoproto"
 	proto "github.com/gogo/protobuf/proto"
+	github_com_prysmaticlabs_eth2_types "github.com/prysmaticlabs/eth2-types"
 )
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -498,11 +499,11 @@ func (m *Deposit_Data) GetSignature() []byte {
 }
 
 type VoluntaryExit struct {
-	Epoch                uint64   `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	ValidatorIndex       uint64   `protobuf:"varint,2,opt,name=validator_index,json=validatorIndex,proto3" json:"validator_index,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	ValidatorIndex       uint64                                    `protobuf:"varint,2,opt,name=validator_index,json=validatorIndex,proto3" json:"validator_index,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *VoluntaryExit) Reset()         { *m = VoluntaryExit{} }
@@ -538,7 +539,7 @@ func (m *VoluntaryExit) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_VoluntaryExit proto.InternalMessageInfo
 
-func (m *VoluntaryExit) GetEpoch() uint64 {
+func (m *VoluntaryExit) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -886,74 +887,76 @@ func init() {
 func init() { proto.RegisterFile("eth/v1/beacon_block.proto", fileDescriptor_b82dda2838684da4) }
 
 var fileDescriptor_b82dda2838684da4 = []byte{
-	// 1070 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0xdd, 0x6e, 0xe3, 0x44,
-	0x14, 0x96, 0xb7, 0x4e, 0x9b, 0x9c, 0x24, 0x4d, 0x3a, 0xbb, 0x2c, 0xd9, 0x6a, 0x69, 0x82, 0x77,
-	0x11, 0x11, 0xda, 0x26, 0xb5, 0x5b, 0x55, 0xa5, 0x37, 0x88, 0x74, 0x8b, 0xba, 0x42, 0x42, 0x95,
-	0x2b, 0x71, 0x81, 0x56, 0xb2, 0x26, 0xf6, 0x34, 0xb6, 0xea, 0x78, 0x2c, 0xcf, 0x24, 0xdb, 0xf4,
-	0x01, 0xe0, 0x11, 0xb8, 0xe1, 0x9a, 0x0b, 0x9e, 0x81, 0x07, 0x00, 0xae, 0x78, 0x82, 0x08, 0x55,
-	0x3c, 0x41, 0x24, 0xee, 0x91, 0x67, 0x9c, 0xc4, 0x49, 0xea, 0x42, 0xb9, 0xe2, 0xce, 0x63, 0x7f,
-	0xe7, 0x3b, 0x67, 0xce, 0xcf, 0x77, 0x0c, 0xcf, 0x08, 0x77, 0xdb, 0x43, 0xbd, 0xdd, 0x25, 0xd8,
-	0xa6, 0x81, 0xd5, 0xf5, 0xa9, 0x7d, 0xd5, 0x0a, 0x23, 0xca, 0x29, 0xaa, 0x10, 0xee, 0x92, 0x88,
-	0x0c, 0xfa, 0x2d, 0xc2, 0xdd, 0xd6, 0x50, 0xdf, 0xde, 0xed, 0x79, 0xdc, 0x1d, 0x74, 0x5b, 0x36,
-	0xed, 0xb7, 0x7b, 0xb4, 0x47, 0xdb, 0x02, 0xd7, 0x1d, 0x5c, 0x8a, 0x93, 0x38, 0x88, 0x27, 0x69,
-	0xbf, 0x5d, 0x4b, 0xa8, 0x31, 0xe7, 0x84, 0x71, 0xcc, 0x3d, 0x1a, 0xc8, 0x2f, 0xda, 0x9f, 0x0a,
-	0x14, 0x3b, 0xc2, 0x61, 0x27, 0xf6, 0x87, 0x10, 0xa8, 0xcc, 0xa7, 0xbc, 0xa6, 0x34, 0x94, 0xa6,
-	0x6a, 0x8a, 0x67, 0xf4, 0x11, 0x6c, 0x86, 0x11, 0x0d, 0x29, 0x23, 0x91, 0xe5, 0x05, 0x0e, 0xb9,
-	0xae, 0x3d, 0x12, 0x5f, 0xcb, 0xd3, 0xb7, 0x6f, 0xe2, 0x97, 0xc8, 0x80, 0x62, 0x88, 0x23, 0x12,
-	0x70, 0x2b, 0xa2, 0x94, 0xd7, 0xd6, 0x1a, 0x4a, 0xb3, 0xd4, 0xd9, 0x9a, 0x8c, 0xeb, 0x65, 0xc6,
-	0x6e, 0x76, 0x99, 0x77, 0x43, 0x8e, 0xb5, 0x7d, 0x43, 0x33, 0x41, 0xa2, 0x4c, 0x4a, 0x39, 0xda,
-	0x03, 0x88, 0xe3, 0x21, 0xd2, 0x44, 0xcd, 0x32, 0x29, 0x08, 0x90, 0xb0, 0x38, 0x00, 0xb5, 0x4b,
-	0x9d, 0x51, 0x2d, 0xd7, 0x50, 0x9a, 0x45, 0xa3, 0xd1, 0x5a, 0xca, 0x4c, 0x2b, 0x75, 0x99, 0x0e,
-	0x75, 0x46, 0xa6, 0x40, 0x6b, 0xd7, 0xb0, 0x75, 0xe1, 0xf5, 0x02, 0xe2, 0xa4, 0xef, 0x6a, 0x40,
-	0x4e, 0x24, 0x59, 0x5c, 0xb6, 0x68, 0x3c, 0xbf, 0x8f, 0xcb, 0x94, 0x50, 0xd4, 0x86, 0x02, 0xf3,
-	0x7a, 0x01, 0xe6, 0x83, 0x88, 0x88, 0x34, 0xac, 0xc4, 0xfb, 0xe9, 0x61, 0x1c, 0xef, 0x14, 0xa3,
-	0xfd, 0xa5, 0x42, 0x65, 0x29, 0x26, 0x74, 0x08, 0xe5, 0x08, 0x07, 0x0e, 0xa6, 0x56, 0x44, 0x86,
-	0x04, 0xfb, 0x22, 0x80, 0x3b, 0x89, 0x4a, 0x12, 0x67, 0x0a, 0x18, 0x3a, 0x84, 0x02, 0xe1, 0xae,
-	0x6e, 0x39, 0x98, 0x63, 0xe1, 0xbc, 0x68, 0x3c, 0x5b, 0x09, 0xfa, 0x94, 0xbb, 0xfa, 0x6b, 0xcc,
-	0xb1, 0x99, 0x27, 0xc9, 0x13, 0xda, 0x85, 0x7c, 0x2f, 0xc2, 0x97, 0x97, 0x1e, 0xf7, 0xb2, 0xcb,
-	0x32, 0x83, 0xa0, 0x2e, 0xa0, 0x59, 0xbd, 0x99, 0x8f, 0x99, 0xeb, 0x05, 0x3d, 0x56, 0x53, 0x1b,
-	0x6b, 0xcd, 0xa2, 0xf1, 0xe1, 0x8a, 0xbf, 0xf3, 0x04, 0x7a, 0x91, 0x20, 0x3b, 0xd5, 0xc9, 0xb8,
-	0x5e, 0x8a, 0xb9, 0xfb, 0xf8, 0xfa, 0x58, 0xd3, 0x0f, 0x35, 0x73, 0x2b, 0x5c, 0xc2, 0x30, 0x84,
-	0x01, 0xc9, 0x66, 0x5c, 0xf0, 0x91, 0xcb, 0xf0, 0xf1, 0x79, 0x02, 0x9d, 0xf9, 0xa8, 0x4c, 0xc6,
-	0xf5, 0xe2, 0xcc, 0x87, 0xa1, 0x99, 0x5b, 0x78, 0x09, 0xc2, 0xd0, 0x05, 0x94, 0x52, 0xfd, 0xce,
-	0x6a, 0xeb, 0x82, 0xfc, 0x79, 0x06, 0xb9, 0x00, 0xcd, 0xf3, 0x22, 0x63, 0x37, 0x8e, 0x34, 0x73,
-	0x81, 0x04, 0x7d, 0x01, 0x79, 0x87, 0x84, 0x94, 0x79, 0x9c, 0xd5, 0x36, 0x04, 0x61, 0x6d, 0x85,
-	0xf0, 0xb5, 0x04, 0xdc, 0x91, 0x88, 0x99, 0x2d, 0xb2, 0xa0, 0x32, 0xa4, 0xfe, 0x20, 0xe0, 0x38,
-	0x1a, 0x59, 0xe4, 0x3a, 0xa6, 0xcb, 0x0b, 0xba, 0x97, 0x2b, 0x74, 0xb2, 0x71, 0xbf, 0x9e, 0xa2,
-	0x4f, 0xaf, 0xef, 0xa4, 0xde, 0x1c, 0xa6, 0x01, 0x4c, 0xfb, 0x41, 0x81, 0xea, 0x72, 0x69, 0xd0,
-	0x09, 0xe4, 0x5d, 0x82, 0x1d, 0x12, 0x59, 0x7a, 0xd2, 0x3f, 0xcd, 0x0c, 0x77, 0xa9, 0x96, 0x3d,
-	0x13, 0x16, 0xe6, 0x86, 0xb4, 0xd4, 0x53, 0x24, 0x86, 0xe8, 0xa6, 0xff, 0x40, 0x62, 0x68, 0x3f,
-	0x2a, 0x50, 0x5d, 0xae, 0x2a, 0x3a, 0x83, 0x72, 0x2a, 0xd9, 0x96, 0x9e, 0x0c, 0xe6, 0x8b, 0x15,
-	0x7a, 0x21, 0x38, 0xc4, 0x49, 0x55, 0x6e, 0xa1, 0x4c, 0xfa, 0x32, 0x93, 0x91, 0xdc, 0xf6, 0xc1,
-	0x4c, 0x86, 0xf6, 0xeb, 0x23, 0xd8, 0x48, 0x0a, 0x8a, 0x3e, 0x81, 0x5c, 0x18, 0x51, 0x7a, 0x59,
-	0x53, 0x1a, 0x6b, 0xcd, 0x52, 0xe7, 0xc9, 0x64, 0x5c, 0xaf, 0xa6, 0x86, 0x68, 0xff, 0x55, 0x3c,
-	0x47, 0x12, 0x82, 0x74, 0x50, 0x53, 0x63, 0xfa, 0x41, 0x56, 0x93, 0xb4, 0xc4, 0xa8, 0x0a, 0xe8,
-	0xf6, 0x58, 0x01, 0x55, 0xcc, 0xeb, 0x09, 0x40, 0x38, 0xe8, 0xfa, 0x9e, 0x6d, 0x5d, 0x91, 0x51,
-	0x22, 0x0e, 0x2f, 0x27, 0xe3, 0x7a, 0x63, 0xee, 0xec, 0xe0, 0x48, 0x6b, 0xb0, 0x90, 0xd8, 0xbb,
-	0x01, 0xee, 0x93, 0x63, 0x2d, 0x1c, 0x74, 0xaf, 0xc8, 0x48, 0x33, 0x0b, 0xd2, 0xee, 0x4b, 0x32,
-	0x42, 0x67, 0xf0, 0xf4, 0x9d, 0xc7, 0x5d, 0x27, 0xc2, 0xef, 0xb0, 0x6f, 0xd9, 0x11, 0x71, 0x48,
-	0xc0, 0x3d, 0xec, 0xb3, 0xbb, 0x65, 0x2b, 0x0e, 0xfd, 0xbd, 0xb9, 0xc1, 0xc9, 0x1c, 0x8f, 0x9e,
-	0xc2, 0x3a, 0xee, 0xd3, 0x41, 0x20, 0x35, 0x5d, 0x35, 0x93, 0xd3, 0xa2, 0x16, 0xaa, 0xff, 0x42,
-	0x0b, 0xbf, 0x82, 0xf2, 0x42, 0x1b, 0xa3, 0x27, 0x90, 0x23, 0x21, 0xb5, 0xdd, 0x64, 0xdd, 0xc8,
-	0x03, 0xfa, 0x18, 0x2a, 0x43, 0xec, 0x7b, 0x0e, 0xe6, 0x74, 0x71, 0xe1, 0x6c, 0xce, 0x5e, 0x8b,
-	0xb2, 0x69, 0x37, 0xf0, 0xf8, 0x8e, 0xe1, 0x40, 0x06, 0xa8, 0xf1, 0x44, 0x25, 0xdd, 0xb3, 0xb3,
-	0x92, 0xfa, 0x05, 0xb4, 0x29, 0xb0, 0x0f, 0xd7, 0xf5, 0xef, 0x15, 0xc8, 0x4f, 0xa5, 0x16, 0x1d,
-	0x40, 0x29, 0x99, 0x6c, 0xb9, 0xc8, 0x94, 0xac, 0x0c, 0x17, 0x13, 0x98, 0x58, 0x65, 0x2f, 0xa0,
-	0x3c, 0xb5, 0xb2, 0x45, 0x7a, 0xe5, 0x2d, 0xa7, 0x54, 0x27, 0x22, 0xc9, 0x7b, 0x00, 0x62, 0xf3,
-	0x58, 0x2e, 0x66, 0x6e, 0xb6, 0x7a, 0x17, 0x04, 0xe8, 0x0c, 0x33, 0x37, 0x5e, 0xe9, 0x5b, 0x2b,
-	0x93, 0xf7, 0xff, 0x5f, 0xec, 0x2d, 0x28, 0xc4, 0xab, 0x5a, 0x1a, 0xe4, 0x32, 0xb7, 0x54, 0x8c,
-	0x89, 0xf1, 0xda, 0xb7, 0x0a, 0xbc, 0x9f, 0x21, 0x33, 0xe8, 0x18, 0xd6, 0xa5, 0xd0, 0x24, 0x3d,
-	0xa0, 0xdd, 0xb7, 0xda, 0x13, 0x69, 0x4a, 0x2c, 0x1e, 0xde, 0x09, 0x3f, 0x2b, 0x80, 0x56, 0x65,
-	0x04, 0x7d, 0x06, 0xc9, 0x4e, 0xf2, 0x82, 0x5e, 0x9c, 0x5d, 0xcf, 0x26, 0x4c, 0x08, 0x87, 0xda,
-	0x41, 0x93, 0x71, 0x7d, 0x73, 0xbe, 0xbd, 0xf6, 0x0e, 0x8e, 0x34, 0xb3, 0x3a, 0x03, 0xbf, 0x91,
-	0xd8, 0xf8, 0x4f, 0x27, 0xa5, 0x20, 0x8d, 0xfb, 0xf6, 0xd6, 0x5c, 0x44, 0x16, 0xc3, 0x5f, 0xfb,
-	0xe7, 0xf0, 0x3b, 0xdf, 0x29, 0xbf, 0xdc, 0xee, 0x28, 0xbf, 0xdf, 0xee, 0x28, 0x7f, 0xdc, 0xee,
-	0x28, 0xf0, 0x98, 0x46, 0xbd, 0x65, 0x57, 0x9d, 0x6a, 0x2a, 0x5d, 0xe7, 0xf1, 0x7f, 0xe3, 0xb9,
-	0xf2, 0xcd, 0xab, 0xd4, 0x2f, 0x68, 0x18, 0x8d, 0x58, 0x1f, 0x73, 0xcf, 0xf6, 0x71, 0x97, 0xb5,
-	0xa7, 0xd6, 0x38, 0xf4, 0xc4, 0xa1, 0x3d, 0xd4, 0x7f, 0x7a, 0x54, 0x39, 0x9d, 0x72, 0x9e, 0x0a,
-	0xce, 0xdf, 0xe6, 0x6f, 0xde, 0x9e, 0x72, 0xf7, 0xed, 0x50, 0xef, 0xae, 0x8b, 0x5f, 0xd2, 0xfd,
-	0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x80, 0xcf, 0x35, 0xb7, 0x09, 0x0b, 0x00, 0x00,
+	// 1091 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0xcd, 0x6e, 0xe3, 0x54,
+	0x14, 0x96, 0x5b, 0xa7, 0x4d, 0x4e, 0x92, 0x26, 0xbd, 0x03, 0x43, 0xa6, 0x1a, 0x9a, 0xe0, 0x19,
+	0x44, 0x40, 0x93, 0xa4, 0x76, 0xab, 0xaa, 0x74, 0x83, 0x48, 0x27, 0xa8, 0x23, 0x36, 0x95, 0x2b,
+	0xb1, 0x40, 0x23, 0x59, 0x37, 0xf1, 0x6d, 0x6c, 0x35, 0xf1, 0xb5, 0x7c, 0x6f, 0x32, 0x4d, 0x25,
+	0xb6, 0xf0, 0x08, 0x6c, 0x58, 0xb3, 0xe0, 0x19, 0x78, 0x00, 0x60, 0xc5, 0x13, 0x44, 0xa8, 0xe2,
+	0x09, 0x22, 0xb1, 0x61, 0x85, 0x7c, 0xaf, 0x93, 0x38, 0x3f, 0x2e, 0x94, 0xd5, 0xec, 0xfc, 0xf3,
+	0x9d, 0xef, 0x9c, 0x7b, 0x7e, 0xbe, 0x73, 0xe1, 0x09, 0xe1, 0x4e, 0x63, 0xa8, 0x37, 0xda, 0x04,
+	0x77, 0xa8, 0x67, 0xb5, 0x7b, 0xb4, 0x73, 0x5d, 0xf7, 0x03, 0xca, 0x29, 0x2a, 0x10, 0xee, 0x90,
+	0x80, 0x0c, 0xfa, 0x75, 0xc2, 0x9d, 0xfa, 0x50, 0xdf, 0xab, 0x75, 0x5d, 0xee, 0x0c, 0xda, 0xf5,
+	0x0e, 0xed, 0x37, 0xba, 0xb4, 0x4b, 0x1b, 0x02, 0xd7, 0x1e, 0x5c, 0x89, 0x37, 0xf1, 0x22, 0x9e,
+	0xa4, 0xfd, 0x5e, 0x29, 0xa2, 0xc6, 0x9c, 0x13, 0xc6, 0x31, 0x77, 0xa9, 0x27, 0xff, 0x68, 0x7f,
+	0x2a, 0x90, 0x6d, 0x0a, 0x87, 0xcd, 0xd0, 0x1f, 0x42, 0xa0, 0xb2, 0x1e, 0xe5, 0x25, 0xa5, 0xa2,
+	0x54, 0x55, 0x53, 0x3c, 0xa3, 0x0f, 0x61, 0xc7, 0x0f, 0xa8, 0x4f, 0x19, 0x09, 0x2c, 0xd7, 0xb3,
+	0xc9, 0x4d, 0x69, 0x43, 0xfc, 0xcd, 0x4f, 0xbf, 0xbe, 0x0a, 0x3f, 0x22, 0x03, 0xb2, 0x3e, 0x0e,
+	0x88, 0xc7, 0xad, 0x80, 0x52, 0x5e, 0xda, 0xac, 0x28, 0xd5, 0x5c, 0x73, 0x77, 0x32, 0x2e, 0xe7,
+	0x19, 0xbb, 0xad, 0x31, 0xf7, 0x96, 0x9c, 0x6a, 0x87, 0x86, 0x66, 0x82, 0x44, 0x99, 0x94, 0x72,
+	0x74, 0x00, 0x10, 0xc6, 0x43, 0xa4, 0x89, 0x9a, 0x64, 0x92, 0x11, 0x20, 0x61, 0x71, 0x04, 0x6a,
+	0x9b, 0xda, 0xa3, 0x52, 0xaa, 0xa2, 0x54, 0xb3, 0x46, 0xa5, 0xbe, 0x94, 0x99, 0x7a, 0xec, 0x30,
+	0x4d, 0x6a, 0x8f, 0x4c, 0x81, 0xd6, 0x6e, 0x60, 0xf7, 0xd2, 0xed, 0x7a, 0xc4, 0x8e, 0x9f, 0xd5,
+	0x80, 0x94, 0x48, 0xb2, 0x38, 0x6c, 0xd6, 0x78, 0x7a, 0x1f, 0x97, 0x29, 0xa1, 0xa8, 0x01, 0x19,
+	0xe6, 0x76, 0x3d, 0xcc, 0x07, 0x01, 0x11, 0x69, 0x58, 0x89, 0xf7, 0xd3, 0xe3, 0x30, 0xde, 0x29,
+	0x46, 0xfb, 0x4b, 0x85, 0xc2, 0x52, 0x4c, 0xe8, 0x18, 0xf2, 0x01, 0xf6, 0x6c, 0x4c, 0xad, 0x80,
+	0x0c, 0x09, 0xee, 0x89, 0x00, 0xd6, 0x12, 0xe5, 0x24, 0xce, 0x14, 0x30, 0x74, 0x0c, 0x19, 0xc2,
+	0x1d, 0xdd, 0xb2, 0x31, 0xc7, 0xc2, 0x79, 0xd6, 0x78, 0xb2, 0x12, 0x74, 0x8b, 0x3b, 0xfa, 0x4b,
+	0xcc, 0xb1, 0x99, 0x26, 0xd1, 0x13, 0xaa, 0x41, 0xba, 0x1b, 0xe0, 0xab, 0x2b, 0x97, 0xbb, 0xc9,
+	0x65, 0x99, 0x41, 0x50, 0x1b, 0xd0, 0xac, 0xde, 0xac, 0x87, 0x99, 0xe3, 0x7a, 0x5d, 0x56, 0x52,
+	0x2b, 0x9b, 0xd5, 0xac, 0xf1, 0xc1, 0x8a, 0xbf, 0x8b, 0x08, 0x7a, 0x19, 0x21, 0x9b, 0xc5, 0xc9,
+	0xb8, 0x9c, 0x0b, 0xb9, 0xfb, 0xf8, 0xe6, 0x54, 0xd3, 0x8f, 0x35, 0x73, 0xd7, 0x5f, 0xc2, 0x30,
+	0x84, 0x01, 0xc9, 0x66, 0x5c, 0xf0, 0x91, 0x4a, 0xf0, 0xf1, 0x79, 0x04, 0x9d, 0xf9, 0x28, 0x4c,
+	0xc6, 0xe5, 0xec, 0xcc, 0x87, 0xa1, 0x99, 0xbb, 0x78, 0x09, 0xc2, 0xd0, 0x25, 0xe4, 0x62, 0xfd,
+	0xce, 0x4a, 0x5b, 0x82, 0xfc, 0x69, 0x02, 0xb9, 0x00, 0xcd, 0xf3, 0x22, 0x63, 0x37, 0x4e, 0x34,
+	0x73, 0x81, 0x04, 0x7d, 0x01, 0x69, 0x9b, 0xf8, 0x94, 0xb9, 0x9c, 0x95, 0xb6, 0x05, 0x61, 0x69,
+	0x85, 0xf0, 0xa5, 0x04, 0xac, 0x49, 0xc4, 0xcc, 0x16, 0x59, 0x50, 0x18, 0xd2, 0xde, 0xc0, 0xe3,
+	0x38, 0x18, 0x59, 0xe4, 0x26, 0xa4, 0x4b, 0x0b, 0xba, 0xe7, 0x2b, 0x74, 0xb2, 0x71, 0xbf, 0x9a,
+	0xa2, 0x5b, 0x37, 0x6b, 0xa9, 0x77, 0x86, 0x71, 0x00, 0xd3, 0x7e, 0x50, 0xa0, 0xb8, 0x5c, 0x1a,
+	0x74, 0x06, 0x69, 0x87, 0x60, 0x9b, 0x04, 0x96, 0x1e, 0xf5, 0x4f, 0x35, 0xc1, 0x5d, 0xac, 0x65,
+	0xcf, 0x85, 0x85, 0xb9, 0x2d, 0x2d, 0xf5, 0x18, 0x89, 0x21, 0xba, 0xe9, 0x7f, 0x90, 0x18, 0xda,
+	0x8f, 0x0a, 0x14, 0x97, 0xab, 0x8a, 0xce, 0x21, 0x1f, 0x4b, 0xb6, 0xa5, 0x47, 0x83, 0xf9, 0x6c,
+	0x85, 0x5e, 0x08, 0x0e, 0xb1, 0x63, 0x95, 0x5b, 0x28, 0x93, 0xbe, 0xcc, 0x64, 0x44, 0xa7, 0x7d,
+	0x30, 0x93, 0xa1, 0xfd, 0xba, 0x01, 0xdb, 0x51, 0x41, 0xd1, 0x27, 0x90, 0xf2, 0x03, 0x4a, 0xaf,
+	0x4a, 0x4a, 0x65, 0xb3, 0x9a, 0x6b, 0xbe, 0x33, 0x19, 0x97, 0x8b, 0xb1, 0x21, 0x3a, 0x7c, 0x11,
+	0xce, 0x91, 0x84, 0x20, 0x1d, 0xd4, 0xd8, 0x98, 0xbe, 0x9f, 0xd4, 0x24, 0x75, 0x31, 0xaa, 0x02,
+	0xba, 0x37, 0x56, 0x40, 0x15, 0xf3, 0x7a, 0x06, 0xe0, 0x0f, 0xda, 0x3d, 0xb7, 0x63, 0x5d, 0x93,
+	0x51, 0x24, 0x0e, 0xcf, 0x27, 0xe3, 0x72, 0x65, 0xee, 0xec, 0xe8, 0x44, 0xab, 0x30, 0x9f, 0x74,
+	0x6a, 0x1e, 0xee, 0x93, 0x53, 0xcd, 0x1f, 0xb4, 0xaf, 0xc9, 0x48, 0x33, 0x33, 0xd2, 0xee, 0x4b,
+	0x32, 0x42, 0xe7, 0xf0, 0xf8, 0x8d, 0xcb, 0x1d, 0x3b, 0xc0, 0x6f, 0x70, 0xcf, 0xea, 0x04, 0xc4,
+	0x26, 0x1e, 0x77, 0x71, 0x8f, 0xad, 0x97, 0xad, 0x30, 0xf4, 0x77, 0xe7, 0x06, 0x67, 0x73, 0x3c,
+	0x7a, 0x0c, 0x5b, 0xb8, 0x4f, 0x07, 0x9e, 0xd4, 0x74, 0xd5, 0x8c, 0xde, 0x16, 0xb5, 0x50, 0xfd,
+	0x0f, 0x5a, 0xf8, 0x0d, 0xe4, 0x17, 0xda, 0x18, 0x9d, 0x41, 0x8a, 0xf8, 0xb4, 0xe3, 0xc8, 0x75,
+	0xd3, 0xac, 0xfd, 0x3d, 0x2e, 0x7f, 0x1c, 0xdb, 0x6c, 0x7e, 0x30, 0x62, 0x7d, 0xcc, 0xdd, 0x4e,
+	0x0f, 0xb7, 0x59, 0x83, 0x70, 0xc7, 0xa8, 0xf1, 0x91, 0x4f, 0x58, 0xbd, 0x15, 0x1a, 0x99, 0xd2,
+	0x16, 0x7d, 0x04, 0x85, 0x21, 0xee, 0xb9, 0x36, 0xe6, 0x74, 0x71, 0x3f, 0xed, 0xcc, 0x3e, 0x8b,
+	0x2a, 0x6b, 0xb7, 0xf0, 0x68, 0xcd, 0x2c, 0x21, 0x03, 0xd4, 0x70, 0x00, 0xa3, 0x66, 0xdb, 0x5f,
+	0xa9, 0xd4, 0x02, 0xda, 0x14, 0xd8, 0x87, 0xaf, 0x81, 0xef, 0x15, 0x48, 0x4f, 0x95, 0x19, 0x1d,
+	0x41, 0x2e, 0x12, 0x02, 0xb9, 0xf7, 0x94, 0xa4, 0x82, 0x64, 0x23, 0x98, 0xd8, 0x7c, 0xcf, 0x20,
+	0x3f, 0xb5, 0xea, 0x88, 0x6a, 0xc8, 0x53, 0x4e, 0xa9, 0xce, 0x44, 0x4d, 0x0e, 0x00, 0xc4, 0xa2,
+	0xb2, 0x1c, 0xcc, 0x9c, 0x64, 0xb1, 0xcf, 0x08, 0xd0, 0x39, 0x66, 0x4e, 0x78, 0x03, 0xd8, 0x5d,
+	0x19, 0xd4, 0xb7, 0xff, 0x1e, 0x50, 0x87, 0x4c, 0xb8, 0xd9, 0xa5, 0x41, 0x2a, 0x71, 0xa9, 0x85,
+	0x98, 0x10, 0xaf, 0x7d, 0xab, 0xc0, 0x7b, 0x09, 0xaa, 0x84, 0x4e, 0x61, 0x4b, 0xea, 0x52, 0xd4,
+	0x03, 0xda, 0x7d, 0x37, 0x81, 0x48, 0xc9, 0x22, 0x8b, 0x87, 0x77, 0xc2, 0xcf, 0x0a, 0xa0, 0x55,
+	0xd5, 0x41, 0x9f, 0x41, 0xb4, 0xc2, 0x5c, 0xaf, 0x1b, 0x66, 0xd7, 0xed, 0x10, 0x26, 0x74, 0x46,
+	0x6d, 0xa2, 0xc9, 0xb8, 0xbc, 0x33, 0x5f, 0x76, 0x07, 0x47, 0x27, 0x9a, 0x59, 0x9c, 0x81, 0x5f,
+	0x49, 0x6c, 0x78, 0x31, 0x8a, 0x09, 0x4e, 0xe5, 0xbe, 0x35, 0x37, 0xd7, 0x9c, 0xc5, 0xf0, 0x37,
+	0xff, 0x3d, 0xfc, 0xe6, 0x77, 0xca, 0x2f, 0x77, 0xfb, 0xca, 0xef, 0x77, 0xfb, 0xca, 0x1f, 0x77,
+	0xfb, 0x0a, 0x3c, 0xa2, 0x41, 0x77, 0xd9, 0x55, 0xb3, 0x18, 0x4b, 0xd7, 0x45, 0x78, 0xcd, 0xbc,
+	0x50, 0xbe, 0x7e, 0x71, 0xdf, 0x5c, 0x0b, 0x6b, 0xec, 0xbb, 0xe2, 0xa5, 0x31, 0xd4, 0x7f, 0xda,
+	0x28, 0xb4, 0xa6, 0x9c, 0x2d, 0xc1, 0xf9, 0xdb, 0xfc, 0xcb, 0xeb, 0x16, 0x77, 0x5e, 0x0f, 0xf5,
+	0xf6, 0x96, 0xb8, 0xc1, 0x1e, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0xf1, 0xcc, 0xd2, 0xa8, 0x38,
+	0x0b, 0x00, 0x00,
 }
 
 func (m *BeaconBlock) Marshal() (dAtA []byte, err error) {
@@ -3276,7 +3279,7 @@ func (m *VoluntaryExit) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
diff --git a/eth/v1/beacon_block.proto b/eth/v1/beacon_block.proto
index 7a05d8d4..94bc9fe0 100644
--- a/eth/v1/beacon_block.proto
+++ b/eth/v1/beacon_block.proto
@@ -130,7 +130,7 @@ message Deposit {
 // validator signature.
 message VoluntaryExit {
     // The epoch on when exit request becomes valid.
-    uint64 epoch = 1;
+    uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // Index of the exiting validator.
     uint64 validator_index = 2;
diff --git a/eth/v1/beacon_chain_service.pb.go b/eth/v1/beacon_chain_service.pb.go
index 676b51c0..4805dd45 100755
--- a/eth/v1/beacon_chain_service.pb.go
+++ b/eth/v1/beacon_chain_service.pb.go
@@ -13,6 +13,7 @@ import (
 	_ "github.com/gogo/protobuf/gogoproto"
 	proto "github.com/gogo/protobuf/proto"
 	types "github.com/gogo/protobuf/types"
+	github_com_prysmaticlabs_eth2_types "github.com/prysmaticlabs/eth2-types"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
 	grpc "google.golang.org/grpc"
 	codes "google.golang.org/grpc/codes"
@@ -812,13 +813,13 @@ func (m *StateValidatorResponse) GetData() *ValidatorContainer {
 }
 
 type StateCommitteesRequest struct {
-	StateId              []byte   `protobuf:"bytes,1,opt,name=state_id,json=stateId,proto3" json:"state_id,omitempty"`
-	Epoch                uint64   `protobuf:"varint,2,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	Index                uint64   `protobuf:"varint,3,opt,name=index,proto3" json:"index,omitempty"`
-	Slot                 uint64   `protobuf:"varint,4,opt,name=slot,proto3" json:"slot,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	StateId              []byte                                    `protobuf:"bytes,1,opt,name=state_id,json=stateId,proto3" json:"state_id,omitempty"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,2,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	Index                uint64                                    `protobuf:"varint,3,opt,name=index,proto3" json:"index,omitempty"`
+	Slot                 uint64                                    `protobuf:"varint,4,opt,name=slot,proto3" json:"slot,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *StateCommitteesRequest) Reset()         { *m = StateCommitteesRequest{} }
@@ -861,7 +862,7 @@ func (m *StateCommitteesRequest) GetStateId() []byte {
 	return nil
 }
 
-func (m *StateCommitteesRequest) GetEpoch() uint64 {
+func (m *StateCommitteesRequest) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -1969,132 +1970,134 @@ func init() {
 func init() { proto.RegisterFile("eth/v1/beacon_chain_service.proto", fileDescriptor_33987dc4bca2a2e7) }
 
 var fileDescriptor_33987dc4bca2a2e7 = []byte{
-	// 2000 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x59, 0xcd, 0x6f, 0x1b, 0xc7,
-	0x15, 0xc7, 0x52, 0x8a, 0x65, 0x3e, 0x31, 0x96, 0x34, 0xd6, 0x07, 0x45, 0xcb, 0xfa, 0x18, 0x5b,
-	0x11, 0x15, 0x47, 0xa4, 0x2d, 0xc7, 0x71, 0xfc, 0x55, 0x34, 0x52, 0x14, 0x59, 0x86, 0x8b, 0x2a,
-	0xab, 0x46, 0x87, 0xd6, 0x01, 0xb1, 0x5c, 0x8e, 0xc8, 0xad, 0xc8, 0x1d, 0x76, 0x67, 0x48, 0x44,
-	0x36, 0x04, 0x07, 0x6d, 0x81, 0x02, 0xed, 0xad, 0x69, 0x81, 0xf6, 0x16, 0xa0, 0x97, 0x7e, 0xfc,
-	0x23, 0x45, 0x4f, 0x05, 0x7a, 0xe8, 0x2d, 0x28, 0x8c, 0x5e, 0x5a, 0xf4, 0xe4, 0xbf, 0xa0, 0xd8,
-	0xd9, 0xd9, 0xef, 0x5d, 0x2e, 0xe9, 0xdc, 0x38, 0x33, 0xef, 0xfd, 0xde, 0xef, 0xfd, 0x76, 0xf6,
-	0xed, 0x7b, 0x20, 0xac, 0x11, 0xde, 0xaa, 0xf6, 0x6f, 0x55, 0xeb, 0x44, 0xd3, 0xa9, 0x59, 0xd3,
-	0x5b, 0x9a, 0x61, 0xd6, 0x18, 0xb1, 0xfa, 0x86, 0x4e, 0x2a, 0x5d, 0x8b, 0x72, 0x8a, 0xa6, 0x08,
-	0x6f, 0x11, 0x8b, 0xf4, 0x3a, 0x15, 0xc2, 0x5b, 0x95, 0xfe, 0xad, 0xd2, 0x56, 0xd3, 0xe0, 0xad,
-	0x5e, 0xbd, 0xa2, 0xd3, 0x4e, 0xb5, 0x49, 0x9b, 0xb4, 0x2a, 0xec, 0xea, 0xbd, 0x13, 0xb1, 0x12,
-	0x0b, 0xf1, 0xcb, 0xf1, 0x2f, 0x2d, 0x35, 0x29, 0x6d, 0xb6, 0x49, 0x55, 0xeb, 0x1a, 0x55, 0xcd,
-	0x34, 0x29, 0xd7, 0xb8, 0x41, 0x4d, 0x26, 0x4f, 0xaf, 0xc8, 0x53, 0x0f, 0x83, 0x74, 0xba, 0xfc,
-	0x4c, 0x1e, 0xae, 0x44, 0x0f, 0xb9, 0xd1, 0x21, 0x8c, 0x6b, 0x9d, 0xae, 0x34, 0x28, 0x4a, 0xfa,
-	0x1a, 0xe7, 0xf6, 0xbe, 0x0d, 0x2c, 0x4f, 0x16, 0xc3, 0x89, 0xd5, 0xdb, 0x54, 0x3f, 0x4d, 0x3e,
-	0xb2, 0xfd, 0x64, 0xae, 0xa5, 0x79, 0x79, 0xd4, 0xd7, 0xda, 0x46, 0x43, 0xe3, 0xd4, 0x72, 0xf6,
-	0xf1, 0x9f, 0x72, 0x30, 0xb5, 0x4f, 0x4c, 0xc2, 0x0c, 0xa6, 0x12, 0xd6, 0xa5, 0x26, 0x23, 0xe8,
-	0x21, 0x8c, 0x37, 0x34, 0xae, 0x15, 0x95, 0x55, 0xa5, 0x3c, 0xb9, 0x5d, 0xae, 0x44, 0x64, 0xaa,
-	0x44, 0xec, 0xbd, 0xb5, 0xf0, 0x2a, 0xfd, 0x53, 0x81, 0x09, 0xb9, 0x83, 0x1e, 0x41, 0xa1, 0xe9,
-	0xfc, 0xac, 0xd9, 0x09, 0x4a, 0xc4, 0x52, 0xc5, 0xc9, 0xbe, 0xe2, 0x66, 0x5f, 0xf9, 0x81, 0x9b,
-	0xbd, 0x3a, 0x29, 0xed, 0xed, 0x1d, 0x74, 0x00, 0x0b, 0xae, 0xbb, 0xc7, 0x9b, 0xd5, 0x2c, 0x4a,
-	0x79, 0x31, 0xb7, 0xaa, 0x94, 0x0b, 0x3b, 0x33, 0xaf, 0xbf, 0x59, 0x79, 0x9b, 0xb1, 0xe7, 0x5b,
-	0xcc, 0x78, 0x4e, 0xee, 0xe3, 0xdb, 0xdb, 0x58, 0x9d, 0x93, 0x1e, 0xc7, 0x9e, 0x83, 0x4a, 0x29,
-	0x47, 0x3b, 0x30, 0xeb, 0x42, 0x9d, 0x50, 0xeb, 0xb4, 0xd6, 0x27, 0x16, 0x33, 0xa8, 0x59, 0x1c,
-	0x13, 0x38, 0xd3, 0xaf, 0xbf, 0x59, 0x29, 0xf8, 0x38, 0xef, 0x63, 0x15, 0x49, 0xeb, 0x4f, 0xa8,
-	0x75, 0x7a, 0xec, 0xd8, 0xe2, 0x4d, 0x28, 0x1c, 0xd9, 0x92, 0xaa, 0xe4, 0x27, 0x3d, 0xc2, 0x38,
-	0x5a, 0x84, 0x8b, 0x42, 0xe2, 0x9a, 0xd1, 0x10, 0x99, 0x15, 0xd4, 0x09, 0xb1, 0x3e, 0x68, 0xe0,
-	0xdf, 0x28, 0x30, 0xe3, 0xd8, 0x52, 0xca, 0x3d, 0x61, 0xbf, 0x1b, 0x12, 0xf6, 0xbd, 0x98, 0xb0,
-	0x31, 0x8f, 0xc0, 0x8e, 0x23, 0xee, 0x23, 0xc8, 0x7b, 0x5b, 0xe8, 0x26, 0x80, 0x13, 0x5f, 0x28,
-	0xa2, 0xa4, 0x29, 0x92, 0x67, 0xae, 0x07, 0xfe, 0x8e, 0x64, 0x65, 0x67, 0xe5, 0xb1, 0xda, 0x0c,
-	0xb1, 0x9a, 0x8b, 0xb1, 0x12, 0xc6, 0xc2, 0x04, 0xff, 0x2f, 0x07, 0x2b, 0x0e, 0x80, 0x61, 0x6a,
-	0x6d, 0x83, 0x9f, 0xed, 0xb6, 0x88, 0x7e, 0xda, 0xa5, 0x86, 0xe9, 0x27, 0xf9, 0x2c, 0x04, 0xf7,
-	0x38, 0x39, 0xc9, 0x74, 0xff, 0xd4, 0x73, 0x47, 0x80, 0xff, 0x2a, 0xb0, 0x90, 0x62, 0x81, 0x9e,
-	0x00, 0xea, 0x5a, 0xa4, 0x6f, 0xd0, 0x1e, 0xab, 0xfd, 0xb8, 0xc7, 0xb8, 0x71, 0x62, 0x90, 0x86,
-	0xe4, 0x71, 0x25, 0xc6, 0x23, 0x00, 0x3d, 0xe3, 0xba, 0x3d, 0x71, 0xbd, 0xd0, 0x63, 0x98, 0xd1,
-	0x7b, 0x96, 0x45, 0x4c, 0x1e, 0x80, 0xca, 0x65, 0x43, 0x4d, 0x4b, 0x2f, 0x1f, 0xe9, 0x1e, 0xe4,
-	0x4f, 0x04, 0xd7, 0xe7, 0xa4, 0x21, 0xae, 0x5b, 0x06, 0x82, 0x6f, 0x8d, 0x7f, 0x04, 0xf3, 0x22,
-	0xd7, 0xc0, 0x5d, 0xce, 0xbc, 0x7a, 0xe8, 0x12, 0xe4, 0x0c, 0x9b, 0xea, 0x58, 0xb9, 0xa0, 0xe6,
-	0x8c, 0x06, 0x9a, 0x87, 0x0b, 0xf6, 0x51, 0x8f, 0x89, 0xe0, 0x79, 0x55, 0xae, 0xf0, 0x1e, 0x14,
-	0x3d, 0xdc, 0x1d, 0xad, 0xad, 0x99, 0x3a, 0x19, 0x0d, 0x3e, 0x6f, 0xc3, 0x63, 0x55, 0x3e, 0x8f,
-	0x20, 0x47, 0x79, 0x13, 0xee, 0x7a, 0x37, 0x61, 0xac, 0x3c, 0xb9, 0x7d, 0x2d, 0x96, 0xb4, 0xe7,
-	0xb2, 0x4b, 0x4d, 0xae, 0x19, 0x26, 0xb1, 0xe4, 0x35, 0x53, 0x61, 0x31, 0x81, 0x9a, 0x44, 0xbd,
-	0x13, 0x42, 0x5d, 0x4b, 0x47, 0x95, 0x9e, 0x12, 0x73, 0x07, 0xa6, 0xa3, 0x27, 0x68, 0x16, 0xde,
-	0x32, 0xcc, 0x06, 0xf9, 0x42, 0xe4, 0x38, 0xae, 0x3a, 0x0b, 0x54, 0x84, 0x89, 0xba, 0x63, 0x20,
-	0x1e, 0xf8, 0xb8, 0xea, 0x2e, 0xf1, 0x67, 0x30, 0x17, 0xce, 0x75, 0x08, 0xbd, 0xd6, 0xa0, 0xe0,
-	0xd5, 0xae, 0x9a, 0xe1, 0xdc, 0xa1, 0x82, 0x3a, 0xe9, 0xed, 0x1d, 0x34, 0xf0, 0xa7, 0xd1, 0xc7,
-	0x9c, 0xa0, 0xa0, 0x32, 0x9a, 0x82, 0x4c, 0x42, 0xee, 0xd2, 0x4e, 0xc7, 0xe0, 0x9c, 0x0c, 0xf5,
-	0x68, 0x67, 0xe1, 0x2d, 0xd2, 0xa5, 0x7a, 0x4b, 0xa6, 0xed, 0x2c, 0x7c, 0x91, 0xc6, 0x82, 0x22,
-	0x21, 0x18, 0x67, 0x6d, 0xca, 0x8b, 0xe3, 0x62, 0x53, 0xfc, 0xc6, 0x07, 0xf2, 0x2a, 0x04, 0x83,
-	0xca, 0x44, 0x2a, 0xa1, 0x87, 0x56, 0x8a, 0xdf, 0x7f, 0xd7, 0x45, 0xf2, 0xff, 0x1e, 0x2c, 0xee,
-	0xd8, 0x1f, 0xb6, 0x8f, 0xfc, 0xcf, 0x9f, 0x0f, 0x76, 0x33, 0x04, 0xb6, 0x14, 0x03, 0x0b, 0x38,
-	0x49, 0xb8, 0x07, 0x80, 0x04, 0x9c, 0x5d, 0x04, 0x3d, 0xa9, 0xd0, 0x3a, 0x8c, 0x0f, 0xae, 0x9c,
-	0xe2, 0x18, 0x3f, 0x85, 0x19, 0xcf, 0x79, 0xe8, 0x27, 0x13, 0x0f, 0x27, 0xa9, 0x7c, 0x0e, 0x97,
-	0xc5, 0xd9, 0x63, 0xa2, 0x35, 0x88, 0xff, 0x42, 0xbb, 0x7a, 0x2a, 0xbe, 0x9e, 0x68, 0x1b, 0x26,
-	0xbb, 0x9a, 0x28, 0x41, 0x83, 0x3f, 0x79, 0xe0, 0x58, 0x89, 0x0a, 0xff, 0x29, 0xcc, 0x86, 0xe1,
-	0x25, 0xdf, 0x7b, 0x21, 0xcd, 0xd6, 0x93, 0xf9, 0x3a, 0x4e, 0x51, 0xc6, 0x9b, 0x50, 0x70, 0xb2,
-	0xf1, 0x6f, 0x90, 0x68, 0x3a, 0x02, 0x37, 0x48, 0xac, 0x0f, 0x1a, 0xf8, 0x30, 0x94, 0x5c, 0x42,
-	0x70, 0x65, 0xd4, 0xe0, 0x5f, 0x2b, 0xa1, 0x84, 0x46, 0x7d, 0x78, 0x68, 0x09, 0xf2, 0xba, 0x66,
-	0x52, 0xd3, 0xd0, 0xb5, 0xb6, 0x50, 0xf0, 0xa2, 0xea, 0x6f, 0xa0, 0x5d, 0xb8, 0xd0, 0x12, 0xb8,
-	0xb2, 0x30, 0xdf, 0x88, 0x53, 0x13, 0xad, 0x54, 0x22, 0x41, 0xe9, 0x8a, 0x7f, 0xa5, 0x40, 0x29,
-	0xdd, 0x0c, 0x3d, 0x84, 0x89, 0x0e, 0x61, 0x4c, 0x6b, 0xba, 0xed, 0x0f, 0xce, 0x0e, 0xa2, 0xba,
-	0x2e, 0xa8, 0x0a, 0x79, 0x66, 0x34, 0x4d, 0x8d, 0xf7, 0x2c, 0x92, 0x7c, 0x03, 0xee, 0x7d, 0x60,
-	0x7f, 0xe2, 0x5d, 0x1b, 0xfc, 0x04, 0xde, 0x96, 0x4f, 0x6b, 0x58, 0xf1, 0xfd, 0xe0, 0x51, 0xf1,
-	0x5f, 0xc2, 0x6c, 0xd2, 0x29, 0xfa, 0x20, 0x9a, 0xd2, 0xd2, 0x20, 0xd4, 0x6f, 0x91, 0xcc, 0x31,
-	0x2c, 0x04, 0x2b, 0xc0, 0x21, 0xa5, 0xed, 0x41, 0x2f, 0xcc, 0x06, 0x4c, 0xe9, 0x6e, 0x21, 0xa9,
-	0x39, 0x45, 0xcb, 0x29, 0x65, 0x97, 0xbc, 0xed, 0x03, 0x7b, 0x17, 0x3f, 0x85, 0x62, 0x1c, 0xf7,
-	0x8d, 0xab, 0xcb, 0x31, 0x5c, 0x75, 0x36, 0x89, 0x75, 0xd4, 0xd6, 0x58, 0xcb, 0x30, 0x9b, 0x61,
-	0xc8, 0xac, 0x4f, 0x56, 0xd4, 0x5b, 0xe2, 0x7e, 0x06, 0x4b, 0x87, 0x16, 0xed, 0x52, 0xe6, 0x9f,
-	0x8c, 0x04, 0x1b, 0x75, 0xf6, 0xe8, 0x96, 0x8e, 0x69, 0xbb, 0x67, 0x72, 0xcd, 0x3a, 0xdb, 0xfb,
-	0xc2, 0xe0, 0x61, 0xae, 0x1f, 0x86, 0x40, 0xaf, 0xc7, 0xdb, 0x37, 0xa3, 0x69, 0x92, 0x46, 0x08,
-	0x40, 0xe2, 0x7e, 0x04, 0xb3, 0x76, 0xab, 0x78, 0xa4, 0xb7, 0x48, 0xa3, 0xd7, 0x26, 0x09, 0xfd,
-	0xe5, 0x58, 0x56, 0x7f, 0xf9, 0x73, 0x05, 0x0a, 0x47, 0x5d, 0xa2, 0x7b, 0xbe, 0x0f, 0x42, 0xbe,
-	0x1b, 0x71, 0x36, 0x01, 0xe3, 0xca, 0xc7, 0x1a, 0xd7, 0xf6, 0x4c, 0x6e, 0x9d, 0xc9, 0x5e, 0xf1,
-	0x2e, 0xe4, 0xbd, 0x2d, 0x34, 0x0d, 0x63, 0xa7, 0xe4, 0x4c, 0x5c, 0x97, 0xbc, 0x6a, 0xff, 0xb4,
-	0x3f, 0x6c, 0x7d, 0xad, 0xdd, 0x73, 0x6e, 0x62, 0x5e, 0x75, 0x16, 0xf7, 0x73, 0x1f, 0x2a, 0xf8,
-	0xfb, 0xb0, 0xf0, 0x31, 0xe9, 0x52, 0x66, 0x88, 0xea, 0x6d, 0x69, 0xba, 0x5f, 0xf7, 0xdf, 0x0f,
-	0xbd, 0x4d, 0xab, 0x31, 0x42, 0x51, 0x3f, 0x27, 0xaf, 0x4f, 0x60, 0x2a, 0x72, 0x60, 0x57, 0x51,
-	0x67, 0x26, 0x95, 0x55, 0x74, 0x5c, 0x9d, 0x10, 0xeb, 0x83, 0x86, 0xdd, 0x80, 0x68, 0x8d, 0x86,
-	0x45, 0x18, 0x93, 0xd4, 0xdc, 0xe5, 0xf6, 0x7f, 0x4a, 0x30, 0xe9, 0xbc, 0x59, 0xbb, 0xb6, 0x2d,
-	0x3a, 0x01, 0xd8, 0x27, 0xdc, 0x9d, 0xb6, 0xe6, 0x63, 0x73, 0xd5, 0x9e, 0x3d, 0x72, 0x96, 0x56,
-	0xb3, 0x26, 0x38, 0xbc, 0xfc, 0xd3, 0x7f, 0xfc, 0xfb, 0xab, 0x5c, 0x11, 0xcd, 0x57, 0x43, 0x13,
-	0x64, 0x55, 0x0e, 0x41, 0xe8, 0x4b, 0x05, 0x0a, 0xfb, 0x84, 0xfb, 0xa3, 0xc7, 0xd5, 0x94, 0xd9,
-	0xc5, 0x79, 0x39, 0x4b, 0x38, 0x7b, 0xb4, 0xc1, 0x5b, 0x22, 0xe6, 0x06, 0x5a, 0x8f, 0xc4, 0x14,
-	0xdd, 0x08, 0xab, 0xbe, 0x70, 0xbb, 0x94, 0xf3, 0xaa, 0x28, 0xe4, 0x41, 0x0a, 0xf6, 0x8d, 0x79,
-	0x43, 0x0a, 0xc1, 0xc9, 0x67, 0x04, 0x0a, 0xf6, 0xcc, 0x88, 0xfe, 0xa8, 0xc0, 0xfc, 0x3e, 0xe1,
-	0xf1, 0xc9, 0x83, 0x65, 0x91, 0xb9, 0x39, 0xea, 0x14, 0x84, 0x1f, 0x09, 0x6a, 0x77, 0xd1, 0x9d,
-	0x6c, 0x6a, 0x12, 0xa4, 0xa6, 0x07, 0xf8, 0xfc, 0xc1, 0x51, 0xcb, 0xeb, 0x0f, 0xd1, 0x3b, 0xc9,
-	0x0c, 0xa2, 0x9d, 0x6c, 0x69, 0x23, 0xd3, 0x4e, 0x12, 0xdc, 0x11, 0x04, 0x1f, 0xa2, 0xfb, 0x99,
-	0x04, 0xfd, 0xd1, 0xbd, 0xfa, 0x22, 0xd8, 0x0a, 0x9f, 0xa3, 0xdf, 0x29, 0x70, 0xe9, 0xa9, 0xc1,
-	0x7c, 0x9a, 0x0c, 0x65, 0xc5, 0x77, 0x1b, 0xa6, 0x52, 0x39, 0xdb, 0x50, 0x32, 0xbd, 0x2d, 0x98,
-	0x6e, 0xa1, 0x1b, 0x23, 0x30, 0x45, 0x7f, 0x51, 0x60, 0x2e, 0x44, 0xcd, 0x9d, 0x43, 0xd0, 0x66,
-	0xe6, 0xc4, 0xe1, 0x71, 0x7c, 0x77, 0x18, 0x53, 0xc9, 0xf2, 0x81, 0x60, 0x79, 0x07, 0xdd, 0x1e,
-	0x9e, 0x65, 0xad, 0xee, 0x72, 0xfa, 0x5a, 0x0a, 0xe9, 0x77, 0xde, 0x69, 0x42, 0xc6, 0x06, 0x82,
-	0x34, 0x21, 0xe3, 0x4d, 0xfc, 0x08, 0x14, 0xbd, 0xcf, 0x2d, 0xab, 0xbe, 0x10, 0x53, 0xc4, 0xb9,
-	0xfd, 0xfe, 0x5e, 0xda, 0x27, 0x3c, 0xd0, 0xe4, 0x24, 0xbc, 0x34, 0xc1, 0x3e, 0xb3, 0x74, 0x7d,
-	0x50, 0x9f, 0xe8, 0x91, 0xda, 0x14, 0xa4, 0xae, 0xa1, 0xb5, 0x08, 0x29, 0xa7, 0x39, 0x63, 0xd5,
-	0x17, 0x6e, 0xaf, 0x7a, 0x8e, 0x5e, 0xc2, 0xb4, 0x2d, 0x52, 0xb0, 0x3f, 0x46, 0x03, 0x83, 0x78,
-	0x1a, 0xad, 0x67, 0x58, 0x65, 0x94, 0x51, 0xc9, 0x05, 0x9d, 0xc2, 0xe4, 0x51, 0xaf, 0xde, 0x31,
-	0x1c, 0x0a, 0x68, 0xb8, 0x5e, 0xac, 0x94, 0x52, 0xd6, 0xf1, 0x55, 0x11, 0x6d, 0x01, 0xcf, 0x45,
-	0xa2, 0x89, 0x84, 0x19, 0x62, 0x70, 0xd1, 0xd5, 0x3b, 0x4b, 0xe9, 0xe5, 0xb4, 0x63, 0x99, 0x57,
-	0x59, 0x44, 0xc2, 0x68, 0x35, 0x31, 0x52, 0x50, 0x62, 0x59, 0xa5, 0xbd, 0xe9, 0x27, 0x2b, 0x32,
-	0x4e, 0x1f, 0x9c, 0x32, 0xab, 0x74, 0x2c, 0xba, 0xf3, 0xa1, 0xf8, 0xbd, 0x7c, 0x73, 0x63, 0xf3,
-	0x63, 0x16, 0x97, 0x77, 0x93, 0x8f, 0x93, 0x46, 0x50, 0x7c, 0x47, 0x70, 0xaa, 0xa2, 0xad, 0x4c,
-	0x4e, 0x5a, 0x90, 0xc1, 0x6f, 0x15, 0x98, 0xb5, 0xb9, 0xd9, 0x1d, 0x57, 0x88, 0x5a, 0x79, 0x50,
-	0x9b, 0x19, 0xec, 0x7b, 0x4b, 0x9b, 0x43, 0x58, 0x66, 0x3c, 0xb6, 0x2e, 0xa5, 0xed, 0x30, 0x2f,
-	0x06, 0x33, 0xce, 0xc5, 0x0c, 0x60, 0xa1, 0x81, 0xad, 0x6f, 0xea, 0xad, 0x94, 0x41, 0x71, 0x76,
-	0xd0, 0xaf, 0x14, 0x58, 0x0c, 0x8b, 0x11, 0xe8, 0x9f, 0x53, 0x9b, 0x99, 0x4a, 0x66, 0xf7, 0x1c,
-	0x16, 0xa1, 0x22, 0xf8, 0x94, 0xd1, 0x3b, 0xe9, 0x7c, 0x88, 0x55, 0x63, 0x5e, 0xdc, 0x9f, 0x29,
-	0x30, 0x1f, 0xd4, 0xc2, 0xc7, 0x45, 0xd9, 0x8d, 0x7b, 0xaa, 0x2a, 0x92, 0x05, 0x1e, 0x96, 0xc5,
-	0xaf, 0x03, 0xda, 0x44, 0xdb, 0xf8, 0x74, 0x6d, 0xb6, 0x32, 0x47, 0x80, 0xe1, 0xa5, 0xe9, 0x4a,
-	0xcf, 0x44, 0x69, 0xa2, 0xb0, 0x28, 0x7b, 0xf8, 0x78, 0x33, 0x69, 0x12, 0x58, 0xfc, 0x52, 0x81,
-	0x79, 0x57, 0x9a, 0xf0, 0x1c, 0x93, 0xaa, 0x4b, 0x7c, 0xac, 0x4f, 0x1f, 0x80, 0xf0, 0x0d, 0xc1,
-	0x67, 0x1d, 0x5d, 0x4b, 0xe2, 0xd3, 0x77, 0xfd, 0x6a, 0x44, 0x44, 0xfc, 0x52, 0x81, 0xcb, 0x8e,
-	0x24, 0x21, 0x44, 0x34, 0xd4, 0xdc, 0x94, 0x2a, 0x89, 0xa4, 0x80, 0x87, 0xa2, 0xd0, 0x87, 0x29,
-	0xbb, 0x29, 0x0d, 0x4c, 0x5e, 0xa9, 0x3a, 0xac, 0x27, 0xce, 0x5e, 0xd1, 0x81, 0x0d, 0x5f, 0x17,
-	0xe1, 0x97, 0xd1, 0x92, 0x1b, 0x5e, 0xa7, 0xe6, 0x89, 0xd1, 0x14, 0x4d, 0x70, 0x8d, 0xb9, 0x41,
-	0x3e, 0x87, 0x09, 0xbb, 0x1f, 0xef, 0x12, 0x3d, 0x35, 0xde, 0xd5, 0x81, 0xf3, 0x1a, 0xbe, 0x22,
-	0xe2, 0xcc, 0xa1, 0xcb, 0x91, 0x38, 0xcc, 0xc6, 0x7c, 0x09, 0x68, 0x9f, 0xf0, 0xe8, 0xd4, 0x94,
-	0x16, 0xa9, 0x9c, 0x39, 0x88, 0xb9, 0x41, 0x37, 0x44, 0xd0, 0x35, 0xb4, 0x12, 0x09, 0xda, 0x70,
-	0xec, 0x6b, 0xba, 0x74, 0xd8, 0xf9, 0x85, 0xf2, 0xd7, 0x57, 0xcb, 0xca, 0xdf, 0x5f, 0x2d, 0x2b,
-	0xff, 0x7a, 0xb5, 0xac, 0xc0, 0x65, 0x6a, 0x35, 0xa3, 0x41, 0x76, 0xa6, 0x03, 0xc3, 0xd8, 0xa1,
-	0xcd, 0xe8, 0x50, 0xf9, 0xe1, 0x7b, 0x81, 0x3f, 0x11, 0xbb, 0xd6, 0x19, 0xeb, 0x68, 0xdc, 0xd0,
-	0xdb, 0x5a, 0x9d, 0x55, 0x5d, 0x6f, 0xad, 0x6b, 0x30, 0x19, 0xfd, 0xcf, 0xb9, 0xa9, 0x3d, 0x17,
-	0x73, 0x4f, 0x60, 0xfe, 0xcd, 0xdf, 0x79, 0xb6, 0xc7, 0x5b, 0xcf, 0xfa, 0xb7, 0xea, 0x17, 0x44,
-	0xb2, 0xb7, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x56, 0xf8, 0x2c, 0xd3, 0x1c, 0x00, 0x00,
+	// 2024 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xcd, 0x6f, 0x1b, 0xc7,
+	0x15, 0xc7, 0x4a, 0x8a, 0x65, 0x3e, 0x31, 0x96, 0x34, 0xd6, 0x27, 0x2d, 0xeb, 0x63, 0x6c, 0x45,
+	0x54, 0x1c, 0x91, 0xb6, 0x1c, 0xc7, 0xf1, 0x57, 0xd1, 0x48, 0x51, 0x64, 0x19, 0x2e, 0xaa, 0xac,
+	0x1a, 0x1d, 0x5a, 0x07, 0xc4, 0x72, 0x39, 0x22, 0xb7, 0x22, 0x77, 0xb6, 0x3b, 0x43, 0x22, 0xb2,
+	0x61, 0x38, 0x68, 0x0b, 0x14, 0x68, 0x6f, 0x4d, 0x0b, 0xb4, 0xb7, 0xa0, 0xbd, 0xf4, 0xe3, 0x1f,
+	0x29, 0x7a, 0x2a, 0xd0, 0x43, 0x6f, 0x46, 0x61, 0xf4, 0xd2, 0xa2, 0x27, 0x1f, 0x7b, 0x2a, 0x76,
+	0x76, 0xf6, 0x7b, 0x97, 0x4b, 0x3a, 0x37, 0xce, 0xcc, 0x7b, 0xbf, 0xf7, 0x7b, 0xbf, 0x9d, 0x7d,
+	0xfb, 0x1e, 0x61, 0x8d, 0xf0, 0x56, 0xb5, 0x77, 0xa3, 0x5a, 0x27, 0x9a, 0x4e, 0xcd, 0x9a, 0xde,
+	0xd2, 0x0c, 0xb3, 0xc6, 0x88, 0xdd, 0x33, 0x74, 0x52, 0xb1, 0x6c, 0xca, 0x29, 0x9a, 0x24, 0xbc,
+	0x45, 0x6c, 0xd2, 0xed, 0x54, 0x08, 0x6f, 0x55, 0x7a, 0x37, 0x4a, 0x5b, 0x4d, 0x83, 0xb7, 0xba,
+	0xf5, 0x8a, 0x4e, 0x3b, 0xd5, 0x26, 0x6d, 0xd2, 0xaa, 0xb0, 0xab, 0x77, 0x4f, 0xc4, 0x4a, 0x2c,
+	0xc4, 0x2f, 0xd7, 0xbf, 0xb4, 0xd4, 0xa4, 0xb4, 0xd9, 0x26, 0x55, 0xcd, 0x32, 0xaa, 0x9a, 0x69,
+	0x52, 0xae, 0x71, 0x83, 0x9a, 0x4c, 0x9e, 0x5e, 0x92, 0xa7, 0x3e, 0x06, 0xe9, 0x58, 0xfc, 0x4c,
+	0x1e, 0xae, 0xc4, 0x0f, 0xb9, 0xd1, 0x21, 0x8c, 0x6b, 0x1d, 0x4b, 0x1a, 0x2c, 0x48, 0xfa, 0x1a,
+	0xe7, 0xce, 0xbe, 0x03, 0x2c, 0x4f, 0x16, 0xa3, 0x89, 0xd5, 0xdb, 0x54, 0x3f, 0x4d, 0x3f, 0x72,
+	0xfc, 0x64, 0xae, 0xa5, 0x39, 0x79, 0xd4, 0xd3, 0xda, 0x46, 0x43, 0xe3, 0xd4, 0x76, 0xf7, 0xf1,
+	0x1f, 0x47, 0x60, 0x72, 0x9f, 0x98, 0x84, 0x19, 0x4c, 0x25, 0xcc, 0xa2, 0x26, 0x23, 0xe8, 0x3e,
+	0x8c, 0x35, 0x34, 0xae, 0x2d, 0x28, 0xab, 0x4a, 0x79, 0x62, 0xbb, 0x5c, 0x89, 0xc9, 0x54, 0x89,
+	0xd9, 0xfb, 0x6b, 0xe1, 0x55, 0xfa, 0x87, 0x02, 0xe3, 0x72, 0x07, 0x3d, 0x80, 0x62, 0xd3, 0xfd,
+	0x59, 0x73, 0x12, 0x94, 0x88, 0xa5, 0x8a, 0x9b, 0x7d, 0xc5, 0xcb, 0xbe, 0xf2, 0x3d, 0x2f, 0x7b,
+	0x75, 0x42, 0xda, 0x3b, 0x3b, 0xe8, 0x00, 0xe6, 0x3d, 0x77, 0x9f, 0x37, 0xab, 0xd9, 0x94, 0xf2,
+	0x85, 0x91, 0x55, 0xa5, 0x5c, 0xdc, 0x99, 0x7e, 0xfd, 0x72, 0xe5, 0x6d, 0xc6, 0x9e, 0x6e, 0x31,
+	0xe3, 0x29, 0xb9, 0x8b, 0x6f, 0x6e, 0x63, 0x75, 0x56, 0x7a, 0x1c, 0xfb, 0x0e, 0x2a, 0xa5, 0x1c,
+	0xed, 0xc0, 0x8c, 0x07, 0x75, 0x42, 0xed, 0xd3, 0x5a, 0x8f, 0xd8, 0xcc, 0xa0, 0xe6, 0xc2, 0xa8,
+	0xc0, 0x99, 0x7a, 0xfd, 0x72, 0xa5, 0x18, 0xe0, 0xbc, 0x8f, 0x55, 0x24, 0xad, 0x3f, 0xa1, 0xf6,
+	0xe9, 0xb1, 0x6b, 0x8b, 0x37, 0xa1, 0x78, 0xe4, 0x48, 0xaa, 0x92, 0x1f, 0x75, 0x09, 0xe3, 0x68,
+	0x11, 0xce, 0x0b, 0x89, 0x6b, 0x46, 0x43, 0x64, 0x56, 0x54, 0xc7, 0xc5, 0xfa, 0xa0, 0x81, 0x7f,
+	0xa5, 0xc0, 0xb4, 0x6b, 0x4b, 0x29, 0xf7, 0x85, 0xfd, 0x76, 0x44, 0xd8, 0xf7, 0x12, 0xc2, 0x26,
+	0x3c, 0x42, 0x3b, 0xae, 0xb8, 0x0f, 0xa0, 0xe0, 0x6f, 0xa1, 0xeb, 0x00, 0x6e, 0x7c, 0xa1, 0x88,
+	0x92, 0xa5, 0x48, 0x81, 0x79, 0x1e, 0xf8, 0x5b, 0x92, 0x95, 0x93, 0x95, 0xcf, 0x6a, 0x33, 0xc2,
+	0x6a, 0x36, 0xc1, 0x4a, 0x18, 0x0b, 0x13, 0xfc, 0xdf, 0x11, 0x58, 0x71, 0x01, 0x0c, 0x53, 0x6b,
+	0x1b, 0xfc, 0x6c, 0xb7, 0x45, 0xf4, 0x53, 0x8b, 0x1a, 0x66, 0x90, 0xe4, 0x93, 0x08, 0xdc, 0xc3,
+	0xf4, 0x24, 0xb3, 0xfd, 0x33, 0xcf, 0x5d, 0x01, 0xfe, 0xa3, 0xc0, 0x7c, 0x86, 0x05, 0x7a, 0x04,
+	0xc8, 0xb2, 0x49, 0xcf, 0xa0, 0x5d, 0x56, 0xfb, 0x61, 0x97, 0x71, 0xe3, 0xc4, 0x20, 0x0d, 0xc9,
+	0xe3, 0x52, 0x82, 0x47, 0x08, 0x7a, 0xda, 0x73, 0x7b, 0xe4, 0x79, 0xa1, 0x87, 0x30, 0xad, 0x77,
+	0x6d, 0x9b, 0x98, 0x3c, 0x04, 0x35, 0x92, 0x0f, 0x35, 0x25, 0xbd, 0x02, 0xa4, 0x3b, 0x50, 0x38,
+	0x11, 0x5c, 0x9f, 0x92, 0x86, 0xb8, 0x6e, 0x39, 0x08, 0x81, 0x35, 0xfe, 0x01, 0xcc, 0x89, 0x5c,
+	0x43, 0x77, 0x39, 0xf7, 0xea, 0xa1, 0x0b, 0x30, 0x62, 0x38, 0x54, 0x47, 0xcb, 0x45, 0x75, 0xc4,
+	0x68, 0xa0, 0x39, 0x38, 0xe7, 0x1c, 0x75, 0x99, 0x08, 0x5e, 0x50, 0xe5, 0x0a, 0xef, 0xc1, 0x82,
+	0x8f, 0xbb, 0xa3, 0xb5, 0x35, 0x53, 0x27, 0xc3, 0xc1, 0x17, 0x1c, 0x78, 0xac, 0xca, 0xe7, 0x11,
+	0xe6, 0x28, 0x6f, 0xc2, 0x6d, 0xff, 0x26, 0x8c, 0x96, 0x27, 0xb6, 0xaf, 0x24, 0x92, 0xf6, 0x5d,
+	0x76, 0xa9, 0xc9, 0x35, 0xc3, 0x24, 0xb6, 0xbc, 0x66, 0x2a, 0x2c, 0xa6, 0x50, 0x93, 0xa8, 0xb7,
+	0x22, 0xa8, 0x6b, 0xd9, 0xa8, 0xd2, 0x53, 0x62, 0xee, 0xc0, 0x54, 0xfc, 0x04, 0xcd, 0xc0, 0x5b,
+	0x86, 0xd9, 0x20, 0x5f, 0x88, 0x1c, 0xc7, 0x54, 0x77, 0x81, 0x16, 0x60, 0xbc, 0xee, 0x1a, 0x88,
+	0x07, 0x3e, 0xa6, 0x7a, 0x4b, 0xfc, 0x19, 0xcc, 0x46, 0x73, 0x1d, 0x40, 0xaf, 0x35, 0x28, 0xfa,
+	0xb5, 0xab, 0x66, 0xb8, 0x77, 0xa8, 0xa8, 0x4e, 0xf8, 0x7b, 0x07, 0x0d, 0xfc, 0x69, 0xfc, 0x31,
+	0xa7, 0x28, 0xa8, 0x0c, 0xa7, 0xe0, 0xef, 0x14, 0x89, 0xb9, 0x4b, 0x3b, 0x1d, 0x83, 0x73, 0x32,
+	0xd0, 0xb3, 0xdd, 0x85, 0xb7, 0x88, 0x45, 0xf5, 0x96, 0x9b, 0xf7, 0xce, 0xd6, 0xff, 0x5e, 0xae,
+	0x6c, 0x86, 0x3e, 0x89, 0x96, 0x7d, 0xc6, 0x3a, 0x1a, 0x37, 0xf4, 0xb6, 0x56, 0x67, 0x55, 0xc2,
+	0x5b, 0xdb, 0x5b, 0xfc, 0xcc, 0x22, 0xac, 0xb2, 0xe7, 0x38, 0xa9, 0xae, 0x6f, 0x20, 0xea, 0x68,
+	0x58, 0x54, 0x04, 0x63, 0xac, 0x4d, 0xf9, 0xc2, 0x98, 0xd8, 0x14, 0xbf, 0xf1, 0x81, 0xbc, 0x3a,
+	0x61, 0x8e, 0x32, 0xf1, 0x4a, 0xe4, 0x21, 0x97, 0x92, 0xef, 0x8b, 0xe7, 0x22, 0xf3, 0xfd, 0x0e,
+	0x2c, 0xee, 0x38, 0x1f, 0xc2, 0x8f, 0x82, 0xcf, 0x65, 0x00, 0x76, 0x3d, 0x02, 0xb6, 0x94, 0x00,
+	0x0b, 0x39, 0x49, 0xb8, 0x7b, 0x80, 0x04, 0x9c, 0x53, 0x34, 0x7d, 0x69, 0xd1, 0x3a, 0x8c, 0xf5,
+	0xaf, 0xb4, 0xe2, 0x18, 0x3f, 0x86, 0x69, 0xdf, 0x79, 0xe0, 0x27, 0x99, 0x0c, 0x27, 0xa9, 0x7c,
+	0x0e, 0x17, 0xc5, 0xd9, 0x43, 0xa2, 0x35, 0x48, 0x50, 0x00, 0x3c, 0x3d, 0x95, 0x40, 0x4f, 0xb4,
+	0x0d, 0x13, 0x96, 0x26, 0x4a, 0x56, 0xff, 0x4f, 0x24, 0xb8, 0x56, 0xe2, 0x8b, 0xf0, 0x29, 0xcc,
+	0x44, 0xe1, 0x25, 0xdf, 0x3b, 0x11, 0xcd, 0xd6, 0xd3, 0xf9, 0xba, 0x4e, 0x71, 0xc6, 0x9b, 0x50,
+	0x74, 0xb3, 0x09, 0x2e, 0x9c, 0x68, 0x52, 0x42, 0x17, 0x4e, 0xac, 0x0f, 0x1a, 0xf8, 0x30, 0x92,
+	0x5c, 0x4a, 0x70, 0x65, 0xd8, 0xe0, 0x5f, 0x2b, 0x91, 0x84, 0x86, 0x7d, 0x78, 0x68, 0x09, 0x0a,
+	0xba, 0x66, 0x52, 0xd3, 0xd0, 0xb5, 0xb6, 0x50, 0xf0, 0xbc, 0x1a, 0x6c, 0xa0, 0x5d, 0x38, 0xd7,
+	0x12, 0xb8, 0xb2, 0x90, 0x5f, 0x4b, 0x52, 0x13, 0xad, 0x57, 0x2a, 0x41, 0xe9, 0x8a, 0x7f, 0xa1,
+	0x40, 0x29, 0xdb, 0x0c, 0xdd, 0x87, 0xf1, 0x0e, 0x61, 0x4c, 0x6b, 0x7a, 0xed, 0x12, 0xce, 0x0f,
+	0xa2, 0x7a, 0x2e, 0xa8, 0x0a, 0x05, 0x66, 0x34, 0x4d, 0x8d, 0x77, 0x6d, 0x92, 0x7e, 0x03, 0xee,
+	0x7c, 0xe0, 0xb4, 0x04, 0x9e, 0x0d, 0x7e, 0x04, 0x6f, 0xcb, 0xa7, 0x35, 0xa8, 0xf8, 0x41, 0xf0,
+	0xb8, 0xf8, 0x2f, 0x60, 0x26, 0xed, 0x14, 0x7d, 0x10, 0x4f, 0x69, 0xa9, 0x1f, 0xea, 0x37, 0x48,
+	0xe6, 0x18, 0xe6, 0xc3, 0x15, 0xe0, 0x90, 0xd2, 0x76, 0xbf, 0x17, 0x66, 0x03, 0x26, 0x75, 0xaf,
+	0x90, 0xd4, 0xdc, 0xa2, 0xe5, 0x56, 0xfc, 0x0b, 0xfe, 0xf6, 0x81, 0xb3, 0x8b, 0x1f, 0xc3, 0x42,
+	0x12, 0xf7, 0x8d, 0xab, 0xcb, 0x31, 0x5c, 0x76, 0x37, 0x89, 0x7d, 0xd4, 0xd6, 0x58, 0xcb, 0x30,
+	0x9b, 0x51, 0xc8, 0xbc, 0x4f, 0x5c, 0xdc, 0x5b, 0xe2, 0x7e, 0x06, 0x4b, 0x87, 0x36, 0xb5, 0x28,
+	0x0b, 0x4e, 0x86, 0x82, 0x8d, 0x3b, 0xfb, 0x74, 0x4b, 0xc7, 0xb4, 0xdd, 0x35, 0xb9, 0x66, 0x9f,
+	0xed, 0x7d, 0x61, 0xf0, 0x28, 0xd7, 0x0f, 0x23, 0xa0, 0x57, 0x93, 0xed, 0x9e, 0xd1, 0x34, 0x49,
+	0x23, 0x02, 0x20, 0x71, 0x3f, 0x82, 0x19, 0xa7, 0xb5, 0x3c, 0xd2, 0x5b, 0xa4, 0xd1, 0x6d, 0x93,
+	0x94, 0x7e, 0x74, 0x34, 0xaf, 0x1f, 0xfd, 0xa9, 0x02, 0xc5, 0x23, 0x8b, 0xe8, 0xbe, 0xef, 0xbd,
+	0x88, 0xef, 0x46, 0x92, 0x4d, 0xc8, 0xb8, 0xf2, 0xb1, 0xc6, 0xb5, 0x3d, 0x93, 0xdb, 0x67, 0xb2,
+	0xb7, 0xbc, 0x0d, 0x05, 0x7f, 0x0b, 0x4d, 0xc1, 0xe8, 0x29, 0x39, 0x13, 0xd7, 0xa5, 0xa0, 0x3a,
+	0x3f, 0x9d, 0x0f, 0x5b, 0x4f, 0x6b, 0x77, 0xdd, 0x9b, 0x58, 0x50, 0xdd, 0xc5, 0xdd, 0x91, 0x0f,
+	0x15, 0xfc, 0x5d, 0x98, 0xff, 0x98, 0x58, 0x94, 0x19, 0xa2, 0x7a, 0xdb, 0x9a, 0x1e, 0xd4, 0xfd,
+	0xf7, 0x23, 0x6f, 0xd3, 0x6a, 0x82, 0x50, 0xdc, 0xcf, 0xcd, 0xeb, 0x13, 0x98, 0x8c, 0x1d, 0x38,
+	0x55, 0xd4, 0x9d, 0x61, 0x65, 0x15, 0x1d, 0x53, 0xc7, 0xc5, 0xfa, 0xa0, 0xe1, 0x34, 0x2c, 0x5a,
+	0xa3, 0x61, 0x13, 0xc6, 0x24, 0x35, 0x6f, 0xb9, 0xfd, 0xef, 0x12, 0x4c, 0xb8, 0x6f, 0xd6, 0xae,
+	0x63, 0x8b, 0x4e, 0x00, 0xf6, 0x09, 0xf7, 0xa6, 0xb3, 0xb9, 0xc4, 0x1c, 0xb6, 0xe7, 0x8c, 0xa8,
+	0xa5, 0xd5, 0xbc, 0x89, 0x0f, 0x2f, 0xff, 0xf8, 0xef, 0xff, 0xfa, 0x6a, 0x64, 0x01, 0xcd, 0x55,
+	0x23, 0x13, 0x67, 0x55, 0x0e, 0x4d, 0xe8, 0x4b, 0x05, 0x8a, 0xfb, 0x84, 0x07, 0xa3, 0xca, 0xe5,
+	0x8c, 0x59, 0xc7, 0x7d, 0x39, 0x4b, 0x38, 0x7f, 0x14, 0xc2, 0x5b, 0x22, 0xe6, 0x06, 0x5a, 0x8f,
+	0xc5, 0x14, 0xcd, 0x0b, 0xab, 0x3e, 0xf3, 0x9a, 0x9a, 0xe7, 0x55, 0x51, 0xc8, 0xc3, 0x14, 0x9c,
+	0x1b, 0xf3, 0x86, 0x14, 0xc2, 0x93, 0xd2, 0x10, 0x14, 0x9c, 0x19, 0x13, 0xfd, 0x41, 0x81, 0xb9,
+	0x7d, 0xc2, 0x93, 0x93, 0x0a, 0xcb, 0x23, 0x73, 0x7d, 0xd8, 0xa9, 0x09, 0x3f, 0x10, 0xd4, 0x6e,
+	0xa3, 0x5b, 0xf9, 0xd4, 0x24, 0x48, 0x4d, 0x0f, 0xf1, 0xf9, 0xbd, 0xab, 0x96, 0xdf, 0x4f, 0xa2,
+	0x77, 0xd2, 0x19, 0xc4, 0x3b, 0xdf, 0xd2, 0x46, 0xae, 0x9d, 0x24, 0xb8, 0x23, 0x08, 0xde, 0x47,
+	0x77, 0x73, 0x09, 0x06, 0xa3, 0x7e, 0xf5, 0x59, 0xb8, 0x75, 0x7e, 0x8e, 0x7e, 0xa3, 0xc0, 0x85,
+	0xc7, 0x06, 0x0b, 0x68, 0x32, 0x94, 0x17, 0xdf, 0x6b, 0x98, 0x4a, 0xe5, 0x7c, 0x43, 0xc9, 0xf4,
+	0xa6, 0x60, 0xba, 0x85, 0xae, 0x0d, 0xc1, 0x14, 0xfd, 0x59, 0x81, 0xd9, 0x08, 0x35, 0x6f, 0x6e,
+	0x41, 0x9b, 0xb9, 0x13, 0x8a, 0xcf, 0xf1, 0xdd, 0x41, 0x4c, 0x25, 0xcb, 0x7b, 0x82, 0xe5, 0x2d,
+	0x74, 0x73, 0x70, 0x96, 0xb5, 0xba, 0xc7, 0xe9, 0x6b, 0x29, 0x64, 0xd0, 0x79, 0x67, 0x09, 0x99,
+	0x98, 0x1f, 0xb2, 0x84, 0x4c, 0x36, 0xf1, 0x43, 0x50, 0xf4, 0x3f, 0xb7, 0xac, 0xfa, 0x4c, 0x4c,
+	0x11, 0xcf, 0x9d, 0xf7, 0xf7, 0xc2, 0x3e, 0xe1, 0xa1, 0x26, 0x27, 0xe5, 0xa5, 0x09, 0xf7, 0x99,
+	0xa5, 0xab, 0xfd, 0xfa, 0x44, 0x9f, 0xd4, 0xa6, 0x20, 0x75, 0x05, 0xad, 0xc5, 0x48, 0xb9, 0xcd,
+	0x19, 0xab, 0x3e, 0xf3, 0x7a, 0xd5, 0xe7, 0xe8, 0x05, 0x4c, 0x39, 0x22, 0x85, 0xfb, 0x63, 0xd4,
+	0x37, 0x88, 0xaf, 0xd1, 0x7a, 0x8e, 0x55, 0x4e, 0x19, 0x95, 0x5c, 0xd0, 0x29, 0x4c, 0x1c, 0x75,
+	0xeb, 0x1d, 0xc3, 0xa5, 0x80, 0x06, 0xeb, 0xc5, 0x4a, 0x19, 0x65, 0x1d, 0x5f, 0x16, 0xd1, 0xe6,
+	0xf1, 0x6c, 0x2c, 0x9a, 0x48, 0x98, 0x21, 0x06, 0xe7, 0x3d, 0xbd, 0xf3, 0x94, 0x5e, 0xce, 0x3a,
+	0x96, 0x79, 0x95, 0x45, 0x24, 0x8c, 0x56, 0x53, 0x23, 0x85, 0x25, 0x96, 0x55, 0xda, 0x9f, 0x7e,
+	0xf2, 0x22, 0xe3, 0xec, 0xc1, 0x29, 0xb7, 0x4a, 0x27, 0xa2, 0xbb, 0x1f, 0x8a, 0xdf, 0xca, 0x37,
+	0x37, 0x31, 0x3f, 0xe6, 0x71, 0x79, 0x37, 0xfd, 0x38, 0x6d, 0x04, 0xc5, 0xb7, 0x04, 0xa7, 0x2a,
+	0xda, 0xca, 0xe5, 0xa4, 0x85, 0x19, 0xfc, 0x5a, 0x81, 0x19, 0x87, 0x9b, 0xd3, 0x71, 0x45, 0xa8,
+	0x95, 0xfb, 0xb5, 0x99, 0xe1, 0xbe, 0xb7, 0xb4, 0x39, 0x80, 0x65, 0xce, 0x63, 0xb3, 0x28, 0x6d,
+	0x47, 0x79, 0x31, 0x98, 0x76, 0x2f, 0x66, 0x08, 0x0b, 0xf5, 0x6d, 0x7d, 0x33, 0x6f, 0xa5, 0x0c,
+	0x8a, 0xf3, 0x83, 0x7e, 0xa5, 0xc0, 0x62, 0x54, 0x8c, 0x50, 0xff, 0x9c, 0xd9, 0xcc, 0x54, 0x72,
+	0xbb, 0xe7, 0xa8, 0x08, 0x15, 0xc1, 0xa7, 0x8c, 0xde, 0xc9, 0xe6, 0x43, 0xec, 0x1a, 0xf3, 0xe3,
+	0xfe, 0x44, 0x81, 0xb9, 0xb0, 0x16, 0x01, 0x2e, 0xca, 0x6f, 0xdc, 0x33, 0x55, 0x91, 0x2c, 0xf0,
+	0xa0, 0x2c, 0x7e, 0x19, 0xd2, 0x26, 0xde, 0xc6, 0x67, 0x6b, 0xb3, 0x95, 0x3b, 0x02, 0x0c, 0x2e,
+	0x8d, 0x25, 0x3d, 0x53, 0xa5, 0x89, 0xc3, 0xa2, 0xfc, 0xe1, 0xe3, 0xcd, 0xa4, 0x49, 0x61, 0xf1,
+	0x73, 0x05, 0xe6, 0x3c, 0x69, 0xa2, 0x73, 0x4c, 0xa6, 0x2e, 0xc9, 0xb1, 0x3e, 0x7b, 0x00, 0xc2,
+	0xd7, 0x04, 0x9f, 0x75, 0x74, 0x25, 0x8d, 0x4f, 0xcf, 0xf3, 0xab, 0x11, 0x11, 0xf1, 0x4b, 0x05,
+	0x2e, 0xba, 0x92, 0x44, 0x10, 0xd1, 0x40, 0x73, 0x53, 0xa6, 0x24, 0x92, 0x02, 0x1e, 0x88, 0x42,
+	0x0f, 0x26, 0x9d, 0xa6, 0x34, 0x34, 0x79, 0x65, 0xea, 0xb0, 0x9e, 0x3a, 0x7b, 0xc5, 0x07, 0x36,
+	0x7c, 0x55, 0x84, 0x5f, 0x46, 0x4b, 0x5e, 0x78, 0x9d, 0x9a, 0x27, 0x46, 0x53, 0x34, 0xc1, 0x35,
+	0xe6, 0x05, 0xf9, 0x1c, 0xc6, 0x9d, 0x7e, 0xdc, 0x22, 0x7a, 0x66, 0xbc, 0xcb, 0x7d, 0xe7, 0x35,
+	0x7c, 0x49, 0xc4, 0x99, 0x45, 0x17, 0x63, 0x71, 0x98, 0x83, 0xf9, 0x02, 0xd0, 0x3e, 0xe1, 0xf1,
+	0xa9, 0x29, 0x2b, 0x52, 0x39, 0x77, 0x10, 0xf3, 0x82, 0x6e, 0x88, 0xa0, 0x6b, 0x68, 0x25, 0x16,
+	0xb4, 0xe1, 0xda, 0xd7, 0x74, 0xe9, 0xb0, 0xf3, 0x33, 0xe5, 0x2f, 0xaf, 0x96, 0x95, 0xbf, 0xbd,
+	0x5a, 0x56, 0xfe, 0xf9, 0x6a, 0x59, 0x81, 0x8b, 0xd4, 0x6e, 0xc6, 0x83, 0xec, 0x4c, 0x85, 0x86,
+	0xb1, 0x43, 0x87, 0xd1, 0xa1, 0xf2, 0xfd, 0xf7, 0xfa, 0xfd, 0xc3, 0x2a, 0xbc, 0x35, 0xcb, 0x60,
+	0x32, 0xfa, 0x9f, 0x46, 0x26, 0xf7, 0x3c, 0xcc, 0x3d, 0x81, 0xf9, 0xd7, 0x60, 0xe7, 0xc9, 0x1e,
+	0x6f, 0x3d, 0xe9, 0xdd, 0xa8, 0x9f, 0x13, 0xc9, 0xde, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff,
+	0xf5, 0x6b, 0x35, 0xd2, 0x03, 0x1d, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -6971,7 +6974,7 @@ func (m *StateCommitteesRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
diff --git a/eth/v1/beacon_chain_service.proto b/eth/v1/beacon_chain_service.proto
index 0d154035..1c666316 100644
--- a/eth/v1/beacon_chain_service.proto
+++ b/eth/v1/beacon_chain_service.proto
@@ -296,7 +296,7 @@ message StateCommitteesRequest {
   bytes state_id = 1; // TODO: Duck type handling.
 
   // The epoch to retrieve the committees of.
-  uint64 epoch = 2;
+  uint64 epoch = 2 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
   // Committee index requested.
   uint64 index = 3;
diff --git a/eth/v1/beacon_state.pb.go b/eth/v1/beacon_state.pb.go
index ceb11cc0..eb4dff8a 100755
--- a/eth/v1/beacon_state.pb.go
+++ b/eth/v1/beacon_state.pb.go
@@ -11,6 +11,7 @@ import (
 
 	_ "github.com/gogo/protobuf/gogoproto"
 	proto "github.com/gogo/protobuf/proto"
+	github_com_prysmaticlabs_eth2_types "github.com/prysmaticlabs/eth2-types"
 	github_com_prysmaticlabs_go_bitfield "github.com/prysmaticlabs/go-bitfield"
 )
 
@@ -367,12 +368,12 @@ func (m *Committee) GetValidators() []uint64 {
 }
 
 type Fork struct {
-	PreviousVersion      []byte   `protobuf:"bytes,1,opt,name=previous_version,json=previousVersion,proto3" json:"previous_version,omitempty" ssz-size:"4"`
-	CurrentVersion       []byte   `protobuf:"bytes,2,opt,name=current_version,json=currentVersion,proto3" json:"current_version,omitempty" ssz-size:"4"`
-	Epoch                uint64   `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	PreviousVersion      []byte                                    `protobuf:"bytes,1,opt,name=previous_version,json=previousVersion,proto3" json:"previous_version,omitempty" ssz-size:"4"`
+	CurrentVersion       []byte                                    `protobuf:"bytes,2,opt,name=current_version,json=currentVersion,proto3" json:"current_version,omitempty" ssz-size:"4"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,3,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *Fork) Reset()         { *m = Fork{} }
@@ -422,7 +423,7 @@ func (m *Fork) GetCurrentVersion() []byte {
 	return nil
 }
 
-func (m *Fork) GetEpoch() uint64 {
+func (m *Fork) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -439,73 +440,75 @@ func init() {
 func init() { proto.RegisterFile("eth/v1/beacon_state.proto", fileDescriptor_ea3734aa07d7cd6a) }
 
 var fileDescriptor_ea3734aa07d7cd6a = []byte{
-	// 1056 bytes of a gzipped FileDescriptorProto
+	// 1077 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdf, 0x6e, 0xe3, 0xc4,
-	0x17, 0x96, 0xd3, 0x74, 0x7f, 0xed, 0x24, 0xad, 0xd3, 0x69, 0xfb, 0x5b, 0xb7, 0x85, 0x26, 0x18,
-	0x01, 0x45, 0x6a, 0x93, 0x3a, 0x4d, 0x93, 0xed, 0x72, 0x81, 0x70, 0xb7, 0x88, 0x45, 0x02, 0x15,
-	0xc3, 0x16, 0x09, 0x2d, 0xb2, 0x26, 0xce, 0xd4, 0x1e, 0x6a, 0x7b, 0xa2, 0x99, 0x49, 0xe8, 0xf6,
-	0x05, 0x10, 0xf7, 0x3c, 0x05, 0x4f, 0x82, 0xb8, 0xe2, 0x09, 0x22, 0xd4, 0x47, 0xc8, 0x25, 0x12,
-	0x12, 0xf2, 0xf8, 0x6f, 0x9a, 0x6e, 0x17, 0x89, 0x3b, 0xcf, 0x99, 0xef, 0xfb, 0x66, 0xce, 0xf9,
-	0x66, 0xce, 0x18, 0x6c, 0x61, 0xe1, 0xb5, 0xc6, 0x46, 0xab, 0x8f, 0x91, 0x43, 0x43, 0x9b, 0x0b,
-	0x24, 0x70, 0x73, 0xc8, 0xa8, 0xa0, 0x50, 0xc5, 0xc2, 0xc3, 0x0c, 0x8f, 0x82, 0x26, 0x16, 0x5e,
-	0x73, 0x6c, 0x6c, 0x1f, 0xb8, 0x44, 0x78, 0xa3, 0x7e, 0xd3, 0xa1, 0x41, 0xcb, 0xa5, 0x2e, 0x6d,
-	0x49, 0x5c, 0x7f, 0x74, 0x29, 0x47, 0x72, 0x20, 0xbf, 0x62, 0xfe, 0xb6, 0x96, 0x48, 0x23, 0x21,
-	0x70, 0xa4, 0x4b, 0x68, 0x98, 0xcc, 0xdc, 0x59, 0xb4, 0xef, 0x53, 0xe7, 0x2a, 0x99, 0xfa, 0x7f,
-	0x32, 0x35, 0x46, 0x3e, 0x19, 0x20, 0x41, 0x59, 0x1c, 0xd7, 0xff, 0xae, 0x80, 0x8a, 0x29, 0xe1,
-	0x5f, 0x47, 0x5b, 0x84, 0xef, 0x80, 0xaa, 0x8b, 0x43, 0xcc, 0x09, 0xb7, 0x05, 0x09, 0xb0, 0xa6,
-	0x34, 0x94, 0xbd, 0xb2, 0x55, 0x49, 0x62, 0xdf, 0x90, 0x00, 0xc3, 0xe7, 0xe0, 0x71, 0x0a, 0xc9,
-	0xd4, 0xb8, 0xcd, 0x28, 0x15, 0x5a, 0xa9, 0xa1, 0xec, 0x55, 0xcd, 0xb5, 0xe9, 0xa4, 0xbe, 0xc2,
-	0xf9, 0xcd, 0x01, 0x27, 0x37, 0xf8, 0xa9, 0x7e, 0xd4, 0xd6, 0xad, 0xcd, 0x84, 0x71, 0x91, 0x11,
-	0x2c, 0x4a, 0x05, 0x84, 0xa0, 0xcc, 0x7d, 0x2a, 0xb4, 0x05, 0xb9, 0x8a, 0xfc, 0x86, 0x1f, 0x82,
-	0xf2, 0x25, 0x65, 0x57, 0x5a, 0xb9, 0xa1, 0xec, 0x55, 0xda, 0x9b, 0xcd, 0x3b, 0xd5, 0x6a, 0x7e,
-	0x4a, 0xd9, 0x95, 0x25, 0x21, 0xd0, 0x02, 0xeb, 0x3e, 0x8a, 0x8a, 0x10, 0xa7, 0x6a, 0x7b, 0x18,
-	0x0d, 0x30, 0xd3, 0x16, 0x25, 0x53, 0x9f, 0x63, 0xc6, 0x79, 0x9a, 0x11, 0xf4, 0x33, 0x89, 0xb4,
-	0xd6, 0x62, 0x7a, 0x21, 0x04, 0x3b, 0xa0, 0x12, 0x8b, 0x45, 0x09, 0x71, 0xed, 0x51, 0x63, 0x61,
-	0xaf, 0x6a, 0xae, 0x4f, 0x27, 0x75, 0x35, 0xcf, 0xe8, 0x89, 0x71, 0xd2, 0xd6, 0x2d, 0x20, 0x71,
-	0x51, 0x1e, 0x3c, 0x62, 0x49, 0x8b, 0x13, 0xd6, 0xff, 0x1e, 0x60, 0x49, 0x5c, 0xcc, 0xfa, 0x0a,
-	0xd4, 0x3c, 0xc2, 0x05, 0x65, 0xc4, 0x41, 0x7e, 0x42, 0x5d, 0x92, 0xd4, 0xf7, 0xa7, 0x93, 0xba,
-	0x9e, 0x53, 0x3f, 0xde, 0x3f, 0x6a, 0xeb, 0x8d, 0x68, 0x1c, 0xa0, 0xeb, 0xa7, 0xba, 0xd1, 0xed,
-	0xf5, 0x7a, 0x6d, 0xa3, 0xab, 0x5b, 0x6a, 0xce, 0x8f, 0x25, 0xbb, 0x60, 0x19, 0x0b, 0xcf, 0xb0,
-	0x07, 0x48, 0x20, 0x6d, 0x59, 0x16, 0x62, 0x6b, 0xae, 0x10, 0x67, 0xc2, 0x33, 0x9e, 0x21, 0x81,
-	0xac, 0x25, 0x9c, 0x7c, 0xc1, 0x17, 0x40, 0xcd, 0x78, 0xf6, 0x98, 0x0a, 0xcc, 0x35, 0xd0, 0x58,
-	0x78, 0x90, 0x6d, 0xc2, 0xe9, 0xa4, 0xbe, 0x9a, 0x6f, 0xea, 0xb0, 0xdd, 0xd1, 0xad, 0x95, 0x54,
-	0xf1, 0x22, 0xd2, 0x80, 0xfb, 0x00, 0xc6, 0xb2, 0x78, 0x48, 0x39, 0x11, 0x36, 0x09, 0x07, 0xf8,
-	0x5a, 0xab, 0x48, 0xbb, 0x6b, 0x12, 0x1a, 0x4f, 0x3c, 0x8f, 0xe2, 0xf0, 0x5b, 0x00, 0xf2, 0x13,
-	0xa5, 0x55, 0xe5, 0xfa, 0xdb, 0x73, 0xeb, 0x67, 0x67, 0xc8, 0xdc, 0x99, 0x4e, 0xea, 0x8f, 0x0b,
-	0x1b, 0x38, 0x39, 0x39, 0x36, 0x8c, 0x6e, 0xbb, 0xd7, 0xeb, 0x75, 0x75, 0xab, 0x20, 0x05, 0x7b,
-	0x60, 0xa9, 0x8f, 0x7c, 0x14, 0x3a, 0x98, 0x6b, 0x2b, 0x8d, 0x85, 0xbd, 0xf2, 0xc3, 0xd4, 0x0c,
-	0x0c, 0x7b, 0xa0, 0xca, 0x50, 0x38, 0x40, 0xd4, 0x0e, 0xc8, 0x35, 0xe6, 0xda, 0xaa, 0x74, 0x67,
-	0x63, 0x3a, 0xa9, 0xd7, 0x72, 0x77, 0xba, 0xc7, 0xc7, 0x47, 0x5d, 0xdd, 0xaa, 0xc4, 0xc8, 0x2f,
-	0x22, 0x20, 0x6c, 0x83, 0x65, 0xee, 0x23, 0xee, 0x91, 0xd0, 0xe5, 0x9a, 0x2a, 0x97, 0xbc, 0x9f,
-	0x95, 0xc3, 0xe0, 0x8f, 0x60, 0x67, 0xc8, 0xf0, 0x98, 0xd0, 0x11, 0xb7, 0xf1, 0x90, 0x3a, 0x9e,
-	0x5d, 0xb8, 0xe2, 0x5c, 0xab, 0xc9, 0x7a, 0xbc, 0x3b, 0x57, 0x8f, 0x73, 0x1c, 0x0e, 0x48, 0xe8,
-	0x7e, 0x92, 0x63, 0xef, 0x38, 0xd3, 0x39, 0x3c, 0xe9, 0xea, 0xd6, 0x56, 0xaa, 0x7d, 0x16, 0x49,
-	0x17, 0xd0, 0x1c, 0x8e, 0xc0, 0xb6, 0x33, 0x62, 0x0c, 0x87, 0xe2, 0xbe, 0x75, 0xd7, 0xfe, 0xdb,
-	0xba, 0x5a, 0x22, 0x3d, 0xbf, 0x2c, 0x03, 0xf0, 0x87, 0x11, 0x17, 0xe4, 0x92, 0x38, 0x32, 0x62,
-	0xf7, 0x89, 0xe0, 0x1a, 0x94, 0x3d, 0xe4, 0x74, 0x3a, 0xa9, 0x57, 0xf3, 0x62, 0x19, 0xfa, 0x5f,
-	0x93, 0x7a, 0xab, 0xd0, 0x27, 0x87, 0xec, 0x15, 0x0f, 0x90, 0x20, 0x8e, 0x8f, 0xfa, 0xbc, 0xe5,
-	0xd2, 0x83, 0x3e, 0x11, 0x97, 0x04, 0xfb, 0x83, 0xa6, 0x49, 0xc4, 0x18, 0x3b, 0x82, 0xb2, 0x8e,
-	0xb5, 0x36, 0x23, 0x6f, 0x12, 0xc1, 0xa1, 0x0d, 0xde, 0xce, 0x6a, 0x9c, 0xcc, 0xe2, 0x81, 0xed,
-	0x78, 0xd8, 0xb9, 0x1a, 0x52, 0x12, 0x0a, 0x6d, 0x5d, 0xde, 0x99, 0x9d, 0xb9, 0x6c, 0x4f, 0x33,
-	0x88, 0x95, 0xb9, 0xf4, 0x79, 0x2a, 0x90, 0x4f, 0xc2, 0xef, 0xc1, 0x5b, 0x69, 0x2d, 0xef, 0xd5,
-	0xdf, 0x78, 0xb3, 0x7e, 0x6a, 0xc6, 0x7d, 0xf2, 0x5f, 0x82, 0x8d, 0x4b, 0x12, 0x22, 0x9f, 0xdc,
-	0xcc, 0xca, 0x6e, 0xbe, 0x59, 0x76, 0x3d, 0x23, 0xe6, 0x41, 0xfd, 0xe7, 0x12, 0x80, 0xf3, 0x46,
-	0xc2, 0x00, 0xd4, 0x90, 0xeb, 0x32, 0xec, 0x16, 0x8c, 0x51, 0xa4, 0x31, 0xe6, 0x8c, 0xc5, 0xed,
-	0xc3, 0xce, 0x93, 0xc8, 0x9a, 0xfd, 0x7f, 0x6b, 0x8d, 0x4f, 0xb8, 0xb0, 0xd4, 0x82, 0xb6, 0x74,
-	0xa5, 0x03, 0xca, 0xb2, 0x61, 0x95, 0x64, 0x16, 0x8d, 0xb9, 0x2c, 0x0a, 0x5b, 0x93, 0x7d, 0x4b,
-	0xa2, 0xe1, 0x07, 0x40, 0x25, 0xa1, 0xe3, 0x8f, 0x78, 0xb4, 0xc5, 0x01, 0xf6, 0xd1, 0xab, 0xe4,
-	0x21, 0x59, 0xcd, 0xc2, 0xcf, 0xa2, 0x28, 0x7c, 0x0f, 0xac, 0x0e, 0x19, 0x1d, 0x52, 0x8e, 0x59,
-	0xd2, 0x81, 0xca, 0x12, 0xb7, 0x92, 0x46, 0x65, 0xfb, 0xd1, 0x5f, 0x80, 0xe5, 0x53, 0x1a, 0x04,
-	0x44, 0x08, 0x8c, 0xe1, 0x06, 0x58, 0x8c, 0xa1, 0xf1, 0x0b, 0x18, 0x0f, 0xb2, 0x07, 0xab, 0x54,
-	0x78, 0xb0, 0x76, 0x67, 0xba, 0xd6, 0x42, 0x74, 0xd7, 0x8b, 0xcd, 0x47, 0xff, 0x45, 0x01, 0xe5,
-	0xe8, 0xd1, 0x82, 0x1f, 0x81, 0x5a, 0x76, 0xf6, 0xc6, 0x98, 0x45, 0xfb, 0x4b, 0x8a, 0x5a, 0x9b,
-	0x3d, 0xed, 0x1d, 0xdd, 0x52, 0x53, 0xe4, 0x45, 0x0c, 0x84, 0x27, 0x40, 0x4d, 0xcf, 0x55, 0xca,
-	0x2d, 0xbd, 0x86, 0xbb, 0x9a, 0x00, 0x53, 0xea, 0x06, 0x58, 0x94, 0xd7, 0x3a, 0xa9, 0x4e, 0x3c,
-	0x30, 0x7f, 0x52, 0x7e, 0xbb, 0xdd, 0x55, 0xfe, 0xb8, 0xdd, 0x55, 0xfe, 0xbc, 0xdd, 0x55, 0xc0,
-	0x3a, 0x65, 0xee, 0xdd, 0xba, 0x9b, 0xb5, 0xc2, 0xaf, 0xc1, 0x79, 0xf4, 0xbf, 0x70, 0xae, 0x7c,
-	0xf7, 0x7a, 0xab, 0x53, 0x36, 0x1a, 0x12, 0x39, 0x68, 0x8d, 0x8d, 0x5f, 0x4b, 0xea, 0x59, 0xaa,
-	0x79, 0x26, 0x35, 0x7f, 0xcf, 0x23, 0x2f, 0xcf, 0x84, 0xf7, 0x72, 0x6c, 0xf4, 0x1f, 0xc9, 0x5f,
-	0x91, 0xa3, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x9d, 0x2d, 0x70, 0x17, 0x34, 0x09, 0x00, 0x00,
+	0x17, 0x96, 0xd3, 0x74, 0x7f, 0xed, 0x24, 0x6d, 0xd2, 0x69, 0xfb, 0x5b, 0xb7, 0x85, 0x26, 0x18,
+	0x01, 0x5d, 0xa9, 0x4d, 0xea, 0x34, 0x4d, 0xb6, 0xcb, 0x05, 0xc2, 0xdd, 0x22, 0x16, 0x09, 0x54,
+	0x0c, 0x5b, 0x24, 0xb4, 0xc8, 0x9a, 0x38, 0x53, 0x7b, 0xa8, 0xed, 0xb1, 0x66, 0x26, 0xa1, 0xed,
+	0x0b, 0x20, 0x5e, 0x85, 0xd7, 0xe0, 0x06, 0x71, 0xc5, 0x13, 0x44, 0xa8, 0x8f, 0x90, 0xcb, 0x95,
+	0x90, 0x90, 0xc7, 0x7f, 0xdb, 0x74, 0xbb, 0x48, 0xdc, 0x79, 0xce, 0x7c, 0xdf, 0x77, 0x66, 0xce,
+	0x37, 0x73, 0xc6, 0x60, 0x03, 0x0b, 0xb7, 0x3d, 0xd6, 0xdb, 0x03, 0x8c, 0x6c, 0x1a, 0x58, 0x5c,
+	0x20, 0x81, 0x5b, 0x21, 0xa3, 0x82, 0xc2, 0x1a, 0x16, 0x2e, 0x66, 0x78, 0xe4, 0xb7, 0xb0, 0x70,
+	0x5b, 0x63, 0x7d, 0x73, 0xcf, 0x21, 0xc2, 0x1d, 0x0d, 0x5a, 0x36, 0xf5, 0xdb, 0x0e, 0x75, 0x68,
+	0x5b, 0xe2, 0x06, 0xa3, 0x73, 0x39, 0x92, 0x03, 0xf9, 0x15, 0xf3, 0x37, 0xd5, 0x44, 0x1a, 0x09,
+	0x81, 0x23, 0x5d, 0x42, 0x83, 0x64, 0xe6, 0x4e, 0xd2, 0x81, 0x47, 0xed, 0x8b, 0x64, 0xea, 0xff,
+	0xc9, 0xd4, 0x18, 0x79, 0x64, 0x88, 0x04, 0x65, 0x71, 0x5c, 0xfb, 0xbb, 0x02, 0x2a, 0x86, 0x84,
+	0x7f, 0x13, 0x2d, 0x11, 0xbe, 0x07, 0xaa, 0x0e, 0x0e, 0x30, 0x27, 0xdc, 0x12, 0xc4, 0xc7, 0xaa,
+	0xd2, 0x54, 0x76, 0xca, 0x66, 0x25, 0x89, 0x7d, 0x4b, 0x7c, 0x0c, 0x5f, 0x80, 0xc7, 0x29, 0x24,
+	0x53, 0xe3, 0x16, 0xa3, 0x54, 0xa8, 0xa5, 0xa6, 0xb2, 0x53, 0x35, 0x56, 0xa6, 0x93, 0xc6, 0x12,
+	0xe7, 0xd7, 0x7b, 0x9c, 0x5c, 0xe3, 0x67, 0xda, 0x41, 0x47, 0x33, 0xd7, 0x13, 0xc6, 0x59, 0x46,
+	0x30, 0x29, 0x15, 0x10, 0x82, 0x32, 0xf7, 0xa8, 0x50, 0xe7, 0x64, 0x16, 0xf9, 0x0d, 0x9f, 0x80,
+	0xf2, 0x39, 0x65, 0x17, 0x6a, 0xb9, 0xa9, 0xec, 0x54, 0x3a, 0xeb, 0xad, 0x3b, 0xd5, 0x6a, 0x7d,
+	0x46, 0xd9, 0x85, 0x29, 0x21, 0xd0, 0x04, 0xab, 0x1e, 0x8a, 0x8a, 0x10, 0x6f, 0xd5, 0x72, 0x31,
+	0x1a, 0x62, 0xa6, 0xce, 0x4b, 0xa6, 0x36, 0xc3, 0x8c, 0xf7, 0x69, 0x44, 0xd0, 0xcf, 0x25, 0xd2,
+	0x5c, 0x89, 0xe9, 0x85, 0x10, 0xec, 0x82, 0x4a, 0x2c, 0x16, 0x6d, 0x88, 0xab, 0x8f, 0x9a, 0x73,
+	0x3b, 0x55, 0x63, 0x75, 0x3a, 0x69, 0xd4, 0xf2, 0x1d, 0x3d, 0xd5, 0x8f, 0x3a, 0x9a, 0x09, 0x24,
+	0x2e, 0xda, 0x07, 0x8f, 0x58, 0xd2, 0xe2, 0x84, 0xf5, 0xbf, 0x07, 0x58, 0x12, 0x17, 0xb3, 0xbe,
+	0x06, 0x75, 0x97, 0x70, 0x41, 0x19, 0xb1, 0x91, 0x97, 0x50, 0x17, 0x24, 0xf5, 0xc3, 0xe9, 0xa4,
+	0xa1, 0xe5, 0xd4, 0x4f, 0x76, 0x0f, 0x3a, 0x5a, 0x33, 0x1a, 0xfb, 0xe8, 0xf2, 0x99, 0xa6, 0xf7,
+	0xfa, 0xfd, 0x7e, 0x47, 0xef, 0x69, 0x66, 0x2d, 0xe7, 0xc7, 0x92, 0x3d, 0xb0, 0x88, 0x85, 0xab,
+	0x5b, 0x43, 0x24, 0x90, 0xba, 0x28, 0x0b, 0xb1, 0x31, 0x53, 0x88, 0x13, 0xe1, 0xea, 0xcf, 0x91,
+	0x40, 0xe6, 0x02, 0x4e, 0xbe, 0xe0, 0x4b, 0x50, 0xcb, 0x78, 0xd6, 0x98, 0x0a, 0xcc, 0x55, 0xd0,
+	0x9c, 0x7b, 0x90, 0x6d, 0xc0, 0xe9, 0xa4, 0xb1, 0x9c, 0x2f, 0x6a, 0xbf, 0xd3, 0xd5, 0xcc, 0xa5,
+	0x54, 0xf1, 0x2c, 0xd2, 0x80, 0xbb, 0x00, 0xc6, 0xb2, 0x38, 0xa4, 0x9c, 0x08, 0x8b, 0x04, 0x43,
+	0x7c, 0xa9, 0x56, 0xa4, 0xdd, 0x75, 0x09, 0x8d, 0x27, 0x5e, 0x44, 0x71, 0xf8, 0x1d, 0x00, 0xf9,
+	0x89, 0x52, 0xab, 0x32, 0xff, 0xe6, 0x4c, 0xfe, 0xec, 0x0c, 0x19, 0x5b, 0xd3, 0x49, 0xe3, 0x71,
+	0x61, 0x01, 0x47, 0x47, 0x87, 0xba, 0xde, 0xeb, 0xf4, 0xfb, 0xfd, 0x9e, 0x66, 0x16, 0xa4, 0x60,
+	0x1f, 0x2c, 0x0c, 0x90, 0x87, 0x02, 0x1b, 0x73, 0x75, 0xa9, 0x39, 0xb7, 0x53, 0x7e, 0x98, 0x9a,
+	0x81, 0x61, 0x1f, 0x54, 0x19, 0x0a, 0x86, 0x88, 0x5a, 0x3e, 0xb9, 0xc4, 0x5c, 0x5d, 0x96, 0xee,
+	0xac, 0x4d, 0x27, 0x8d, 0x7a, 0xee, 0x4e, 0xef, 0xf0, 0xf0, 0xa0, 0xa7, 0x99, 0x95, 0x18, 0xf9,
+	0x65, 0x04, 0x84, 0x1d, 0xb0, 0xc8, 0x3d, 0xc4, 0x5d, 0x12, 0x38, 0x5c, 0xad, 0xc9, 0x94, 0xf7,
+	0xb3, 0x72, 0x18, 0xfc, 0x09, 0x6c, 0x85, 0x0c, 0x8f, 0x09, 0x1d, 0x71, 0x0b, 0x87, 0xd4, 0x76,
+	0xad, 0xc2, 0x15, 0xe7, 0x6a, 0x5d, 0xd6, 0xe3, 0xfd, 0x99, 0x7a, 0x9c, 0xe2, 0x60, 0x48, 0x02,
+	0xe7, 0xd3, 0x1c, 0x7b, 0xc7, 0x99, 0xee, 0xfe, 0x51, 0x4f, 0x33, 0x37, 0x52, 0xed, 0x93, 0x48,
+	0xba, 0x80, 0xe6, 0x70, 0x04, 0x36, 0xed, 0x11, 0x63, 0x38, 0x10, 0xf7, 0xe5, 0x5d, 0xf9, 0x6f,
+	0x79, 0xd5, 0x44, 0x7a, 0x36, 0x2d, 0x03, 0xf0, 0xc7, 0x11, 0x17, 0xe4, 0x9c, 0xd8, 0x32, 0x62,
+	0x0d, 0x88, 0xe0, 0x2a, 0x94, 0x3d, 0xe4, 0x78, 0x3a, 0x69, 0x54, 0xf3, 0x62, 0xe9, 0xda, 0xeb,
+	0x49, 0xa3, 0x5d, 0xe8, 0x93, 0x21, 0xbb, 0xe2, 0x3e, 0x12, 0xc4, 0xf6, 0xd0, 0x80, 0xb7, 0x1d,
+	0xba, 0x37, 0x20, 0xe2, 0x9c, 0x60, 0x6f, 0xd8, 0x32, 0x88, 0x18, 0x63, 0x5b, 0x50, 0xd6, 0x35,
+	0x57, 0x6e, 0xc9, 0x1b, 0x44, 0x70, 0x68, 0x81, 0x77, 0xb3, 0x1a, 0x27, 0xb3, 0x78, 0x68, 0xd9,
+	0x2e, 0xb6, 0x2f, 0x42, 0x4a, 0x02, 0xa1, 0xae, 0xca, 0x3b, 0xb3, 0x35, 0xb3, 0xdb, 0xe3, 0x0c,
+	0x62, 0x66, 0x2e, 0x7d, 0x91, 0x0a, 0xe4, 0x93, 0xf0, 0x07, 0xf0, 0x4e, 0x5a, 0xcb, 0x7b, 0xf5,
+	0xd7, 0xde, 0xae, 0x9f, 0x9a, 0x71, 0x9f, 0xfc, 0x57, 0x60, 0xed, 0x9c, 0x04, 0xc8, 0x23, 0xd7,
+	0xb7, 0x65, 0xd7, 0xdf, 0x2e, 0xbb, 0x9a, 0x11, 0xf3, 0xa0, 0xf6, 0x4b, 0x09, 0xc0, 0x59, 0x23,
+	0xa1, 0x0f, 0xea, 0xc8, 0x71, 0x18, 0x76, 0x0a, 0xc6, 0x28, 0xd2, 0x18, 0xe3, 0x96, 0xc5, 0x9d,
+	0xfd, 0xee, 0xd3, 0xc8, 0x9a, 0xdd, 0x7f, 0x6b, 0x8d, 0x47, 0xb8, 0x30, 0x6b, 0x05, 0x6d, 0xe9,
+	0x4a, 0x17, 0x94, 0x65, 0xc3, 0x2a, 0xc9, 0x5d, 0x34, 0x67, 0x76, 0x51, 0x58, 0x9a, 0xec, 0x5b,
+	0x12, 0x0d, 0x3f, 0x02, 0x35, 0x12, 0xd8, 0xde, 0x88, 0x47, 0x4b, 0x1c, 0x62, 0x0f, 0x5d, 0x25,
+	0x0f, 0xc9, 0x72, 0x16, 0x7e, 0x1e, 0x45, 0xe1, 0x07, 0x60, 0x39, 0x64, 0x34, 0xa4, 0x1c, 0xb3,
+	0xa4, 0x03, 0x95, 0x25, 0x6e, 0x29, 0x8d, 0xca, 0xf6, 0xa3, 0xbd, 0x04, 0x8b, 0xc7, 0xd4, 0xf7,
+	0x89, 0x10, 0x18, 0xc3, 0x35, 0x30, 0x1f, 0x43, 0xe3, 0x17, 0x30, 0x1e, 0x64, 0x0f, 0x56, 0xa9,
+	0xf0, 0x60, 0x6d, 0xdf, 0xea, 0x5a, 0x73, 0xd1, 0x5d, 0x2f, 0x36, 0x1f, 0xed, 0x37, 0x05, 0x94,
+	0xa3, 0x47, 0x0b, 0x7e, 0x0c, 0xea, 0xd9, 0xd9, 0x1b, 0x63, 0x16, 0xad, 0x2f, 0x29, 0x6a, 0xfd,
+	0xf6, 0x69, 0xef, 0x6a, 0x66, 0x2d, 0x45, 0x9e, 0xc5, 0x40, 0x78, 0x04, 0x6a, 0xe9, 0xb9, 0x4a,
+	0xb9, 0xa5, 0x37, 0x70, 0x97, 0x13, 0x60, 0x4a, 0x3d, 0x06, 0xf3, 0xf2, 0x5a, 0xc7, 0xd5, 0x31,
+	0xf6, 0x5e, 0x4f, 0x1a, 0x4f, 0xde, 0xe8, 0x17, 0x16, 0x6e, 0x67, 0x4f, 0x5c, 0x85, 0x98, 0xb7,
+	0xe4, 0x8d, 0x35, 0x63, 0xae, 0xf1, 0xb3, 0xf2, 0xfb, 0xcd, 0xb6, 0xf2, 0xe7, 0xcd, 0xb6, 0xf2,
+	0xd7, 0xcd, 0xb6, 0x02, 0x56, 0x29, 0x73, 0xee, 0xda, 0x64, 0xd4, 0x0b, 0x7f, 0x12, 0xa7, 0xd1,
+	0xef, 0xc5, 0xa9, 0xf2, 0xfd, 0xee, 0x43, 0x99, 0x24, 0x1b, 0x85, 0x44, 0x0e, 0xda, 0x63, 0xfd,
+	0xd7, 0x52, 0xed, 0x24, 0xd5, 0x3c, 0x91, 0x9a, 0x7f, 0xe4, 0x91, 0x57, 0x27, 0xc2, 0x7d, 0x35,
+	0xd6, 0x07, 0x8f, 0xe4, 0x9f, 0xcb, 0xc1, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xde, 0x71,
+	0xc5, 0x63, 0x09, 0x00, 0x00,
 }
 
 func (m *BeaconState) Marshal() (dAtA []byte, err error) {
@@ -2391,7 +2394,7 @@ func (m *Fork) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
diff --git a/eth/v1/beacon_state.proto b/eth/v1/beacon_state.proto
index 79a9617a..ef133344 100644
--- a/eth/v1/beacon_state.proto
+++ b/eth/v1/beacon_state.proto
@@ -89,5 +89,5 @@ message Committee {
 message Fork {
   bytes previous_version = 1 [(gogoproto.moretags) = "ssz-size:\"4\""];
   bytes current_version = 2 [(gogoproto.moretags) = "ssz-size:\"4\""];
-  uint64 epoch = 3;
+  uint64 epoch = 3 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 }
\ No newline at end of file
diff --git a/eth/v1/generated.ssz.go b/eth/v1/generated.ssz.go
index 2b191982..b8ec8ebe 100644
--- a/eth/v1/generated.ssz.go
+++ b/eth/v1/generated.ssz.go
@@ -3,744 +3,682 @@ package v1
 
 import (
 	ssz "github.com/ferranbt/fastssz"
+	github_com_prysmaticlabs_eth2_types "github.com/prysmaticlabs/eth2-types"
 )
 
-// MarshalSSZ ssz marshals the BeaconBlock object
-func (b *BeaconBlock) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(b)
+// MarshalSSZ ssz marshals the Attestation object
+func (a *Attestation) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(a)
 }
 
-// MarshalSSZTo ssz marshals the BeaconBlock object to a target array
-func (b *BeaconBlock) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the Attestation object to a target array
+func (a *Attestation) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
-	offset := int(84)
-
-	// Field (0) 'Slot'
-	dst = ssz.MarshalUint64(dst, b.Slot)
+	offset := int(228)
 
-	// Field (1) 'ProposerIndex'
-	dst = ssz.MarshalUint64(dst, b.ProposerIndex)
+	// Offset (0) 'AggregationBits'
+	dst = ssz.WriteOffset(dst, offset)
+	offset += len(a.AggregationBits)
 
-	// Field (2) 'ParentRoot'
-	if len(b.ParentRoot) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Data'
+	if a.Data == nil {
+		a.Data = new(AttestationData)
+	}
+	if dst, err = a.Data.MarshalSSZTo(dst); err != nil {
 		return
 	}
-	dst = append(dst, b.ParentRoot...)
 
-	// Field (3) 'StateRoot'
-	if len(b.StateRoot) != 32 {
+	// Field (2) 'Signature'
+	if len(a.Signature) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	dst = append(dst, b.StateRoot...)
-
-	// Offset (4) 'Body'
-	dst = ssz.WriteOffset(dst, offset)
-	if b.Body == nil {
-		b.Body = new(BeaconBlockBody)
-	}
-	offset += b.Body.SizeSSZ()
+	dst = append(dst, a.Signature...)
 
-	// Field (4) 'Body'
-	if dst, err = b.Body.MarshalSSZTo(dst); err != nil {
+	// Field (0) 'AggregationBits'
+	if len(a.AggregationBits) > 2048 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	dst = append(dst, a.AggregationBits...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the BeaconBlock object
-func (b *BeaconBlock) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the Attestation object
+func (a *Attestation) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size < 84 {
+	if size < 228 {
 		return ssz.ErrSize
 	}
 
 	tail := buf
-	var o4 uint64
-
-	// Field (0) 'Slot'
-	b.Slot = ssz.UnmarshallUint64(buf[0:8])
-
-	// Field (1) 'ProposerIndex'
-	b.ProposerIndex = ssz.UnmarshallUint64(buf[8:16])
+	var o0 uint64
 
-	// Field (2) 'ParentRoot'
-	b.ParentRoot = append(b.ParentRoot, buf[16:48]...)
+	// Offset (0) 'AggregationBits'
+	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
+		return ssz.ErrOffset
+	}
 
-	// Field (3) 'StateRoot'
-	b.StateRoot = append(b.StateRoot, buf[48:80]...)
+	// Field (1) 'Data'
+	if a.Data == nil {
+		a.Data = new(AttestationData)
+	}
+	if err = a.Data.UnmarshalSSZ(buf[4:132]); err != nil {
+		return err
+	}
 
-	// Offset (4) 'Body'
-	if o4 = ssz.ReadOffset(buf[80:84]); o4 > size {
-		return ssz.ErrOffset
+	// Field (2) 'Signature'
+	if cap(a.Signature) == 0 {
+		a.Signature = make([]byte, 0, len(buf[132:228]))
 	}
+	a.Signature = append(a.Signature, buf[132:228]...)
 
-	// Field (4) 'Body'
+	// Field (0) 'AggregationBits'
 	{
-		buf = tail[o4:]
-		if b.Body == nil {
-			b.Body = new(BeaconBlockBody)
-		}
-		if err = b.Body.UnmarshalSSZ(buf); err != nil {
+		buf = tail[o0:]
+		if err = ssz.ValidateBitlist(buf, 2048); err != nil {
 			return err
 		}
+		if cap(a.AggregationBits) == 0 {
+			a.AggregationBits = make([]byte, 0, len(buf))
+		}
+		a.AggregationBits = append(a.AggregationBits, buf...)
 	}
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the BeaconBlock object
-func (b *BeaconBlock) SizeSSZ() (size int) {
-	size = 84
+// SizeSSZ returns the ssz encoded size in bytes for the Attestation object
+func (a *Attestation) SizeSSZ() (size int) {
+	size = 228
 
-	// Field (4) 'Body'
-	if b.Body == nil {
-		b.Body = new(BeaconBlockBody)
-	}
-	size += b.Body.SizeSSZ()
+	// Field (0) 'AggregationBits'
+	size += len(a.AggregationBits)
 
 	return
 }
 
-// HashTreeRoot ssz hashes the BeaconBlock object
-func (b *BeaconBlock) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(b)
+// HashTreeRoot ssz hashes the Attestation object
+func (a *Attestation) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(a)
 }
 
-// HashTreeRootWith ssz hashes the BeaconBlock object with a hasher
-func (b *BeaconBlock) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the Attestation object with a hasher
+func (a *Attestation) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Slot'
-	hh.PutUint64(b.Slot)
-
-	// Field (1) 'ProposerIndex'
-	hh.PutUint64(b.ProposerIndex)
-
-	// Field (2) 'ParentRoot'
-	if len(b.ParentRoot) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (0) 'AggregationBits'
+	if len(a.AggregationBits) == 0 {
+		err = ssz.ErrEmptyBitlist
 		return
 	}
-	hh.PutBytes(b.ParentRoot)
+	hh.PutBitlist(a.AggregationBits, 2048)
 
-	// Field (3) 'StateRoot'
-	if len(b.StateRoot) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Data'
+	if err = a.Data.HashTreeRootWith(hh); err != nil {
 		return
 	}
-	hh.PutBytes(b.StateRoot)
 
-	// Field (4) 'Body'
-	if err = b.Body.HashTreeRootWith(hh); err != nil {
+	// Field (2) 'Signature'
+	if len(a.Signature) != 96 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	hh.PutBytes(a.Signature)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the SignedBeaconBlock object
-func (s *SignedBeaconBlock) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(s)
+// MarshalSSZ ssz marshals the AggregateAttestationAndProof object
+func (a *AggregateAttestationAndProof) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(a)
 }
 
-// MarshalSSZTo ssz marshals the SignedBeaconBlock object to a target array
-func (s *SignedBeaconBlock) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the AggregateAttestationAndProof object to a target array
+func (a *AggregateAttestationAndProof) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
-	offset := int(100)
+	offset := int(108)
 
-	// Offset (0) 'Block'
+	// Field (0) 'AggregatorIndex'
+	dst = ssz.MarshalUint64(dst, a.AggregatorIndex)
+
+	// Offset (1) 'Aggregate'
 	dst = ssz.WriteOffset(dst, offset)
-	if s.Block == nil {
-		s.Block = new(BeaconBlock)
+	if a.Aggregate == nil {
+		a.Aggregate = new(Attestation)
 	}
-	offset += s.Block.SizeSSZ()
+	offset += a.Aggregate.SizeSSZ()
 
-	// Field (1) 'Signature'
-	if len(s.Signature) != 96 {
+	// Field (2) 'SelectionProof'
+	if len(a.SelectionProof) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	dst = append(dst, s.Signature...)
+	dst = append(dst, a.SelectionProof...)
 
-	// Field (0) 'Block'
-	if dst, err = s.Block.MarshalSSZTo(dst); err != nil {
+	// Field (1) 'Aggregate'
+	if dst, err = a.Aggregate.MarshalSSZTo(dst); err != nil {
 		return
 	}
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the SignedBeaconBlock object
-func (s *SignedBeaconBlock) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the AggregateAttestationAndProof object
+func (a *AggregateAttestationAndProof) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size < 100 {
+	if size < 108 {
 		return ssz.ErrSize
 	}
 
 	tail := buf
-	var o0 uint64
+	var o1 uint64
 
-	// Offset (0) 'Block'
-	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
+	// Field (0) 'AggregatorIndex'
+	a.AggregatorIndex = ssz.UnmarshallUint64(buf[0:8])
+
+	// Offset (1) 'Aggregate'
+	if o1 = ssz.ReadOffset(buf[8:12]); o1 > size {
 		return ssz.ErrOffset
 	}
 
-	// Field (1) 'Signature'
-	s.Signature = append(s.Signature, buf[4:100]...)
+	// Field (2) 'SelectionProof'
+	if cap(a.SelectionProof) == 0 {
+		a.SelectionProof = make([]byte, 0, len(buf[12:108]))
+	}
+	a.SelectionProof = append(a.SelectionProof, buf[12:108]...)
 
-	// Field (0) 'Block'
+	// Field (1) 'Aggregate'
 	{
-		buf = tail[o0:]
-		if s.Block == nil {
-			s.Block = new(BeaconBlock)
+		buf = tail[o1:]
+		if a.Aggregate == nil {
+			a.Aggregate = new(Attestation)
 		}
-		if err = s.Block.UnmarshalSSZ(buf); err != nil {
+		if err = a.Aggregate.UnmarshalSSZ(buf); err != nil {
 			return err
 		}
 	}
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the SignedBeaconBlock object
-func (s *SignedBeaconBlock) SizeSSZ() (size int) {
-	size = 100
+// SizeSSZ returns the ssz encoded size in bytes for the AggregateAttestationAndProof object
+func (a *AggregateAttestationAndProof) SizeSSZ() (size int) {
+	size = 108
 
-	// Field (0) 'Block'
-	if s.Block == nil {
-		s.Block = new(BeaconBlock)
+	// Field (1) 'Aggregate'
+	if a.Aggregate == nil {
+		a.Aggregate = new(Attestation)
 	}
-	size += s.Block.SizeSSZ()
+	size += a.Aggregate.SizeSSZ()
 
 	return
 }
 
-// HashTreeRoot ssz hashes the SignedBeaconBlock object
-func (s *SignedBeaconBlock) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(s)
+// HashTreeRoot ssz hashes the AggregateAttestationAndProof object
+func (a *AggregateAttestationAndProof) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(a)
 }
 
-// HashTreeRootWith ssz hashes the SignedBeaconBlock object with a hasher
-func (s *SignedBeaconBlock) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the AggregateAttestationAndProof object with a hasher
+func (a *AggregateAttestationAndProof) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Block'
-	if err = s.Block.HashTreeRootWith(hh); err != nil {
+	// Field (0) 'AggregatorIndex'
+	hh.PutUint64(a.AggregatorIndex)
+
+	// Field (1) 'Aggregate'
+	if err = a.Aggregate.HashTreeRootWith(hh); err != nil {
 		return
 	}
 
-	// Field (1) 'Signature'
-	if len(s.Signature) != 96 {
+	// Field (2) 'SelectionProof'
+	if len(a.SelectionProof) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(s.Signature)
+	hh.PutBytes(a.SelectionProof)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the BeaconBlockBody object
-func (b *BeaconBlockBody) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(b)
+// MarshalSSZ ssz marshals the SignedAggregateAttestationAndProof object
+func (s *SignedAggregateAttestationAndProof) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(s)
 }
 
-// MarshalSSZTo ssz marshals the BeaconBlockBody object to a target array
-func (b *BeaconBlockBody) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the SignedAggregateAttestationAndProof object to a target array
+func (s *SignedAggregateAttestationAndProof) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
-	offset := int(220)
+	offset := int(100)
 
-	// Field (0) 'RandaoReveal'
-	if len(b.RandaoReveal) != 96 {
-		err = ssz.ErrBytesLength
-		return
+	// Offset (0) 'Message'
+	dst = ssz.WriteOffset(dst, offset)
+	if s.Message == nil {
+		s.Message = new(AggregateAttestationAndProof)
 	}
-	dst = append(dst, b.RandaoReveal...)
+	offset += s.Message.SizeSSZ()
 
-	// Field (1) 'Eth1Data'
-	if b.Eth1Data == nil {
-		b.Eth1Data = new(Eth1Data)
-	}
-	if dst, err = b.Eth1Data.MarshalSSZTo(dst); err != nil {
+	// Field (1) 'Signature'
+	if len(s.Signature) != 96 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	dst = append(dst, s.Signature...)
 
-	// Field (2) 'Graffiti'
-	if len(b.Graffiti) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (0) 'Message'
+	if dst, err = s.Message.MarshalSSZTo(dst); err != nil {
 		return
 	}
-	dst = append(dst, b.Graffiti...)
-
-	// Offset (3) 'ProposerSlashings'
-	dst = ssz.WriteOffset(dst, offset)
-	offset += len(b.ProposerSlashings) * 416
 
-	// Offset (4) 'AttesterSlashings'
-	dst = ssz.WriteOffset(dst, offset)
-	for ii := 0; ii < len(b.AttesterSlashings); ii++ {
-		offset += 4
-		offset += b.AttesterSlashings[ii].SizeSSZ()
-	}
+	return
+}
 
-	// Offset (5) 'Attestations'
-	dst = ssz.WriteOffset(dst, offset)
-	for ii := 0; ii < len(b.Attestations); ii++ {
-		offset += 4
-		offset += b.Attestations[ii].SizeSSZ()
+// UnmarshalSSZ ssz unmarshals the SignedAggregateAttestationAndProof object
+func (s *SignedAggregateAttestationAndProof) UnmarshalSSZ(buf []byte) error {
+	var err error
+	size := uint64(len(buf))
+	if size < 100 {
+		return ssz.ErrSize
 	}
 
-	// Offset (6) 'Deposits'
-	dst = ssz.WriteOffset(dst, offset)
-	offset += len(b.Deposits) * 1240
-
-	// Offset (7) 'VoluntaryExits'
-	dst = ssz.WriteOffset(dst, offset)
-	offset += len(b.VoluntaryExits) * 112
+	tail := buf
+	var o0 uint64
 
-	// Field (3) 'ProposerSlashings'
-	if len(b.ProposerSlashings) > 16 {
-		err = ssz.ErrListTooBig
-		return
-	}
-	for ii := 0; ii < len(b.ProposerSlashings); ii++ {
-		if dst, err = b.ProposerSlashings[ii].MarshalSSZTo(dst); err != nil {
-			return
-		}
+	// Offset (0) 'Message'
+	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
+		return ssz.ErrOffset
 	}
 
-	// Field (4) 'AttesterSlashings'
-	if len(b.AttesterSlashings) > 2 {
-		err = ssz.ErrListTooBig
-		return
+	// Field (1) 'Signature'
+	if cap(s.Signature) == 0 {
+		s.Signature = make([]byte, 0, len(buf[4:100]))
 	}
+	s.Signature = append(s.Signature, buf[4:100]...)
+
+	// Field (0) 'Message'
 	{
-		offset = 4 * len(b.AttesterSlashings)
-		for ii := 0; ii < len(b.AttesterSlashings); ii++ {
-			dst = ssz.WriteOffset(dst, offset)
-			offset += b.AttesterSlashings[ii].SizeSSZ()
+		buf = tail[o0:]
+		if s.Message == nil {
+			s.Message = new(AggregateAttestationAndProof)
 		}
-	}
-	for ii := 0; ii < len(b.AttesterSlashings); ii++ {
-		if dst, err = b.AttesterSlashings[ii].MarshalSSZTo(dst); err != nil {
-			return
+		if err = s.Message.UnmarshalSSZ(buf); err != nil {
+			return err
 		}
 	}
+	return err
+}
 
-	// Field (5) 'Attestations'
-	if len(b.Attestations) > 128 {
-		err = ssz.ErrListTooBig
-		return
-	}
-	{
-		offset = 4 * len(b.Attestations)
-		for ii := 0; ii < len(b.Attestations); ii++ {
-			dst = ssz.WriteOffset(dst, offset)
-			offset += b.Attestations[ii].SizeSSZ()
-		}
-	}
-	for ii := 0; ii < len(b.Attestations); ii++ {
-		if dst, err = b.Attestations[ii].MarshalSSZTo(dst); err != nil {
-			return
-		}
+// SizeSSZ returns the ssz encoded size in bytes for the SignedAggregateAttestationAndProof object
+func (s *SignedAggregateAttestationAndProof) SizeSSZ() (size int) {
+	size = 100
+
+	// Field (0) 'Message'
+	if s.Message == nil {
+		s.Message = new(AggregateAttestationAndProof)
 	}
+	size += s.Message.SizeSSZ()
 
-	// Field (6) 'Deposits'
-	if len(b.Deposits) > 16 {
-		err = ssz.ErrListTooBig
+	return
+}
+
+// HashTreeRoot ssz hashes the SignedAggregateAttestationAndProof object
+func (s *SignedAggregateAttestationAndProof) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(s)
+}
+
+// HashTreeRootWith ssz hashes the SignedAggregateAttestationAndProof object with a hasher
+func (s *SignedAggregateAttestationAndProof) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+	indx := hh.Index()
+
+	// Field (0) 'Message'
+	if err = s.Message.HashTreeRootWith(hh); err != nil {
 		return
 	}
-	for ii := 0; ii < len(b.Deposits); ii++ {
-		if dst, err = b.Deposits[ii].MarshalSSZTo(dst); err != nil {
-			return
-		}
-	}
 
-	// Field (7) 'VoluntaryExits'
-	if len(b.VoluntaryExits) > 16 {
-		err = ssz.ErrListTooBig
+	// Field (1) 'Signature'
+	if len(s.Signature) != 96 {
+		err = ssz.ErrBytesLength
 		return
 	}
-	for ii := 0; ii < len(b.VoluntaryExits); ii++ {
-		if dst, err = b.VoluntaryExits[ii].MarshalSSZTo(dst); err != nil {
-			return
-		}
-	}
+	hh.PutBytes(s.Signature)
 
+	hh.Merkleize(indx)
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the BeaconBlockBody object
-func (b *BeaconBlockBody) UnmarshalSSZ(buf []byte) error {
-	var err error
-	size := uint64(len(buf))
-	if size < 220 {
-		return ssz.ErrSize
-	}
-
-	tail := buf
-	var o3, o4, o5, o6, o7 uint64
+// MarshalSSZ ssz marshals the AttestationData object
+func (a *AttestationData) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(a)
+}
 
-	// Field (0) 'RandaoReveal'
-	b.RandaoReveal = append(b.RandaoReveal, buf[0:96]...)
+// MarshalSSZTo ssz marshals the AttestationData object to a target array
+func (a *AttestationData) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+	dst = buf
 
-	// Field (1) 'Eth1Data'
-	if b.Eth1Data == nil {
-		b.Eth1Data = new(Eth1Data)
-	}
-	if err = b.Eth1Data.UnmarshalSSZ(buf[96:168]); err != nil {
-		return err
-	}
+	// Field (0) 'Slot'
+	dst = ssz.MarshalUint64(dst, a.Slot)
 
-	// Field (2) 'Graffiti'
-	b.Graffiti = append(b.Graffiti, buf[168:200]...)
+	// Field (1) 'CommitteeIndex'
+	dst = ssz.MarshalUint64(dst, a.CommitteeIndex)
 
-	// Offset (3) 'ProposerSlashings'
-	if o3 = ssz.ReadOffset(buf[200:204]); o3 > size {
-		return ssz.ErrOffset
+	// Field (2) 'BeaconBlockRoot'
+	if len(a.BeaconBlockRoot) != 32 {
+		err = ssz.ErrBytesLength
+		return
 	}
+	dst = append(dst, a.BeaconBlockRoot...)
 
-	// Offset (4) 'AttesterSlashings'
-	if o4 = ssz.ReadOffset(buf[204:208]); o4 > size || o3 > o4 {
-		return ssz.ErrOffset
+	// Field (3) 'Source'
+	if a.Source == nil {
+		a.Source = new(Checkpoint)
 	}
-
-	// Offset (5) 'Attestations'
-	if o5 = ssz.ReadOffset(buf[208:212]); o5 > size || o4 > o5 {
-		return ssz.ErrOffset
+	if dst, err = a.Source.MarshalSSZTo(dst); err != nil {
+		return
 	}
 
-	// Offset (6) 'Deposits'
-	if o6 = ssz.ReadOffset(buf[212:216]); o6 > size || o5 > o6 {
-		return ssz.ErrOffset
+	// Field (4) 'Target'
+	if a.Target == nil {
+		a.Target = new(Checkpoint)
 	}
-
-	// Offset (7) 'VoluntaryExits'
-	if o7 = ssz.ReadOffset(buf[216:220]); o7 > size || o6 > o7 {
-		return ssz.ErrOffset
+	if dst, err = a.Target.MarshalSSZTo(dst); err != nil {
+		return
 	}
 
-	// Field (3) 'ProposerSlashings'
-	{
-		buf = tail[o3:o4]
-		num, err := ssz.DivideInt2(len(buf), 416, 16)
-		if err != nil {
-			return err
-		}
-		b.ProposerSlashings = make([]*ProposerSlashing, num)
-		for ii := 0; ii < num; ii++ {
-			if b.ProposerSlashings[ii] == nil {
-				b.ProposerSlashings[ii] = new(ProposerSlashing)
-			}
-			if err = b.ProposerSlashings[ii].UnmarshalSSZ(buf[ii*416 : (ii+1)*416]); err != nil {
-				return err
-			}
-		}
-	}
+	return
+}
 
-	// Field (4) 'AttesterSlashings'
-	{
-		buf = tail[o4:o5]
-		num, err := ssz.DecodeDynamicLength(buf, 2)
-		if err != nil {
-			return err
-		}
-		b.AttesterSlashings = make([]*AttesterSlashing, num)
-		err = ssz.UnmarshalDynamic(buf, num, func(indx int, buf []byte) (err error) {
-			if b.AttesterSlashings[indx] == nil {
-				b.AttesterSlashings[indx] = new(AttesterSlashing)
-			}
-			if err = b.AttesterSlashings[indx].UnmarshalSSZ(buf); err != nil {
-				return err
-			}
-			return nil
-		})
-		if err != nil {
-			return err
-		}
+// UnmarshalSSZ ssz unmarshals the AttestationData object
+func (a *AttestationData) UnmarshalSSZ(buf []byte) error {
+	var err error
+	size := uint64(len(buf))
+	if size != 128 {
+		return ssz.ErrSize
 	}
 
-	// Field (5) 'Attestations'
-	{
-		buf = tail[o5:o6]
-		num, err := ssz.DecodeDynamicLength(buf, 128)
-		if err != nil {
-			return err
-		}
-		b.Attestations = make([]*Attestation, num)
-		err = ssz.UnmarshalDynamic(buf, num, func(indx int, buf []byte) (err error) {
-			if b.Attestations[indx] == nil {
-				b.Attestations[indx] = new(Attestation)
-			}
-			if err = b.Attestations[indx].UnmarshalSSZ(buf); err != nil {
-				return err
-			}
-			return nil
-		})
-		if err != nil {
-			return err
-		}
+	// Field (0) 'Slot'
+	a.Slot = ssz.UnmarshallUint64(buf[0:8])
+
+	// Field (1) 'CommitteeIndex'
+	a.CommitteeIndex = ssz.UnmarshallUint64(buf[8:16])
+
+	// Field (2) 'BeaconBlockRoot'
+	if cap(a.BeaconBlockRoot) == 0 {
+		a.BeaconBlockRoot = make([]byte, 0, len(buf[16:48]))
 	}
+	a.BeaconBlockRoot = append(a.BeaconBlockRoot, buf[16:48]...)
 
-	// Field (6) 'Deposits'
-	{
-		buf = tail[o6:o7]
-		num, err := ssz.DivideInt2(len(buf), 1240, 16)
-		if err != nil {
-			return err
-		}
-		b.Deposits = make([]*Deposit, num)
-		for ii := 0; ii < num; ii++ {
-			if b.Deposits[ii] == nil {
-				b.Deposits[ii] = new(Deposit)
-			}
-			if err = b.Deposits[ii].UnmarshalSSZ(buf[ii*1240 : (ii+1)*1240]); err != nil {
-				return err
-			}
-		}
+	// Field (3) 'Source'
+	if a.Source == nil {
+		a.Source = new(Checkpoint)
+	}
+	if err = a.Source.UnmarshalSSZ(buf[48:88]); err != nil {
+		return err
 	}
 
-	// Field (7) 'VoluntaryExits'
-	{
-		buf = tail[o7:]
-		num, err := ssz.DivideInt2(len(buf), 112, 16)
-		if err != nil {
-			return err
-		}
-		b.VoluntaryExits = make([]*SignedVoluntaryExit, num)
-		for ii := 0; ii < num; ii++ {
-			if b.VoluntaryExits[ii] == nil {
-				b.VoluntaryExits[ii] = new(SignedVoluntaryExit)
-			}
-			if err = b.VoluntaryExits[ii].UnmarshalSSZ(buf[ii*112 : (ii+1)*112]); err != nil {
-				return err
-			}
-		}
+	// Field (4) 'Target'
+	if a.Target == nil {
+		a.Target = new(Checkpoint)
+	}
+	if err = a.Target.UnmarshalSSZ(buf[88:128]); err != nil {
+		return err
 	}
+
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the BeaconBlockBody object
-func (b *BeaconBlockBody) SizeSSZ() (size int) {
-	size = 220
+// SizeSSZ returns the ssz encoded size in bytes for the AttestationData object
+func (a *AttestationData) SizeSSZ() (size int) {
+	size = 128
+	return
+}
 
-	// Field (3) 'ProposerSlashings'
-	size += len(b.ProposerSlashings) * 416
+// HashTreeRoot ssz hashes the AttestationData object
+func (a *AttestationData) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(a)
+}
 
-	// Field (4) 'AttesterSlashings'
-	for ii := 0; ii < len(b.AttesterSlashings); ii++ {
-		size += 4
-		size += b.AttesterSlashings[ii].SizeSSZ()
-	}
+// HashTreeRootWith ssz hashes the AttestationData object with a hasher
+func (a *AttestationData) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+	indx := hh.Index()
 
-	// Field (5) 'Attestations'
-	for ii := 0; ii < len(b.Attestations); ii++ {
-		size += 4
-		size += b.Attestations[ii].SizeSSZ()
+	// Field (0) 'Slot'
+	hh.PutUint64(a.Slot)
+
+	// Field (1) 'CommitteeIndex'
+	hh.PutUint64(a.CommitteeIndex)
+
+	// Field (2) 'BeaconBlockRoot'
+	if len(a.BeaconBlockRoot) != 32 {
+		err = ssz.ErrBytesLength
+		return
 	}
+	hh.PutBytes(a.BeaconBlockRoot)
 
-	// Field (6) 'Deposits'
-	size += len(b.Deposits) * 1240
+	// Field (3) 'Source'
+	if err = a.Source.HashTreeRootWith(hh); err != nil {
+		return
+	}
 
-	// Field (7) 'VoluntaryExits'
-	size += len(b.VoluntaryExits) * 112
+	// Field (4) 'Target'
+	if err = a.Target.HashTreeRootWith(hh); err != nil {
+		return
+	}
 
+	hh.Merkleize(indx)
 	return
 }
 
-// HashTreeRoot ssz hashes the BeaconBlockBody object
-func (b *BeaconBlockBody) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(b)
+// MarshalSSZ ssz marshals the Checkpoint object
+func (c *Checkpoint) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(c)
 }
 
-// HashTreeRootWith ssz hashes the BeaconBlockBody object with a hasher
-func (b *BeaconBlockBody) HashTreeRootWith(hh *ssz.Hasher) (err error) {
-	indx := hh.Index()
+// MarshalSSZTo ssz marshals the Checkpoint object to a target array
+func (c *Checkpoint) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+	dst = buf
 
-	// Field (0) 'RandaoReveal'
-	if len(b.RandaoReveal) != 96 {
+	// Field (0) 'Epoch'
+	dst = ssz.MarshalUint64(dst, uint64(c.Epoch))
+
+	// Field (1) 'Root'
+	if len(c.Root) != 32 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(b.RandaoReveal)
+	dst = append(dst, c.Root...)
 
-	// Field (1) 'Eth1Data'
-	if err = b.Eth1Data.HashTreeRootWith(hh); err != nil {
-		return
-	}
+	return
+}
 
-	// Field (2) 'Graffiti'
-	if len(b.Graffiti) != 32 {
-		err = ssz.ErrBytesLength
-		return
+// UnmarshalSSZ ssz unmarshals the Checkpoint object
+func (c *Checkpoint) UnmarshalSSZ(buf []byte) error {
+	var err error
+	size := uint64(len(buf))
+	if size != 40 {
+		return ssz.ErrSize
 	}
-	hh.PutBytes(b.Graffiti)
 
-	// Field (3) 'ProposerSlashings'
-	{
-		subIndx := hh.Index()
-		num := uint64(len(b.ProposerSlashings))
-		if num > 16 {
-			err = ssz.ErrIncorrectListSize
-			return
-		}
-		for i := uint64(0); i < num; i++ {
-			if err = b.ProposerSlashings[i].HashTreeRootWith(hh); err != nil {
-				return
-			}
-		}
-		hh.MerkleizeWithMixin(subIndx, num, 16)
-	}
+	// Field (0) 'Epoch'
+	c.Epoch = github_com_prysmaticlabs_eth2_types.Epoch(ssz.UnmarshallUint64(buf[0:8]))
 
-	// Field (4) 'AttesterSlashings'
-	{
-		subIndx := hh.Index()
-		num := uint64(len(b.AttesterSlashings))
-		if num > 2 {
-			err = ssz.ErrIncorrectListSize
-			return
-		}
-		for i := uint64(0); i < num; i++ {
-			if err = b.AttesterSlashings[i].HashTreeRootWith(hh); err != nil {
-				return
-			}
-		}
-		hh.MerkleizeWithMixin(subIndx, num, 2)
+	// Field (1) 'Root'
+	if cap(c.Root) == 0 {
+		c.Root = make([]byte, 0, len(buf[8:40]))
 	}
+	c.Root = append(c.Root, buf[8:40]...)
 
-	// Field (5) 'Attestations'
-	{
-		subIndx := hh.Index()
-		num := uint64(len(b.Attestations))
-		if num > 128 {
-			err = ssz.ErrIncorrectListSize
-			return
-		}
-		for i := uint64(0); i < num; i++ {
-			if err = b.Attestations[i].HashTreeRootWith(hh); err != nil {
-				return
-			}
-		}
-		hh.MerkleizeWithMixin(subIndx, num, 128)
-	}
+	return err
+}
 
-	// Field (6) 'Deposits'
-	{
-		subIndx := hh.Index()
-		num := uint64(len(b.Deposits))
-		if num > 16 {
-			err = ssz.ErrIncorrectListSize
-			return
-		}
-		for i := uint64(0); i < num; i++ {
-			if err = b.Deposits[i].HashTreeRootWith(hh); err != nil {
-				return
-			}
-		}
-		hh.MerkleizeWithMixin(subIndx, num, 16)
-	}
+// SizeSSZ returns the ssz encoded size in bytes for the Checkpoint object
+func (c *Checkpoint) SizeSSZ() (size int) {
+	size = 40
+	return
+}
 
-	// Field (7) 'VoluntaryExits'
-	{
-		subIndx := hh.Index()
-		num := uint64(len(b.VoluntaryExits))
-		if num > 16 {
-			err = ssz.ErrIncorrectListSize
-			return
-		}
-		for i := uint64(0); i < num; i++ {
-			if err = b.VoluntaryExits[i].HashTreeRootWith(hh); err != nil {
-				return
-			}
-		}
-		hh.MerkleizeWithMixin(subIndx, num, 16)
+// HashTreeRoot ssz hashes the Checkpoint object
+func (c *Checkpoint) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(c)
+}
+
+// HashTreeRootWith ssz hashes the Checkpoint object with a hasher
+func (c *Checkpoint) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+	indx := hh.Index()
+
+	// Field (0) 'Epoch'
+	hh.PutUint64(uint64(c.Epoch))
+
+	// Field (1) 'Root'
+	if len(c.Root) != 32 {
+		err = ssz.ErrBytesLength
+		return
 	}
+	hh.PutBytes(c.Root)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the ProposerSlashing object
-func (p *ProposerSlashing) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(p)
+// MarshalSSZ ssz marshals the BeaconBlock object
+func (b *BeaconBlock) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(b)
 }
 
-// MarshalSSZTo ssz marshals the ProposerSlashing object to a target array
-func (p *ProposerSlashing) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the BeaconBlock object to a target array
+func (b *BeaconBlock) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
+	offset := int(84)
 
-	// Field (0) 'Header_1'
-	if p.Header_1 == nil {
-		p.Header_1 = new(SignedBeaconBlockHeader)
+	// Field (0) 'Slot'
+	dst = ssz.MarshalUint64(dst, b.Slot)
+
+	// Field (1) 'ProposerIndex'
+	dst = ssz.MarshalUint64(dst, b.ProposerIndex)
+
+	// Field (2) 'ParentRoot'
+	if len(b.ParentRoot) != 32 {
+		err = ssz.ErrBytesLength
+		return
 	}
-	if dst, err = p.Header_1.MarshalSSZTo(dst); err != nil {
+	dst = append(dst, b.ParentRoot...)
+
+	// Field (3) 'StateRoot'
+	if len(b.StateRoot) != 32 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	dst = append(dst, b.StateRoot...)
 
-	// Field (1) 'Header_2'
-	if p.Header_2 == nil {
-		p.Header_2 = new(SignedBeaconBlockHeader)
+	// Offset (4) 'Body'
+	dst = ssz.WriteOffset(dst, offset)
+	if b.Body == nil {
+		b.Body = new(BeaconBlockBody)
 	}
-	if dst, err = p.Header_2.MarshalSSZTo(dst); err != nil {
+	offset += b.Body.SizeSSZ()
+
+	// Field (4) 'Body'
+	if dst, err = b.Body.MarshalSSZTo(dst); err != nil {
 		return
 	}
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the ProposerSlashing object
-func (p *ProposerSlashing) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the BeaconBlock object
+func (b *BeaconBlock) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size != 416 {
+	if size < 84 {
 		return ssz.ErrSize
 	}
 
-	// Field (0) 'Header_1'
-	if p.Header_1 == nil {
-		p.Header_1 = new(SignedBeaconBlockHeader)
-	}
-	if err = p.Header_1.UnmarshalSSZ(buf[0:208]); err != nil {
-		return err
+	tail := buf
+	var o4 uint64
+
+	// Field (0) 'Slot'
+	b.Slot = ssz.UnmarshallUint64(buf[0:8])
+
+	// Field (1) 'ProposerIndex'
+	b.ProposerIndex = ssz.UnmarshallUint64(buf[8:16])
+
+	// Field (2) 'ParentRoot'
+	if cap(b.ParentRoot) == 0 {
+		b.ParentRoot = make([]byte, 0, len(buf[16:48]))
 	}
+	b.ParentRoot = append(b.ParentRoot, buf[16:48]...)
 
-	// Field (1) 'Header_2'
-	if p.Header_2 == nil {
-		p.Header_2 = new(SignedBeaconBlockHeader)
+	// Field (3) 'StateRoot'
+	if cap(b.StateRoot) == 0 {
+		b.StateRoot = make([]byte, 0, len(buf[48:80]))
 	}
-	if err = p.Header_2.UnmarshalSSZ(buf[208:416]); err != nil {
-		return err
+	b.StateRoot = append(b.StateRoot, buf[48:80]...)
+
+	// Offset (4) 'Body'
+	if o4 = ssz.ReadOffset(buf[80:84]); o4 > size {
+		return ssz.ErrOffset
 	}
 
+	// Field (4) 'Body'
+	{
+		buf = tail[o4:]
+		if b.Body == nil {
+			b.Body = new(BeaconBlockBody)
+		}
+		if err = b.Body.UnmarshalSSZ(buf); err != nil {
+			return err
+		}
+	}
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the ProposerSlashing object
-func (p *ProposerSlashing) SizeSSZ() (size int) {
-	size = 416
+// SizeSSZ returns the ssz encoded size in bytes for the BeaconBlock object
+func (b *BeaconBlock) SizeSSZ() (size int) {
+	size = 84
+
+	// Field (4) 'Body'
+	if b.Body == nil {
+		b.Body = new(BeaconBlockBody)
+	}
+	size += b.Body.SizeSSZ()
+
 	return
 }
-
-// HashTreeRoot ssz hashes the ProposerSlashing object
-func (p *ProposerSlashing) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(p)
+
+// HashTreeRoot ssz hashes the BeaconBlock object
+func (b *BeaconBlock) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(b)
 }
 
-// HashTreeRootWith ssz hashes the ProposerSlashing object with a hasher
-func (p *ProposerSlashing) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the BeaconBlock object with a hasher
+func (b *BeaconBlock) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Header_1'
-	if err = p.Header_1.HashTreeRootWith(hh); err != nil {
+	// Field (0) 'Slot'
+	hh.PutUint64(b.Slot)
+
+	// Field (1) 'ProposerIndex'
+	hh.PutUint64(b.ProposerIndex)
+
+	// Field (2) 'ParentRoot'
+	if len(b.ParentRoot) != 32 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	hh.PutBytes(b.ParentRoot)
 
-	// Field (1) 'Header_2'
-	if err = p.Header_2.HashTreeRootWith(hh); err != nil {
+	// Field (3) 'StateRoot'
+	if len(b.StateRoot) != 32 {
+		err = ssz.ErrBytesLength
+		return
+	}
+	hh.PutBytes(b.StateRoot)
+
+	// Field (4) 'Body'
+	if err = b.Body.HashTreeRootWith(hh); err != nil {
 		return
 	}
 
@@ -748,1390 +686,1526 @@ func (p *ProposerSlashing) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	return
 }
 
-// MarshalSSZ ssz marshals the AttesterSlashing object
-func (a *AttesterSlashing) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(a)
+// MarshalSSZ ssz marshals the SignedBeaconBlock object
+func (s *SignedBeaconBlock) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(s)
 }
 
-// MarshalSSZTo ssz marshals the AttesterSlashing object to a target array
-func (a *AttesterSlashing) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the SignedBeaconBlock object to a target array
+func (s *SignedBeaconBlock) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
-	offset := int(8)
-
-	// Offset (0) 'Attestation_1'
-	dst = ssz.WriteOffset(dst, offset)
-	if a.Attestation_1 == nil {
-		a.Attestation_1 = new(IndexedAttestation)
-	}
-	offset += a.Attestation_1.SizeSSZ()
+	offset := int(100)
 
-	// Offset (1) 'Attestation_2'
+	// Offset (0) 'Block'
 	dst = ssz.WriteOffset(dst, offset)
-	if a.Attestation_2 == nil {
-		a.Attestation_2 = new(IndexedAttestation)
+	if s.Block == nil {
+		s.Block = new(BeaconBlock)
 	}
-	offset += a.Attestation_2.SizeSSZ()
+	offset += s.Block.SizeSSZ()
 
-	// Field (0) 'Attestation_1'
-	if dst, err = a.Attestation_1.MarshalSSZTo(dst); err != nil {
+	// Field (1) 'Signature'
+	if len(s.Signature) != 96 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	dst = append(dst, s.Signature...)
 
-	// Field (1) 'Attestation_2'
-	if dst, err = a.Attestation_2.MarshalSSZTo(dst); err != nil {
+	// Field (0) 'Block'
+	if dst, err = s.Block.MarshalSSZTo(dst); err != nil {
 		return
 	}
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the AttesterSlashing object
-func (a *AttesterSlashing) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the SignedBeaconBlock object
+func (s *SignedBeaconBlock) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size < 8 {
+	if size < 100 {
 		return ssz.ErrSize
 	}
 
 	tail := buf
-	var o0, o1 uint64
+	var o0 uint64
 
-	// Offset (0) 'Attestation_1'
+	// Offset (0) 'Block'
 	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
 		return ssz.ErrOffset
 	}
 
-	// Offset (1) 'Attestation_2'
-	if o1 = ssz.ReadOffset(buf[4:8]); o1 > size || o0 > o1 {
-		return ssz.ErrOffset
-	}
-
-	// Field (0) 'Attestation_1'
-	{
-		buf = tail[o0:o1]
-		if a.Attestation_1 == nil {
-			a.Attestation_1 = new(IndexedAttestation)
-		}
-		if err = a.Attestation_1.UnmarshalSSZ(buf); err != nil {
-			return err
-		}
+	// Field (1) 'Signature'
+	if cap(s.Signature) == 0 {
+		s.Signature = make([]byte, 0, len(buf[4:100]))
 	}
+	s.Signature = append(s.Signature, buf[4:100]...)
 
-	// Field (1) 'Attestation_2'
+	// Field (0) 'Block'
 	{
-		buf = tail[o1:]
-		if a.Attestation_2 == nil {
-			a.Attestation_2 = new(IndexedAttestation)
+		buf = tail[o0:]
+		if s.Block == nil {
+			s.Block = new(BeaconBlock)
 		}
-		if err = a.Attestation_2.UnmarshalSSZ(buf); err != nil {
+		if err = s.Block.UnmarshalSSZ(buf); err != nil {
 			return err
 		}
 	}
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the AttesterSlashing object
-func (a *AttesterSlashing) SizeSSZ() (size int) {
-	size = 8
-
-	// Field (0) 'Attestation_1'
-	if a.Attestation_1 == nil {
-		a.Attestation_1 = new(IndexedAttestation)
-	}
-	size += a.Attestation_1.SizeSSZ()
+// SizeSSZ returns the ssz encoded size in bytes for the SignedBeaconBlock object
+func (s *SignedBeaconBlock) SizeSSZ() (size int) {
+	size = 100
 
-	// Field (1) 'Attestation_2'
-	if a.Attestation_2 == nil {
-		a.Attestation_2 = new(IndexedAttestation)
+	// Field (0) 'Block'
+	if s.Block == nil {
+		s.Block = new(BeaconBlock)
 	}
-	size += a.Attestation_2.SizeSSZ()
+	size += s.Block.SizeSSZ()
 
 	return
 }
 
-// HashTreeRoot ssz hashes the AttesterSlashing object
-func (a *AttesterSlashing) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(a)
+// HashTreeRoot ssz hashes the SignedBeaconBlock object
+func (s *SignedBeaconBlock) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(s)
 }
 
-// HashTreeRootWith ssz hashes the AttesterSlashing object with a hasher
-func (a *AttesterSlashing) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the SignedBeaconBlock object with a hasher
+func (s *SignedBeaconBlock) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Attestation_1'
-	if err = a.Attestation_1.HashTreeRootWith(hh); err != nil {
+	// Field (0) 'Block'
+	if err = s.Block.HashTreeRootWith(hh); err != nil {
 		return
 	}
 
-	// Field (1) 'Attestation_2'
-	if err = a.Attestation_2.HashTreeRootWith(hh); err != nil {
+	// Field (1) 'Signature'
+	if len(s.Signature) != 96 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	hh.PutBytes(s.Signature)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the Deposit object
-func (d *Deposit) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(d)
+// MarshalSSZ ssz marshals the BeaconBlockBody object
+func (b *BeaconBlockBody) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(b)
 }
 
-// MarshalSSZTo ssz marshals the Deposit object to a target array
-func (d *Deposit) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the BeaconBlockBody object to a target array
+func (b *BeaconBlockBody) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
+	offset := int(220)
 
-	// Field (0) 'Proof'
-	if len(d.Proof) != 33 {
-		err = ssz.ErrVectorLength
+	// Field (0) 'RandaoReveal'
+	if len(b.RandaoReveal) != 96 {
+		err = ssz.ErrBytesLength
+		return
+	}
+	dst = append(dst, b.RandaoReveal...)
+
+	// Field (1) 'Eth1Data'
+	if b.Eth1Data == nil {
+		b.Eth1Data = new(Eth1Data)
+	}
+	if dst, err = b.Eth1Data.MarshalSSZTo(dst); err != nil {
+		return
+	}
+
+	// Field (2) 'Graffiti'
+	if len(b.Graffiti) != 32 {
+		err = ssz.ErrBytesLength
+		return
+	}
+	dst = append(dst, b.Graffiti...)
+
+	// Offset (3) 'ProposerSlashings'
+	dst = ssz.WriteOffset(dst, offset)
+	offset += len(b.ProposerSlashings) * 416
+
+	// Offset (4) 'AttesterSlashings'
+	dst = ssz.WriteOffset(dst, offset)
+	for ii := 0; ii < len(b.AttesterSlashings); ii++ {
+		offset += 4
+		offset += b.AttesterSlashings[ii].SizeSSZ()
+	}
+
+	// Offset (5) 'Attestations'
+	dst = ssz.WriteOffset(dst, offset)
+	for ii := 0; ii < len(b.Attestations); ii++ {
+		offset += 4
+		offset += b.Attestations[ii].SizeSSZ()
+	}
+
+	// Offset (6) 'Deposits'
+	dst = ssz.WriteOffset(dst, offset)
+	offset += len(b.Deposits) * 1240
+
+	// Offset (7) 'VoluntaryExits'
+	dst = ssz.WriteOffset(dst, offset)
+	offset += len(b.VoluntaryExits) * 112
+
+	// Field (3) 'ProposerSlashings'
+	if len(b.ProposerSlashings) > 16 {
+		err = ssz.ErrListTooBig
+		return
+	}
+	for ii := 0; ii < len(b.ProposerSlashings); ii++ {
+		if dst, err = b.ProposerSlashings[ii].MarshalSSZTo(dst); err != nil {
+			return
+		}
+	}
+
+	// Field (4) 'AttesterSlashings'
+	if len(b.AttesterSlashings) > 2 {
+		err = ssz.ErrListTooBig
+		return
+	}
+	{
+		offset = 4 * len(b.AttesterSlashings)
+		for ii := 0; ii < len(b.AttesterSlashings); ii++ {
+			dst = ssz.WriteOffset(dst, offset)
+			offset += b.AttesterSlashings[ii].SizeSSZ()
+		}
+	}
+	for ii := 0; ii < len(b.AttesterSlashings); ii++ {
+		if dst, err = b.AttesterSlashings[ii].MarshalSSZTo(dst); err != nil {
+			return
+		}
+	}
+
+	// Field (5) 'Attestations'
+	if len(b.Attestations) > 128 {
+		err = ssz.ErrListTooBig
+		return
+	}
+	{
+		offset = 4 * len(b.Attestations)
+		for ii := 0; ii < len(b.Attestations); ii++ {
+			dst = ssz.WriteOffset(dst, offset)
+			offset += b.Attestations[ii].SizeSSZ()
+		}
+	}
+	for ii := 0; ii < len(b.Attestations); ii++ {
+		if dst, err = b.Attestations[ii].MarshalSSZTo(dst); err != nil {
+			return
+		}
+	}
+
+	// Field (6) 'Deposits'
+	if len(b.Deposits) > 16 {
+		err = ssz.ErrListTooBig
 		return
 	}
-	for ii := 0; ii < 33; ii++ {
-		if len(d.Proof[ii]) != 32 {
-			err = ssz.ErrBytesLength
+	for ii := 0; ii < len(b.Deposits); ii++ {
+		if dst, err = b.Deposits[ii].MarshalSSZTo(dst); err != nil {
 			return
 		}
-		dst = append(dst, d.Proof[ii]...)
 	}
 
-	// Field (1) 'Data'
-	if d.Data == nil {
-		d.Data = new(Deposit_Data)
-	}
-	if dst, err = d.Data.MarshalSSZTo(dst); err != nil {
+	// Field (7) 'VoluntaryExits'
+	if len(b.VoluntaryExits) > 16 {
+		err = ssz.ErrListTooBig
 		return
 	}
+	for ii := 0; ii < len(b.VoluntaryExits); ii++ {
+		if dst, err = b.VoluntaryExits[ii].MarshalSSZTo(dst); err != nil {
+			return
+		}
+	}
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the Deposit object
-func (d *Deposit) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the BeaconBlockBody object
+func (b *BeaconBlockBody) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size != 1240 {
+	if size < 220 {
 		return ssz.ErrSize
 	}
 
-	// Field (0) 'Proof'
-	d.Proof = make([][]byte, 33)
-	for ii := 0; ii < 33; ii++ {
-		d.Proof[ii] = append(d.Proof[ii], buf[0:1056][ii*32:(ii+1)*32]...)
+	tail := buf
+	var o3, o4, o5, o6, o7 uint64
+
+	// Field (0) 'RandaoReveal'
+	if cap(b.RandaoReveal) == 0 {
+		b.RandaoReveal = make([]byte, 0, len(buf[0:96]))
 	}
+	b.RandaoReveal = append(b.RandaoReveal, buf[0:96]...)
 
-	// Field (1) 'Data'
-	if d.Data == nil {
-		d.Data = new(Deposit_Data)
+	// Field (1) 'Eth1Data'
+	if b.Eth1Data == nil {
+		b.Eth1Data = new(Eth1Data)
 	}
-	if err = d.Data.UnmarshalSSZ(buf[1056:1240]); err != nil {
+	if err = b.Eth1Data.UnmarshalSSZ(buf[96:168]); err != nil {
 		return err
 	}
 
-	return err
-}
+	// Field (2) 'Graffiti'
+	if cap(b.Graffiti) == 0 {
+		b.Graffiti = make([]byte, 0, len(buf[168:200]))
+	}
+	b.Graffiti = append(b.Graffiti, buf[168:200]...)
 
-// SizeSSZ returns the ssz encoded size in bytes for the Deposit object
-func (d *Deposit) SizeSSZ() (size int) {
-	size = 1240
-	return
-}
+	// Offset (3) 'ProposerSlashings'
+	if o3 = ssz.ReadOffset(buf[200:204]); o3 > size {
+		return ssz.ErrOffset
+	}
 
-// HashTreeRoot ssz hashes the Deposit object
-func (d *Deposit) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(d)
-}
+	// Offset (4) 'AttesterSlashings'
+	if o4 = ssz.ReadOffset(buf[204:208]); o4 > size || o3 > o4 {
+		return ssz.ErrOffset
+	}
 
-// HashTreeRootWith ssz hashes the Deposit object with a hasher
-func (d *Deposit) HashTreeRootWith(hh *ssz.Hasher) (err error) {
-	indx := hh.Index()
+	// Offset (5) 'Attestations'
+	if o5 = ssz.ReadOffset(buf[208:212]); o5 > size || o4 > o5 {
+		return ssz.ErrOffset
+	}
 
-	// Field (0) 'Proof'
+	// Offset (6) 'Deposits'
+	if o6 = ssz.ReadOffset(buf[212:216]); o6 > size || o5 > o6 {
+		return ssz.ErrOffset
+	}
+
+	// Offset (7) 'VoluntaryExits'
+	if o7 = ssz.ReadOffset(buf[216:220]); o7 > size || o6 > o7 {
+		return ssz.ErrOffset
+	}
+
+	// Field (3) 'ProposerSlashings'
 	{
-		if len(d.Proof) != 33 {
-			err = ssz.ErrVectorLength
-			return
+		buf = tail[o3:o4]
+		num, err := ssz.DivideInt2(len(buf), 416, 16)
+		if err != nil {
+			return err
 		}
-		subIndx := hh.Index()
-		for _, i := range d.Proof {
-			if len(i) != 32 {
-				err = ssz.ErrBytesLength
-				return
+		b.ProposerSlashings = make([]*ProposerSlashing, num)
+		for ii := 0; ii < num; ii++ {
+			if b.ProposerSlashings[ii] == nil {
+				b.ProposerSlashings[ii] = new(ProposerSlashing)
+			}
+			if err = b.ProposerSlashings[ii].UnmarshalSSZ(buf[ii*416 : (ii+1)*416]); err != nil {
+				return err
 			}
-			hh.Append(i)
 		}
-		hh.Merkleize(subIndx)
 	}
 
-	// Field (1) 'Data'
-	if err = d.Data.HashTreeRootWith(hh); err != nil {
-		return
+	// Field (4) 'AttesterSlashings'
+	{
+		buf = tail[o4:o5]
+		num, err := ssz.DecodeDynamicLength(buf, 2)
+		if err != nil {
+			return err
+		}
+		b.AttesterSlashings = make([]*AttesterSlashing, num)
+		err = ssz.UnmarshalDynamic(buf, num, func(indx int, buf []byte) (err error) {
+			if b.AttesterSlashings[indx] == nil {
+				b.AttesterSlashings[indx] = new(AttesterSlashing)
+			}
+			if err = b.AttesterSlashings[indx].UnmarshalSSZ(buf); err != nil {
+				return err
+			}
+			return nil
+		})
+		if err != nil {
+			return err
+		}
 	}
 
-	hh.Merkleize(indx)
-	return
-}
-
-// MarshalSSZ ssz marshals the Deposit_Data object
-func (d *Deposit_Data) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(d)
-}
-
-// MarshalSSZTo ssz marshals the Deposit_Data object to a target array
-func (d *Deposit_Data) MarshalSSZTo(buf []byte) (dst []byte, err error) {
-	dst = buf
-
-	// Field (0) 'PublicKey'
-	if len(d.PublicKey) != 48 {
-		err = ssz.ErrBytesLength
-		return
+	// Field (5) 'Attestations'
+	{
+		buf = tail[o5:o6]
+		num, err := ssz.DecodeDynamicLength(buf, 128)
+		if err != nil {
+			return err
+		}
+		b.Attestations = make([]*Attestation, num)
+		err = ssz.UnmarshalDynamic(buf, num, func(indx int, buf []byte) (err error) {
+			if b.Attestations[indx] == nil {
+				b.Attestations[indx] = new(Attestation)
+			}
+			if err = b.Attestations[indx].UnmarshalSSZ(buf); err != nil {
+				return err
+			}
+			return nil
+		})
+		if err != nil {
+			return err
+		}
 	}
-	dst = append(dst, d.PublicKey...)
 
-	// Field (1) 'WithdrawalCredentials'
-	if len(d.WithdrawalCredentials) != 32 {
-		err = ssz.ErrBytesLength
-		return
+	// Field (6) 'Deposits'
+	{
+		buf = tail[o6:o7]
+		num, err := ssz.DivideInt2(len(buf), 1240, 16)
+		if err != nil {
+			return err
+		}
+		b.Deposits = make([]*Deposit, num)
+		for ii := 0; ii < num; ii++ {
+			if b.Deposits[ii] == nil {
+				b.Deposits[ii] = new(Deposit)
+			}
+			if err = b.Deposits[ii].UnmarshalSSZ(buf[ii*1240 : (ii+1)*1240]); err != nil {
+				return err
+			}
+		}
 	}
-	dst = append(dst, d.WithdrawalCredentials...)
-
-	// Field (2) 'Amount'
-	dst = ssz.MarshalUint64(dst, d.Amount)
 
-	// Field (3) 'Signature'
-	if len(d.Signature) != 96 {
-		err = ssz.ErrBytesLength
-		return
+	// Field (7) 'VoluntaryExits'
+	{
+		buf = tail[o7:]
+		num, err := ssz.DivideInt2(len(buf), 112, 16)
+		if err != nil {
+			return err
+		}
+		b.VoluntaryExits = make([]*SignedVoluntaryExit, num)
+		for ii := 0; ii < num; ii++ {
+			if b.VoluntaryExits[ii] == nil {
+				b.VoluntaryExits[ii] = new(SignedVoluntaryExit)
+			}
+			if err = b.VoluntaryExits[ii].UnmarshalSSZ(buf[ii*112 : (ii+1)*112]); err != nil {
+				return err
+			}
+		}
 	}
-	dst = append(dst, d.Signature...)
-
-	return
+	return err
 }
 
-// UnmarshalSSZ ssz unmarshals the Deposit_Data object
-func (d *Deposit_Data) UnmarshalSSZ(buf []byte) error {
-	var err error
-	size := uint64(len(buf))
-	if size != 184 {
-		return ssz.ErrSize
-	}
+// SizeSSZ returns the ssz encoded size in bytes for the BeaconBlockBody object
+func (b *BeaconBlockBody) SizeSSZ() (size int) {
+	size = 220
 
-	// Field (0) 'PublicKey'
-	d.PublicKey = append(d.PublicKey, buf[0:48]...)
+	// Field (3) 'ProposerSlashings'
+	size += len(b.ProposerSlashings) * 416
 
-	// Field (1) 'WithdrawalCredentials'
-	d.WithdrawalCredentials = append(d.WithdrawalCredentials, buf[48:80]...)
+	// Field (4) 'AttesterSlashings'
+	for ii := 0; ii < len(b.AttesterSlashings); ii++ {
+		size += 4
+		size += b.AttesterSlashings[ii].SizeSSZ()
+	}
 
-	// Field (2) 'Amount'
-	d.Amount = ssz.UnmarshallUint64(buf[80:88])
+	// Field (5) 'Attestations'
+	for ii := 0; ii < len(b.Attestations); ii++ {
+		size += 4
+		size += b.Attestations[ii].SizeSSZ()
+	}
 
-	// Field (3) 'Signature'
-	d.Signature = append(d.Signature, buf[88:184]...)
+	// Field (6) 'Deposits'
+	size += len(b.Deposits) * 1240
 
-	return err
-}
+	// Field (7) 'VoluntaryExits'
+	size += len(b.VoluntaryExits) * 112
 
-// SizeSSZ returns the ssz encoded size in bytes for the Deposit_Data object
-func (d *Deposit_Data) SizeSSZ() (size int) {
-	size = 184
 	return
 }
 
-// HashTreeRoot ssz hashes the Deposit_Data object
-func (d *Deposit_Data) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(d)
+// HashTreeRoot ssz hashes the BeaconBlockBody object
+func (b *BeaconBlockBody) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(b)
 }
 
-// HashTreeRootWith ssz hashes the Deposit_Data object with a hasher
-func (d *Deposit_Data) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the BeaconBlockBody object with a hasher
+func (b *BeaconBlockBody) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'PublicKey'
-	if len(d.PublicKey) != 48 {
+	// Field (0) 'RandaoReveal'
+	if len(b.RandaoReveal) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(d.PublicKey)
+	hh.PutBytes(b.RandaoReveal)
 
-	// Field (1) 'WithdrawalCredentials'
-	if len(d.WithdrawalCredentials) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Eth1Data'
+	if err = b.Eth1Data.HashTreeRootWith(hh); err != nil {
 		return
 	}
-	hh.PutBytes(d.WithdrawalCredentials)
-
-	// Field (2) 'Amount'
-	hh.PutUint64(d.Amount)
 
-	// Field (3) 'Signature'
-	if len(d.Signature) != 96 {
+	// Field (2) 'Graffiti'
+	if len(b.Graffiti) != 32 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(d.Signature)
-
-	hh.Merkleize(indx)
-	return
-}
-
-// MarshalSSZ ssz marshals the VoluntaryExit object
-func (v *VoluntaryExit) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(v)
-}
-
-// MarshalSSZTo ssz marshals the VoluntaryExit object to a target array
-func (v *VoluntaryExit) MarshalSSZTo(buf []byte) (dst []byte, err error) {
-	dst = buf
-
-	// Field (0) 'Epoch'
-	dst = ssz.MarshalUint64(dst, v.Epoch)
-
-	// Field (1) 'ValidatorIndex'
-	dst = ssz.MarshalUint64(dst, v.ValidatorIndex)
-
-	return
-}
+	hh.PutBytes(b.Graffiti)
 
-// UnmarshalSSZ ssz unmarshals the VoluntaryExit object
-func (v *VoluntaryExit) UnmarshalSSZ(buf []byte) error {
-	var err error
-	size := uint64(len(buf))
-	if size != 16 {
-		return ssz.ErrSize
+	// Field (3) 'ProposerSlashings'
+	{
+		subIndx := hh.Index()
+		num := uint64(len(b.ProposerSlashings))
+		if num > 16 {
+			err = ssz.ErrIncorrectListSize
+			return
+		}
+		for i := uint64(0); i < num; i++ {
+			if err = b.ProposerSlashings[i].HashTreeRootWith(hh); err != nil {
+				return
+			}
+		}
+		hh.MerkleizeWithMixin(subIndx, num, 16)
 	}
 
-	// Field (0) 'Epoch'
-	v.Epoch = ssz.UnmarshallUint64(buf[0:8])
-
-	// Field (1) 'ValidatorIndex'
-	v.ValidatorIndex = ssz.UnmarshallUint64(buf[8:16])
-
-	return err
-}
-
-// SizeSSZ returns the ssz encoded size in bytes for the VoluntaryExit object
-func (v *VoluntaryExit) SizeSSZ() (size int) {
-	size = 16
-	return
-}
-
-// HashTreeRoot ssz hashes the VoluntaryExit object
-func (v *VoluntaryExit) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(v)
-}
+	// Field (4) 'AttesterSlashings'
+	{
+		subIndx := hh.Index()
+		num := uint64(len(b.AttesterSlashings))
+		if num > 2 {
+			err = ssz.ErrIncorrectListSize
+			return
+		}
+		for i := uint64(0); i < num; i++ {
+			if err = b.AttesterSlashings[i].HashTreeRootWith(hh); err != nil {
+				return
+			}
+		}
+		hh.MerkleizeWithMixin(subIndx, num, 2)
+	}
 
-// HashTreeRootWith ssz hashes the VoluntaryExit object with a hasher
-func (v *VoluntaryExit) HashTreeRootWith(hh *ssz.Hasher) (err error) {
-	indx := hh.Index()
+	// Field (5) 'Attestations'
+	{
+		subIndx := hh.Index()
+		num := uint64(len(b.Attestations))
+		if num > 128 {
+			err = ssz.ErrIncorrectListSize
+			return
+		}
+		for i := uint64(0); i < num; i++ {
+			if err = b.Attestations[i].HashTreeRootWith(hh); err != nil {
+				return
+			}
+		}
+		hh.MerkleizeWithMixin(subIndx, num, 128)
+	}
 
-	// Field (0) 'Epoch'
-	hh.PutUint64(v.Epoch)
+	// Field (6) 'Deposits'
+	{
+		subIndx := hh.Index()
+		num := uint64(len(b.Deposits))
+		if num > 16 {
+			err = ssz.ErrIncorrectListSize
+			return
+		}
+		for i := uint64(0); i < num; i++ {
+			if err = b.Deposits[i].HashTreeRootWith(hh); err != nil {
+				return
+			}
+		}
+		hh.MerkleizeWithMixin(subIndx, num, 16)
+	}
 
-	// Field (1) 'ValidatorIndex'
-	hh.PutUint64(v.ValidatorIndex)
+	// Field (7) 'VoluntaryExits'
+	{
+		subIndx := hh.Index()
+		num := uint64(len(b.VoluntaryExits))
+		if num > 16 {
+			err = ssz.ErrIncorrectListSize
+			return
+		}
+		for i := uint64(0); i < num; i++ {
+			if err = b.VoluntaryExits[i].HashTreeRootWith(hh); err != nil {
+				return
+			}
+		}
+		hh.MerkleizeWithMixin(subIndx, num, 16)
+	}
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the SignedVoluntaryExit object
-func (s *SignedVoluntaryExit) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(s)
+// MarshalSSZ ssz marshals the ProposerSlashing object
+func (p *ProposerSlashing) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(p)
 }
 
-// MarshalSSZTo ssz marshals the SignedVoluntaryExit object to a target array
-func (s *SignedVoluntaryExit) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the ProposerSlashing object to a target array
+func (p *ProposerSlashing) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
 
-	// Field (0) 'Exit'
-	if s.Exit == nil {
-		s.Exit = new(VoluntaryExit)
+	// Field (0) 'Header_1'
+	if p.Header_1 == nil {
+		p.Header_1 = new(SignedBeaconBlockHeader)
 	}
-	if dst, err = s.Exit.MarshalSSZTo(dst); err != nil {
+	if dst, err = p.Header_1.MarshalSSZTo(dst); err != nil {
 		return
 	}
 
-	// Field (1) 'Signature'
-	if len(s.Signature) != 96 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Header_2'
+	if p.Header_2 == nil {
+		p.Header_2 = new(SignedBeaconBlockHeader)
+	}
+	if dst, err = p.Header_2.MarshalSSZTo(dst); err != nil {
 		return
 	}
-	dst = append(dst, s.Signature...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the SignedVoluntaryExit object
-func (s *SignedVoluntaryExit) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the ProposerSlashing object
+func (p *ProposerSlashing) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size != 112 {
+	if size != 416 {
 		return ssz.ErrSize
 	}
 
-	// Field (0) 'Exit'
-	if s.Exit == nil {
-		s.Exit = new(VoluntaryExit)
+	// Field (0) 'Header_1'
+	if p.Header_1 == nil {
+		p.Header_1 = new(SignedBeaconBlockHeader)
 	}
-	if err = s.Exit.UnmarshalSSZ(buf[0:16]); err != nil {
+	if err = p.Header_1.UnmarshalSSZ(buf[0:208]); err != nil {
 		return err
 	}
 
-	// Field (1) 'Signature'
-	s.Signature = append(s.Signature, buf[16:112]...)
+	// Field (1) 'Header_2'
+	if p.Header_2 == nil {
+		p.Header_2 = new(SignedBeaconBlockHeader)
+	}
+	if err = p.Header_2.UnmarshalSSZ(buf[208:416]); err != nil {
+		return err
+	}
 
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the SignedVoluntaryExit object
-func (s *SignedVoluntaryExit) SizeSSZ() (size int) {
-	size = 112
+// SizeSSZ returns the ssz encoded size in bytes for the ProposerSlashing object
+func (p *ProposerSlashing) SizeSSZ() (size int) {
+	size = 416
 	return
 }
 
-// HashTreeRoot ssz hashes the SignedVoluntaryExit object
-func (s *SignedVoluntaryExit) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(s)
+// HashTreeRoot ssz hashes the ProposerSlashing object
+func (p *ProposerSlashing) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(p)
 }
 
-// HashTreeRootWith ssz hashes the SignedVoluntaryExit object with a hasher
-func (s *SignedVoluntaryExit) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the ProposerSlashing object with a hasher
+func (p *ProposerSlashing) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Exit'
-	if err = s.Exit.HashTreeRootWith(hh); err != nil {
+	// Field (0) 'Header_1'
+	if err = p.Header_1.HashTreeRootWith(hh); err != nil {
 		return
 	}
 
-	// Field (1) 'Signature'
-	if len(s.Signature) != 96 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Header_2'
+	if err = p.Header_2.HashTreeRootWith(hh); err != nil {
 		return
 	}
-	hh.PutBytes(s.Signature)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the Eth1Data object
-func (e *Eth1Data) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(e)
+// MarshalSSZ ssz marshals the AttesterSlashing object
+func (a *AttesterSlashing) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(a)
 }
 
-// MarshalSSZTo ssz marshals the Eth1Data object to a target array
-func (e *Eth1Data) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the AttesterSlashing object to a target array
+func (a *AttesterSlashing) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
+	offset := int(8)
 
-	// Field (0) 'DepositRoot'
-	if len(e.DepositRoot) != 32 {
-		err = ssz.ErrBytesLength
+	// Offset (0) 'Attestation_1'
+	dst = ssz.WriteOffset(dst, offset)
+	if a.Attestation_1 == nil {
+		a.Attestation_1 = new(IndexedAttestation)
+	}
+	offset += a.Attestation_1.SizeSSZ()
+
+	// Offset (1) 'Attestation_2'
+	dst = ssz.WriteOffset(dst, offset)
+	if a.Attestation_2 == nil {
+		a.Attestation_2 = new(IndexedAttestation)
+	}
+	offset += a.Attestation_2.SizeSSZ()
+
+	// Field (0) 'Attestation_1'
+	if dst, err = a.Attestation_1.MarshalSSZTo(dst); err != nil {
 		return
 	}
-	dst = append(dst, e.DepositRoot...)
-
-	// Field (1) 'DepositCount'
-	dst = ssz.MarshalUint64(dst, e.DepositCount)
 
-	// Field (2) 'BlockHash'
-	if len(e.BlockHash) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Attestation_2'
+	if dst, err = a.Attestation_2.MarshalSSZTo(dst); err != nil {
 		return
 	}
-	dst = append(dst, e.BlockHash...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the Eth1Data object
-func (e *Eth1Data) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the AttesterSlashing object
+func (a *AttesterSlashing) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size != 72 {
+	if size < 8 {
 		return ssz.ErrSize
 	}
 
-	// Field (0) 'DepositRoot'
-	e.DepositRoot = append(e.DepositRoot, buf[0:32]...)
+	tail := buf
+	var o0, o1 uint64
 
-	// Field (1) 'DepositCount'
-	e.DepositCount = ssz.UnmarshallUint64(buf[32:40])
+	// Offset (0) 'Attestation_1'
+	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
+		return ssz.ErrOffset
+	}
 
-	// Field (2) 'BlockHash'
-	e.BlockHash = append(e.BlockHash, buf[40:72]...)
+	// Offset (1) 'Attestation_2'
+	if o1 = ssz.ReadOffset(buf[4:8]); o1 > size || o0 > o1 {
+		return ssz.ErrOffset
+	}
+
+	// Field (0) 'Attestation_1'
+	{
+		buf = tail[o0:o1]
+		if a.Attestation_1 == nil {
+			a.Attestation_1 = new(IndexedAttestation)
+		}
+		if err = a.Attestation_1.UnmarshalSSZ(buf); err != nil {
+			return err
+		}
+	}
 
+	// Field (1) 'Attestation_2'
+	{
+		buf = tail[o1:]
+		if a.Attestation_2 == nil {
+			a.Attestation_2 = new(IndexedAttestation)
+		}
+		if err = a.Attestation_2.UnmarshalSSZ(buf); err != nil {
+			return err
+		}
+	}
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the Eth1Data object
-func (e *Eth1Data) SizeSSZ() (size int) {
-	size = 72
+// SizeSSZ returns the ssz encoded size in bytes for the AttesterSlashing object
+func (a *AttesterSlashing) SizeSSZ() (size int) {
+	size = 8
+
+	// Field (0) 'Attestation_1'
+	if a.Attestation_1 == nil {
+		a.Attestation_1 = new(IndexedAttestation)
+	}
+	size += a.Attestation_1.SizeSSZ()
+
+	// Field (1) 'Attestation_2'
+	if a.Attestation_2 == nil {
+		a.Attestation_2 = new(IndexedAttestation)
+	}
+	size += a.Attestation_2.SizeSSZ()
+
 	return
 }
 
-// HashTreeRoot ssz hashes the Eth1Data object
-func (e *Eth1Data) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(e)
+// HashTreeRoot ssz hashes the AttesterSlashing object
+func (a *AttesterSlashing) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(a)
 }
 
-// HashTreeRootWith ssz hashes the Eth1Data object with a hasher
-func (e *Eth1Data) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the AttesterSlashing object with a hasher
+func (a *AttesterSlashing) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'DepositRoot'
-	if len(e.DepositRoot) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (0) 'Attestation_1'
+	if err = a.Attestation_1.HashTreeRootWith(hh); err != nil {
 		return
 	}
-	hh.PutBytes(e.DepositRoot)
-
-	// Field (1) 'DepositCount'
-	hh.PutUint64(e.DepositCount)
 
-	// Field (2) 'BlockHash'
-	if len(e.BlockHash) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Attestation_2'
+	if err = a.Attestation_2.HashTreeRootWith(hh); err != nil {
 		return
 	}
-	hh.PutBytes(e.BlockHash)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the BeaconBlockHeader object
-func (b *BeaconBlockHeader) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(b)
+// MarshalSSZ ssz marshals the Deposit object
+func (d *Deposit) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(d)
 }
 
-// MarshalSSZTo ssz marshals the BeaconBlockHeader object to a target array
-func (b *BeaconBlockHeader) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the Deposit object to a target array
+func (d *Deposit) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
 
-	// Field (0) 'Slot'
-	dst = ssz.MarshalUint64(dst, b.Slot)
-
-	// Field (1) 'ProposerIndex'
-	dst = ssz.MarshalUint64(dst, b.ProposerIndex)
-
-	// Field (2) 'ParentRoot'
-	if len(b.ParentRoot) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (0) 'Proof'
+	if len(d.Proof) != 33 {
+		err = ssz.ErrVectorLength
 		return
 	}
-	dst = append(dst, b.ParentRoot...)
-
-	// Field (3) 'StateRoot'
-	if len(b.StateRoot) != 32 {
-		err = ssz.ErrBytesLength
-		return
+	for ii := 0; ii < 33; ii++ {
+		if len(d.Proof[ii]) != 32 {
+			err = ssz.ErrBytesLength
+			return
+		}
+		dst = append(dst, d.Proof[ii]...)
 	}
-	dst = append(dst, b.StateRoot...)
 
-	// Field (4) 'BodyRoot'
-	if len(b.BodyRoot) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Data'
+	if d.Data == nil {
+		d.Data = new(Deposit_Data)
+	}
+	if dst, err = d.Data.MarshalSSZTo(dst); err != nil {
 		return
 	}
-	dst = append(dst, b.BodyRoot...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the BeaconBlockHeader object
-func (b *BeaconBlockHeader) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the Deposit object
+func (d *Deposit) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size != 112 {
+	if size != 1240 {
 		return ssz.ErrSize
 	}
 
-	// Field (0) 'Slot'
-	b.Slot = ssz.UnmarshallUint64(buf[0:8])
-
-	// Field (1) 'ProposerIndex'
-	b.ProposerIndex = ssz.UnmarshallUint64(buf[8:16])
-
-	// Field (2) 'ParentRoot'
-	b.ParentRoot = append(b.ParentRoot, buf[16:48]...)
-
-	// Field (3) 'StateRoot'
-	b.StateRoot = append(b.StateRoot, buf[48:80]...)
+	// Field (0) 'Proof'
+	d.Proof = make([][]byte, 33)
+	for ii := 0; ii < 33; ii++ {
+		if cap(d.Proof[ii]) == 0 {
+			d.Proof[ii] = make([]byte, 0, len(buf[0:1056][ii*32:(ii+1)*32]))
+		}
+		d.Proof[ii] = append(d.Proof[ii], buf[0:1056][ii*32:(ii+1)*32]...)
+	}
 
-	// Field (4) 'BodyRoot'
-	b.BodyRoot = append(b.BodyRoot, buf[80:112]...)
+	// Field (1) 'Data'
+	if d.Data == nil {
+		d.Data = new(Deposit_Data)
+	}
+	if err = d.Data.UnmarshalSSZ(buf[1056:1240]); err != nil {
+		return err
+	}
 
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the BeaconBlockHeader object
-func (b *BeaconBlockHeader) SizeSSZ() (size int) {
-	size = 112
+// SizeSSZ returns the ssz encoded size in bytes for the Deposit object
+func (d *Deposit) SizeSSZ() (size int) {
+	size = 1240
 	return
 }
 
-// HashTreeRoot ssz hashes the BeaconBlockHeader object
-func (b *BeaconBlockHeader) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(b)
+// HashTreeRoot ssz hashes the Deposit object
+func (d *Deposit) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(d)
 }
 
-// HashTreeRootWith ssz hashes the BeaconBlockHeader object with a hasher
-func (b *BeaconBlockHeader) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the Deposit object with a hasher
+func (d *Deposit) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Slot'
-	hh.PutUint64(b.Slot)
-
-	// Field (1) 'ProposerIndex'
-	hh.PutUint64(b.ProposerIndex)
-
-	// Field (2) 'ParentRoot'
-	if len(b.ParentRoot) != 32 {
-		err = ssz.ErrBytesLength
-		return
-	}
-	hh.PutBytes(b.ParentRoot)
-
-	// Field (3) 'StateRoot'
-	if len(b.StateRoot) != 32 {
-		err = ssz.ErrBytesLength
-		return
+	// Field (0) 'Proof'
+	{
+		if len(d.Proof) != 33 {
+			err = ssz.ErrVectorLength
+			return
+		}
+		subIndx := hh.Index()
+		for _, i := range d.Proof {
+			if len(i) != 32 {
+				err = ssz.ErrBytesLength
+				return
+			}
+			hh.Append(i)
+		}
+		hh.Merkleize(subIndx)
 	}
-	hh.PutBytes(b.StateRoot)
 
-	// Field (4) 'BodyRoot'
-	if len(b.BodyRoot) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Data'
+	if err = d.Data.HashTreeRootWith(hh); err != nil {
 		return
 	}
-	hh.PutBytes(b.BodyRoot)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the SignedBeaconBlockHeader object
-func (s *SignedBeaconBlockHeader) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(s)
+// MarshalSSZ ssz marshals the Deposit_Data object
+func (d *Deposit_Data) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(d)
 }
 
-// MarshalSSZTo ssz marshals the SignedBeaconBlockHeader object to a target array
-func (s *SignedBeaconBlockHeader) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the Deposit_Data object to a target array
+func (d *Deposit_Data) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
 
-	// Field (0) 'Header'
-	if s.Header == nil {
-		s.Header = new(BeaconBlockHeader)
+	// Field (0) 'PublicKey'
+	if len(d.PublicKey) != 48 {
+		err = ssz.ErrBytesLength
+		return
 	}
-	if dst, err = s.Header.MarshalSSZTo(dst); err != nil {
+	dst = append(dst, d.PublicKey...)
+
+	// Field (1) 'WithdrawalCredentials'
+	if len(d.WithdrawalCredentials) != 32 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	dst = append(dst, d.WithdrawalCredentials...)
+
+	// Field (2) 'Amount'
+	dst = ssz.MarshalUint64(dst, d.Amount)
 
-	// Field (1) 'Signature'
-	if len(s.Signature) != 96 {
+	// Field (3) 'Signature'
+	if len(d.Signature) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	dst = append(dst, s.Signature...)
+	dst = append(dst, d.Signature...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the SignedBeaconBlockHeader object
-func (s *SignedBeaconBlockHeader) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the Deposit_Data object
+func (d *Deposit_Data) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size != 208 {
+	if size != 184 {
 		return ssz.ErrSize
 	}
 
-	// Field (0) 'Header'
-	if s.Header == nil {
-		s.Header = new(BeaconBlockHeader)
+	// Field (0) 'PublicKey'
+	if cap(d.PublicKey) == 0 {
+		d.PublicKey = make([]byte, 0, len(buf[0:48]))
 	}
-	if err = s.Header.UnmarshalSSZ(buf[0:112]); err != nil {
-		return err
+	d.PublicKey = append(d.PublicKey, buf[0:48]...)
+
+	// Field (1) 'WithdrawalCredentials'
+	if cap(d.WithdrawalCredentials) == 0 {
+		d.WithdrawalCredentials = make([]byte, 0, len(buf[48:80]))
 	}
+	d.WithdrawalCredentials = append(d.WithdrawalCredentials, buf[48:80]...)
 
-	// Field (1) 'Signature'
-	s.Signature = append(s.Signature, buf[112:208]...)
+	// Field (2) 'Amount'
+	d.Amount = ssz.UnmarshallUint64(buf[80:88])
+
+	// Field (3) 'Signature'
+	if cap(d.Signature) == 0 {
+		d.Signature = make([]byte, 0, len(buf[88:184]))
+	}
+	d.Signature = append(d.Signature, buf[88:184]...)
 
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the SignedBeaconBlockHeader object
-func (s *SignedBeaconBlockHeader) SizeSSZ() (size int) {
-	size = 208
+// SizeSSZ returns the ssz encoded size in bytes for the Deposit_Data object
+func (d *Deposit_Data) SizeSSZ() (size int) {
+	size = 184
 	return
 }
 
-// HashTreeRoot ssz hashes the SignedBeaconBlockHeader object
-func (s *SignedBeaconBlockHeader) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(s)
+// HashTreeRoot ssz hashes the Deposit_Data object
+func (d *Deposit_Data) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(d)
 }
 
-// HashTreeRootWith ssz hashes the SignedBeaconBlockHeader object with a hasher
-func (s *SignedBeaconBlockHeader) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the Deposit_Data object with a hasher
+func (d *Deposit_Data) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Header'
-	if err = s.Header.HashTreeRootWith(hh); err != nil {
+	// Field (0) 'PublicKey'
+	if len(d.PublicKey) != 48 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	hh.PutBytes(d.PublicKey)
 
-	// Field (1) 'Signature'
-	if len(s.Signature) != 96 {
+	// Field (1) 'WithdrawalCredentials'
+	if len(d.WithdrawalCredentials) != 32 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(s.Signature)
+	hh.PutBytes(d.WithdrawalCredentials)
+
+	// Field (2) 'Amount'
+	hh.PutUint64(d.Amount)
+
+	// Field (3) 'Signature'
+	if len(d.Signature) != 96 {
+		err = ssz.ErrBytesLength
+		return
+	}
+	hh.PutBytes(d.Signature)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the IndexedAttestation object
-func (i *IndexedAttestation) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(i)
+// MarshalSSZ ssz marshals the VoluntaryExit object
+func (v *VoluntaryExit) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(v)
 }
 
-// MarshalSSZTo ssz marshals the IndexedAttestation object to a target array
-func (i *IndexedAttestation) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the VoluntaryExit object to a target array
+func (v *VoluntaryExit) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
-	offset := int(228)
 
-	// Offset (0) 'AttestingIndices'
-	dst = ssz.WriteOffset(dst, offset)
-	offset += len(i.AttestingIndices) * 8
-
-	// Field (1) 'Data'
-	if i.Data == nil {
-		i.Data = new(AttestationData)
-	}
-	if dst, err = i.Data.MarshalSSZTo(dst); err != nil {
-		return
-	}
-
-	// Field (2) 'Signature'
-	if len(i.Signature) != 96 {
-		err = ssz.ErrBytesLength
-		return
-	}
-	dst = append(dst, i.Signature...)
+	// Field (0) 'Epoch'
+	dst = ssz.MarshalUint64(dst, uint64(v.Epoch))
 
-	// Field (0) 'AttestingIndices'
-	if len(i.AttestingIndices) > 2048 {
-		err = ssz.ErrListTooBig
-		return
-	}
-	for ii := 0; ii < len(i.AttestingIndices); ii++ {
-		dst = ssz.MarshalUint64(dst, i.AttestingIndices[ii])
-	}
+	// Field (1) 'ValidatorIndex'
+	dst = ssz.MarshalUint64(dst, v.ValidatorIndex)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the IndexedAttestation object
-func (i *IndexedAttestation) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the VoluntaryExit object
+func (v *VoluntaryExit) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size < 228 {
+	if size != 16 {
 		return ssz.ErrSize
 	}
 
-	tail := buf
-	var o0 uint64
-
-	// Offset (0) 'AttestingIndices'
-	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
-		return ssz.ErrOffset
-	}
-
-	// Field (1) 'Data'
-	if i.Data == nil {
-		i.Data = new(AttestationData)
-	}
-	if err = i.Data.UnmarshalSSZ(buf[4:132]); err != nil {
-		return err
-	}
+	// Field (0) 'Epoch'
+	v.Epoch = github_com_prysmaticlabs_eth2_types.Epoch(ssz.UnmarshallUint64(buf[0:8]))
 
-	// Field (2) 'Signature'
-	i.Signature = append(i.Signature, buf[132:228]...)
+	// Field (1) 'ValidatorIndex'
+	v.ValidatorIndex = ssz.UnmarshallUint64(buf[8:16])
 
-	// Field (0) 'AttestingIndices'
-	{
-		buf = tail[o0:]
-		num, err := ssz.DivideInt2(len(buf), 8, 2048)
-		if err != nil {
-			return err
-		}
-		i.AttestingIndices = ssz.ExtendUint64(i.AttestingIndices, num)
-		for ii := 0; ii < num; ii++ {
-			i.AttestingIndices[ii] = ssz.UnmarshallUint64(buf[ii*8 : (ii+1)*8])
-		}
-	}
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the IndexedAttestation object
-func (i *IndexedAttestation) SizeSSZ() (size int) {
-	size = 228
-
-	// Field (0) 'AttestingIndices'
-	size += len(i.AttestingIndices) * 8
-
+// SizeSSZ returns the ssz encoded size in bytes for the VoluntaryExit object
+func (v *VoluntaryExit) SizeSSZ() (size int) {
+	size = 16
 	return
 }
 
-// HashTreeRoot ssz hashes the IndexedAttestation object
-func (i *IndexedAttestation) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(i)
+// HashTreeRoot ssz hashes the VoluntaryExit object
+func (v *VoluntaryExit) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(v)
 }
 
-// HashTreeRootWith ssz hashes the IndexedAttestation object with a hasher
-func (i *IndexedAttestation) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the VoluntaryExit object with a hasher
+func (v *VoluntaryExit) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'AttestingIndices'
-	{
-		if len(i.AttestingIndices) > 2048 {
-			err = ssz.ErrListTooBig
-			return
-		}
-		subIndx := hh.Index()
-		for _, i := range i.AttestingIndices {
-			hh.AppendUint64(i)
-		}
-		hh.FillUpTo32()
-		numItems := uint64(len(i.AttestingIndices))
-		hh.MerkleizeWithMixin(subIndx, numItems, ssz.CalculateLimit(2048, numItems, 8))
-	}
-
-	// Field (1) 'Data'
-	if err = i.Data.HashTreeRootWith(hh); err != nil {
-		return
-	}
+	// Field (0) 'Epoch'
+	hh.PutUint64(uint64(v.Epoch))
 
-	// Field (2) 'Signature'
-	if len(i.Signature) != 96 {
-		err = ssz.ErrBytesLength
-		return
-	}
-	hh.PutBytes(i.Signature)
+	// Field (1) 'ValidatorIndex'
+	hh.PutUint64(v.ValidatorIndex)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the Attestation object
-func (a *Attestation) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(a)
+// MarshalSSZ ssz marshals the SignedVoluntaryExit object
+func (s *SignedVoluntaryExit) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(s)
 }
 
-// MarshalSSZTo ssz marshals the Attestation object to a target array
-func (a *Attestation) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the SignedVoluntaryExit object to a target array
+func (s *SignedVoluntaryExit) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
-	offset := int(228)
-
-	// Offset (0) 'AggregationBits'
-	dst = ssz.WriteOffset(dst, offset)
-	offset += len(a.AggregationBits)
 
-	// Field (1) 'Data'
-	if a.Data == nil {
-		a.Data = new(AttestationData)
-	}
-	if dst, err = a.Data.MarshalSSZTo(dst); err != nil {
-		return
+	// Field (0) 'Exit'
+	if s.Exit == nil {
+		s.Exit = new(VoluntaryExit)
 	}
-
-	// Field (2) 'Signature'
-	if len(a.Signature) != 96 {
-		err = ssz.ErrBytesLength
+	if dst, err = s.Exit.MarshalSSZTo(dst); err != nil {
 		return
 	}
-	dst = append(dst, a.Signature...)
 
-	// Field (0) 'AggregationBits'
-	if len(a.AggregationBits) > 2048 {
+	// Field (1) 'Signature'
+	if len(s.Signature) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	dst = append(dst, a.AggregationBits...)
+	dst = append(dst, s.Signature...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the Attestation object
-func (a *Attestation) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the SignedVoluntaryExit object
+func (s *SignedVoluntaryExit) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size < 228 {
+	if size != 112 {
 		return ssz.ErrSize
 	}
 
-	tail := buf
-	var o0 uint64
-
-	// Offset (0) 'AggregationBits'
-	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
-		return ssz.ErrOffset
-	}
-
-	// Field (1) 'Data'
-	if a.Data == nil {
-		a.Data = new(AttestationData)
+	// Field (0) 'Exit'
+	if s.Exit == nil {
+		s.Exit = new(VoluntaryExit)
 	}
-	if err = a.Data.UnmarshalSSZ(buf[4:132]); err != nil {
+	if err = s.Exit.UnmarshalSSZ(buf[0:16]); err != nil {
 		return err
 	}
 
-	// Field (2) 'Signature'
-	a.Signature = append(a.Signature, buf[132:228]...)
-
-	// Field (0) 'AggregationBits'
-	{
-		buf = tail[o0:]
-		if err = ssz.ValidateBitlist(buf, 2048); err != nil {
-			return err
-		}
-		a.AggregationBits = append(a.AggregationBits, buf...)
+	// Field (1) 'Signature'
+	if cap(s.Signature) == 0 {
+		s.Signature = make([]byte, 0, len(buf[16:112]))
 	}
+	s.Signature = append(s.Signature, buf[16:112]...)
+
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the Attestation object
-func (a *Attestation) SizeSSZ() (size int) {
-	size = 228
-
-	// Field (0) 'AggregationBits'
-	size += len(a.AggregationBits)
-
+// SizeSSZ returns the ssz encoded size in bytes for the SignedVoluntaryExit object
+func (s *SignedVoluntaryExit) SizeSSZ() (size int) {
+	size = 112
 	return
 }
 
-// HashTreeRoot ssz hashes the Attestation object
-func (a *Attestation) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(a)
+// HashTreeRoot ssz hashes the SignedVoluntaryExit object
+func (s *SignedVoluntaryExit) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(s)
 }
 
-// HashTreeRootWith ssz hashes the Attestation object with a hasher
-func (a *Attestation) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the SignedVoluntaryExit object with a hasher
+func (s *SignedVoluntaryExit) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'AggregationBits'
-	hh.PutBitlist(a.AggregationBits, 2048)
-
-	// Field (1) 'Data'
-	if err = a.Data.HashTreeRootWith(hh); err != nil {
+	// Field (0) 'Exit'
+	if err = s.Exit.HashTreeRootWith(hh); err != nil {
 		return
 	}
 
-	// Field (2) 'Signature'
-	if len(a.Signature) != 96 {
+	// Field (1) 'Signature'
+	if len(s.Signature) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(a.Signature)
+	hh.PutBytes(s.Signature)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the AggregateAttestationAndProof object
-func (a *AggregateAttestationAndProof) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(a)
+// MarshalSSZ ssz marshals the Eth1Data object
+func (e *Eth1Data) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(e)
 }
 
-// MarshalSSZTo ssz marshals the AggregateAttestationAndProof object to a target array
-func (a *AggregateAttestationAndProof) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the Eth1Data object to a target array
+func (e *Eth1Data) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
-	offset := int(108)
-
-	// Field (0) 'AggregatorIndex'
-	dst = ssz.MarshalUint64(dst, a.AggregatorIndex)
-
-	// Offset (1) 'Aggregate'
-	dst = ssz.WriteOffset(dst, offset)
-	if a.Aggregate == nil {
-		a.Aggregate = new(Attestation)
-	}
-	offset += a.Aggregate.SizeSSZ()
 
-	// Field (2) 'SelectionProof'
-	if len(a.SelectionProof) != 96 {
+	// Field (0) 'DepositRoot'
+	if len(e.DepositRoot) != 32 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	dst = append(dst, a.SelectionProof...)
+	dst = append(dst, e.DepositRoot...)
 
-	// Field (1) 'Aggregate'
-	if dst, err = a.Aggregate.MarshalSSZTo(dst); err != nil {
+	// Field (1) 'DepositCount'
+	dst = ssz.MarshalUint64(dst, e.DepositCount)
+
+	// Field (2) 'BlockHash'
+	if len(e.BlockHash) != 32 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	dst = append(dst, e.BlockHash...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the AggregateAttestationAndProof object
-func (a *AggregateAttestationAndProof) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the Eth1Data object
+func (e *Eth1Data) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size < 108 {
+	if size != 72 {
 		return ssz.ErrSize
 	}
 
-	tail := buf
-	var o1 uint64
-
-	// Field (0) 'AggregatorIndex'
-	a.AggregatorIndex = ssz.UnmarshallUint64(buf[0:8])
-
-	// Offset (1) 'Aggregate'
-	if o1 = ssz.ReadOffset(buf[8:12]); o1 > size {
-		return ssz.ErrOffset
+	// Field (0) 'DepositRoot'
+	if cap(e.DepositRoot) == 0 {
+		e.DepositRoot = make([]byte, 0, len(buf[0:32]))
 	}
+	e.DepositRoot = append(e.DepositRoot, buf[0:32]...)
 
-	// Field (2) 'SelectionProof'
-	a.SelectionProof = append(a.SelectionProof, buf[12:108]...)
+	// Field (1) 'DepositCount'
+	e.DepositCount = ssz.UnmarshallUint64(buf[32:40])
 
-	// Field (1) 'Aggregate'
-	{
-		buf = tail[o1:]
-		if a.Aggregate == nil {
-			a.Aggregate = new(Attestation)
-		}
-		if err = a.Aggregate.UnmarshalSSZ(buf); err != nil {
-			return err
-		}
+	// Field (2) 'BlockHash'
+	if cap(e.BlockHash) == 0 {
+		e.BlockHash = make([]byte, 0, len(buf[40:72]))
 	}
+	e.BlockHash = append(e.BlockHash, buf[40:72]...)
+
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the AggregateAttestationAndProof object
-func (a *AggregateAttestationAndProof) SizeSSZ() (size int) {
-	size = 108
-
-	// Field (1) 'Aggregate'
-	if a.Aggregate == nil {
-		a.Aggregate = new(Attestation)
-	}
-	size += a.Aggregate.SizeSSZ()
-
+// SizeSSZ returns the ssz encoded size in bytes for the Eth1Data object
+func (e *Eth1Data) SizeSSZ() (size int) {
+	size = 72
 	return
 }
 
-// HashTreeRoot ssz hashes the AggregateAttestationAndProof object
-func (a *AggregateAttestationAndProof) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(a)
+// HashTreeRoot ssz hashes the Eth1Data object
+func (e *Eth1Data) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(e)
 }
 
-// HashTreeRootWith ssz hashes the AggregateAttestationAndProof object with a hasher
-func (a *AggregateAttestationAndProof) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the Eth1Data object with a hasher
+func (e *Eth1Data) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'AggregatorIndex'
-	hh.PutUint64(a.AggregatorIndex)
-
-	// Field (1) 'Aggregate'
-	if err = a.Aggregate.HashTreeRootWith(hh); err != nil {
+	// Field (0) 'DepositRoot'
+	if len(e.DepositRoot) != 32 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	hh.PutBytes(e.DepositRoot)
 
-	// Field (2) 'SelectionProof'
-	if len(a.SelectionProof) != 96 {
+	// Field (1) 'DepositCount'
+	hh.PutUint64(e.DepositCount)
+
+	// Field (2) 'BlockHash'
+	if len(e.BlockHash) != 32 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(a.SelectionProof)
+	hh.PutBytes(e.BlockHash)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the SignedAggregateAttestationAndProof object
-func (s *SignedAggregateAttestationAndProof) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(s)
+// MarshalSSZ ssz marshals the BeaconBlockHeader object
+func (b *BeaconBlockHeader) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(b)
 }
 
-// MarshalSSZTo ssz marshals the SignedAggregateAttestationAndProof object to a target array
-func (s *SignedAggregateAttestationAndProof) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the BeaconBlockHeader object to a target array
+func (b *BeaconBlockHeader) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
-	offset := int(100)
 
-	// Offset (0) 'Message'
-	dst = ssz.WriteOffset(dst, offset)
-	if s.Message == nil {
-		s.Message = new(AggregateAttestationAndProof)
+	// Field (0) 'Slot'
+	dst = ssz.MarshalUint64(dst, b.Slot)
+
+	// Field (1) 'ProposerIndex'
+	dst = ssz.MarshalUint64(dst, b.ProposerIndex)
+
+	// Field (2) 'ParentRoot'
+	if len(b.ParentRoot) != 32 {
+		err = ssz.ErrBytesLength
+		return
 	}
-	offset += s.Message.SizeSSZ()
+	dst = append(dst, b.ParentRoot...)
 
-	// Field (1) 'Signature'
-	if len(s.Signature) != 96 {
+	// Field (3) 'StateRoot'
+	if len(b.StateRoot) != 32 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	dst = append(dst, s.Signature...)
+	dst = append(dst, b.StateRoot...)
 
-	// Field (0) 'Message'
-	if dst, err = s.Message.MarshalSSZTo(dst); err != nil {
+	// Field (4) 'BodyRoot'
+	if len(b.BodyRoot) != 32 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	dst = append(dst, b.BodyRoot...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the SignedAggregateAttestationAndProof object
-func (s *SignedAggregateAttestationAndProof) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the BeaconBlockHeader object
+func (b *BeaconBlockHeader) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size < 100 {
+	if size != 112 {
 		return ssz.ErrSize
 	}
 
-	tail := buf
-	var o0 uint64
+	// Field (0) 'Slot'
+	b.Slot = ssz.UnmarshallUint64(buf[0:8])
 
-	// Offset (0) 'Message'
-	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
-		return ssz.ErrOffset
+	// Field (1) 'ProposerIndex'
+	b.ProposerIndex = ssz.UnmarshallUint64(buf[8:16])
+
+	// Field (2) 'ParentRoot'
+	if cap(b.ParentRoot) == 0 {
+		b.ParentRoot = make([]byte, 0, len(buf[16:48]))
 	}
+	b.ParentRoot = append(b.ParentRoot, buf[16:48]...)
 
-	// Field (1) 'Signature'
-	s.Signature = append(s.Signature, buf[4:100]...)
+	// Field (3) 'StateRoot'
+	if cap(b.StateRoot) == 0 {
+		b.StateRoot = make([]byte, 0, len(buf[48:80]))
+	}
+	b.StateRoot = append(b.StateRoot, buf[48:80]...)
 
-	// Field (0) 'Message'
-	{
-		buf = tail[o0:]
-		if s.Message == nil {
-			s.Message = new(AggregateAttestationAndProof)
-		}
-		if err = s.Message.UnmarshalSSZ(buf); err != nil {
-			return err
-		}
+	// Field (4) 'BodyRoot'
+	if cap(b.BodyRoot) == 0 {
+		b.BodyRoot = make([]byte, 0, len(buf[80:112]))
 	}
+	b.BodyRoot = append(b.BodyRoot, buf[80:112]...)
+
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the SignedAggregateAttestationAndProof object
-func (s *SignedAggregateAttestationAndProof) SizeSSZ() (size int) {
-	size = 100
-
-	// Field (0) 'Message'
-	if s.Message == nil {
-		s.Message = new(AggregateAttestationAndProof)
-	}
-	size += s.Message.SizeSSZ()
-
+// SizeSSZ returns the ssz encoded size in bytes for the BeaconBlockHeader object
+func (b *BeaconBlockHeader) SizeSSZ() (size int) {
+	size = 112
 	return
 }
 
-// HashTreeRoot ssz hashes the SignedAggregateAttestationAndProof object
-func (s *SignedAggregateAttestationAndProof) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(s)
+// HashTreeRoot ssz hashes the BeaconBlockHeader object
+func (b *BeaconBlockHeader) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(b)
 }
 
-// HashTreeRootWith ssz hashes the SignedAggregateAttestationAndProof object with a hasher
-func (s *SignedAggregateAttestationAndProof) HashTreeRootWith(hh *ssz.Hasher) (err error) {
-	indx := hh.Index()
+// HashTreeRootWith ssz hashes the BeaconBlockHeader object with a hasher
+func (b *BeaconBlockHeader) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+	indx := hh.Index()
+
+	// Field (0) 'Slot'
+	hh.PutUint64(b.Slot)
+
+	// Field (1) 'ProposerIndex'
+	hh.PutUint64(b.ProposerIndex)
+
+	// Field (2) 'ParentRoot'
+	if len(b.ParentRoot) != 32 {
+		err = ssz.ErrBytesLength
+		return
+	}
+	hh.PutBytes(b.ParentRoot)
 
-	// Field (0) 'Message'
-	if err = s.Message.HashTreeRootWith(hh); err != nil {
+	// Field (3) 'StateRoot'
+	if len(b.StateRoot) != 32 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	hh.PutBytes(b.StateRoot)
 
-	// Field (1) 'Signature'
-	if len(s.Signature) != 96 {
+	// Field (4) 'BodyRoot'
+	if len(b.BodyRoot) != 32 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(s.Signature)
+	hh.PutBytes(b.BodyRoot)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the AttestationData object
-func (a *AttestationData) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(a)
+// MarshalSSZ ssz marshals the SignedBeaconBlockHeader object
+func (s *SignedBeaconBlockHeader) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(s)
 }
 
-// MarshalSSZTo ssz marshals the AttestationData object to a target array
-func (a *AttestationData) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the SignedBeaconBlockHeader object to a target array
+func (s *SignedBeaconBlockHeader) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
 
-	// Field (0) 'Slot'
-	dst = ssz.MarshalUint64(dst, a.Slot)
-
-	// Field (1) 'CommitteeIndex'
-	dst = ssz.MarshalUint64(dst, a.CommitteeIndex)
-
-	// Field (2) 'BeaconBlockRoot'
-	if len(a.BeaconBlockRoot) != 32 {
-		err = ssz.ErrBytesLength
-		return
-	}
-	dst = append(dst, a.BeaconBlockRoot...)
-
-	// Field (3) 'Source'
-	if a.Source == nil {
-		a.Source = new(Checkpoint)
+	// Field (0) 'Header'
+	if s.Header == nil {
+		s.Header = new(BeaconBlockHeader)
 	}
-	if dst, err = a.Source.MarshalSSZTo(dst); err != nil {
+	if dst, err = s.Header.MarshalSSZTo(dst); err != nil {
 		return
 	}
 
-	// Field (4) 'Target'
-	if a.Target == nil {
-		a.Target = new(Checkpoint)
-	}
-	if dst, err = a.Target.MarshalSSZTo(dst); err != nil {
+	// Field (1) 'Signature'
+	if len(s.Signature) != 96 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	dst = append(dst, s.Signature...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the AttestationData object
-func (a *AttestationData) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the SignedBeaconBlockHeader object
+func (s *SignedBeaconBlockHeader) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size != 128 {
+	if size != 208 {
 		return ssz.ErrSize
 	}
 
-	// Field (0) 'Slot'
-	a.Slot = ssz.UnmarshallUint64(buf[0:8])
-
-	// Field (1) 'CommitteeIndex'
-	a.CommitteeIndex = ssz.UnmarshallUint64(buf[8:16])
-
-	// Field (2) 'BeaconBlockRoot'
-	a.BeaconBlockRoot = append(a.BeaconBlockRoot, buf[16:48]...)
-
-	// Field (3) 'Source'
-	if a.Source == nil {
-		a.Source = new(Checkpoint)
+	// Field (0) 'Header'
+	if s.Header == nil {
+		s.Header = new(BeaconBlockHeader)
 	}
-	if err = a.Source.UnmarshalSSZ(buf[48:88]); err != nil {
+	if err = s.Header.UnmarshalSSZ(buf[0:112]); err != nil {
 		return err
 	}
 
-	// Field (4) 'Target'
-	if a.Target == nil {
-		a.Target = new(Checkpoint)
-	}
-	if err = a.Target.UnmarshalSSZ(buf[88:128]); err != nil {
-		return err
+	// Field (1) 'Signature'
+	if cap(s.Signature) == 0 {
+		s.Signature = make([]byte, 0, len(buf[112:208]))
 	}
+	s.Signature = append(s.Signature, buf[112:208]...)
 
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the AttestationData object
-func (a *AttestationData) SizeSSZ() (size int) {
-	size = 128
+// SizeSSZ returns the ssz encoded size in bytes for the SignedBeaconBlockHeader object
+func (s *SignedBeaconBlockHeader) SizeSSZ() (size int) {
+	size = 208
 	return
 }
 
-// HashTreeRoot ssz hashes the AttestationData object
-func (a *AttestationData) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(a)
+// HashTreeRoot ssz hashes the SignedBeaconBlockHeader object
+func (s *SignedBeaconBlockHeader) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(s)
 }
 
-// HashTreeRootWith ssz hashes the AttestationData object with a hasher
-func (a *AttestationData) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the SignedBeaconBlockHeader object with a hasher
+func (s *SignedBeaconBlockHeader) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Slot'
-	hh.PutUint64(a.Slot)
-
-	// Field (1) 'CommitteeIndex'
-	hh.PutUint64(a.CommitteeIndex)
-
-	// Field (2) 'BeaconBlockRoot'
-	if len(a.BeaconBlockRoot) != 32 {
-		err = ssz.ErrBytesLength
-		return
-	}
-	hh.PutBytes(a.BeaconBlockRoot)
-
-	// Field (3) 'Source'
-	if err = a.Source.HashTreeRootWith(hh); err != nil {
+	// Field (0) 'Header'
+	if err = s.Header.HashTreeRootWith(hh); err != nil {
 		return
 	}
 
-	// Field (4) 'Target'
-	if err = a.Target.HashTreeRootWith(hh); err != nil {
+	// Field (1) 'Signature'
+	if len(s.Signature) != 96 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	hh.PutBytes(s.Signature)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the Checkpoint object
-func (c *Checkpoint) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(c)
+// MarshalSSZ ssz marshals the IndexedAttestation object
+func (i *IndexedAttestation) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(i)
 }
 
-// MarshalSSZTo ssz marshals the Checkpoint object to a target array
-func (c *Checkpoint) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the IndexedAttestation object to a target array
+func (i *IndexedAttestation) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
+	offset := int(228)
 
-	// Field (0) 'Epoch'
-	dst = ssz.MarshalUint64(dst, c.Epoch)
+	// Offset (0) 'AttestingIndices'
+	dst = ssz.WriteOffset(dst, offset)
+	offset += len(i.AttestingIndices) * 8
 
-	// Field (1) 'Root'
-	if len(c.Root) != 32 {
+	// Field (1) 'Data'
+	if i.Data == nil {
+		i.Data = new(AttestationData)
+	}
+	if dst, err = i.Data.MarshalSSZTo(dst); err != nil {
+		return
+	}
+
+	// Field (2) 'Signature'
+	if len(i.Signature) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	dst = append(dst, c.Root...)
+	dst = append(dst, i.Signature...)
+
+	// Field (0) 'AttestingIndices'
+	if len(i.AttestingIndices) > 2048 {
+		err = ssz.ErrListTooBig
+		return
+	}
+	for ii := 0; ii < len(i.AttestingIndices); ii++ {
+		dst = ssz.MarshalUint64(dst, i.AttestingIndices[ii])
+	}
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the Checkpoint object
-func (c *Checkpoint) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the IndexedAttestation object
+func (i *IndexedAttestation) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size != 40 {
+	if size < 228 {
 		return ssz.ErrSize
 	}
 
-	// Field (0) 'Epoch'
-	c.Epoch = ssz.UnmarshallUint64(buf[0:8])
+	tail := buf
+	var o0 uint64
 
-	// Field (1) 'Root'
-	c.Root = append(c.Root, buf[8:40]...)
+	// Offset (0) 'AttestingIndices'
+	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
+		return ssz.ErrOffset
+	}
+
+	// Field (1) 'Data'
+	if i.Data == nil {
+		i.Data = new(AttestationData)
+	}
+	if err = i.Data.UnmarshalSSZ(buf[4:132]); err != nil {
+		return err
+	}
 
+	// Field (2) 'Signature'
+	if cap(i.Signature) == 0 {
+		i.Signature = make([]byte, 0, len(buf[132:228]))
+	}
+	i.Signature = append(i.Signature, buf[132:228]...)
+
+	// Field (0) 'AttestingIndices'
+	{
+		buf = tail[o0:]
+		num, err := ssz.DivideInt2(len(buf), 8, 2048)
+		if err != nil {
+			return err
+		}
+		i.AttestingIndices = ssz.ExtendUint64(i.AttestingIndices, num)
+		for ii := 0; ii < num; ii++ {
+			i.AttestingIndices[ii] = ssz.UnmarshallUint64(buf[ii*8 : (ii+1)*8])
+		}
+	}
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the Checkpoint object
-func (c *Checkpoint) SizeSSZ() (size int) {
-	size = 40
+// SizeSSZ returns the ssz encoded size in bytes for the IndexedAttestation object
+func (i *IndexedAttestation) SizeSSZ() (size int) {
+	size = 228
+
+	// Field (0) 'AttestingIndices'
+	size += len(i.AttestingIndices) * 8
+
 	return
 }
 
-// HashTreeRoot ssz hashes the Checkpoint object
-func (c *Checkpoint) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(c)
+// HashTreeRoot ssz hashes the IndexedAttestation object
+func (i *IndexedAttestation) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(i)
 }
 
-// HashTreeRootWith ssz hashes the Checkpoint object with a hasher
-func (c *Checkpoint) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the IndexedAttestation object with a hasher
+func (i *IndexedAttestation) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Epoch'
-	hh.PutUint64(c.Epoch)
+	// Field (0) 'AttestingIndices'
+	{
+		if len(i.AttestingIndices) > 2048 {
+			err = ssz.ErrListTooBig
+			return
+		}
+		subIndx := hh.Index()
+		for _, i := range i.AttestingIndices {
+			hh.AppendUint64(i)
+		}
+		hh.FillUpTo32()
+		numItems := uint64(len(i.AttestingIndices))
+		hh.MerkleizeWithMixin(subIndx, numItems, ssz.CalculateLimit(2048, numItems, 8))
+	}
 
-	// Field (1) 'Root'
-	if len(c.Root) != 32 {
+	// Field (1) 'Data'
+	if err = i.Data.HashTreeRootWith(hh); err != nil {
+		return
+	}
+
+	// Field (2) 'Signature'
+	if len(i.Signature) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(c.Root)
+	hh.PutBytes(i.Signature)
 
 	hh.Merkleize(indx)
 	return
@@ -2170,13 +2244,13 @@ func (v *Validator) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = ssz.MarshalUint64(dst, v.ActivationEligibilityEpoch)
 
 	// Field (5) 'ActivationEpoch'
-	dst = ssz.MarshalUint64(dst, v.ActivationEpoch)
+	dst = ssz.MarshalUint64(dst, uint64(v.ActivationEpoch))
 
 	// Field (6) 'ExitEpoch'
-	dst = ssz.MarshalUint64(dst, v.ExitEpoch)
+	dst = ssz.MarshalUint64(dst, uint64(v.ExitEpoch))
 
 	// Field (7) 'WithdrawableEpoch'
-	dst = ssz.MarshalUint64(dst, v.WithdrawableEpoch)
+	dst = ssz.MarshalUint64(dst, uint64(v.WithdrawableEpoch))
 
 	return
 }
@@ -2190,9 +2264,15 @@ func (v *Validator) UnmarshalSSZ(buf []byte) error {
 	}
 
 	// Field (0) 'PublicKey'
+	if cap(v.PublicKey) == 0 {
+		v.PublicKey = make([]byte, 0, len(buf[0:48]))
+	}
 	v.PublicKey = append(v.PublicKey, buf[0:48]...)
 
 	// Field (1) 'WithdrawalCredentials'
+	if cap(v.WithdrawalCredentials) == 0 {
+		v.WithdrawalCredentials = make([]byte, 0, len(buf[48:80]))
+	}
 	v.WithdrawalCredentials = append(v.WithdrawalCredentials, buf[48:80]...)
 
 	// Field (2) 'EffectiveBalance'
@@ -2205,13 +2285,13 @@ func (v *Validator) UnmarshalSSZ(buf []byte) error {
 	v.ActivationEligibilityEpoch = ssz.UnmarshallUint64(buf[89:97])
 
 	// Field (5) 'ActivationEpoch'
-	v.ActivationEpoch = ssz.UnmarshallUint64(buf[97:105])
+	v.ActivationEpoch = github_com_prysmaticlabs_eth2_types.Epoch(ssz.UnmarshallUint64(buf[97:105]))
 
 	// Field (6) 'ExitEpoch'
-	v.ExitEpoch = ssz.UnmarshallUint64(buf[105:113])
+	v.ExitEpoch = github_com_prysmaticlabs_eth2_types.Epoch(ssz.UnmarshallUint64(buf[105:113]))
 
 	// Field (7) 'WithdrawableEpoch'
-	v.WithdrawableEpoch = ssz.UnmarshallUint64(buf[113:121])
+	v.WithdrawableEpoch = github_com_prysmaticlabs_eth2_types.Epoch(ssz.UnmarshallUint64(buf[113:121]))
 
 	return err
 }
@@ -2255,13 +2335,13 @@ func (v *Validator) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	hh.PutUint64(v.ActivationEligibilityEpoch)
 
 	// Field (5) 'ActivationEpoch'
-	hh.PutUint64(v.ActivationEpoch)
+	hh.PutUint64(uint64(v.ActivationEpoch))
 
 	// Field (6) 'ExitEpoch'
-	hh.PutUint64(v.ExitEpoch)
+	hh.PutUint64(uint64(v.ExitEpoch))
 
 	// Field (7) 'WithdrawableEpoch'
-	hh.PutUint64(v.WithdrawableEpoch)
+	hh.PutUint64(uint64(v.WithdrawableEpoch))
 
 	hh.Merkleize(indx)
 	return
diff --git a/eth/v1/validator.pb.go b/eth/v1/validator.pb.go
index ec89b0df..010dadf7 100644
--- a/eth/v1/validator.pb.go
+++ b/eth/v1/validator.pb.go
@@ -11,6 +11,7 @@ import (
 
 	_ "github.com/gogo/protobuf/gogoproto"
 	proto "github.com/gogo/protobuf/proto"
+	github_com_prysmaticlabs_eth2_types "github.com/prysmaticlabs/eth2-types"
 )
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -96,17 +97,17 @@ func (m *ValidatorContainer) GetValidator() *Validator {
 }
 
 type Validator struct {
-	PublicKey                  []byte   `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty" ssz-size:"48" spec-name:"pubkey"`
-	WithdrawalCredentials      []byte   `protobuf:"bytes,2,opt,name=withdrawal_credentials,json=withdrawalCredentials,proto3" json:"withdrawal_credentials,omitempty" ssz-size:"32"`
-	EffectiveBalance           uint64   `protobuf:"varint,3,opt,name=effective_balance,json=effectiveBalance,proto3" json:"effective_balance,omitempty"`
-	Slashed                    bool     `protobuf:"varint,4,opt,name=slashed,proto3" json:"slashed,omitempty"`
-	ActivationEligibilityEpoch uint64   `protobuf:"varint,5,opt,name=activation_eligibility_epoch,json=activationEligibilityEpoch,proto3" json:"activation_eligibility_epoch,omitempty"`
-	ActivationEpoch            uint64   `protobuf:"varint,6,opt,name=activation_epoch,json=activationEpoch,proto3" json:"activation_epoch,omitempty"`
-	ExitEpoch                  uint64   `protobuf:"varint,7,opt,name=exit_epoch,json=exitEpoch,proto3" json:"exit_epoch,omitempty"`
-	WithdrawableEpoch          uint64   `protobuf:"varint,8,opt,name=withdrawable_epoch,json=withdrawableEpoch,proto3" json:"withdrawable_epoch,omitempty"`
-	XXX_NoUnkeyedLiteral       struct{} `json:"-"`
-	XXX_unrecognized           []byte   `json:"-"`
-	XXX_sizecache              int32    `json:"-"`
+	PublicKey                  []byte                                    `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty" ssz-size:"48" spec-name:"pubkey"`
+	WithdrawalCredentials      []byte                                    `protobuf:"bytes,2,opt,name=withdrawal_credentials,json=withdrawalCredentials,proto3" json:"withdrawal_credentials,omitempty" ssz-size:"32"`
+	EffectiveBalance           uint64                                    `protobuf:"varint,3,opt,name=effective_balance,json=effectiveBalance,proto3" json:"effective_balance,omitempty"`
+	Slashed                    bool                                      `protobuf:"varint,4,opt,name=slashed,proto3" json:"slashed,omitempty"`
+	ActivationEligibilityEpoch uint64                                    `protobuf:"varint,5,opt,name=activation_eligibility_epoch,json=activationEligibilityEpoch,proto3" json:"activation_eligibility_epoch,omitempty"`
+	ActivationEpoch            github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,6,opt,name=activation_epoch,json=activationEpoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"activation_epoch,omitempty"`
+	ExitEpoch                  github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,7,opt,name=exit_epoch,json=exitEpoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"exit_epoch,omitempty"`
+	WithdrawableEpoch          github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,8,opt,name=withdrawable_epoch,json=withdrawableEpoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"withdrawable_epoch,omitempty"`
+	XXX_NoUnkeyedLiteral       struct{}                                  `json:"-"`
+	XXX_unrecognized           []byte                                    `json:"-"`
+	XXX_sizecache              int32                                     `json:"-"`
 }
 
 func (m *Validator) Reset()         { *m = Validator{} }
@@ -177,21 +178,21 @@ func (m *Validator) GetActivationEligibilityEpoch() uint64 {
 	return 0
 }
 
-func (m *Validator) GetActivationEpoch() uint64 {
+func (m *Validator) GetActivationEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.ActivationEpoch
 	}
 	return 0
 }
 
-func (m *Validator) GetExitEpoch() uint64 {
+func (m *Validator) GetExitEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.ExitEpoch
 	}
 	return 0
 }
 
-func (m *Validator) GetWithdrawableEpoch() uint64 {
+func (m *Validator) GetWithdrawableEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.WithdrawableEpoch
 	}
@@ -206,39 +207,40 @@ func init() {
 func init() { proto.RegisterFile("eth/v1/validator.proto", fileDescriptor_3e824961df2399d0) }
 
 var fileDescriptor_3e824961df2399d0 = []byte{
-	// 498 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x92, 0x41, 0x6a, 0xdb, 0x40,
-	0x14, 0x86, 0x99, 0x38, 0xb1, 0xe3, 0x69, 0x5a, 0xc7, 0xd3, 0xd6, 0x08, 0xd3, 0x3a, 0x46, 0x74,
-	0xe1, 0xd2, 0x5a, 0xc2, 0x49, 0x17, 0x21, 0xab, 0x62, 0x63, 0x28, 0x74, 0x13, 0xb4, 0xe8, 0xa2,
-	0x04, 0xc4, 0x48, 0x7a, 0x96, 0x86, 0x8c, 0x35, 0x42, 0x33, 0x52, 0xa2, 0xec, 0x7b, 0x85, 0xae,
-	0x7a, 0x82, 0x9e, 0xa4, 0x74, 0xd5, 0x13, 0x84, 0xe2, 0x23, 0xe4, 0x04, 0xc1, 0x63, 0x4b, 0x32,
-	0xd9, 0xe9, 0x9f, 0xf7, 0xfd, 0xbf, 0xde, 0xbc, 0x79, 0xb8, 0x07, 0x2a, 0xb2, 0xf3, 0x89, 0x9d,
-	0x53, 0xce, 0x02, 0xaa, 0x44, 0x6a, 0x25, 0xa9, 0x50, 0x82, 0x74, 0x40, 0x45, 0x90, 0x42, 0xb6,
-	0xb4, 0x40, 0x45, 0x56, 0x3e, 0xe9, 0x8f, 0x43, 0xa6, 0xa2, 0xcc, 0xb3, 0x7c, 0xb1, 0xb4, 0x43,
-	0x11, 0x0a, 0x5b, 0x73, 0x5e, 0xb6, 0xd0, 0x4a, 0x0b, 0xfd, 0xb5, 0xf1, 0x9b, 0x3f, 0x11, 0x26,
-	0xdf, 0xca, 0xcc, 0x99, 0x88, 0x15, 0x65, 0x31, 0xa4, 0xe4, 0x15, 0x3e, 0x60, 0x71, 0x00, 0xb7,
-	0x06, 0x1a, 0xa2, 0xd1, 0xbe, 0xb3, 0x11, 0xc4, 0xc0, 0x2d, 0x8f, 0x72, 0x1a, 0xfb, 0x60, 0xec,
-	0xe9, 0xf3, 0x52, 0x92, 0x1e, 0x6e, 0x4a, 0x45, 0x55, 0x26, 0x8d, 0xc6, 0x10, 0x8d, 0xda, 0xce,
-	0x56, 0x91, 0x73, 0xdc, 0xae, 0x3a, 0x36, 0xf6, 0x87, 0x68, 0xf4, 0xec, 0xb4, 0x6f, 0x3d, 0x69,
-	0xd9, 0xaa, 0xfe, 0xef, 0xd4, 0xb0, 0xf9, 0xab, 0x81, 0xdb, 0x55, 0x81, 0xcc, 0x30, 0x4e, 0x32,
-	0x8f, 0x33, 0xdf, 0xbd, 0x86, 0x42, 0x37, 0x75, 0x34, 0x7d, 0xf7, 0x70, 0x7f, 0x32, 0x94, 0xf2,
-	0x6e, 0x2c, 0xd9, 0x1d, 0x5c, 0x98, 0x9f, 0xce, 0xcd, 0xa1, 0x4c, 0xc0, 0x1f, 0xc7, 0x74, 0x09,
-	0x17, 0x66, 0x92, 0x79, 0xd7, 0x50, 0x98, 0x4e, 0x7b, 0xe3, 0xfb, 0x0a, 0x05, 0xf9, 0x82, 0x7b,
-	0x37, 0x4c, 0x45, 0x41, 0x4a, 0x6f, 0x28, 0x77, 0xfd, 0x14, 0x02, 0x88, 0x15, 0xa3, 0x5c, 0xea,
-	0xdb, 0x1c, 0x4d, 0xbb, 0x0f, 0xf7, 0x27, 0xcf, 0xeb, 0xc0, 0xb3, 0x53, 0xd3, 0x79, 0x5d, 0x1b,
-	0x66, 0x35, 0x4f, 0x3e, 0xe0, 0x2e, 0x2c, 0x16, 0xe0, 0x2b, 0x96, 0x83, 0x5b, 0x8e, 0xa4, 0xa1,
-	0x47, 0x72, 0x5c, 0x15, 0xa6, 0xdb, 0xd9, 0x18, 0xb8, 0x25, 0x39, 0x95, 0x11, 0x04, 0x7a, 0x02,
-	0x87, 0x4e, 0x29, 0xc9, 0x67, 0xfc, 0x86, 0xae, 0x51, 0xaa, 0x98, 0x88, 0x5d, 0xe0, 0x2c, 0x64,
-	0x1e, 0xe3, 0x4c, 0x15, 0x2e, 0x24, 0xc2, 0x8f, 0x8c, 0x03, 0x9d, 0xd8, 0xaf, 0x99, 0x79, 0x8d,
-	0xcc, 0xd7, 0x04, 0x79, 0x8f, 0x8f, 0x77, 0x13, 0xb4, 0xab, 0xa9, 0x5d, 0x9d, 0x1d, 0x97, 0x46,
-	0xdf, 0x62, 0x0c, 0xb7, 0x4c, 0x6d, 0xa1, 0x96, 0x86, 0xda, 0xeb, 0x93, 0x4d, 0x79, 0x8c, 0x49,
-	0x75, 0x57, 0x8f, 0xc3, 0x16, 0x3b, 0xd4, 0x58, 0x77, 0xb7, 0xa2, 0xf1, 0xe9, 0x0f, 0xf4, 0x67,
-	0x35, 0x40, 0xff, 0x56, 0x03, 0xf4, 0x7f, 0x35, 0x40, 0xf8, 0xa5, 0x48, 0xc3, 0xa7, 0xef, 0x3a,
-	0x7d, 0x51, 0xbd, 0xdf, 0xe5, 0x7a, 0xd7, 0x2e, 0xd1, 0xf7, 0x8f, 0x3b, 0xcb, 0x99, 0xa4, 0x85,
-	0x5c, 0x52, 0xc5, 0x7c, 0x4e, 0x3d, 0x69, 0x97, 0x5e, 0x9a, 0x30, 0x2d, 0xec, 0x7c, 0xf2, 0x7b,
-	0xaf, 0x33, 0x2f, 0x13, 0xe7, 0x3a, 0xf1, 0x6f, 0x7d, 0x72, 0x35, 0x57, 0xd1, 0x55, 0x3e, 0xf1,
-	0x9a, 0x7a, 0x8d, 0xcf, 0x1e, 0x03, 0x00, 0x00, 0xff, 0xff, 0x32, 0x0f, 0x13, 0xef, 0x20, 0x03,
-	0x00, 0x00,
+	// 523 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0xc1, 0x6e, 0xda, 0x40,
+	0x10, 0x86, 0xb5, 0x09, 0x81, 0xb0, 0x4d, 0x4b, 0xd8, 0xb6, 0xc8, 0x42, 0x15, 0x20, 0xab, 0x07,
+	0xaa, 0x16, 0x5b, 0x90, 0x1e, 0xa2, 0x9c, 0x2a, 0x23, 0xa4, 0x4a, 0xed, 0x21, 0xf2, 0xa1, 0xaa,
+	0x2a, 0x24, 0xb4, 0x36, 0x03, 0x5e, 0x65, 0xf1, 0x5a, 0xde, 0xb5, 0x13, 0xe7, 0xde, 0x57, 0xe8,
+	0x3b, 0xb4, 0x4f, 0x52, 0xf5, 0xd4, 0x27, 0x40, 0x15, 0x8f, 0x90, 0x63, 0x4f, 0x15, 0x0b, 0xd8,
+	0x28, 0x87, 0x1e, 0x72, 0xe3, 0x9f, 0xfd, 0xff, 0x6f, 0x86, 0xd1, 0x18, 0x37, 0x40, 0x05, 0x76,
+	0xda, 0xb7, 0x53, 0xca, 0xd9, 0x94, 0x2a, 0x11, 0x5b, 0x51, 0x2c, 0x94, 0x20, 0x35, 0x50, 0x01,
+	0xc4, 0x90, 0x2c, 0x2c, 0x50, 0x81, 0x95, 0xf6, 0x9b, 0xbd, 0x39, 0x53, 0x41, 0xe2, 0x59, 0xbe,
+	0x58, 0xd8, 0x73, 0x31, 0x17, 0xb6, 0xf6, 0x79, 0xc9, 0x4c, 0x2b, 0x2d, 0xf4, 0xaf, 0x4d, 0xde,
+	0xfc, 0x86, 0x30, 0xf9, 0xb4, 0x63, 0x0e, 0x45, 0xa8, 0x28, 0x0b, 0x21, 0x26, 0xcf, 0xf0, 0x11,
+	0x0b, 0xa7, 0x70, 0x63, 0xa0, 0x0e, 0xea, 0x96, 0xdc, 0x8d, 0x20, 0x06, 0xae, 0x78, 0x94, 0xd3,
+	0xd0, 0x07, 0xe3, 0x40, 0xd7, 0x77, 0x92, 0x34, 0x70, 0x59, 0x2a, 0xaa, 0x12, 0x69, 0x1c, 0x76,
+	0x50, 0xb7, 0xea, 0x6e, 0x15, 0x39, 0xc7, 0xd5, 0x7c, 0x62, 0xa3, 0xd4, 0x41, 0xdd, 0x47, 0x83,
+	0xa6, 0x75, 0x6f, 0x64, 0x2b, 0xef, 0xef, 0x16, 0x66, 0xf3, 0x7b, 0x09, 0x57, 0xf3, 0x07, 0x32,
+	0xc4, 0x38, 0x4a, 0x3c, 0xce, 0xfc, 0xc9, 0x15, 0x64, 0x7a, 0xa8, 0x13, 0xe7, 0xe5, 0xdd, 0xb2,
+	0xdd, 0x91, 0xf2, 0xb6, 0x27, 0xd9, 0x2d, 0x5c, 0x98, 0x6f, 0xcf, 0xcd, 0x8e, 0x8c, 0xc0, 0xef,
+	0x85, 0x74, 0x01, 0x17, 0x66, 0x94, 0x78, 0x57, 0x90, 0x99, 0x6e, 0x75, 0x93, 0xfb, 0x00, 0x19,
+	0x79, 0x8f, 0x1b, 0xd7, 0x4c, 0x05, 0xd3, 0x98, 0x5e, 0x53, 0x3e, 0xf1, 0x63, 0x98, 0x42, 0xa8,
+	0x18, 0xe5, 0x52, 0xff, 0x9b, 0x13, 0xa7, 0x7e, 0xb7, 0x6c, 0x3f, 0x2e, 0x80, 0x67, 0x03, 0xd3,
+	0x7d, 0x5e, 0x04, 0x86, 0x85, 0x9f, 0xbc, 0xc6, 0x75, 0x98, 0xcd, 0xc0, 0x57, 0x2c, 0x85, 0xc9,
+	0x6e, 0x25, 0x87, 0x7a, 0x25, 0xa7, 0xf9, 0x83, 0xb3, 0xdd, 0x8d, 0x81, 0x2b, 0x92, 0x53, 0x19,
+	0xc0, 0x54, 0x6f, 0xe0, 0xd8, 0xdd, 0x49, 0xf2, 0x0e, 0xbf, 0xa0, 0x6b, 0x2b, 0x55, 0x4c, 0x84,
+	0x13, 0xe0, 0x6c, 0xce, 0x3c, 0xc6, 0x99, 0xca, 0x26, 0x10, 0x09, 0x3f, 0x30, 0x8e, 0x34, 0xb1,
+	0x59, 0x78, 0x46, 0x85, 0x65, 0xb4, 0x76, 0x90, 0xcf, 0xf8, 0x74, 0x9f, 0xa0, 0x53, 0xe5, 0x75,
+	0xca, 0xe9, 0xfd, 0x5d, 0xb6, 0x5f, 0xed, 0xdd, 0x42, 0x14, 0x67, 0x72, 0x41, 0x15, 0xf3, 0x39,
+	0xf5, 0xa4, 0x0d, 0x2a, 0x18, 0xf4, 0x54, 0x16, 0x81, 0xb4, 0x34, 0xc8, 0xad, 0xed, 0x35, 0xd1,
+	0xe4, 0x8f, 0x18, 0xc3, 0x0d, 0x53, 0x5b, 0x66, 0xe5, 0x21, 0xcc, 0xea, 0x1a, 0xb0, 0xa1, 0x8d,
+	0x31, 0xc9, 0x37, 0xe9, 0x71, 0xd8, 0x52, 0x8f, 0x1f, 0x42, 0xad, 0xef, 0x83, 0x74, 0xc9, 0xf9,
+	0x8a, 0x7e, 0xae, 0x5a, 0xe8, 0xf7, 0xaa, 0x85, 0xfe, 0xac, 0x5a, 0x08, 0x3f, 0x15, 0xf1, 0xfc,
+	0xfe, 0x91, 0x39, 0x4f, 0xf2, 0x63, 0xba, 0x5c, 0x1f, 0xfe, 0x25, 0xfa, 0xf2, 0xe6, 0x7f, 0x3d,
+	0x75, 0x96, 0x46, 0x4c, 0x0b, 0x3b, 0xed, 0xff, 0x38, 0xa8, 0x8d, 0x76, 0xc4, 0x91, 0x26, 0xfe,
+	0x2a, 0x2a, 0xe3, 0x91, 0x0a, 0xc6, 0x69, 0xdf, 0x2b, 0xeb, 0x6f, 0xea, 0xec, 0x5f, 0x00, 0x00,
+	0x00, 0xff, 0xff, 0x07, 0x0c, 0x96, 0x72, 0xad, 0x03, 0x00, 0x00,
 }
 
 func (m *ValidatorContainer) Marshal() (dAtA []byte, err error) {
@@ -783,7 +785,7 @@ func (m *Validator) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.ActivationEpoch |= uint64(b&0x7F) << shift
+				m.ActivationEpoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -802,7 +804,7 @@ func (m *Validator) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.ExitEpoch |= uint64(b&0x7F) << shift
+				m.ExitEpoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -821,7 +823,7 @@ func (m *Validator) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.WithdrawableEpoch |= uint64(b&0x7F) << shift
+				m.WithdrawableEpoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
diff --git a/eth/v1/validator.proto b/eth/v1/validator.proto
index 2957a8bd..3147e582 100644
--- a/eth/v1/validator.proto
+++ b/eth/v1/validator.proto
@@ -53,17 +53,17 @@ message Validator {
     // Epoch when the validator was activated. This field may be zero if the
     // validator was present in the Ethereum 2.0 genesis. This field is
     // FAR_FUTURE_EPOCH if the validator has not been activated.
-    uint64 activation_epoch = 6;
+    uint64 activation_epoch = 6 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // Epoch when the validator was exited. This field is FAR_FUTURE_EPOCH if
     // the validator has not exited.
     // FAR_FUTURE_EPOCH is a constant defined by the official Ethereum 2.0 specification:
     // https://github.com/ethereum/eth2.0-specs/blob/v0.9.2/specs/core/0_beacon-chain.md#constants
-    uint64 exit_epoch = 7;
+    uint64 exit_epoch = 7 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // Epoch when the validator is eligible to withdraw their funds. This field
     // is FAR_FUTURE_EPOCH if the validator has not exited.
     // FAR_FUTURE_EPOCH is a constant defined by the official Ethereum 2.0 specification:
     // https://github.com/ethereum/eth2.0-specs/blob/v0.9.2/specs/core/0_beacon-chain.md#constants
-    uint64 withdrawable_epoch = 8;
+    uint64 withdrawable_epoch = 8 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 }
diff --git a/eth/v1/validator_service.pb.go b/eth/v1/validator_service.pb.go
index ab26fef2..a197df4e 100755
--- a/eth/v1/validator_service.pb.go
+++ b/eth/v1/validator_service.pb.go
@@ -13,6 +13,7 @@ import (
 	_ "github.com/gogo/protobuf/gogoproto"
 	proto "github.com/gogo/protobuf/proto"
 	types "github.com/gogo/protobuf/types"
+	github_com_prysmaticlabs_eth2_types "github.com/prysmaticlabs/eth2-types"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
 	grpc "google.golang.org/grpc"
 	codes "google.golang.org/grpc/codes"
@@ -31,11 +32,11 @@ var _ = math.Inf
 const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
 
 type AttesterDutiesRequest struct {
-	Epoch                uint64   `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	Index                []uint64 `protobuf:"varint,2,rep,packed,name=index,proto3" json:"index,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	Index                []uint64                                  `protobuf:"varint,2,rep,packed,name=index,proto3" json:"index,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *AttesterDutiesRequest) Reset()         { *m = AttesterDutiesRequest{} }
@@ -71,7 +72,7 @@ func (m *AttesterDutiesRequest) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_AttesterDutiesRequest proto.InternalMessageInfo
 
-func (m *AttesterDutiesRequest) GetEpoch() uint64 {
+func (m *AttesterDutiesRequest) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -228,10 +229,10 @@ func (m *AttesterDuty) GetSlot() uint64 {
 }
 
 type ProposerDutiesRequest struct {
-	Epoch                uint64   `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *ProposerDutiesRequest) Reset()         { *m = ProposerDutiesRequest{} }
@@ -267,7 +268,7 @@ func (m *ProposerDutiesRequest) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_ProposerDutiesRequest proto.InternalMessageInfo
 
-func (m *ProposerDutiesRequest) GetEpoch() uint64 {
+func (m *ProposerDutiesRequest) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -884,74 +885,75 @@ func init() {
 func init() { proto.RegisterFile("eth/v1/validator_service.proto", fileDescriptor_8497bbdb5ef97537) }
 
 var fileDescriptor_8497bbdb5ef97537 = []byte{
-	// 1057 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x96, 0x4d, 0x6f, 0x1b, 0x45,
-	0x18, 0xc7, 0x35, 0x4e, 0x1a, 0xa2, 0xa9, 0x43, 0xe8, 0xa4, 0x69, 0xb6, 0x6e, 0x71, 0xd3, 0xa5,
-	0xc4, 0x31, 0xc4, 0xbb, 0x75, 0x1a, 0x55, 0x25, 0x12, 0x48, 0x76, 0x6b, 0x45, 0x15, 0x48, 0x44,
-	0x8e, 0xe0, 0x80, 0x8a, 0x56, 0xb3, 0xf6, 0x64, 0xbd, 0xaa, 0xbd, 0xb3, 0xec, 0x8c, 0xad, 0xba,
-	0x55, 0x2f, 0x3d, 0x73, 0x41, 0x3d, 0x70, 0xe3, 0x03, 0x44, 0x1c, 0xf9, 0x0c, 0x08, 0x71, 0x42,
-	0xe2, 0x8e, 0x50, 0xc4, 0x27, 0xe0, 0x13, 0xa0, 0x9d, 0x99, 0x7d, 0xb1, 0x77, 0xfd, 0x72, 0xe1,
-	0x66, 0x3f, 0xf3, 0x7f, 0x9e, 0xf9, 0xcd, 0xcb, 0xf3, 0xdf, 0x81, 0x65, 0xc2, 0x7b, 0xe6, 0xa8,
-	0x6e, 0x8e, 0x70, 0xdf, 0xed, 0x62, 0x4e, 0x03, 0x8b, 0x91, 0x60, 0xe4, 0x76, 0x88, 0xe1, 0x07,
-	0x94, 0x53, 0xb4, 0x49, 0x78, 0x8f, 0x04, 0x64, 0x38, 0x30, 0x08, 0xef, 0x19, 0xa3, 0x7a, 0xa9,
-	0xe6, 0xb8, 0xbc, 0x37, 0xb4, 0x8d, 0x0e, 0x1d, 0x98, 0x0e, 0x75, 0xa8, 0x29, 0x74, 0xf6, 0xf0,
-	0x5c, 0xfc, 0x13, 0x7f, 0xc4, 0x2f, 0x99, 0x5f, 0xba, 0xed, 0x50, 0xea, 0xf4, 0x89, 0x89, 0x7d,
-	0xd7, 0xc4, 0x9e, 0x47, 0x39, 0xe6, 0x2e, 0xf5, 0x98, 0x1a, 0xbd, 0xa5, 0x46, 0xe3, 0x1a, 0x64,
-	0xe0, 0xf3, 0xb1, 0x1a, 0xd4, 0x14, 0x1a, 0xe6, 0x9c, 0x30, 0x99, 0xa7, 0x46, 0x6e, 0xaa, 0x11,
-	0x9b, 0xe0, 0x0e, 0xf5, 0x2c, 0xbb, 0x4f, 0x3b, 0xcf, 0xe5, 0x90, 0xfe, 0x18, 0x6e, 0x37, 0x84,
-	0x9e, 0x04, 0x4f, 0x86, 0xdc, 0x25, 0xac, 0x4d, 0xbe, 0x1b, 0x12, 0xc6, 0xd1, 0x75, 0x78, 0x85,
-	0xf8, 0xb4, 0xd3, 0xd3, 0xc0, 0x2e, 0xd8, 0x5f, 0x6d, 0xcb, 0x3f, 0x61, 0xd4, 0xf5, 0xba, 0xe4,
-	0x85, 0x56, 0xd8, 0x5d, 0x09, 0xa3, 0xe2, 0x8f, 0xfe, 0x39, 0xbc, 0x31, 0x5d, 0x84, 0xf9, 0xd4,
-	0x63, 0x04, 0xd5, 0xe1, 0x6a, 0x17, 0x73, 0xac, 0x81, 0xdd, 0x95, 0xfd, 0xab, 0x87, 0xef, 0x1b,
-	0x53, 0xbb, 0x63, 0xa4, 0xd2, 0xc6, 0x6d, 0x21, 0xd5, 0x7f, 0x29, 0xc0, 0x62, 0x3a, 0x8c, 0xaa,
-	0x70, 0xcd, 0x1f, 0xda, 0xcf, 0xc9, 0x58, 0xa0, 0x14, 0x9b, 0xd7, 0xfe, 0xfd, 0xeb, 0xce, 0x06,
-	0x63, 0x2f, 0x6b, 0xcc, 0x7d, 0x49, 0x8e, 0xf5, 0xa3, 0x47, 0x7a, 0x5b, 0x09, 0x50, 0x05, 0x6e,
-	0x26, 0x07, 0x13, 0x81, 0x86, 0xf8, 0xef, 0xc6, 0xe1, 0xa7, 0x61, 0x34, 0x14, 0x76, 0xe8, 0x60,
-	0xe0, 0x72, 0x4e, 0x88, 0x12, 0xae, 0x48, 0x61, 0x1c, 0x96, 0xc2, 0x2a, 0x7c, 0x2f, 0x11, 0xf6,
-	0x89, 0xe7, 0xf0, 0x9e, 0xb6, 0x2a, 0x94, 0x49, 0x81, 0x2f, 0x44, 0x18, 0x1d, 0x40, 0x14, 0x87,
-	0x98, 0x85, 0xb9, 0xc5, 0xfa, 0x94, 0x6b, 0x57, 0x84, 0x38, 0x29, 0xc2, 0x1a, 0xfc, 0xac, 0x4f,
-	0x39, 0x3a, 0x86, 0x37, 0x13, 0xd4, 0x69, 0x96, 0x35, 0x91, 0xb4, 0x13, 0x0b, 0x1e, 0x4f, 0x42,
-	0x21, 0xb8, 0x2a, 0x6a, 0xbf, 0x23, 0x64, 0xe2, 0xb7, 0x5e, 0x83, 0xdb, 0xa7, 0x01, 0xf5, 0x29,
-	0x5b, 0xea, 0x20, 0xc3, 0x23, 0x9b, 0x96, 0x2f, 0x79, 0x64, 0xa9, 0xb4, 0xe8, 0xc8, 0x46, 0xb0,
-	0x98, 0x8e, 0xfe, 0x2f, 0x27, 0x16, 0xad, 0x79, 0x25, 0xb5, 0xe6, 0x1f, 0x00, 0xbc, 0x1e, 0x4d,
-	0xdc, 0x0c, 0x2f, 0x75, 0xb4, 0xe6, 0x48, 0x0c, 0x12, 0x31, 0x7a, 0x08, 0x37, 0x02, 0xec, 0x75,
-	0x31, 0xb5, 0x02, 0x32, 0x22, 0xb8, 0x2f, 0xe6, 0xc9, 0xb0, 0x7d, 0xf2, 0x50, 0x6f, 0x17, 0xa5,
-	0xae, 0x2d, 0x64, 0xa8, 0x06, 0xd7, 0x9d, 0x00, 0x9f, 0x9f, 0xbb, 0xdc, 0x15, 0x93, 0x67, 0x52,
-	0x1e, 0x1c, 0xea, 0xed, 0x58, 0xa2, 0x3f, 0x4d, 0xce, 0x41, 0x21, 0xa9, 0x7d, 0xbd, 0x1f, 0xef,
-	0x2b, 0xd8, 0xbf, 0x7a, 0x78, 0x3b, 0xb3, 0xaf, 0x4d, 0xd1, 0x9c, 0x32, 0x47, 0x6e, 0xeb, 0x57,
-	0x51, 0x5b, 0x89, 0x5e, 0x7e, 0x82, 0x39, 0x9e, 0xb7, 0xbe, 0x9c, 0x2b, 0x5d, 0xc8, 0xbb, 0xd2,
-	0xfa, 0x97, 0x70, 0x27, 0x53, 0x56, 0x31, 0x1e, 0x4d, 0x30, 0xee, 0xce, 0x68, 0xd7, 0x24, 0x4f,
-	0x72, 0xbe, 0x80, 0xb7, 0x1a, 0x8e, 0x13, 0x10, 0x07, 0x73, 0x92, 0x52, 0x44, 0xb0, 0x2d, 0xb8,
-	0x9d, 0xb2, 0x24, 0x2b, 0x4c, 0xb1, 0x02, 0xaa, 0xe8, 0x73, 0x77, 0x73, 0x0b, 0x4f, 0xcd, 0x43,
-	0x69, 0xb2, 0xe6, 0x42, 0xea, 0x02, 0x9c, 0xc0, 0xad, 0x89, 0x09, 0x97, 0xdc, 0xea, 0x74, 0x8e,
-	0x5c, 0xc2, 0xb7, 0x50, 0x4b, 0x96, 0xe0, 0x75, 0x4f, 0x03, 0x4a, 0xcf, 0xd9, 0xd9, 0xd0, 0x1e,
-	0xb8, 0x1c, 0x35, 0x26, 0x1a, 0xa2, 0x96, 0xad, 0x96, 0xb3, 0xf6, 0xa8, 0x86, 0x2a, 0x6f, 0xc1,
-	0xb2, 0x3c, 0xde, 0xb8, 0x91, 0xcf, 0x86, 0x36, 0xeb, 0x04, 0xae, 0x4d, 0xd4, 0x24, 0x9f, 0x4e,
-	0x4c, 0x52, 0x9d, 0x71, 0x3b, 0xb2, 0xe9, 0x6a, 0x82, 0x0b, 0x00, 0xb5, 0x59, 0x92, 0xbc, 0x9b,
-	0x01, 0x72, 0xcd, 0x2e, 0xdf, 0xc1, 0x0a, 0x33, 0x1c, 0x2c, 0xa7, 0x23, 0xd1, 0x07, 0x70, 0xc3,
-	0x65, 0x16, 0x56, 0x3b, 0x42, 0x03, 0xe1, 0x95, 0xeb, 0xed, 0xa2, 0xcb, 0x1a, 0x71, 0xec, 0xf0,
-	0xd7, 0x75, 0xb8, 0x29, 0x61, 0xbf, 0x8e, 0x7a, 0x1c, 0xfd, 0x08, 0xe0, 0xb5, 0x13, 0xc2, 0x27,
-	0x3f, 0x23, 0x68, 0x6f, 0xde, 0x07, 0x23, 0xf1, 0xb8, 0x52, 0x65, 0xa1, 0x4e, 0xde, 0x0c, 0xbd,
-	0xfe, 0xe6, 0xcf, 0x7f, 0xde, 0x16, 0x3e, 0x46, 0x55, 0x73, 0xfa, 0x3b, 0x6e, 0x76, 0x85, 0x52,
-	0x7d, 0x3d, 0x49, 0x60, 0xbe, 0x12, 0x46, 0xf9, 0x3a, 0x22, 0x9b, 0x74, 0xcb, 0x1c, 0xb2, 0x5c,
-	0xf7, 0xcd, 0x21, 0xcb, 0xb7, 0xdd, 0x25, 0xc8, 0x7c, 0x95, 0x18, 0x93, 0xbd, 0x01, 0x70, 0xfd,
-	0x84, 0x70, 0x61, 0x19, 0xe8, 0xc3, 0x99, 0x13, 0xa5, 0x9d, 0xb1, 0xb4, 0xb7, 0x48, 0xa6, 0x70,
-	0x2a, 0x02, 0xe7, 0x2e, 0xba, 0x93, 0xc5, 0x11, 0xcf, 0x07, 0x66, 0xbe, 0x0a, 0x0f, 0xfc, 0x35,
-	0x7a, 0x0b, 0x20, 0x8a, 0x0f, 0x2e, 0xee, 0x58, 0x54, 0x59, 0xe8, 0x1d, 0x0a, 0x68, 0x7f, 0xb1,
-	0x50, 0x21, 0x7d, 0x24, 0x90, 0xee, 0x21, 0x3d, 0x8b, 0x34, 0xed, 0x2f, 0xe8, 0x27, 0x00, 0x77,
-	0x42, 0xaa, 0x9c, 0xd6, 0x44, 0x07, 0x4b, 0x75, 0x70, 0xc4, 0x77, 0x6f, 0xae, 0x7b, 0x44, 0x6c,
-	0xa6, 0x60, 0xab, 0xa2, 0x4a, 0x0e, 0x5b, 0x54, 0xdc, 0x4a, 0x51, 0x86, 0xdb, 0xa6, 0xc9, 0xd6,
-	0xcf, 0xfa, 0x0e, 0xaa, 0xce, 0x21, 0x9c, 0x34, 0xa7, 0xd2, 0x0d, 0x43, 0x3e, 0x09, 0x8d, 0xe8,
-	0x49, 0x68, 0xb4, 0xc2, 0x27, 0xa1, 0x7e, 0x24, 0x80, 0x0c, 0x7d, 0x6f, 0x2e, 0x90, 0xd7, 0xb5,
-	0x7c, 0x51, 0xed, 0x58, 0xd8, 0x08, 0xfa, 0x19, 0xc0, 0xbb, 0xb2, 0x70, 0xbe, 0x99, 0xf8, 0x82,
-	0xdd, 0x5c, 0xda, 0x9d, 0x16, 0x40, 0x7e, 0x26, 0x20, 0x1f, 0xe9, 0xf7, 0x73, 0x2e, 0x99, 0x7c,
-	0xaa, 0x26, 0xbe, 0xc5, 0x52, 0x04, 0x0a, 0xb7, 0xf9, 0x3d, 0xf8, 0xed, 0xb2, 0x0c, 0xfe, 0xb8,
-	0x2c, 0x83, 0xbf, 0x2f, 0xcb, 0x00, 0x6e, 0xd1, 0xc0, 0x99, 0x46, 0x6b, 0x6e, 0xc7, 0x1e, 0x73,
-	0x26, 0x1f, 0xea, 0xa7, 0x21, 0xc3, 0x29, 0xf8, 0xe6, 0x20, 0xf5, 0x30, 0xf7, 0x83, 0x31, 0x1b,
-	0x60, 0xee, 0x76, 0xfa, 0xd8, 0x66, 0x66, 0x54, 0x02, 0xfb, 0x2e, 0x53, 0x64, 0x17, 0x85, 0xcd,
-	0x56, 0x54, 0xb8, 0x25, 0x0a, 0xff, 0x9e, 0x44, 0x9e, 0xb5, 0x78, 0xef, 0xd9, 0xa8, 0x6e, 0xaf,
-	0x89, 0xe5, 0x3d, 0xf8, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x5a, 0xb8, 0xcb, 0x42, 0x24, 0x0c, 0x00,
-	0x00,
+	// 1083 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x97, 0x4d, 0x6f, 0x1b, 0x45,
+	0x18, 0xc7, 0x35, 0x8e, 0x13, 0xa2, 0x69, 0x42, 0xe8, 0xa4, 0x69, 0xdc, 0xb4, 0x24, 0xe9, 0x52,
+	0x62, 0x1b, 0xe2, 0xdd, 0xda, 0x8d, 0xaa, 0x12, 0x09, 0x24, 0xbb, 0xb5, 0xa2, 0x0a, 0x24, 0xa2,
+	0x8d, 0xe0, 0x80, 0x82, 0x56, 0xb3, 0xf6, 0x64, 0xbd, 0xaa, 0xbd, 0xb3, 0xec, 0x8c, 0xad, 0xba,
+	0x55, 0x2f, 0x3d, 0x73, 0x41, 0x3d, 0x70, 0xe3, 0x03, 0x54, 0x1c, 0xf9, 0x0c, 0x08, 0x71, 0x42,
+	0xe2, 0x5e, 0xa1, 0x88, 0x4f, 0xc0, 0x91, 0x53, 0xb5, 0x33, 0xb3, 0x2f, 0xb6, 0xd7, 0x2f, 0x97,
+	0xde, 0xbc, 0x33, 0xff, 0xe7, 0x99, 0xdf, 0x3c, 0xb3, 0xcf, 0x7f, 0xc7, 0x70, 0x97, 0xf0, 0x8e,
+	0x31, 0xa8, 0x1a, 0x03, 0xdc, 0x75, 0xdb, 0x98, 0xd3, 0xc0, 0x62, 0x24, 0x18, 0xb8, 0x2d, 0xa2,
+	0xfb, 0x01, 0xe5, 0x14, 0x6d, 0x10, 0xde, 0x21, 0x01, 0xe9, 0xf7, 0x74, 0xc2, 0x3b, 0xfa, 0xa0,
+	0xba, 0x53, 0x71, 0x5c, 0xde, 0xe9, 0xdb, 0x7a, 0x8b, 0xf6, 0x0c, 0x87, 0x3a, 0xd4, 0x10, 0x3a,
+	0xbb, 0x7f, 0x21, 0x9e, 0xc4, 0x83, 0xf8, 0x25, 0xe3, 0x77, 0x6e, 0x39, 0x94, 0x3a, 0x5d, 0x62,
+	0x60, 0xdf, 0x35, 0xb0, 0xe7, 0x51, 0x8e, 0xb9, 0x4b, 0x3d, 0xa6, 0x66, 0x6f, 0xaa, 0xd9, 0x38,
+	0x07, 0xe9, 0xf9, 0x7c, 0xa8, 0x26, 0x0b, 0x0a, 0x0d, 0x73, 0x4e, 0x98, 0x8c, 0x53, 0x33, 0x37,
+	0xd4, 0x8c, 0x4d, 0x70, 0x8b, 0x7a, 0x96, 0xdd, 0xa5, 0xad, 0x27, 0x72, 0x4a, 0x0b, 0xe0, 0x56,
+	0x5d, 0xe8, 0x49, 0xf0, 0xa8, 0xcf, 0x5d, 0xc2, 0x4c, 0xf2, 0x43, 0x9f, 0x30, 0x8e, 0x1e, 0xc2,
+	0x65, 0xe2, 0xd3, 0x56, 0xa7, 0x00, 0xf6, 0x41, 0x29, 0xdf, 0xa8, 0xfc, 0xff, 0x66, 0xaf, 0x9c,
+	0xda, 0x8a, 0x1f, 0x0c, 0x59, 0x0f, 0x73, 0xb7, 0xd5, 0xc5, 0x36, 0x33, 0x08, 0xef, 0xd4, 0x2a,
+	0x7c, 0xe8, 0x13, 0xa6, 0x37, 0xc3, 0x20, 0x53, 0xc6, 0xa2, 0x6b, 0x70, 0xd9, 0xf5, 0xda, 0xe4,
+	0x69, 0x21, 0xb7, 0xbf, 0x54, 0xca, 0x9b, 0xf2, 0x41, 0xfb, 0x12, 0x5e, 0x1f, 0x5f, 0x93, 0xf9,
+	0xd4, 0x63, 0x04, 0x55, 0x61, 0xbe, 0x8d, 0x39, 0x2e, 0x80, 0xfd, 0xa5, 0xd2, 0x95, 0xda, 0x87,
+	0xfa, 0x58, 0x31, 0xf5, 0x54, 0xd8, 0xd0, 0x14, 0x52, 0xed, 0xb7, 0x1c, 0x5c, 0x4b, 0x0f, 0xa3,
+	0x32, 0x5c, 0xf1, 0xfb, 0xf6, 0x13, 0x32, 0x14, 0xe4, 0x6b, 0x8d, 0xab, 0xff, 0xbd, 0xd9, 0x5b,
+	0x67, 0xec, 0x59, 0x85, 0xb9, 0xcf, 0xc8, 0xb1, 0x76, 0xf4, 0x40, 0x33, 0x95, 0x00, 0x15, 0xe1,
+	0x46, 0x72, 0x8e, 0x11, 0x28, 0x28, 0xe5, 0xcd, 0xf7, 0xe3, 0xe1, 0xc7, 0xe1, 0x68, 0x28, 0x6c,
+	0xd1, 0x5e, 0xcf, 0xe5, 0x9c, 0x10, 0x25, 0x5c, 0x92, 0xc2, 0x78, 0x58, 0x0a, 0xcb, 0xf0, 0x83,
+	0x44, 0xd8, 0x25, 0x9e, 0xc3, 0x3b, 0x85, 0xbc, 0x50, 0x26, 0x09, 0xbe, 0x12, 0xc3, 0xe8, 0x10,
+	0xa2, 0x78, 0x88, 0x59, 0x98, 0x5b, 0xac, 0x4b, 0x79, 0x61, 0x59, 0x88, 0x93, 0x24, 0xac, 0xce,
+	0xcf, 0xba, 0x94, 0xa3, 0x63, 0x78, 0x23, 0x41, 0x1d, 0x67, 0x59, 0x11, 0x41, 0xdb, 0xb1, 0xe0,
+	0xe1, 0x28, 0x14, 0x82, 0x79, 0x91, 0xfb, 0x3d, 0x21, 0x13, 0xbf, 0xb5, 0x73, 0xb8, 0x75, 0x1a,
+	0x50, 0x9f, 0xb2, 0x77, 0x71, 0xee, 0xe1, 0x09, 0x8f, 0x67, 0x5f, 0xf0, 0x84, 0x53, 0x61, 0xd1,
+	0x09, 0x0f, 0xe0, 0x5a, 0x7a, 0xf4, 0x9d, 0x1c, 0x70, 0x54, 0xa2, 0xa5, 0x54, 0x89, 0x7e, 0x02,
+	0xf0, 0x5a, 0xb4, 0x70, 0x23, 0x6c, 0x99, 0xa8, 0x44, 0x91, 0x18, 0x24, 0x62, 0x74, 0x1f, 0xae,
+	0x07, 0xd8, 0x6b, 0x63, 0x6a, 0x05, 0x64, 0x40, 0x70, 0x57, 0xac, 0x33, 0xc1, 0xf6, 0xd9, 0x7d,
+	0xcd, 0x5c, 0x93, 0x3a, 0x53, 0xc8, 0x50, 0x05, 0xae, 0x3a, 0x01, 0xbe, 0xb8, 0x70, 0xb9, 0x2b,
+	0x16, 0x9f, 0x08, 0xb9, 0x57, 0xd3, 0xcc, 0x58, 0xa2, 0x3d, 0x4e, 0x8e, 0x4d, 0x21, 0xa9, 0xba,
+	0xde, 0x8d, 0xeb, 0x0a, 0x4a, 0x57, 0x6a, 0xb7, 0x26, 0xea, 0xda, 0x10, 0xad, 0x2f, 0x63, 0x64,
+	0x59, 0xbf, 0x89, 0xba, 0x50, 0x38, 0xc5, 0x23, 0xcc, 0xf1, 0xac, 0xfd, 0x65, 0x74, 0x40, 0x2e,
+	0xab, 0x03, 0xb4, 0xaf, 0xe1, 0xf6, 0x44, 0x5a, 0xc5, 0x78, 0x34, 0xc2, 0xb8, 0x3f, 0xa5, 0xbb,
+	0x93, 0x38, 0xc9, 0xf9, 0x14, 0xde, 0xac, 0x3b, 0x4e, 0x40, 0x1c, 0xcc, 0x49, 0x4a, 0x11, 0xc1,
+	0x36, 0xe1, 0x56, 0xca, 0xf0, 0xac, 0x30, 0xc4, 0x0a, 0xa8, 0xa2, 0xcf, 0xac, 0xe6, 0x26, 0x1e,
+	0x5b, 0x87, 0xd2, 0x64, 0xcf, 0xb9, 0xd4, 0x0b, 0x70, 0x02, 0x37, 0x47, 0x16, 0x5c, 0xb0, 0xd4,
+	0xe9, 0x18, 0xb9, 0x85, 0xef, 0x61, 0x21, 0xd9, 0x82, 0xd7, 0x3e, 0x0d, 0x28, 0xbd, 0x60, 0x67,
+	0x7d, 0xbb, 0xe7, 0x72, 0x54, 0x1f, 0x69, 0x88, 0xca, 0x64, 0xb6, 0x8c, 0xbd, 0x47, 0x39, 0x54,
+	0x7a, 0x0b, 0xee, 0xca, 0xe3, 0x8d, 0xfb, 0xfe, 0xac, 0x6f, 0xb3, 0x56, 0xe0, 0xda, 0x44, 0x2d,
+	0xf2, 0xf9, 0xc8, 0x22, 0xe5, 0x29, 0x6f, 0xc7, 0x64, 0xb8, 0x5a, 0xe0, 0x35, 0x80, 0x85, 0x69,
+	0x92, 0xac, 0x37, 0x03, 0x64, 0x7a, 0x63, 0xb6, 0xe1, 0xe5, 0xa6, 0x18, 0x5e, 0x46, 0x47, 0xa2,
+	0x8f, 0xe0, 0xba, 0xcb, 0x2c, 0xac, 0x2a, 0x42, 0x03, 0x61, 0xad, 0xab, 0xe6, 0x9a, 0xcb, 0xea,
+	0xf1, 0x58, 0xed, 0xf7, 0x55, 0xb8, 0x21, 0x61, 0xbf, 0x8d, 0x7a, 0x1c, 0xfd, 0x0c, 0xe0, 0xd5,
+	0x13, 0xc2, 0x47, 0xbf, 0x3a, 0xe8, 0x60, 0xd6, 0xf7, 0x25, 0xb1, 0xc4, 0x9d, 0xe2, 0x5c, 0x9d,
+	0x7c, 0x33, 0xb4, 0xea, 0xcb, 0xbf, 0xff, 0x7d, 0x95, 0xfb, 0x14, 0x95, 0x8d, 0xf1, 0x5b, 0x82,
+	0xd1, 0x16, 0x4a, 0xf5, 0x6d, 0x26, 0x81, 0xf1, 0x5c, 0x18, 0xe5, 0x8b, 0x88, 0x6c, 0xd4, 0x2d,
+	0x33, 0xc8, 0x32, 0xcd, 0x3a, 0x83, 0x2c, 0xdb, 0x76, 0x17, 0x20, 0xf3, 0x55, 0x60, 0x4c, 0xf6,
+	0x12, 0xc0, 0xd5, 0x13, 0xc2, 0x85, 0x65, 0xa0, 0x8f, 0xa7, 0x2e, 0x94, 0x76, 0xc6, 0x9d, 0x83,
+	0x79, 0x32, 0x85, 0x53, 0x14, 0x38, 0xb7, 0xd1, 0xde, 0x24, 0x8e, 0xb8, 0x9c, 0x30, 0xe3, 0x79,
+	0x78, 0xe0, 0x2f, 0xd0, 0x2b, 0x00, 0x51, 0x7c, 0x70, 0x71, 0xc7, 0xa2, 0xe2, 0x5c, 0xef, 0x50,
+	0x40, 0xa5, 0xf9, 0x42, 0x85, 0xf4, 0x89, 0x40, 0xba, 0x83, 0xb4, 0x49, 0xa4, 0x71, 0x7f, 0x41,
+	0xbf, 0x00, 0xb8, 0x1d, 0x52, 0x65, 0xb4, 0x26, 0x3a, 0x5c, 0xa8, 0x83, 0x23, 0xbe, 0x3b, 0x33,
+	0xdd, 0x23, 0x62, 0x33, 0x04, 0x5b, 0x19, 0x15, 0x33, 0xd8, 0xa2, 0xe4, 0x56, 0x8a, 0x32, 0x2c,
+	0x5b, 0x41, 0xb6, 0xfe, 0xa4, 0xef, 0xa0, 0xf2, 0x0c, 0xc2, 0x51, 0x73, 0xda, 0xb9, 0xae, 0xcb,
+	0x0b, 0xa7, 0x1e, 0x5d, 0x38, 0xf5, 0x66, 0x78, 0xe1, 0xd4, 0x8e, 0x04, 0x90, 0xae, 0x1d, 0xcc,
+	0x04, 0xf2, 0xda, 0x96, 0x2f, 0xb2, 0x1d, 0x0b, 0x1b, 0x41, 0xbf, 0x02, 0x78, 0x5b, 0x26, 0xce,
+	0x36, 0x13, 0x5f, 0xb0, 0x1b, 0x0b, 0xbb, 0xd3, 0x1c, 0xc8, 0x2f, 0x04, 0xe4, 0x03, 0xed, 0x6e,
+	0xc6, 0x4b, 0x26, 0x2f, 0xc2, 0x89, 0x6f, 0xb1, 0x14, 0x81, 0xc2, 0x6d, 0xfc, 0x08, 0xfe, 0xb8,
+	0xdc, 0x05, 0x7f, 0x5d, 0xee, 0x82, 0x7f, 0x2e, 0x77, 0x01, 0xdc, 0xa4, 0x81, 0x33, 0x8e, 0xd6,
+	0xd8, 0x8a, 0x3d, 0xe6, 0x4c, 0xfe, 0x0d, 0x38, 0x0d, 0x19, 0x4e, 0xc1, 0x77, 0x87, 0xb3, 0xee,
+	0x4c, 0x22, 0x05, 0xf6, 0x5d, 0xa6, 0xc8, 0x5e, 0xe7, 0x36, 0x9a, 0x51, 0xe2, 0xa6, 0x48, 0xfc,
+	0x67, 0x32, 0x72, 0xde, 0xe4, 0x9d, 0xf3, 0x41, 0xd5, 0x5e, 0x11, 0xdb, 0xbb, 0xf7, 0x36, 0x00,
+	0x00, 0xff, 0xff, 0x91, 0xc1, 0x5e, 0x9d, 0x82, 0x0c, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -2252,7 +2254,7 @@ func (m *AttesterDutiesRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2691,7 +2693,7 @@ func (m *ProposerDutiesRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
diff --git a/eth/v1/validator_service.proto b/eth/v1/validator_service.proto
index e06dae7a..637cc531 100644
--- a/eth/v1/validator_service.proto
+++ b/eth/v1/validator_service.proto
@@ -106,7 +106,7 @@ service BeaconValidator {
 
 message AttesterDutiesRequest {
   // Epoch to request, should only be allowed 1 epoch ahead.
-  uint64 epoch = 1;
+  uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
   // Validator index to request duties for.
   repeated uint64 index = 2;
@@ -141,7 +141,7 @@ message AttesterDuty {
 
 message ProposerDutiesRequest {
   // Epoch to request duties for.
-  uint64 epoch = 1;
+  uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 }
 
 message ProposerDutiesResponse {
diff --git a/eth/v1alpha1/BUILD.bazel b/eth/v1alpha1/BUILD.bazel
index c1ef46a2..a8db446f 100644
--- a/eth/v1alpha1/BUILD.bazel
+++ b/eth/v1alpha1/BUILD.bazel
@@ -53,6 +53,9 @@ java_proto_library(
 ssz_gen_marshal(
     name = "ssz_generated_files",
     go_proto = ":go_proto",
+    includes = [
+        "@com_github_prysmaticlabs_eth2_types//:go_default_library",
+    ],
     objs = [
         "AggregateAttestationAndProof",
         "Attestation",
@@ -84,6 +87,7 @@ go_proto_library(
         "@go_googleapis//google/api:annotations_go_proto",
         "@com_github_grpc_ecosystem_grpc_gateway//protoc-gen-swagger/options:options_go_proto",
         "@com_github_prysmaticlabs_go_bitfield//:go_default_library",
+        "@com_github_prysmaticlabs_eth2_types//:go_default_library",
     ],
 )
 
diff --git a/eth/v1alpha1/beacon_block.pb.go b/eth/v1alpha1/beacon_block.pb.go
index 49ced2e7..872b84ab 100755
--- a/eth/v1alpha1/beacon_block.pb.go
+++ b/eth/v1alpha1/beacon_block.pb.go
@@ -11,6 +11,7 @@ import (
 
 	_ "github.com/gogo/protobuf/gogoproto"
 	proto "github.com/gogo/protobuf/proto"
+	github_com_prysmaticlabs_eth2_types "github.com/prysmaticlabs/eth2-types"
 )
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -498,11 +499,11 @@ func (m *Deposit_Data) GetSignature() []byte {
 }
 
 type VoluntaryExit struct {
-	Epoch                uint64   `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	ValidatorIndex       uint64   `protobuf:"varint,2,opt,name=validator_index,json=validatorIndex,proto3" json:"validator_index,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	ValidatorIndex       uint64                                    `protobuf:"varint,2,opt,name=validator_index,json=validatorIndex,proto3" json:"validator_index,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *VoluntaryExit) Reset()         { *m = VoluntaryExit{} }
@@ -538,7 +539,7 @@ func (m *VoluntaryExit) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_VoluntaryExit proto.InternalMessageInfo
 
-func (m *VoluntaryExit) GetEpoch() uint64 {
+func (m *VoluntaryExit) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -886,75 +887,77 @@ func init() {
 func init() { proto.RegisterFile("eth/v1alpha1/beacon_block.proto", fileDescriptor_6abbd9d98bd3d11a) }
 
 var fileDescriptor_6abbd9d98bd3d11a = []byte{
-	// 1088 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0xcf, 0x6e, 0xe3, 0x44,
-	0x18, 0x97, 0x5b, 0xa7, 0x4d, 0xbe, 0x24, 0x6d, 0x3a, 0x6c, 0x97, 0xd0, 0x43, 0x13, 0xcd, 0x2e,
-	0xbb, 0x61, 0x45, 0x93, 0xc6, 0xad, 0x4a, 0x29, 0x48, 0x40, 0xba, 0x95, 0x5a, 0x81, 0x56, 0x95,
-	0x57, 0x42, 0x02, 0xad, 0x64, 0x4d, 0xe2, 0x69, 0x6c, 0xd5, 0xf1, 0x58, 0x9e, 0x49, 0xb6, 0xd9,
-	0x03, 0xe2, 0x01, 0xb8, 0x23, 0xce, 0x5c, 0x10, 0x47, 0x1e, 0x81, 0x13, 0xe2, 0x02, 0x4f, 0x10,
-	0xa1, 0x8a, 0x13, 0xc7, 0x3c, 0x01, 0xf2, 0xd8, 0x4e, 0x9c, 0x34, 0x6e, 0xd9, 0x3d, 0x71, 0xf3,
-	0x8c, 0x7f, 0xbf, 0xef, 0x37, 0xf3, 0xfd, 0x1d, 0xa8, 0x50, 0x61, 0x35, 0x06, 0x4d, 0xe2, 0x78,
-	0x16, 0x69, 0x36, 0xda, 0x94, 0x74, 0x98, 0x6b, 0xb4, 0x1d, 0xd6, 0xb9, 0xac, 0x7b, 0x3e, 0x13,
-	0x0c, 0x6d, 0x52, 0x61, 0x51, 0x9f, 0xf6, 0x7b, 0x75, 0x2a, 0xac, 0x7a, 0x8c, 0xdc, 0xda, 0xe9,
-	0xda, 0xc2, 0xea, 0xb7, 0xeb, 0x1d, 0xd6, 0x6b, 0x74, 0x59, 0x97, 0x35, 0x24, 0xba, 0xdd, 0xbf,
-	0x90, 0x2b, 0xb9, 0x90, 0x5f, 0xa1, 0x95, 0xad, 0xed, 0x19, 0x19, 0x22, 0x04, 0xe5, 0x82, 0x08,
-	0x9b, 0xb9, 0xe1, 0x7f, 0xfc, 0x8f, 0x02, 0xf9, 0x96, 0x14, 0x6f, 0x05, 0xda, 0x08, 0x81, 0xca,
-	0x1d, 0x26, 0xca, 0x4a, 0x55, 0xa9, 0xa9, 0xba, 0xfc, 0x46, 0xef, 0xc2, 0x9a, 0xe7, 0x33, 0x8f,
-	0x71, 0xea, 0x1b, 0xb6, 0x6b, 0xd2, 0xab, 0xf2, 0x92, 0xfc, 0x5b, 0x8c, 0x77, 0xcf, 0x82, 0x4d,
-	0xa4, 0x41, 0xde, 0x23, 0x3e, 0x75, 0x85, 0xe1, 0x33, 0x26, 0xca, 0xcb, 0x55, 0xa5, 0x56, 0x68,
-	0x6d, 0x8c, 0x47, 0x95, 0x22, 0xe7, 0xaf, 0x76, 0xb8, 0xfd, 0x8a, 0x1e, 0xe1, 0x3d, 0x0d, 0xeb,
-	0x10, 0xa2, 0x74, 0xc6, 0x04, 0xda, 0x05, 0x08, 0xce, 0x43, 0x43, 0x8a, 0x9a, 0x46, 0xc9, 0x49,
-	0x90, 0x64, 0x1c, 0x81, 0xda, 0x66, 0xe6, 0xb0, 0x9c, 0xa9, 0x2a, 0xb5, 0xbc, 0xf6, 0xa8, 0xbe,
-	0xd0, 0x4b, 0xf5, 0xc4, 0x95, 0x5a, 0xcc, 0x1c, 0xea, 0x92, 0x83, 0xbf, 0x81, 0x8d, 0xe7, 0x76,
-	0xd7, 0xa5, 0x66, 0xf2, 0xc6, 0x87, 0x90, 0x91, 0x6e, 0x97, 0x57, 0xce, 0x6b, 0xf8, 0x6e, 0x8b,
-	0x7a, 0x48, 0x40, 0x0d, 0xc8, 0x71, 0xbb, 0xeb, 0x12, 0xd1, 0xf7, 0xa9, 0x74, 0xc9, 0x8d, 0xb3,
-	0x7f, 0x78, 0x10, 0x9c, 0x3d, 0xc6, 0xe0, 0x1f, 0x32, 0xb0, 0x3e, 0x77, 0x32, 0x74, 0x00, 0x45,
-	0x9f, 0xb8, 0x26, 0x61, 0x86, 0x4f, 0x07, 0x94, 0x38, 0xf2, 0x18, 0x0b, 0x0d, 0x15, 0x42, 0x9c,
-	0x2e, 0x61, 0xe8, 0x63, 0xc8, 0x51, 0x61, 0x35, 0x0d, 0x93, 0x08, 0x22, 0xc5, 0xf3, 0x5a, 0x25,
-	0xe5, 0xe8, 0x27, 0xc2, 0x6a, 0x3e, 0x25, 0x82, 0xe8, 0x59, 0x1a, 0x7d, 0xa1, 0x1d, 0xc8, 0x76,
-	0x7d, 0x72, 0x71, 0x61, 0x0b, 0x3b, 0x3d, 0x50, 0x13, 0x08, 0xb2, 0x00, 0x4d, 0x32, 0x80, 0x3b,
-	0x84, 0x5b, 0xb6, 0xdb, 0xe5, 0x65, 0xb5, 0xba, 0x5c, 0xcb, 0x6b, 0x8f, 0x53, 0x54, 0xcf, 0x23,
-	0xc2, 0xf3, 0x08, 0xdf, 0x2a, 0x8d, 0x47, 0x95, 0x42, 0xa0, 0xd0, 0x23, 0x57, 0x47, 0xb8, 0x79,
-	0x80, 0xf5, 0x0d, 0x6f, 0x0e, 0xc3, 0x51, 0x17, 0x50, 0x98, 0xa4, 0x33, 0x4a, 0x99, 0x5b, 0x95,
-	0x3e, 0x8b, 0x08, 0x13, 0xa5, 0xf5, 0xf1, 0xa8, 0x92, 0x9f, 0x28, 0x69, 0x58, 0xdf, 0x20, 0x73,
-	0x10, 0x8e, 0xbe, 0x82, 0x42, 0xa2, 0x1a, 0x78, 0x79, 0x45, 0x4a, 0xe0, 0x5b, 0x25, 0x24, 0x74,
-	0xea, 0xa9, 0xf0, 0x1e, 0xda, 0x21, 0xd6, 0x67, 0x4c, 0xa1, 0x2f, 0x20, 0x6b, 0x52, 0x8f, 0x71,
-	0x5b, 0xf0, 0xf2, 0xaa, 0x34, 0xbb, 0x9d, 0x62, 0xf6, 0x69, 0x08, 0x5b, 0xe0, 0x9a, 0x89, 0x05,
-	0x44, 0x61, 0x7d, 0xc0, 0x9c, 0xbe, 0x2b, 0x88, 0x3f, 0x34, 0xe8, 0x55, 0x60, 0x34, 0x2b, 0x8d,
-	0x3e, 0x49, 0x31, 0x1a, 0xa6, 0xf8, 0x97, 0x31, 0xe7, 0xe4, 0x6a, 0xa1, 0xc0, 0xda, 0x20, 0x09,
-	0xe0, 0xf8, 0x27, 0x05, 0x4a, 0xf3, 0x21, 0x43, 0x67, 0x90, 0xb5, 0x28, 0x31, 0xa9, 0x6f, 0x34,
-	0xa3, 0x1c, 0xab, 0xdf, 0x2a, 0x9a, 0x48, 0xee, 0x53, 0xc9, 0xd3, 0x57, 0x43, 0x7e, 0x33, 0x61,
-	0x4a, 0x93, 0x19, 0xf7, 0xc6, 0xa6, 0x34, 0xfc, 0x8b, 0x02, 0xa5, 0xf9, 0x98, 0xa3, 0x67, 0x50,
-	0x4c, 0x04, 0xc1, 0x68, 0x46, 0xe5, 0xfc, 0x5e, 0x8a, 0x88, 0x6c, 0x59, 0xd4, 0x4c, 0xc4, 0x75,
-	0x26, 0x88, 0xcd, 0x79, 0x7b, 0x5a, 0x74, 0xff, 0x37, 0xb4, 0xa7, 0xe1, 0x3f, 0x96, 0x60, 0x35,
-	0x0a, 0x37, 0x7a, 0x02, 0x19, 0xcf, 0x67, 0xec, 0xa2, 0xac, 0x54, 0x97, 0x6b, 0x85, 0xd6, 0xbd,
-	0xf1, 0xa8, 0x52, 0x4a, 0x94, 0xde, 0xde, 0xfb, 0x41, 0xf5, 0x85, 0x10, 0xf4, 0x01, 0xa8, 0x89,
-	0x12, 0x7f, 0x70, 0x7b, 0x22, 0xd5, 0x65, 0x99, 0x4b, 0xc2, 0xd6, 0x48, 0x01, 0x55, 0xd6, 0xfa,
-	0x31, 0x80, 0xd7, 0x6f, 0x3b, 0x76, 0xc7, 0xb8, 0xa4, 0xc3, 0xa8, 0xbd, 0x3c, 0x1c, 0x8f, 0x2a,
-	0xd5, 0xa9, 0xe4, 0xfe, 0x21, 0xae, 0x72, 0x8f, 0x76, 0x76, 0x5c, 0xd2, 0xa3, 0x47, 0xd8, 0xeb,
-	0xb7, 0x2f, 0xe9, 0x10, 0xeb, 0xb9, 0x90, 0xf7, 0x39, 0x1d, 0xa2, 0x53, 0xb8, 0xff, 0xd2, 0x16,
-	0x96, 0xe9, 0x93, 0x97, 0xc4, 0x31, 0x3a, 0x3e, 0x35, 0xa9, 0x2b, 0x6c, 0xe2, 0xf0, 0xc5, 0x8d,
-	0x2f, 0xb8, 0xc0, 0xe6, 0x94, 0x70, 0x3c, 0xc5, 0xa3, 0xfb, 0xb0, 0x42, 0x7a, 0xac, 0xef, 0x86,
-	0x13, 0x42, 0xd5, 0xa3, 0xd5, 0x6c, 0x37, 0x55, 0xff, 0x43, 0x37, 0x7d, 0x06, 0xc5, 0x99, 0x24,
-	0x47, 0xf7, 0x20, 0x43, 0x3d, 0xd6, 0xb1, 0xa2, 0xe1, 0x15, 0x2e, 0xd0, 0x63, 0x58, 0x1f, 0x10,
-	0xc7, 0x36, 0x89, 0x60, 0xb3, 0xe3, 0x6b, 0x6d, 0xb2, 0x2d, 0x83, 0x87, 0xbf, 0x55, 0xe0, 0xad,
-	0x05, 0xb5, 0x83, 0x0e, 0x41, 0x0d, 0xca, 0x2e, 0x4a, 0xa8, 0x87, 0x29, 0x11, 0x98, 0xe1, 0xe8,
-	0x92, 0xf1, 0xfa, 0x03, 0xe2, 0x7b, 0x05, 0xb2, 0x71, 0xb7, 0x46, 0xfb, 0x50, 0x88, 0x9a, 0x40,
-	0x38, 0x1d, 0x95, 0x34, 0x47, 0xe7, 0x23, 0x98, 0x9c, 0x8f, 0x0f, 0xa0, 0x18, 0xb3, 0x3a, 0xd2,
-	0xcb, 0xe1, 0x65, 0x63, 0x53, 0xc7, 0xd2, 0xd7, 0xbb, 0x00, 0x72, 0x84, 0x19, 0x16, 0xe1, 0x56,
-	0xfa, 0x00, 0xc8, 0x49, 0xd0, 0x29, 0xe1, 0x16, 0xfe, 0x5b, 0x81, 0x8d, 0x1b, 0x25, 0xf9, 0xff,
-	0x7f, 0x2d, 0xd4, 0x21, 0x17, 0x4c, 0xfe, 0x90, 0x90, 0x49, 0x1d, 0x74, 0x01, 0x26, 0xc0, 0xe3,
-	0xef, 0x14, 0x78, 0x3b, 0xa5, 0xff, 0xa0, 0x4f, 0x61, 0x25, 0xec, 0x40, 0x51, 0x26, 0xd4, 0xee,
-	0x7e, 0x29, 0x44, 0x9d, 0x2b, 0xe2, 0xbd, 0x7e, 0x3e, 0xfc, 0xaa, 0x00, 0xba, 0xd9, 0x59, 0xd0,
-	0x27, 0x10, 0x0d, 0x34, 0xdb, 0xed, 0x06, 0x3e, 0xb6, 0x3b, 0x94, 0xcb, 0x5e, 0xa2, 0xb6, 0xd0,
-	0x78, 0x54, 0x59, 0x9b, 0x8e, 0xbe, 0xdd, 0xfd, 0x43, 0xac, 0x97, 0x26, 0xe0, 0xb3, 0x10, 0x1b,
-	0x3c, 0xa2, 0x12, 0x4d, 0xe5, 0xd1, 0xdd, 0x43, 0x6f, 0xda, 0x57, 0x66, 0x2f, 0xb1, 0x7c, 0xf7,
-	0x25, 0x5a, 0x3f, 0x2a, 0xbf, 0x5d, 0x6f, 0x2b, 0x7f, 0x5e, 0x6f, 0x2b, 0x7f, 0x5d, 0x6f, 0x2b,
-	0xf0, 0x0e, 0xf3, 0xbb, 0x8b, 0x05, 0x5b, 0xa5, 0x84, 0xeb, 0xce, 0x83, 0xe7, 0xe9, 0xb9, 0xf2,
-	0xf5, 0x41, 0xe2, 0xbd, 0xeb, 0xf9, 0x43, 0xde, 0x23, 0xc2, 0xee, 0x38, 0xa4, 0xcd, 0x1b, 0xb1,
-	0x0d, 0xe2, 0xd9, 0x72, 0x31, 0x79, 0xe6, 0x7e, 0x44, 0x85, 0xf5, 0xf3, 0xd2, 0xe6, 0x49, 0xac,
-	0x71, 0x92, 0xd0, 0xf8, 0x7d, 0xba, 0xff, 0xe2, 0x44, 0x58, 0x2f, 0xe2, 0xfd, 0xf6, 0x8a, 0x7c,
-	0x0f, 0xef, 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x29, 0x0e, 0x1f, 0xf5, 0x98, 0x0b, 0x00, 0x00,
+	// 1111 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0x4f, 0x6f, 0xe3, 0xc4,
+	0x1b, 0x96, 0x5b, 0xa7, 0x4d, 0xde, 0x24, 0x6d, 0x3a, 0xbf, 0x5f, 0x97, 0xd0, 0x43, 0x13, 0x79,
+	0x97, 0xdd, 0xec, 0x8a, 0x24, 0x8d, 0x5b, 0x95, 0x52, 0x90, 0x80, 0x74, 0x23, 0xb5, 0x02, 0xa1,
+	0xca, 0x2b, 0x21, 0x81, 0x56, 0xb2, 0x26, 0xf1, 0x34, 0xb6, 0xea, 0x78, 0x2c, 0xcf, 0xa4, 0xdb,
+	0xac, 0x04, 0xe2, 0x03, 0x70, 0x47, 0x9c, 0xb9, 0x20, 0x8e, 0x7c, 0x04, 0x4e, 0x88, 0x0b, 0x7c,
+	0x82, 0x08, 0x55, 0x9c, 0x38, 0xe6, 0xc8, 0x09, 0x79, 0xc6, 0x49, 0x9c, 0x34, 0x4e, 0xd9, 0x3d,
+	0x71, 0xf3, 0x8c, 0x9f, 0xe7, 0x7d, 0xe6, 0x9d, 0xf7, 0xdf, 0x40, 0x89, 0x70, 0xbb, 0x7e, 0xd5,
+	0xc0, 0xae, 0x6f, 0xe3, 0x46, 0xbd, 0x4d, 0x70, 0x87, 0x7a, 0x66, 0xdb, 0xa5, 0x9d, 0xcb, 0x9a,
+	0x1f, 0x50, 0x4e, 0xd1, 0x36, 0xe1, 0x36, 0x09, 0x48, 0xbf, 0x57, 0x23, 0xdc, 0xae, 0x8d, 0x91,
+	0x3b, 0xd5, 0xae, 0xc3, 0xed, 0x7e, 0xbb, 0xd6, 0xa1, 0xbd, 0x7a, 0x97, 0x76, 0x69, 0x5d, 0xa0,
+	0xdb, 0xfd, 0x0b, 0xb1, 0x12, 0x0b, 0xf1, 0x25, 0xad, 0xec, 0xec, 0xce, 0xc8, 0x60, 0xce, 0x09,
+	0xe3, 0x98, 0x3b, 0xd4, 0x93, 0xff, 0xb5, 0xbf, 0x14, 0xc8, 0x36, 0x85, 0x78, 0x33, 0xd4, 0x46,
+	0x08, 0x54, 0xe6, 0x52, 0x5e, 0x54, 0xca, 0x4a, 0x45, 0x35, 0xc4, 0x37, 0x7a, 0x0b, 0x36, 0xfc,
+	0x80, 0xfa, 0x94, 0x91, 0xc0, 0x74, 0x3c, 0x8b, 0x5c, 0x17, 0x57, 0xc4, 0xdf, 0xfc, 0x78, 0xf7,
+	0x2c, 0xdc, 0x44, 0x3a, 0x64, 0x7d, 0x1c, 0x10, 0x8f, 0x9b, 0x01, 0xa5, 0xbc, 0xb8, 0x5a, 0x56,
+	0x2a, 0xb9, 0xe6, 0xd6, 0x68, 0x58, 0xca, 0x33, 0xf6, 0xb2, 0xca, 0x9c, 0x97, 0xe4, 0x58, 0xdb,
+	0xd7, 0x35, 0x03, 0x24, 0xca, 0xa0, 0x94, 0xa3, 0x3d, 0x80, 0xf0, 0x3c, 0x44, 0x52, 0xd4, 0x24,
+	0x4a, 0x46, 0x80, 0x04, 0xe3, 0x18, 0xd4, 0x36, 0xb5, 0x06, 0xc5, 0x54, 0x59, 0xa9, 0x64, 0xf5,
+	0x87, 0xb5, 0x85, 0xb7, 0x54, 0x8b, 0xb9, 0xd4, 0xa4, 0xd6, 0xc0, 0x10, 0x1c, 0xed, 0x2b, 0xd8,
+	0x7a, 0xe6, 0x74, 0x3d, 0x62, 0xc5, 0x3d, 0x3e, 0x82, 0x94, 0xb8, 0x76, 0xe1, 0x72, 0x56, 0xd7,
+	0xee, 0xb6, 0x68, 0x48, 0x02, 0xaa, 0x43, 0x86, 0x39, 0x5d, 0x0f, 0xf3, 0x7e, 0x40, 0xc4, 0x95,
+	0xdc, 0x3a, 0xfb, 0xbb, 0x87, 0xe1, 0xd9, 0xc7, 0x18, 0xed, 0xbb, 0x14, 0x6c, 0xce, 0x9d, 0x0c,
+	0x1d, 0x42, 0x3e, 0xc0, 0x9e, 0x85, 0xa9, 0x19, 0x90, 0x2b, 0x82, 0x5d, 0x71, 0x8c, 0x85, 0x86,
+	0x72, 0x12, 0x67, 0x08, 0x18, 0x7a, 0x1f, 0x32, 0x84, 0xdb, 0x0d, 0xd3, 0xc2, 0x1c, 0x0b, 0xf1,
+	0xac, 0x5e, 0x4a, 0x38, 0x7a, 0x8b, 0xdb, 0x8d, 0xa7, 0x98, 0x63, 0x23, 0x4d, 0xa2, 0x2f, 0x54,
+	0x85, 0x74, 0x37, 0xc0, 0x17, 0x17, 0x0e, 0x77, 0x92, 0x03, 0x35, 0x81, 0x20, 0x1b, 0xd0, 0x24,
+	0x03, 0x98, 0x8b, 0x99, 0xed, 0x78, 0x5d, 0x56, 0x54, 0xcb, 0xab, 0x95, 0xac, 0xfe, 0x28, 0x41,
+	0xf5, 0x3c, 0x22, 0x3c, 0x8b, 0xf0, 0xcd, 0xc2, 0x68, 0x58, 0xca, 0x85, 0x0a, 0x3d, 0x7c, 0x7d,
+	0xac, 0x35, 0x0e, 0x35, 0x63, 0xcb, 0x9f, 0xc3, 0x30, 0xd4, 0x05, 0x24, 0x93, 0x74, 0x46, 0x29,
+	0xb5, 0x54, 0xe9, 0xa3, 0x88, 0x30, 0x51, 0xda, 0x1c, 0x0d, 0x4b, 0xd9, 0x89, 0x92, 0xae, 0x19,
+	0x5b, 0x78, 0x0e, 0xc2, 0xd0, 0xe7, 0x90, 0x8b, 0x55, 0x03, 0x2b, 0xae, 0x09, 0x09, 0x6d, 0xa9,
+	0x84, 0x80, 0x4e, 0x6f, 0x4a, 0xfa, 0xa1, 0x1f, 0x69, 0xc6, 0x8c, 0x29, 0xf4, 0x09, 0xa4, 0x2d,
+	0xe2, 0x53, 0xe6, 0x70, 0x56, 0x5c, 0x17, 0x66, 0x77, 0x13, 0xcc, 0x3e, 0x95, 0xb0, 0x05, 0x57,
+	0x33, 0xb1, 0x80, 0x08, 0x6c, 0x5e, 0x51, 0xb7, 0xef, 0x71, 0x1c, 0x0c, 0x4c, 0x72, 0x1d, 0x1a,
+	0x4d, 0x0b, 0xa3, 0x4f, 0x12, 0x8c, 0xca, 0x14, 0xff, 0x6c, 0xcc, 0x69, 0x5d, 0x2f, 0x14, 0xd8,
+	0xb8, 0x8a, 0x03, 0x98, 0xf6, 0x83, 0x02, 0x85, 0xf9, 0x90, 0xa1, 0x33, 0x48, 0xdb, 0x04, 0x5b,
+	0x24, 0x30, 0x1b, 0x51, 0x8e, 0xd5, 0x96, 0x8a, 0xc6, 0x92, 0xfb, 0x54, 0xf0, 0x8c, 0x75, 0xc9,
+	0x6f, 0xc4, 0x4c, 0xe9, 0x22, 0xe3, 0x5e, 0xdb, 0x94, 0xae, 0xfd, 0xa4, 0x40, 0x61, 0x3e, 0xe6,
+	0xe8, 0x53, 0xc8, 0xc7, 0x82, 0x60, 0x36, 0xa2, 0x72, 0x7e, 0x9c, 0x20, 0x22, 0x5a, 0x16, 0xb1,
+	0x62, 0x71, 0x9d, 0x09, 0x62, 0x63, 0xde, 0x9e, 0x1e, 0xf9, 0xff, 0x9a, 0xf6, 0x74, 0xed, 0xb7,
+	0x15, 0x58, 0x8f, 0xc2, 0x8d, 0x9e, 0x40, 0xca, 0x0f, 0x28, 0xbd, 0x28, 0x2a, 0xe5, 0xd5, 0x4a,
+	0xae, 0xf9, 0xff, 0xd1, 0xb0, 0x54, 0x88, 0x95, 0xde, 0xfe, 0xdb, 0x61, 0xf5, 0x49, 0x08, 0x7a,
+	0x07, 0xd4, 0x58, 0x89, 0xdf, 0x5f, 0x9e, 0x48, 0x35, 0x51, 0xe6, 0x82, 0xb0, 0x33, 0x54, 0x40,
+	0x15, 0xb5, 0x7e, 0x02, 0xe0, 0xf7, 0xdb, 0xae, 0xd3, 0x31, 0x2f, 0xc9, 0x20, 0x6a, 0x2f, 0x0f,
+	0x46, 0xc3, 0x52, 0x79, 0x2a, 0x79, 0x70, 0xa4, 0x95, 0x99, 0x4f, 0x3a, 0x55, 0x0f, 0xf7, 0xc8,
+	0xb1, 0xe6, 0xf7, 0xdb, 0x97, 0x64, 0xa0, 0x19, 0x19, 0xc9, 0xfb, 0x98, 0x0c, 0xd0, 0x29, 0xdc,
+	0x7b, 0xe1, 0x70, 0xdb, 0x0a, 0xf0, 0x0b, 0xec, 0x9a, 0x9d, 0x80, 0x58, 0xc4, 0xe3, 0x0e, 0x76,
+	0xd9, 0xe2, 0xc6, 0x17, 0x3a, 0xb0, 0x3d, 0x25, 0x9c, 0x4c, 0xf1, 0xe8, 0x1e, 0xac, 0xe1, 0x1e,
+	0xed, 0x7b, 0x72, 0x42, 0xa8, 0x46, 0xb4, 0x9a, 0xed, 0xa6, 0xea, 0xbf, 0xe8, 0xa6, 0x5f, 0x42,
+	0x7e, 0x26, 0xc9, 0xd1, 0x09, 0xa4, 0x88, 0x4f, 0x3b, 0xb6, 0x1c, 0x5e, 0xcd, 0xea, 0xdf, 0xc3,
+	0xd2, 0xe3, 0xd8, 0xb4, 0xf4, 0x83, 0x01, 0xeb, 0x61, 0xee, 0x74, 0x5c, 0xdc, 0x66, 0x75, 0xc2,
+	0x6d, 0xbd, 0xca, 0x07, 0x3e, 0x61, 0xb5, 0x56, 0x48, 0x32, 0x24, 0x17, 0x3d, 0x82, 0xcd, 0x2b,
+	0xec, 0x3a, 0x16, 0xe6, 0x74, 0x76, 0xda, 0x6d, 0x4c, 0xb6, 0x45, 0xac, 0xb5, 0xaf, 0x15, 0xf8,
+	0xdf, 0x82, 0x52, 0x43, 0x47, 0xa0, 0x86, 0x55, 0x1a, 0xe5, 0xdf, 0x83, 0x84, 0x80, 0xcd, 0x70,
+	0x0c, 0xc1, 0x78, 0xf5, 0x79, 0xf2, 0xad, 0x02, 0xe9, 0x71, 0x73, 0x47, 0x07, 0x90, 0x8b, 0x7a,
+	0x86, 0x1c, 0xa6, 0x4a, 0x52, 0x5c, 0xb2, 0x11, 0x4c, 0x8c, 0xd3, 0xfb, 0x90, 0x1f, 0xb3, 0x3a,
+	0x22, 0x28, 0xd2, 0xd9, 0xb1, 0xa9, 0x13, 0x11, 0x9a, 0x3d, 0x00, 0x31, 0xf1, 0x4c, 0x1b, 0x33,
+	0x3b, 0x79, 0x5e, 0x64, 0x04, 0xe8, 0x14, 0x33, 0x5b, 0xfb, 0x53, 0x81, 0xad, 0x5b, 0x15, 0xfc,
+	0xdf, 0x7f, 0x5c, 0xd4, 0x20, 0x13, 0x3e, 0x14, 0x24, 0x21, 0x95, 0x38, 0x17, 0x43, 0x4c, 0x88,
+	0xd7, 0xbe, 0x51, 0xe0, 0x8d, 0x84, 0x76, 0x85, 0x3e, 0x84, 0x35, 0xd9, 0xb0, 0xa2, 0x4c, 0xa8,
+	0xdc, 0xfd, 0xb0, 0x88, 0x1a, 0x5d, 0xc4, 0x7b, 0xf5, 0x7c, 0xf8, 0x59, 0x01, 0x74, 0xbb, 0x11,
+	0xa1, 0x0f, 0x20, 0x9a, 0x7f, 0x8e, 0xd7, 0x0d, 0xef, 0xd8, 0xe9, 0x10, 0x26, 0x5a, 0x8f, 0xda,
+	0x44, 0xa3, 0x61, 0x69, 0x63, 0x3a, 0x29, 0xf7, 0x0e, 0x8e, 0x34, 0xa3, 0x30, 0x01, 0x9f, 0x49,
+	0x6c, 0xf8, 0xe6, 0x8a, 0xf5, 0xa0, 0x87, 0x77, 0xcf, 0xc8, 0x69, 0x1b, 0x9a, 0x75, 0x62, 0xf5,
+	0x6e, 0x27, 0x9a, 0xdf, 0x2b, 0xbf, 0xdc, 0xec, 0x2a, 0xbf, 0xdf, 0xec, 0x2a, 0x7f, 0xdc, 0xec,
+	0x2a, 0xf0, 0x26, 0x0d, 0xba, 0x8b, 0x05, 0x9b, 0x85, 0xd8, 0xd5, 0x9d, 0x87, 0xaf, 0xd9, 0x73,
+	0xe5, 0x8b, 0xc3, 0x65, 0x05, 0x2f, 0x6c, 0x60, 0xdf, 0x11, 0x8b, 0xc9, 0xab, 0xf8, 0x3d, 0xc2,
+	0xed, 0x1f, 0x57, 0xb6, 0x5b, 0x63, 0x8d, 0x56, 0x4c, 0xe3, 0xd7, 0xe9, 0xfe, 0xf3, 0x16, 0xb7,
+	0x9f, 0x8f, 0xf7, 0xdb, 0x6b, 0xe2, 0xf9, 0xbc, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x38,
+	0x66, 0x2d, 0x5c, 0xc7, 0x0b, 0x00, 0x00,
 }
 
 func (m *BeaconBlock) Marshal() (dAtA []byte, err error) {
@@ -3277,7 +3280,7 @@ func (m *VoluntaryExit) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
diff --git a/eth/v1alpha1/beacon_block.proto b/eth/v1alpha1/beacon_block.proto
index 731722ac..38c76186 100644
--- a/eth/v1alpha1/beacon_block.proto
+++ b/eth/v1alpha1/beacon_block.proto
@@ -130,7 +130,7 @@ message Deposit {
 // validator signature.
 message VoluntaryExit {
     // The epoch on when exit request becomes valid.
-    uint64 epoch = 1;
+    uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // Index of the exiting validator.
     uint64 validator_index = 2;
diff --git a/eth/v1alpha1/beacon_chain.pb.go b/eth/v1alpha1/beacon_chain.pb.go
index df9839e8..904e5eec 100755
--- a/eth/v1alpha1/beacon_chain.pb.go
+++ b/eth/v1alpha1/beacon_chain.pb.go
@@ -14,6 +14,7 @@ import (
 	_ "github.com/gogo/protobuf/gogoproto"
 	proto "github.com/gogo/protobuf/proto"
 	types "github.com/gogo/protobuf/types"
+	github_com_prysmaticlabs_eth2_types "github.com/prysmaticlabs/eth2-types"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
 	grpc "google.golang.org/grpc"
 	codes "google.golang.org/grpc/codes"
@@ -166,7 +167,7 @@ type isListIndexedAttestationsRequest_QueryFilter interface {
 }
 
 type ListIndexedAttestationsRequest_Epoch struct {
-	Epoch uint64 `protobuf:"varint,1,opt,name=epoch,proto3,oneof" json:"epoch,omitempty"`
+	Epoch github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,oneof,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
 }
 type ListIndexedAttestationsRequest_GenesisEpoch struct {
 	GenesisEpoch bool `protobuf:"varint,2,opt,name=genesis_epoch,json=genesisEpoch,proto3,oneof" json:"genesis_epoch,omitempty"`
@@ -182,7 +183,7 @@ func (m *ListIndexedAttestationsRequest) GetQueryFilter() isListIndexedAttestati
 	return nil
 }
 
-func (m *ListIndexedAttestationsRequest) GetEpoch() uint64 {
+func (m *ListIndexedAttestationsRequest) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if x, ok := m.GetQueryFilter().(*ListIndexedAttestationsRequest_Epoch); ok {
 		return x.Epoch
 	}
@@ -270,7 +271,7 @@ type isListAttestationsRequest_QueryFilter interface {
 }
 
 type ListAttestationsRequest_Epoch struct {
-	Epoch uint64 `protobuf:"varint,1,opt,name=epoch,proto3,oneof" json:"epoch,omitempty"`
+	Epoch github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,oneof,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
 }
 type ListAttestationsRequest_GenesisEpoch struct {
 	GenesisEpoch bool `protobuf:"varint,2,opt,name=genesis_epoch,json=genesisEpoch,proto3,oneof" json:"genesis_epoch,omitempty"`
@@ -286,7 +287,7 @@ func (m *ListAttestationsRequest) GetQueryFilter() isListAttestationsRequest_Que
 	return nil
 }
 
-func (m *ListAttestationsRequest) GetEpoch() uint64 {
+func (m *ListAttestationsRequest) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if x, ok := m.GetQueryFilter().(*ListAttestationsRequest_Epoch); ok {
 		return x.Epoch
 	}
@@ -508,7 +509,7 @@ type ListBlocksRequest_Slot struct {
 	Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3,oneof" json:"slot,omitempty"`
 }
 type ListBlocksRequest_Epoch struct {
-	Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3,oneof" json:"epoch,omitempty"`
+	Epoch github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,3,opt,name=epoch,proto3,oneof,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
 }
 type ListBlocksRequest_Genesis struct {
 	Genesis bool `protobuf:"varint,4,opt,name=genesis,proto3,oneof" json:"genesis,omitempty"`
@@ -540,7 +541,7 @@ func (m *ListBlocksRequest) GetSlot() uint64 {
 	return 0
 }
 
-func (m *ListBlocksRequest) GetEpoch() uint64 {
+func (m *ListBlocksRequest) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if x, ok := m.GetQueryFilter().(*ListBlocksRequest_Epoch); ok {
 		return x.Epoch
 	}
@@ -752,21 +753,21 @@ func (m *BeaconBlockContainer) GetCanonical() bool {
 }
 
 type ChainHead struct {
-	HeadSlot                   uint64   `protobuf:"varint,1,opt,name=head_slot,json=headSlot,proto3" json:"head_slot,omitempty"`
-	HeadEpoch                  uint64   `protobuf:"varint,2,opt,name=head_epoch,json=headEpoch,proto3" json:"head_epoch,omitempty"`
-	HeadBlockRoot              []byte   `protobuf:"bytes,3,opt,name=head_block_root,json=headBlockRoot,proto3" json:"head_block_root,omitempty" ssz-size:"32"`
-	FinalizedSlot              uint64   `protobuf:"varint,4,opt,name=finalized_slot,json=finalizedSlot,proto3" json:"finalized_slot,omitempty"`
-	FinalizedEpoch             uint64   `protobuf:"varint,5,opt,name=finalized_epoch,json=finalizedEpoch,proto3" json:"finalized_epoch,omitempty"`
-	FinalizedBlockRoot         []byte   `protobuf:"bytes,6,opt,name=finalized_block_root,json=finalizedBlockRoot,proto3" json:"finalized_block_root,omitempty" ssz-size:"32"`
-	JustifiedSlot              uint64   `protobuf:"varint,7,opt,name=justified_slot,json=justifiedSlot,proto3" json:"justified_slot,omitempty"`
-	JustifiedEpoch             uint64   `protobuf:"varint,8,opt,name=justified_epoch,json=justifiedEpoch,proto3" json:"justified_epoch,omitempty"`
-	JustifiedBlockRoot         []byte   `protobuf:"bytes,9,opt,name=justified_block_root,json=justifiedBlockRoot,proto3" json:"justified_block_root,omitempty" ssz-size:"32"`
-	PreviousJustifiedSlot      uint64   `protobuf:"varint,10,opt,name=previous_justified_slot,json=previousJustifiedSlot,proto3" json:"previous_justified_slot,omitempty"`
-	PreviousJustifiedEpoch     uint64   `protobuf:"varint,11,opt,name=previous_justified_epoch,json=previousJustifiedEpoch,proto3" json:"previous_justified_epoch,omitempty"`
-	PreviousJustifiedBlockRoot []byte   `protobuf:"bytes,12,opt,name=previous_justified_block_root,json=previousJustifiedBlockRoot,proto3" json:"previous_justified_block_root,omitempty" ssz-size:"32"`
-	XXX_NoUnkeyedLiteral       struct{} `json:"-"`
-	XXX_unrecognized           []byte   `json:"-"`
-	XXX_sizecache              int32    `json:"-"`
+	HeadSlot                   uint64                                    `protobuf:"varint,1,opt,name=head_slot,json=headSlot,proto3" json:"head_slot,omitempty"`
+	HeadEpoch                  github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,2,opt,name=head_epoch,json=headEpoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"head_epoch,omitempty"`
+	HeadBlockRoot              []byte                                    `protobuf:"bytes,3,opt,name=head_block_root,json=headBlockRoot,proto3" json:"head_block_root,omitempty" ssz-size:"32"`
+	FinalizedSlot              uint64                                    `protobuf:"varint,4,opt,name=finalized_slot,json=finalizedSlot,proto3" json:"finalized_slot,omitempty"`
+	FinalizedEpoch             github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,5,opt,name=finalized_epoch,json=finalizedEpoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"finalized_epoch,omitempty"`
+	FinalizedBlockRoot         []byte                                    `protobuf:"bytes,6,opt,name=finalized_block_root,json=finalizedBlockRoot,proto3" json:"finalized_block_root,omitempty" ssz-size:"32"`
+	JustifiedSlot              uint64                                    `protobuf:"varint,7,opt,name=justified_slot,json=justifiedSlot,proto3" json:"justified_slot,omitempty"`
+	JustifiedEpoch             github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,8,opt,name=justified_epoch,json=justifiedEpoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"justified_epoch,omitempty"`
+	JustifiedBlockRoot         []byte                                    `protobuf:"bytes,9,opt,name=justified_block_root,json=justifiedBlockRoot,proto3" json:"justified_block_root,omitempty" ssz-size:"32"`
+	PreviousJustifiedSlot      uint64                                    `protobuf:"varint,10,opt,name=previous_justified_slot,json=previousJustifiedSlot,proto3" json:"previous_justified_slot,omitempty"`
+	PreviousJustifiedEpoch     github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,11,opt,name=previous_justified_epoch,json=previousJustifiedEpoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"previous_justified_epoch,omitempty"`
+	PreviousJustifiedBlockRoot []byte                                    `protobuf:"bytes,12,opt,name=previous_justified_block_root,json=previousJustifiedBlockRoot,proto3" json:"previous_justified_block_root,omitempty" ssz-size:"32"`
+	XXX_NoUnkeyedLiteral       struct{}                                  `json:"-"`
+	XXX_unrecognized           []byte                                    `json:"-"`
+	XXX_sizecache              int32                                     `json:"-"`
 }
 
 func (m *ChainHead) Reset()         { *m = ChainHead{} }
@@ -809,7 +810,7 @@ func (m *ChainHead) GetHeadSlot() uint64 {
 	return 0
 }
 
-func (m *ChainHead) GetHeadEpoch() uint64 {
+func (m *ChainHead) GetHeadEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.HeadEpoch
 	}
@@ -830,7 +831,7 @@ func (m *ChainHead) GetFinalizedSlot() uint64 {
 	return 0
 }
 
-func (m *ChainHead) GetFinalizedEpoch() uint64 {
+func (m *ChainHead) GetFinalizedEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.FinalizedEpoch
 	}
@@ -851,7 +852,7 @@ func (m *ChainHead) GetJustifiedSlot() uint64 {
 	return 0
 }
 
-func (m *ChainHead) GetJustifiedEpoch() uint64 {
+func (m *ChainHead) GetJustifiedEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.JustifiedEpoch
 	}
@@ -872,7 +873,7 @@ func (m *ChainHead) GetPreviousJustifiedSlot() uint64 {
 	return 0
 }
 
-func (m *ChainHead) GetPreviousJustifiedEpoch() uint64 {
+func (m *ChainHead) GetPreviousJustifiedEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.PreviousJustifiedEpoch
 	}
@@ -936,7 +937,7 @@ type isListCommitteesRequest_QueryFilter interface {
 }
 
 type ListCommitteesRequest_Epoch struct {
-	Epoch uint64 `protobuf:"varint,1,opt,name=epoch,proto3,oneof" json:"epoch,omitempty"`
+	Epoch github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,oneof,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
 }
 type ListCommitteesRequest_Genesis struct {
 	Genesis bool `protobuf:"varint,2,opt,name=genesis,proto3,oneof" json:"genesis,omitempty"`
@@ -952,7 +953,7 @@ func (m *ListCommitteesRequest) GetQueryFilter() isListCommitteesRequest_QueryFi
 	return nil
 }
 
-func (m *ListCommitteesRequest) GetEpoch() uint64 {
+func (m *ListCommitteesRequest) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if x, ok := m.GetQueryFilter().(*ListCommitteesRequest_Epoch); ok {
 		return x.Epoch
 	}
@@ -975,7 +976,7 @@ func (*ListCommitteesRequest) XXX_OneofWrappers() []interface{} {
 }
 
 type BeaconCommittees struct {
-	Epoch                uint64                                      `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch   `protobuf:"varint,1,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
 	Committees           map[uint64]*BeaconCommittees_CommitteesList `protobuf:"bytes,2,rep,name=committees,proto3" json:"committees,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 	ActiveValidatorCount uint64                                      `protobuf:"varint,3,opt,name=active_validator_count,json=activeValidatorCount,proto3" json:"active_validator_count,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}                                    `json:"-"`
@@ -1016,7 +1017,7 @@ func (m *BeaconCommittees) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_BeaconCommittees proto.InternalMessageInfo
 
-func (m *BeaconCommittees) GetEpoch() uint64 {
+func (m *BeaconCommittees) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -1185,7 +1186,7 @@ type isListValidatorBalancesRequest_QueryFilter interface {
 }
 
 type ListValidatorBalancesRequest_Epoch struct {
-	Epoch uint64 `protobuf:"varint,1,opt,name=epoch,proto3,oneof" json:"epoch,omitempty"`
+	Epoch github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,oneof,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
 }
 type ListValidatorBalancesRequest_Genesis struct {
 	Genesis bool `protobuf:"varint,2,opt,name=genesis,proto3,oneof" json:"genesis,omitempty"`
@@ -1201,7 +1202,7 @@ func (m *ListValidatorBalancesRequest) GetQueryFilter() isListValidatorBalancesR
 	return nil
 }
 
-func (m *ListValidatorBalancesRequest) GetEpoch() uint64 {
+func (m *ListValidatorBalancesRequest) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if x, ok := m.GetQueryFilter().(*ListValidatorBalancesRequest_Epoch); ok {
 		return x.Epoch
 	}
@@ -1252,13 +1253,13 @@ func (*ListValidatorBalancesRequest) XXX_OneofWrappers() []interface{} {
 }
 
 type ValidatorBalances struct {
-	Epoch                uint64                       `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	Balances             []*ValidatorBalances_Balance `protobuf:"bytes,2,rep,name=balances,proto3" json:"balances,omitempty"`
-	NextPageToken        string                       `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
-	TotalSize            int32                        `protobuf:"varint,4,opt,name=total_size,json=totalSize,proto3" json:"total_size,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
-	XXX_unrecognized     []byte                       `json:"-"`
-	XXX_sizecache        int32                        `json:"-"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	Balances             []*ValidatorBalances_Balance              `protobuf:"bytes,2,rep,name=balances,proto3" json:"balances,omitempty"`
+	NextPageToken        string                                    `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
+	TotalSize            int32                                     `protobuf:"varint,4,opt,name=total_size,json=totalSize,proto3" json:"total_size,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *ValidatorBalances) Reset()         { *m = ValidatorBalances{} }
@@ -1294,7 +1295,7 @@ func (m *ValidatorBalances) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_ValidatorBalances proto.InternalMessageInfo
 
-func (m *ValidatorBalances) GetEpoch() uint64 {
+func (m *ValidatorBalances) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -1448,7 +1449,7 @@ type isListValidatorsRequest_QueryFilter interface {
 }
 
 type ListValidatorsRequest_Epoch struct {
-	Epoch uint64 `protobuf:"varint,1,opt,name=epoch,proto3,oneof" json:"epoch,omitempty"`
+	Epoch github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,oneof,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
 }
 type ListValidatorsRequest_Genesis struct {
 	Genesis bool `protobuf:"varint,2,opt,name=genesis,proto3,oneof" json:"genesis,omitempty"`
@@ -1464,7 +1465,7 @@ func (m *ListValidatorsRequest) GetQueryFilter() isListValidatorsRequest_QueryFi
 	return nil
 }
 
-func (m *ListValidatorsRequest) GetEpoch() uint64 {
+func (m *ListValidatorsRequest) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if x, ok := m.GetQueryFilter().(*ListValidatorsRequest_Epoch); ok {
 		return x.Epoch
 	}
@@ -1610,13 +1611,13 @@ func (*GetValidatorRequest) XXX_OneofWrappers() []interface{} {
 }
 
 type Validators struct {
-	Epoch                uint64                           `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	ValidatorList        []*Validators_ValidatorContainer `protobuf:"bytes,2,rep,name=validator_list,json=validatorList,proto3" json:"validator_list,omitempty"`
-	NextPageToken        string                           `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
-	TotalSize            int32                            `protobuf:"varint,4,opt,name=total_size,json=totalSize,proto3" json:"total_size,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                         `json:"-"`
-	XXX_unrecognized     []byte                           `json:"-"`
-	XXX_sizecache        int32                            `json:"-"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	ValidatorList        []*Validators_ValidatorContainer          `protobuf:"bytes,2,rep,name=validator_list,json=validatorList,proto3" json:"validator_list,omitempty"`
+	NextPageToken        string                                    `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
+	TotalSize            int32                                     `protobuf:"varint,4,opt,name=total_size,json=totalSize,proto3" json:"total_size,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *Validators) Reset()         { *m = Validators{} }
@@ -1652,7 +1653,7 @@ func (m *Validators) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_Validators proto.InternalMessageInfo
 
-func (m *Validators) GetEpoch() uint64 {
+func (m *Validators) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -1785,7 +1786,7 @@ type isGetValidatorActiveSetChangesRequest_QueryFilter interface {
 }
 
 type GetValidatorActiveSetChangesRequest_Epoch struct {
-	Epoch uint64 `protobuf:"varint,1,opt,name=epoch,proto3,oneof" json:"epoch,omitempty"`
+	Epoch github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,oneof,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
 }
 type GetValidatorActiveSetChangesRequest_Genesis struct {
 	Genesis bool `protobuf:"varint,2,opt,name=genesis,proto3,oneof" json:"genesis,omitempty"`
@@ -1803,7 +1804,7 @@ func (m *GetValidatorActiveSetChangesRequest) GetQueryFilter() isGetValidatorAct
 	return nil
 }
 
-func (m *GetValidatorActiveSetChangesRequest) GetEpoch() uint64 {
+func (m *GetValidatorActiveSetChangesRequest) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if x, ok := m.GetQueryFilter().(*GetValidatorActiveSetChangesRequest_Epoch); ok {
 		return x.Epoch
 	}
@@ -1826,18 +1827,18 @@ func (*GetValidatorActiveSetChangesRequest) XXX_OneofWrappers() []interface{} {
 }
 
 type ActiveSetChanges struct {
-	Epoch                uint64   `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	ActivatedPublicKeys  [][]byte `protobuf:"bytes,2,rep,name=activated_public_keys,json=activatedPublicKeys,proto3" json:"activated_public_keys,omitempty" ssz-size:"?,48"`
-	ActivatedIndices     []uint64 `protobuf:"varint,3,rep,packed,name=activated_indices,json=activatedIndices,proto3" json:"activated_indices,omitempty"`
-	ExitedPublicKeys     [][]byte `protobuf:"bytes,4,rep,name=exited_public_keys,json=exitedPublicKeys,proto3" json:"exited_public_keys,omitempty" ssz-size:"?,48"`
-	ExitedIndices        []uint64 `protobuf:"varint,5,rep,packed,name=exited_indices,json=exitedIndices,proto3" json:"exited_indices,omitempty"`
-	SlashedPublicKeys    [][]byte `protobuf:"bytes,6,rep,name=slashed_public_keys,json=slashedPublicKeys,proto3" json:"slashed_public_keys,omitempty" ssz-size:"?,48"`
-	SlashedIndices       []uint64 `protobuf:"varint,7,rep,packed,name=slashed_indices,json=slashedIndices,proto3" json:"slashed_indices,omitempty"`
-	EjectedPublicKeys    [][]byte `protobuf:"bytes,8,rep,name=ejected_public_keys,json=ejectedPublicKeys,proto3" json:"ejected_public_keys,omitempty" ssz-size:"?,48"`
-	EjectedIndices       []uint64 `protobuf:"varint,9,rep,packed,name=ejected_indices,json=ejectedIndices,proto3" json:"ejected_indices,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	ActivatedPublicKeys  [][]byte                                  `protobuf:"bytes,2,rep,name=activated_public_keys,json=activatedPublicKeys,proto3" json:"activated_public_keys,omitempty" ssz-size:"?,48"`
+	ActivatedIndices     []uint64                                  `protobuf:"varint,3,rep,packed,name=activated_indices,json=activatedIndices,proto3" json:"activated_indices,omitempty"`
+	ExitedPublicKeys     [][]byte                                  `protobuf:"bytes,4,rep,name=exited_public_keys,json=exitedPublicKeys,proto3" json:"exited_public_keys,omitempty" ssz-size:"?,48"`
+	ExitedIndices        []uint64                                  `protobuf:"varint,5,rep,packed,name=exited_indices,json=exitedIndices,proto3" json:"exited_indices,omitempty"`
+	SlashedPublicKeys    [][]byte                                  `protobuf:"bytes,6,rep,name=slashed_public_keys,json=slashedPublicKeys,proto3" json:"slashed_public_keys,omitempty" ssz-size:"?,48"`
+	SlashedIndices       []uint64                                  `protobuf:"varint,7,rep,packed,name=slashed_indices,json=slashedIndices,proto3" json:"slashed_indices,omitempty"`
+	EjectedPublicKeys    [][]byte                                  `protobuf:"bytes,8,rep,name=ejected_public_keys,json=ejectedPublicKeys,proto3" json:"ejected_public_keys,omitempty" ssz-size:"?,48"`
+	EjectedIndices       []uint64                                  `protobuf:"varint,9,rep,packed,name=ejected_indices,json=ejectedIndices,proto3" json:"ejected_indices,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *ActiveSetChanges) Reset()         { *m = ActiveSetChanges{} }
@@ -1873,7 +1874,7 @@ func (m *ActiveSetChanges) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_ActiveSetChanges proto.InternalMessageInfo
 
-func (m *ActiveSetChanges) GetEpoch() uint64 {
+func (m *ActiveSetChanges) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -2254,7 +2255,7 @@ type isListValidatorAssignmentsRequest_QueryFilter interface {
 }
 
 type ListValidatorAssignmentsRequest_Epoch struct {
-	Epoch uint64 `protobuf:"varint,1,opt,name=epoch,proto3,oneof" json:"epoch,omitempty"`
+	Epoch github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,oneof,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
 }
 type ListValidatorAssignmentsRequest_Genesis struct {
 	Genesis bool `protobuf:"varint,2,opt,name=genesis,proto3,oneof" json:"genesis,omitempty"`
@@ -2270,7 +2271,7 @@ func (m *ListValidatorAssignmentsRequest) GetQueryFilter() isListValidatorAssign
 	return nil
 }
 
-func (m *ListValidatorAssignmentsRequest) GetEpoch() uint64 {
+func (m *ListValidatorAssignmentsRequest) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if x, ok := m.GetQueryFilter().(*ListValidatorAssignmentsRequest_Epoch); ok {
 		return x.Epoch
 	}
@@ -2321,7 +2322,7 @@ func (*ListValidatorAssignmentsRequest) XXX_OneofWrappers() []interface{} {
 }
 
 type ValidatorAssignments struct {
-	Epoch                uint64                                      `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch   `protobuf:"varint,1,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
 	Assignments          []*ValidatorAssignments_CommitteeAssignment `protobuf:"bytes,2,rep,name=assignments,proto3" json:"assignments,omitempty"`
 	NextPageToken        string                                      `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
 	TotalSize            int32                                       `protobuf:"varint,4,opt,name=total_size,json=totalSize,proto3" json:"total_size,omitempty"`
@@ -2363,7 +2364,7 @@ func (m *ValidatorAssignments) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_ValidatorAssignments proto.InternalMessageInfo
 
-func (m *ValidatorAssignments) GetEpoch() uint64 {
+func (m *ValidatorAssignments) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -2531,7 +2532,7 @@ type isGetValidatorParticipationRequest_QueryFilter interface {
 }
 
 type GetValidatorParticipationRequest_Epoch struct {
-	Epoch uint64 `protobuf:"varint,1,opt,name=epoch,proto3,oneof" json:"epoch,omitempty"`
+	Epoch github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,oneof,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
 }
 type GetValidatorParticipationRequest_Genesis struct {
 	Genesis bool `protobuf:"varint,2,opt,name=genesis,proto3,oneof" json:"genesis,omitempty"`
@@ -2547,7 +2548,7 @@ func (m *GetValidatorParticipationRequest) GetQueryFilter() isGetValidatorPartic
 	return nil
 }
 
-func (m *GetValidatorParticipationRequest) GetEpoch() uint64 {
+func (m *GetValidatorParticipationRequest) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if x, ok := m.GetQueryFilter().(*GetValidatorParticipationRequest_Epoch); ok {
 		return x.Epoch
 	}
@@ -2570,12 +2571,12 @@ func (*GetValidatorParticipationRequest) XXX_OneofWrappers() []interface{} {
 }
 
 type ValidatorParticipationResponse struct {
-	Epoch                uint64                  `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	Finalized            bool                    `protobuf:"varint,2,opt,name=finalized,proto3" json:"finalized,omitempty"`
-	Participation        *ValidatorParticipation `protobuf:"bytes,3,opt,name=participation,proto3" json:"participation,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
-	XXX_unrecognized     []byte                  `json:"-"`
-	XXX_sizecache        int32                   `json:"-"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	Finalized            bool                                      `protobuf:"varint,2,opt,name=finalized,proto3" json:"finalized,omitempty"`
+	Participation        *ValidatorParticipation                   `protobuf:"bytes,3,opt,name=participation,proto3" json:"participation,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *ValidatorParticipationResponse) Reset()         { *m = ValidatorParticipationResponse{} }
@@ -2611,7 +2612,7 @@ func (m *ValidatorParticipationResponse) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_ValidatorParticipationResponse proto.InternalMessageInfo
 
-func (m *ValidatorParticipationResponse) GetEpoch() uint64 {
+func (m *ValidatorParticipationResponse) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -2845,12 +2846,12 @@ func (m *SubmitSlashingResponse) GetSlashedIndices() []uint64 {
 }
 
 type IndividualVotesRequest struct {
-	Epoch                uint64   `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	PublicKeys           [][]byte `protobuf:"bytes,2,rep,name=public_keys,json=publicKeys,proto3" json:"public_keys,omitempty"`
-	Indices              []uint64 `protobuf:"varint,3,rep,packed,name=indices,proto3" json:"indices,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	PublicKeys           [][]byte                                  `protobuf:"bytes,2,rep,name=public_keys,json=publicKeys,proto3" json:"public_keys,omitempty"`
+	Indices              []uint64                                  `protobuf:"varint,3,rep,packed,name=indices,proto3" json:"indices,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *IndividualVotesRequest) Reset()         { *m = IndividualVotesRequest{} }
@@ -2886,7 +2887,7 @@ func (m *IndividualVotesRequest) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_IndividualVotesRequest proto.InternalMessageInfo
 
-func (m *IndividualVotesRequest) GetEpoch() uint64 {
+func (m *IndividualVotesRequest) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -2955,24 +2956,24 @@ func (m *IndividualVotesRespond) GetIndividualVotes() []*IndividualVotesRespond_
 }
 
 type IndividualVotesRespond_IndividualVote struct {
-	Epoch                            uint64   `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	PublicKey                        []byte   `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
-	ValidatorIndex                   uint64   `protobuf:"varint,3,opt,name=validator_index,json=validatorIndex,proto3" json:"validator_index,omitempty"`
-	IsSlashed                        bool     `protobuf:"varint,4,opt,name=is_slashed,json=isSlashed,proto3" json:"is_slashed,omitempty"`
-	IsWithdrawableInCurrentEpoch     bool     `protobuf:"varint,5,opt,name=is_withdrawable_in_current_epoch,json=isWithdrawableInCurrentEpoch,proto3" json:"is_withdrawable_in_current_epoch,omitempty"`
-	IsActiveInCurrentEpoch           bool     `protobuf:"varint,6,opt,name=is_active_in_current_epoch,json=isActiveInCurrentEpoch,proto3" json:"is_active_in_current_epoch,omitempty"`
-	IsActiveInPreviousEpoch          bool     `protobuf:"varint,7,opt,name=is_active_in_previous_epoch,json=isActiveInPreviousEpoch,proto3" json:"is_active_in_previous_epoch,omitempty"`
-	IsCurrentEpochAttester           bool     `protobuf:"varint,8,opt,name=is_current_epoch_attester,json=isCurrentEpochAttester,proto3" json:"is_current_epoch_attester,omitempty"`
-	IsCurrentEpochTargetAttester     bool     `protobuf:"varint,9,opt,name=is_current_epoch_target_attester,json=isCurrentEpochTargetAttester,proto3" json:"is_current_epoch_target_attester,omitempty"`
-	IsPreviousEpochAttester          bool     `protobuf:"varint,10,opt,name=is_previous_epoch_attester,json=isPreviousEpochAttester,proto3" json:"is_previous_epoch_attester,omitempty"`
-	IsPreviousEpochTargetAttester    bool     `protobuf:"varint,11,opt,name=is_previous_epoch_target_attester,json=isPreviousEpochTargetAttester,proto3" json:"is_previous_epoch_target_attester,omitempty"`
-	IsPreviousEpochHeadAttester      bool     `protobuf:"varint,12,opt,name=is_previous_epoch_head_attester,json=isPreviousEpochHeadAttester,proto3" json:"is_previous_epoch_head_attester,omitempty"`
-	CurrentEpochEffectiveBalanceGwei uint64   `protobuf:"varint,13,opt,name=current_epoch_effective_balance_gwei,json=currentEpochEffectiveBalanceGwei,proto3" json:"current_epoch_effective_balance_gwei,omitempty"`
-	InclusionSlot                    uint64   `protobuf:"varint,14,opt,name=inclusion_slot,json=inclusionSlot,proto3" json:"inclusion_slot,omitempty"`
-	InclusionDistance                uint64   `protobuf:"varint,15,opt,name=inclusion_distance,json=inclusionDistance,proto3" json:"inclusion_distance,omitempty"`
-	XXX_NoUnkeyedLiteral             struct{} `json:"-"`
-	XXX_unrecognized                 []byte   `json:"-"`
-	XXX_sizecache                    int32    `json:"-"`
+	Epoch                            github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	PublicKey                        []byte                                    `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
+	ValidatorIndex                   uint64                                    `protobuf:"varint,3,opt,name=validator_index,json=validatorIndex,proto3" json:"validator_index,omitempty"`
+	IsSlashed                        bool                                      `protobuf:"varint,4,opt,name=is_slashed,json=isSlashed,proto3" json:"is_slashed,omitempty"`
+	IsWithdrawableInCurrentEpoch     bool                                      `protobuf:"varint,5,opt,name=is_withdrawable_in_current_epoch,json=isWithdrawableInCurrentEpoch,proto3" json:"is_withdrawable_in_current_epoch,omitempty"`
+	IsActiveInCurrentEpoch           bool                                      `protobuf:"varint,6,opt,name=is_active_in_current_epoch,json=isActiveInCurrentEpoch,proto3" json:"is_active_in_current_epoch,omitempty"`
+	IsActiveInPreviousEpoch          bool                                      `protobuf:"varint,7,opt,name=is_active_in_previous_epoch,json=isActiveInPreviousEpoch,proto3" json:"is_active_in_previous_epoch,omitempty"`
+	IsCurrentEpochAttester           bool                                      `protobuf:"varint,8,opt,name=is_current_epoch_attester,json=isCurrentEpochAttester,proto3" json:"is_current_epoch_attester,omitempty"`
+	IsCurrentEpochTargetAttester     bool                                      `protobuf:"varint,9,opt,name=is_current_epoch_target_attester,json=isCurrentEpochTargetAttester,proto3" json:"is_current_epoch_target_attester,omitempty"`
+	IsPreviousEpochAttester          bool                                      `protobuf:"varint,10,opt,name=is_previous_epoch_attester,json=isPreviousEpochAttester,proto3" json:"is_previous_epoch_attester,omitempty"`
+	IsPreviousEpochTargetAttester    bool                                      `protobuf:"varint,11,opt,name=is_previous_epoch_target_attester,json=isPreviousEpochTargetAttester,proto3" json:"is_previous_epoch_target_attester,omitempty"`
+	IsPreviousEpochHeadAttester      bool                                      `protobuf:"varint,12,opt,name=is_previous_epoch_head_attester,json=isPreviousEpochHeadAttester,proto3" json:"is_previous_epoch_head_attester,omitempty"`
+	CurrentEpochEffectiveBalanceGwei uint64                                    `protobuf:"varint,13,opt,name=current_epoch_effective_balance_gwei,json=currentEpochEffectiveBalanceGwei,proto3" json:"current_epoch_effective_balance_gwei,omitempty"`
+	InclusionSlot                    uint64                                    `protobuf:"varint,14,opt,name=inclusion_slot,json=inclusionSlot,proto3" json:"inclusion_slot,omitempty"`
+	InclusionDistance                uint64                                    `protobuf:"varint,15,opt,name=inclusion_distance,json=inclusionDistance,proto3" json:"inclusion_distance,omitempty"`
+	XXX_NoUnkeyedLiteral             struct{}                                  `json:"-"`
+	XXX_unrecognized                 []byte                                    `json:"-"`
+	XXX_sizecache                    int32                                     `json:"-"`
 }
 
 func (m *IndividualVotesRespond_IndividualVote) Reset()         { *m = IndividualVotesRespond_IndividualVote{} }
@@ -3008,7 +3009,7 @@ func (m *IndividualVotesRespond_IndividualVote) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_IndividualVotesRespond_IndividualVote proto.InternalMessageInfo
 
-func (m *IndividualVotesRespond_IndividualVote) GetEpoch() uint64 {
+func (m *IndividualVotesRespond_IndividualVote) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -3114,12 +3115,12 @@ func (m *IndividualVotesRespond_IndividualVote) GetInclusionDistance() uint64 {
 }
 
 type WeakSubjectivityCheckpoint struct {
-	BlockRoot            []byte   `protobuf:"bytes,1,opt,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"`
-	StateRoot            []byte   `protobuf:"bytes,2,opt,name=state_root,json=stateRoot,proto3" json:"state_root,omitempty"`
-	Epoch                uint64   `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	BlockRoot            []byte                                    `protobuf:"bytes,1,opt,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"`
+	StateRoot            []byte                                    `protobuf:"bytes,2,opt,name=state_root,json=stateRoot,proto3" json:"state_root,omitempty"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,3,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *WeakSubjectivityCheckpoint) Reset()         { *m = WeakSubjectivityCheckpoint{} }
@@ -3169,7 +3170,7 @@ func (m *WeakSubjectivityCheckpoint) GetStateRoot() []byte {
 	return nil
 }
 
-func (m *WeakSubjectivityCheckpoint) GetEpoch() uint64 {
+func (m *WeakSubjectivityCheckpoint) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -3224,217 +3225,221 @@ func init() {
 func init() { proto.RegisterFile("eth/v1alpha1/beacon_chain.proto", fileDescriptor_e33ad64d6ced77c1) }
 
 var fileDescriptor_e33ad64d6ced77c1 = []byte{
-	// 3355 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5b, 0xcb, 0x6f, 0x1b, 0xd7,
-	0xd5, 0xf7, 0x50, 0x0f, 0x8b, 0x47, 0x12, 0x29, 0x5d, 0xc9, 0x32, 0x3d, 0x96, 0x2c, 0x7a, 0xfc,
-	0x90, 0x6c, 0x47, 0xa4, 0x2c, 0x3b, 0x8e, 0xe3, 0x18, 0xc9, 0x27, 0xc9, 0x8a, 0xec, 0x2f, 0xfe,
-	0xbe, 0xa8, 0x23, 0xc7, 0x41, 0x1b, 0x03, 0x83, 0x21, 0x75, 0x45, 0x5e, 0x9b, 0x9c, 0xa1, 0x67,
-	0x86, 0xb2, 0x65, 0xb4, 0x9b, 0xa6, 0xe8, 0x1f, 0x90, 0x14, 0x5d, 0x74, 0x51, 0x34, 0x68, 0x0b,
-	0x24, 0x2d, 0x0a, 0x14, 0x5d, 0xb4, 0x8b, 0x2c, 0xba, 0x69, 0x8b, 0xb6, 0xab, 0x02, 0x45, 0xb7,
-	0x41, 0x11, 0x64, 0x55, 0xa0, 0x05, 0x1a, 0xf4, 0x0f, 0x28, 0xee, 0x63, 0x66, 0xee, 0xbc, 0x48,
-	0x19, 0x51, 0x81, 0xa0, 0x2b, 0x71, 0xee, 0x3d, 0x8f, 0xdf, 0x3d, 0xf7, 0xcc, 0xb9, 0xe7, 0x9e,
-	0x33, 0x82, 0x79, 0xec, 0x35, 0xab, 0x7b, 0x97, 0xcd, 0x56, 0xa7, 0x69, 0x5e, 0xae, 0xd6, 0xb0,
-	0x59, 0xb7, 0x2d, 0xa3, 0xde, 0x34, 0x89, 0x55, 0xe9, 0x38, 0xb6, 0x67, 0xa3, 0x63, 0xd8, 0x6b,
-	0x62, 0x07, 0x77, 0xdb, 0x15, 0xec, 0x35, 0x2b, 0x3e, 0xa5, 0xba, 0xd4, 0x20, 0x5e, 0xb3, 0x5b,
-	0xab, 0xd4, 0xed, 0x76, 0xb5, 0x61, 0x37, 0xec, 0x2a, 0xa3, 0xae, 0x75, 0x77, 0xd9, 0x13, 0x7b,
-	0x60, 0xbf, 0xb8, 0x14, 0x75, 0xb6, 0x61, 0xdb, 0x8d, 0x16, 0xae, 0x9a, 0x1d, 0x52, 0x35, 0x2d,
-	0xcb, 0xf6, 0x4c, 0x8f, 0xd8, 0x96, 0x2b, 0x66, 0x4f, 0x8a, 0xd9, 0x40, 0x06, 0x6e, 0x77, 0xbc,
-	0x7d, 0x31, 0x79, 0x22, 0x3e, 0x69, 0x5a, 0xfe, 0xd4, 0xa9, 0x08, 0x78, 0xd3, 0xf3, 0xb0, 0xcb,
-	0x05, 0x8b, 0xf9, 0xd4, 0xc5, 0xd5, 0x5a, 0x76, 0xfd, 0x91, 0x0f, 0x2b, 0x42, 0xb0, 0x67, 0xb6,
-	0xc8, 0x8e, 0xe9, 0xd9, 0x0e, 0x9f, 0xd5, 0x6c, 0x40, 0xf7, 0xfd, 0xa1, 0xf5, 0xa6, 0x69, 0x35,
-	0xf0, 0x36, 0xf6, 0xd0, 0x75, 0x18, 0x36, 0xeb, 0x54, 0x49, 0x49, 0x29, 0x2b, 0x8b, 0x85, 0x95,
-	0x72, 0x25, 0xd5, 0x42, 0x95, 0x6d, 0xec, 0xad, 0x32, 0x3a, 0x5d, 0xd0, 0xa3, 0x79, 0x18, 0xed,
-	0x74, 0x6b, 0x2d, 0x52, 0x37, 0x1e, 0xe1, 0x7d, 0xb7, 0x94, 0x2b, 0x0f, 0x2c, 0x8e, 0xe9, 0xc0,
-	0x87, 0xde, 0xc0, 0xfb, 0xae, 0xf6, 0x53, 0x05, 0x4e, 0xdd, 0x25, 0xae, 0x77, 0xc7, 0xda, 0xc1,
-	0x4f, 0xf1, 0xce, 0x6a, 0xb8, 0x20, 0x57, 0xc7, 0x8f, 0xbb, 0xd8, 0xf5, 0xd0, 0x0c, 0x0c, 0xe1,
-	0x8e, 0x5d, 0x6f, 0x32, 0xe5, 0x83, 0xb7, 0x8f, 0xe8, 0xfc, 0x11, 0x9d, 0x83, 0xf1, 0x06, 0xb6,
-	0xb0, 0x4b, 0x5c, 0x83, 0xcf, 0xe7, 0xca, 0xca, 0xe2, 0xc8, 0xed, 0x23, 0xfa, 0x98, 0x18, 0xde,
-	0x60, 0x64, 0x27, 0x21, 0xdf, 0x31, 0x1b, 0xd8, 0x70, 0xc9, 0x33, 0x5c, 0x1a, 0x28, 0x2b, 0x8b,
-	0x43, 0xfa, 0x08, 0x1d, 0xd8, 0x26, 0xcf, 0x30, 0x9a, 0x03, 0x60, 0x93, 0x9e, 0xfd, 0x08, 0x5b,
-	0xa5, 0xc1, 0xb2, 0xb2, 0x98, 0xd7, 0x19, 0xf9, 0x3d, 0x3a, 0xb0, 0x56, 0x80, 0xb1, 0xc7, 0x5d,
-	0xec, 0xec, 0x1b, 0xbb, 0xa4, 0xe5, 0x61, 0x47, 0xfb, 0x91, 0x02, 0xc7, 0x29, 0xda, 0x2f, 0x39,
-	0xcc, 0x8f, 0x14, 0x28, 0x25, 0x61, 0xba, 0x1d, 0xdb, 0x72, 0x31, 0x7a, 0x1d, 0xc6, 0x24, 0xb7,
-	0x71, 0x4b, 0x4a, 0x79, 0x60, 0x71, 0x74, 0x45, 0xcb, 0xd8, 0x52, 0x49, 0x84, 0x1e, 0xe1, 0x43,
-	0xe7, 0xa1, 0x68, 0xe1, 0xa7, 0x9e, 0x21, 0x01, 0xcb, 0x31, 0x60, 0xe3, 0x74, 0x78, 0xcb, 0x07,
-	0x47, 0xb1, 0x7b, 0xb6, 0x67, 0xb6, 0xe4, 0x95, 0xe5, 0xd9, 0x08, 0x5d, 0x9a, 0xf6, 0x3b, 0x05,
-	0xe6, 0x33, 0x1d, 0x40, 0x40, 0x7e, 0x00, 0xd3, 0x84, 0x4f, 0x1b, 0x29, 0xd0, 0x2f, 0x64, 0x40,
-	0x4f, 0x4a, 0xd4, 0xa7, 0x48, 0x52, 0xcb, 0x61, 0x2d, 0xe4, 0xd7, 0x0a, 0x4c, 0xd2, 0x85, 0xac,
-	0xd1, 0x97, 0x2d, 0xf0, 0x8a, 0x69, 0x18, 0x74, 0x6c, 0xdb, 0x63, 0x4e, 0x31, 0x76, 0xfb, 0x88,
-	0xce, 0x9e, 0xe8, 0xa8, 0xdb, 0xb2, 0x3d, 0xa6, 0x87, 0xba, 0x0a, 0x7b, 0x0a, 0x3d, 0x68, 0x20,
-	0xea, 0x41, 0x2a, 0x1c, 0x15, 0xae, 0xc2, 0xb6, 0x9e, 0xfa, 0x8e, 0x3f, 0x10, 0x75, 0x9b, 0xa1,
-	0x9e, 0x6e, 0x33, 0xdc, 0xcf, 0x6d, 0x7e, 0xa1, 0x00, 0x92, 0x57, 0x20, 0xac, 0xff, 0x16, 0x14,
-	0x59, 0x00, 0x59, 0xb7, 0x2d, 0xcf, 0x24, 0x16, 0x76, 0x7c, 0xc3, 0x5f, 0xca, 0x30, 0xfc, 0x1a,
-	0x8b, 0x3a, 0x6b, 0x11, 0x1e, 0x3d, 0x2e, 0xe3, 0xb0, 0xcc, 0x7e, 0x03, 0xa6, 0xb6, 0x3d, 0x07,
-	0x9b, 0xed, 0xa8, 0xdd, 0xcf, 0xc0, 0xf8, 0x1e, 0x76, 0xc8, 0x2e, 0xc1, 0x3b, 0x86, 0x6d, 0xb5,
-	0xf6, 0xd9, 0x06, 0x8c, 0xe8, 0x63, 0xfe, 0xe0, 0x9b, 0x56, 0x6b, 0x5f, 0x7b, 0x5f, 0x81, 0xe9,
-	0x34, 0xb0, 0xe8, 0x55, 0x18, 0x62, 0x70, 0x19, 0xd7, 0xe8, 0xca, 0x62, 0x56, 0xbc, 0x23, 0x0d,
-	0x0b, 0xef, 0x48, 0x12, 0x74, 0xce, 0x46, 0x31, 0xb3, 0x1f, 0x06, 0xdb, 0x7b, 0xba, 0xac, 0x31,
-	0x3d, 0xcf, 0x46, 0x74, 0xba, 0xfd, 0xb3, 0x90, 0xaf, 0x9b, 0x96, 0x6d, 0x91, 0xba, 0xd9, 0x62,
-	0x2b, 0x1a, 0xd1, 0xc3, 0x01, 0xed, 0x5f, 0x83, 0x90, 0x5f, 0xa7, 0xc7, 0xd1, 0x6d, 0x6c, 0xee,
-	0xd0, 0x0d, 0x6e, 0x62, 0x73, 0xc7, 0x60, 0xfe, 0xc2, 0x42, 0x8b, 0x3e, 0x42, 0x07, 0xb6, 0xa9,
-	0xc7, 0xcc, 0x01, 0xb0, 0xc9, 0x30, 0xb0, 0x0c, 0xea, 0x8c, 0x9c, 0xc7, 0x94, 0x97, 0xa1, 0xc8,
-	0xa6, 0x25, 0x2c, 0x54, 0xdb, 0xd8, 0xda, 0xe4, 0xe7, 0x9f, 0xcc, 0x8f, 0xbb, 0xee, 0xb3, 0x25,
-	0x6a, 0xd3, 0x1b, 0xda, 0x95, 0x15, 0x4d, 0x1f, 0xa7, 0x94, 0x6b, 0x01, 0xc4, 0x73, 0x50, 0xd8,
-	0x25, 0x96, 0xd9, 0x22, 0xcf, 0xb0, 0xd0, 0x3d, 0xc8, 0xa4, 0x8f, 0x07, 0xa3, 0x0c, 0xc0, 0x02,
-	0x14, 0x43, 0x32, 0x8e, 0x62, 0x88, 0xd1, 0x85, 0xdc, 0x1c, 0xca, 0x3a, 0x4c, 0x87, 0x84, 0x12,
-	0x9e, 0xe1, 0x2c, 0x3c, 0x28, 0x20, 0x8f, 0x80, 0x7a, 0xd8, 0x75, 0x3d, 0xbe, 0xab, 0x0c, 0xd4,
-	0x51, 0x0e, 0x2a, 0x18, 0xf5, 0x41, 0x85, 0x64, 0x1c, 0xd4, 0x08, 0x07, 0x15, 0x0c, 0x07, 0xa0,
-	0x42, 0x42, 0x09, 0x54, 0x3e, 0x13, 0x54, 0x40, 0x1e, 0x82, 0xba, 0x06, 0xc7, 0x3b, 0x0e, 0xde,
-	0x23, 0x76, 0xd7, 0x35, 0x62, 0xe8, 0x80, 0x69, 0x3d, 0xe6, 0x4f, 0xff, 0x6f, 0x04, 0xe5, 0x75,
-	0x28, 0xa5, 0xf0, 0x71, 0xb8, 0xa3, 0x8c, 0x71, 0x26, 0xc1, 0xc8, 0x61, 0xdf, 0x83, 0xb9, 0x14,
-	0x4e, 0x09, 0xff, 0x58, 0x16, 0x7e, 0x35, 0x21, 0x31, 0x58, 0x87, 0xf6, 0x0e, 0x1c, 0xa3, 0x2f,
-	0xff, 0xba, 0xdd, 0x6e, 0x13, 0xcf, 0xc3, 0xb8, 0xef, 0xc1, 0x26, 0x85, 0xa5, 0x5c, 0x2c, 0x2c,
-	0x25, 0x42, 0xcb, 0x5f, 0x06, 0x60, 0x82, 0xbf, 0x27, 0xa1, 0x7c, 0x34, 0x1d, 0x11, 0xec, 0x8b,
-	0x7d, 0x1b, 0xa0, 0x1e, 0xd0, 0xb0, 0x8c, 0x61, 0x74, 0xe5, 0xa5, 0x9e, 0x91, 0x26, 0x14, 0x59,
-	0x09, 0x7f, 0x6e, 0x58, 0x9e, 0xb3, 0xaf, 0x4b, 0xa2, 0xd0, 0x55, 0x98, 0xa1, 0x59, 0xc9, 0x1e,
-	0x36, 0x82, 0xac, 0xc7, 0xa8, 0xdb, 0x5d, 0x8b, 0xbf, 0x14, 0x83, 0xfa, 0x34, 0x9f, 0x0d, 0xf3,
-	0x1f, 0x3a, 0xa7, 0xde, 0x84, 0xf1, 0x40, 0xe8, 0x1d, 0x0f, 0xb7, 0xd1, 0x25, 0x98, 0x0c, 0xf9,
-	0x89, 0xb5, 0x43, 0xea, 0x98, 0x07, 0xc4, 0x41, 0x7d, 0x22, 0x98, 0xb8, 0xc3, 0xc7, 0xd5, 0x06,
-	0x14, 0x42, 0x48, 0xd4, 0xbc, 0xe8, 0xad, 0xc8, 0xf2, 0x78, 0x20, 0x7d, 0xf1, 0xb9, 0x97, 0x47,
-	0x91, 0xc8, 0x8b, 0x53, 0xbb, 0x50, 0x8c, 0xad, 0x1d, 0x4d, 0xc0, 0xc0, 0x23, 0xbc, 0x2f, 0x8c,
-	0x4b, 0x7f, 0xa2, 0xbb, 0x30, 0xb4, 0x67, 0xb6, 0xba, 0x98, 0xed, 0xd7, 0xe8, 0xca, 0xb5, 0xe7,
-	0xb7, 0x2a, 0x5d, 0x82, 0xce, 0x85, 0xdc, 0xc8, 0x5d, 0x57, 0xb4, 0x7f, 0x28, 0x30, 0x4b, 0xc7,
-	0x02, 0xa3, 0xad, 0x99, 0x2d, 0xd3, 0xaa, 0x7f, 0x21, 0xe7, 0x41, 0x57, 0xa3, 0x49, 0xe3, 0x00,
-	0x4d, 0x1a, 0xd7, 0xa6, 0x3e, 0xff, 0x64, 0xbe, 0x18, 0x7a, 0xf3, 0x6b, 0x2f, 0x5c, 0xbd, 0xae,
-	0xc9, 0x99, 0x24, 0x2a, 0xc1, 0x51, 0x7f, 0x37, 0x06, 0xd9, 0x6e, 0xf8, 0x8f, 0x87, 0x7a, 0x46,
-	0xfe, 0x26, 0x07, 0x93, 0x89, 0xc5, 0x66, 0x78, 0xf2, 0x5d, 0x18, 0xa9, 0x09, 0x0a, 0xe1, 0xc7,
-	0xcb, 0x19, 0x16, 0x4f, 0x48, 0xac, 0x88, 0x1f, 0x7a, 0x20, 0x21, 0xed, 0xbc, 0x1c, 0xe8, 0x7f,
-	0x5e, 0x0e, 0xc6, 0xce, 0x4b, 0xf5, 0x5d, 0x05, 0x8e, 0x0a, 0xe1, 0x68, 0x19, 0x20, 0x34, 0x34,
-	0x4f, 0x51, 0xe2, 0x51, 0x83, 0x5a, 0x39, 0x1f, 0x58, 0x99, 0x2e, 0x94, 0xa5, 0x50, 0xe2, 0xac,
-	0xe1, 0x0f, 0xd4, 0xf4, 0x02, 0xa6, 0x78, 0x95, 0xfc, 0x47, 0x34, 0x03, 0xc3, 0x34, 0xcf, 0xea,
-	0xba, 0x22, 0x69, 0x15, 0x4f, 0xda, 0xdf, 0x14, 0x1e, 0x6d, 0x82, 0x85, 0x7f, 0x21, 0x87, 0x99,
-	0xe1, 0xf7, 0x93, 0x3d, 0x2c, 0x0e, 0x53, 0xf1, 0x14, 0xdd, 0xf8, 0xc1, 0x9e, 0x1b, 0x3f, 0x14,
-	0xdb, 0xf8, 0xf8, 0xcd, 0x65, 0x38, 0x7e, 0x73, 0x91, 0xfd, 0xed, 0x68, 0xc4, 0xdf, 0x12, 0x3e,
-	0xf3, 0x18, 0xa6, 0x36, 0x71, 0xb8, 0x54, 0x69, 0xa5, 0xdc, 0x96, 0xc1, 0x4a, 0xb9, 0x35, 0x57,
-	0x22, 0xbb, 0x92, 0xcb, 0xd8, 0x95, 0xdb, 0x47, 0xa4, 0x7d, 0x49, 0xa6, 0x72, 0x39, 0x80, 0xd0,
-	0xb6, 0x19, 0xfe, 0xf9, 0x0e, 0x14, 0xc2, 0x48, 0xd6, 0x22, 0xae, 0x27, 0xbc, 0xf4, 0x6a, 0x3f,
-	0x2f, 0x75, 0x2b, 0x52, 0x90, 0xf4, 0x13, 0xbc, 0xf1, 0x40, 0x16, 0x8b, 0x73, 0x87, 0xe4, 0xae,
-	0x0f, 0xe5, 0x0b, 0x69, 0x90, 0x9f, 0x4d, 0x47, 0x4c, 0xe7, 0x1b, 0xee, 0x55, 0xc8, 0x07, 0x18,
-	0x44, 0x88, 0x2b, 0xf7, 0x5b, 0x8a, 0x1e, 0xb2, 0x68, 0x04, 0xce, 0xc8, 0xfb, 0xb4, 0xca, 0x9c,
-	0x68, 0x1b, 0x7b, 0xfc, 0x22, 0x7c, 0xa8, 0xe7, 0xe1, 0x67, 0x03, 0x30, 0x11, 0x97, 0x9f, 0xb1,
-	0x4b, 0x9b, 0x70, 0x8c, 0xb9, 0xb3, 0xe9, 0xe1, 0x1d, 0x23, 0x71, 0x99, 0x4e, 0x8f, 0x8b, 0x53,
-	0x01, 0xc7, 0x56, 0xe8, 0xb0, 0x97, 0x60, 0x32, 0x14, 0xe4, 0xbb, 0xee, 0x00, 0x3f, 0xb8, 0x82,
-	0x09, 0x71, 0x70, 0xa1, 0x55, 0x40, 0xf8, 0x29, 0x89, 0xab, 0x1c, 0xcc, 0x56, 0x39, 0xc1, 0xc9,
-	0x25, 0x7d, 0xe7, 0xa0, 0x20, 0x44, 0xf8, 0xca, 0x86, 0x98, 0xb2, 0x71, 0x3e, 0xea, 0x6b, 0x5a,
-	0x87, 0x29, 0xb7, 0x65, 0xba, 0xcd, 0x98, 0xaa, 0xe1, 0x6c, 0x55, 0x93, 0x82, 0x5e, 0xd2, 0xb5,
-	0x00, 0x45, 0x5f, 0x48, 0xf4, 0xa5, 0x2c, 0x88, 0x61, 0x49, 0x1b, 0x7e, 0x88, 0xeb, 0xf1, 0x85,
-	0x8d, 0xf4, 0xd0, 0x26, 0xe8, 0xa3, 0xda, 0x7c, 0x21, 0xbe, 0xb6, 0x3c, 0xd7, 0x26, 0x86, 0x85,
-	0x36, 0xed, 0x01, 0x9c, 0x0c, 0xdc, 0x69, 0x0b, 0x3b, 0xbb, 0xb6, 0xd3, 0x66, 0x51, 0x3d, 0xb8,
-	0xa4, 0x44, 0x62, 0x8c, 0xc2, 0x40, 0xe4, 0x4a, 0x4a, 0x56, 0x9c, 0xc9, 0x45, 0xe2, 0x8c, 0xf6,
-	0xde, 0x10, 0xcc, 0xa6, 0x8b, 0x17, 0x37, 0xb7, 0x9b, 0xa0, 0xd6, 0xbb, 0x8e, 0x83, 0x2d, 0xcf,
-	0xc0, 0xbb, 0xbb, 0x98, 0x27, 0x3f, 0xc1, 0x91, 0xc4, 0x73, 0x96, 0x92, 0xa0, 0xd8, 0xf0, 0x09,
-	0x82, 0x43, 0x6d, 0x01, 0x8a, 0xc4, 0xaa, 0xb7, 0xba, 0x2e, 0xb1, 0x2d, 0x96, 0xcf, 0xfa, 0x00,
-	0x0a, 0xc1, 0x30, 0x4d, 0x64, 0x5d, 0x54, 0x85, 0xa9, 0x90, 0x70, 0x87, 0xb8, 0x1e, 0x97, 0xcf,
-	0x5d, 0x0b, 0x05, 0x53, 0xb7, 0xfc, 0x19, 0x9a, 0x89, 0xd5, 0x6d, 0xc7, 0xc1, 0x75, 0xaf, 0xb5,
-	0x6f, 0xec, 0xd9, 0xd4, 0x8e, 0xae, 0xdd, 0x75, 0xea, 0x98, 0x39, 0xd8, 0x88, 0x3e, 0x1d, 0xcc,
-	0xde, 0xa7, 0x93, 0xdb, 0x6c, 0x2e, 0x8d, 0xcb, 0x33, 0x9d, 0x06, 0xf6, 0x98, 0x5f, 0x25, 0xb8,
-	0xee, 0xb1, 0x39, 0xb4, 0x0c, 0xd3, 0x71, 0x2e, 0x7a, 0xd3, 0x61, 0xfe, 0x35, 0xa2, 0xa3, 0x28,
-	0x0f, 0xbb, 0x71, 0x6d, 0x42, 0xd9, 0xb7, 0x91, 0x51, 0xc3, 0xbb, 0xb6, 0x83, 0x79, 0x56, 0x6e,
-	0x78, 0x8e, 0x69, 0xb9, 0x84, 0xd5, 0xc1, 0xb8, 0x73, 0xcd, 0xf9, 0x74, 0x6b, 0x8c, 0x8c, 0x65,
-	0xe7, 0xf7, 0x02, 0x22, 0xb4, 0x01, 0xf3, 0x81, 0x20, 0x73, 0xd7, 0xc3, 0x4e, 0x52, 0xce, 0x08,
-	0x93, 0x33, 0xeb, 0x93, 0xad, 0x52, 0xaa, 0xb8, 0x98, 0x25, 0x40, 0x6d, 0xe2, 0xba, 0xc4, 0x6a,
-	0x84, 0x89, 0x2b, 0x77, 0xb8, 0x31, 0x7d, 0x52, 0xcc, 0x48, 0xb1, 0x7e, 0x13, 0xca, 0xe6, 0x1e,
-	0x76, 0x68, 0xd8, 0x4d, 0xa4, 0xbb, 0xfe, 0x29, 0x4d, 0x2f, 0x26, 0x39, 0x7d, 0x4e, 0xd0, 0xad,
-	0x46, 0xf3, 0x5e, 0x3f, 0x3b, 0x88, 0xa5, 0x61, 0xa3, 0x07, 0x4a, 0xc3, 0xb4, 0x5f, 0xe5, 0xa0,
-	0x10, 0x88, 0xfa, 0x4a, 0x17, 0x77, 0x31, 0x3d, 0x4a, 0xeb, 0xcd, 0xae, 0x63, 0x19, 0x2d, 0xd2,
-	0x26, 0xfe, 0x25, 0x16, 0xd8, 0xd0, 0x5d, 0x3a, 0x82, 0xde, 0x10, 0x99, 0x39, 0x2b, 0xc8, 0xa4,
-	0xc4, 0xb8, 0x63, 0x29, 0x4a, 0x4b, 0x8a, 0x48, 0xd8, 0x19, 0x93, 0xf4, 0x72, 0xbe, 0x06, 0x2c,
-	0x14, 0x19, 0xc9, 0x14, 0x32, 0x43, 0x0c, 0x8b, 0x52, 0x92, 0x80, 0xff, 0x81, 0x59, 0x09, 0x4d,
-	0x32, 0xd7, 0xe7, 0xd9, 0xa5, 0x1a, 0xd2, 0xdc, 0x8f, 0x65, 0xfd, 0xd4, 0x53, 0x19, 0x84, 0x24,
-	0x2f, 0x8f, 0x80, 0xd3, 0x74, 0x36, 0xce, 0xa5, 0xfd, 0x53, 0x54, 0xc2, 0xc2, 0x03, 0xc8, 0x75,
-	0x49, 0xc3, 0x6a, 0x63, 0xcb, 0xfb, 0xaf, 0x4d, 0xa7, 0xff, 0x3e, 0x00, 0xd3, 0x69, 0xeb, 0xcd,
-	0x38, 0x0b, 0x4d, 0x18, 0x35, 0x43, 0x22, 0x91, 0xae, 0xbc, 0xd6, 0xef, 0x8c, 0x97, 0xe4, 0x86,
-	0x57, 0x99, 0x70, 0x50, 0x97, 0x65, 0x1e, 0x56, 0xde, 0xf2, 0x9d, 0x1c, 0x4c, 0xa5, 0xe8, 0xa2,
-	0x87, 0xb0, 0xdf, 0x71, 0x88, 0xde, 0x02, 0x07, 0xf5, 0x89, 0x5a, 0xfc, 0x82, 0xbc, 0x00, 0xc5,
-	0x80, 0xca, 0x90, 0xf3, 0xee, 0x42, 0x30, 0xcc, 0x8a, 0x9c, 0xe8, 0x0c, 0x8c, 0xf3, 0xc2, 0x28,
-	0x76, 0x78, 0xe5, 0x81, 0xa7, 0xe1, 0x63, 0xfe, 0x20, 0x2b, 0x38, 0x9c, 0x83, 0x42, 0xc7, 0xb1,
-	0x3b, 0xb6, 0x2b, 0x88, 0xfc, 0x8d, 0x1d, 0xf7, 0x47, 0x79, 0x34, 0x8f, 0xa6, 0x9f, 0x43, 0x2c,
-	0xfd, 0x9c, 0x4a, 0xa4, 0x9f, 0x25, 0x45, 0xbe, 0x16, 0x2c, 0x40, 0x31, 0xe2, 0xeb, 0xf8, 0x29,
-	0xdb, 0xfa, 0x41, 0xbd, 0x20, 0xdf, 0x88, 0xf1, 0x53, 0x6d, 0x17, 0xca, 0x72, 0x8a, 0xb5, 0x65,
-	0x3a, 0x1e, 0xa9, 0x93, 0x0e, 0xaf, 0xce, 0x1e, 0x62, 0x7e, 0xf5, 0x91, 0x02, 0xa7, 0xb2, 0xb4,
-	0x88, 0xc3, 0x31, 0xdd, 0xc3, 0x66, 0x21, 0x1f, 0x14, 0x9e, 0xb8, 0x1a, 0x3d, 0x1c, 0x40, 0xdb,
-	0x30, 0xde, 0x91, 0x85, 0x31, 0x3b, 0x8f, 0xae, 0x2c, 0xf5, 0xf3, 0xc0, 0x28, 0x82, 0xa8, 0x0c,
-	0xed, 0x1e, 0xcc, 0x48, 0xf5, 0xe8, 0x2d, 0xdb, 0x6e, 0xf9, 0x96, 0x88, 0xbc, 0x69, 0x4a, 0xcf,
-	0x37, 0x2d, 0x17, 0x7b, 0xd3, 0xb4, 0x0f, 0x15, 0x38, 0x9e, 0x10, 0xfb, 0xe5, 0x6c, 0x01, 0xbc,
-	0xa7, 0xc0, 0x98, 0x5f, 0x73, 0xb0, 0x76, 0x49, 0x03, 0x6d, 0xc2, 0x70, 0x9d, 0xfd, 0x12, 0xc8,
-	0xaa, 0x7d, 0x0a, 0x15, 0x94, 0xb4, 0xc2, 0xff, 0xf0, 0xb2, 0x8f, 0x60, 0x57, 0x5f, 0x86, 0x51,
-	0x69, 0x58, 0xae, 0x88, 0xe4, 0x79, 0x45, 0x64, 0x5a, 0xae, 0x88, 0xe4, 0xe5, 0xca, 0xc6, 0x2a,
-	0xcc, 0x6c, 0x77, 0x6b, 0x6d, 0xe2, 0x6d, 0xd3, 0x04, 0x92, 0x58, 0x8d, 0xc0, 0x7a, 0x29, 0xb9,
-	0xa6, 0x92, 0x96, 0x6b, 0x6a, 0x04, 0x66, 0xe8, 0xcf, 0x3d, 0xb2, 0xd3, 0x35, 0x5b, 0x34, 0xbf,
-	0x90, 0xba, 0x02, 0x69, 0xbe, 0xd7, 0xaf, 0x59, 0x26, 0xc7, 0xe4, 0x81, 0x68, 0x2a, 0xf8, 0x87,
-	0xa3, 0x29, 0xba, 0x28, 0xde, 0x1d, 0xd4, 0x80, 0x09, 0x12, 0xcc, 0xb0, 0x0c, 0xc8, 0xdf, 0xf0,
-	0x9b, 0xd9, 0x8d, 0x93, 0x14, 0x41, 0xb1, 0x61, 0xbd, 0x48, 0xa2, 0x64, 0xea, 0x6f, 0x87, 0xa1,
-	0x10, 0xa5, 0xc9, 0x58, 0xe7, 0x5c, 0xf2, 0x82, 0xdb, 0x27, 0x98, 0x0c, 0xa4, 0x05, 0x13, 0x2a,
-	0x87, 0xb8, 0x86, 0x30, 0x3a, 0x6f, 0x8d, 0xe8, 0x79, 0xe2, 0x6e, 0xf3, 0x01, 0xf4, 0x3a, 0x94,
-	0x89, 0x6b, 0x3c, 0x21, 0x5e, 0x73, 0xc7, 0x31, 0x9f, 0x98, 0xb5, 0x16, 0x8d, 0xa1, 0x46, 0x90,
-	0x10, 0x07, 0xc5, 0xea, 0x11, 0x7d, 0x96, 0xb8, 0x6f, 0x4b, 0x64, 0x77, 0xac, 0x75, 0x91, 0x13,
-	0x33, 0xb8, 0x37, 0x40, 0x25, 0xae, 0x9f, 0x4b, 0x25, 0x24, 0x0c, 0x33, 0x09, 0x33, 0xc4, 0xe5,
-	0x59, 0x54, 0x8c, 0xf7, 0x26, 0x9c, 0x8c, 0xf0, 0x06, 0x75, 0x5b, 0xce, 0x7c, 0x94, 0x31, 0x1f,
-	0x0f, 0x99, 0xb7, 0xc4, 0xbc, 0x5f, 0xbf, 0x3f, 0x41, 0xdc, 0xa8, 0x3e, 0xc3, 0x0f, 0xe9, 0xac,
-	0xa4, 0xcd, 0x14, 0xcb, 0x0a, 0x57, 0xc5, 0xac, 0x58, 0x7c, 0x94, 0x95, 0x67, 0xcb, 0xa1, 0x84,
-	0xbc, 0xbf, 0x78, 0x59, 0x02, 0x4f, 0x9b, 0x03, 0x39, 0xaf, 0xb0, 0xc5, 0x47, 0x61, 0x87, 0x12,
-	0xc0, 0xc7, 0x1f, 0xc1, 0x1d, 0x30, 0xdf, 0x86, 0xd3, 0x49, 0xe6, 0x38, 0x8a, 0x51, 0x26, 0x63,
-	0x2e, 0x26, 0x23, 0x06, 0xe3, 0x16, 0xcc, 0x27, 0x25, 0xb1, 0xde, 0x46, 0x20, 0x67, 0x8c, 0xc9,
-	0x39, 0x19, 0x93, 0x43, 0x33, 0xfa, 0x40, 0xca, 0xff, 0xc3, 0xd9, 0xa8, 0x45, 0x12, 0xb7, 0x22,
-	0xa3, 0xf1, 0x04, 0x93, 0xd2, 0x38, 0x73, 0xb7, 0x72, 0x5d, 0x32, 0x4b, 0xfc, 0x7a, 0xb4, 0xf9,
-	0x04, 0x13, 0x7a, 0xa2, 0x46, 0x6f, 0x48, 0xa5, 0x02, 0xef, 0x47, 0x44, 0x2e, 0x48, 0x34, 0x81,
-	0x4f, 0xde, 0x8f, 0x4a, 0x45, 0x46, 0x3a, 0x99, 0xb8, 0x1e, 0x69, 0x1d, 0x50, 0xdf, 0xc6, 0xe6,
-	0xa3, 0xed, 0x6e, 0xed, 0x21, 0x53, 0x49, 0xbc, 0xfd, 0xf5, 0x26, 0xae, 0x3f, 0xea, 0xd8, 0xc4,
-	0xf2, 0x62, 0xad, 0x25, 0x25, 0xde, 0x5a, 0x9a, 0x03, 0xa0, 0xe1, 0x19, 0x47, 0x3a, 0x4f, 0x6c,
-	0x44, 0xe7, 0x8d, 0x47, 0xb9, 0xc5, 0x28, 0x5e, 0xc8, 0x8b, 0xf7, 0x21, 0x1f, 0xb4, 0xee, 0xd1,
-	0x0c, 0xa0, 0xd5, 0x5b, 0xb7, 0x8c, 0xfb, 0xab, 0x77, 0xef, 0xdc, 0x5a, 0xbd, 0xf7, 0xa6, 0x6e,
-	0xbc, 0xb1, 0xf1, 0xd5, 0xed, 0x89, 0x23, 0xe8, 0x04, 0x1c, 0xd3, 0x37, 0xfe, 0xef, 0xcd, 0xfb,
-	0x1b, 0xf1, 0x29, 0x85, 0xb2, 0x6c, 0x6f, 0xdc, 0x8b, 0x8f, 0xe7, 0x56, 0xde, 0x9f, 0x83, 0x51,
-	0x11, 0xa3, 0x9b, 0x26, 0xb1, 0xd0, 0xf7, 0x15, 0x98, 0x88, 0xf7, 0xa5, 0x51, 0x25, 0x23, 0x0a,
-	0x65, 0xf4, 0xd9, 0xd5, 0xea, 0x81, 0xe9, 0x79, 0xbc, 0xd6, 0x2e, 0x7c, 0xf3, 0xcf, 0x9f, 0xbd,
-	0x9f, 0x3b, 0x83, 0x4e, 0x57, 0x53, 0xbe, 0x8d, 0xa8, 0x46, 0x0e, 0xb4, 0x8f, 0x45, 0x7f, 0x3f,
-	0xa5, 0x19, 0x8d, 0x5e, 0xec, 0xa1, 0x37, 0xfb, 0xeb, 0x05, 0xf5, 0xda, 0xf3, 0xb2, 0x09, 0xd4,
-	0x97, 0x19, 0xea, 0x4b, 0xe8, 0x42, 0x5f, 0xd4, 0x55, 0xd1, 0xd4, 0x46, 0xdf, 0x52, 0x00, 0xf1,
-	0x5e, 0x68, 0x04, 0xf8, 0x4c, 0x85, 0x7f, 0x4e, 0x52, 0xf1, 0x3f, 0x27, 0xa9, 0x6c, 0xb4, 0x3b,
-	0xde, 0xbe, 0x7a, 0x80, 0xf3, 0x5e, 0x5b, 0x66, 0x28, 0x2e, 0xa2, 0xc5, 0xfe, 0x28, 0x5c, 0xa6,
-	0x79, 0x59, 0x41, 0xdf, 0x53, 0xe0, 0x04, 0x87, 0x91, 0x66, 0xc6, 0x2c, 0x34, 0x07, 0xef, 0xe2,
-	0x6b, 0xd7, 0x19, 0xa8, 0x15, 0xb4, 0x7c, 0x60, 0xd3, 0x84, 0xe0, 0x7e, 0xa0, 0x40, 0x31, 0x96,
-	0x16, 0xa1, 0xa5, 0xfe, 0x86, 0x90, 0xb2, 0x32, 0xb5, 0x72, 0x50, 0x72, 0xb1, 0x93, 0x15, 0x06,
-	0x77, 0x11, 0x9d, 0xef, 0x0f, 0xb7, 0x43, 0xe1, 0x7c, 0x5b, 0x01, 0x08, 0xdb, 0xf0, 0x68, 0xb1,
-	0x87, 0x03, 0x45, 0x7a, 0xde, 0x99, 0x26, 0x4c, 0xf6, 0xf4, 0xb5, 0x33, 0x0c, 0xd3, 0x1c, 0x3a,
-	0x99, 0x8a, 0xa9, 0xc6, 0x35, 0xd3, 0xbc, 0x4c, 0xee, 0xad, 0xa3, 0x8b, 0x59, 0x7d, 0xf0, 0x64,
-	0x03, 0x5e, 0x3d, 0x70, 0xcf, 0x5c, 0xbb, 0xc8, 0xb0, 0x9c, 0x45, 0x5a, 0x0f, 0x2c, 0xe1, 0x06,
-	0x7e, 0x1d, 0x8a, 0x5c, 0x5d, 0xd8, 0x22, 0xcf, 0x72, 0xa9, 0xac, 0xe2, 0x6f, 0xc0, 0xa9, 0x2d,
-	0x31, 0xd5, 0x0b, 0xe8, 0x5c, 0xaa, 0x6a, 0xf6, 0x4d, 0x18, 0x3d, 0x64, 0x42, 0xed, 0x1d, 0x18,
-	0xdb, 0x64, 0x05, 0xdb, 0x2f, 0xac, 0xfa, 0x3c, 0x53, 0x5d, 0x46, 0xa7, 0x7a, 0xab, 0x46, 0x3f,
-	0x56, 0x60, 0x6e, 0x13, 0x7b, 0x3d, 0x4e, 0x84, 0x2c, 0x0c, 0x97, 0x33, 0x30, 0x64, 0x8b, 0xd2,
-	0x5e, 0x66, 0xa0, 0xae, 0xa0, 0xcb, 0xa9, 0xa0, 0x9e, 0x60, 0xf3, 0x91, 0xe1, 0x4a, 0x9c, 0x46,
-	0x3d, 0x44, 0xf1, 0x5d, 0x05, 0xa6, 0x99, 0xa3, 0xc5, 0x2f, 0xb1, 0x2f, 0xf4, 0xf0, 0xca, 0x44,
-	0xb3, 0x59, 0x5d, 0x38, 0x60, 0x4f, 0x52, 0x5b, 0x60, 0x50, 0x4f, 0xa3, 0xf9, 0x74, 0xfb, 0x85,
-	0xfa, 0x3f, 0x88, 0xb7, 0x9a, 0x82, 0x02, 0xe7, 0x95, 0x1e, 0xc8, 0xb2, 0x1a, 0x9a, 0x99, 0x7e,
-	0x9d, 0x60, 0xc8, 0x3a, 0x77, 0xc2, 0x1a, 0x5e, 0x35, 0xe8, 0xed, 0xbd, 0xab, 0x40, 0x21, 0xda,
-	0x0e, 0xeb, 0x69, 0xb6, 0x44, 0xd7, 0x4c, 0x3d, 0xdd, 0xb7, 0x65, 0xa3, 0x95, 0x19, 0x1c, 0x15,
-	0x95, 0xb2, 0xe0, 0xa0, 0x6f, 0x30, 0xe7, 0x0e, 0x58, 0x32, 0x5f, 0xf7, 0x94, 0x66, 0x96, 0xda,
-	0xb7, 0xd1, 0xa2, 0xcd, 0x33, 0xfd, 0x27, 0xd0, 0xf1, 0x0c, 0xfd, 0xe8, 0x97, 0x0a, 0xcc, 0xf6,
-	0xea, 0xbf, 0xa0, 0x1b, 0x07, 0xc0, 0x93, 0xd1, 0xb4, 0xc9, 0xf4, 0xab, 0x38, 0x7d, 0xd6, 0xb9,
-	0x2b, 0xed, 0x1a, 0xcf, 0xe6, 0x5d, 0xec, 0xd5, 0x05, 0xae, 0x67, 0x30, 0x29, 0x43, 0xe0, 0x45,
-	0xcf, 0xac, 0xb7, 0xf2, 0x5c, 0x3f, 0x43, 0x31, 0xf6, 0xac, 0xf0, 0x20, 0xc1, 0x78, 0xcc, 0xd4,
-	0xfc, 0x5c, 0x81, 0xe3, 0x91, 0x8a, 0x4a, 0xd8, 0x06, 0x40, 0x2b, 0x7d, 0xcb, 0x12, 0x89, 0x96,
-	0x84, 0x7a, 0xe5, 0xb9, 0x78, 0xc4, 0x69, 0xf2, 0x02, 0x03, 0x7b, 0x1e, 0x9d, 0xcd, 0x04, 0xdb,
-	0x91, 0x60, 0xfd, 0x4c, 0x7c, 0x9d, 0x98, 0x5a, 0xf7, 0xbb, 0x76, 0x10, 0xb7, 0x4f, 0x16, 0x46,
-	0xd5, 0x4b, 0xcf, 0x51, 0x04, 0x3c, 0x00, 0x5e, 0xb9, 0x22, 0xf8, 0xb1, 0x02, 0x27, 0x32, 0x8b,
-	0x56, 0xe8, 0xa5, 0x03, 0x38, 0x65, 0x5a, 0x99, 0x4b, 0x7d, 0xf1, 0xf9, 0x8a, 0x46, 0x7d, 0xb2,
-	0x09, 0xd9, 0xd6, 0x11, 0x7c, 0x2e, 0x14, 0x37, 0xb1, 0x17, 0x29, 0xaf, 0x64, 0xb9, 0xe6, 0x99,
-	0x03, 0x94, 0x59, 0xfa, 0x64, 0x0e, 0xbc, 0xee, 0x42, 0xb3, 0xac, 0x69, 0x7e, 0x4a, 0x87, 0x01,
-	0xe8, 0x8e, 0xb5, 0x6b, 0xa3, 0x0b, 0xfd, 0x16, 0x1d, 0x7c, 0x74, 0xac, 0x9e, 0xed, 0x47, 0x4a,
-	0x05, 0x6a, 0x57, 0x18, 0x9c, 0x25, 0x74, 0x29, 0x15, 0x8e, 0x64, 0x15, 0x62, 0xed, 0xda, 0xe2,
-	0x1c, 0x5f, 0x54, 0x96, 0x15, 0xf4, 0xa1, 0xe2, 0x17, 0x78, 0x56, 0x83, 0x22, 0x29, 0x2f, 0xf4,
-	0xa0, 0x85, 0x9e, 0x09, 0x5e, 0x48, 0xa8, 0x66, 0x25, 0x8e, 0xe9, 0x85, 0x23, 0xed, 0x1a, 0xc3,
-	0xba, 0x8c, 0x2a, 0xa9, 0x58, 0x5d, 0x41, 0xee, 0x56, 0xfd, 0x2b, 0x6d, 0xd5, 0x65, 0x72, 0x24,
-	0xa8, 0x5b, 0x41, 0xa5, 0xb6, 0x0f, 0xd4, 0x38, 0xe1, 0x7f, 0x0a, 0xaa, 0x5f, 0x3a, 0xf6, 0xa1,
-	0x7e, 0xa0, 0x00, 0xda, 0xc4, 0x5e, 0xac, 0x82, 0x94, 0x99, 0x61, 0xa7, 0x97, 0xc7, 0xd4, 0xa5,
-	0xe7, 0x2a, 0x4c, 0xf5, 0xc9, 0xe2, 0xe2, 0xc5, 0xaf, 0xb5, 0x1f, 0x2a, 0xbf, 0xff, 0xf4, 0x94,
-	0xf2, 0xa7, 0x4f, 0x4f, 0x29, 0x7f, 0xfd, 0xf4, 0x94, 0x02, 0x27, 0x6c, 0xa7, 0x91, 0xae, 0x6f,
-	0x6d, 0x42, 0xba, 0xbc, 0x6e, 0xd1, 0x77, 0x65, 0x4b, 0xf9, 0xda, 0x35, 0xe9, 0xbf, 0x00, 0x3a,
-	0xce, 0xbe, 0xdb, 0x36, 0x3d, 0x52, 0x6f, 0x99, 0x35, 0xb7, 0xea, 0xcb, 0x30, 0x3b, 0xc4, 0x8d,
-	0x20, 0x79, 0x05, 0x7b, 0xcd, 0x9f, 0xe4, 0x8e, 0x6d, 0xf8, 0x3a, 0x36, 0x24, 0x1d, 0x7f, 0x0c,
-	0xc7, 0x1f, 0x6c, 0x78, 0xcd, 0x07, 0xfe, 0x78, 0x6d, 0x98, 0xbd, 0x9c, 0x57, 0xfe, 0x1d, 0x00,
-	0x00, 0xff, 0xff, 0xbc, 0x47, 0xf6, 0xfb, 0xae, 0x30, 0x00, 0x00,
+	// 3411 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0x4d, 0x6c, 0x1c, 0x49,
+	0x15, 0x4e, 0x8f, 0xc7, 0x8e, 0xe7, 0xd9, 0x9e, 0xb1, 0xcb, 0x8e, 0x33, 0x99, 0xd8, 0xf1, 0xa4,
+	0xf3, 0x63, 0x27, 0x59, 0xcf, 0x38, 0x4e, 0x36, 0x9b, 0xcd, 0x46, 0xbb, 0xd8, 0x8e, 0xd7, 0x09,
+	0x1b, 0x58, 0xd3, 0xce, 0x66, 0x05, 0x44, 0x6a, 0xb5, 0xc7, 0xe5, 0x99, 0x8a, 0xc7, 0xdd, 0x93,
+	0xee, 0x1e, 0x27, 0x8e, 0xe0, 0xc2, 0xae, 0x38, 0x70, 0xdc, 0x00, 0x02, 0xc4, 0xcf, 0xae, 0x10,
+	0xd2, 0x82, 0x84, 0xb4, 0xe2, 0x00, 0x87, 0xbd, 0x23, 0xc4, 0x09, 0x69, 0x2f, 0x88, 0xc3, 0x0a,
+	0x56, 0x9c, 0x39, 0x2c, 0x1c, 0x10, 0x27, 0x54, 0x3f, 0xdd, 0x5d, 0xfd, 0x37, 0x63, 0x6f, 0xcc,
+	0x2e, 0x42, 0x9c, 0x3c, 0xfd, 0xea, 0xd5, 0x7b, 0xdf, 0xab, 0x7a, 0x55, 0xf5, 0xde, 0xab, 0x32,
+	0x4c, 0x61, 0xb7, 0x51, 0xdd, 0xb9, 0x68, 0x34, 0x5b, 0x0d, 0xe3, 0x62, 0x75, 0x1d, 0x1b, 0x35,
+	0xcb, 0xd4, 0x6b, 0x0d, 0x83, 0x98, 0x95, 0x96, 0x6d, 0xb9, 0x16, 0x3a, 0x82, 0xdd, 0x06, 0xb6,
+	0x71, 0x7b, 0xbb, 0x82, 0xdd, 0x46, 0xc5, 0xe3, 0x2c, 0xcd, 0xd6, 0x89, 0xdb, 0x68, 0xaf, 0x57,
+	0x6a, 0xd6, 0x76, 0xb5, 0x6e, 0xd5, 0xad, 0x2a, 0xe3, 0x5e, 0x6f, 0x6f, 0xb2, 0x2f, 0xf6, 0xc1,
+	0x7e, 0x71, 0x29, 0xa5, 0x89, 0xba, 0x65, 0xd5, 0x9b, 0xb8, 0x6a, 0xb4, 0x48, 0xd5, 0x30, 0x4d,
+	0xcb, 0x35, 0x5c, 0x62, 0x99, 0x8e, 0x68, 0x3d, 0x2e, 0x5a, 0x7d, 0x19, 0x78, 0xbb, 0xe5, 0xee,
+	0x8a, 0xc6, 0x13, 0x21, 0x84, 0x86, 0xeb, 0x62, 0x87, 0xf7, 0x16, 0xed, 0x89, 0x16, 0xac, 0x37,
+	0xad, 0xda, 0x96, 0xa7, 0x3b, 0xc4, 0xb0, 0x63, 0x34, 0xc9, 0x86, 0xe1, 0x5a, 0x36, 0x6f, 0x55,
+	0x2d, 0x40, 0x77, 0x3d, 0xd2, 0x52, 0xc3, 0x30, 0xeb, 0x78, 0x0d, 0xbb, 0xe8, 0x2a, 0xf4, 0x19,
+	0x35, 0xaa, 0xa4, 0xa8, 0x94, 0x95, 0x99, 0xfc, 0x7c, 0xb9, 0x92, 0x38, 0x0c, 0x95, 0x35, 0xec,
+	0x2e, 0x30, 0x3e, 0x4d, 0xf0, 0xa3, 0x29, 0x18, 0x68, 0xb5, 0xd7, 0x9b, 0xa4, 0xa6, 0x6f, 0xe1,
+	0x5d, 0xa7, 0x98, 0x29, 0xf7, 0xcc, 0x0c, 0x6a, 0xc0, 0x49, 0xaf, 0xe0, 0x5d, 0x47, 0xfd, 0x93,
+	0x02, 0x27, 0x6e, 0x13, 0xc7, 0xbd, 0x65, 0x6e, 0xe0, 0x47, 0x78, 0x63, 0x21, 0x30, 0xc8, 0xd1,
+	0xf0, 0x83, 0x36, 0x76, 0x5c, 0xb4, 0x0c, 0xbd, 0xb8, 0x65, 0xd5, 0x1a, 0x4c, 0x79, 0x76, 0x71,
+	0xf6, 0x5f, 0x1f, 0x4e, 0x9d, 0x93, 0xc6, 0xbb, 0x65, 0xef, 0x3a, 0xdb, 0x86, 0x4b, 0x6a, 0x4d,
+	0x63, 0xdd, 0xa9, 0x62, 0xb7, 0x31, 0x3f, 0xeb, 0xee, 0xb6, 0xb0, 0x53, 0x59, 0xa6, 0x9d, 0x6e,
+	0x1e, 0xd2, 0x78, 0x6f, 0x74, 0x06, 0x86, 0xea, 0xd8, 0xc4, 0x0e, 0x71, 0x74, 0x2e, 0x2e, 0x53,
+	0x56, 0x66, 0xfa, 0x6f, 0x1e, 0xd2, 0x06, 0x05, 0x99, 0xf1, 0xa3, 0xe3, 0x90, 0x6b, 0x19, 0x75,
+	0xac, 0x3b, 0xe4, 0x31, 0x2e, 0xf6, 0x94, 0x95, 0x99, 0x5e, 0xad, 0x9f, 0x12, 0xd6, 0xc8, 0x63,
+	0x8c, 0x26, 0x01, 0x58, 0xa3, 0x6b, 0x6d, 0x61, 0xb3, 0x98, 0x2d, 0x2b, 0x33, 0x39, 0x8d, 0xb1,
+	0xdf, 0xa1, 0x84, 0xc5, 0x3c, 0x0c, 0x3e, 0x68, 0x63, 0x7b, 0x57, 0xdf, 0x24, 0x4d, 0x17, 0xdb,
+	0xea, 0x07, 0x0a, 0x1c, 0xa5, 0xc6, 0xfd, 0x6f, 0x59, 0xf5, 0x73, 0x05, 0x8a, 0x71, 0xab, 0x9c,
+	0x96, 0x65, 0x3a, 0x18, 0xbd, 0x0c, 0x83, 0x92, 0x53, 0x3a, 0x45, 0xa5, 0xdc, 0x33, 0x33, 0x30,
+	0xaf, 0xa6, 0x38, 0x8c, 0x24, 0x42, 0x0b, 0xf5, 0x43, 0x67, 0xa1, 0x60, 0xe2, 0x47, 0xae, 0x2e,
+	0x01, 0xcb, 0x30, 0x60, 0x43, 0x94, 0xbc, 0xea, 0x81, 0xa3, 0xd8, 0x5d, 0xcb, 0x35, 0x9a, 0xb2,
+	0x65, 0x39, 0x46, 0xa1, 0xa6, 0xa9, 0xbf, 0x55, 0x60, 0x2a, 0xd5, 0xbd, 0x04, 0xe4, 0x7b, 0x30,
+	0x46, 0x78, 0xb3, 0x9e, 0x00, 0xfd, 0x5c, 0x0a, 0xf4, 0xb8, 0x44, 0x6d, 0x94, 0xc4, 0xb5, 0x1c,
+	0x94, 0x21, 0x7f, 0x53, 0x60, 0x84, 0x1a, 0xb2, 0x48, 0x97, 0xb2, 0xef, 0x44, 0x63, 0x90, 0xb5,
+	0x2d, 0xcb, 0x65, 0x3e, 0x34, 0x78, 0xf3, 0x90, 0xc6, 0xbe, 0x28, 0xd5, 0x69, 0x5a, 0x2e, 0xd3,
+	0x93, 0xa5, 0x54, 0xfa, 0x15, 0x38, 0x5c, 0xcf, 0x53, 0x39, 0x5c, 0x09, 0x0e, 0x0b, 0xcf, 0x62,
+	0x9e, 0x42, 0x5d, 0xcd, 0x23, 0x84, 0xbd, 0xac, 0xb7, 0xa3, 0x97, 0xf5, 0x75, 0xf3, 0xb2, 0x5f,
+	0x29, 0x80, 0x64, 0x83, 0xc5, 0x64, 0xbd, 0x06, 0x05, 0xb6, 0x9b, 0x2d, 0x59, 0xa6, 0x6b, 0x10,
+	0x13, 0xdb, 0xde, 0x3c, 0x5d, 0x48, 0x99, 0xa7, 0x45, 0xb6, 0x05, 0x2e, 0x86, 0xfa, 0x68, 0x51,
+	0x19, 0x07, 0x35, 0x4b, 0xd7, 0x60, 0x74, 0xcd, 0xb5, 0xb1, 0xb1, 0x1d, 0x9e, 0xa6, 0x53, 0x30,
+	0xb4, 0x83, 0x6d, 0xb2, 0x49, 0xf0, 0x86, 0x6e, 0x99, 0xcd, 0x5d, 0x36, 0x5f, 0xfd, 0xda, 0xa0,
+	0x47, 0x7c, 0xd5, 0x6c, 0xee, 0xaa, 0x4f, 0x14, 0x18, 0x4b, 0x02, 0x8b, 0x5e, 0x84, 0x5e, 0x06,
+	0x97, 0xf5, 0x1a, 0x98, 0x9f, 0x49, 0xdb, 0x7c, 0x49, 0xdd, 0xc4, 0x1b, 0x92, 0x04, 0x8d, 0x77,
+	0xa3, 0x98, 0xd9, 0x0f, 0x9d, 0xb9, 0x0a, 0x35, 0x6b, 0x50, 0xcb, 0x31, 0x8a, 0x46, 0xbd, 0x65,
+	0x02, 0x72, 0x35, 0xc3, 0xb4, 0x4c, 0x52, 0x33, 0x9a, 0xcc, 0xa2, 0x7e, 0x2d, 0x20, 0xa8, 0xef,
+	0xf5, 0x41, 0x6e, 0x89, 0x1e, 0x80, 0x37, 0xb1, 0xb1, 0x41, 0x27, 0xb8, 0x81, 0x8d, 0x0d, 0x9d,
+	0xb9, 0x17, 0xdb, 0xb8, 0xb4, 0x7e, 0x4a, 0x58, 0xa3, 0x0e, 0x76, 0x1b, 0x80, 0x35, 0x06, 0xfb,
+	0xd0, 0x7e, 0xbd, 0x4c, 0x63, 0xd2, 0xf9, 0x8e, 0xf5, 0x3c, 0x14, 0x98, 0x34, 0x09, 0x3a, 0x05,
+	0x37, 0xb8, 0x38, 0xf2, 0xf1, 0x87, 0x53, 0x43, 0x8e, 0xf3, 0x78, 0x96, 0x4e, 0xc1, 0x35, 0xf5,
+	0xd2, 0xbc, 0xaa, 0x0d, 0x51, 0xce, 0x45, 0xdf, 0xa2, 0x33, 0x90, 0xdf, 0x24, 0xa6, 0xd1, 0x24,
+	0x8f, 0xb1, 0x80, 0x9a, 0x65, 0x50, 0x87, 0x7c, 0x2a, 0xc3, 0x7b, 0x17, 0x0a, 0x01, 0x1b, 0x07,
+	0xdd, 0xfb, 0x49, 0x40, 0x07, 0xca, 0x38, 0xf2, 0x25, 0x18, 0x0b, 0xe4, 0x4a, 0xf0, 0xfb, 0xd2,
+	0xe0, 0x23, 0x9f, 0x3d, 0x64, 0xc3, 0xfd, 0xb6, 0xe3, 0x72, 0x9f, 0x61, 0x36, 0x1c, 0xe6, 0x36,
+	0xf8, 0x54, 0xcf, 0x86, 0x80, 0x8d, 0xdb, 0xd0, 0xff, 0x89, 0x6c, 0xf0, 0xa5, 0xf8, 0x36, 0x04,
+	0x72, 0x25, 0x1b, 0x72, 0xa9, 0x36, 0xf8, 0xec, 0x81, 0x0d, 0x57, 0xe0, 0x68, 0xcb, 0xc6, 0x3b,
+	0xc4, 0x6a, 0x3b, 0x7a, 0xc4, 0x18, 0x60, 0xc6, 0x1c, 0xf1, 0x9a, 0x3f, 0x1f, 0x32, 0xaa, 0x0e,
+	0xc5, 0x84, 0x7e, 0xdc, 0xba, 0x81, 0x4f, 0x62, 0xdd, 0x78, 0x4c, 0x0f, 0xb7, 0xf2, 0x0e, 0x4c,
+	0x26, 0x28, 0x92, 0xcc, 0x1d, 0x4c, 0x33, 0xb7, 0x14, 0x93, 0xe8, 0x9b, 0xad, 0x7e, 0x4b, 0x81,
+	0x23, 0x74, 0xe7, 0x5a, 0xb2, 0xb6, 0xb7, 0x89, 0xeb, 0x62, 0x7c, 0xd0, 0x67, 0xbe, 0xb4, 0x05,
+	0x67, 0x22, 0x5b, 0x70, 0x6c, 0x1b, 0x7d, 0x33, 0x0b, 0xc3, 0x7c, 0x4f, 0x08, 0xe0, 0xa0, 0xa5,
+	0xa7, 0xc1, 0xe1, 0xa1, 0x78, 0x1d, 0xa0, 0xe6, 0x8b, 0x64, 0x91, 0xdd, 0xc0, 0xfc, 0x73, 0x1d,
+	0x37, 0xe1, 0x00, 0x41, 0x25, 0xf8, 0xb9, 0x6c, 0xba, 0xf6, 0xae, 0x26, 0x89, 0x42, 0x97, 0x61,
+	0x9c, 0x46, 0x8f, 0x3b, 0x58, 0xf7, 0xa3, 0x53, 0xbd, 0x66, 0xb5, 0x4d, 0xbe, 0x01, 0x64, 0xb5,
+	0x31, 0xde, 0x1a, 0xc4, 0xa9, 0xb4, 0xad, 0x74, 0x1d, 0x86, 0x7c, 0xa1, 0xb7, 0x5c, 0xbc, 0x8d,
+	0x2e, 0xc0, 0x48, 0xd0, 0x9f, 0x98, 0x1b, 0xa4, 0x86, 0xf9, 0x59, 0x91, 0xd5, 0x86, 0xfd, 0x86,
+	0x5b, 0x9c, 0x5e, 0xaa, 0x43, 0x3e, 0x80, 0x44, 0x27, 0x0f, 0xbd, 0x16, 0x32, 0x8f, 0x9f, 0x31,
+	0xcf, 0xee, 0xdb, 0x3c, 0x8a, 0x44, 0x36, 0xae, 0xd4, 0x86, 0x42, 0xc4, 0x76, 0x34, 0x0c, 0x3d,
+	0x5b, 0x78, 0x57, 0x6c, 0xa7, 0xf4, 0x27, 0xba, 0x0d, 0xbd, 0x3b, 0x46, 0xb3, 0x8d, 0xd9, 0xf4,
+	0x0e, 0xcc, 0x5f, 0xd9, 0xff, 0xa8, 0x52, 0x13, 0x34, 0x2e, 0xe4, 0x5a, 0xe6, 0xaa, 0xa2, 0xfe,
+	0x28, 0x03, 0x13, 0x94, 0xe6, 0x0f, 0xda, 0xa2, 0xd1, 0x34, 0xcc, 0xda, 0xa7, 0xe9, 0x9a, 0xe8,
+	0x72, 0x38, 0x17, 0xe8, 0xa1, 0xb9, 0xc0, 0xe2, 0xe8, 0xc7, 0x1f, 0x4e, 0x15, 0x82, 0xb5, 0xf5,
+	0xd2, 0x33, 0x97, 0xaf, 0xaa, 0x72, 0x82, 0x80, 0x8a, 0x70, 0xd8, 0x9b, 0xbc, 0x2c, 0x9b, 0x3c,
+	0xef, 0xf3, 0x40, 0xa3, 0x8d, 0xbf, 0x67, 0x60, 0x24, 0x36, 0x36, 0x07, 0xb3, 0x4e, 0x6e, 0x43,
+	0xff, 0xba, 0x10, 0x28, 0x56, 0xc9, 0x5c, 0xca, 0x7c, 0xc6, 0x00, 0x54, 0xc4, 0x0f, 0xcd, 0x97,
+	0x90, 0x14, 0xa8, 0xf4, 0x74, 0x0f, 0x54, 0xb2, 0x91, 0x40, 0xa5, 0xf4, 0x86, 0x02, 0x87, 0x85,
+	0x70, 0x34, 0x07, 0x10, 0xcc, 0x0b, 0x0f, 0x25, 0xa3, 0x5b, 0x1e, 0x9d, 0x94, 0x9c, 0x3f, 0x29,
+	0x68, 0x0c, 0x7a, 0x59, 0xa8, 0xcb, 0x0f, 0x79, 0x8d, 0x7f, 0xd0, 0x99, 0x12, 0x30, 0xc5, 0x42,
+	0xf5, 0x3e, 0xd1, 0x38, 0xf4, 0xd1, 0x78, 0xb8, 0xed, 0x88, 0xe4, 0x42, 0x7c, 0xa9, 0xdf, 0xcf,
+	0xf0, 0x9d, 0xd2, 0x37, 0xfc, 0xd3, 0x74, 0xc7, 0x71, 0x9e, 0xd4, 0xee, 0x60, 0x11, 0xf4, 0x88,
+	0xaf, 0xb0, 0x5b, 0x65, 0x3b, 0xba, 0x55, 0x6f, 0xc4, 0xad, 0xa2, 0xe9, 0x6e, 0x5f, 0x34, 0xdd,
+	0x95, 0xbd, 0xf9, 0x70, 0xc8, 0x9b, 0x63, 0x1e, 0xf9, 0x00, 0x46, 0x57, 0x70, 0x30, 0x32, 0xde,
+	0xc0, 0x8c, 0x7b, 0x43, 0xaf, 0x88, 0xe0, 0x5e, 0x0c, 0xfe, 0x7c, 0x68, 0x12, 0x33, 0x29, 0x93,
+	0x78, 0xf3, 0x90, 0x34, 0x8d, 0x31, 0x95, 0x7f, 0xc9, 0x00, 0x04, 0x53, 0x71, 0x30, 0xde, 0xff,
+	0x55, 0xc8, 0x07, 0xbb, 0x70, 0x93, 0x38, 0xae, 0x58, 0x03, 0x97, 0xbb, 0xad, 0x01, 0xa7, 0x22,
+	0x6d, 0xf0, 0x5e, 0xdc, 0x3e, 0xe4, 0xcb, 0x62, 0x7b, 0xf4, 0x01, 0x2d, 0x86, 0xfb, 0x72, 0xd1,
+	0xc3, 0x0f, 0xbb, 0xc7, 0x42, 0x23, 0xed, 0x8d, 0xf3, 0x8b, 0x90, 0xf3, 0x31, 0x88, 0xed, 0xb9,
+	0xdc, 0xcd, 0x14, 0x2d, 0xe8, 0xa2, 0x7e, 0x4f, 0x81, 0x53, 0xf2, 0xbc, 0x2e, 0x30, 0xa7, 0x5b,
+	0xc3, 0x2e, 0xaf, 0xb6, 0x7c, 0x96, 0xa1, 0xc2, 0x93, 0x2c, 0x0c, 0x47, 0xe1, 0x1c, 0x8c, 0x13,
+	0xac, 0xc0, 0x11, 0xb6, 0xb8, 0x0c, 0x17, 0x6f, 0xe8, 0xb1, 0x7a, 0x50, 0xf2, 0x19, 0x30, 0xea,
+	0xf7, 0x58, 0x0d, 0x96, 0xcf, 0x05, 0x18, 0x09, 0x04, 0x79, 0x0b, 0xa9, 0x87, 0x9f, 0xe9, 0x7e,
+	0x83, 0x38, 0xd3, 0xd1, 0x02, 0x20, 0xfc, 0x88, 0x44, 0x55, 0x66, 0xd3, 0x55, 0x0e, 0x73, 0x76,
+	0x49, 0xdf, 0x19, 0xc8, 0x0b, 0x11, 0x9e, 0xb2, 0x5e, 0xa6, 0x6c, 0x88, 0x53, 0x3d, 0x4d, 0x4b,
+	0x30, 0xea, 0x34, 0x0d, 0xa7, 0x11, 0x51, 0xd5, 0x97, 0xae, 0x6a, 0x44, 0xf0, 0x4b, 0xba, 0xa6,
+	0xa1, 0xe0, 0x09, 0x09, 0x6f, 0x11, 0x79, 0x41, 0x96, 0xb4, 0xe1, 0xfb, 0xb8, 0x16, 0x35, 0xac,
+	0xbf, 0x83, 0x36, 0xc1, 0x1f, 0xd6, 0xe6, 0x09, 0xf1, 0xb4, 0xe5, 0xb8, 0x36, 0x41, 0x16, 0xda,
+	0xd4, 0x7b, 0x70, 0xdc, 0x77, 0xd6, 0x55, 0x6c, 0x6f, 0x5a, 0xf6, 0x36, 0x3b, 0x92, 0xfc, 0xd4,
+	0x36, 0xb4, 0xe3, 0x29, 0x0c, 0x44, 0xa6, 0xa8, 0xa4, 0xed, 0x7a, 0x99, 0xd0, 0xae, 0xa7, 0xbe,
+	0xd5, 0x0b, 0x13, 0xc9, 0xe2, 0x45, 0xbe, 0x7f, 0x1d, 0x4a, 0xb5, 0xb6, 0x6d, 0x63, 0xd3, 0xd5,
+	0xf1, 0xe6, 0x26, 0xe6, 0x71, 0xa1, 0x7f, 0x9e, 0xf2, 0x70, 0xae, 0x28, 0x38, 0x96, 0x3d, 0x06,
+	0xff, 0x00, 0x9f, 0x86, 0x02, 0x31, 0x6b, 0xcd, 0xb6, 0x43, 0x2c, 0x93, 0x25, 0x1e, 0x1e, 0x80,
+	0xbc, 0x4f, 0xa6, 0x19, 0x87, 0x83, 0xaa, 0x30, 0x1a, 0x30, 0x6e, 0x10, 0xc7, 0xe5, 0xf2, 0xb9,
+	0x6b, 0x21, 0xbf, 0xe9, 0x86, 0xd7, 0x42, 0x83, 0xd4, 0x9a, 0x65, 0xdb, 0xb8, 0xe6, 0x36, 0x77,
+	0xf5, 0x1d, 0x8b, 0x8e, 0xa3, 0x63, 0xb5, 0xed, 0x1a, 0x66, 0x0e, 0xd6, 0xaf, 0x8d, 0xf9, 0xad,
+	0x77, 0x69, 0xe3, 0x1a, 0x6b, 0x4b, 0xea, 0xe5, 0x1a, 0x76, 0x1d, 0xbb, 0xcc, 0xaf, 0x62, 0xbd,
+	0xee, 0xb0, 0x36, 0x34, 0x07, 0x63, 0xd1, 0x5e, 0x34, 0xe1, 0x65, 0xfe, 0xd5, 0xaf, 0xa1, 0x70,
+	0x1f, 0x96, 0xa7, 0xaf, 0x40, 0xd9, 0x1b, 0x23, 0x7d, 0x1d, 0x6f, 0x5a, 0x36, 0xe6, 0xe9, 0x93,
+	0xee, 0xda, 0x86, 0xe9, 0x10, 0x56, 0xca, 0xe5, 0xce, 0x35, 0xe9, 0xf1, 0x2d, 0x32, 0x36, 0xb6,
+	0x6c, 0xef, 0xf8, 0x4c, 0x68, 0x19, 0xa6, 0x7c, 0x41, 0xc6, 0xa6, 0x8b, 0xed, 0xb8, 0x9c, 0x7e,
+	0x26, 0x67, 0xc2, 0x63, 0x5b, 0xa0, 0x5c, 0x51, 0x31, 0xb3, 0x80, 0xb6, 0x89, 0xe3, 0x10, 0xb3,
+	0x1e, 0xc4, 0xf4, 0xdc, 0xe1, 0x06, 0xb5, 0x11, 0xd1, 0x22, 0x9d, 0x3c, 0x2b, 0x50, 0x36, 0x76,
+	0xb0, 0x4d, 0x77, 0xf5, 0x58, 0x26, 0xe0, 0x85, 0x18, 0x34, 0x83, 0xcc, 0x68, 0x93, 0x82, 0x6f,
+	0x21, 0x9c, 0x12, 0x78, 0xa1, 0x4d, 0x24, 0xe4, 0x1c, 0xd8, 0x53, 0xc8, 0xa9, 0xfe, 0x26, 0x03,
+	0x79, 0x5f, 0xd4, 0x97, 0xda, 0xb8, 0x8d, 0xe9, 0xc1, 0x5e, 0x6b, 0xb4, 0x6d, 0x53, 0x6f, 0x92,
+	0x6d, 0xe2, 0x95, 0x3e, 0x80, 0x91, 0x6e, 0x53, 0x0a, 0x7a, 0x45, 0x24, 0x2d, 0xac, 0xea, 0x97,
+	0xb0, 0xc7, 0x1d, 0x49, 0x50, 0x5a, 0x54, 0x44, 0x2e, 0xc3, 0x3a, 0x49, 0x8b, 0xf3, 0x25, 0x60,
+	0x5b, 0x91, 0x1e, 0x0f, 0x97, 0x53, 0xc4, 0xb0, 0x5d, 0x4a, 0x12, 0xf0, 0x39, 0x98, 0x90, 0xd0,
+	0xc4, 0xd3, 0x20, 0x1e, 0x49, 0x97, 0x02, 0x9e, 0xbb, 0x91, 0x84, 0x88, 0x7a, 0x2a, 0x83, 0x10,
+	0xef, 0xcb, 0x77, 0xc0, 0x31, 0xda, 0x1a, 0xed, 0xa5, 0xbe, 0x9d, 0xe1, 0xe5, 0xd6, 0xe0, 0x78,
+	0x73, 0x1c, 0x52, 0x37, 0xb7, 0xb1, 0xe9, 0xfe, 0x3f, 0xd3, 0xe0, 0xa7, 0xec, 0x0f, 0xb3, 0x30,
+	0x96, 0x34, 0x3c, 0x07, 0x73, 0xd2, 0x1a, 0x30, 0x60, 0x04, 0x32, 0x45, 0xac, 0xf5, 0x52, 0xb7,
+	0x00, 0x45, 0x82, 0x11, 0xe4, 0x90, 0x01, 0x51, 0x93, 0x65, 0x1e, 0x54, 0xd0, 0xf5, 0xed, 0x0c,
+	0x8c, 0x26, 0xe8, 0xa2, 0x47, 0xbc, 0x77, 0xef, 0x16, 0x4e, 0xbf, 0xb3, 0xda, 0xf0, 0x7a, 0xb4,
+	0x90, 0x31, 0x0d, 0x05, 0x9f, 0x4b, 0x97, 0x53, 0x92, 0xbc, 0x4f, 0x66, 0x75, 0x7a, 0x74, 0x0a,
+	0x86, 0x78, 0x6d, 0x1f, 0xdb, 0xbc, 0x00, 0xc5, 0x33, 0x94, 0x41, 0x8f, 0xc8, 0xea, 0x4e, 0x67,
+	0x20, 0xdf, 0xb2, 0xad, 0x96, 0xe5, 0x08, 0x26, 0xcf, 0x0f, 0x86, 0x3c, 0x2a, 0x3f, 0x2b, 0xc2,
+	0xa1, 0x76, 0x2f, 0x0b, 0xb5, 0x47, 0x63, 0xa1, 0x76, 0x51, 0x91, 0x33, 0xa6, 0x69, 0x28, 0x84,
+	0x56, 0x12, 0x7e, 0xc4, 0x3c, 0x25, 0xab, 0xe5, 0xe5, 0x52, 0x04, 0x7e, 0xa4, 0x7e, 0x47, 0x81,
+	0xb2, 0x1c, 0x1f, 0xae, 0x1a, 0xb6, 0x4b, 0x6a, 0xa4, 0xc5, 0x6f, 0x18, 0x3e, 0xbb, 0xe0, 0xf0,
+	0x8f, 0x0a, 0x9c, 0x48, 0x03, 0x25, 0x8e, 0xea, 0x03, 0x71, 0xe0, 0x09, 0xc8, 0xf9, 0xd5, 0x50,
+	0x8e, 0x4a, 0x0b, 0x08, 0x68, 0x0d, 0x86, 0x5a, 0xb2, 0x6e, 0x36, 0x8d, 0x03, 0xf3, 0xb3, 0xdd,
+	0x1c, 0x3c, 0x0c, 0x38, 0x2c, 0x43, 0xbd, 0x03, 0xe3, 0xd2, 0x8d, 0xcd, 0xaa, 0x65, 0x35, 0xbd,
+	0x71, 0x0e, 0xad, 0x7b, 0xa5, 0xe3, 0xba, 0xcf, 0x44, 0xd6, 0xbd, 0xfa, 0xae, 0x02, 0x47, 0x63,
+	0x62, 0xff, 0x3b, 0x2f, 0xc9, 0xde, 0x52, 0x60, 0xd0, 0xab, 0x25, 0x99, 0x9b, 0xa4, 0x8e, 0x56,
+	0xa0, 0xaf, 0xc6, 0x7e, 0x09, 0x64, 0xd5, 0x2e, 0x05, 0x28, 0xca, 0x5a, 0xe1, 0x7f, 0x78, 0x39,
+	0x4f, 0x74, 0x2f, 0x3d, 0x0f, 0x03, 0x12, 0x59, 0xae, 0x74, 0xe5, 0x78, 0xa5, 0x6b, 0x4c, 0xae,
+	0x74, 0xe5, 0xe4, 0x8a, 0xd5, 0x02, 0x8c, 0xaf, 0xb5, 0xd7, 0xb7, 0x89, 0xbb, 0x46, 0xa3, 0x5f,
+	0x62, 0xd6, 0xfd, 0xd1, 0x4b, 0x08, 0x94, 0x95, 0xa4, 0x40, 0x99, 0xe6, 0x5a, 0xe3, 0xf4, 0xf7,
+	0x0e, 0xd9, 0x68, 0x1b, 0x4d, 0x1a, 0x1d, 0xf9, 0x87, 0xd0, 0x81, 0xf8, 0x6a, 0xb7, 0xcb, 0x6d,
+	0xf9, 0x44, 0xe9, 0x09, 0xc7, 0xbd, 0xff, 0x3c, 0x9c, 0x00, 0x8d, 0xda, 0xb7, 0x81, 0xea, 0x30,
+	0x4c, 0xfc, 0x16, 0x16, 0xee, 0x79, 0x0e, 0x72, 0x3d, 0xfd, 0x2a, 0x32, 0x41, 0x50, 0x84, 0xac,
+	0x15, 0x48, 0x98, 0xad, 0xf4, 0x8f, 0x3e, 0xc8, 0x87, 0x79, 0x0e, 0x66, 0x58, 0x26, 0xe3, 0xa5,
+	0x88, 0x2e, 0x5b, 0x61, 0x4f, 0xd2, 0x56, 0x48, 0xe5, 0x10, 0x47, 0x17, 0x73, 0xca, 0x2f, 0x1b,
+	0xb5, 0x1c, 0x71, 0xd6, 0x38, 0x01, 0xbd, 0x0c, 0x65, 0xe2, 0xe8, 0x0f, 0x89, 0xdb, 0xd8, 0xb0,
+	0x8d, 0x87, 0xc6, 0x7a, 0x93, 0x9e, 0x00, 0xba, 0x9f, 0x2c, 0xf8, 0xf7, 0x39, 0xfd, 0xda, 0x04,
+	0x71, 0x5e, 0x97, 0xd8, 0x6e, 0x99, 0x4b, 0x22, 0x5f, 0x60, 0x70, 0xaf, 0x41, 0x89, 0x38, 0x5e,
+	0x9c, 0x19, 0x93, 0xd0, 0xc7, 0x24, 0x8c, 0x13, 0x87, 0x47, 0x98, 0x91, 0xbe, 0xd7, 0xe1, 0x78,
+	0xa8, 0xaf, 0x7f, 0x9b, 0xc0, 0x3b, 0x1f, 0x66, 0x9d, 0x8f, 0x06, 0x9d, 0x57, 0x45, 0xbb, 0x77,
+	0xc5, 0x75, 0x8c, 0x38, 0x61, 0x7d, 0xba, 0x77, 0x20, 0xb1, 0x6b, 0x1c, 0xa6, 0x58, 0x56, 0xb8,
+	0x20, 0x5a, 0x85, 0xf1, 0xe1, 0xae, 0x3c, 0x93, 0x08, 0x24, 0xe4, 0x3c, 0xe3, 0x65, 0x09, 0x3c,
+	0xa5, 0xf0, 0xe5, 0xbc, 0xc0, 0x8c, 0x0f, 0xc3, 0x0e, 0x24, 0x80, 0x87, 0x3f, 0x84, 0xdb, 0xef,
+	0x7c, 0x13, 0x4e, 0xc6, 0x3b, 0x47, 0x51, 0x0c, 0x30, 0x19, 0x93, 0x11, 0x19, 0x11, 0x18, 0x37,
+	0x60, 0x2a, 0x2e, 0x89, 0x5d, 0xff, 0xf9, 0x72, 0x06, 0x99, 0x9c, 0xe3, 0x11, 0x39, 0x34, 0xdb,
+	0xf1, 0xa5, 0x7c, 0x11, 0x4e, 0x87, 0x47, 0x24, 0x96, 0x31, 0xea, 0xf5, 0x87, 0x98, 0x14, 0x87,
+	0x98, 0xbb, 0x95, 0x6b, 0xd2, 0xb0, 0x44, 0x53, 0xc7, 0x95, 0x87, 0x98, 0xd0, 0x78, 0x20, 0x9c,
+	0x3d, 0x16, 0xf3, 0xfc, 0x0e, 0x2e, 0x94, 0x3c, 0xd2, 0xe4, 0x26, 0x9e, 0x3b, 0x16, 0x0b, 0x8c,
+	0x75, 0x24, 0x96, 0x3a, 0xaa, 0x3f, 0x51, 0xa0, 0xf4, 0x3a, 0x36, 0xb6, 0xd6, 0xda, 0xeb, 0xf7,
+	0x99, 0x4e, 0xe2, 0xee, 0x2e, 0x35, 0x70, 0x6d, 0xab, 0x65, 0x11, 0xd3, 0x8d, 0xdc, 0xd6, 0x2a,
+	0xd1, 0xdb, 0xda, 0x49, 0x00, 0xba, 0xfd, 0xe3, 0xd0, 0x65, 0x2e, 0xa3, 0xb0, 0xe6, 0xa5, 0xa7,
+	0xb9, 0xe4, 0x17, 0x0b, 0xf8, 0xfc, 0x5d, 0xc8, 0xf9, 0x2f, 0x79, 0xd0, 0x38, 0xa0, 0x85, 0x1b,
+	0x37, 0xf4, 0xbb, 0x0b, 0xb7, 0x6f, 0xdd, 0x58, 0xb8, 0xf3, 0xaa, 0xa6, 0xbf, 0xb2, 0xfc, 0xe5,
+	0xb5, 0xe1, 0x43, 0xe8, 0x18, 0x1c, 0xd1, 0x96, 0xbf, 0xf0, 0xea, 0xdd, 0xe5, 0x68, 0x93, 0x42,
+	0xbb, 0xac, 0x2d, 0xdf, 0x89, 0xd2, 0x33, 0xf3, 0x4f, 0x26, 0x61, 0x40, 0x1c, 0x19, 0x0d, 0x83,
+	0x98, 0xe8, 0xc7, 0x0a, 0x0c, 0x47, 0x1f, 0x92, 0xa0, 0x4a, 0xca, 0x26, 0x97, 0xf2, 0x8e, 0xa6,
+	0x54, 0xdd, 0x33, 0x3f, 0x3f, 0x3e, 0xd4, 0x73, 0xdf, 0xf8, 0xe0, 0xaf, 0x4f, 0x32, 0xa7, 0xd0,
+	0xc9, 0x6a, 0xc2, 0x53, 0xa9, 0x6a, 0xe8, 0x7c, 0x7d, 0x5f, 0xbc, 0xdf, 0x49, 0x78, 0x3d, 0x82,
+	0x9e, 0xed, 0xa0, 0x37, 0xfd, 0x31, 0x53, 0xe9, 0xca, 0x7e, 0xbb, 0x09, 0xd4, 0x17, 0x19, 0xea,
+	0x0b, 0xe8, 0x5c, 0x57, 0xd4, 0x55, 0xf1, 0x0a, 0x05, 0xbd, 0xa9, 0x00, 0xe2, 0xaf, 0x11, 0x42,
+	0xc0, 0xc7, 0x2b, 0xfc, 0x7d, 0x59, 0xc5, 0x7b, 0x5f, 0x56, 0x59, 0xde, 0x6e, 0xb9, 0xbb, 0xa5,
+	0x3d, 0x84, 0x1f, 0xea, 0x1c, 0x43, 0x71, 0x1e, 0xcd, 0x74, 0x47, 0xe1, 0x30, 0xcd, 0x73, 0x0a,
+	0xfa, 0x81, 0x02, 0xc7, 0x38, 0x8c, 0xa4, 0x61, 0x4c, 0x43, 0xb3, 0xf7, 0x67, 0x37, 0xea, 0x55,
+	0x06, 0x6a, 0x1e, 0xcd, 0xed, 0x79, 0x68, 0x02, 0x70, 0x6f, 0x2b, 0x50, 0x88, 0x44, 0x69, 0x68,
+	0xb6, 0xfb, 0x40, 0x48, 0x41, 0x62, 0xa9, 0xb2, 0x57, 0x76, 0x31, 0x93, 0x15, 0x06, 0x77, 0x06,
+	0x9d, 0xed, 0x0e, 0xb7, 0x45, 0xe1, 0x7c, 0x53, 0x01, 0x08, 0x1e, 0xc2, 0xa0, 0x99, 0x0e, 0x0e,
+	0x14, 0x7a, 0x75, 0x92, 0x3a, 0x84, 0xf1, 0x57, 0x35, 0xea, 0x29, 0x86, 0x69, 0x12, 0x1d, 0x4f,
+	0xc4, 0xb4, 0xce, 0x35, 0xd3, 0x30, 0x51, 0x7e, 0xdd, 0x82, 0xce, 0xa7, 0xbd, 0x44, 0x89, 0x3f,
+	0x81, 0x29, 0xed, 0xf9, 0xd5, 0x8a, 0x7a, 0x9e, 0x61, 0x39, 0x8d, 0xd4, 0x0e, 0x58, 0x82, 0x09,
+	0xfc, 0x1a, 0x14, 0xb8, 0xba, 0xe0, 0x91, 0x4a, 0x9a, 0x4b, 0xa5, 0xd5, 0xe9, 0xfd, 0x9e, 0xea,
+	0x2c, 0x53, 0x3d, 0x8d, 0xce, 0x24, 0xaa, 0x66, 0xef, 0x40, 0xe9, 0xa1, 0x14, 0x68, 0x6f, 0xc1,
+	0xe0, 0x0a, 0xab, 0x95, 0x3f, 0xb5, 0xea, 0xb3, 0x4c, 0x75, 0x19, 0x9d, 0xe8, 0xac, 0x1a, 0xfd,
+	0x4c, 0x81, 0xc9, 0x15, 0xec, 0x76, 0x38, 0x40, 0xd2, 0x30, 0x5c, 0x4c, 0xc1, 0x90, 0x2e, 0x4a,
+	0x7d, 0x9e, 0x81, 0xba, 0x84, 0x2e, 0x26, 0x82, 0x7a, 0x88, 0x8d, 0x2d, 0xdd, 0x91, 0x7a, 0xea,
+	0xb5, 0x00, 0xc5, 0x77, 0x15, 0x18, 0x63, 0x8e, 0x16, 0x4d, 0xd9, 0x9f, 0xe9, 0xe0, 0x95, 0xb1,
+	0x17, 0x13, 0xa5, 0xe9, 0x3d, 0x5e, 0x7d, 0xab, 0xd3, 0x0c, 0xea, 0x49, 0x34, 0x95, 0x3c, 0x7e,
+	0x81, 0xfe, 0x77, 0x94, 0xc8, 0x9d, 0xa3, 0x5f, 0x2c, 0xbe, 0xd4, 0x01, 0x59, 0xda, 0xbd, 0x79,
+	0xaa, 0x5f, 0xc7, 0x3a, 0xa4, 0x9d, 0x3b, 0x41, 0x3d, 0xb4, 0xea, 0x5f, 0xf2, 0xbe, 0xa1, 0x40,
+	0x3e, 0x7c, 0x2f, 0xda, 0x71, 0xd8, 0x62, 0xd7, 0xa7, 0xa5, 0x93, 0x5d, 0x6f, 0xd7, 0xd4, 0x32,
+	0x83, 0x53, 0x42, 0xc5, 0x34, 0x38, 0xe8, 0xeb, 0xcc, 0xb9, 0xfd, 0x2e, 0xa9, 0xcb, 0x3d, 0xe1,
+	0x9a, 0xb2, 0xd4, 0xf5, 0x4e, 0x4c, 0x9d, 0x62, 0xfa, 0x8f, 0xa1, 0xa3, 0x29, 0xfa, 0xd1, 0xaf,
+	0x15, 0x98, 0xe8, 0x74, 0x53, 0x86, 0xae, 0xed, 0x01, 0x4f, 0xca, 0xf5, 0x5a, 0xaa, 0x5f, 0x45,
+	0xf9, 0xd3, 0xce, 0x5d, 0x69, 0xd6, 0x78, 0xf4, 0xef, 0x60, 0xb7, 0x26, 0x70, 0x3d, 0x86, 0x11,
+	0x19, 0x02, 0x2f, 0x20, 0xa7, 0xad, 0xca, 0x33, 0xdd, 0x06, 0x8a, 0x75, 0x4f, 0xdb, 0x1e, 0x24,
+	0x18, 0x0f, 0x98, 0x9a, 0xf7, 0x14, 0x38, 0x1a, 0x2a, 0x1f, 0x05, 0x57, 0x2a, 0x68, 0xbe, 0x6b,
+	0x95, 0x24, 0x76, 0xbd, 0x53, 0xba, 0xb4, 0xaf, 0x3e, 0xe2, 0x34, 0x79, 0x86, 0x81, 0x3d, 0x8b,
+	0x4e, 0xa7, 0x82, 0x6d, 0x49, 0xb0, 0x7e, 0x29, 0x9e, 0x13, 0x27, 0x16, 0x45, 0xaf, 0xec, 0xc5,
+	0xed, 0xe3, 0x45, 0xe6, 0xd2, 0x85, 0x7d, 0x94, 0x3c, 0xf7, 0x80, 0x57, 0xae, 0x7f, 0xbe, 0xaf,
+	0xc0, 0xb1, 0xd4, 0x0a, 0x1d, 0x7a, 0x6e, 0x0f, 0x4e, 0x99, 0x54, 0xd3, 0x2b, 0x3d, 0xbb, 0xbf,
+	0x1a, 0x56, 0x97, 0x68, 0x42, 0x1e, 0xeb, 0x10, 0x3e, 0x07, 0x0a, 0x2b, 0xd8, 0x0d, 0x55, 0x7b,
+	0xd2, 0x5c, 0xf3, 0xd4, 0x1e, 0xaa, 0x3e, 0x5d, 0x22, 0x07, 0x5e, 0x06, 0xa2, 0x51, 0xd6, 0x18,
+	0x3f, 0xa5, 0x83, 0x0d, 0xe8, 0x96, 0xb9, 0x69, 0xa1, 0x73, 0xdd, 0x8c, 0xf6, 0xff, 0x07, 0xa1,
+	0x74, 0xba, 0x1b, 0x2b, 0x15, 0xa8, 0x5e, 0x62, 0x70, 0x66, 0xd1, 0x85, 0x44, 0x38, 0xd2, 0xa8,
+	0x10, 0x73, 0xd3, 0x12, 0xe7, 0xf8, 0x8c, 0x32, 0xa7, 0xa0, 0x77, 0x15, 0xaf, 0xde, 0xb4, 0xe0,
+	0x97, 0x84, 0x79, 0xdd, 0x09, 0x4d, 0x77, 0x0c, 0xf0, 0x02, 0xc6, 0x52, 0x5a, 0xe0, 0x98, 0x5c,
+	0xc7, 0x52, 0xaf, 0x30, 0xac, 0x73, 0xa8, 0x92, 0x88, 0xd5, 0x11, 0xec, 0x4e, 0xd5, 0x4b, 0x81,
+	0xab, 0x0e, 0x93, 0x23, 0x41, 0x5d, 0xf5, 0xeb, 0xd2, 0x5d, 0xa0, 0x46, 0x19, 0xff, 0x53, 0x50,
+	0xbd, 0x42, 0xb9, 0x07, 0xf5, 0x1d, 0x05, 0xd0, 0x0a, 0x76, 0x23, 0x05, 0xaa, 0xd4, 0x08, 0x3b,
+	0xb9, 0x58, 0x57, 0x9a, 0xdd, 0x57, 0xdd, 0xab, 0x4b, 0x14, 0x17, 0xad, 0xad, 0x2d, 0xfe, 0x54,
+	0xf9, 0xdd, 0x47, 0x27, 0x94, 0x3f, 0x7c, 0x74, 0x42, 0xf9, 0xf3, 0x47, 0x27, 0x14, 0x38, 0x66,
+	0xd9, 0xf5, 0x64, 0x7d, 0x8b, 0xc3, 0x52, 0xf2, 0xba, 0x4a, 0xd7, 0xca, 0xaa, 0xf2, 0x95, 0x2b,
+	0x9d, 0xb2, 0x6b, 0x26, 0xc3, 0x68, 0x11, 0x27, 0x84, 0xe4, 0x05, 0xec, 0x36, 0x7e, 0x91, 0x39,
+	0xb2, 0xec, 0xe9, 0x58, 0x96, 0x74, 0xfc, 0x3e, 0xa0, 0xdf, 0x5b, 0x76, 0x1b, 0xf7, 0x3c, 0xfa,
+	0x7a, 0x1f, 0x5b, 0x9c, 0x97, 0xfe, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xc5, 0x71, 0xd6, 0x86, 0xa2,
+	0x34, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -8658,7 +8663,7 @@ func (m *ListIndexedAttestationsRequest) Unmarshal(dAtA []byte) error {
 			if wireType != 0 {
 				return fmt.Errorf("proto: wrong wireType = %d for field Epoch", wireType)
 			}
-			var v uint64
+			var v github_com_prysmaticlabs_eth2_types.Epoch
 			for shift := uint(0); ; shift += 7 {
 				if shift >= 64 {
 					return ErrIntOverflowBeaconChain
@@ -8668,7 +8673,7 @@ func (m *ListIndexedAttestationsRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= uint64(b&0x7F) << shift
+				v |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -8804,7 +8809,7 @@ func (m *ListAttestationsRequest) Unmarshal(dAtA []byte) error {
 			if wireType != 0 {
 				return fmt.Errorf("proto: wrong wireType = %d for field Epoch", wireType)
 			}
-			var v uint64
+			var v github_com_prysmaticlabs_eth2_types.Epoch
 			for shift := uint(0); ; shift += 7 {
 				if shift >= 64 {
 					return ErrIntOverflowBeaconChain
@@ -8814,7 +8819,7 @@ func (m *ListAttestationsRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= uint64(b&0x7F) << shift
+				v |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -9281,7 +9286,7 @@ func (m *ListBlocksRequest) Unmarshal(dAtA []byte) error {
 			if wireType != 0 {
 				return fmt.Errorf("proto: wrong wireType = %d for field Epoch", wireType)
 			}
-			var v uint64
+			var v github_com_prysmaticlabs_eth2_types.Epoch
 			for shift := uint(0); ; shift += 7 {
 				if shift >= 64 {
 					return ErrIntOverflowBeaconChain
@@ -9291,7 +9296,7 @@ func (m *ListBlocksRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= uint64(b&0x7F) << shift
+				v |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -9813,7 +9818,7 @@ func (m *ChainHead) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.HeadEpoch |= uint64(b&0x7F) << shift
+				m.HeadEpoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -9885,7 +9890,7 @@ func (m *ChainHead) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.FinalizedEpoch |= uint64(b&0x7F) << shift
+				m.FinalizedEpoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -9957,7 +9962,7 @@ func (m *ChainHead) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.JustifiedEpoch |= uint64(b&0x7F) << shift
+				m.JustifiedEpoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -10029,7 +10034,7 @@ func (m *ChainHead) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.PreviousJustifiedEpoch |= uint64(b&0x7F) << shift
+				m.PreviousJustifiedEpoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -10126,7 +10131,7 @@ func (m *ListCommitteesRequest) Unmarshal(dAtA []byte) error {
 			if wireType != 0 {
 				return fmt.Errorf("proto: wrong wireType = %d for field Epoch", wireType)
 			}
-			var v uint64
+			var v github_com_prysmaticlabs_eth2_types.Epoch
 			for shift := uint(0); ; shift += 7 {
 				if shift >= 64 {
 					return ErrIntOverflowBeaconChain
@@ -10136,7 +10141,7 @@ func (m *ListCommitteesRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= uint64(b&0x7F) << shift
+				v |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -10231,7 +10236,7 @@ func (m *BeaconCommittees) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -10646,7 +10651,7 @@ func (m *ListValidatorBalancesRequest) Unmarshal(dAtA []byte) error {
 			if wireType != 0 {
 				return fmt.Errorf("proto: wrong wireType = %d for field Epoch", wireType)
 			}
-			var v uint64
+			var v github_com_prysmaticlabs_eth2_types.Epoch
 			for shift := uint(0); ; shift += 7 {
 				if shift >= 64 {
 					return ErrIntOverflowBeaconChain
@@ -10656,7 +10661,7 @@ func (m *ListValidatorBalancesRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= uint64(b&0x7F) << shift
+				v |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -10910,7 +10915,7 @@ func (m *ValidatorBalances) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -11216,7 +11221,7 @@ func (m *ListValidatorsRequest) Unmarshal(dAtA []byte) error {
 			if wireType != 0 {
 				return fmt.Errorf("proto: wrong wireType = %d for field Epoch", wireType)
 			}
-			var v uint64
+			var v github_com_prysmaticlabs_eth2_types.Epoch
 			for shift := uint(0); ; shift += 7 {
 				if shift >= 64 {
 					return ErrIntOverflowBeaconChain
@@ -11226,7 +11231,7 @@ func (m *ListValidatorsRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= uint64(b&0x7F) << shift
+				v |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -11607,7 +11612,7 @@ func (m *Validators) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -11864,7 +11869,7 @@ func (m *GetValidatorActiveSetChangesRequest) Unmarshal(dAtA []byte) error {
 			if wireType != 0 {
 				return fmt.Errorf("proto: wrong wireType = %d for field Epoch", wireType)
 			}
-			var v uint64
+			var v github_com_prysmaticlabs_eth2_types.Epoch
 			for shift := uint(0); ; shift += 7 {
 				if shift >= 64 {
 					return ErrIntOverflowBeaconChain
@@ -11874,7 +11879,7 @@ func (m *GetValidatorActiveSetChangesRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= uint64(b&0x7F) << shift
+				v |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -11969,7 +11974,7 @@ func (m *ActiveSetChanges) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -13634,7 +13639,7 @@ func (m *ListValidatorAssignmentsRequest) Unmarshal(dAtA []byte) error {
 			if wireType != 0 {
 				return fmt.Errorf("proto: wrong wireType = %d for field Epoch", wireType)
 			}
-			var v uint64
+			var v github_com_prysmaticlabs_eth2_types.Epoch
 			for shift := uint(0); ; shift += 7 {
 				if shift >= 64 {
 					return ErrIntOverflowBeaconChain
@@ -13644,7 +13649,7 @@ func (m *ListValidatorAssignmentsRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= uint64(b&0x7F) << shift
+				v |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -13898,7 +13903,7 @@ func (m *ValidatorAssignments) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -14343,7 +14348,7 @@ func (m *GetValidatorParticipationRequest) Unmarshal(dAtA []byte) error {
 			if wireType != 0 {
 				return fmt.Errorf("proto: wrong wireType = %d for field Epoch", wireType)
 			}
-			var v uint64
+			var v github_com_prysmaticlabs_eth2_types.Epoch
 			for shift := uint(0); ; shift += 7 {
 				if shift >= 64 {
 					return ErrIntOverflowBeaconChain
@@ -14353,7 +14358,7 @@ func (m *GetValidatorParticipationRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= uint64(b&0x7F) << shift
+				v |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -14448,7 +14453,7 @@ func (m *ValidatorParticipationResponse) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -15132,7 +15137,7 @@ func (m *IndividualVotesRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -15401,7 +15406,7 @@ func (m *IndividualVotesRespond_IndividualVote) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -15832,7 +15837,7 @@ func (m *WeakSubjectivityCheckpoint) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
diff --git a/eth/v1alpha1/beacon_chain.proto b/eth/v1alpha1/beacon_chain.proto
index f4cd3c29..91e3f49e 100644
--- a/eth/v1alpha1/beacon_chain.proto
+++ b/eth/v1alpha1/beacon_chain.proto
@@ -18,7 +18,6 @@ package ethereum.eth.v1alpha1;
 import "github.com/gogo/protobuf/gogoproto/gogo.proto";
 import "google/api/annotations.proto";
 import "google/protobuf/empty.proto";
-import "google/protobuf/any.proto";
 
 import "eth/v1alpha1/attestation.proto";
 import "eth/v1alpha1/beacon_block.proto";
@@ -295,7 +294,7 @@ message ValidatorChangeSet {
 message ListIndexedAttestationsRequest {
     oneof query_filter {
         // Retrieve attestations by epoch processed.
-        uint64 epoch = 1;
+        uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
         // Optional criteria to retrieve genesis epoch attestations.
         bool genesis_epoch = 2;
@@ -317,7 +316,7 @@ message ListAttestationsRequest {
 
     oneof query_filter {
         // Filter attestations by epoch processed.
-        uint64 epoch = 1;
+        uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
         // Optional criteria to retrieve attestations from 0 epoch.
         bool genesis_epoch = 2;
@@ -369,7 +368,7 @@ message ListBlocksRequest {
 
         // The epoch number for which to retrieve blocks. If specified, this
         // will return all blocks found within the span of the specified epoch.
-        uint64 epoch = 3;
+        uint64 epoch = 3 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
         // Optional criteria to retrieve genesis block.
         bool genesis = 4;
@@ -421,7 +420,7 @@ message ChainHead {
     uint64 head_slot = 1;
 
     // Epoch of the head block.
-    uint64 head_epoch = 2;
+    uint64 head_epoch = 2 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // 32 byte merkle tree root of the canonical head block in the beacon node.
     bytes head_block_root = 3 [(gogoproto.moretags) = "ssz-size:\"32\""];
@@ -430,7 +429,7 @@ message ChainHead {
     uint64 finalized_slot = 4;
 
     // Epoch of the finalized block.
-    uint64 finalized_epoch = 5;
+    uint64 finalized_epoch = 5 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // Most recent 32 byte finalized block root.
     bytes finalized_block_root = 6 [(gogoproto.moretags) = "ssz-size:\"32\""];
@@ -439,7 +438,7 @@ message ChainHead {
     uint64 justified_slot = 7;
 
     // Epoch of the justified block.
-    uint64 justified_epoch = 8;
+    uint64 justified_epoch = 8 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // Most recent 32 byte justified block root.
     bytes justified_block_root = 9 [(gogoproto.moretags) = "ssz-size:\"32\""];
@@ -448,7 +447,7 @@ message ChainHead {
     uint64 previous_justified_slot = 10;
 
     // Epoch of the previous justified block.
-    uint64 previous_justified_epoch = 11;
+    uint64 previous_justified_epoch = 11 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // Previous 32 byte justified block root.
     bytes previous_justified_block_root = 12 [(gogoproto.moretags) = "ssz-size:\"32\""];
@@ -457,7 +456,7 @@ message ChainHead {
 message ListCommitteesRequest {
     oneof query_filter {
         // Optional criteria to retrieve data at a specific epoch.
-        uint64 epoch = 1;
+        uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
         // Optional criteria to retrieve genesis data.
         bool genesis = 2;
@@ -476,7 +475,7 @@ message BeaconCommittees {
     }
 
     // The epoch for which the committees in the response belong to.
-    uint64 epoch = 1;
+    uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // A map of validator committees by slot.
     map<uint64, CommitteesList> committees = 2;
@@ -488,7 +487,7 @@ message BeaconCommittees {
 message ListValidatorBalancesRequest {
     oneof query_filter {
         // Optional criteria to retrieve balances at a specific epoch.
-        uint64 epoch = 1;
+        uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
         // Optional criteria to retrieve the genesis list of balances.
         bool genesis = 2;
@@ -512,7 +511,7 @@ message ListValidatorBalancesRequest {
 
 message ValidatorBalances {
     // Epoch which the state was considered to determine the validator balances.
-    uint64 epoch = 1;
+    uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     message Balance {
         // Validator's 48 byte BLS public key.
@@ -543,7 +542,7 @@ message ListValidatorsRequest {
         // Optional criteria to retrieve validators at a specific epoch.
         // Omitting this field or setting it to zero will retrieve a response
         // with the current active validator set.
-        uint64 epoch = 1;
+        uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
         // Optional criteria to retrieve the genesis set of validators.
         bool genesis = 2;
@@ -584,7 +583,7 @@ message Validators {
     // Epoch which the state was considered to determine the active validator
     // set. This field is not optional. Zero value epoch indicates the validator
     // set is from the Ethereum 2.0 genesis set.
-    uint64 epoch = 1;
+    uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     message ValidatorContainer {
         uint64 index = 1;
@@ -605,7 +604,7 @@ message Validators {
 message GetValidatorActiveSetChangesRequest {
     oneof query_filter {
         // Optional criteria to retrieve balances at a specific epoch.
-        uint64 epoch = 1;
+        uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
         // Optional criteria to retrieve the genesis list of balances.
         bool genesis = 2;
@@ -615,7 +614,7 @@ message GetValidatorActiveSetChangesRequest {
 message ActiveSetChanges {
     // Epoch which the state was considered to determine the active validator
     // set.
-    uint64 epoch = 1;
+    uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // 48 byte validator public keys that have been activated in the given epoch.
     repeated bytes activated_public_keys = 2 [(gogoproto.moretags) = "ssz-size:\"?,48\""];
@@ -708,7 +707,7 @@ message ValidatorQueue {
 message ListValidatorAssignmentsRequest {
     oneof query_filter {
         // Epoch to validator assignments for.
-        uint64 epoch = 1;
+        uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
         // Whether or not to query for the genesis information.
         bool genesis = 2;
@@ -755,7 +754,7 @@ message ValidatorAssignments {
     }
 
     // The epoch for which this set of validator assignments is valid.
-    uint64 epoch = 1;
+    uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     repeated CommitteeAssignment assignments = 2;
 
@@ -771,7 +770,7 @@ message ValidatorAssignments {
 message GetValidatorParticipationRequest {
     oneof query_filter {
         // Epoch to request participation information.
-        uint64 epoch = 1;
+        uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
         // Whether or not to query for the genesis information.
         bool genesis = 2;
@@ -780,7 +779,7 @@ message GetValidatorParticipationRequest {
 
 message ValidatorParticipationResponse {
     // Epoch which this message is applicable.
-    uint64 epoch = 1;
+    uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // Whether or not epoch has been finalized.
     bool finalized = 2;
@@ -827,7 +826,7 @@ message SubmitSlashingResponse {
 
 message IndividualVotesRequest {
     // Epoch of the request.
-    uint64 epoch = 1;
+    uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
     // Validator 48 byte BLS public keys to filter validators for the given epoch.
     repeated bytes public_keys = 2;
     // Validator indices to filter validators for the given epoch.
@@ -837,7 +836,7 @@ message IndividualVotesRequest {
 message IndividualVotesRespond {
     message IndividualVote {
         // The epoch of the vote status request.
-        uint64 epoch = 1;
+        uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
         // The public key of the vote status request.
         bytes public_key = 2;
         // The validator index of the request.
@@ -877,5 +876,5 @@ message WeakSubjectivityCheckpoint {
     // The state root of weak subjectivity checkpoint.
     bytes state_root = 2;
     // The epoch of weak subjectivity checkpoint.
-    uint64 epoch = 3;
+    uint64 epoch = 3 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 }
diff --git a/eth/v1alpha1/generated.ssz.go b/eth/v1alpha1/generated.ssz.go
index 6ccb9b93..7415e442 100755
--- a/eth/v1alpha1/generated.ssz.go
+++ b/eth/v1alpha1/generated.ssz.go
@@ -3,744 +3,682 @@ package eth
 
 import (
 	ssz "github.com/ferranbt/fastssz"
+	github_com_prysmaticlabs_eth2_types "github.com/prysmaticlabs/eth2-types"
 )
 
-// MarshalSSZ ssz marshals the BeaconBlock object
-func (b *BeaconBlock) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(b)
+// MarshalSSZ ssz marshals the Attestation object
+func (a *Attestation) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(a)
 }
 
-// MarshalSSZTo ssz marshals the BeaconBlock object to a target array
-func (b *BeaconBlock) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the Attestation object to a target array
+func (a *Attestation) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
-	offset := int(84)
-
-	// Field (0) 'Slot'
-	dst = ssz.MarshalUint64(dst, b.Slot)
+	offset := int(228)
 
-	// Field (1) 'ProposerIndex'
-	dst = ssz.MarshalUint64(dst, b.ProposerIndex)
+	// Offset (0) 'AggregationBits'
+	dst = ssz.WriteOffset(dst, offset)
+	offset += len(a.AggregationBits)
 
-	// Field (2) 'ParentRoot'
-	if len(b.ParentRoot) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Data'
+	if a.Data == nil {
+		a.Data = new(AttestationData)
+	}
+	if dst, err = a.Data.MarshalSSZTo(dst); err != nil {
 		return
 	}
-	dst = append(dst, b.ParentRoot...)
 
-	// Field (3) 'StateRoot'
-	if len(b.StateRoot) != 32 {
+	// Field (2) 'Signature'
+	if len(a.Signature) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	dst = append(dst, b.StateRoot...)
-
-	// Offset (4) 'Body'
-	dst = ssz.WriteOffset(dst, offset)
-	if b.Body == nil {
-		b.Body = new(BeaconBlockBody)
-	}
-	offset += b.Body.SizeSSZ()
+	dst = append(dst, a.Signature...)
 
-	// Field (4) 'Body'
-	if dst, err = b.Body.MarshalSSZTo(dst); err != nil {
+	// Field (0) 'AggregationBits'
+	if len(a.AggregationBits) > 2048 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	dst = append(dst, a.AggregationBits...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the BeaconBlock object
-func (b *BeaconBlock) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the Attestation object
+func (a *Attestation) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size < 84 {
+	if size < 228 {
 		return ssz.ErrSize
 	}
 
 	tail := buf
-	var o4 uint64
-
-	// Field (0) 'Slot'
-	b.Slot = ssz.UnmarshallUint64(buf[0:8])
-
-	// Field (1) 'ProposerIndex'
-	b.ProposerIndex = ssz.UnmarshallUint64(buf[8:16])
+	var o0 uint64
 
-	// Field (2) 'ParentRoot'
-	b.ParentRoot = append(b.ParentRoot, buf[16:48]...)
+	// Offset (0) 'AggregationBits'
+	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
+		return ssz.ErrOffset
+	}
 
-	// Field (3) 'StateRoot'
-	b.StateRoot = append(b.StateRoot, buf[48:80]...)
+	// Field (1) 'Data'
+	if a.Data == nil {
+		a.Data = new(AttestationData)
+	}
+	if err = a.Data.UnmarshalSSZ(buf[4:132]); err != nil {
+		return err
+	}
 
-	// Offset (4) 'Body'
-	if o4 = ssz.ReadOffset(buf[80:84]); o4 > size {
-		return ssz.ErrOffset
+	// Field (2) 'Signature'
+	if cap(a.Signature) == 0 {
+		a.Signature = make([]byte, 0, len(buf[132:228]))
 	}
+	a.Signature = append(a.Signature, buf[132:228]...)
 
-	// Field (4) 'Body'
+	// Field (0) 'AggregationBits'
 	{
-		buf = tail[o4:]
-		if b.Body == nil {
-			b.Body = new(BeaconBlockBody)
-		}
-		if err = b.Body.UnmarshalSSZ(buf); err != nil {
+		buf = tail[o0:]
+		if err = ssz.ValidateBitlist(buf, 2048); err != nil {
 			return err
 		}
+		if cap(a.AggregationBits) == 0 {
+			a.AggregationBits = make([]byte, 0, len(buf))
+		}
+		a.AggregationBits = append(a.AggregationBits, buf...)
 	}
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the BeaconBlock object
-func (b *BeaconBlock) SizeSSZ() (size int) {
-	size = 84
+// SizeSSZ returns the ssz encoded size in bytes for the Attestation object
+func (a *Attestation) SizeSSZ() (size int) {
+	size = 228
 
-	// Field (4) 'Body'
-	if b.Body == nil {
-		b.Body = new(BeaconBlockBody)
-	}
-	size += b.Body.SizeSSZ()
+	// Field (0) 'AggregationBits'
+	size += len(a.AggregationBits)
 
 	return
 }
 
-// HashTreeRoot ssz hashes the BeaconBlock object
-func (b *BeaconBlock) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(b)
+// HashTreeRoot ssz hashes the Attestation object
+func (a *Attestation) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(a)
 }
 
-// HashTreeRootWith ssz hashes the BeaconBlock object with a hasher
-func (b *BeaconBlock) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the Attestation object with a hasher
+func (a *Attestation) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Slot'
-	hh.PutUint64(b.Slot)
-
-	// Field (1) 'ProposerIndex'
-	hh.PutUint64(b.ProposerIndex)
-
-	// Field (2) 'ParentRoot'
-	if len(b.ParentRoot) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (0) 'AggregationBits'
+	if len(a.AggregationBits) == 0 {
+		err = ssz.ErrEmptyBitlist
 		return
 	}
-	hh.PutBytes(b.ParentRoot)
+	hh.PutBitlist(a.AggregationBits, 2048)
 
-	// Field (3) 'StateRoot'
-	if len(b.StateRoot) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Data'
+	if err = a.Data.HashTreeRootWith(hh); err != nil {
 		return
 	}
-	hh.PutBytes(b.StateRoot)
 
-	// Field (4) 'Body'
-	if err = b.Body.HashTreeRootWith(hh); err != nil {
+	// Field (2) 'Signature'
+	if len(a.Signature) != 96 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	hh.PutBytes(a.Signature)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the SignedBeaconBlock object
-func (s *SignedBeaconBlock) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(s)
+// MarshalSSZ ssz marshals the AggregateAttestationAndProof object
+func (a *AggregateAttestationAndProof) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(a)
 }
 
-// MarshalSSZTo ssz marshals the SignedBeaconBlock object to a target array
-func (s *SignedBeaconBlock) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the AggregateAttestationAndProof object to a target array
+func (a *AggregateAttestationAndProof) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
-	offset := int(100)
+	offset := int(108)
 
-	// Offset (0) 'Block'
+	// Field (0) 'AggregatorIndex'
+	dst = ssz.MarshalUint64(dst, a.AggregatorIndex)
+
+	// Offset (1) 'Aggregate'
 	dst = ssz.WriteOffset(dst, offset)
-	if s.Block == nil {
-		s.Block = new(BeaconBlock)
+	if a.Aggregate == nil {
+		a.Aggregate = new(Attestation)
 	}
-	offset += s.Block.SizeSSZ()
+	offset += a.Aggregate.SizeSSZ()
 
-	// Field (1) 'Signature'
-	if len(s.Signature) != 96 {
+	// Field (2) 'SelectionProof'
+	if len(a.SelectionProof) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	dst = append(dst, s.Signature...)
+	dst = append(dst, a.SelectionProof...)
 
-	// Field (0) 'Block'
-	if dst, err = s.Block.MarshalSSZTo(dst); err != nil {
+	// Field (1) 'Aggregate'
+	if dst, err = a.Aggregate.MarshalSSZTo(dst); err != nil {
 		return
 	}
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the SignedBeaconBlock object
-func (s *SignedBeaconBlock) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the AggregateAttestationAndProof object
+func (a *AggregateAttestationAndProof) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size < 100 {
+	if size < 108 {
 		return ssz.ErrSize
 	}
 
 	tail := buf
-	var o0 uint64
+	var o1 uint64
 
-	// Offset (0) 'Block'
-	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
+	// Field (0) 'AggregatorIndex'
+	a.AggregatorIndex = ssz.UnmarshallUint64(buf[0:8])
+
+	// Offset (1) 'Aggregate'
+	if o1 = ssz.ReadOffset(buf[8:12]); o1 > size {
 		return ssz.ErrOffset
 	}
 
-	// Field (1) 'Signature'
-	s.Signature = append(s.Signature, buf[4:100]...)
+	// Field (2) 'SelectionProof'
+	if cap(a.SelectionProof) == 0 {
+		a.SelectionProof = make([]byte, 0, len(buf[12:108]))
+	}
+	a.SelectionProof = append(a.SelectionProof, buf[12:108]...)
 
-	// Field (0) 'Block'
+	// Field (1) 'Aggregate'
 	{
-		buf = tail[o0:]
-		if s.Block == nil {
-			s.Block = new(BeaconBlock)
+		buf = tail[o1:]
+		if a.Aggregate == nil {
+			a.Aggregate = new(Attestation)
 		}
-		if err = s.Block.UnmarshalSSZ(buf); err != nil {
+		if err = a.Aggregate.UnmarshalSSZ(buf); err != nil {
 			return err
 		}
 	}
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the SignedBeaconBlock object
-func (s *SignedBeaconBlock) SizeSSZ() (size int) {
-	size = 100
+// SizeSSZ returns the ssz encoded size in bytes for the AggregateAttestationAndProof object
+func (a *AggregateAttestationAndProof) SizeSSZ() (size int) {
+	size = 108
 
-	// Field (0) 'Block'
-	if s.Block == nil {
-		s.Block = new(BeaconBlock)
+	// Field (1) 'Aggregate'
+	if a.Aggregate == nil {
+		a.Aggregate = new(Attestation)
 	}
-	size += s.Block.SizeSSZ()
+	size += a.Aggregate.SizeSSZ()
 
 	return
 }
 
-// HashTreeRoot ssz hashes the SignedBeaconBlock object
-func (s *SignedBeaconBlock) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(s)
+// HashTreeRoot ssz hashes the AggregateAttestationAndProof object
+func (a *AggregateAttestationAndProof) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(a)
 }
 
-// HashTreeRootWith ssz hashes the SignedBeaconBlock object with a hasher
-func (s *SignedBeaconBlock) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the AggregateAttestationAndProof object with a hasher
+func (a *AggregateAttestationAndProof) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Block'
-	if err = s.Block.HashTreeRootWith(hh); err != nil {
+	// Field (0) 'AggregatorIndex'
+	hh.PutUint64(a.AggregatorIndex)
+
+	// Field (1) 'Aggregate'
+	if err = a.Aggregate.HashTreeRootWith(hh); err != nil {
 		return
 	}
 
-	// Field (1) 'Signature'
-	if len(s.Signature) != 96 {
+	// Field (2) 'SelectionProof'
+	if len(a.SelectionProof) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(s.Signature)
+	hh.PutBytes(a.SelectionProof)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the BeaconBlockBody object
-func (b *BeaconBlockBody) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(b)
+// MarshalSSZ ssz marshals the SignedAggregateAttestationAndProof object
+func (s *SignedAggregateAttestationAndProof) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(s)
 }
 
-// MarshalSSZTo ssz marshals the BeaconBlockBody object to a target array
-func (b *BeaconBlockBody) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the SignedAggregateAttestationAndProof object to a target array
+func (s *SignedAggregateAttestationAndProof) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
-	offset := int(220)
+	offset := int(100)
 
-	// Field (0) 'RandaoReveal'
-	if len(b.RandaoReveal) != 96 {
-		err = ssz.ErrBytesLength
-		return
+	// Offset (0) 'Message'
+	dst = ssz.WriteOffset(dst, offset)
+	if s.Message == nil {
+		s.Message = new(AggregateAttestationAndProof)
 	}
-	dst = append(dst, b.RandaoReveal...)
+	offset += s.Message.SizeSSZ()
 
-	// Field (1) 'Eth1Data'
-	if b.Eth1Data == nil {
-		b.Eth1Data = new(Eth1Data)
-	}
-	if dst, err = b.Eth1Data.MarshalSSZTo(dst); err != nil {
+	// Field (1) 'Signature'
+	if len(s.Signature) != 96 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	dst = append(dst, s.Signature...)
 
-	// Field (2) 'Graffiti'
-	if len(b.Graffiti) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (0) 'Message'
+	if dst, err = s.Message.MarshalSSZTo(dst); err != nil {
 		return
 	}
-	dst = append(dst, b.Graffiti...)
-
-	// Offset (3) 'ProposerSlashings'
-	dst = ssz.WriteOffset(dst, offset)
-	offset += len(b.ProposerSlashings) * 416
 
-	// Offset (4) 'AttesterSlashings'
-	dst = ssz.WriteOffset(dst, offset)
-	for ii := 0; ii < len(b.AttesterSlashings); ii++ {
-		offset += 4
-		offset += b.AttesterSlashings[ii].SizeSSZ()
-	}
+	return
+}
 
-	// Offset (5) 'Attestations'
-	dst = ssz.WriteOffset(dst, offset)
-	for ii := 0; ii < len(b.Attestations); ii++ {
-		offset += 4
-		offset += b.Attestations[ii].SizeSSZ()
+// UnmarshalSSZ ssz unmarshals the SignedAggregateAttestationAndProof object
+func (s *SignedAggregateAttestationAndProof) UnmarshalSSZ(buf []byte) error {
+	var err error
+	size := uint64(len(buf))
+	if size < 100 {
+		return ssz.ErrSize
 	}
 
-	// Offset (6) 'Deposits'
-	dst = ssz.WriteOffset(dst, offset)
-	offset += len(b.Deposits) * 1240
-
-	// Offset (7) 'VoluntaryExits'
-	dst = ssz.WriteOffset(dst, offset)
-	offset += len(b.VoluntaryExits) * 112
+	tail := buf
+	var o0 uint64
 
-	// Field (3) 'ProposerSlashings'
-	if len(b.ProposerSlashings) > 16 {
-		err = ssz.ErrListTooBig
-		return
-	}
-	for ii := 0; ii < len(b.ProposerSlashings); ii++ {
-		if dst, err = b.ProposerSlashings[ii].MarshalSSZTo(dst); err != nil {
-			return
-		}
+	// Offset (0) 'Message'
+	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
+		return ssz.ErrOffset
 	}
 
-	// Field (4) 'AttesterSlashings'
-	if len(b.AttesterSlashings) > 2 {
-		err = ssz.ErrListTooBig
-		return
+	// Field (1) 'Signature'
+	if cap(s.Signature) == 0 {
+		s.Signature = make([]byte, 0, len(buf[4:100]))
 	}
+	s.Signature = append(s.Signature, buf[4:100]...)
+
+	// Field (0) 'Message'
 	{
-		offset = 4 * len(b.AttesterSlashings)
-		for ii := 0; ii < len(b.AttesterSlashings); ii++ {
-			dst = ssz.WriteOffset(dst, offset)
-			offset += b.AttesterSlashings[ii].SizeSSZ()
+		buf = tail[o0:]
+		if s.Message == nil {
+			s.Message = new(AggregateAttestationAndProof)
 		}
-	}
-	for ii := 0; ii < len(b.AttesterSlashings); ii++ {
-		if dst, err = b.AttesterSlashings[ii].MarshalSSZTo(dst); err != nil {
-			return
+		if err = s.Message.UnmarshalSSZ(buf); err != nil {
+			return err
 		}
 	}
+	return err
+}
 
-	// Field (5) 'Attestations'
-	if len(b.Attestations) > 128 {
-		err = ssz.ErrListTooBig
-		return
-	}
-	{
-		offset = 4 * len(b.Attestations)
-		for ii := 0; ii < len(b.Attestations); ii++ {
-			dst = ssz.WriteOffset(dst, offset)
-			offset += b.Attestations[ii].SizeSSZ()
-		}
-	}
-	for ii := 0; ii < len(b.Attestations); ii++ {
-		if dst, err = b.Attestations[ii].MarshalSSZTo(dst); err != nil {
-			return
-		}
+// SizeSSZ returns the ssz encoded size in bytes for the SignedAggregateAttestationAndProof object
+func (s *SignedAggregateAttestationAndProof) SizeSSZ() (size int) {
+	size = 100
+
+	// Field (0) 'Message'
+	if s.Message == nil {
+		s.Message = new(AggregateAttestationAndProof)
 	}
+	size += s.Message.SizeSSZ()
 
-	// Field (6) 'Deposits'
-	if len(b.Deposits) > 16 {
-		err = ssz.ErrListTooBig
+	return
+}
+
+// HashTreeRoot ssz hashes the SignedAggregateAttestationAndProof object
+func (s *SignedAggregateAttestationAndProof) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(s)
+}
+
+// HashTreeRootWith ssz hashes the SignedAggregateAttestationAndProof object with a hasher
+func (s *SignedAggregateAttestationAndProof) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+	indx := hh.Index()
+
+	// Field (0) 'Message'
+	if err = s.Message.HashTreeRootWith(hh); err != nil {
 		return
 	}
-	for ii := 0; ii < len(b.Deposits); ii++ {
-		if dst, err = b.Deposits[ii].MarshalSSZTo(dst); err != nil {
-			return
-		}
-	}
 
-	// Field (7) 'VoluntaryExits'
-	if len(b.VoluntaryExits) > 16 {
-		err = ssz.ErrListTooBig
+	// Field (1) 'Signature'
+	if len(s.Signature) != 96 {
+		err = ssz.ErrBytesLength
 		return
 	}
-	for ii := 0; ii < len(b.VoluntaryExits); ii++ {
-		if dst, err = b.VoluntaryExits[ii].MarshalSSZTo(dst); err != nil {
-			return
-		}
-	}
+	hh.PutBytes(s.Signature)
 
+	hh.Merkleize(indx)
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the BeaconBlockBody object
-func (b *BeaconBlockBody) UnmarshalSSZ(buf []byte) error {
-	var err error
-	size := uint64(len(buf))
-	if size < 220 {
-		return ssz.ErrSize
-	}
-
-	tail := buf
-	var o3, o4, o5, o6, o7 uint64
+// MarshalSSZ ssz marshals the AttestationData object
+func (a *AttestationData) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(a)
+}
 
-	// Field (0) 'RandaoReveal'
-	b.RandaoReveal = append(b.RandaoReveal, buf[0:96]...)
+// MarshalSSZTo ssz marshals the AttestationData object to a target array
+func (a *AttestationData) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+	dst = buf
 
-	// Field (1) 'Eth1Data'
-	if b.Eth1Data == nil {
-		b.Eth1Data = new(Eth1Data)
-	}
-	if err = b.Eth1Data.UnmarshalSSZ(buf[96:168]); err != nil {
-		return err
-	}
+	// Field (0) 'Slot'
+	dst = ssz.MarshalUint64(dst, a.Slot)
 
-	// Field (2) 'Graffiti'
-	b.Graffiti = append(b.Graffiti, buf[168:200]...)
+	// Field (1) 'CommitteeIndex'
+	dst = ssz.MarshalUint64(dst, a.CommitteeIndex)
 
-	// Offset (3) 'ProposerSlashings'
-	if o3 = ssz.ReadOffset(buf[200:204]); o3 > size {
-		return ssz.ErrOffset
+	// Field (2) 'BeaconBlockRoot'
+	if len(a.BeaconBlockRoot) != 32 {
+		err = ssz.ErrBytesLength
+		return
 	}
+	dst = append(dst, a.BeaconBlockRoot...)
 
-	// Offset (4) 'AttesterSlashings'
-	if o4 = ssz.ReadOffset(buf[204:208]); o4 > size || o3 > o4 {
-		return ssz.ErrOffset
+	// Field (3) 'Source'
+	if a.Source == nil {
+		a.Source = new(Checkpoint)
 	}
-
-	// Offset (5) 'Attestations'
-	if o5 = ssz.ReadOffset(buf[208:212]); o5 > size || o4 > o5 {
-		return ssz.ErrOffset
+	if dst, err = a.Source.MarshalSSZTo(dst); err != nil {
+		return
 	}
 
-	// Offset (6) 'Deposits'
-	if o6 = ssz.ReadOffset(buf[212:216]); o6 > size || o5 > o6 {
-		return ssz.ErrOffset
+	// Field (4) 'Target'
+	if a.Target == nil {
+		a.Target = new(Checkpoint)
 	}
-
-	// Offset (7) 'VoluntaryExits'
-	if o7 = ssz.ReadOffset(buf[216:220]); o7 > size || o6 > o7 {
-		return ssz.ErrOffset
+	if dst, err = a.Target.MarshalSSZTo(dst); err != nil {
+		return
 	}
 
-	// Field (3) 'ProposerSlashings'
-	{
-		buf = tail[o3:o4]
-		num, err := ssz.DivideInt2(len(buf), 416, 16)
-		if err != nil {
-			return err
-		}
-		b.ProposerSlashings = make([]*ProposerSlashing, num)
-		for ii := 0; ii < num; ii++ {
-			if b.ProposerSlashings[ii] == nil {
-				b.ProposerSlashings[ii] = new(ProposerSlashing)
-			}
-			if err = b.ProposerSlashings[ii].UnmarshalSSZ(buf[ii*416 : (ii+1)*416]); err != nil {
-				return err
-			}
-		}
-	}
+	return
+}
 
-	// Field (4) 'AttesterSlashings'
-	{
-		buf = tail[o4:o5]
-		num, err := ssz.DecodeDynamicLength(buf, 2)
-		if err != nil {
-			return err
-		}
-		b.AttesterSlashings = make([]*AttesterSlashing, num)
-		err = ssz.UnmarshalDynamic(buf, num, func(indx int, buf []byte) (err error) {
-			if b.AttesterSlashings[indx] == nil {
-				b.AttesterSlashings[indx] = new(AttesterSlashing)
-			}
-			if err = b.AttesterSlashings[indx].UnmarshalSSZ(buf); err != nil {
-				return err
-			}
-			return nil
-		})
-		if err != nil {
-			return err
-		}
+// UnmarshalSSZ ssz unmarshals the AttestationData object
+func (a *AttestationData) UnmarshalSSZ(buf []byte) error {
+	var err error
+	size := uint64(len(buf))
+	if size != 128 {
+		return ssz.ErrSize
 	}
 
-	// Field (5) 'Attestations'
-	{
-		buf = tail[o5:o6]
-		num, err := ssz.DecodeDynamicLength(buf, 128)
-		if err != nil {
-			return err
-		}
-		b.Attestations = make([]*Attestation, num)
-		err = ssz.UnmarshalDynamic(buf, num, func(indx int, buf []byte) (err error) {
-			if b.Attestations[indx] == nil {
-				b.Attestations[indx] = new(Attestation)
-			}
-			if err = b.Attestations[indx].UnmarshalSSZ(buf); err != nil {
-				return err
-			}
-			return nil
-		})
-		if err != nil {
-			return err
-		}
+	// Field (0) 'Slot'
+	a.Slot = ssz.UnmarshallUint64(buf[0:8])
+
+	// Field (1) 'CommitteeIndex'
+	a.CommitteeIndex = ssz.UnmarshallUint64(buf[8:16])
+
+	// Field (2) 'BeaconBlockRoot'
+	if cap(a.BeaconBlockRoot) == 0 {
+		a.BeaconBlockRoot = make([]byte, 0, len(buf[16:48]))
 	}
+	a.BeaconBlockRoot = append(a.BeaconBlockRoot, buf[16:48]...)
 
-	// Field (6) 'Deposits'
-	{
-		buf = tail[o6:o7]
-		num, err := ssz.DivideInt2(len(buf), 1240, 16)
-		if err != nil {
-			return err
-		}
-		b.Deposits = make([]*Deposit, num)
-		for ii := 0; ii < num; ii++ {
-			if b.Deposits[ii] == nil {
-				b.Deposits[ii] = new(Deposit)
-			}
-			if err = b.Deposits[ii].UnmarshalSSZ(buf[ii*1240 : (ii+1)*1240]); err != nil {
-				return err
-			}
-		}
+	// Field (3) 'Source'
+	if a.Source == nil {
+		a.Source = new(Checkpoint)
+	}
+	if err = a.Source.UnmarshalSSZ(buf[48:88]); err != nil {
+		return err
 	}
 
-	// Field (7) 'VoluntaryExits'
-	{
-		buf = tail[o7:]
-		num, err := ssz.DivideInt2(len(buf), 112, 16)
-		if err != nil {
-			return err
-		}
-		b.VoluntaryExits = make([]*SignedVoluntaryExit, num)
-		for ii := 0; ii < num; ii++ {
-			if b.VoluntaryExits[ii] == nil {
-				b.VoluntaryExits[ii] = new(SignedVoluntaryExit)
-			}
-			if err = b.VoluntaryExits[ii].UnmarshalSSZ(buf[ii*112 : (ii+1)*112]); err != nil {
-				return err
-			}
-		}
+	// Field (4) 'Target'
+	if a.Target == nil {
+		a.Target = new(Checkpoint)
+	}
+	if err = a.Target.UnmarshalSSZ(buf[88:128]); err != nil {
+		return err
 	}
+
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the BeaconBlockBody object
-func (b *BeaconBlockBody) SizeSSZ() (size int) {
-	size = 220
+// SizeSSZ returns the ssz encoded size in bytes for the AttestationData object
+func (a *AttestationData) SizeSSZ() (size int) {
+	size = 128
+	return
+}
 
-	// Field (3) 'ProposerSlashings'
-	size += len(b.ProposerSlashings) * 416
+// HashTreeRoot ssz hashes the AttestationData object
+func (a *AttestationData) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(a)
+}
 
-	// Field (4) 'AttesterSlashings'
-	for ii := 0; ii < len(b.AttesterSlashings); ii++ {
-		size += 4
-		size += b.AttesterSlashings[ii].SizeSSZ()
-	}
+// HashTreeRootWith ssz hashes the AttestationData object with a hasher
+func (a *AttestationData) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+	indx := hh.Index()
 
-	// Field (5) 'Attestations'
-	for ii := 0; ii < len(b.Attestations); ii++ {
-		size += 4
-		size += b.Attestations[ii].SizeSSZ()
+	// Field (0) 'Slot'
+	hh.PutUint64(a.Slot)
+
+	// Field (1) 'CommitteeIndex'
+	hh.PutUint64(a.CommitteeIndex)
+
+	// Field (2) 'BeaconBlockRoot'
+	if len(a.BeaconBlockRoot) != 32 {
+		err = ssz.ErrBytesLength
+		return
 	}
+	hh.PutBytes(a.BeaconBlockRoot)
 
-	// Field (6) 'Deposits'
-	size += len(b.Deposits) * 1240
+	// Field (3) 'Source'
+	if err = a.Source.HashTreeRootWith(hh); err != nil {
+		return
+	}
 
-	// Field (7) 'VoluntaryExits'
-	size += len(b.VoluntaryExits) * 112
+	// Field (4) 'Target'
+	if err = a.Target.HashTreeRootWith(hh); err != nil {
+		return
+	}
 
+	hh.Merkleize(indx)
 	return
 }
 
-// HashTreeRoot ssz hashes the BeaconBlockBody object
-func (b *BeaconBlockBody) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(b)
+// MarshalSSZ ssz marshals the Checkpoint object
+func (c *Checkpoint) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(c)
 }
 
-// HashTreeRootWith ssz hashes the BeaconBlockBody object with a hasher
-func (b *BeaconBlockBody) HashTreeRootWith(hh *ssz.Hasher) (err error) {
-	indx := hh.Index()
+// MarshalSSZTo ssz marshals the Checkpoint object to a target array
+func (c *Checkpoint) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+	dst = buf
 
-	// Field (0) 'RandaoReveal'
-	if len(b.RandaoReveal) != 96 {
+	// Field (0) 'Epoch'
+	dst = ssz.MarshalUint64(dst, uint64(c.Epoch))
+
+	// Field (1) 'Root'
+	if len(c.Root) != 32 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(b.RandaoReveal)
+	dst = append(dst, c.Root...)
 
-	// Field (1) 'Eth1Data'
-	if err = b.Eth1Data.HashTreeRootWith(hh); err != nil {
-		return
-	}
+	return
+}
 
-	// Field (2) 'Graffiti'
-	if len(b.Graffiti) != 32 {
-		err = ssz.ErrBytesLength
-		return
+// UnmarshalSSZ ssz unmarshals the Checkpoint object
+func (c *Checkpoint) UnmarshalSSZ(buf []byte) error {
+	var err error
+	size := uint64(len(buf))
+	if size != 40 {
+		return ssz.ErrSize
 	}
-	hh.PutBytes(b.Graffiti)
 
-	// Field (3) 'ProposerSlashings'
-	{
-		subIndx := hh.Index()
-		num := uint64(len(b.ProposerSlashings))
-		if num > 16 {
-			err = ssz.ErrIncorrectListSize
-			return
-		}
-		for i := uint64(0); i < num; i++ {
-			if err = b.ProposerSlashings[i].HashTreeRootWith(hh); err != nil {
-				return
-			}
-		}
-		hh.MerkleizeWithMixin(subIndx, num, 16)
-	}
+	// Field (0) 'Epoch'
+	c.Epoch = github_com_prysmaticlabs_eth2_types.Epoch(ssz.UnmarshallUint64(buf[0:8]))
 
-	// Field (4) 'AttesterSlashings'
-	{
-		subIndx := hh.Index()
-		num := uint64(len(b.AttesterSlashings))
-		if num > 2 {
-			err = ssz.ErrIncorrectListSize
-			return
-		}
-		for i := uint64(0); i < num; i++ {
-			if err = b.AttesterSlashings[i].HashTreeRootWith(hh); err != nil {
-				return
-			}
-		}
-		hh.MerkleizeWithMixin(subIndx, num, 2)
+	// Field (1) 'Root'
+	if cap(c.Root) == 0 {
+		c.Root = make([]byte, 0, len(buf[8:40]))
 	}
+	c.Root = append(c.Root, buf[8:40]...)
 
-	// Field (5) 'Attestations'
-	{
-		subIndx := hh.Index()
-		num := uint64(len(b.Attestations))
-		if num > 128 {
-			err = ssz.ErrIncorrectListSize
-			return
-		}
-		for i := uint64(0); i < num; i++ {
-			if err = b.Attestations[i].HashTreeRootWith(hh); err != nil {
-				return
-			}
-		}
-		hh.MerkleizeWithMixin(subIndx, num, 128)
-	}
+	return err
+}
 
-	// Field (6) 'Deposits'
-	{
-		subIndx := hh.Index()
-		num := uint64(len(b.Deposits))
-		if num > 16 {
-			err = ssz.ErrIncorrectListSize
-			return
-		}
-		for i := uint64(0); i < num; i++ {
-			if err = b.Deposits[i].HashTreeRootWith(hh); err != nil {
-				return
-			}
-		}
-		hh.MerkleizeWithMixin(subIndx, num, 16)
-	}
+// SizeSSZ returns the ssz encoded size in bytes for the Checkpoint object
+func (c *Checkpoint) SizeSSZ() (size int) {
+	size = 40
+	return
+}
 
-	// Field (7) 'VoluntaryExits'
-	{
-		subIndx := hh.Index()
-		num := uint64(len(b.VoluntaryExits))
-		if num > 16 {
-			err = ssz.ErrIncorrectListSize
-			return
-		}
-		for i := uint64(0); i < num; i++ {
-			if err = b.VoluntaryExits[i].HashTreeRootWith(hh); err != nil {
-				return
-			}
-		}
-		hh.MerkleizeWithMixin(subIndx, num, 16)
+// HashTreeRoot ssz hashes the Checkpoint object
+func (c *Checkpoint) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(c)
+}
+
+// HashTreeRootWith ssz hashes the Checkpoint object with a hasher
+func (c *Checkpoint) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+	indx := hh.Index()
+
+	// Field (0) 'Epoch'
+	hh.PutUint64(uint64(c.Epoch))
+
+	// Field (1) 'Root'
+	if len(c.Root) != 32 {
+		err = ssz.ErrBytesLength
+		return
 	}
+	hh.PutBytes(c.Root)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the ProposerSlashing object
-func (p *ProposerSlashing) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(p)
+// MarshalSSZ ssz marshals the BeaconBlock object
+func (b *BeaconBlock) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(b)
 }
 
-// MarshalSSZTo ssz marshals the ProposerSlashing object to a target array
-func (p *ProposerSlashing) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the BeaconBlock object to a target array
+func (b *BeaconBlock) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
+	offset := int(84)
 
-	// Field (0) 'Header_1'
-	if p.Header_1 == nil {
-		p.Header_1 = new(SignedBeaconBlockHeader)
+	// Field (0) 'Slot'
+	dst = ssz.MarshalUint64(dst, b.Slot)
+
+	// Field (1) 'ProposerIndex'
+	dst = ssz.MarshalUint64(dst, b.ProposerIndex)
+
+	// Field (2) 'ParentRoot'
+	if len(b.ParentRoot) != 32 {
+		err = ssz.ErrBytesLength
+		return
 	}
-	if dst, err = p.Header_1.MarshalSSZTo(dst); err != nil {
+	dst = append(dst, b.ParentRoot...)
+
+	// Field (3) 'StateRoot'
+	if len(b.StateRoot) != 32 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	dst = append(dst, b.StateRoot...)
 
-	// Field (1) 'Header_2'
-	if p.Header_2 == nil {
-		p.Header_2 = new(SignedBeaconBlockHeader)
+	// Offset (4) 'Body'
+	dst = ssz.WriteOffset(dst, offset)
+	if b.Body == nil {
+		b.Body = new(BeaconBlockBody)
 	}
-	if dst, err = p.Header_2.MarshalSSZTo(dst); err != nil {
+	offset += b.Body.SizeSSZ()
+
+	// Field (4) 'Body'
+	if dst, err = b.Body.MarshalSSZTo(dst); err != nil {
 		return
 	}
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the ProposerSlashing object
-func (p *ProposerSlashing) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the BeaconBlock object
+func (b *BeaconBlock) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size != 416 {
+	if size < 84 {
 		return ssz.ErrSize
 	}
 
-	// Field (0) 'Header_1'
-	if p.Header_1 == nil {
-		p.Header_1 = new(SignedBeaconBlockHeader)
-	}
-	if err = p.Header_1.UnmarshalSSZ(buf[0:208]); err != nil {
-		return err
+	tail := buf
+	var o4 uint64
+
+	// Field (0) 'Slot'
+	b.Slot = ssz.UnmarshallUint64(buf[0:8])
+
+	// Field (1) 'ProposerIndex'
+	b.ProposerIndex = ssz.UnmarshallUint64(buf[8:16])
+
+	// Field (2) 'ParentRoot'
+	if cap(b.ParentRoot) == 0 {
+		b.ParentRoot = make([]byte, 0, len(buf[16:48]))
 	}
+	b.ParentRoot = append(b.ParentRoot, buf[16:48]...)
 
-	// Field (1) 'Header_2'
-	if p.Header_2 == nil {
-		p.Header_2 = new(SignedBeaconBlockHeader)
+	// Field (3) 'StateRoot'
+	if cap(b.StateRoot) == 0 {
+		b.StateRoot = make([]byte, 0, len(buf[48:80]))
 	}
-	if err = p.Header_2.UnmarshalSSZ(buf[208:416]); err != nil {
-		return err
+	b.StateRoot = append(b.StateRoot, buf[48:80]...)
+
+	// Offset (4) 'Body'
+	if o4 = ssz.ReadOffset(buf[80:84]); o4 > size {
+		return ssz.ErrOffset
 	}
 
+	// Field (4) 'Body'
+	{
+		buf = tail[o4:]
+		if b.Body == nil {
+			b.Body = new(BeaconBlockBody)
+		}
+		if err = b.Body.UnmarshalSSZ(buf); err != nil {
+			return err
+		}
+	}
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the ProposerSlashing object
-func (p *ProposerSlashing) SizeSSZ() (size int) {
-	size = 416
+// SizeSSZ returns the ssz encoded size in bytes for the BeaconBlock object
+func (b *BeaconBlock) SizeSSZ() (size int) {
+	size = 84
+
+	// Field (4) 'Body'
+	if b.Body == nil {
+		b.Body = new(BeaconBlockBody)
+	}
+	size += b.Body.SizeSSZ()
+
 	return
 }
-
-// HashTreeRoot ssz hashes the ProposerSlashing object
-func (p *ProposerSlashing) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(p)
+
+// HashTreeRoot ssz hashes the BeaconBlock object
+func (b *BeaconBlock) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(b)
 }
 
-// HashTreeRootWith ssz hashes the ProposerSlashing object with a hasher
-func (p *ProposerSlashing) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the BeaconBlock object with a hasher
+func (b *BeaconBlock) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Header_1'
-	if err = p.Header_1.HashTreeRootWith(hh); err != nil {
+	// Field (0) 'Slot'
+	hh.PutUint64(b.Slot)
+
+	// Field (1) 'ProposerIndex'
+	hh.PutUint64(b.ProposerIndex)
+
+	// Field (2) 'ParentRoot'
+	if len(b.ParentRoot) != 32 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	hh.PutBytes(b.ParentRoot)
 
-	// Field (1) 'Header_2'
-	if err = p.Header_2.HashTreeRootWith(hh); err != nil {
+	// Field (3) 'StateRoot'
+	if len(b.StateRoot) != 32 {
+		err = ssz.ErrBytesLength
+		return
+	}
+	hh.PutBytes(b.StateRoot)
+
+	// Field (4) 'Body'
+	if err = b.Body.HashTreeRootWith(hh); err != nil {
 		return
 	}
 
@@ -748,1390 +686,1526 @@ func (p *ProposerSlashing) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	return
 }
 
-// MarshalSSZ ssz marshals the AttesterSlashing object
-func (a *AttesterSlashing) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(a)
+// MarshalSSZ ssz marshals the SignedBeaconBlock object
+func (s *SignedBeaconBlock) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(s)
 }
 
-// MarshalSSZTo ssz marshals the AttesterSlashing object to a target array
-func (a *AttesterSlashing) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the SignedBeaconBlock object to a target array
+func (s *SignedBeaconBlock) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
-	offset := int(8)
-
-	// Offset (0) 'Attestation_1'
-	dst = ssz.WriteOffset(dst, offset)
-	if a.Attestation_1 == nil {
-		a.Attestation_1 = new(IndexedAttestation)
-	}
-	offset += a.Attestation_1.SizeSSZ()
+	offset := int(100)
 
-	// Offset (1) 'Attestation_2'
+	// Offset (0) 'Block'
 	dst = ssz.WriteOffset(dst, offset)
-	if a.Attestation_2 == nil {
-		a.Attestation_2 = new(IndexedAttestation)
+	if s.Block == nil {
+		s.Block = new(BeaconBlock)
 	}
-	offset += a.Attestation_2.SizeSSZ()
+	offset += s.Block.SizeSSZ()
 
-	// Field (0) 'Attestation_1'
-	if dst, err = a.Attestation_1.MarshalSSZTo(dst); err != nil {
+	// Field (1) 'Signature'
+	if len(s.Signature) != 96 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	dst = append(dst, s.Signature...)
 
-	// Field (1) 'Attestation_2'
-	if dst, err = a.Attestation_2.MarshalSSZTo(dst); err != nil {
+	// Field (0) 'Block'
+	if dst, err = s.Block.MarshalSSZTo(dst); err != nil {
 		return
 	}
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the AttesterSlashing object
-func (a *AttesterSlashing) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the SignedBeaconBlock object
+func (s *SignedBeaconBlock) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size < 8 {
+	if size < 100 {
 		return ssz.ErrSize
 	}
 
 	tail := buf
-	var o0, o1 uint64
+	var o0 uint64
 
-	// Offset (0) 'Attestation_1'
+	// Offset (0) 'Block'
 	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
 		return ssz.ErrOffset
 	}
 
-	// Offset (1) 'Attestation_2'
-	if o1 = ssz.ReadOffset(buf[4:8]); o1 > size || o0 > o1 {
-		return ssz.ErrOffset
-	}
-
-	// Field (0) 'Attestation_1'
-	{
-		buf = tail[o0:o1]
-		if a.Attestation_1 == nil {
-			a.Attestation_1 = new(IndexedAttestation)
-		}
-		if err = a.Attestation_1.UnmarshalSSZ(buf); err != nil {
-			return err
-		}
+	// Field (1) 'Signature'
+	if cap(s.Signature) == 0 {
+		s.Signature = make([]byte, 0, len(buf[4:100]))
 	}
+	s.Signature = append(s.Signature, buf[4:100]...)
 
-	// Field (1) 'Attestation_2'
+	// Field (0) 'Block'
 	{
-		buf = tail[o1:]
-		if a.Attestation_2 == nil {
-			a.Attestation_2 = new(IndexedAttestation)
+		buf = tail[o0:]
+		if s.Block == nil {
+			s.Block = new(BeaconBlock)
 		}
-		if err = a.Attestation_2.UnmarshalSSZ(buf); err != nil {
+		if err = s.Block.UnmarshalSSZ(buf); err != nil {
 			return err
 		}
 	}
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the AttesterSlashing object
-func (a *AttesterSlashing) SizeSSZ() (size int) {
-	size = 8
-
-	// Field (0) 'Attestation_1'
-	if a.Attestation_1 == nil {
-		a.Attestation_1 = new(IndexedAttestation)
-	}
-	size += a.Attestation_1.SizeSSZ()
+// SizeSSZ returns the ssz encoded size in bytes for the SignedBeaconBlock object
+func (s *SignedBeaconBlock) SizeSSZ() (size int) {
+	size = 100
 
-	// Field (1) 'Attestation_2'
-	if a.Attestation_2 == nil {
-		a.Attestation_2 = new(IndexedAttestation)
+	// Field (0) 'Block'
+	if s.Block == nil {
+		s.Block = new(BeaconBlock)
 	}
-	size += a.Attestation_2.SizeSSZ()
+	size += s.Block.SizeSSZ()
 
 	return
 }
 
-// HashTreeRoot ssz hashes the AttesterSlashing object
-func (a *AttesterSlashing) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(a)
+// HashTreeRoot ssz hashes the SignedBeaconBlock object
+func (s *SignedBeaconBlock) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(s)
 }
 
-// HashTreeRootWith ssz hashes the AttesterSlashing object with a hasher
-func (a *AttesterSlashing) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the SignedBeaconBlock object with a hasher
+func (s *SignedBeaconBlock) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Attestation_1'
-	if err = a.Attestation_1.HashTreeRootWith(hh); err != nil {
+	// Field (0) 'Block'
+	if err = s.Block.HashTreeRootWith(hh); err != nil {
 		return
 	}
 
-	// Field (1) 'Attestation_2'
-	if err = a.Attestation_2.HashTreeRootWith(hh); err != nil {
+	// Field (1) 'Signature'
+	if len(s.Signature) != 96 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	hh.PutBytes(s.Signature)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the Deposit object
-func (d *Deposit) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(d)
+// MarshalSSZ ssz marshals the BeaconBlockBody object
+func (b *BeaconBlockBody) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(b)
 }
 
-// MarshalSSZTo ssz marshals the Deposit object to a target array
-func (d *Deposit) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the BeaconBlockBody object to a target array
+func (b *BeaconBlockBody) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
+	offset := int(220)
 
-	// Field (0) 'Proof'
-	if len(d.Proof) != 33 {
-		err = ssz.ErrVectorLength
+	// Field (0) 'RandaoReveal'
+	if len(b.RandaoReveal) != 96 {
+		err = ssz.ErrBytesLength
+		return
+	}
+	dst = append(dst, b.RandaoReveal...)
+
+	// Field (1) 'Eth1Data'
+	if b.Eth1Data == nil {
+		b.Eth1Data = new(Eth1Data)
+	}
+	if dst, err = b.Eth1Data.MarshalSSZTo(dst); err != nil {
+		return
+	}
+
+	// Field (2) 'Graffiti'
+	if len(b.Graffiti) != 32 {
+		err = ssz.ErrBytesLength
+		return
+	}
+	dst = append(dst, b.Graffiti...)
+
+	// Offset (3) 'ProposerSlashings'
+	dst = ssz.WriteOffset(dst, offset)
+	offset += len(b.ProposerSlashings) * 416
+
+	// Offset (4) 'AttesterSlashings'
+	dst = ssz.WriteOffset(dst, offset)
+	for ii := 0; ii < len(b.AttesterSlashings); ii++ {
+		offset += 4
+		offset += b.AttesterSlashings[ii].SizeSSZ()
+	}
+
+	// Offset (5) 'Attestations'
+	dst = ssz.WriteOffset(dst, offset)
+	for ii := 0; ii < len(b.Attestations); ii++ {
+		offset += 4
+		offset += b.Attestations[ii].SizeSSZ()
+	}
+
+	// Offset (6) 'Deposits'
+	dst = ssz.WriteOffset(dst, offset)
+	offset += len(b.Deposits) * 1240
+
+	// Offset (7) 'VoluntaryExits'
+	dst = ssz.WriteOffset(dst, offset)
+	offset += len(b.VoluntaryExits) * 112
+
+	// Field (3) 'ProposerSlashings'
+	if len(b.ProposerSlashings) > 16 {
+		err = ssz.ErrListTooBig
+		return
+	}
+	for ii := 0; ii < len(b.ProposerSlashings); ii++ {
+		if dst, err = b.ProposerSlashings[ii].MarshalSSZTo(dst); err != nil {
+			return
+		}
+	}
+
+	// Field (4) 'AttesterSlashings'
+	if len(b.AttesterSlashings) > 2 {
+		err = ssz.ErrListTooBig
+		return
+	}
+	{
+		offset = 4 * len(b.AttesterSlashings)
+		for ii := 0; ii < len(b.AttesterSlashings); ii++ {
+			dst = ssz.WriteOffset(dst, offset)
+			offset += b.AttesterSlashings[ii].SizeSSZ()
+		}
+	}
+	for ii := 0; ii < len(b.AttesterSlashings); ii++ {
+		if dst, err = b.AttesterSlashings[ii].MarshalSSZTo(dst); err != nil {
+			return
+		}
+	}
+
+	// Field (5) 'Attestations'
+	if len(b.Attestations) > 128 {
+		err = ssz.ErrListTooBig
+		return
+	}
+	{
+		offset = 4 * len(b.Attestations)
+		for ii := 0; ii < len(b.Attestations); ii++ {
+			dst = ssz.WriteOffset(dst, offset)
+			offset += b.Attestations[ii].SizeSSZ()
+		}
+	}
+	for ii := 0; ii < len(b.Attestations); ii++ {
+		if dst, err = b.Attestations[ii].MarshalSSZTo(dst); err != nil {
+			return
+		}
+	}
+
+	// Field (6) 'Deposits'
+	if len(b.Deposits) > 16 {
+		err = ssz.ErrListTooBig
 		return
 	}
-	for ii := 0; ii < 33; ii++ {
-		if len(d.Proof[ii]) != 32 {
-			err = ssz.ErrBytesLength
+	for ii := 0; ii < len(b.Deposits); ii++ {
+		if dst, err = b.Deposits[ii].MarshalSSZTo(dst); err != nil {
 			return
 		}
-		dst = append(dst, d.Proof[ii]...)
 	}
 
-	// Field (1) 'Data'
-	if d.Data == nil {
-		d.Data = new(Deposit_Data)
-	}
-	if dst, err = d.Data.MarshalSSZTo(dst); err != nil {
+	// Field (7) 'VoluntaryExits'
+	if len(b.VoluntaryExits) > 16 {
+		err = ssz.ErrListTooBig
 		return
 	}
+	for ii := 0; ii < len(b.VoluntaryExits); ii++ {
+		if dst, err = b.VoluntaryExits[ii].MarshalSSZTo(dst); err != nil {
+			return
+		}
+	}
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the Deposit object
-func (d *Deposit) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the BeaconBlockBody object
+func (b *BeaconBlockBody) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size != 1240 {
+	if size < 220 {
 		return ssz.ErrSize
 	}
 
-	// Field (0) 'Proof'
-	d.Proof = make([][]byte, 33)
-	for ii := 0; ii < 33; ii++ {
-		d.Proof[ii] = append(d.Proof[ii], buf[0:1056][ii*32:(ii+1)*32]...)
+	tail := buf
+	var o3, o4, o5, o6, o7 uint64
+
+	// Field (0) 'RandaoReveal'
+	if cap(b.RandaoReveal) == 0 {
+		b.RandaoReveal = make([]byte, 0, len(buf[0:96]))
 	}
+	b.RandaoReveal = append(b.RandaoReveal, buf[0:96]...)
 
-	// Field (1) 'Data'
-	if d.Data == nil {
-		d.Data = new(Deposit_Data)
+	// Field (1) 'Eth1Data'
+	if b.Eth1Data == nil {
+		b.Eth1Data = new(Eth1Data)
 	}
-	if err = d.Data.UnmarshalSSZ(buf[1056:1240]); err != nil {
+	if err = b.Eth1Data.UnmarshalSSZ(buf[96:168]); err != nil {
 		return err
 	}
 
-	return err
-}
+	// Field (2) 'Graffiti'
+	if cap(b.Graffiti) == 0 {
+		b.Graffiti = make([]byte, 0, len(buf[168:200]))
+	}
+	b.Graffiti = append(b.Graffiti, buf[168:200]...)
 
-// SizeSSZ returns the ssz encoded size in bytes for the Deposit object
-func (d *Deposit) SizeSSZ() (size int) {
-	size = 1240
-	return
-}
+	// Offset (3) 'ProposerSlashings'
+	if o3 = ssz.ReadOffset(buf[200:204]); o3 > size {
+		return ssz.ErrOffset
+	}
 
-// HashTreeRoot ssz hashes the Deposit object
-func (d *Deposit) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(d)
-}
+	// Offset (4) 'AttesterSlashings'
+	if o4 = ssz.ReadOffset(buf[204:208]); o4 > size || o3 > o4 {
+		return ssz.ErrOffset
+	}
 
-// HashTreeRootWith ssz hashes the Deposit object with a hasher
-func (d *Deposit) HashTreeRootWith(hh *ssz.Hasher) (err error) {
-	indx := hh.Index()
+	// Offset (5) 'Attestations'
+	if o5 = ssz.ReadOffset(buf[208:212]); o5 > size || o4 > o5 {
+		return ssz.ErrOffset
+	}
 
-	// Field (0) 'Proof'
+	// Offset (6) 'Deposits'
+	if o6 = ssz.ReadOffset(buf[212:216]); o6 > size || o5 > o6 {
+		return ssz.ErrOffset
+	}
+
+	// Offset (7) 'VoluntaryExits'
+	if o7 = ssz.ReadOffset(buf[216:220]); o7 > size || o6 > o7 {
+		return ssz.ErrOffset
+	}
+
+	// Field (3) 'ProposerSlashings'
 	{
-		if len(d.Proof) != 33 {
-			err = ssz.ErrVectorLength
-			return
+		buf = tail[o3:o4]
+		num, err := ssz.DivideInt2(len(buf), 416, 16)
+		if err != nil {
+			return err
 		}
-		subIndx := hh.Index()
-		for _, i := range d.Proof {
-			if len(i) != 32 {
-				err = ssz.ErrBytesLength
-				return
+		b.ProposerSlashings = make([]*ProposerSlashing, num)
+		for ii := 0; ii < num; ii++ {
+			if b.ProposerSlashings[ii] == nil {
+				b.ProposerSlashings[ii] = new(ProposerSlashing)
+			}
+			if err = b.ProposerSlashings[ii].UnmarshalSSZ(buf[ii*416 : (ii+1)*416]); err != nil {
+				return err
 			}
-			hh.Append(i)
 		}
-		hh.Merkleize(subIndx)
 	}
 
-	// Field (1) 'Data'
-	if err = d.Data.HashTreeRootWith(hh); err != nil {
-		return
+	// Field (4) 'AttesterSlashings'
+	{
+		buf = tail[o4:o5]
+		num, err := ssz.DecodeDynamicLength(buf, 2)
+		if err != nil {
+			return err
+		}
+		b.AttesterSlashings = make([]*AttesterSlashing, num)
+		err = ssz.UnmarshalDynamic(buf, num, func(indx int, buf []byte) (err error) {
+			if b.AttesterSlashings[indx] == nil {
+				b.AttesterSlashings[indx] = new(AttesterSlashing)
+			}
+			if err = b.AttesterSlashings[indx].UnmarshalSSZ(buf); err != nil {
+				return err
+			}
+			return nil
+		})
+		if err != nil {
+			return err
+		}
 	}
 
-	hh.Merkleize(indx)
-	return
-}
-
-// MarshalSSZ ssz marshals the Deposit_Data object
-func (d *Deposit_Data) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(d)
-}
-
-// MarshalSSZTo ssz marshals the Deposit_Data object to a target array
-func (d *Deposit_Data) MarshalSSZTo(buf []byte) (dst []byte, err error) {
-	dst = buf
-
-	// Field (0) 'PublicKey'
-	if len(d.PublicKey) != 48 {
-		err = ssz.ErrBytesLength
-		return
+	// Field (5) 'Attestations'
+	{
+		buf = tail[o5:o6]
+		num, err := ssz.DecodeDynamicLength(buf, 128)
+		if err != nil {
+			return err
+		}
+		b.Attestations = make([]*Attestation, num)
+		err = ssz.UnmarshalDynamic(buf, num, func(indx int, buf []byte) (err error) {
+			if b.Attestations[indx] == nil {
+				b.Attestations[indx] = new(Attestation)
+			}
+			if err = b.Attestations[indx].UnmarshalSSZ(buf); err != nil {
+				return err
+			}
+			return nil
+		})
+		if err != nil {
+			return err
+		}
 	}
-	dst = append(dst, d.PublicKey...)
 
-	// Field (1) 'WithdrawalCredentials'
-	if len(d.WithdrawalCredentials) != 32 {
-		err = ssz.ErrBytesLength
-		return
+	// Field (6) 'Deposits'
+	{
+		buf = tail[o6:o7]
+		num, err := ssz.DivideInt2(len(buf), 1240, 16)
+		if err != nil {
+			return err
+		}
+		b.Deposits = make([]*Deposit, num)
+		for ii := 0; ii < num; ii++ {
+			if b.Deposits[ii] == nil {
+				b.Deposits[ii] = new(Deposit)
+			}
+			if err = b.Deposits[ii].UnmarshalSSZ(buf[ii*1240 : (ii+1)*1240]); err != nil {
+				return err
+			}
+		}
 	}
-	dst = append(dst, d.WithdrawalCredentials...)
-
-	// Field (2) 'Amount'
-	dst = ssz.MarshalUint64(dst, d.Amount)
 
-	// Field (3) 'Signature'
-	if len(d.Signature) != 96 {
-		err = ssz.ErrBytesLength
-		return
+	// Field (7) 'VoluntaryExits'
+	{
+		buf = tail[o7:]
+		num, err := ssz.DivideInt2(len(buf), 112, 16)
+		if err != nil {
+			return err
+		}
+		b.VoluntaryExits = make([]*SignedVoluntaryExit, num)
+		for ii := 0; ii < num; ii++ {
+			if b.VoluntaryExits[ii] == nil {
+				b.VoluntaryExits[ii] = new(SignedVoluntaryExit)
+			}
+			if err = b.VoluntaryExits[ii].UnmarshalSSZ(buf[ii*112 : (ii+1)*112]); err != nil {
+				return err
+			}
+		}
 	}
-	dst = append(dst, d.Signature...)
-
-	return
+	return err
 }
 
-// UnmarshalSSZ ssz unmarshals the Deposit_Data object
-func (d *Deposit_Data) UnmarshalSSZ(buf []byte) error {
-	var err error
-	size := uint64(len(buf))
-	if size != 184 {
-		return ssz.ErrSize
-	}
+// SizeSSZ returns the ssz encoded size in bytes for the BeaconBlockBody object
+func (b *BeaconBlockBody) SizeSSZ() (size int) {
+	size = 220
 
-	// Field (0) 'PublicKey'
-	d.PublicKey = append(d.PublicKey, buf[0:48]...)
+	// Field (3) 'ProposerSlashings'
+	size += len(b.ProposerSlashings) * 416
 
-	// Field (1) 'WithdrawalCredentials'
-	d.WithdrawalCredentials = append(d.WithdrawalCredentials, buf[48:80]...)
+	// Field (4) 'AttesterSlashings'
+	for ii := 0; ii < len(b.AttesterSlashings); ii++ {
+		size += 4
+		size += b.AttesterSlashings[ii].SizeSSZ()
+	}
 
-	// Field (2) 'Amount'
-	d.Amount = ssz.UnmarshallUint64(buf[80:88])
+	// Field (5) 'Attestations'
+	for ii := 0; ii < len(b.Attestations); ii++ {
+		size += 4
+		size += b.Attestations[ii].SizeSSZ()
+	}
 
-	// Field (3) 'Signature'
-	d.Signature = append(d.Signature, buf[88:184]...)
+	// Field (6) 'Deposits'
+	size += len(b.Deposits) * 1240
 
-	return err
-}
+	// Field (7) 'VoluntaryExits'
+	size += len(b.VoluntaryExits) * 112
 
-// SizeSSZ returns the ssz encoded size in bytes for the Deposit_Data object
-func (d *Deposit_Data) SizeSSZ() (size int) {
-	size = 184
 	return
 }
 
-// HashTreeRoot ssz hashes the Deposit_Data object
-func (d *Deposit_Data) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(d)
+// HashTreeRoot ssz hashes the BeaconBlockBody object
+func (b *BeaconBlockBody) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(b)
 }
 
-// HashTreeRootWith ssz hashes the Deposit_Data object with a hasher
-func (d *Deposit_Data) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the BeaconBlockBody object with a hasher
+func (b *BeaconBlockBody) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'PublicKey'
-	if len(d.PublicKey) != 48 {
+	// Field (0) 'RandaoReveal'
+	if len(b.RandaoReveal) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(d.PublicKey)
+	hh.PutBytes(b.RandaoReveal)
 
-	// Field (1) 'WithdrawalCredentials'
-	if len(d.WithdrawalCredentials) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Eth1Data'
+	if err = b.Eth1Data.HashTreeRootWith(hh); err != nil {
 		return
 	}
-	hh.PutBytes(d.WithdrawalCredentials)
-
-	// Field (2) 'Amount'
-	hh.PutUint64(d.Amount)
 
-	// Field (3) 'Signature'
-	if len(d.Signature) != 96 {
+	// Field (2) 'Graffiti'
+	if len(b.Graffiti) != 32 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(d.Signature)
-
-	hh.Merkleize(indx)
-	return
-}
-
-// MarshalSSZ ssz marshals the VoluntaryExit object
-func (v *VoluntaryExit) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(v)
-}
-
-// MarshalSSZTo ssz marshals the VoluntaryExit object to a target array
-func (v *VoluntaryExit) MarshalSSZTo(buf []byte) (dst []byte, err error) {
-	dst = buf
-
-	// Field (0) 'Epoch'
-	dst = ssz.MarshalUint64(dst, v.Epoch)
-
-	// Field (1) 'ValidatorIndex'
-	dst = ssz.MarshalUint64(dst, v.ValidatorIndex)
-
-	return
-}
+	hh.PutBytes(b.Graffiti)
 
-// UnmarshalSSZ ssz unmarshals the VoluntaryExit object
-func (v *VoluntaryExit) UnmarshalSSZ(buf []byte) error {
-	var err error
-	size := uint64(len(buf))
-	if size != 16 {
-		return ssz.ErrSize
+	// Field (3) 'ProposerSlashings'
+	{
+		subIndx := hh.Index()
+		num := uint64(len(b.ProposerSlashings))
+		if num > 16 {
+			err = ssz.ErrIncorrectListSize
+			return
+		}
+		for i := uint64(0); i < num; i++ {
+			if err = b.ProposerSlashings[i].HashTreeRootWith(hh); err != nil {
+				return
+			}
+		}
+		hh.MerkleizeWithMixin(subIndx, num, 16)
 	}
 
-	// Field (0) 'Epoch'
-	v.Epoch = ssz.UnmarshallUint64(buf[0:8])
-
-	// Field (1) 'ValidatorIndex'
-	v.ValidatorIndex = ssz.UnmarshallUint64(buf[8:16])
-
-	return err
-}
-
-// SizeSSZ returns the ssz encoded size in bytes for the VoluntaryExit object
-func (v *VoluntaryExit) SizeSSZ() (size int) {
-	size = 16
-	return
-}
-
-// HashTreeRoot ssz hashes the VoluntaryExit object
-func (v *VoluntaryExit) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(v)
-}
+	// Field (4) 'AttesterSlashings'
+	{
+		subIndx := hh.Index()
+		num := uint64(len(b.AttesterSlashings))
+		if num > 2 {
+			err = ssz.ErrIncorrectListSize
+			return
+		}
+		for i := uint64(0); i < num; i++ {
+			if err = b.AttesterSlashings[i].HashTreeRootWith(hh); err != nil {
+				return
+			}
+		}
+		hh.MerkleizeWithMixin(subIndx, num, 2)
+	}
 
-// HashTreeRootWith ssz hashes the VoluntaryExit object with a hasher
-func (v *VoluntaryExit) HashTreeRootWith(hh *ssz.Hasher) (err error) {
-	indx := hh.Index()
+	// Field (5) 'Attestations'
+	{
+		subIndx := hh.Index()
+		num := uint64(len(b.Attestations))
+		if num > 128 {
+			err = ssz.ErrIncorrectListSize
+			return
+		}
+		for i := uint64(0); i < num; i++ {
+			if err = b.Attestations[i].HashTreeRootWith(hh); err != nil {
+				return
+			}
+		}
+		hh.MerkleizeWithMixin(subIndx, num, 128)
+	}
 
-	// Field (0) 'Epoch'
-	hh.PutUint64(v.Epoch)
+	// Field (6) 'Deposits'
+	{
+		subIndx := hh.Index()
+		num := uint64(len(b.Deposits))
+		if num > 16 {
+			err = ssz.ErrIncorrectListSize
+			return
+		}
+		for i := uint64(0); i < num; i++ {
+			if err = b.Deposits[i].HashTreeRootWith(hh); err != nil {
+				return
+			}
+		}
+		hh.MerkleizeWithMixin(subIndx, num, 16)
+	}
 
-	// Field (1) 'ValidatorIndex'
-	hh.PutUint64(v.ValidatorIndex)
+	// Field (7) 'VoluntaryExits'
+	{
+		subIndx := hh.Index()
+		num := uint64(len(b.VoluntaryExits))
+		if num > 16 {
+			err = ssz.ErrIncorrectListSize
+			return
+		}
+		for i := uint64(0); i < num; i++ {
+			if err = b.VoluntaryExits[i].HashTreeRootWith(hh); err != nil {
+				return
+			}
+		}
+		hh.MerkleizeWithMixin(subIndx, num, 16)
+	}
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the SignedVoluntaryExit object
-func (s *SignedVoluntaryExit) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(s)
+// MarshalSSZ ssz marshals the ProposerSlashing object
+func (p *ProposerSlashing) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(p)
 }
 
-// MarshalSSZTo ssz marshals the SignedVoluntaryExit object to a target array
-func (s *SignedVoluntaryExit) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the ProposerSlashing object to a target array
+func (p *ProposerSlashing) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
 
-	// Field (0) 'Exit'
-	if s.Exit == nil {
-		s.Exit = new(VoluntaryExit)
+	// Field (0) 'Header_1'
+	if p.Header_1 == nil {
+		p.Header_1 = new(SignedBeaconBlockHeader)
 	}
-	if dst, err = s.Exit.MarshalSSZTo(dst); err != nil {
+	if dst, err = p.Header_1.MarshalSSZTo(dst); err != nil {
 		return
 	}
 
-	// Field (1) 'Signature'
-	if len(s.Signature) != 96 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Header_2'
+	if p.Header_2 == nil {
+		p.Header_2 = new(SignedBeaconBlockHeader)
+	}
+	if dst, err = p.Header_2.MarshalSSZTo(dst); err != nil {
 		return
 	}
-	dst = append(dst, s.Signature...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the SignedVoluntaryExit object
-func (s *SignedVoluntaryExit) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the ProposerSlashing object
+func (p *ProposerSlashing) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size != 112 {
+	if size != 416 {
 		return ssz.ErrSize
 	}
 
-	// Field (0) 'Exit'
-	if s.Exit == nil {
-		s.Exit = new(VoluntaryExit)
+	// Field (0) 'Header_1'
+	if p.Header_1 == nil {
+		p.Header_1 = new(SignedBeaconBlockHeader)
 	}
-	if err = s.Exit.UnmarshalSSZ(buf[0:16]); err != nil {
+	if err = p.Header_1.UnmarshalSSZ(buf[0:208]); err != nil {
 		return err
 	}
 
-	// Field (1) 'Signature'
-	s.Signature = append(s.Signature, buf[16:112]...)
+	// Field (1) 'Header_2'
+	if p.Header_2 == nil {
+		p.Header_2 = new(SignedBeaconBlockHeader)
+	}
+	if err = p.Header_2.UnmarshalSSZ(buf[208:416]); err != nil {
+		return err
+	}
 
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the SignedVoluntaryExit object
-func (s *SignedVoluntaryExit) SizeSSZ() (size int) {
-	size = 112
+// SizeSSZ returns the ssz encoded size in bytes for the ProposerSlashing object
+func (p *ProposerSlashing) SizeSSZ() (size int) {
+	size = 416
 	return
 }
 
-// HashTreeRoot ssz hashes the SignedVoluntaryExit object
-func (s *SignedVoluntaryExit) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(s)
+// HashTreeRoot ssz hashes the ProposerSlashing object
+func (p *ProposerSlashing) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(p)
 }
 
-// HashTreeRootWith ssz hashes the SignedVoluntaryExit object with a hasher
-func (s *SignedVoluntaryExit) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the ProposerSlashing object with a hasher
+func (p *ProposerSlashing) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Exit'
-	if err = s.Exit.HashTreeRootWith(hh); err != nil {
+	// Field (0) 'Header_1'
+	if err = p.Header_1.HashTreeRootWith(hh); err != nil {
 		return
 	}
 
-	// Field (1) 'Signature'
-	if len(s.Signature) != 96 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Header_2'
+	if err = p.Header_2.HashTreeRootWith(hh); err != nil {
 		return
 	}
-	hh.PutBytes(s.Signature)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the Eth1Data object
-func (e *Eth1Data) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(e)
+// MarshalSSZ ssz marshals the AttesterSlashing object
+func (a *AttesterSlashing) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(a)
 }
 
-// MarshalSSZTo ssz marshals the Eth1Data object to a target array
-func (e *Eth1Data) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the AttesterSlashing object to a target array
+func (a *AttesterSlashing) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
+	offset := int(8)
 
-	// Field (0) 'DepositRoot'
-	if len(e.DepositRoot) != 32 {
-		err = ssz.ErrBytesLength
+	// Offset (0) 'Attestation_1'
+	dst = ssz.WriteOffset(dst, offset)
+	if a.Attestation_1 == nil {
+		a.Attestation_1 = new(IndexedAttestation)
+	}
+	offset += a.Attestation_1.SizeSSZ()
+
+	// Offset (1) 'Attestation_2'
+	dst = ssz.WriteOffset(dst, offset)
+	if a.Attestation_2 == nil {
+		a.Attestation_2 = new(IndexedAttestation)
+	}
+	offset += a.Attestation_2.SizeSSZ()
+
+	// Field (0) 'Attestation_1'
+	if dst, err = a.Attestation_1.MarshalSSZTo(dst); err != nil {
 		return
 	}
-	dst = append(dst, e.DepositRoot...)
-
-	// Field (1) 'DepositCount'
-	dst = ssz.MarshalUint64(dst, e.DepositCount)
 
-	// Field (2) 'BlockHash'
-	if len(e.BlockHash) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Attestation_2'
+	if dst, err = a.Attestation_2.MarshalSSZTo(dst); err != nil {
 		return
 	}
-	dst = append(dst, e.BlockHash...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the Eth1Data object
-func (e *Eth1Data) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the AttesterSlashing object
+func (a *AttesterSlashing) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size != 72 {
+	if size < 8 {
 		return ssz.ErrSize
 	}
 
-	// Field (0) 'DepositRoot'
-	e.DepositRoot = append(e.DepositRoot, buf[0:32]...)
+	tail := buf
+	var o0, o1 uint64
 
-	// Field (1) 'DepositCount'
-	e.DepositCount = ssz.UnmarshallUint64(buf[32:40])
+	// Offset (0) 'Attestation_1'
+	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
+		return ssz.ErrOffset
+	}
 
-	// Field (2) 'BlockHash'
-	e.BlockHash = append(e.BlockHash, buf[40:72]...)
+	// Offset (1) 'Attestation_2'
+	if o1 = ssz.ReadOffset(buf[4:8]); o1 > size || o0 > o1 {
+		return ssz.ErrOffset
+	}
+
+	// Field (0) 'Attestation_1'
+	{
+		buf = tail[o0:o1]
+		if a.Attestation_1 == nil {
+			a.Attestation_1 = new(IndexedAttestation)
+		}
+		if err = a.Attestation_1.UnmarshalSSZ(buf); err != nil {
+			return err
+		}
+	}
 
+	// Field (1) 'Attestation_2'
+	{
+		buf = tail[o1:]
+		if a.Attestation_2 == nil {
+			a.Attestation_2 = new(IndexedAttestation)
+		}
+		if err = a.Attestation_2.UnmarshalSSZ(buf); err != nil {
+			return err
+		}
+	}
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the Eth1Data object
-func (e *Eth1Data) SizeSSZ() (size int) {
-	size = 72
+// SizeSSZ returns the ssz encoded size in bytes for the AttesterSlashing object
+func (a *AttesterSlashing) SizeSSZ() (size int) {
+	size = 8
+
+	// Field (0) 'Attestation_1'
+	if a.Attestation_1 == nil {
+		a.Attestation_1 = new(IndexedAttestation)
+	}
+	size += a.Attestation_1.SizeSSZ()
+
+	// Field (1) 'Attestation_2'
+	if a.Attestation_2 == nil {
+		a.Attestation_2 = new(IndexedAttestation)
+	}
+	size += a.Attestation_2.SizeSSZ()
+
 	return
 }
 
-// HashTreeRoot ssz hashes the Eth1Data object
-func (e *Eth1Data) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(e)
+// HashTreeRoot ssz hashes the AttesterSlashing object
+func (a *AttesterSlashing) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(a)
 }
 
-// HashTreeRootWith ssz hashes the Eth1Data object with a hasher
-func (e *Eth1Data) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the AttesterSlashing object with a hasher
+func (a *AttesterSlashing) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'DepositRoot'
-	if len(e.DepositRoot) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (0) 'Attestation_1'
+	if err = a.Attestation_1.HashTreeRootWith(hh); err != nil {
 		return
 	}
-	hh.PutBytes(e.DepositRoot)
-
-	// Field (1) 'DepositCount'
-	hh.PutUint64(e.DepositCount)
 
-	// Field (2) 'BlockHash'
-	if len(e.BlockHash) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Attestation_2'
+	if err = a.Attestation_2.HashTreeRootWith(hh); err != nil {
 		return
 	}
-	hh.PutBytes(e.BlockHash)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the BeaconBlockHeader object
-func (b *BeaconBlockHeader) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(b)
+// MarshalSSZ ssz marshals the Deposit object
+func (d *Deposit) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(d)
 }
 
-// MarshalSSZTo ssz marshals the BeaconBlockHeader object to a target array
-func (b *BeaconBlockHeader) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the Deposit object to a target array
+func (d *Deposit) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
 
-	// Field (0) 'Slot'
-	dst = ssz.MarshalUint64(dst, b.Slot)
-
-	// Field (1) 'ProposerIndex'
-	dst = ssz.MarshalUint64(dst, b.ProposerIndex)
-
-	// Field (2) 'ParentRoot'
-	if len(b.ParentRoot) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (0) 'Proof'
+	if len(d.Proof) != 33 {
+		err = ssz.ErrVectorLength
 		return
 	}
-	dst = append(dst, b.ParentRoot...)
-
-	// Field (3) 'StateRoot'
-	if len(b.StateRoot) != 32 {
-		err = ssz.ErrBytesLength
-		return
+	for ii := 0; ii < 33; ii++ {
+		if len(d.Proof[ii]) != 32 {
+			err = ssz.ErrBytesLength
+			return
+		}
+		dst = append(dst, d.Proof[ii]...)
 	}
-	dst = append(dst, b.StateRoot...)
 
-	// Field (4) 'BodyRoot'
-	if len(b.BodyRoot) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Data'
+	if d.Data == nil {
+		d.Data = new(Deposit_Data)
+	}
+	if dst, err = d.Data.MarshalSSZTo(dst); err != nil {
 		return
 	}
-	dst = append(dst, b.BodyRoot...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the BeaconBlockHeader object
-func (b *BeaconBlockHeader) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the Deposit object
+func (d *Deposit) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size != 112 {
+	if size != 1240 {
 		return ssz.ErrSize
 	}
 
-	// Field (0) 'Slot'
-	b.Slot = ssz.UnmarshallUint64(buf[0:8])
-
-	// Field (1) 'ProposerIndex'
-	b.ProposerIndex = ssz.UnmarshallUint64(buf[8:16])
-
-	// Field (2) 'ParentRoot'
-	b.ParentRoot = append(b.ParentRoot, buf[16:48]...)
-
-	// Field (3) 'StateRoot'
-	b.StateRoot = append(b.StateRoot, buf[48:80]...)
+	// Field (0) 'Proof'
+	d.Proof = make([][]byte, 33)
+	for ii := 0; ii < 33; ii++ {
+		if cap(d.Proof[ii]) == 0 {
+			d.Proof[ii] = make([]byte, 0, len(buf[0:1056][ii*32:(ii+1)*32]))
+		}
+		d.Proof[ii] = append(d.Proof[ii], buf[0:1056][ii*32:(ii+1)*32]...)
+	}
 
-	// Field (4) 'BodyRoot'
-	b.BodyRoot = append(b.BodyRoot, buf[80:112]...)
+	// Field (1) 'Data'
+	if d.Data == nil {
+		d.Data = new(Deposit_Data)
+	}
+	if err = d.Data.UnmarshalSSZ(buf[1056:1240]); err != nil {
+		return err
+	}
 
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the BeaconBlockHeader object
-func (b *BeaconBlockHeader) SizeSSZ() (size int) {
-	size = 112
+// SizeSSZ returns the ssz encoded size in bytes for the Deposit object
+func (d *Deposit) SizeSSZ() (size int) {
+	size = 1240
 	return
 }
 
-// HashTreeRoot ssz hashes the BeaconBlockHeader object
-func (b *BeaconBlockHeader) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(b)
+// HashTreeRoot ssz hashes the Deposit object
+func (d *Deposit) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(d)
 }
 
-// HashTreeRootWith ssz hashes the BeaconBlockHeader object with a hasher
-func (b *BeaconBlockHeader) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the Deposit object with a hasher
+func (d *Deposit) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Slot'
-	hh.PutUint64(b.Slot)
-
-	// Field (1) 'ProposerIndex'
-	hh.PutUint64(b.ProposerIndex)
-
-	// Field (2) 'ParentRoot'
-	if len(b.ParentRoot) != 32 {
-		err = ssz.ErrBytesLength
-		return
-	}
-	hh.PutBytes(b.ParentRoot)
-
-	// Field (3) 'StateRoot'
-	if len(b.StateRoot) != 32 {
-		err = ssz.ErrBytesLength
-		return
+	// Field (0) 'Proof'
+	{
+		if len(d.Proof) != 33 {
+			err = ssz.ErrVectorLength
+			return
+		}
+		subIndx := hh.Index()
+		for _, i := range d.Proof {
+			if len(i) != 32 {
+				err = ssz.ErrBytesLength
+				return
+			}
+			hh.Append(i)
+		}
+		hh.Merkleize(subIndx)
 	}
-	hh.PutBytes(b.StateRoot)
 
-	// Field (4) 'BodyRoot'
-	if len(b.BodyRoot) != 32 {
-		err = ssz.ErrBytesLength
+	// Field (1) 'Data'
+	if err = d.Data.HashTreeRootWith(hh); err != nil {
 		return
 	}
-	hh.PutBytes(b.BodyRoot)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the SignedBeaconBlockHeader object
-func (s *SignedBeaconBlockHeader) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(s)
+// MarshalSSZ ssz marshals the Deposit_Data object
+func (d *Deposit_Data) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(d)
 }
 
-// MarshalSSZTo ssz marshals the SignedBeaconBlockHeader object to a target array
-func (s *SignedBeaconBlockHeader) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the Deposit_Data object to a target array
+func (d *Deposit_Data) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
 
-	// Field (0) 'Header'
-	if s.Header == nil {
-		s.Header = new(BeaconBlockHeader)
+	// Field (0) 'PublicKey'
+	if len(d.PublicKey) != 48 {
+		err = ssz.ErrBytesLength
+		return
 	}
-	if dst, err = s.Header.MarshalSSZTo(dst); err != nil {
+	dst = append(dst, d.PublicKey...)
+
+	// Field (1) 'WithdrawalCredentials'
+	if len(d.WithdrawalCredentials) != 32 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	dst = append(dst, d.WithdrawalCredentials...)
+
+	// Field (2) 'Amount'
+	dst = ssz.MarshalUint64(dst, d.Amount)
 
-	// Field (1) 'Signature'
-	if len(s.Signature) != 96 {
+	// Field (3) 'Signature'
+	if len(d.Signature) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	dst = append(dst, s.Signature...)
+	dst = append(dst, d.Signature...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the SignedBeaconBlockHeader object
-func (s *SignedBeaconBlockHeader) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the Deposit_Data object
+func (d *Deposit_Data) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size != 208 {
+	if size != 184 {
 		return ssz.ErrSize
 	}
 
-	// Field (0) 'Header'
-	if s.Header == nil {
-		s.Header = new(BeaconBlockHeader)
+	// Field (0) 'PublicKey'
+	if cap(d.PublicKey) == 0 {
+		d.PublicKey = make([]byte, 0, len(buf[0:48]))
 	}
-	if err = s.Header.UnmarshalSSZ(buf[0:112]); err != nil {
-		return err
+	d.PublicKey = append(d.PublicKey, buf[0:48]...)
+
+	// Field (1) 'WithdrawalCredentials'
+	if cap(d.WithdrawalCredentials) == 0 {
+		d.WithdrawalCredentials = make([]byte, 0, len(buf[48:80]))
 	}
+	d.WithdrawalCredentials = append(d.WithdrawalCredentials, buf[48:80]...)
 
-	// Field (1) 'Signature'
-	s.Signature = append(s.Signature, buf[112:208]...)
+	// Field (2) 'Amount'
+	d.Amount = ssz.UnmarshallUint64(buf[80:88])
+
+	// Field (3) 'Signature'
+	if cap(d.Signature) == 0 {
+		d.Signature = make([]byte, 0, len(buf[88:184]))
+	}
+	d.Signature = append(d.Signature, buf[88:184]...)
 
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the SignedBeaconBlockHeader object
-func (s *SignedBeaconBlockHeader) SizeSSZ() (size int) {
-	size = 208
+// SizeSSZ returns the ssz encoded size in bytes for the Deposit_Data object
+func (d *Deposit_Data) SizeSSZ() (size int) {
+	size = 184
 	return
 }
 
-// HashTreeRoot ssz hashes the SignedBeaconBlockHeader object
-func (s *SignedBeaconBlockHeader) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(s)
+// HashTreeRoot ssz hashes the Deposit_Data object
+func (d *Deposit_Data) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(d)
 }
 
-// HashTreeRootWith ssz hashes the SignedBeaconBlockHeader object with a hasher
-func (s *SignedBeaconBlockHeader) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the Deposit_Data object with a hasher
+func (d *Deposit_Data) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Header'
-	if err = s.Header.HashTreeRootWith(hh); err != nil {
+	// Field (0) 'PublicKey'
+	if len(d.PublicKey) != 48 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	hh.PutBytes(d.PublicKey)
 
-	// Field (1) 'Signature'
-	if len(s.Signature) != 96 {
+	// Field (1) 'WithdrawalCredentials'
+	if len(d.WithdrawalCredentials) != 32 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(s.Signature)
+	hh.PutBytes(d.WithdrawalCredentials)
+
+	// Field (2) 'Amount'
+	hh.PutUint64(d.Amount)
+
+	// Field (3) 'Signature'
+	if len(d.Signature) != 96 {
+		err = ssz.ErrBytesLength
+		return
+	}
+	hh.PutBytes(d.Signature)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the IndexedAttestation object
-func (i *IndexedAttestation) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(i)
+// MarshalSSZ ssz marshals the VoluntaryExit object
+func (v *VoluntaryExit) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(v)
 }
 
-// MarshalSSZTo ssz marshals the IndexedAttestation object to a target array
-func (i *IndexedAttestation) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the VoluntaryExit object to a target array
+func (v *VoluntaryExit) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
-	offset := int(228)
 
-	// Offset (0) 'AttestingIndices'
-	dst = ssz.WriteOffset(dst, offset)
-	offset += len(i.AttestingIndices) * 8
-
-	// Field (1) 'Data'
-	if i.Data == nil {
-		i.Data = new(AttestationData)
-	}
-	if dst, err = i.Data.MarshalSSZTo(dst); err != nil {
-		return
-	}
-
-	// Field (2) 'Signature'
-	if len(i.Signature) != 96 {
-		err = ssz.ErrBytesLength
-		return
-	}
-	dst = append(dst, i.Signature...)
+	// Field (0) 'Epoch'
+	dst = ssz.MarshalUint64(dst, uint64(v.Epoch))
 
-	// Field (0) 'AttestingIndices'
-	if len(i.AttestingIndices) > 2048 {
-		err = ssz.ErrListTooBig
-		return
-	}
-	for ii := 0; ii < len(i.AttestingIndices); ii++ {
-		dst = ssz.MarshalUint64(dst, i.AttestingIndices[ii])
-	}
+	// Field (1) 'ValidatorIndex'
+	dst = ssz.MarshalUint64(dst, v.ValidatorIndex)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the IndexedAttestation object
-func (i *IndexedAttestation) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the VoluntaryExit object
+func (v *VoluntaryExit) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size < 228 {
+	if size != 16 {
 		return ssz.ErrSize
 	}
 
-	tail := buf
-	var o0 uint64
-
-	// Offset (0) 'AttestingIndices'
-	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
-		return ssz.ErrOffset
-	}
-
-	// Field (1) 'Data'
-	if i.Data == nil {
-		i.Data = new(AttestationData)
-	}
-	if err = i.Data.UnmarshalSSZ(buf[4:132]); err != nil {
-		return err
-	}
+	// Field (0) 'Epoch'
+	v.Epoch = github_com_prysmaticlabs_eth2_types.Epoch(ssz.UnmarshallUint64(buf[0:8]))
 
-	// Field (2) 'Signature'
-	i.Signature = append(i.Signature, buf[132:228]...)
+	// Field (1) 'ValidatorIndex'
+	v.ValidatorIndex = ssz.UnmarshallUint64(buf[8:16])
 
-	// Field (0) 'AttestingIndices'
-	{
-		buf = tail[o0:]
-		num, err := ssz.DivideInt2(len(buf), 8, 2048)
-		if err != nil {
-			return err
-		}
-		i.AttestingIndices = ssz.ExtendUint64(i.AttestingIndices, num)
-		for ii := 0; ii < num; ii++ {
-			i.AttestingIndices[ii] = ssz.UnmarshallUint64(buf[ii*8 : (ii+1)*8])
-		}
-	}
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the IndexedAttestation object
-func (i *IndexedAttestation) SizeSSZ() (size int) {
-	size = 228
-
-	// Field (0) 'AttestingIndices'
-	size += len(i.AttestingIndices) * 8
-
+// SizeSSZ returns the ssz encoded size in bytes for the VoluntaryExit object
+func (v *VoluntaryExit) SizeSSZ() (size int) {
+	size = 16
 	return
 }
 
-// HashTreeRoot ssz hashes the IndexedAttestation object
-func (i *IndexedAttestation) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(i)
+// HashTreeRoot ssz hashes the VoluntaryExit object
+func (v *VoluntaryExit) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(v)
 }
 
-// HashTreeRootWith ssz hashes the IndexedAttestation object with a hasher
-func (i *IndexedAttestation) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the VoluntaryExit object with a hasher
+func (v *VoluntaryExit) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'AttestingIndices'
-	{
-		if len(i.AttestingIndices) > 2048 {
-			err = ssz.ErrListTooBig
-			return
-		}
-		subIndx := hh.Index()
-		for _, i := range i.AttestingIndices {
-			hh.AppendUint64(i)
-		}
-		hh.FillUpTo32()
-		numItems := uint64(len(i.AttestingIndices))
-		hh.MerkleizeWithMixin(subIndx, numItems, ssz.CalculateLimit(2048, numItems, 8))
-	}
-
-	// Field (1) 'Data'
-	if err = i.Data.HashTreeRootWith(hh); err != nil {
-		return
-	}
+	// Field (0) 'Epoch'
+	hh.PutUint64(uint64(v.Epoch))
 
-	// Field (2) 'Signature'
-	if len(i.Signature) != 96 {
-		err = ssz.ErrBytesLength
-		return
-	}
-	hh.PutBytes(i.Signature)
+	// Field (1) 'ValidatorIndex'
+	hh.PutUint64(v.ValidatorIndex)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the Attestation object
-func (a *Attestation) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(a)
+// MarshalSSZ ssz marshals the SignedVoluntaryExit object
+func (s *SignedVoluntaryExit) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(s)
 }
 
-// MarshalSSZTo ssz marshals the Attestation object to a target array
-func (a *Attestation) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the SignedVoluntaryExit object to a target array
+func (s *SignedVoluntaryExit) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
-	offset := int(228)
-
-	// Offset (0) 'AggregationBits'
-	dst = ssz.WriteOffset(dst, offset)
-	offset += len(a.AggregationBits)
 
-	// Field (1) 'Data'
-	if a.Data == nil {
-		a.Data = new(AttestationData)
-	}
-	if dst, err = a.Data.MarshalSSZTo(dst); err != nil {
-		return
+	// Field (0) 'Exit'
+	if s.Exit == nil {
+		s.Exit = new(VoluntaryExit)
 	}
-
-	// Field (2) 'Signature'
-	if len(a.Signature) != 96 {
-		err = ssz.ErrBytesLength
+	if dst, err = s.Exit.MarshalSSZTo(dst); err != nil {
 		return
 	}
-	dst = append(dst, a.Signature...)
 
-	// Field (0) 'AggregationBits'
-	if len(a.AggregationBits) > 2048 {
+	// Field (1) 'Signature'
+	if len(s.Signature) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	dst = append(dst, a.AggregationBits...)
+	dst = append(dst, s.Signature...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the Attestation object
-func (a *Attestation) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the SignedVoluntaryExit object
+func (s *SignedVoluntaryExit) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size < 228 {
+	if size != 112 {
 		return ssz.ErrSize
 	}
 
-	tail := buf
-	var o0 uint64
-
-	// Offset (0) 'AggregationBits'
-	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
-		return ssz.ErrOffset
-	}
-
-	// Field (1) 'Data'
-	if a.Data == nil {
-		a.Data = new(AttestationData)
+	// Field (0) 'Exit'
+	if s.Exit == nil {
+		s.Exit = new(VoluntaryExit)
 	}
-	if err = a.Data.UnmarshalSSZ(buf[4:132]); err != nil {
+	if err = s.Exit.UnmarshalSSZ(buf[0:16]); err != nil {
 		return err
 	}
 
-	// Field (2) 'Signature'
-	a.Signature = append(a.Signature, buf[132:228]...)
-
-	// Field (0) 'AggregationBits'
-	{
-		buf = tail[o0:]
-		if err = ssz.ValidateBitlist(buf, 2048); err != nil {
-			return err
-		}
-		a.AggregationBits = append(a.AggregationBits, buf...)
+	// Field (1) 'Signature'
+	if cap(s.Signature) == 0 {
+		s.Signature = make([]byte, 0, len(buf[16:112]))
 	}
+	s.Signature = append(s.Signature, buf[16:112]...)
+
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the Attestation object
-func (a *Attestation) SizeSSZ() (size int) {
-	size = 228
-
-	// Field (0) 'AggregationBits'
-	size += len(a.AggregationBits)
-
+// SizeSSZ returns the ssz encoded size in bytes for the SignedVoluntaryExit object
+func (s *SignedVoluntaryExit) SizeSSZ() (size int) {
+	size = 112
 	return
 }
 
-// HashTreeRoot ssz hashes the Attestation object
-func (a *Attestation) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(a)
+// HashTreeRoot ssz hashes the SignedVoluntaryExit object
+func (s *SignedVoluntaryExit) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(s)
 }
 
-// HashTreeRootWith ssz hashes the Attestation object with a hasher
-func (a *Attestation) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the SignedVoluntaryExit object with a hasher
+func (s *SignedVoluntaryExit) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'AggregationBits'
-	hh.PutBitlist(a.AggregationBits, 2048)
-
-	// Field (1) 'Data'
-	if err = a.Data.HashTreeRootWith(hh); err != nil {
+	// Field (0) 'Exit'
+	if err = s.Exit.HashTreeRootWith(hh); err != nil {
 		return
 	}
 
-	// Field (2) 'Signature'
-	if len(a.Signature) != 96 {
+	// Field (1) 'Signature'
+	if len(s.Signature) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(a.Signature)
+	hh.PutBytes(s.Signature)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the AggregateAttestationAndProof object
-func (a *AggregateAttestationAndProof) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(a)
+// MarshalSSZ ssz marshals the Eth1Data object
+func (e *Eth1Data) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(e)
 }
 
-// MarshalSSZTo ssz marshals the AggregateAttestationAndProof object to a target array
-func (a *AggregateAttestationAndProof) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the Eth1Data object to a target array
+func (e *Eth1Data) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
-	offset := int(108)
-
-	// Field (0) 'AggregatorIndex'
-	dst = ssz.MarshalUint64(dst, a.AggregatorIndex)
-
-	// Offset (1) 'Aggregate'
-	dst = ssz.WriteOffset(dst, offset)
-	if a.Aggregate == nil {
-		a.Aggregate = new(Attestation)
-	}
-	offset += a.Aggregate.SizeSSZ()
 
-	// Field (2) 'SelectionProof'
-	if len(a.SelectionProof) != 96 {
+	// Field (0) 'DepositRoot'
+	if len(e.DepositRoot) != 32 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	dst = append(dst, a.SelectionProof...)
+	dst = append(dst, e.DepositRoot...)
 
-	// Field (1) 'Aggregate'
-	if dst, err = a.Aggregate.MarshalSSZTo(dst); err != nil {
+	// Field (1) 'DepositCount'
+	dst = ssz.MarshalUint64(dst, e.DepositCount)
+
+	// Field (2) 'BlockHash'
+	if len(e.BlockHash) != 32 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	dst = append(dst, e.BlockHash...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the AggregateAttestationAndProof object
-func (a *AggregateAttestationAndProof) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the Eth1Data object
+func (e *Eth1Data) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size < 108 {
+	if size != 72 {
 		return ssz.ErrSize
 	}
 
-	tail := buf
-	var o1 uint64
-
-	// Field (0) 'AggregatorIndex'
-	a.AggregatorIndex = ssz.UnmarshallUint64(buf[0:8])
-
-	// Offset (1) 'Aggregate'
-	if o1 = ssz.ReadOffset(buf[8:12]); o1 > size {
-		return ssz.ErrOffset
+	// Field (0) 'DepositRoot'
+	if cap(e.DepositRoot) == 0 {
+		e.DepositRoot = make([]byte, 0, len(buf[0:32]))
 	}
+	e.DepositRoot = append(e.DepositRoot, buf[0:32]...)
 
-	// Field (2) 'SelectionProof'
-	a.SelectionProof = append(a.SelectionProof, buf[12:108]...)
+	// Field (1) 'DepositCount'
+	e.DepositCount = ssz.UnmarshallUint64(buf[32:40])
 
-	// Field (1) 'Aggregate'
-	{
-		buf = tail[o1:]
-		if a.Aggregate == nil {
-			a.Aggregate = new(Attestation)
-		}
-		if err = a.Aggregate.UnmarshalSSZ(buf); err != nil {
-			return err
-		}
+	// Field (2) 'BlockHash'
+	if cap(e.BlockHash) == 0 {
+		e.BlockHash = make([]byte, 0, len(buf[40:72]))
 	}
+	e.BlockHash = append(e.BlockHash, buf[40:72]...)
+
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the AggregateAttestationAndProof object
-func (a *AggregateAttestationAndProof) SizeSSZ() (size int) {
-	size = 108
-
-	// Field (1) 'Aggregate'
-	if a.Aggregate == nil {
-		a.Aggregate = new(Attestation)
-	}
-	size += a.Aggregate.SizeSSZ()
-
+// SizeSSZ returns the ssz encoded size in bytes for the Eth1Data object
+func (e *Eth1Data) SizeSSZ() (size int) {
+	size = 72
 	return
 }
 
-// HashTreeRoot ssz hashes the AggregateAttestationAndProof object
-func (a *AggregateAttestationAndProof) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(a)
+// HashTreeRoot ssz hashes the Eth1Data object
+func (e *Eth1Data) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(e)
 }
 
-// HashTreeRootWith ssz hashes the AggregateAttestationAndProof object with a hasher
-func (a *AggregateAttestationAndProof) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the Eth1Data object with a hasher
+func (e *Eth1Data) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'AggregatorIndex'
-	hh.PutUint64(a.AggregatorIndex)
-
-	// Field (1) 'Aggregate'
-	if err = a.Aggregate.HashTreeRootWith(hh); err != nil {
+	// Field (0) 'DepositRoot'
+	if len(e.DepositRoot) != 32 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	hh.PutBytes(e.DepositRoot)
 
-	// Field (2) 'SelectionProof'
-	if len(a.SelectionProof) != 96 {
+	// Field (1) 'DepositCount'
+	hh.PutUint64(e.DepositCount)
+
+	// Field (2) 'BlockHash'
+	if len(e.BlockHash) != 32 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(a.SelectionProof)
+	hh.PutBytes(e.BlockHash)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the SignedAggregateAttestationAndProof object
-func (s *SignedAggregateAttestationAndProof) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(s)
+// MarshalSSZ ssz marshals the BeaconBlockHeader object
+func (b *BeaconBlockHeader) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(b)
 }
 
-// MarshalSSZTo ssz marshals the SignedAggregateAttestationAndProof object to a target array
-func (s *SignedAggregateAttestationAndProof) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the BeaconBlockHeader object to a target array
+func (b *BeaconBlockHeader) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
-	offset := int(100)
 
-	// Offset (0) 'Message'
-	dst = ssz.WriteOffset(dst, offset)
-	if s.Message == nil {
-		s.Message = new(AggregateAttestationAndProof)
+	// Field (0) 'Slot'
+	dst = ssz.MarshalUint64(dst, b.Slot)
+
+	// Field (1) 'ProposerIndex'
+	dst = ssz.MarshalUint64(dst, b.ProposerIndex)
+
+	// Field (2) 'ParentRoot'
+	if len(b.ParentRoot) != 32 {
+		err = ssz.ErrBytesLength
+		return
 	}
-	offset += s.Message.SizeSSZ()
+	dst = append(dst, b.ParentRoot...)
 
-	// Field (1) 'Signature'
-	if len(s.Signature) != 96 {
+	// Field (3) 'StateRoot'
+	if len(b.StateRoot) != 32 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	dst = append(dst, s.Signature...)
+	dst = append(dst, b.StateRoot...)
 
-	// Field (0) 'Message'
-	if dst, err = s.Message.MarshalSSZTo(dst); err != nil {
+	// Field (4) 'BodyRoot'
+	if len(b.BodyRoot) != 32 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	dst = append(dst, b.BodyRoot...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the SignedAggregateAttestationAndProof object
-func (s *SignedAggregateAttestationAndProof) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the BeaconBlockHeader object
+func (b *BeaconBlockHeader) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size < 100 {
+	if size != 112 {
 		return ssz.ErrSize
 	}
 
-	tail := buf
-	var o0 uint64
+	// Field (0) 'Slot'
+	b.Slot = ssz.UnmarshallUint64(buf[0:8])
 
-	// Offset (0) 'Message'
-	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
-		return ssz.ErrOffset
+	// Field (1) 'ProposerIndex'
+	b.ProposerIndex = ssz.UnmarshallUint64(buf[8:16])
+
+	// Field (2) 'ParentRoot'
+	if cap(b.ParentRoot) == 0 {
+		b.ParentRoot = make([]byte, 0, len(buf[16:48]))
 	}
+	b.ParentRoot = append(b.ParentRoot, buf[16:48]...)
 
-	// Field (1) 'Signature'
-	s.Signature = append(s.Signature, buf[4:100]...)
+	// Field (3) 'StateRoot'
+	if cap(b.StateRoot) == 0 {
+		b.StateRoot = make([]byte, 0, len(buf[48:80]))
+	}
+	b.StateRoot = append(b.StateRoot, buf[48:80]...)
 
-	// Field (0) 'Message'
-	{
-		buf = tail[o0:]
-		if s.Message == nil {
-			s.Message = new(AggregateAttestationAndProof)
-		}
-		if err = s.Message.UnmarshalSSZ(buf); err != nil {
-			return err
-		}
+	// Field (4) 'BodyRoot'
+	if cap(b.BodyRoot) == 0 {
+		b.BodyRoot = make([]byte, 0, len(buf[80:112]))
 	}
+	b.BodyRoot = append(b.BodyRoot, buf[80:112]...)
+
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the SignedAggregateAttestationAndProof object
-func (s *SignedAggregateAttestationAndProof) SizeSSZ() (size int) {
-	size = 100
-
-	// Field (0) 'Message'
-	if s.Message == nil {
-		s.Message = new(AggregateAttestationAndProof)
-	}
-	size += s.Message.SizeSSZ()
-
+// SizeSSZ returns the ssz encoded size in bytes for the BeaconBlockHeader object
+func (b *BeaconBlockHeader) SizeSSZ() (size int) {
+	size = 112
 	return
 }
 
-// HashTreeRoot ssz hashes the SignedAggregateAttestationAndProof object
-func (s *SignedAggregateAttestationAndProof) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(s)
+// HashTreeRoot ssz hashes the BeaconBlockHeader object
+func (b *BeaconBlockHeader) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(b)
 }
 
-// HashTreeRootWith ssz hashes the SignedAggregateAttestationAndProof object with a hasher
-func (s *SignedAggregateAttestationAndProof) HashTreeRootWith(hh *ssz.Hasher) (err error) {
-	indx := hh.Index()
+// HashTreeRootWith ssz hashes the BeaconBlockHeader object with a hasher
+func (b *BeaconBlockHeader) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+	indx := hh.Index()
+
+	// Field (0) 'Slot'
+	hh.PutUint64(b.Slot)
+
+	// Field (1) 'ProposerIndex'
+	hh.PutUint64(b.ProposerIndex)
+
+	// Field (2) 'ParentRoot'
+	if len(b.ParentRoot) != 32 {
+		err = ssz.ErrBytesLength
+		return
+	}
+	hh.PutBytes(b.ParentRoot)
 
-	// Field (0) 'Message'
-	if err = s.Message.HashTreeRootWith(hh); err != nil {
+	// Field (3) 'StateRoot'
+	if len(b.StateRoot) != 32 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	hh.PutBytes(b.StateRoot)
 
-	// Field (1) 'Signature'
-	if len(s.Signature) != 96 {
+	// Field (4) 'BodyRoot'
+	if len(b.BodyRoot) != 32 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(s.Signature)
+	hh.PutBytes(b.BodyRoot)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the AttestationData object
-func (a *AttestationData) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(a)
+// MarshalSSZ ssz marshals the SignedBeaconBlockHeader object
+func (s *SignedBeaconBlockHeader) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(s)
 }
 
-// MarshalSSZTo ssz marshals the AttestationData object to a target array
-func (a *AttestationData) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the SignedBeaconBlockHeader object to a target array
+func (s *SignedBeaconBlockHeader) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
 
-	// Field (0) 'Slot'
-	dst = ssz.MarshalUint64(dst, a.Slot)
-
-	// Field (1) 'CommitteeIndex'
-	dst = ssz.MarshalUint64(dst, a.CommitteeIndex)
-
-	// Field (2) 'BeaconBlockRoot'
-	if len(a.BeaconBlockRoot) != 32 {
-		err = ssz.ErrBytesLength
-		return
-	}
-	dst = append(dst, a.BeaconBlockRoot...)
-
-	// Field (3) 'Source'
-	if a.Source == nil {
-		a.Source = new(Checkpoint)
+	// Field (0) 'Header'
+	if s.Header == nil {
+		s.Header = new(BeaconBlockHeader)
 	}
-	if dst, err = a.Source.MarshalSSZTo(dst); err != nil {
+	if dst, err = s.Header.MarshalSSZTo(dst); err != nil {
 		return
 	}
 
-	// Field (4) 'Target'
-	if a.Target == nil {
-		a.Target = new(Checkpoint)
-	}
-	if dst, err = a.Target.MarshalSSZTo(dst); err != nil {
+	// Field (1) 'Signature'
+	if len(s.Signature) != 96 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	dst = append(dst, s.Signature...)
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the AttestationData object
-func (a *AttestationData) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the SignedBeaconBlockHeader object
+func (s *SignedBeaconBlockHeader) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size != 128 {
+	if size != 208 {
 		return ssz.ErrSize
 	}
 
-	// Field (0) 'Slot'
-	a.Slot = ssz.UnmarshallUint64(buf[0:8])
-
-	// Field (1) 'CommitteeIndex'
-	a.CommitteeIndex = ssz.UnmarshallUint64(buf[8:16])
-
-	// Field (2) 'BeaconBlockRoot'
-	a.BeaconBlockRoot = append(a.BeaconBlockRoot, buf[16:48]...)
-
-	// Field (3) 'Source'
-	if a.Source == nil {
-		a.Source = new(Checkpoint)
+	// Field (0) 'Header'
+	if s.Header == nil {
+		s.Header = new(BeaconBlockHeader)
 	}
-	if err = a.Source.UnmarshalSSZ(buf[48:88]); err != nil {
+	if err = s.Header.UnmarshalSSZ(buf[0:112]); err != nil {
 		return err
 	}
 
-	// Field (4) 'Target'
-	if a.Target == nil {
-		a.Target = new(Checkpoint)
-	}
-	if err = a.Target.UnmarshalSSZ(buf[88:128]); err != nil {
-		return err
+	// Field (1) 'Signature'
+	if cap(s.Signature) == 0 {
+		s.Signature = make([]byte, 0, len(buf[112:208]))
 	}
+	s.Signature = append(s.Signature, buf[112:208]...)
 
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the AttestationData object
-func (a *AttestationData) SizeSSZ() (size int) {
-	size = 128
+// SizeSSZ returns the ssz encoded size in bytes for the SignedBeaconBlockHeader object
+func (s *SignedBeaconBlockHeader) SizeSSZ() (size int) {
+	size = 208
 	return
 }
 
-// HashTreeRoot ssz hashes the AttestationData object
-func (a *AttestationData) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(a)
+// HashTreeRoot ssz hashes the SignedBeaconBlockHeader object
+func (s *SignedBeaconBlockHeader) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(s)
 }
 
-// HashTreeRootWith ssz hashes the AttestationData object with a hasher
-func (a *AttestationData) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the SignedBeaconBlockHeader object with a hasher
+func (s *SignedBeaconBlockHeader) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Slot'
-	hh.PutUint64(a.Slot)
-
-	// Field (1) 'CommitteeIndex'
-	hh.PutUint64(a.CommitteeIndex)
-
-	// Field (2) 'BeaconBlockRoot'
-	if len(a.BeaconBlockRoot) != 32 {
-		err = ssz.ErrBytesLength
-		return
-	}
-	hh.PutBytes(a.BeaconBlockRoot)
-
-	// Field (3) 'Source'
-	if err = a.Source.HashTreeRootWith(hh); err != nil {
+	// Field (0) 'Header'
+	if err = s.Header.HashTreeRootWith(hh); err != nil {
 		return
 	}
 
-	// Field (4) 'Target'
-	if err = a.Target.HashTreeRootWith(hh); err != nil {
+	// Field (1) 'Signature'
+	if len(s.Signature) != 96 {
+		err = ssz.ErrBytesLength
 		return
 	}
+	hh.PutBytes(s.Signature)
 
 	hh.Merkleize(indx)
 	return
 }
 
-// MarshalSSZ ssz marshals the Checkpoint object
-func (c *Checkpoint) MarshalSSZ() ([]byte, error) {
-	return ssz.MarshalSSZ(c)
+// MarshalSSZ ssz marshals the IndexedAttestation object
+func (i *IndexedAttestation) MarshalSSZ() ([]byte, error) {
+	return ssz.MarshalSSZ(i)
 }
 
-// MarshalSSZTo ssz marshals the Checkpoint object to a target array
-func (c *Checkpoint) MarshalSSZTo(buf []byte) (dst []byte, err error) {
+// MarshalSSZTo ssz marshals the IndexedAttestation object to a target array
+func (i *IndexedAttestation) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = buf
+	offset := int(228)
 
-	// Field (0) 'Epoch'
-	dst = ssz.MarshalUint64(dst, c.Epoch)
+	// Offset (0) 'AttestingIndices'
+	dst = ssz.WriteOffset(dst, offset)
+	offset += len(i.AttestingIndices) * 8
 
-	// Field (1) 'Root'
-	if len(c.Root) != 32 {
+	// Field (1) 'Data'
+	if i.Data == nil {
+		i.Data = new(AttestationData)
+	}
+	if dst, err = i.Data.MarshalSSZTo(dst); err != nil {
+		return
+	}
+
+	// Field (2) 'Signature'
+	if len(i.Signature) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	dst = append(dst, c.Root...)
+	dst = append(dst, i.Signature...)
+
+	// Field (0) 'AttestingIndices'
+	if len(i.AttestingIndices) > 2048 {
+		err = ssz.ErrListTooBig
+		return
+	}
+	for ii := 0; ii < len(i.AttestingIndices); ii++ {
+		dst = ssz.MarshalUint64(dst, i.AttestingIndices[ii])
+	}
 
 	return
 }
 
-// UnmarshalSSZ ssz unmarshals the Checkpoint object
-func (c *Checkpoint) UnmarshalSSZ(buf []byte) error {
+// UnmarshalSSZ ssz unmarshals the IndexedAttestation object
+func (i *IndexedAttestation) UnmarshalSSZ(buf []byte) error {
 	var err error
 	size := uint64(len(buf))
-	if size != 40 {
+	if size < 228 {
 		return ssz.ErrSize
 	}
 
-	// Field (0) 'Epoch'
-	c.Epoch = ssz.UnmarshallUint64(buf[0:8])
+	tail := buf
+	var o0 uint64
 
-	// Field (1) 'Root'
-	c.Root = append(c.Root, buf[8:40]...)
+	// Offset (0) 'AttestingIndices'
+	if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
+		return ssz.ErrOffset
+	}
+
+	// Field (1) 'Data'
+	if i.Data == nil {
+		i.Data = new(AttestationData)
+	}
+	if err = i.Data.UnmarshalSSZ(buf[4:132]); err != nil {
+		return err
+	}
 
+	// Field (2) 'Signature'
+	if cap(i.Signature) == 0 {
+		i.Signature = make([]byte, 0, len(buf[132:228]))
+	}
+	i.Signature = append(i.Signature, buf[132:228]...)
+
+	// Field (0) 'AttestingIndices'
+	{
+		buf = tail[o0:]
+		num, err := ssz.DivideInt2(len(buf), 8, 2048)
+		if err != nil {
+			return err
+		}
+		i.AttestingIndices = ssz.ExtendUint64(i.AttestingIndices, num)
+		for ii := 0; ii < num; ii++ {
+			i.AttestingIndices[ii] = ssz.UnmarshallUint64(buf[ii*8 : (ii+1)*8])
+		}
+	}
 	return err
 }
 
-// SizeSSZ returns the ssz encoded size in bytes for the Checkpoint object
-func (c *Checkpoint) SizeSSZ() (size int) {
-	size = 40
+// SizeSSZ returns the ssz encoded size in bytes for the IndexedAttestation object
+func (i *IndexedAttestation) SizeSSZ() (size int) {
+	size = 228
+
+	// Field (0) 'AttestingIndices'
+	size += len(i.AttestingIndices) * 8
+
 	return
 }
 
-// HashTreeRoot ssz hashes the Checkpoint object
-func (c *Checkpoint) HashTreeRoot() ([32]byte, error) {
-	return ssz.HashWithDefaultHasher(c)
+// HashTreeRoot ssz hashes the IndexedAttestation object
+func (i *IndexedAttestation) HashTreeRoot() ([32]byte, error) {
+	return ssz.HashWithDefaultHasher(i)
 }
 
-// HashTreeRootWith ssz hashes the Checkpoint object with a hasher
-func (c *Checkpoint) HashTreeRootWith(hh *ssz.Hasher) (err error) {
+// HashTreeRootWith ssz hashes the IndexedAttestation object with a hasher
+func (i *IndexedAttestation) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	indx := hh.Index()
 
-	// Field (0) 'Epoch'
-	hh.PutUint64(c.Epoch)
+	// Field (0) 'AttestingIndices'
+	{
+		if len(i.AttestingIndices) > 2048 {
+			err = ssz.ErrListTooBig
+			return
+		}
+		subIndx := hh.Index()
+		for _, i := range i.AttestingIndices {
+			hh.AppendUint64(i)
+		}
+		hh.FillUpTo32()
+		numItems := uint64(len(i.AttestingIndices))
+		hh.MerkleizeWithMixin(subIndx, numItems, ssz.CalculateLimit(2048, numItems, 8))
+	}
 
-	// Field (1) 'Root'
-	if len(c.Root) != 32 {
+	// Field (1) 'Data'
+	if err = i.Data.HashTreeRootWith(hh); err != nil {
+		return
+	}
+
+	// Field (2) 'Signature'
+	if len(i.Signature) != 96 {
 		err = ssz.ErrBytesLength
 		return
 	}
-	hh.PutBytes(c.Root)
+	hh.PutBytes(i.Signature)
 
 	hh.Merkleize(indx)
 	return
@@ -2167,16 +2241,16 @@ func (v *Validator) MarshalSSZTo(buf []byte) (dst []byte, err error) {
 	dst = ssz.MarshalBool(dst, v.Slashed)
 
 	// Field (4) 'ActivationEligibilityEpoch'
-	dst = ssz.MarshalUint64(dst, v.ActivationEligibilityEpoch)
+	dst = ssz.MarshalUint64(dst, uint64(v.ActivationEligibilityEpoch))
 
 	// Field (5) 'ActivationEpoch'
-	dst = ssz.MarshalUint64(dst, v.ActivationEpoch)
+	dst = ssz.MarshalUint64(dst, uint64(v.ActivationEpoch))
 
 	// Field (6) 'ExitEpoch'
-	dst = ssz.MarshalUint64(dst, v.ExitEpoch)
+	dst = ssz.MarshalUint64(dst, uint64(v.ExitEpoch))
 
 	// Field (7) 'WithdrawableEpoch'
-	dst = ssz.MarshalUint64(dst, v.WithdrawableEpoch)
+	dst = ssz.MarshalUint64(dst, uint64(v.WithdrawableEpoch))
 
 	return
 }
@@ -2190,9 +2264,15 @@ func (v *Validator) UnmarshalSSZ(buf []byte) error {
 	}
 
 	// Field (0) 'PublicKey'
+	if cap(v.PublicKey) == 0 {
+		v.PublicKey = make([]byte, 0, len(buf[0:48]))
+	}
 	v.PublicKey = append(v.PublicKey, buf[0:48]...)
 
 	// Field (1) 'WithdrawalCredentials'
+	if cap(v.WithdrawalCredentials) == 0 {
+		v.WithdrawalCredentials = make([]byte, 0, len(buf[48:80]))
+	}
 	v.WithdrawalCredentials = append(v.WithdrawalCredentials, buf[48:80]...)
 
 	// Field (2) 'EffectiveBalance'
@@ -2202,16 +2282,16 @@ func (v *Validator) UnmarshalSSZ(buf []byte) error {
 	v.Slashed = ssz.UnmarshalBool(buf[88:89])
 
 	// Field (4) 'ActivationEligibilityEpoch'
-	v.ActivationEligibilityEpoch = ssz.UnmarshallUint64(buf[89:97])
+	v.ActivationEligibilityEpoch = github_com_prysmaticlabs_eth2_types.Epoch(ssz.UnmarshallUint64(buf[89:97]))
 
 	// Field (5) 'ActivationEpoch'
-	v.ActivationEpoch = ssz.UnmarshallUint64(buf[97:105])
+	v.ActivationEpoch = github_com_prysmaticlabs_eth2_types.Epoch(ssz.UnmarshallUint64(buf[97:105]))
 
 	// Field (6) 'ExitEpoch'
-	v.ExitEpoch = ssz.UnmarshallUint64(buf[105:113])
+	v.ExitEpoch = github_com_prysmaticlabs_eth2_types.Epoch(ssz.UnmarshallUint64(buf[105:113]))
 
 	// Field (7) 'WithdrawableEpoch'
-	v.WithdrawableEpoch = ssz.UnmarshallUint64(buf[113:121])
+	v.WithdrawableEpoch = github_com_prysmaticlabs_eth2_types.Epoch(ssz.UnmarshallUint64(buf[113:121]))
 
 	return err
 }
@@ -2252,16 +2332,16 @@ func (v *Validator) HashTreeRootWith(hh *ssz.Hasher) (err error) {
 	hh.PutBool(v.Slashed)
 
 	// Field (4) 'ActivationEligibilityEpoch'
-	hh.PutUint64(v.ActivationEligibilityEpoch)
+	hh.PutUint64(uint64(v.ActivationEligibilityEpoch))
 
 	// Field (5) 'ActivationEpoch'
-	hh.PutUint64(v.ActivationEpoch)
+	hh.PutUint64(uint64(v.ActivationEpoch))
 
 	// Field (6) 'ExitEpoch'
-	hh.PutUint64(v.ExitEpoch)
+	hh.PutUint64(uint64(v.ExitEpoch))
 
 	// Field (7) 'WithdrawableEpoch'
-	hh.PutUint64(v.WithdrawableEpoch)
+	hh.PutUint64(uint64(v.WithdrawableEpoch))
 
 	hh.Merkleize(indx)
 	return
diff --git a/eth/v1alpha1/validator.pb.go b/eth/v1alpha1/validator.pb.go
index c9ee8692..1f91ba21 100755
--- a/eth/v1alpha1/validator.pb.go
+++ b/eth/v1alpha1/validator.pb.go
@@ -14,6 +14,7 @@ import (
 	_ "github.com/gogo/protobuf/gogoproto"
 	proto "github.com/gogo/protobuf/proto"
 	types "github.com/gogo/protobuf/types"
+	github_com_prysmaticlabs_eth2_types "github.com/prysmaticlabs/eth2-types"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
 	grpc "google.golang.org/grpc"
 	codes "google.golang.org/grpc/codes"
@@ -78,11 +79,11 @@ func (ValidatorStatus) EnumDescriptor() ([]byte, []int) {
 }
 
 type DomainRequest struct {
-	Epoch                uint64   `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	Domain               []byte   `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	Domain               []byte                                    `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *DomainRequest) Reset()         { *m = DomainRequest{} }
@@ -118,7 +119,7 @@ func (m *DomainRequest) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_DomainRequest proto.InternalMessageInfo
 
-func (m *DomainRequest) GetEpoch() uint64 {
+func (m *DomainRequest) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -596,14 +597,14 @@ func (m *ValidatorStatusRequest) GetPublicKey() []byte {
 }
 
 type ValidatorStatusResponse struct {
-	Status                    ValidatorStatus `protobuf:"varint,1,opt,name=status,proto3,enum=ethereum.eth.v1alpha1.ValidatorStatus" json:"status,omitempty"`
-	Eth1DepositBlockNumber    uint64          `protobuf:"varint,2,opt,name=eth1_deposit_block_number,json=eth1DepositBlockNumber,proto3" json:"eth1_deposit_block_number,omitempty"`
-	DepositInclusionSlot      uint64          `protobuf:"varint,3,opt,name=deposit_inclusion_slot,json=depositInclusionSlot,proto3" json:"deposit_inclusion_slot,omitempty"`
-	ActivationEpoch           uint64          `protobuf:"varint,4,opt,name=activation_epoch,json=activationEpoch,proto3" json:"activation_epoch,omitempty"`
-	PositionInActivationQueue uint64          `protobuf:"varint,5,opt,name=position_in_activation_queue,json=positionInActivationQueue,proto3" json:"position_in_activation_queue,omitempty"`
-	XXX_NoUnkeyedLiteral      struct{}        `json:"-"`
-	XXX_unrecognized          []byte          `json:"-"`
-	XXX_sizecache             int32           `json:"-"`
+	Status                    ValidatorStatus                           `protobuf:"varint,1,opt,name=status,proto3,enum=ethereum.eth.v1alpha1.ValidatorStatus" json:"status,omitempty"`
+	Eth1DepositBlockNumber    uint64                                    `protobuf:"varint,2,opt,name=eth1_deposit_block_number,json=eth1DepositBlockNumber,proto3" json:"eth1_deposit_block_number,omitempty"`
+	DepositInclusionSlot      uint64                                    `protobuf:"varint,3,opt,name=deposit_inclusion_slot,json=depositInclusionSlot,proto3" json:"deposit_inclusion_slot,omitempty"`
+	ActivationEpoch           github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,4,opt,name=activation_epoch,json=activationEpoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"activation_epoch,omitempty"`
+	PositionInActivationQueue uint64                                    `protobuf:"varint,5,opt,name=position_in_activation_queue,json=positionInActivationQueue,proto3" json:"position_in_activation_queue,omitempty"`
+	XXX_NoUnkeyedLiteral      struct{}                                  `json:"-"`
+	XXX_unrecognized          []byte                                    `json:"-"`
+	XXX_sizecache             int32                                     `json:"-"`
 }
 
 func (m *ValidatorStatusResponse) Reset()         { *m = ValidatorStatusResponse{} }
@@ -660,7 +661,7 @@ func (m *ValidatorStatusResponse) GetDepositInclusionSlot() uint64 {
 	return 0
 }
 
-func (m *ValidatorStatusResponse) GetActivationEpoch() uint64 {
+func (m *ValidatorStatusResponse) GetActivationEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.ActivationEpoch
 	}
@@ -793,11 +794,11 @@ func (m *MultipleValidatorStatusResponse) GetIndices() []uint64 {
 }
 
 type DutiesRequest struct {
-	Epoch                uint64   `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	PublicKeys           [][]byte `protobuf:"bytes,2,rep,name=public_keys,json=publicKeys,proto3" json:"public_keys,omitempty" ssz-size:"?,48"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	PublicKeys           [][]byte                                  `protobuf:"bytes,2,rep,name=public_keys,json=publicKeys,proto3" json:"public_keys,omitempty" ssz-size:"?,48"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *DutiesRequest) Reset()         { *m = DutiesRequest{} }
@@ -833,7 +834,7 @@ func (m *DutiesRequest) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_DutiesRequest proto.InternalMessageInfo
 
-func (m *DutiesRequest) GetEpoch() uint64 {
+func (m *DutiesRequest) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -1541,17 +1542,17 @@ func (m *CommitteeSubnetsSubscribeRequest) GetIsAggregator() []bool {
 }
 
 type Validator struct {
-	PublicKey                  []byte   `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty" ssz-size:"48" spec-name:"pubkey"`
-	WithdrawalCredentials      []byte   `protobuf:"bytes,2,opt,name=withdrawal_credentials,json=withdrawalCredentials,proto3" json:"withdrawal_credentials,omitempty" ssz-size:"32"`
-	EffectiveBalance           uint64   `protobuf:"varint,3,opt,name=effective_balance,json=effectiveBalance,proto3" json:"effective_balance,omitempty"`
-	Slashed                    bool     `protobuf:"varint,4,opt,name=slashed,proto3" json:"slashed,omitempty"`
-	ActivationEligibilityEpoch uint64   `protobuf:"varint,5,opt,name=activation_eligibility_epoch,json=activationEligibilityEpoch,proto3" json:"activation_eligibility_epoch,omitempty"`
-	ActivationEpoch            uint64   `protobuf:"varint,6,opt,name=activation_epoch,json=activationEpoch,proto3" json:"activation_epoch,omitempty"`
-	ExitEpoch                  uint64   `protobuf:"varint,7,opt,name=exit_epoch,json=exitEpoch,proto3" json:"exit_epoch,omitempty"`
-	WithdrawableEpoch          uint64   `protobuf:"varint,8,opt,name=withdrawable_epoch,json=withdrawableEpoch,proto3" json:"withdrawable_epoch,omitempty"`
-	XXX_NoUnkeyedLiteral       struct{} `json:"-"`
-	XXX_unrecognized           []byte   `json:"-"`
-	XXX_sizecache              int32    `json:"-"`
+	PublicKey                  []byte                                    `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty" ssz-size:"48" spec-name:"pubkey"`
+	WithdrawalCredentials      []byte                                    `protobuf:"bytes,2,opt,name=withdrawal_credentials,json=withdrawalCredentials,proto3" json:"withdrawal_credentials,omitempty" ssz-size:"32"`
+	EffectiveBalance           uint64                                    `protobuf:"varint,3,opt,name=effective_balance,json=effectiveBalance,proto3" json:"effective_balance,omitempty"`
+	Slashed                    bool                                      `protobuf:"varint,4,opt,name=slashed,proto3" json:"slashed,omitempty"`
+	ActivationEligibilityEpoch github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,5,opt,name=activation_eligibility_epoch,json=activationEligibilityEpoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"activation_eligibility_epoch,omitempty"`
+	ActivationEpoch            github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,6,opt,name=activation_epoch,json=activationEpoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"activation_epoch,omitempty"`
+	ExitEpoch                  github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,7,opt,name=exit_epoch,json=exitEpoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"exit_epoch,omitempty"`
+	WithdrawableEpoch          github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,8,opt,name=withdrawable_epoch,json=withdrawableEpoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"withdrawable_epoch,omitempty"`
+	XXX_NoUnkeyedLiteral       struct{}                                  `json:"-"`
+	XXX_unrecognized           []byte                                    `json:"-"`
+	XXX_sizecache              int32                                     `json:"-"`
 }
 
 func (m *Validator) Reset()         { *m = Validator{} }
@@ -1615,28 +1616,28 @@ func (m *Validator) GetSlashed() bool {
 	return false
 }
 
-func (m *Validator) GetActivationEligibilityEpoch() uint64 {
+func (m *Validator) GetActivationEligibilityEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.ActivationEligibilityEpoch
 	}
 	return 0
 }
 
-func (m *Validator) GetActivationEpoch() uint64 {
+func (m *Validator) GetActivationEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.ActivationEpoch
 	}
 	return 0
 }
 
-func (m *Validator) GetExitEpoch() uint64 {
+func (m *Validator) GetExitEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.ExitEpoch
 	}
 	return 0
 }
 
-func (m *Validator) GetWithdrawableEpoch() uint64 {
+func (m *Validator) GetWithdrawableEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.WithdrawableEpoch
 	}
@@ -1766,16 +1767,16 @@ func (m *ValidatorParticipation) GetPreviousEpochHeadAttestingGwei() uint64 {
 }
 
 type ValidatorInfo struct {
-	PublicKey            []byte          `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
-	Index                uint64          `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"`
-	Epoch                uint64          `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	Status               ValidatorStatus `protobuf:"varint,4,opt,name=status,proto3,enum=ethereum.eth.v1alpha1.ValidatorStatus" json:"status,omitempty"`
-	TransitionTimestamp  uint64          `protobuf:"varint,5,opt,name=transition_timestamp,json=transitionTimestamp,proto3" json:"transition_timestamp,omitempty"`
-	Balance              uint64          `protobuf:"varint,6,opt,name=balance,proto3" json:"balance,omitempty"`
-	EffectiveBalance     uint64          `protobuf:"varint,7,opt,name=effective_balance,json=effectiveBalance,proto3" json:"effective_balance,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
+	PublicKey            []byte                                    `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
+	Index                uint64                                    `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,3,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	Status               ValidatorStatus                           `protobuf:"varint,4,opt,name=status,proto3,enum=ethereum.eth.v1alpha1.ValidatorStatus" json:"status,omitempty"`
+	TransitionTimestamp  uint64                                    `protobuf:"varint,5,opt,name=transition_timestamp,json=transitionTimestamp,proto3" json:"transition_timestamp,omitempty"`
+	Balance              uint64                                    `protobuf:"varint,6,opt,name=balance,proto3" json:"balance,omitempty"`
+	EffectiveBalance     uint64                                    `protobuf:"varint,7,opt,name=effective_balance,json=effectiveBalance,proto3" json:"effective_balance,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *ValidatorInfo) Reset()         { *m = ValidatorInfo{} }
@@ -1825,7 +1826,7 @@ func (m *ValidatorInfo) GetIndex() uint64 {
 	return 0
 }
 
-func (m *ValidatorInfo) GetEpoch() uint64 {
+func (m *ValidatorInfo) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -1896,159 +1897,161 @@ func init() {
 func init() { proto.RegisterFile("eth/v1alpha1/validator.proto", fileDescriptor_f8ef4b6a7db76675) }
 
 var fileDescriptor_f8ef4b6a7db76675 = []byte{
-	// 2420 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x4b, 0x6f, 0x1b, 0xc9,
-	0x11, 0xce, 0x50, 0xb4, 0x2c, 0x95, 0x28, 0x4a, 0x6a, 0xd9, 0x7a, 0x70, 0xf5, 0xda, 0x91, 0x1f,
-	0xb2, 0x6c, 0x51, 0x96, 0xec, 0x38, 0x6b, 0x1b, 0xd9, 0x0d, 0x25, 0xd1, 0x36, 0x6d, 0x47, 0xab,
-	0x0c, 0x65, 0x3b, 0x0f, 0x03, 0x83, 0x26, 0xd9, 0x22, 0x1b, 0x1e, 0xce, 0x70, 0x67, 0x9a, 0xb2,
-	0xe5, 0x53, 0x76, 0x81, 0x00, 0x49, 0x10, 0x38, 0x87, 0x2c, 0x82, 0x20, 0xd8, 0xcb, 0x5e, 0x73,
-	0x09, 0xb0, 0x08, 0xf6, 0x96, 0xdc, 0x02, 0x04, 0x39, 0x05, 0xc8, 0x21, 0x37, 0x23, 0x30, 0xf2,
-	0x0b, 0x7c, 0xce, 0x21, 0xe8, 0xc7, 0xbc, 0x68, 0x8e, 0x28, 0x29, 0xc9, 0x49, 0x9c, 0xee, 0xaf,
-	0xaa, 0xbe, 0xee, 0xae, 0xae, 0xae, 0x2a, 0xc1, 0x0c, 0x61, 0x8d, 0xd5, 0xfd, 0x35, 0x6c, 0xb5,
-	0x1a, 0x78, 0x6d, 0x75, 0x1f, 0x5b, 0xb4, 0x86, 0x99, 0xe3, 0xe6, 0x5b, 0xae, 0xc3, 0x1c, 0x74,
-	0x96, 0xb0, 0x06, 0x71, 0x49, 0xbb, 0x99, 0x27, 0xac, 0x91, 0xf7, 0x61, 0xb9, 0x95, 0x3a, 0x65,
-	0x8d, 0x76, 0x25, 0x5f, 0x75, 0x9a, 0xab, 0x75, 0xa7, 0xee, 0xac, 0x0a, 0x74, 0xa5, 0xbd, 0x27,
-	0xbe, 0xc4, 0x87, 0xf8, 0x25, 0xb5, 0xe4, 0x66, 0xea, 0x8e, 0x53, 0xb7, 0xc8, 0x2a, 0x6e, 0xd1,
-	0x55, 0x6c, 0xdb, 0x0e, 0xc3, 0x8c, 0x3a, 0xb6, 0xa7, 0x66, 0xdf, 0x53, 0xb3, 0x81, 0x0e, 0xd2,
-	0x6c, 0xb1, 0x03, 0x35, 0x39, 0x1f, 0xa3, 0x57, 0x21, 0xb8, 0xea, 0xd8, 0x66, 0xc5, 0x72, 0xaa,
-	0xcf, 0x14, 0x60, 0x2e, 0x06, 0xc0, 0x8c, 0x11, 0x4f, 0xaa, 0x97, 0xf3, 0xfa, 0xb7, 0x61, 0x78,
-	0xcb, 0x69, 0x62, 0x6a, 0x1b, 0xe4, 0x93, 0x36, 0xf1, 0x18, 0x3a, 0x03, 0xa7, 0x48, 0xcb, 0xa9,
-	0x36, 0xa6, 0xb4, 0x05, 0x6d, 0x29, 0x6d, 0xc8, 0x0f, 0x34, 0x01, 0xfd, 0x35, 0x01, 0x9b, 0x4a,
-	0x2d, 0x68, 0x4b, 0x19, 0x43, 0x7d, 0xe9, 0xb7, 0x21, 0xeb, 0x8b, 0x7b, 0x2d, 0xc7, 0xf6, 0x08,
-	0xba, 0x04, 0xa3, 0x1e, 0xad, 0xdb, 0x98, 0xb5, 0x5d, 0x62, 0x2a, 0x19, 0x4d, 0xc8, 0x8c, 0x04,
-	0xe3, 0x52, 0x44, 0x37, 0x20, 0xf7, 0xd8, 0xdf, 0xd0, 0x42, 0x95, 0xd1, 0x7d, 0x41, 0xcc, 0x27,
-	0x72, 0x1d, 0x86, 0x5a, 0xed, 0x8a, 0x45, 0xab, 0xe6, 0x33, 0x72, 0xe0, 0x4d, 0x69, 0x0b, 0x7d,
-	0x4b, 0x99, 0x8d, 0xf1, 0xb7, 0xaf, 0xe7, 0x47, 0x3c, 0xef, 0xe5, 0x8a, 0x47, 0x5f, 0x92, 0x5b,
-	0xfa, 0x47, 0x57, 0xae, 0x7f, 0xa0, 0x1b, 0x20, 0x71, 0x0f, 0xc8, 0x81, 0xa7, 0xff, 0x5b, 0x83,
-	0xf7, 0xba, 0x2a, 0x55, 0xf4, 0x1e, 0xc1, 0x00, 0xdf, 0x80, 0xb6, 0x47, 0xa4, 0xca, 0xa1, 0xf5,
-	0x9b, 0xf9, 0xae, 0x87, 0x98, 0x3f, 0x44, 0x4b, 0xbe, 0x2c, 0x54, 0x18, 0x81, 0xaa, 0xdc, 0x4f,
-	0x34, 0xe8, 0x97, 0x83, 0x68, 0x16, 0x20, 0xe4, 0xad, 0x96, 0x3e, 0x18, 0x30, 0x44, 0x77, 0xa0,
-	0x5f, 0x4a, 0x89, 0x9d, 0x1c, 0x5a, 0xcf, 0xf7, 0x32, 0xaf, 0x6c, 0x29, 0xd3, 0x86, 0x92, 0xe6,
-	0xe7, 0x44, 0xed, 0x1a, 0x79, 0x31, 0xd5, 0x27, 0xcf, 0x49, 0x7c, 0xe8, 0x5f, 0x68, 0x80, 0x36,
-	0x1b, 0x98, 0xda, 0x65, 0x86, 0x5d, 0x16, 0xac, 0x7a, 0x0a, 0x4e, 0x7b, 0x7c, 0x80, 0xd4, 0x04,
-	0xa1, 0x01, 0xc3, 0xff, 0x44, 0xef, 0x43, 0xa6, 0x4e, 0x6c, 0xe2, 0x51, 0xcf, 0x64, 0xb4, 0x49,
-	0x04, 0xa9, 0xb4, 0x31, 0xa4, 0xc6, 0x76, 0x69, 0x93, 0xa0, 0x12, 0x4c, 0xfa, 0x90, 0xc0, 0xff,
-	0x3d, 0xd3, 0x75, 0x1c, 0x26, 0x6c, 0x67, 0x36, 0xc6, 0xde, 0xbe, 0x9e, 0x1f, 0x0e, 0x0f, 0xe5,
-	0xda, 0xba, 0x6e, 0x9c, 0x55, 0x12, 0xc1, 0x2a, 0x3c, 0xc3, 0x71, 0x98, 0xfe, 0x00, 0xb2, 0xe5,
-	0x03, 0xbb, 0x4a, 0x6a, 0x01, 0xb3, 0x09, 0xe8, 0xf7, 0xc4, 0x88, 0x22, 0xa6, 0xbe, 0x8e, 0xc0,
-	0x4b, 0x2f, 0xc1, 0xd9, 0x40, 0x7d, 0x89, 0xaf, 0xde, 0xf7, 0x9c, 0xab, 0xef, 0x9e, 0x40, 0x27,
-	0x47, 0xee, 0x36, 0xe1, 0xa1, 0xe8, 0x79, 0x98, 0xe8, 0x54, 0xa5, 0xf8, 0x05, 0xdb, 0xac, 0x45,
-	0xb7, 0xf9, 0x7e, 0x04, 0xef, 0x9f, 0xcf, 0x49, 0x6d, 0x7f, 0x9d, 0x82, 0xc9, 0x84, 0xc3, 0x46,
-	0x1f, 0x06, 0xce, 0xc2, 0x35, 0x65, 0xd7, 0x2f, 0x1c, 0xd1, 0x59, 0x7c, 0x27, 0xb9, 0x09, 0xd3,
-	0x84, 0x35, 0xd6, 0xcc, 0x1a, 0x69, 0x39, 0x1e, 0x65, 0x32, 0x32, 0x98, 0x76, 0xbb, 0x59, 0x21,
-	0xae, 0xda, 0xd2, 0x09, 0x0e, 0xd8, 0x92, 0xf3, 0x1b, 0x7c, 0x7a, 0x5b, 0xcc, 0xa2, 0xeb, 0x30,
-	0xe1, 0x4b, 0x51, 0xbb, 0x6a, 0xb5, 0x3d, 0xea, 0xd8, 0xa6, 0x67, 0xa9, 0x43, 0x4f, 0x1b, 0x67,
-	0xd4, 0x6c, 0xc9, 0x9f, 0x2c, 0x5b, 0x0e, 0xe3, 0xb7, 0x1f, 0x07, 0xd7, 0xc5, 0x94, 0x81, 0x24,
-	0x2d, 0xf0, 0x23, 0xe1, 0x78, 0x51, 0x84, 0x94, 0x8f, 0x60, 0x46, 0x28, 0xe0, 0x40, 0x6a, 0x9b,
-	0x11, 0xb1, 0x4f, 0xda, 0xa4, 0x4d, 0xa6, 0x4e, 0x09, 0xb1, 0x69, 0x1f, 0x53, 0xb2, 0xc3, 0x7b,
-	0xf8, 0x3d, 0x0e, 0xd0, 0x5b, 0x30, 0xf7, 0xdd, 0xb6, 0xc5, 0x68, 0xcb, 0x22, 0x09, 0x87, 0x71,
-	0xa2, 0x10, 0xc2, 0x2f, 0x0b, 0xb5, 0x6b, 0xb4, 0x4a, 0xf8, 0x15, 0xed, 0x5b, 0xea, 0x33, 0xfc,
-	0x4f, 0xfd, 0x8f, 0x1a, 0xcc, 0x27, 0x9a, 0x54, 0x47, 0x76, 0x32, 0x9b, 0xf7, 0x23, 0x61, 0x29,
-	0x25, 0xc2, 0xd2, 0x71, 0xe3, 0x42, 0x20, 0x1f, 0xe5, 0xdf, 0xb7, 0xd0, 0xb7, 0x94, 0x0e, 0xf9,
-	0xff, 0x08, 0x86, 0xb7, 0xda, 0x8c, 0x12, 0xef, 0xf0, 0x60, 0xdf, 0xb1, 0x84, 0xd4, 0xd1, 0x22,
-	0xef, 0x9f, 0xd3, 0x90, 0xf5, 0xb5, 0xab, 0xbd, 0xb8, 0x03, 0xfd, 0x35, 0x31, 0xa2, 0x42, 0xed,
-	0x72, 0xc2, 0x9a, 0xe2, 0x62, 0xfc, 0xf3, 0x60, 0x23, 0x35, 0xa5, 0x19, 0x4a, 0x1a, 0x3d, 0x85,
-	0x33, 0xd5, 0xb6, 0xeb, 0x12, 0x9b, 0x49, 0x97, 0x32, 0x95, 0xd6, 0xd4, 0x71, 0xb5, 0x1a, 0x48,
-	0xe9, 0x11, 0x2e, 0x28, 0x01, 0xe8, 0x31, 0x8c, 0xd9, 0xe4, 0x45, 0x87, 0xea, 0xbe, 0x63, 0xab,
-	0x1e, 0xe1, 0x4a, 0x22, 0x7a, 0x73, 0x7f, 0x48, 0x41, 0x9a, 0xcf, 0xa0, 0x19, 0x18, 0xac, 0x3a,
-	0xcd, 0x26, 0x65, 0x8c, 0x10, 0xb1, 0x13, 0x69, 0x23, 0x1c, 0x40, 0x17, 0x61, 0x24, 0xf8, 0x30,
-	0x65, 0xac, 0x91, 0x37, 0x33, 0x1b, 0x0c, 0x8b, 0x90, 0x84, 0x16, 0x61, 0x58, 0xbe, 0xdf, 0xc4,
-	0x8d, 0x5e, 0xc4, 0x8c, 0x3f, 0x28, 0x2e, 0xe0, 0x79, 0xc8, 0xb6, 0x5c, 0xa7, 0xe5, 0x78, 0x0a,
-	0xe4, 0x4d, 0xa5, 0x85, 0xc1, 0x61, 0x7f, 0x94, 0xa3, 0xbc, 0x8e, 0x30, 0x75, 0xaa, 0x77, 0x98,
-	0x8a, 0x84, 0xa2, 0xfe, 0x13, 0x85, 0xa2, 0x8b, 0x30, 0x12, 0xbc, 0x1e, 0x6a, 0x99, 0xa7, 0xe5,
-	0x32, 0xf7, 0x63, 0x91, 0x57, 0xff, 0x99, 0x06, 0x19, 0x11, 0x88, 0x7c, 0x27, 0x45, 0x90, 0x16,
-	0xcb, 0x95, 0x3e, 0x2a, 0x7e, 0xa3, 0x1b, 0x30, 0xec, 0x62, 0xbb, 0x86, 0x1d, 0xd3, 0x25, 0xfb,
-	0x04, 0x5b, 0x32, 0x2d, 0xe9, 0xb6, 0x84, 0x8c, 0xc4, 0x19, 0x02, 0x86, 0x56, 0x60, 0xa0, 0xee,
-	0xe2, 0xbd, 0x3d, 0xca, 0x68, 0xf2, 0xe3, 0x15, 0x40, 0xf4, 0x4d, 0x18, 0xd9, 0x91, 0xfb, 0x16,
-	0xf8, 0xf4, 0x55, 0x00, 0x19, 0x45, 0xc5, 0x03, 0xa8, 0x25, 0xe9, 0x18, 0x14, 0x20, 0xf1, 0xe8,
-	0x15, 0x61, 0x5c, 0x29, 0x29, 0xbe, 0xa0, 0xe1, 0x9b, 0x9c, 0x87, 0x41, 0xf2, 0x82, 0xb2, 0x1e,
-	0x7a, 0x06, 0x38, 0x46, 0xa8, 0x79, 0x04, 0x13, 0x85, 0x30, 0x7d, 0xdb, 0xc2, 0x0c, 0x1f, 0xb6,
-	0x41, 0x47, 0xf5, 0x2a, 0xfd, 0x09, 0x64, 0xa5, 0xda, 0x80, 0x58, 0x11, 0xce, 0x46, 0xf2, 0x44,
-	0xb3, 0x86, 0x19, 0xee, 0x41, 0x72, 0x1c, 0x77, 0x10, 0xe3, 0x7c, 0xff, 0xa1, 0xc1, 0x74, 0xa1,
-	0x5e, 0x77, 0x49, 0x1d, 0x33, 0x52, 0x26, 0x16, 0xa9, 0x46, 0xb3, 0xbb, 0xff, 0x86, 0x33, 0xda,
-	0x8c, 0x79, 0xaf, 0x3c, 0xc7, 0x73, 0x6f, 0x5f, 0xcf, 0x2f, 0xc4, 0x8e, 0x7e, 0xc1, 0x6b, 0x91,
-	0xea, 0x8a, 0x8d, 0x9b, 0xe4, 0x96, 0xde, 0x6a, 0x57, 0x9e, 0x91, 0x83, 0x98, 0x43, 0x7f, 0x00,
-	0x59, 0x6e, 0xd5, 0x0c, 0xb2, 0x52, 0xf1, 0x50, 0xbd, 0xb3, 0xbe, 0x9b, 0x37, 0x74, 0x63, 0x98,
-	0x03, 0xcb, 0x3e, 0x4e, 0xff, 0x54, 0x83, 0x5c, 0xb7, 0x95, 0xa9, 0xfd, 0xab, 0xc2, 0x38, 0xf6,
-	0x67, 0x4d, 0x6c, 0xd7, 0xcc, 0x96, 0xeb, 0x38, 0x7b, 0x62, 0xa5, 0x43, 0xeb, 0xd7, 0x12, 0xae,
-	0x4d, 0xa0, 0x2f, 0x72, 0xc6, 0x05, 0xbb, 0xb6, 0xc3, 0x45, 0x8d, 0xb1, 0x40, 0x9f, 0x3f, 0xa4,
-	0xff, 0x5a, 0x83, 0x19, 0xce, 0x88, 0xd4, 0x42, 0x26, 0xed, 0x4a, 0x93, 0xfb, 0x97, 0xdc, 0xe0,
-	0x7d, 0xc8, 0x79, 0x62, 0xde, 0x4c, 0x26, 0x93, 0x94, 0xfa, 0x76, 0x28, 0xee, 0x46, 0x69, 0xd2,
-	0xeb, 0xc0, 0xf8, 0xc4, 0xf6, 0x60, 0x36, 0x81, 0xd7, 0xff, 0xd6, 0xbd, 0x3e, 0xd3, 0x60, 0x61,
-	0xd3, 0x77, 0x8b, 0x72, 0xbb, 0x62, 0x13, 0xe6, 0x95, 0xdb, 0x15, 0xaf, 0xea, 0xd2, 0x0a, 0x89,
-	0xbc, 0x6f, 0x32, 0x08, 0xca, 0xa8, 0x2b, 0x3f, 0x78, 0x20, 0x8d, 0xf8, 0x59, 0x4d, 0xbe, 0x23,
-	0x69, 0x23, 0x13, 0x7a, 0x59, 0x4d, 0x80, 0xa8, 0x17, 0xec, 0x9d, 0xe3, 0x8a, 0x17, 0x61, 0xc0,
-	0xc8, 0x50, 0xaf, 0x10, 0x8c, 0xe9, 0x5f, 0xf4, 0xc1, 0x60, 0x10, 0xf0, 0x3a, 0xdc, 0x52, 0x3b,
-	0x99, 0x5b, 0xde, 0x83, 0x89, 0xe7, 0x94, 0x35, 0x6a, 0x2e, 0x7e, 0x8e, 0x2d, 0xb3, 0xea, 0x92,
-	0x1a, 0xb1, 0x19, 0xc5, 0x96, 0xd7, 0x3d, 0xc4, 0x89, 0x64, 0x3b, 0x14, 0xd8, 0x0c, 0xf1, 0xe8,
-	0x32, 0x8c, 0x91, 0xbd, 0x3d, 0xee, 0x9c, 0xfb, 0xc4, 0xac, 0x60, 0x0b, 0xdb, 0x55, 0xa2, 0xde,
-	0x8c, 0xd1, 0x60, 0x62, 0x43, 0x8e, 0x8b, 0x0a, 0xc1, 0xc2, 0x5e, 0x83, 0xd4, 0xc4, 0x35, 0xe0,
-	0x15, 0x82, 0xfc, 0x44, 0xdf, 0x81, 0x99, 0x68, 0x4a, 0x67, 0xd1, 0x3a, 0xad, 0x50, 0x8b, 0xb2,
-	0x03, 0x95, 0xde, 0xc9, 0x3c, 0x2d, 0x17, 0x49, 0xef, 0x42, 0x88, 0xcc, 0xf4, 0xba, 0x25, 0x85,
-	0xfd, 0xdd, 0x93, 0xc2, 0x59, 0x00, 0x11, 0x14, 0x25, 0x48, 0x3e, 0x10, 0x22, 0x4c, 0xca, 0xe9,
-	0x15, 0x40, 0xc1, 0x5a, 0x2b, 0x16, 0x51, 0xb0, 0x01, 0x01, 0x1b, 0x8b, 0xce, 0x08, 0xb8, 0xfe,
-	0xea, 0x54, 0x24, 0x4f, 0xdf, 0xc1, 0x2e, 0xa3, 0x55, 0xda, 0x12, 0xd6, 0xd0, 0x87, 0x30, 0x5d,
-	0xb7, 0x9c, 0x0a, 0xb6, 0xcc, 0x56, 0x74, 0xdc, 0x74, 0x31, 0x23, 0xe2, 0xe8, 0x52, 0x22, 0x03,
-	0x99, 0x94, 0xa0, 0x98, 0xac, 0x81, 0x19, 0x41, 0x8b, 0x30, 0xb4, 0xef, 0x30, 0x52, 0x33, 0xc5,
-	0x0d, 0x92, 0x71, 0x4a, 0x48, 0x80, 0x18, 0x2e, 0xf2, 0x51, 0x74, 0x09, 0xb2, 0x72, 0xbf, 0x38,
-	0x55, 0x81, 0xeb, 0x0b, 0x70, 0xc3, 0xfe, 0x8c, 0x84, 0xde, 0x84, 0xe9, 0x78, 0x8a, 0x83, 0xe5,
-	0xb9, 0xd5, 0x9f, 0x13, 0xaa, 0x32, 0xe8, 0x89, 0x68, 0xee, 0x22, 0x92, 0x61, 0x72, 0xf7, 0x39,
-	0xa1, 0x3c, 0x91, 0xee, 0x10, 0x15, 0xd7, 0x85, 0xda, 0x75, 0x29, 0xad, 0x12, 0xe9, 0x98, 0xb4,
-	0x8f, 0x10, 0x0a, 0x1e, 0xc2, 0x62, 0x5c, 0x01, 0xc3, 0x6e, 0x9d, 0xb0, 0x4e, 0x3d, 0xf2, 0xc8,
-	0xe6, 0xa3, 0x7a, 0x76, 0x05, 0x30, 0xae, 0xed, 0x36, 0xe4, 0x5a, 0x2e, 0xd9, 0xa7, 0x4e, 0xdb,
-	0xeb, 0xb2, 0x14, 0x79, 0xa4, 0x93, 0x3e, 0xa2, 0x73, 0x2d, 0x05, 0x98, 0xed, 0x14, 0x8e, 0x93,
-	0x90, 0x67, 0x9d, 0x8b, 0xcb, 0xc7, 0xec, 0x6f, 0xc3, 0xb9, 0x0e, 0x15, 0xdd, 0x97, 0x33, 0x28,
-	0x34, 0x2d, 0xc4, 0x34, 0x75, 0x5b, 0xcf, 0x7d, 0xd0, 0x3b, 0xf4, 0x35, 0x08, 0xae, 0x75, 0x6a,
-	0x03, 0xa1, 0x6d, 0x2e, 0xa6, 0xed, 0x1e, 0xc1, 0xb5, 0x98, 0x2e, 0xfd, 0xf3, 0x14, 0x0c, 0x47,
-	0x0a, 0xcd, 0x3d, 0xa7, 0x57, 0xb7, 0x20, 0x28, 0x3f, 0x53, 0x91, 0xf2, 0x33, 0x4c, 0xdb, 0xfb,
-	0xa2, 0x69, 0x7b, 0x98, 0xa1, 0xa5, 0x4f, 0x94, 0xa1, 0xad, 0xc1, 0x19, 0xe6, 0x62, 0x5b, 0x95,
-	0x64, 0xbc, 0xea, 0xf6, 0x18, 0x6e, 0xb6, 0x94, 0xff, 0x8c, 0x87, 0x73, 0xbb, 0xfe, 0x14, 0x8f,
-	0x1a, 0x7e, 0x60, 0x91, 0xde, 0xe1, 0x7f, 0x76, 0x0f, 0x3e, 0xa7, 0xbb, 0x07, 0x9f, 0xe5, 0xdf,
-	0x6a, 0x30, 0xd2, 0xc1, 0x0a, 0x21, 0xc8, 0x3e, 0xda, 0x7e, 0xb0, 0xfd, 0xf1, 0x93, 0x6d, 0xb3,
-	0xbc, 0x5b, 0xd8, 0x7d, 0x54, 0x1e, 0xfd, 0x06, 0x1a, 0x86, 0xc1, 0xad, 0xe2, 0xce, 0xc7, 0xe5,
-	0xd2, 0x6e, 0x71, 0x6b, 0x54, 0x43, 0x43, 0x70, 0x7a, 0xa7, 0xb8, 0xbd, 0x55, 0xda, 0xbe, 0x3b,
-	0x9a, 0x42, 0x00, 0xfd, 0x85, 0xcd, 0xdd, 0xd2, 0xe3, 0xe2, 0x68, 0x1f, 0x9f, 0x28, 0x7e, 0xbf,
-	0xb4, 0xcb, 0x27, 0xd2, 0x28, 0x03, 0x03, 0xe5, 0x87, 0x85, 0xf2, 0x3d, 0xfe, 0x75, 0x8a, 0xc3,
-	0xf8, 0x54, 0x71, 0x6b, 0xb4, 0x9f, 0xc3, 0x4a, 0xdb, 0x8f, 0x0b, 0x0f, 0x4b, 0x5b, 0xa3, 0xa7,
-	0xd1, 0x24, 0x8c, 0xef, 0x14, 0x8c, 0xdd, 0x52, 0xe1, 0xe1, 0xc3, 0x1f, 0x98, 0xa1, 0x95, 0x81,
-	0xf5, 0xaf, 0xc7, 0x61, 0x7c, 0x43, 0x34, 0xd6, 0xb6, 0x9d, 0x5a, 0x58, 0xf6, 0xa1, 0x1f, 0x6b,
-	0x30, 0x78, 0x97, 0x30, 0x55, 0x44, 0x9c, 0xeb, 0x51, 0x29, 0x88, 0xf7, 0x28, 0x77, 0xfe, 0x48,
-	0xf5, 0x84, 0x7e, 0xe1, 0xb3, 0xbf, 0xff, 0xeb, 0x57, 0xa9, 0x05, 0x34, 0xb7, 0xda, 0xbd, 0xfb,
-	0xb8, 0xaa, 0xea, 0xa2, 0x5f, 0x68, 0x90, 0x29, 0x33, 0x97, 0xe0, 0xe6, 0xff, 0x83, 0xc5, 0x8a,
-	0x60, 0x71, 0x11, 0x9d, 0x3f, 0x9c, 0xc5, 0xaa, 0x27, 0x18, 0x5c, 0xd5, 0xd0, 0xa7, 0x1a, 0x80,
-	0x6c, 0xed, 0xf1, 0x57, 0x3a, 0x99, 0x4c, 0xb4, 0xdf, 0x98, 0x4c, 0x26, 0xd6, 0x56, 0x3c, 0xc2,
-	0x96, 0x08, 0x3c, 0x7a, 0xa5, 0xc1, 0xd8, 0x13, 0x4c, 0xd9, 0x1d, 0xc7, 0x0d, 0xfb, 0x60, 0x68,
-	0x22, 0x2f, 0x9b, 0xa8, 0x79, 0xbf, 0x89, 0x9a, 0x2f, 0x36, 0x5b, 0xec, 0x20, 0x77, 0x29, 0xc1,
-	0xf8, 0xbb, 0x2d, 0x34, 0xfd, 0xba, 0x20, 0x70, 0x19, 0x5d, 0x4a, 0x22, 0x50, 0xe5, 0x32, 0xa2,
-	0xad, 0xa6, 0x76, 0xe4, 0xa7, 0x29, 0xed, 0xaa, 0x86, 0x7e, 0x1f, 0x12, 0x0a, 0x1b, 0x18, 0x68,
-	0xed, 0x38, 0x4d, 0x47, 0xb9, 0x51, 0xeb, 0xc7, 0xef, 0x53, 0xea, 0x6b, 0xbd, 0x48, 0x87, 0xef,
-	0x6f, 0x78, 0x8c, 0x9f, 0x6b, 0x90, 0x8d, 0x77, 0xc3, 0xd0, 0x95, 0x5e, 0xb6, 0xa3, 0xfd, 0xb7,
-	0xdc, 0xca, 0x11, 0xd1, 0x8a, 0xe4, 0x79, 0x41, 0x72, 0x1e, 0xcd, 0x26, 0x91, 0x94, 0x41, 0xef,
-	0x37, 0x5d, 0x82, 0xc4, 0xca, 0x51, 0x9b, 0x24, 0x92, 0xd8, 0x31, 0x7b, 0x2a, 0xbd, 0x9d, 0x4e,
-	0x45, 0xce, 0xaf, 0x34, 0x98, 0x4c, 0xe8, 0x0b, 0xa1, 0x6f, 0x26, 0xd8, 0x3c, 0xbc, 0x75, 0x95,
-	0xbb, 0x71, 0x5c, 0x31, 0x45, 0x79, 0x49, 0x50, 0xd6, 0xd1, 0xc2, 0xe1, 0x94, 0x89, 0x87, 0x5e,
-	0xc2, 0xc0, 0x5d, 0x22, 0x5b, 0x7e, 0x68, 0x31, 0xc1, 0x5a, 0xb4, 0x0e, 0xcf, 0xe9, 0x49, 0x20,
-	0x11, 0x1c, 0x05, 0xb4, 0xf7, 0x59, 0x8a, 0xb2, 0x18, 0xfd, 0x5c, 0x83, 0x8c, 0xaa, 0x89, 0x25,
-	0x81, 0xa5, 0x43, 0x2b, 0x91, 0x88, 0x85, 0x5c, 0xd2, 0xab, 0xd6, 0x51, 0xa7, 0xfb, 0x1b, 0xa1,
-	0x1f, 0xce, 0xe4, 0x96, 0xb6, 0xcc, 0x1d, 0x0b, 0xdd, 0xf5, 0x5f, 0xfd, 0xa0, 0xc8, 0x48, 0xf4,
-	0xad, 0xee, 0x45, 0x78, 0x22, 0xaf, 0x0e, 0xb8, 0x7e, 0x59, 0xf0, 0x3a, 0x8f, 0x16, 0x13, 0xaf,
-	0x64, 0x28, 0x80, 0x7e, 0xa9, 0x01, 0x52, 0x0b, 0x8b, 0xe8, 0x41, 0x7a, 0x6f, 0x5b, 0x89, 0x71,
-	0x35, 0x5e, 0xec, 0xeb, 0x79, 0x41, 0x67, 0x49, 0x3f, 0x0a, 0x1d, 0xbe, 0x59, 0x5f, 0x69, 0x30,
-	0x2b, 0x0b, 0xba, 0x77, 0x2b, 0x60, 0x51, 0x00, 0xa2, 0xab, 0xbd, 0x2a, 0xdc, 0xce, 0x5e, 0x40,
-	0x6e, 0xed, 0x18, 0x12, 0x8a, 0xf6, 0x15, 0x41, 0xfb, 0x82, 0xfe, 0x7e, 0x22, 0x6d, 0x5f, 0x96,
-	0x93, 0xfe, 0x93, 0x06, 0x8b, 0x92, 0x74, 0x67, 0x69, 0x1a, 0xa7, 0x7e, 0xed, 0x68, 0xf5, 0x70,
-	0xac, 0xd0, 0xce, 0x5d, 0x3f, 0x9e, 0xd0, 0x89, 0x16, 0xf0, 0x4a, 0x83, 0xa1, 0x48, 0x0f, 0x09,
-	0x2d, 0x1f, 0x6a, 0xf3, 0xb1, 0x63, 0xb5, 0x6d, 0x86, 0xdd, 0x03, 0x8e, 0xcd, 0x2d, 0x1f, 0x7e,
-	0x61, 0xa2, 0x3d, 0x29, 0xfd, 0xa2, 0x60, 0xf5, 0xbe, 0x3e, 0x93, 0xc4, 0x8a, 0x97, 0x62, 0x9c,
-	0xd0, 0x97, 0x1a, 0x4c, 0x07, 0xd5, 0x76, 0x67, 0x19, 0x8e, 0xbe, 0x95, 0xf4, 0xac, 0xf6, 0xa8,
-	0xd7, 0x73, 0x09, 0xef, 0xb4, 0x7e, 0x4d, 0xf0, 0x5a, 0xd1, 0x97, 0x12, 0xa3, 0x9a, 0x50, 0xc8,
-	0xff, 0x48, 0x85, 0xb7, 0xb4, 0xe5, 0x8d, 0x2f, 0xb5, 0xbf, 0xbc, 0x99, 0xd3, 0xfe, 0xf6, 0x66,
-	0x4e, 0xfb, 0xe7, 0x9b, 0x39, 0x0d, 0xa6, 0x1d, 0xb7, 0xde, 0x9d, 0xd7, 0x46, 0xf8, 0xdc, 0xed,
-	0x70, 0xbb, 0x3b, 0xda, 0x0f, 0x6f, 0x44, 0xfe, 0x83, 0xdb, 0x72, 0x0f, 0xbc, 0x26, 0x66, 0xb4,
-	0x6a, 0xe1, 0x8a, 0xb7, 0xea, 0x6b, 0xc0, 0x2d, 0xea, 0xc5, 0xd8, 0xdc, 0x26, 0xac, 0xf1, 0xbb,
-	0xd4, 0xd9, 0xa2, 0x6f, 0xa1, 0x18, 0xb1, 0xf0, 0xd7, 0x70, 0xfc, 0x69, 0x91, 0x35, 0x9e, 0xfa,
-	0xe3, 0x95, 0x7e, 0xb1, 0xd0, 0x6b, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0xb7, 0x5c, 0xa2, 0xba,
-	0x67, 0x1e, 0x00, 0x00,
+	// 2458 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xcd, 0x6f, 0x1c, 0x49,
+	0x15, 0xa7, 0xc7, 0xe3, 0xaf, 0xe7, 0xf1, 0x57, 0x39, 0xf1, 0xc7, 0xac, 0x63, 0x7b, 0xdb, 0x9b,
+	0x8d, 0xe3, 0xc4, 0xe3, 0xd8, 0x09, 0x61, 0x93, 0x48, 0xbb, 0x1a, 0xdb, 0x93, 0x64, 0x12, 0xe3,
+	0x35, 0x3d, 0x4e, 0xb2, 0xa0, 0x48, 0xad, 0x9a, 0x99, 0xf2, 0x4c, 0x29, 0x3d, 0xdd, 0xbd, 0xdd,
+	0x35, 0x4e, 0x9c, 0x13, 0xbb, 0x12, 0x12, 0xac, 0x50, 0x38, 0x80, 0x10, 0x42, 0x5c, 0xf6, 0xca,
+	0x05, 0x69, 0x85, 0xb8, 0xc1, 0x05, 0x21, 0x21, 0x4e, 0x48, 0x1c, 0xe0, 0x14, 0xa1, 0x08, 0xfe,
+	0x81, 0x1c, 0x11, 0x07, 0x54, 0x55, 0xfd, 0x9d, 0x69, 0x8f, 0xed, 0x0d, 0xa7, 0x99, 0xae, 0x7a,
+	0xef, 0x57, 0xbf, 0x57, 0xf5, 0xea, 0xd5, 0x7b, 0x0f, 0x66, 0x09, 0x6b, 0xae, 0x1e, 0xac, 0x61,
+	0xc3, 0x6e, 0xe2, 0xb5, 0xd5, 0x03, 0x6c, 0xd0, 0x3a, 0x66, 0x96, 0x53, 0xb0, 0x1d, 0x8b, 0x59,
+	0xe8, 0x2c, 0x61, 0x4d, 0xe2, 0x90, 0x76, 0xab, 0x40, 0x58, 0xb3, 0xe0, 0x8b, 0xe5, 0x57, 0x1a,
+	0x94, 0x35, 0xdb, 0xd5, 0x42, 0xcd, 0x6a, 0xad, 0x36, 0xac, 0x86, 0xb5, 0x2a, 0xa4, 0xab, 0xed,
+	0x7d, 0xf1, 0x25, 0x3e, 0xc4, 0x3f, 0x89, 0x92, 0x9f, 0x6d, 0x58, 0x56, 0xc3, 0x20, 0xab, 0xd8,
+	0xa6, 0xab, 0xd8, 0x34, 0x2d, 0x86, 0x19, 0xb5, 0x4c, 0xd7, 0x9b, 0x7d, 0xc7, 0x9b, 0x0d, 0x30,
+	0x48, 0xcb, 0x66, 0x87, 0xde, 0xe4, 0x7c, 0x8c, 0x5e, 0x95, 0xe0, 0x9a, 0x65, 0xea, 0x55, 0xc3,
+	0xaa, 0x3d, 0xf1, 0x04, 0xe6, 0x62, 0x02, 0x98, 0x31, 0xe2, 0x4a, 0x78, 0x39, 0xaf, 0x1a, 0x30,
+	0xbc, 0x65, 0xb5, 0x30, 0x35, 0x35, 0xf2, 0x69, 0x9b, 0xb8, 0x0c, 0x6d, 0x42, 0x2f, 0xb1, 0xad,
+	0x5a, 0x73, 0x5a, 0x59, 0x50, 0x96, 0xb2, 0x1b, 0x2b, 0xff, 0x79, 0x39, 0x7f, 0x31, 0x62, 0x8e,
+	0xed, 0x1c, 0xba, 0x2d, 0xcc, 0x68, 0xcd, 0xc0, 0x55, 0x77, 0x95, 0xb0, 0xe6, 0xfa, 0x0a, 0x3b,
+	0xb4, 0x89, 0x5b, 0x28, 0x71, 0x25, 0x4d, 0xea, 0xa2, 0x49, 0xe8, 0xab, 0x0b, 0xd4, 0xe9, 0xcc,
+	0x82, 0xb2, 0x94, 0xd3, 0xbc, 0x2f, 0xf5, 0x16, 0x8c, 0xf8, 0xab, 0xb9, 0xb6, 0x65, 0xba, 0x04,
+	0x5d, 0x84, 0x31, 0x97, 0x36, 0x4c, 0xcc, 0xda, 0x0e, 0xd1, 0x3d, 0x1d, 0x45, 0xe8, 0x8c, 0x06,
+	0xe3, 0x52, 0x45, 0xd5, 0x20, 0xff, 0xd0, 0xdf, 0xff, 0x62, 0x8d, 0xd1, 0x03, 0x61, 0x87, 0xcf,
+	0xfb, 0x1a, 0x0c, 0xd9, 0xed, 0xaa, 0x41, 0x6b, 0xfa, 0x13, 0x72, 0xe8, 0x4e, 0x2b, 0x0b, 0x3d,
+	0x4b, 0xb9, 0x8d, 0x89, 0xd7, 0x2f, 0xe7, 0x47, 0x5d, 0xf7, 0xf9, 0x8a, 0x4b, 0x9f, 0x93, 0x9b,
+	0xea, 0x47, 0x97, 0xaf, 0x7d, 0xa0, 0x6a, 0x20, 0xe5, 0xee, 0x93, 0x43, 0x57, 0xfd, 0xaf, 0x02,
+	0xef, 0x74, 0x04, 0xf5, 0xe8, 0x3d, 0x80, 0x01, 0xbe, 0x5f, 0x6d, 0x97, 0x48, 0xc8, 0xa1, 0xf5,
+	0x1b, 0x85, 0x8e, 0x67, 0x5e, 0x38, 0x02, 0xa5, 0x50, 0x11, 0x10, 0x5a, 0x00, 0x95, 0xff, 0x81,
+	0x02, 0x7d, 0x72, 0x10, 0x9d, 0x03, 0x08, 0x79, 0x7b, 0xa6, 0x0f, 0x06, 0x0c, 0xd1, 0x6d, 0xe8,
+	0x93, 0x5a, 0x62, 0x27, 0x87, 0xd6, 0x0b, 0xdd, 0x96, 0xf7, 0xd6, 0xf2, 0x96, 0xd6, 0x3c, 0x6d,
+	0x74, 0x06, 0x7a, 0xa9, 0x59, 0x27, 0xcf, 0xa6, 0x7b, 0xf8, 0xb1, 0x6a, 0xf2, 0x43, 0xfd, 0x95,
+	0x02, 0x68, 0xb3, 0x89, 0xa9, 0x59, 0x61, 0xd8, 0x61, 0x81, 0xd5, 0xd3, 0xd0, 0xef, 0xf2, 0x01,
+	0x52, 0x17, 0x84, 0x06, 0x34, 0xff, 0x13, 0xbd, 0x0b, 0xb9, 0x06, 0x31, 0x89, 0x4b, 0x5d, 0x9d,
+	0xd1, 0x16, 0x11, 0xa4, 0xb2, 0xda, 0x90, 0x37, 0xb6, 0x47, 0x5b, 0x04, 0x95, 0x61, 0xca, 0x17,
+	0x09, 0xae, 0x8b, 0xab, 0x3b, 0x96, 0xc5, 0xc4, 0xda, 0xb9, 0x8d, 0xf1, 0xd7, 0x2f, 0xe7, 0x87,
+	0xc3, 0x43, 0xb9, 0xba, 0xae, 0x6a, 0x67, 0x3d, 0x8d, 0xc0, 0x0a, 0x57, 0xb3, 0x2c, 0xa6, 0xde,
+	0x87, 0x91, 0xca, 0xa1, 0x59, 0x23, 0xf5, 0x80, 0xd9, 0x24, 0xf4, 0xb9, 0x62, 0xc4, 0x23, 0xe6,
+	0x7d, 0x1d, 0x83, 0x97, 0x5a, 0x86, 0xb3, 0x01, 0x7c, 0x99, 0x5b, 0xef, 0x7b, 0xce, 0x95, 0x37,
+	0x4f, 0x20, 0xc9, 0x91, 0xbb, 0x4d, 0x78, 0x28, 0x6a, 0x01, 0x26, 0x93, 0x50, 0x1e, 0xbf, 0x60,
+	0x9b, 0x95, 0xe8, 0x36, 0xdf, 0x8b, 0xc8, 0xfb, 0xe7, 0x73, 0xda, 0xb5, 0xff, 0x9d, 0x81, 0xa9,
+	0x94, 0xc3, 0x46, 0x1f, 0x06, 0xce, 0xc2, 0x91, 0x46, 0xd6, 0xdf, 0x3f, 0xa6, 0xb3, 0xf8, 0x4e,
+	0x72, 0x03, 0x66, 0x08, 0x6b, 0xae, 0xe9, 0x75, 0x62, 0x5b, 0x2e, 0x65, 0x32, 0x90, 0xe8, 0x66,
+	0xbb, 0x55, 0x25, 0x8e, 0xb7, 0xa5, 0x93, 0x5c, 0x60, 0x4b, 0xce, 0x6f, 0xf0, 0xe9, 0x1d, 0x31,
+	0x8b, 0xae, 0xc1, 0xa4, 0xaf, 0x45, 0xcd, 0x9a, 0xd1, 0x76, 0xa9, 0x65, 0xea, 0xae, 0xe1, 0x1d,
+	0x7a, 0x56, 0x3b, 0xe3, 0xcd, 0x96, 0xfd, 0xc9, 0x8a, 0x61, 0x31, 0xf4, 0x09, 0x8c, 0xe1, 0xe0,
+	0xba, 0xe8, 0x32, 0xee, 0x64, 0x4f, 0x13, 0x77, 0x46, 0x43, 0x18, 0x31, 0x80, 0x3e, 0x82, 0x59,
+	0xb1, 0x1e, 0xc7, 0xa5, 0xa6, 0x1e, 0x59, 0xe5, 0xd3, 0x36, 0x69, 0x93, 0xe9, 0x5e, 0xc1, 0x6a,
+	0xc6, 0x97, 0x29, 0x9b, 0xe1, 0xb5, 0xfd, 0x0e, 0x17, 0x50, 0x6d, 0x98, 0xfb, 0x76, 0xdb, 0x60,
+	0xd4, 0x36, 0x48, 0xca, 0xd9, 0x9d, 0x2a, 0xe2, 0xf0, 0xbb, 0x45, 0xcd, 0x3a, 0xad, 0x11, 0x7e,
+	0xa3, 0x7b, 0x96, 0x7a, 0x34, 0xff, 0x53, 0xfd, 0xbd, 0x02, 0xf3, 0xa9, 0x4b, 0x7a, 0x27, 0x7c,
+	0xba, 0x35, 0xef, 0x45, 0xa2, 0x58, 0x46, 0x44, 0xb1, 0x93, 0x86, 0x91, 0x40, 0x3f, 0xca, 0xbf,
+	0x67, 0xa1, 0x67, 0x29, 0x1b, 0xf2, 0xff, 0x42, 0x81, 0xe1, 0xad, 0x36, 0xa3, 0xc4, 0x7d, 0xab,
+	0x6f, 0x49, 0xc2, 0xe4, 0xcc, 0xf1, 0x02, 0xfb, 0x9f, 0xb2, 0x30, 0xe2, 0x93, 0xf1, 0xf6, 0xee,
+	0x36, 0xf4, 0xd5, 0xc5, 0x88, 0x17, 0xc9, 0x97, 0x53, 0xf6, 0x20, 0xae, 0xc6, 0x3f, 0x0f, 0x37,
+	0x32, 0xd3, 0x8a, 0xe6, 0x69, 0xa3, 0xc7, 0x70, 0xa6, 0xd6, 0x76, 0x1c, 0x62, 0x32, 0xe9, 0xb1,
+	0xba, 0x87, 0x9a, 0x39, 0x29, 0xaa, 0x86, 0x3c, 0x1c, 0x61, 0xaf, 0x14, 0x40, 0x0f, 0x61, 0xdc,
+	0x24, 0xcf, 0x12, 0xd0, 0x3d, 0x27, 0x86, 0x1e, 0xe5, 0x20, 0x11, 0xdc, 0xfc, 0x6f, 0x33, 0x90,
+	0xe5, 0x33, 0x68, 0x16, 0x06, 0x6b, 0x56, 0xab, 0x45, 0x19, 0x23, 0x44, 0xec, 0x44, 0x56, 0x0b,
+	0x07, 0xd0, 0x05, 0x18, 0x0d, 0x3e, 0x74, 0x19, 0xca, 0xe4, 0xc5, 0x1f, 0x09, 0x86, 0x45, 0xc4,
+	0x43, 0x8b, 0x30, 0x2c, 0xb3, 0x09, 0xe2, 0x44, 0xef, 0x79, 0xce, 0x1f, 0x14, 0xf7, 0xfb, 0x3c,
+	0x8c, 0xd8, 0x8e, 0x65, 0x5b, 0xae, 0x27, 0xe4, 0x4e, 0x67, 0xc5, 0x82, 0xc3, 0xfe, 0x28, 0x97,
+	0x72, 0x13, 0x51, 0xb0, 0xb7, 0x7b, 0x14, 0x8c, 0x44, 0xba, 0xbe, 0x53, 0x45, 0xba, 0x0b, 0x30,
+	0x1a, 0x3c, 0x4e, 0x9e, 0x99, 0xfd, 0xd2, 0xcc, 0x83, 0x58, 0x60, 0x57, 0x7f, 0xa4, 0x40, 0x4e,
+	0xc4, 0x39, 0xdf, 0xa7, 0x11, 0x64, 0x85, 0xb9, 0x32, 0xc0, 0x8b, 0xff, 0xe8, 0x3a, 0x0c, 0x3b,
+	0xd8, 0xac, 0x63, 0x4b, 0x77, 0xc8, 0x01, 0xc1, 0x86, 0xcc, 0x7a, 0x3a, 0x99, 0x90, 0x93, 0x72,
+	0x9a, 0x10, 0x43, 0x2b, 0x30, 0xd0, 0x70, 0xf0, 0xfe, 0x3e, 0x65, 0x34, 0xfd, 0x6d, 0x0c, 0x44,
+	0xd4, 0x4d, 0x18, 0xdd, 0x95, 0xfb, 0x16, 0xf8, 0xf4, 0x15, 0x00, 0x19, 0xa4, 0xc5, 0xfb, 0xaa,
+	0xa4, 0x61, 0x0c, 0x0a, 0x21, 0xf1, 0xa6, 0x96, 0x60, 0xc2, 0x03, 0x29, 0x3d, 0xa3, 0xe1, 0x93,
+	0x5f, 0x80, 0x41, 0xf2, 0x8c, 0xb2, 0x2e, 0x38, 0x03, 0x5c, 0x46, 0xc0, 0x3c, 0x80, 0xc9, 0x62,
+	0x98, 0x4c, 0x6e, 0x61, 0x86, 0x8f, 0xda, 0xa0, 0xe3, 0x7a, 0x95, 0xfa, 0x08, 0x46, 0x24, 0x6c,
+	0x40, 0xac, 0x04, 0x67, 0x23, 0x59, 0xab, 0x5e, 0xc7, 0x0c, 0x77, 0x21, 0x39, 0x81, 0x13, 0xc4,
+	0x38, 0xdf, 0xbf, 0x2b, 0x30, 0x53, 0x6c, 0x34, 0x1c, 0xd2, 0xc0, 0x8c, 0x54, 0x88, 0x41, 0x6a,
+	0xd1, 0xe4, 0xf1, 0xeb, 0x70, 0x46, 0x9b, 0x31, 0xef, 0x95, 0xe7, 0xf8, 0xde, 0xeb, 0x97, 0xf3,
+	0x0b, 0xb1, 0xa3, 0x5f, 0x70, 0x6d, 0x52, 0x5b, 0x31, 0x71, 0x8b, 0xdc, 0x54, 0xed, 0x76, 0xf5,
+	0x09, 0x39, 0x8c, 0x39, 0xf4, 0x07, 0x30, 0xc2, 0x57, 0xd5, 0x83, 0xa4, 0x57, 0xbc, 0x83, 0x6f,
+	0xd8, 0x77, 0xe3, 0xba, 0xaa, 0x0d, 0x73, 0xc1, 0x8a, 0x2f, 0xa7, 0x7e, 0xa6, 0x40, 0xbe, 0x93,
+	0x65, 0xde, 0xfe, 0xd5, 0x60, 0x02, 0xfb, 0xb3, 0x3a, 0x36, 0xeb, 0xba, 0xed, 0x58, 0xd6, 0xbe,
+	0xb0, 0x74, 0x68, 0xfd, 0x6a, 0xca, 0xb5, 0x09, 0xf0, 0x22, 0x67, 0x5c, 0x34, 0xeb, 0xbb, 0x5c,
+	0x55, 0x1b, 0x0f, 0xf0, 0xfc, 0x21, 0xf5, 0xe7, 0x0a, 0xcc, 0x72, 0x46, 0xa4, 0x1e, 0x32, 0x69,
+	0x57, 0x5b, 0xdc, 0xbf, 0xe4, 0x06, 0x1f, 0x40, 0xde, 0x15, 0xf3, 0x7a, 0x3a, 0x99, 0xb4, 0xcc,
+	0x3a, 0x01, 0xdc, 0x89, 0xd2, 0x94, 0x9b, 0x90, 0xf1, 0x89, 0xed, 0xc3, 0xb9, 0x14, 0x5e, 0x6f,
+	0xd7, 0xbd, 0x3e, 0x57, 0x60, 0x61, 0xd3, 0x77, 0x8b, 0x4a, 0xbb, 0x6a, 0x12, 0xe6, 0x56, 0xda,
+	0x55, 0xb7, 0xe6, 0xd0, 0x2a, 0xf1, 0x37, 0xe1, 0x0c, 0xf4, 0xca, 0x20, 0x28, 0xa3, 0xae, 0xfc,
+	0xe0, 0x81, 0x34, 0xe2, 0x67, 0x75, 0xf9, 0x8e, 0x64, 0xb5, 0x5c, 0xe8, 0x65, 0x75, 0x21, 0x44,
+	0xdd, 0x60, 0xef, 0x2c, 0x47, 0xbc, 0x08, 0x03, 0x5a, 0x8e, 0xba, 0xc5, 0x60, 0x4c, 0xfd, 0x47,
+	0x16, 0x06, 0x83, 0x80, 0x97, 0x70, 0x4b, 0xe5, 0x74, 0x6e, 0x79, 0x17, 0x26, 0x9f, 0x52, 0xd6,
+	0xac, 0x3b, 0xf8, 0x29, 0x36, 0xf4, 0x9a, 0x43, 0xea, 0xc4, 0x64, 0x14, 0x1b, 0x6e, 0xe7, 0x10,
+	0x27, 0x72, 0xf9, 0x50, 0x61, 0x33, 0x94, 0x47, 0x97, 0x60, 0x9c, 0xec, 0xef, 0x73, 0xe7, 0x3c,
+	0x20, 0x7a, 0x15, 0x1b, 0xd8, 0xac, 0x11, 0xef, 0xcd, 0x18, 0x0b, 0x26, 0x36, 0xe4, 0xb8, 0x28,
+	0x40, 0x0c, 0xec, 0x36, 0x49, 0x5d, 0x5c, 0x03, 0x5e, 0x80, 0xc8, 0x4f, 0x64, 0xc1, 0x6c, 0x34,
+	0x63, 0x34, 0x68, 0x83, 0x56, 0xa9, 0x41, 0xd9, 0xa1, 0x97, 0x3d, 0xf6, 0x9e, 0x26, 0xd3, 0xc8,
+	0x47, 0xb2, 0xc7, 0x10, 0x51, 0x26, 0x92, 0x9d, 0x52, 0xd4, 0xbe, 0xb7, 0x92, 0xa2, 0x6e, 0x03,
+	0x88, 0x90, 0x2b, 0x31, 0xfb, 0x4f, 0x83, 0x29, 0x62, 0xb6, 0x44, 0x7b, 0x0c, 0x28, 0xd8, 0xf8,
+	0xaa, 0x41, 0x3c, 0xd4, 0x81, 0xd3, 0xa0, 0x8e, 0x47, 0x81, 0xc4, 0x90, 0xfa, 0xa2, 0x37, 0x52,
+	0xc2, 0xec, 0x62, 0x87, 0xd1, 0x1a, 0xb5, 0x85, 0x2d, 0xe8, 0x43, 0x98, 0x69, 0x18, 0x56, 0x15,
+	0x1b, 0xba, 0x1d, 0x1d, 0xd7, 0x1d, 0xcc, 0x88, 0x70, 0xbb, 0x8c, 0xc8, 0x9e, 0xa6, 0xa4, 0x50,
+	0x4c, 0x57, 0xc3, 0x8c, 0xa0, 0x45, 0x18, 0x3a, 0xb0, 0x18, 0xa9, 0xeb, 0xe2, 0xf6, 0xcb, 0x18,
+	0x2b, 0x34, 0x40, 0x0c, 0x97, 0xf8, 0x28, 0xba, 0x08, 0x23, 0xf2, 0xac, 0xb9, 0x65, 0x42, 0xae,
+	0x27, 0x90, 0x1b, 0xf6, 0x67, 0xa4, 0xe8, 0x0d, 0x98, 0x89, 0xa7, 0x67, 0x58, 0xfa, 0x5c, 0xe3,
+	0x29, 0xa1, 0xb2, 0xb8, 0xd0, 0x26, 0xa3, 0x79, 0x97, 0x48, 0xfc, 0xc9, 0x9d, 0xa7, 0x84, 0xf2,
+	0xa2, 0x21, 0xa1, 0x2a, 0xae, 0x3a, 0x35, 0x1b, 0x52, 0xdb, 0x2b, 0x1a, 0x62, 0xda, 0xbe, 0x84,
+	0x00, 0xd8, 0x86, 0xc5, 0x38, 0x00, 0xc3, 0x4e, 0x83, 0xb0, 0x24, 0x8e, 0xf0, 0x1f, 0x6d, 0x3e,
+	0x8a, 0xb3, 0x27, 0x04, 0xe3, 0x68, 0xb7, 0x20, 0x6f, 0x3b, 0xe4, 0x80, 0x5a, 0x6d, 0xb7, 0x83,
+	0x29, 0x32, 0x5f, 0x99, 0xf2, 0x25, 0x92, 0xb6, 0x14, 0xe1, 0x5c, 0x52, 0x39, 0x4e, 0x42, 0xb8,
+	0x86, 0x96, 0x8f, 0xeb, 0xc7, 0xd6, 0xdf, 0x81, 0xf7, 0x12, 0x10, 0x9d, 0xcd, 0x19, 0x14, 0x48,
+	0x0b, 0x31, 0xa4, 0x4e, 0xf6, 0xdc, 0x03, 0x35, 0x81, 0xd7, 0x24, 0xb8, 0x9e, 0x44, 0x03, 0x81,
+	0x36, 0x17, 0x43, 0xbb, 0x4b, 0x70, 0x3d, 0x86, 0xa5, 0xfe, 0x31, 0x03, 0xc3, 0x91, 0x1a, 0x7c,
+	0xdf, 0xea, 0xd6, 0x48, 0x09, 0x2a, 0xf3, 0x4c, 0xa4, 0x32, 0x0f, 0x2b, 0x94, 0x9e, 0xaf, 0x51,
+	0xa1, 0x84, 0xc9, 0x68, 0xf6, 0x54, 0xc9, 0xe8, 0x1a, 0x9c, 0x61, 0x0e, 0x36, 0xbd, 0x6a, 0x95,
+	0xd1, 0x16, 0x7f, 0x5e, 0x5a, 0xb6, 0xe7, 0x6e, 0x13, 0xe1, 0xdc, 0x9e, 0x3f, 0xc5, 0x03, 0xa4,
+	0x1f, 0x43, 0xa5, 0x33, 0xf9, 0x9f, 0x9d, 0xe3, 0x6c, 0x7f, 0xe7, 0x38, 0xbb, 0xfc, 0x4b, 0x05,
+	0x46, 0x13, 0xac, 0x10, 0x82, 0x91, 0x07, 0x3b, 0xf7, 0x77, 0x3e, 0x7e, 0xb4, 0xa3, 0x57, 0xf6,
+	0x8a, 0x7b, 0x0f, 0x2a, 0x63, 0xdf, 0x40, 0xc3, 0x30, 0xb8, 0x55, 0xda, 0xfd, 0xb8, 0x52, 0xde,
+	0x2b, 0x6d, 0x8d, 0x29, 0x68, 0x08, 0xfa, 0x77, 0x4b, 0x3b, 0x5b, 0xe5, 0x9d, 0x3b, 0x63, 0x19,
+	0x04, 0xd0, 0x57, 0xdc, 0xdc, 0x2b, 0x3f, 0x2c, 0x8d, 0xf5, 0xf0, 0x89, 0xd2, 0x27, 0xe5, 0x3d,
+	0x3e, 0x91, 0x45, 0x39, 0x18, 0xa8, 0x6c, 0x17, 0x2b, 0x77, 0xf9, 0x57, 0x2f, 0x17, 0xe3, 0x53,
+	0xa5, 0xad, 0xb1, 0x3e, 0x2e, 0x56, 0xde, 0x79, 0x58, 0xdc, 0x2e, 0x6f, 0x8d, 0xf5, 0xa3, 0x29,
+	0x98, 0xd8, 0x2d, 0x6a, 0x7b, 0xe5, 0xe2, 0xf6, 0xf6, 0x77, 0xf5, 0x70, 0x95, 0x81, 0xf5, 0xdf,
+	0x4d, 0xc0, 0xc4, 0x86, 0xe8, 0x68, 0xee, 0x58, 0xf5, 0xb0, 0x22, 0x46, 0xdf, 0x57, 0x60, 0xf0,
+	0x0e, 0x61, 0x5e, 0xbd, 0xf4, 0x5e, 0x97, 0xa2, 0x48, 0x3c, 0xbd, 0xf9, 0xf3, 0xc7, 0x2a, 0x9d,
+	0xd4, 0xf7, 0x3f, 0xff, 0xdb, 0xbf, 0x7e, 0x9a, 0x59, 0x40, 0x73, 0xab, 0x9d, 0xdb, 0xbe, 0xab,
+	0x5e, 0x09, 0xf8, 0x63, 0x05, 0x72, 0x15, 0xe6, 0x10, 0xdc, 0xfa, 0x7f, 0xb0, 0x58, 0x11, 0x2c,
+	0x2e, 0xa0, 0xf3, 0x47, 0xb3, 0x58, 0x75, 0x05, 0x83, 0x2b, 0x0a, 0xfa, 0x4c, 0x01, 0x90, 0x4d,
+	0x52, 0x9e, 0x90, 0xa4, 0x93, 0x89, 0x36, 0x7a, 0xd3, 0xc9, 0xc4, 0x1a, 0xb4, 0xc7, 0xd8, 0x12,
+	0x21, 0x8f, 0x5e, 0x28, 0x30, 0xfe, 0x08, 0x53, 0x76, 0xdb, 0x72, 0xc2, 0x8e, 0x22, 0x9a, 0x2c,
+	0xc8, 0xee, 0x75, 0xc1, 0xef, 0x5e, 0x17, 0x4a, 0x2d, 0x9b, 0x1d, 0xe6, 0x2f, 0xa6, 0x2c, 0xfe,
+	0x66, 0x33, 0x52, 0xbd, 0x26, 0x08, 0x5c, 0x42, 0x17, 0xd3, 0x08, 0xd4, 0xb8, 0x8e, 0x68, 0x50,
+	0x7a, 0x3b, 0xf2, 0xc3, 0x8c, 0x72, 0x45, 0x41, 0xbf, 0x09, 0x09, 0x85, 0xbd, 0x1d, 0xb4, 0x76,
+	0x92, 0xf6, 0xad, 0xdc, 0xa8, 0xf5, 0x93, 0x77, 0x7c, 0xd5, 0xb5, 0x6e, 0xa4, 0xc3, 0x64, 0x20,
+	0x3c, 0xc6, 0x9f, 0x29, 0x30, 0x12, 0xef, 0x2b, 0xa2, 0xcb, 0xdd, 0xd6, 0x8e, 0x76, 0x32, 0xf3,
+	0x2b, 0xc7, 0x94, 0xf6, 0x48, 0x9e, 0x17, 0x24, 0xe7, 0xd1, 0xb9, 0x34, 0x92, 0x32, 0x46, 0xfe,
+	0xa2, 0x43, 0x90, 0x58, 0x39, 0x6e, 0xff, 0x48, 0x12, 0x3b, 0x61, 0xbb, 0xa9, 0xbb, 0xd3, 0x79,
+	0x91, 0xf3, 0x2b, 0x05, 0xa6, 0x52, 0x5a, 0x66, 0xe8, 0x9b, 0x29, 0x6b, 0x1e, 0xdd, 0xd5, 0xcb,
+	0x5f, 0x3f, 0xa9, 0x9a, 0x47, 0x79, 0x49, 0x50, 0x56, 0xd1, 0xc2, 0xd1, 0x94, 0x89, 0x8b, 0x9e,
+	0xc3, 0xc0, 0x1d, 0x22, 0x9b, 0xa7, 0x68, 0x31, 0x65, 0xb5, 0x68, 0xcb, 0x21, 0xaf, 0xa6, 0x09,
+	0x89, 0xe0, 0x28, 0x44, 0xbb, 0x9f, 0xa5, 0xe8, 0x00, 0xa0, 0x2f, 0x14, 0xc8, 0x79, 0xe5, 0xbf,
+	0x24, 0xb0, 0x74, 0x64, 0xd1, 0x15, 0x59, 0x21, 0x9f, 0xf6, 0xaa, 0x25, 0x5a, 0x12, 0xfe, 0x46,
+	0xa8, 0x47, 0x33, 0xb9, 0xa9, 0x2c, 0x73, 0xc7, 0x42, 0x77, 0xfc, 0x24, 0x21, 0xa8, 0xa7, 0x52,
+	0x7d, 0xab, 0x73, 0xbf, 0x21, 0x95, 0x57, 0x42, 0x5c, 0xbd, 0x24, 0x78, 0x9d, 0x47, 0x8b, 0xa9,
+	0x57, 0x32, 0x54, 0x40, 0x3f, 0x51, 0x00, 0x79, 0x86, 0x45, 0x70, 0x90, 0xda, 0x7d, 0xad, 0xd4,
+	0xb8, 0x1a, 0xef, 0x6b, 0xa8, 0x05, 0x41, 0x67, 0x49, 0x3d, 0x0e, 0x1d, 0xbe, 0x59, 0x5f, 0x29,
+	0x70, 0x4e, 0xd6, 0xae, 0x6f, 0x16, 0xfb, 0xa2, 0xd6, 0x45, 0x57, 0xba, 0x15, 0xf3, 0xc9, 0xb6,
+	0x47, 0x7e, 0xed, 0x04, 0x1a, 0x1e, 0xed, 0xcb, 0x82, 0xf6, 0xfb, 0xea, 0xbb, 0xa9, 0xb4, 0x7d,
+	0x5d, 0x4e, 0xfa, 0x0f, 0x0a, 0x2c, 0x4a, 0xd2, 0xc9, 0x2a, 0x3c, 0x4e, 0xfd, 0xea, 0xf1, 0x4a,
+	0xff, 0x58, 0x4f, 0x21, 0x7f, 0xed, 0x64, 0x4a, 0xa7, 0x32, 0xe0, 0x85, 0x02, 0x43, 0x91, 0x76,
+	0x19, 0x5a, 0x3e, 0x72, 0xcd, 0x87, 0x96, 0xd1, 0x36, 0x19, 0x76, 0x0e, 0xb9, 0x6c, 0x7e, 0xf9,
+	0xe8, 0x0b, 0x13, 0x6d, 0xbf, 0xa9, 0x17, 0x04, 0xab, 0x77, 0xd5, 0xd9, 0x34, 0x56, 0xbc, 0xd0,
+	0xe3, 0x84, 0xbe, 0x54, 0x60, 0x26, 0x68, 0x2c, 0x24, 0x3b, 0x0e, 0xe8, 0x5b, 0x69, 0xcf, 0x6a,
+	0x97, 0xd6, 0x44, 0x3e, 0xe5, 0x9d, 0x56, 0xaf, 0x0a, 0x5e, 0x2b, 0xea, 0x52, 0x6a, 0x54, 0x13,
+	0x80, 0xfc, 0x47, 0x02, 0xde, 0x54, 0x96, 0x37, 0xbe, 0x54, 0xfe, 0xfc, 0x6a, 0x4e, 0xf9, 0xeb,
+	0xab, 0x39, 0xe5, 0x9f, 0xaf, 0xe6, 0x14, 0x98, 0xb1, 0x9c, 0x46, 0x67, 0x5e, 0x1b, 0xe1, 0x73,
+	0xb7, 0xcb, 0xd7, 0xdd, 0x55, 0xbe, 0x77, 0xfd, 0xa8, 0xec, 0x5b, 0x20, 0x60, 0x9b, 0xba, 0x31,
+	0x36, 0xb7, 0x08, 0x6b, 0xfe, 0x3a, 0x73, 0xb6, 0xe4, 0xaf, 0x50, 0x8a, 0xac, 0xf0, 0x97, 0x70,
+	0xfc, 0x71, 0x89, 0x35, 0x1f, 0xfb, 0xe3, 0xd5, 0x3e, 0x61, 0xe8, 0xd5, 0xff, 0x05, 0x00, 0x00,
+	0xff, 0xff, 0x8b, 0x0c, 0xc4, 0x19, 0xe0, 0x1f, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -4886,7 +4889,7 @@ func (m *DomainRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -5924,7 +5927,7 @@ func (m *ValidatorStatusResponse) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.ActivationEpoch |= uint64(b&0x7F) << shift
+				m.ActivationEpoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -6374,7 +6377,7 @@ func (m *DutiesRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -8259,7 +8262,7 @@ func (m *Validator) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.ActivationEligibilityEpoch |= uint64(b&0x7F) << shift
+				m.ActivationEligibilityEpoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -8278,7 +8281,7 @@ func (m *Validator) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.ActivationEpoch |= uint64(b&0x7F) << shift
+				m.ActivationEpoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -8297,7 +8300,7 @@ func (m *Validator) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.ExitEpoch |= uint64(b&0x7F) << shift
+				m.ExitEpoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -8316,7 +8319,7 @@ func (m *Validator) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.WithdrawableEpoch |= uint64(b&0x7F) << shift
+				m.WithdrawableEpoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -8678,7 +8681,7 @@ func (m *ValidatorInfo) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
diff --git a/eth/v1alpha1/validator.proto b/eth/v1alpha1/validator.proto
index a0c17915..b7b600b5 100644
--- a/eth/v1alpha1/validator.proto
+++ b/eth/v1alpha1/validator.proto
@@ -223,7 +223,7 @@ service BeaconNodeValidator {
 
 message DomainRequest {
     // The epoch for which the domain is being requested.
-    uint64 epoch = 1;
+    uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // The bytes domain specified by the validator.
     bytes domain = 2;
@@ -316,7 +316,7 @@ message ValidatorStatusResponse {
 
     // The epoch in the beacon chain in which the validator
     // is determined as active.
-    uint64 activation_epoch = 4;
+    uint64 activation_epoch = 4 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // The position in the activation queue of pending validators.
     uint64 position_in_activation_queue = 5;
@@ -340,7 +340,7 @@ message MultipleValidatorStatusResponse {
 
 message DutiesRequest {
     // Epoch at which validators should perform their duties.
-    uint64 epoch = 1;
+    uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // Array of byte encoded BLS public keys.
     repeated bytes public_keys = 2 [(gogoproto.moretags) = "ssz-size:\"?,48\""];
@@ -468,24 +468,24 @@ message Validator {
     // Epoch when the validator became eligible for activation. This field may
     // be zero if the validator was present in the Ethereum 2.0 genesis. This
     // field is FAR_FUTURE_EPOCH if the validator has not been activated.
-    uint64 activation_eligibility_epoch = 5;
+    uint64 activation_eligibility_epoch = 5 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // Epoch when the validator was activated. This field may be zero if the
     // validator was present in the Ethereum 2.0 genesis. This field is
     // FAR_FUTURE_EPOCH if the validator has not been activated.
-    uint64 activation_epoch = 6;
+    uint64 activation_epoch = 6 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // Epoch when the validator was exited. This field is FAR_FUTURE_EPOCH if
     // the validator has not exited.
     // FAR_FUTURE_EPOCH is a constant defined by the official Ethereum 2.0 specification:
     // https://github.com/ethereum/eth2.0-specs/blob/v0.9.2/specs/core/0_beacon-chain.md#constants
-    uint64 exit_epoch = 7;
+    uint64 exit_epoch = 7 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // Epoch when the validator is eligible to withdraw their funds. This field
     // is FAR_FUTURE_EPOCH if the validator has not exited.
     // FAR_FUTURE_EPOCH is a constant defined by the official Ethereum 2.0 specification:
     // https://github.com/ethereum/eth2.0-specs/blob/v0.9.2/specs/core/0_beacon-chain.md#constants
-    uint64 withdrawable_epoch = 8;
+    uint64 withdrawable_epoch = 8 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 }
 
 // ValidatorParticipation stores participation metrics during a given epoch.
@@ -526,7 +526,7 @@ message ValidatorInfo {
     uint64 index = 2;
 
     // The epoch for which the information pertains.
-    uint64 epoch = 3;
+    uint64 epoch = 3 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // The validator's current status.
     ValidatorStatus status = 4;
diff --git a/eth/v1alpha1_gateway/beacon_block.pb.go b/eth/v1alpha1_gateway/beacon_block.pb.go
index 0a7a9d22..78f3ad4a 100755
--- a/eth/v1alpha1_gateway/beacon_block.pb.go
+++ b/eth/v1alpha1_gateway/beacon_block.pb.go
@@ -989,75 +989,78 @@ var file_eth_v1alpha1_beacon_block_proto_rawDesc = []byte{
 	0x74, 0x12, 0x2f, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04,
 	0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69,
 	0x7a, 0x65, 0x3a, 0x22, 0x39, 0x36, 0x22, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75,
-	0x72, 0x65, 0x22, 0x4e, 0x0a, 0x0d, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45,
-	0x78, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x61, 0x6c,
-	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x04, 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64,
-	0x65, 0x78, 0x22, 0x80, 0x01, 0x0a, 0x13, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c,
-	0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x65, 0x78,
-	0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72,
-	0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x52, 0x04,
-	0x65, 0x78, 0x69, 0x74, 0x12, 0x2f, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a,
-	0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x39, 0x36, 0x22, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e,
-	0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x08, 0x45, 0x74, 0x68, 0x31, 0x44, 0x61,
-	0x74, 0x61, 0x12, 0x34, 0x0a, 0x0c, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x6f,
-	0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73,
-	0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x0b, 0x64, 0x65, 0x70,
-	0x6f, 0x73, 0x69, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6f,
-	0x73, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52,
-	0x0c, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a,
-	0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a,
-	0x22, 0x33, 0x32, 0x22, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22,
-	0xe4, 0x01, 0x0a, 0x11, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48,
-	0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f,
-	0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x04, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78,
-	0x12, 0x32, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73,
-	0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
-	0x52, 0x6f, 0x6f, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f,
-	0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73,
-	0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x09, 0x73, 0x74, 0x61,
-	0x74, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x2e, 0x0a, 0x09, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x72,
-	0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73,
-	0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x08, 0x62, 0x6f,
-	0x64, 0x79, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x17, 0x53, 0x69, 0x67, 0x6e, 0x65,
-	0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64,
-	0x65, 0x72, 0x12, 0x40, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
-	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f,
-	0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65,
-	0x61, 0x64, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a,
-	0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x39, 0x36, 0x22, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e,
-	0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xc2, 0x01, 0x0a, 0x12, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65,
-	0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x11,
-	0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65,
-	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x12, 0xf2, 0xde, 0x1f, 0x0e, 0x73, 0x73, 0x7a,
-	0x2d, 0x6d, 0x61, 0x78, 0x3a, 0x22, 0x32, 0x30, 0x34, 0x38, 0x22, 0x52, 0x10, 0x61, 0x74, 0x74,
-	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x3a, 0x0a,
-	0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x74,
-	0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44,
-	0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x09, 0x73, 0x69, 0x67,
-	0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde,
-	0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x39, 0x36, 0x22, 0x52,
-	0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x97, 0x01, 0x0a, 0x19, 0x6f,
-	0x72, 0x67, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x10, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e,
-	0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69,
-	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74,
-	0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x61,
-	0x70, 0x69, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x3b, 0x65, 0x74, 0x68, 0xaa, 0x02, 0x15, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e,
-	0x45, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x15, 0x45,
-	0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5c, 0x45, 0x74, 0x68, 0x5c, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x72, 0x65, 0x22, 0x7d, 0x0a, 0x0d, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45,
+	0x78, 0x69, 0x74, 0x12, 0x43, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
+	0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73,
+	0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63,
+	0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69,
+	0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x04, 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65,
+	0x78, 0x22, 0x80, 0x01, 0x0a, 0x13, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75,
+	0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x65, 0x78, 0x69,
+	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
+	0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x52, 0x04, 0x65,
+	0x78, 0x69, 0x74, 0x12, 0x2f, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d,
+	0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x39, 0x36, 0x22, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61,
+	0x74, 0x75, 0x72, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x08, 0x45, 0x74, 0x68, 0x31, 0x44, 0x61, 0x74,
+	0x61, 0x12, 0x34, 0x0a, 0x0c, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x6f, 0x6f,
+	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a,
+	0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6f,
+	0x73, 0x69, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6f, 0x73,
+	0x69, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c,
+	0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0a,
+	0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c,
+	0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22,
+	0x33, 0x32, 0x22, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0xe4,
+	0x01, 0x0a, 0x11, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65,
+	0x61, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70,
+	0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12,
+	0x32, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69,
+	0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x52,
+	0x6f, 0x6f, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f,
+	0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a,
+	0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74,
+	0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x2e, 0x0a, 0x09, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x72, 0x6f,
+	0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73,
+	0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x08, 0x62, 0x6f, 0x64,
+	0x79, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x17, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64,
+	0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65,
+	0x72, 0x12, 0x40, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x28, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68,
+	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e,
+	0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61,
+	0x64, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d,
+	0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x39, 0x36, 0x22, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61,
+	0x74, 0x75, 0x72, 0x65, 0x22, 0xc2, 0x01, 0x0a, 0x12, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64,
+	0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x11, 0x61,
+	0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73,
+	0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x12, 0xf2, 0xde, 0x1f, 0x0e, 0x73, 0x73, 0x7a, 0x2d,
+	0x6d, 0x61, 0x78, 0x3a, 0x22, 0x32, 0x30, 0x34, 0x38, 0x22, 0x52, 0x10, 0x61, 0x74, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x04,
+	0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x74, 0x68,
+	0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61,
+	0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e,
+	0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f,
+	0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x39, 0x36, 0x22, 0x52, 0x09,
+	0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x97, 0x01, 0x0a, 0x19, 0x6f, 0x72,
+	0x67, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x10, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42,
+	0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74,
+	0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69,
+	0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x61, 0x70,
+	0x69, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b,
+	0x65, 0x74, 0x68, 0xaa, 0x02, 0x15, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x45,
+	0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x15, 0x45, 0x74,
+	0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5c, 0x45, 0x74, 0x68, 0x5c, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
diff --git a/eth/v1alpha1_gateway/beacon_chain.pb.go b/eth/v1alpha1_gateway/beacon_chain.pb.go
index eeb713f4..6031c72d 100755
--- a/eth/v1alpha1_gateway/beacon_chain.pb.go
+++ b/eth/v1alpha1_gateway/beacon_chain.pb.go
@@ -13,7 +13,6 @@ import (
 
 	_ "github.com/gogo/protobuf/gogoproto"
 	proto "github.com/golang/protobuf/proto"
-	_ "github.com/golang/protobuf/ptypes/any"
 	empty "github.com/golang/protobuf/ptypes/empty"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
 	grpc "google.golang.org/grpc"
@@ -3137,115 +3136,128 @@ var file_eth_v1alpha1_beacon_chain_proto_rawDesc = []byte{
 	0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
 	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x65,
-	0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x61, 0x74, 0x74, 0x65,
-	0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x65,
-	0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63,
-	0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c,
-	0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c,
-	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6f, 0x0a, 0x12,
-	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53,
-	0x65, 0x74, 0x12, 0x38, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x20, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
-	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x63,
-	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b,
-	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
-	0x0c, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x22, 0xab, 0x01,
-	0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x41, 0x74, 0x74,
-	0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x12, 0x16, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48,
-	0x00, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x25, 0x0a, 0x0d, 0x67, 0x65, 0x6e, 0x65,
-	0x73, 0x69, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48,
-	0x00, 0x52, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12,
-	0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01,
+	0x74, 0x6f, 0x1a, 0x1e, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+	0x2f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x1a, 0x1f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+	0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x22, 0x6f, 0x0a, 0x12, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x68,
+	0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f,
+	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
+	0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x53, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f,
+	0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73,
+	0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65,
+	0x79, 0x73, 0x22, 0xda, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78,
+	0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
+	0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61,
+	0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70,
+	0x6f, 0x63, 0x68, 0x48, 0x00, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x25, 0x0a, 0x0d,
+	0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x45, 0x70,
+	0x6f, 0x63, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65,
+	0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42,
+	0x0e, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22,
+	0xd3, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x05, 0x65,
+	0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29,
+	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d,
+	0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x48, 0x00, 0x52, 0x05, 0x65, 0x70, 0x6f,
+	0x63, 0x68, 0x12, 0x25, 0x0a, 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x65, 0x70,
+	0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x65, 0x6e,
+	0x65, 0x73, 0x69, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67,
+	0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61,
+	0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74,
+	0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65,
+	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66,
+	0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xa9, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74,
+	0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x46, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72,
+	0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+	0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74,
+	0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65,
+	0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b,
+	0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a,
+	0x65, 0x22, 0xc6, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65,
+	0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x14, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64,
+	0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65,
+	0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x65,
+	0x78, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13,
+	0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65,
+	0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65,
+	0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x74,
+	0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xee, 0x01, 0x0a, 0x11, 0x4c,
+	0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x14, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00,
+	0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x45, 0x0a, 0x05,
+	0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f,
+	0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73,
+	0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74,
+	0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x48, 0x00, 0x52, 0x05, 0x65, 0x70,
+	0x6f, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x18, 0x04,
+	0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x12,
+	0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01,
 	0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
-	0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+	0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
 	0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x71,
-	0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xa4, 0x01, 0x0a, 0x17,
-	0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12,
-	0x25, 0x0a, 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69,
-	0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73,
-	0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53,
-	0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
-	0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b,
-	0x65, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74,
-	0x65, 0x72, 0x22, 0xa9, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x65, 0x73,
-	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
-	0x46, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d,
-	0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x74,
-	0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73,
-	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f,
-	0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12,
-	0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xc6,
-	0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x41, 0x74,
-	0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x5c, 0x0a, 0x14, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x61, 0x74,
-	0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x29, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64,
-	0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x69, 0x6e, 0x64,
-	0x65, 0x78, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f,
-	0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50,
-	0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61,
-	0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f,
-	0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xbf, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74,
-	0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a,
-	0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x04, 0x72,
-	0x6f, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x04, 0x48, 0x00, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x70, 0x6f,
-	0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63,
-	0x68, 0x12, 0x1a, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x12, 0x1b, 0x0a,
-	0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61,
-	0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75, 0x65,
-	0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xb2, 0x01, 0x0a, 0x12, 0x4c, 0x69,
-	0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x55, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
-	0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x74, 0x68, 0x65,
-	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6e,
-	0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6e,
-	0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f,
-	0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12,
-	0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x3a,
-	0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65,
-	0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x76, 0x65,
-	0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x93, 0x01, 0x0a, 0x14, 0x42,
-	0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
-	0x6e, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
-	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65,
-	0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x05, 0x62, 0x6c,
-	0x6f, 0x63, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f,
-	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f,
-	0x6f, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c,
-	0x22, 0xf4, 0x04, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x12, 0x1b,
-	0x0a, 0x09, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x04, 0x52, 0x08, 0x68, 0x65, 0x61, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x68,
-	0x65, 0x61, 0x64, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52,
-	0x09, 0x68, 0x65, 0x61, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x39, 0x0a, 0x0f, 0x68, 0x65,
-	0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a,
-	0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63,
-	0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a,
-	0x65, 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x66,
-	0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x27, 0x0a, 0x0f,
-	0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18,
-	0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64,
+	0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xb2, 0x01, 0x0a, 0x12,
+	0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x55, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x61,
+	0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x74,
+	0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43,
+	0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43,
+	0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78,
+	0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65,
+	0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65,
+	0x22, 0x3a, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x69, 0x66,
+	0x69, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c,
+	0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x93, 0x01, 0x0a,
+	0x14, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x74,
+	0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e,
+	0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67,
+	0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x05,
+	0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72,
+	0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
+	0x52, 0x6f, 0x6f, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61,
+	0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63,
+	0x61, 0x6c, 0x22, 0xb0, 0x06, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x61, 0x64,
+	0x12, 0x1b, 0x0a, 0x09, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x04, 0x52, 0x08, 0x68, 0x65, 0x61, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x4c, 0x0a,
+	0x0a, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
+	0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f,
+	0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68,
+	0x52, 0x09, 0x68, 0x65, 0x61, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x39, 0x0a, 0x0f, 0x68,
+	0x65, 0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69,
+	0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x42, 0x6c, 0x6f,
+	0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69,
+	0x7a, 0x65, 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d,
+	0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x56, 0x0a,
+	0x0f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68,
+	0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63,
+	0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
+	0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x0e, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64,
 	0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x43, 0x0a, 0x14, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a,
 	0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20,
 	0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a,
@@ -3253,659 +3265,709 @@ var file_eth_v1alpha1_beacon_chain_proto_rawDesc = []byte{
 	0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6a, 0x75,
 	0x73, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x07, 0x20, 0x01,
 	0x28, 0x04, 0x52, 0x0d, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, 0x6c, 0x6f,
-	0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x65,
-	0x70, 0x6f, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6a, 0x75, 0x73, 0x74,
-	0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x43, 0x0a, 0x14, 0x6a, 0x75,
-	0x73, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f,
-	0x6f, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73,
-	0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x12, 0x6a, 0x75, 0x73,
-	0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12,
-	0x36, 0x0a, 0x17, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x6a, 0x75, 0x73, 0x74,
-	0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04,
-	0x52, 0x15, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x4a, 0x75, 0x73, 0x74, 0x69, 0x66,
-	0x69, 0x65, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x38, 0x0a, 0x18, 0x70, 0x72, 0x65, 0x76, 0x69,
-	0x6f, 0x75, 0x73, 0x5f, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x65, 0x70,
-	0x6f, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x70, 0x72, 0x65, 0x76, 0x69,
-	0x6f, 0x75, 0x73, 0x4a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x70, 0x6f, 0x63,
-	0x68, 0x12, 0x54, 0x0a, 0x1d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x6a, 0x75,
-	0x73, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f,
-	0x6f, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73,
-	0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x1a, 0x70, 0x72, 0x65,
-	0x76, 0x69, 0x6f, 0x75, 0x73, 0x4a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x42, 0x6c,
-	0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x5b, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43,
-	0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x12, 0x16, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48,
-	0x00, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65,
-	0x73, 0x69, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e,
-	0x65, 0x73, 0x69, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69,
-	0x6c, 0x74, 0x65, 0x72, 0x22, 0xd5, 0x03, 0x0a, 0x10, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43,
-	0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f,
-	0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12,
-	0x57, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x18, 0x02, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65,
-	0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x65, 0x61, 0x63,
-	0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d,
-	0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x6f,
-	0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69,
-	0x76, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x75,
-	0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65,
-	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x3c,
-	0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12,
-	0x2b, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64,
-	0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69,
-	0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x1a, 0x67, 0x0a, 0x0e,
-	0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x55,
-	0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
-	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f,
-	0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d,
-	0x69, 0x74, 0x74, 0x65, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69,
-	0x74, 0x74, 0x65, 0x65, 0x73, 0x1a, 0x75, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74,
-	0x65, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a, 0x05, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x74, 0x68, 0x65,
-	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65,
-	0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x4c, 0x69, 0x73,
-	0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xee, 0x01, 0x0a,
-	0x1c, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x61,
-	0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a,
-	0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x05,
-	0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69,
-	0x73, 0x12, 0x34, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73,
-	0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d,
-	0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52, 0x0a, 0x70, 0x75, 0x62,
-	0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63,
-	0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65,
-	0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d,
-	0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0e, 0x0a,
-	0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xc4, 0x02,
-	0x0a, 0x11, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e,
-	0x63, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x4c, 0x0a, 0x08, 0x62, 0x61, 0x6c,
-	0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x74,
-	0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x61, 0x6c,
-	0x61, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x62,
-	0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f,
-	0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12,
-	0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x83,
-	0x01, 0x0a, 0x07, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x0a, 0x70, 0x75,
-	0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11,
-	0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x34, 0x38,
-	0x22, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
-	0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64,
-	0x65, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x04, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06,
-	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74,
-	0x61, 0x74, 0x75, 0x73, 0x22, 0xea, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c,
-	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16,
-	0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52,
+	0x74, 0x12, 0x56, 0x0a, 0x0f, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x65,
+	0x70, 0x6f, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29,
+	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d,
+	0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x0e, 0x6a, 0x75, 0x73, 0x74, 0x69,
+	0x66, 0x69, 0x65, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x43, 0x0a, 0x14, 0x6a, 0x75, 0x73,
+	0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f,
+	0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a,
+	0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x12, 0x6a, 0x75, 0x73, 0x74,
+	0x69, 0x66, 0x69, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x36,
+	0x0a, 0x17, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x6a, 0x75, 0x73, 0x74, 0x69,
+	0x66, 0x69, 0x65, 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52,
+	0x15, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x4a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69,
+	0x65, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x67, 0x0a, 0x18, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
+	0x75, 0x73, 0x5f, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x65, 0x70, 0x6f,
+	0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69,
+	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74,
+	0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x16, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75,
+	0x73, 0x4a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12,
+	0x54, 0x0a, 0x1d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x6a, 0x75, 0x73, 0x74,
+	0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74,
+	0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d,
+	0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x1a, 0x70, 0x72, 0x65, 0x76, 0x69,
+	0x6f, 0x75, 0x73, 0x4a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63,
+	0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x8a, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f,
+	0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+	0x45, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d,
+	0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70,
+	0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68,
+	0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x48, 0x00, 0x52,
 	0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69,
 	0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73,
-	0x69, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61,
-	0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70,
-	0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f,
-	0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67,
-	0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
-	0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x75, 0x62,
+	0x69, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74,
+	0x65, 0x72, 0x22, 0x84, 0x04, 0x0a, 0x10, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f, 0x6d,
+	0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68,
+	0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63,
+	0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
+	0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x57, 0x0a, 0x0a,
+	0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x37, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43,
+	0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
+	0x74, 0x65, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69,
+	0x74, 0x74, 0x65, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f,
+	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x56, 0x61, 0x6c,
+	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x3c, 0x0a, 0x0d, 0x43,
+	0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2b, 0x0a, 0x11,
+	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65,
+	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
+	0x6f, 0x72, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x1a, 0x67, 0x0a, 0x0e, 0x43, 0x6f, 0x6d,
+	0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x55, 0x0a, 0x0a, 0x63,
+	0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x35, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f,
+	0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74,
+	0x65, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65,
+	0x65, 0x73, 0x1a, 0x75, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
+	0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42,
+	0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x2e,
+	0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9d, 0x02, 0x0a, 0x1c, 0x4c, 0x69,
+	0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e,
+	0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x05, 0x65, 0x70,
+	0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67,
+	0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61,
+	0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70,
+	0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x48, 0x00, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63,
+	0x68, 0x12, 0x1a, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x12, 0x34, 0x0a,
+	0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03,
+	0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65,
+	0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b,
+	0x65, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x04,
+	0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x0a,
+	0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61,
+	0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+	0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75, 0x65,
+	0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xf3, 0x02, 0x0a, 0x11, 0x56, 0x61,
+	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12,
+	0x43, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d,
+	0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70,
+	0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68,
+	0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65,
+	0x70, 0x6f, 0x63, 0x68, 0x12, 0x4c, 0x0a, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73,
+	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
+	0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56,
+	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73,
+	0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63,
+	0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f,
+	0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78,
+	0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f,
+	0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
+	0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x83, 0x01, 0x0a, 0x07, 0x42, 0x61,
+	0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f,
+	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73,
+	0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x34, 0x38, 0x22, 0x52, 0x09, 0x70, 0x75,
+	0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x18, 0x0a,
+	0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07,
+	0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22,
+	0x99, 0x02, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
+	0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x05, 0x65, 0x70, 0x6f,
+	0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69,
+	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74,
+	0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x48, 0x00, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68,
+	0x12, 0x1a, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x08, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x12, 0x16, 0x0a, 0x06,
+	0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63,
+	0x74, 0x69, 0x76, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a,
+	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
+	0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
+	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
+	0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18,
+	0x06, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79,
+	0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03,
+	0x28, 0x04, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x71,
+	0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x71, 0x0a, 0x13, 0x47,
+	0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x04, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x75,
+	0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11,
+	0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x34, 0x38,
+	0x22, 0x48, 0x00, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x0e,
+	0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xe1,
+	0x02, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x43, 0x0a,
+	0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde,
+	0x1f, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79,
+	0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d,
+	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f,
+	0x63, 0x68, 0x12, 0x5b, 0x0a, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f,
+	0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x65, 0x74, 0x68,
+	0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x56, 0x61,
+	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+	0x52, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12,
+	0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b,
+	0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61,
+	0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+	0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74,
+	0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x6a, 0x0a, 0x12, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
+	0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05,
+	0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64,
+	0x65, 0x78, 0x12, 0x3e, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d,
+	0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61,
+	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
+	0x6f, 0x72, 0x22, 0x98, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
+	0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e,
+	0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x05, 0x65, 0x70,
+	0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67,
+	0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61,
+	0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70,
+	0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x48, 0x00, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63,
+	0x68, 0x12, 0x1a, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x42, 0x0e, 0x0a,
+	0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x93, 0x04,
+	0x0a, 0x10, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67,
+	0x65, 0x73, 0x12, 0x43, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
+	0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f,
+	0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68,
+	0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x47, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, 0x76,
+	0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73,
+	0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d,
+	0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52, 0x13, 0x61, 0x63, 0x74,
+	0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73,
+	0x12, 0x2b, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e,
+	0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x10, 0x61, 0x63, 0x74,
+	0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x41, 0x0a,
+	0x12, 0x65, 0x78, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b,
+	0x65, 0x79, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x73,
+	0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52, 0x10,
+	0x65, 0x78, 0x69, 0x74, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73,
+	0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63,
+	0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0d, 0x65, 0x78, 0x69, 0x74, 0x65, 0x64,
+	0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x13, 0x73, 0x6c, 0x61, 0x73, 0x68,
+	0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x06,
+	0x20, 0x03, 0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69,
+	0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52, 0x11, 0x73, 0x6c, 0x61, 0x73, 0x68,
+	0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x27, 0x0a, 0x0f,
+	0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18,
+	0x07, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e,
+	0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x13, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64,
+	0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x08, 0x20, 0x03,
+	0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65,
+	0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52, 0x11, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64,
+	0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6a,
+	0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20,
+	0x03, 0x28, 0x04, 0x52, 0x0e, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x64, 0x69,
+	0x63, 0x65, 0x73, 0x22, 0x5c, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
+	0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x12, 0x23, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79,
+	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x70, 0x75, 0x62,
 	0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63,
-	0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65,
-	0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65,
-	0x72, 0x22, 0x71, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
-	0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65,
-	0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78,
-	0x12, 0x32, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69,
-	0x7a, 0x65, 0x3a, 0x22, 0x34, 0x38, 0x22, 0x48, 0x00, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69,
-	0x63, 0x4b, 0x65, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69,
-	0x6c, 0x74, 0x65, 0x72, 0x22, 0xb2, 0x02, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
-	0x6f, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x5b, 0x0a, 0x0e, 0x76, 0x61, 0x6c,
-	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x34, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
-	0x74, 0x6f, 0x72, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f,
-	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
-	0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70,
-	0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d,
-	0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x6a, 0x0a,
-	0x12, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
-	0x6e, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x3e, 0x0a, 0x09, 0x76, 0x61, 0x6c,
-	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65,
-	0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x09,
-	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x69, 0x0a, 0x23, 0x47, 0x65, 0x74,
-	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53,
-	0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x12, 0x16, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48,
-	0x00, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65,
-	0x73, 0x69, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e,
-	0x65, 0x73, 0x69, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69,
-	0x6c, 0x74, 0x65, 0x72, 0x22, 0xe4, 0x03, 0x0a, 0x10, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53,
-	0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f,
-	0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12,
-	0x47, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62,
-	0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x13,
-	0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c,
-	0x34, 0x38, 0x22, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x50, 0x75,
-	0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69,
-	0x76, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20,
-	0x03, 0x28, 0x04, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e,
-	0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x12, 0x65, 0x78, 0x69, 0x74, 0x65, 0x64, 0x5f,
-	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28,
-	0x0c, 0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a,
-	0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52, 0x10, 0x65, 0x78, 0x69, 0x74, 0x65, 0x64, 0x50, 0x75,
-	0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x69, 0x74,
-	0x65, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04,
-	0x52, 0x0d, 0x65, 0x78, 0x69, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12,
-	0x43, 0x0a, 0x13, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69,
-	0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde,
-	0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38,
-	0x22, 0x52, 0x11, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63,
-	0x4b, 0x65, 0x79, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x64, 0x5f,
-	0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x73,
-	0x6c, 0x61, 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x43, 0x0a,
-	0x13, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f,
-	0x6b, 0x65, 0x79, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f,
-	0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52,
-	0x11, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65,
-	0x79, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e,
-	0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x65, 0x6a, 0x65,
-	0x63, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0x5c, 0x0a, 0x1b, 0x56,
-	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61,
-	0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0b, 0x70, 0x75,
-	0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x42,
-	0x02, 0x18, 0x01, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12,
-	0x18, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04,
-	0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0x92, 0x05, 0x0a, 0x1c, 0x56, 0x61,
-	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e,
-	0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x1a, 0x63, 0x75,
-	0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f,
-	0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x18,
-	0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65,
-	0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c,
-	0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
-	0x04, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x6f, 0x74,
-	0x73, 0x12, 0x2f, 0x0a, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64,
-	0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x12,
-	0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63,
-	0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x5f,
-	0x76, 0x6f, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03,
-	0x28, 0x08, 0x52, 0x14, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x56, 0x6f, 0x74,
-	0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x72, 0x72,
-	0x65, 0x63, 0x74, 0x6c, 0x79, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67,
-	0x65, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x08, 0x52, 0x14, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63,
-	0x74, 0x6c, 0x79, 0x56, 0x6f, 0x74, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x30,
-	0x0a, 0x14, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x5f, 0x76, 0x6f, 0x74, 0x65,
-	0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x08, 0x52, 0x12, 0x63, 0x6f,
-	0x72, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x56, 0x6f, 0x74, 0x65, 0x64, 0x48, 0x65, 0x61, 0x64,
-	0x12, 0x47, 0x0a, 0x20, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x5f, 0x62, 0x65, 0x66,
-	0x6f, 0x72, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69,
-	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x04, 0x52, 0x1d, 0x62, 0x61, 0x6c, 0x61,
-	0x6e, 0x63, 0x65, 0x73, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54,
-	0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x1f, 0x62, 0x61, 0x6c,
-	0x61, 0x6e, 0x63, 0x65, 0x73, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x70, 0x6f, 0x63,
-	0x68, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03,
-	0x28, 0x04, 0x52, 0x1c, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x41, 0x66, 0x74, 0x65,
-	0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
-	0x12, 0x2d, 0x0a, 0x12, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69,
-	0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x11, 0x6d, 0x69,
-	0x73, 0x73, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12,
-	0x47, 0x0a, 0x20, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76,
-	0x65, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x62, 0x61, 0x6c, 0x61,
-	0x6e, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x1d, 0x61, 0x76, 0x65, 0x72, 0x61,
-	0x67, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
-	0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c,
-	0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x13, 0xf2,
-	0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34,
-	0x38, 0x22, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x22, 0xb7,
-	0x02, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x51, 0x75, 0x65, 0x75,
-	0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x68, 0x75, 0x72, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x63, 0x68, 0x75, 0x72, 0x6e, 0x4c, 0x69, 0x6d,
-	0x69, 0x74, 0x12, 0x4b, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03,
-	0x28, 0x0c, 0x42, 0x15, 0x18, 0x01, 0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69,
-	0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x76,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12,
-	0x3f, 0x0a, 0x10, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b,
-	0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x15, 0x18, 0x01, 0xf2, 0xde, 0x1f,
-	0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22,
-	0x52, 0x0e, 0x65, 0x78, 0x69, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73,
-	0x12, 0x40, 0x0a, 0x1c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76,
-	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73,
-	0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x69, 0x63,
-	0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64,
-	0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03,
-	0x28, 0x04, 0x52, 0x14, 0x65, 0x78, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
-	0x72, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0xf1, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73,
-	0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e,
-	0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x05,
-	0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x05, 0x65,
-	0x70, 0x6f, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73,
+	0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65,
+	0x73, 0x22, 0x92, 0x05, 0x0a, 0x1c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50,
+	0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x3c, 0x0a, 0x1a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x66,
+	0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73,
+	0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x18, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45,
+	0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73,
+	0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6c,
+	0x6f, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75,
+	0x73, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x69, 0x6e, 0x63,
+	0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73,
+	0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x12, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f,
+	0x6e, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f,
+	0x72, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x6f,
+	0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x08, 0x52, 0x14, 0x63, 0x6f, 0x72, 0x72,
+	0x65, 0x63, 0x74, 0x6c, 0x79, 0x56, 0x6f, 0x74, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
+	0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x5f, 0x76, 0x6f,
+	0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x08,
+	0x52, 0x14, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x56, 0x6f, 0x74, 0x65, 0x64,
+	0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63,
+	0x74, 0x6c, 0x79, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x18, 0x06,
+	0x20, 0x03, 0x28, 0x08, 0x52, 0x12, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x56,
+	0x6f, 0x74, 0x65, 0x64, 0x48, 0x65, 0x61, 0x64, 0x12, 0x47, 0x0a, 0x20, 0x62, 0x61, 0x6c, 0x61,
+	0x6e, 0x63, 0x65, 0x73, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63,
+	0x68, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03,
+	0x28, 0x04, 0x52, 0x1d, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x42, 0x65, 0x66, 0x6f,
+	0x72, 0x65, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x12, 0x45, 0x0a, 0x1f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x5f, 0x61, 0x66,
+	0x74, 0x65, 0x72, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x04, 0x52, 0x1c, 0x62, 0x61, 0x6c, 0x61,
+	0x6e, 0x63, 0x65, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x72,
+	0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x6d, 0x69, 0x73, 0x73,
+	0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x09,
+	0x20, 0x03, 0x28, 0x0c, 0x52, 0x11, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c,
+	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x47, 0x0a, 0x20, 0x61, 0x76, 0x65, 0x72, 0x61,
+	0x67, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
+	0x74, 0x6f, 0x72, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28,
+	0x02, 0x52, 0x1d, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65,
+	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
 	0x12, 0x34, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18,
-	0x03, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73,
+	0x0b, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73,
 	0x69, 0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c,
-	0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65,
-	0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73,
-	0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a,
-	0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0e, 0x0a, 0x0c,
-	0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xed, 0x03, 0x0a,
-	0x14, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e,
-	0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x61, 0x0a, 0x0b, 0x61,
-	0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x3f, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
-	0x6f, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x43, 0x6f,
-	0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e,
-	0x74, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26,
-	0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
-	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67,
-	0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
-	0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61,
-	0x6c, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x94, 0x02, 0x0a, 0x13, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
-	0x74, 0x65, 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a,
-	0x11, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65,
-	0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x10, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e,
-	0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f,
-	0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x04, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x49, 0x6e,
-	0x64, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f,
-	0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65,
-	0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70,
-	0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04,
-	0x52, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x12,
-	0x32, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x0c, 0x42, 0x13, 0x18, 0x01, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73,
-	0x69, 0x7a, 0x65, 0x3a, 0x22, 0x34, 0x38, 0x22, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
-	0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
-	0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x76, 0x61,
-	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x66, 0x0a, 0x20,
-	0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74,
-	0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x12, 0x16, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48,
-	0x00, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65,
-	0x73, 0x69, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e,
-	0x65, 0x73, 0x69, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69,
-	0x6c, 0x74, 0x65, 0x72, 0x22, 0xa9, 0x01, 0x0a, 0x1e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
-	0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x09, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x0d, 0x70,
-	0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
-	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64,
-	0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x22, 0x54, 0x0a, 0x16, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
-	0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61,
-	0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70,
-	0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f,
-	0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67,
-	0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa8, 0x01, 0x0a, 0x17, 0x41, 0x74, 0x74, 0x65, 0x73,
-	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x46, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72,
-	0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74,
-	0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65,
-	0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b,
-	0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a,
-	0x65, 0x22, 0x92, 0x01, 0x0a, 0x0c, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66,
-	0x69, 0x67, 0x12, 0x47, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
-	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f,
-	0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x39, 0x0a, 0x0b, 0x43,
-	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x41, 0x0a, 0x16, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74,
-	0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x69,
-	0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x6c, 0x61, 0x73, 0x68,
-	0x65, 0x64, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0x69, 0x0a, 0x16, 0x49, 0x6e, 0x64,
-	0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x75, 0x62,
-	0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0a,
-	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e,
-	0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x69, 0x6e, 0x64,
-	0x69, 0x63, 0x65, 0x73, 0x22, 0xc9, 0x07, 0x0a, 0x16, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64,
-	0x75, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12,
-	0x67, 0x0a, 0x10, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x5f, 0x76, 0x6f,
-	0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x65, 0x74, 0x68, 0x65,
-	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65,
-	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64,
-	0x75, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x0f, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64,
-	0x75, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x1a, 0xc5, 0x06, 0x0a, 0x0e, 0x49, 0x6e, 0x64,
-	0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65,
-	0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63,
-	0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79,
-	0x12, 0x27, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e,
-	0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64,
-	0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f,
-	0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69,
-	0x73, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x64, 0x12, 0x46, 0x0a, 0x20, 0x69, 0x73, 0x5f, 0x77,
-	0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x63,
-	0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x1c, 0x69, 0x73, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x62,
-	0x6c, 0x65, 0x49, 0x6e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68,
-	0x12, 0x3a, 0x0a, 0x1a, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e,
-	0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x06,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e,
-	0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3c, 0x0a, 0x1b,
-	0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x65,
-	0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x17, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x50, 0x72, 0x65,
-	0x76, 0x69, 0x6f, 0x75, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x39, 0x0a, 0x19, 0x69, 0x73,
-	0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x61,
-	0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69,
-	0x73, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x41, 0x74, 0x74,
-	0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x75, 0x72, 0x72,
-	0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
-	0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x1c, 0x69, 0x73, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54,
-	0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3b, 0x0a,
-	0x1a, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x65, 0x70, 0x6f,
-	0x63, 0x68, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x17, 0x69, 0x73, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x45, 0x70, 0x6f,
-	0x63, 0x68, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x21, 0x69, 0x73,
-	0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f,
-	0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18,
-	0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x69, 0x73, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75,
-	0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x74, 0x74, 0x65,
-	0x73, 0x74, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x1f, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69,
-	0x6f, 0x75, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x61,
-	0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x69,
-	0x73, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x48, 0x65,
-	0x61, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x24, 0x63, 0x75,
-	0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x65, 0x66, 0x66, 0x65,
-	0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x67, 0x77,
-	0x65, 0x69, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
-	0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x42,
-	0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x77, 0x65, 0x69, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e,
-	0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x0e, 0x20, 0x01,
-	0x28, 0x04, 0x52, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x6f,
-	0x74, 0x12, 0x2d, 0x0a, 0x12, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64,
-	0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x69,
-	0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
-	0x22, 0x70, 0x0a, 0x1a, 0x57, 0x65, 0x61, 0x6b, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69,
-	0x76, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1d,
-	0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0c, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x1d, 0x0a,
-	0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0c, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05,
-	0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f,
-	0x63, 0x68, 0x2a, 0x56, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
-	0x16, 0x0a, 0x12, 0x41, 0x44, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52,
-	0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x4d, 0x4f, 0x56,
-	0x45, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4b, 0x45, 0x59, 0x53,
-	0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x45, 0x54, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41,
-	0x54, 0x4f, 0x52, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x02, 0x32, 0x93, 0x1d, 0x0a, 0x0b, 0x42,
-	0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x9e, 0x01, 0x0a, 0x10, 0x4c,
-	0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
-	0x2e, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x65,
-	0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
-	0x2f, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x65,
-	0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x61,
-	0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xbb, 0x01, 0x0a, 0x17,
-	0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73,
-	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
+	0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x22, 0xb7, 0x02, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64,
+	0x61, 0x74, 0x6f, 0x72, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x68, 0x75,
+	0x72, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a,
+	0x63, 0x68, 0x75, 0x72, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x4b, 0x0a, 0x16, 0x61, 0x63,
+	0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f,
+	0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x15, 0x18, 0x01, 0xf2, 0xde,
+	0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38,
+	0x22, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62,
+	0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x3f, 0x0a, 0x10, 0x65, 0x78, 0x69, 0x74, 0x5f,
+	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
+	0x0c, 0x42, 0x15, 0x18, 0x01, 0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a,
+	0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52, 0x0e, 0x65, 0x78, 0x69, 0x74, 0x50, 0x75,
+	0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x40, 0x0a, 0x1c, 0x61, 0x63, 0x74, 0x69,
+	0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
+	0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x1a,
+	0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
+	0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x65, 0x78,
+	0x69, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64,
+	0x69, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x14, 0x65, 0x78, 0x69, 0x74,
+	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73,
+	0x22, 0xa0, 0x02, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
+	0x6f, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
+	0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62,
+	0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f,
+	0x63, 0x68, 0x48, 0x00, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x07, 0x67,
+	0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07,
+	0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x12, 0x34, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69,
+	0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde,
+	0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38,
+	0x22, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x18, 0x0a,
+	0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07,
+	0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f,
+	0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65,
+	0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b,
+	0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f,
+	0x6b, 0x65, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c,
+	0x74, 0x65, 0x72, 0x22, 0x9c, 0x04, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
+	0x72, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x05,
+	0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f,
+	0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73,
+	0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74,
+	0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63,
+	0x68, 0x12, 0x61, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73,
+	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
+	0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56,
+	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65,
+	0x6e, 0x74, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x41, 0x73, 0x73,
+	0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d,
+	0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67,
+	0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e,
+	0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a,
+	0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x94, 0x02, 0x0a, 0x13,
+	0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d,
+	0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x63, 0x6f,
+	0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x10,
+	0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73,
+	0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x69, 0x6e,
+	0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69,
+	0x74, 0x74, 0x65, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x74, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x25,
+	0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73,
+	0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72,
+	0x53, 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f,
+	0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x13, 0x18, 0x01, 0xf2, 0xde, 0x1f,
+	0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x34, 0x38, 0x22, 0x52, 0x09,
+	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x61, 0x6c,
+	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x04, 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64,
+	0x65, 0x78, 0x22, 0x95, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
+	0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68,
+	0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63,
+	0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
+	0x45, 0x70, 0x6f, 0x63, 0x68, 0x48, 0x00, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1a,
+	0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48,
+	0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75,
+	0x65, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xd8, 0x01, 0x0a, 0x1e, 0x56,
+	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a,
+	0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde,
+	0x1f, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79,
+	0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d,
+	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f,
+	0x63, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64,
+	0x12, 0x53, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
 	0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
-	0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73,
-	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36,
+	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
+	0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x54, 0x0a, 0x16, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+	0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
+	0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa8, 0x01, 0x0a, 0x17,
+	0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73,
+	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e,
+	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+	0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b,
+	0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61,
+	0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+	0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74,
+	0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x0c, 0x42, 0x65, 0x61, 0x63, 0x6f,
+	0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+	0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
+	0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e,
+	0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+	0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
+	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x41, 0x0a, 0x16, 0x53,
+	0x75, 0x62, 0x6d, 0x69, 0x74, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x64,
+	0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e,
+	0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0x98,
+	0x01, 0x0a, 0x16, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x56, 0x6f, 0x74,
+	0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x05, 0x65, 0x70, 0x6f,
+	0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69,
+	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74,
+	0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1f,
+	0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20,
+	0x03, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12,
+	0x18, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04,
+	0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0xf8, 0x07, 0x0a, 0x16, 0x49, 0x6e,
+	0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x64, 0x12, 0x67, 0x0a, 0x10, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75,
+	0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c,
 	0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78,
-	0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29,
-	0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65,
-	0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x12, 0x84, 0x01, 0x0a, 0x12, 0x53, 0x74,
-	0x72, 0x65, 0x61, 0x6d, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72,
-	0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x30, 0x82, 0xd3,
-	0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x61, 0x74, 0x74, 0x65, 0x73,
-	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01,
-	0x12, 0x9a, 0x01, 0x0a, 0x19, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x64, 0x65, 0x78,
-	0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x29, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
-	0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61,
+	0x6c, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x2e, 0x49, 0x6e,
+	0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x0f, 0x69, 0x6e,
+	0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x1a, 0xf4, 0x06,
+	0x0a, 0x0e, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65,
+	0x12, 0x43, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42,
+	0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
+	0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74,
+	0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05,
+	0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f,
+	0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69,
+	0x63, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
+	0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x76,
+	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x0a,
+	0x0a, 0x69, 0x73, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x08, 0x52, 0x09, 0x69, 0x73, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x64, 0x12, 0x46, 0x0a, 0x20,
+	0x69, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x62, 0x6c, 0x65, 0x5f,
+	0x69, 0x6e, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x69, 0x73, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72,
+	0x61, 0x77, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45,
+	0x70, 0x6f, 0x63, 0x68, 0x12, 0x3a, 0x0a, 0x1a, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76,
+	0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f,
+	0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69,
+	0x76, 0x65, 0x49, 0x6e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68,
+	0x12, 0x3c, 0x0a, 0x1b, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e,
+	0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18,
+	0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49,
+	0x6e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x39,
+	0x0a, 0x19, 0x69, 0x73, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f,
+	0x63, 0x68, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28,
+	0x08, 0x52, 0x16, 0x69, 0x73, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63,
+	0x68, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x20, 0x69, 0x73, 0x5f,
+	0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x61,
+	0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x09, 0x20,
+	0x01, 0x28, 0x08, 0x52, 0x1c, 0x69, 0x73, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70,
+	0x6f, 0x63, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x72, 0x12, 0x3b, 0x0a, 0x1a, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73,
+	0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18,
+	0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x69, 0x73, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75,
+	0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x48,
+	0x0a, 0x21, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x65, 0x70,
+	0x6f, 0x63, 0x68, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x69, 0x73, 0x50, 0x72, 0x65,
+	0x76, 0x69, 0x6f, 0x75, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+	0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x1f, 0x69, 0x73, 0x5f, 0x70,
+	0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x68, 0x65,
+	0x61, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28,
+	0x08, 0x52, 0x1b, 0x69, 0x73, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x45, 0x70, 0x6f,
+	0x63, 0x68, 0x48, 0x65, 0x61, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e,
+	0x0a, 0x24, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f,
+	0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63,
+	0x65, 0x5f, 0x67, 0x77, 0x65, 0x69, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x20, 0x63, 0x75,
+	0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74,
+	0x69, 0x76, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x77, 0x65, 0x69, 0x12, 0x25,
+	0x0a, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6c, 0x6f, 0x74,
+	0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f,
+	0x6e, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69,
+	0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28,
+	0x04, 0x52, 0x11, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x74,
+	0x61, 0x6e, 0x63, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x1a, 0x57, 0x65, 0x61, 0x6b, 0x53, 0x75, 0x62,
+	0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f,
+	0x69, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f,
+	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f,
+	0x6f, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f,
+	0x74, 0x12, 0x43, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04,
+	0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
+	0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65,
+	0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52,
+	0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x2a, 0x56, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x41, 0x63, 0x74,
+	0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44,
+	0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x52,
+	0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f,
+	0x4b, 0x45, 0x59, 0x53, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x45, 0x54, 0x5f, 0x56, 0x41,
+	0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x02, 0x32, 0x93,
+	0x1d, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x9e,
+	0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65,
+	0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
+	0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65,
+	0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
+	0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x65,
+	0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63,
+	0x6f, 0x6e, 0x2f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+	0xbb, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x41,
+	0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x2e, 0x65, 0x74,
+	0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x41,
+	0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x1a, 0x36, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
+	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49,
 	0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x65, 0x74, 0x68, 0x2f,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f,
-	0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x69, 0x6e, 0x64,
-	0x65, 0x78, 0x65, 0x64, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, 0xa0, 0x01,
-	0x0a, 0x0f, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f,
-	0x6c, 0x12, 0x2d, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x1a, 0x2e, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61,
-	0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76,
+	0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93,
+	0x02, 0x2b, 0x12, 0x29, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x12, 0x84, 0x01,
+	0x0a, 0x12, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, 0x2e, 0x65,
+	0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76,
 	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x61,
-	0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x6f, 0x6f, 0x6c,
-	0x12, 0x86, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12,
-	0x28, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63,
-	0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x65, 0x74, 0x68, 0x65,
-	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x65,
+	0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x72, 0x65,
+	0x61, 0x6d, 0x30, 0x01, 0x12, 0x9a, 0x01, 0x0a, 0x19, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49,
+	0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x29, 0x2e, 0x65, 0x74, 0x68,
+	0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f,
+	0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61,
+	0x63, 0x6f, 0x6e, 0x2f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30,
+	0x01, 0x12, 0xa0, 0x01, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x2d, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d,
+	0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x74,
+	0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e,
+	0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x74, 0x74,
+	0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x65,
 	0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63,
-	0x6f, 0x6e, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x92, 0x01, 0x0a, 0x0c, 0x53, 0x74,
-	0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x2a, 0x2e, 0x65, 0x74, 0x68,
+	0x6f, 0x6e, 0x2f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
+	0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x86, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f,
+	0x63, 0x6b, 0x73, 0x12, 0x28, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65,
+	0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
+	0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e,
+	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d,
+	0x12, 0x1b, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f,
+	0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x92, 0x01,
+	0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x2a,
+	0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f,
+	0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x65, 0x74, 0x68,
 	0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
-	0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53,
-	0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
-	0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x62,
-	0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, 0x7c,
-	0x0a, 0x0f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x61,
-	0x64, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x65, 0x74, 0x68, 0x65,
-	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x22, 0x2d, 0x82, 0xd3, 0xe4,
-	0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x68,
-	0x65, 0x61, 0x64, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, 0x70, 0x0a, 0x0c,
-	0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x12, 0x16, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e,
-	0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x68, 0x61,
-	0x69, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e,
-	0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65,
-	0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x68, 0x65, 0x61, 0x64, 0x12, 0xa5,
-	0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x57, 0x65, 0x61, 0x6b, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63,
-	0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+	0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42,
+	0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x65,
+	0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63,
+	0x6f, 0x6e, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,
+	0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x68, 0x61, 0x69,
+	0x6e, 0x48, 0x65, 0x61, 0x64, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e,
+	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x22,
+	0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x63, 0x68,
+	0x61, 0x69, 0x6e, 0x68, 0x65, 0x61, 0x64, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01,
+	0x12, 0x70, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x61, 0x64,
 	0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x31, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72,
+	0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72,
 	0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2e, 0x57, 0x65, 0x61, 0x6b, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74,
-	0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x39, 0x82, 0xd3, 0xe4,
-	0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x77, 0x65, 0x61, 0x6b, 0x5f, 0x73,
-	0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x68, 0x65, 0x63,
-	0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x96, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x42,
-	0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x12,
-	0x2c, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d,
-	0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e,
+	0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93,
+	0x02, 0x20, 0x12, 0x1e, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x68, 0x65,
+	0x61, 0x64, 0x12, 0xa5, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x57, 0x65, 0x61, 0x6b, 0x53, 0x75,
+	0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70,
+	0x6f, 0x69, 0x6e, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x31, 0x2e, 0x65,
+	0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x65, 0x61, 0x6b, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
+	0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22,
+	0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x77, 0x65,
+	0x61, 0x6b, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f,
+	0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x96, 0x01, 0x0a, 0x14, 0x4c,
+	0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74,
+	0x65, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65,
+	0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
+	0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x1a, 0x27, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68,
+	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e,
+	0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93,
+	0x02, 0x21, 0x12, 0x1f, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74,
+	0x65, 0x65, 0x73, 0x12, 0xa1, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69,
+	0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x33, 0x2e,
 	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d,
-	0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f,
-	0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65,
-	0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x12,
-	0xa1, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
-	0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x65, 0x74, 0x68, 0x65,
-	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42,
-	0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28,
-	0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
-	0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23,
-	0x12, 0x21, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f,
-	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e,
-	0x63, 0x65, 0x73, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69,
-	0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2c, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
-	0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c,
-	0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e,
-	0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c,
-	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12,
-	0x18, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76,
-	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74,
-	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2a, 0x2e, 0x65, 0x74, 0x68, 0x65,
-	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d,
-	0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61,
-	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12,
-	0x17, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76,
-	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0xb6, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74,
-	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53,
-	0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x3a, 0x2e, 0x65, 0x74, 0x68, 0x65,
-	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63,
-	0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d,
-	0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63,
-	0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0x31,
-	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73,
-	0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x65, 0x74, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
-	0x73, 0x12, 0x7a, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
-	0x72, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x25,
-	0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
-	0x51, 0x75, 0x65, 0x75, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f,
-	0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c,
-	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x12, 0xb0, 0x01,
-	0x0a, 0x17, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x65,
-	0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x32, 0x2e, 0x65, 0x74, 0x68, 0x65,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
+	0x74, 0x6f, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x1a, 0x28, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
+	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64,
+	0x61, 0x74, 0x6f, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x29, 0x82, 0xd3,
+	0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x62,
+	0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74,
+	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2c, 0x2e, 0x65, 0x74, 0x68,
+	0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
+	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72,
+	0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+	0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x20, 0x82, 0xd3, 0xe4,
+	0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x7d, 0x0a,
+	0x0c, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2a, 0x2e,
+	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
+	0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x65, 0x74, 0x68, 0x65,
 	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x66, 0x6f,
-	0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e,
+	0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x1f, 0x82, 0xd3, 0xe4,
+	0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0xb6, 0x01, 0x0a,
+	0x1c, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74,
+	0x69, 0x76, 0x65, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x3a, 0x2e,
 	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50,
-	0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x65, 0x74, 0x68,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
+	0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67,
+	0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x65, 0x74, 0x68, 0x65,
+	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67,
+	0x65, 0x73, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x65, 0x74, 0x68,
 	0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
-	0x74, 0x6f, 0x72, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65,
-	0x12, 0xad, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
-	0x6f, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x36, 0x2e,
+	0x74, 0x6f, 0x72, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x65, 0x74, 0x63, 0x68,
+	0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x7a, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69,
+	0x64, 0x61, 0x74, 0x6f, 0x72, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70,
+	0x74, 0x79, 0x1a, 0x25, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
+	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64,
+	0x61, 0x74, 0x6f, 0x72, 0x51, 0x75, 0x65, 0x75, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+	0x20, 0x12, 0x1e, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+	0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x75,
+	0x65, 0x12, 0xb0, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
+	0x6f, 0x72, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x32, 0x2e,
 	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
-	0x74, 0x6f, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d,
-	0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50,
+	0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x1a, 0x33, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68,
+	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
+	0x74, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24,
+	0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61,
+	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d,
+	0x61, 0x6e, 0x63, 0x65, 0x12, 0xad, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c,
+	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74,
+	0x73, 0x12, 0x36, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68,
+	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61,
 	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e,
-	0x74, 0x73, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x65, 0x74, 0x68,
+	0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x65, 0x74, 0x68, 0x65,
+	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67,
+	0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24,
+	0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61,
+	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d,
+	0x65, 0x6e, 0x74, 0x73, 0x12, 0xbb, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69,
+	0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
+	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61,
+	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x65, 0x74,
+	0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72,
+	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x65, 0x74, 0x68,
 	0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
-	0x74, 0x6f, 0x72, 0x73, 0x2f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73,
-	0x12, 0xbb, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
-	0x72, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37,
+	0x74, 0x6f, 0x72, 0x73, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x12, 0x73, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43,
+	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x23, 0x2e,
+	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66,
+	0x69, 0x67, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x65, 0x74, 0x68,
+	0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e,
+	0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0xa0, 0x01, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x65,
+	0x61, 0x6d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x49, 0x6e, 0x66, 0x6f,
+	0x12, 0x29, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
+	0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x1a, 0x24, 0x2e, 0x65, 0x74,
+	0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66,
+	0x6f, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x65, 0x74, 0x68, 0x2f,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f,
+	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x2f,
+	0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x28, 0x01, 0x30, 0x01, 0x12, 0xa8, 0x01, 0x0a, 0x16, 0x53,
+	0x75, 0x62, 0x6d, 0x69, 0x74, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61,
+	0x73, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x27, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d,
+	0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x74,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x1a, 0x2d,
 	0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
-	0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
-	0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
-	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
-	0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e,
-	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73,
-	0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x73,
-	0x0a, 0x0f, 0x47, 0x65, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69,
-	0x67, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x23, 0x2e, 0x65, 0x74, 0x68, 0x65,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x53, 0x6c, 0x61,
+	0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82,
+	0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x73, 0x6c, 0x61, 0x73,
+	0x68, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x73,
+	0x75, 0x62, 0x6d, 0x69, 0x74, 0x12, 0xa8, 0x01, 0x0a, 0x16, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74,
+	0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67,
+	0x12, 0x27, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65,
+	0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x1a, 0x2d, 0x2e, 0x65, 0x74, 0x68, 0x65,
 	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x23,
-	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6e,
-	0x66, 0x69, 0x67, 0x12, 0xa0, 0x01, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x56, 0x61,
-	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x29, 0x2e, 0x65,
-	0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x68,
-	0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x1a, 0x24, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
+	0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30,
+	0x12, 0x2e, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f,
+	0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73,
+	0x2f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x2f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74,
+	0x12, 0xa1, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75,
+	0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
 	0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
-	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x33, 0x82,
-	0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x76, 0x61, 0x6c, 0x69,
-	0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x2f, 0x73, 0x74, 0x72, 0x65,
-	0x61, 0x6d, 0x28, 0x01, 0x30, 0x01, 0x12, 0xa8, 0x01, 0x0a, 0x16, 0x53, 0x75, 0x62, 0x6d, 0x69,
-	0x74, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e,
-	0x67, 0x12, 0x27, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74,
-	0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x1a, 0x2d, 0x2e, 0x65, 0x74, 0x68,
+	0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
+	0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49,
+	0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f,
+	0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61,
+	0x63, 0x6f, 0x6e, 0x2f, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x5f, 0x76,
+	0x6f, 0x74, 0x65, 0x73, 0x42, 0x97, 0x01, 0x0a, 0x19, 0x6f, 0x72, 0x67, 0x2e, 0x65, 0x74, 0x68,
 	0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e,
-	0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02,
-	0x30, 0x12, 0x2e, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67,
-	0x73, 0x2f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x73, 0x75, 0x62, 0x6d, 0x69,
-	0x74, 0x12, 0xa8, 0x01, 0x0a, 0x16, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70,
-	0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x27, 0x2e, 0x65,
-	0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61,
-	0x73, 0x68, 0x69, 0x6e, 0x67, 0x1a, 0x2d, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d,
-	0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x75,
-	0x62, 0x6d, 0x69, 0x74, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x65,
-	0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63,
-	0x6f, 0x6e, 0x2f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x70, 0x72, 0x6f,
-	0x70, 0x6f, 0x73, 0x65, 0x72, 0x2f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x12, 0xa1, 0x01, 0x0a,
-	0x12, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x56, 0x6f,
-	0x74, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65,
-	0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69,
-	0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
-	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x76,
-	0x69, 0x64, 0x75, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x64, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x65, 0x74, 0x68, 0x2f,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x2f,
-	0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x73,
-	0x42, 0x97, 0x01, 0x0a, 0x19, 0x6f, 0x72, 0x67, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
-	0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x10,
-	0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70,
-	0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68,
-	0x65, 0x72, 0x65, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x65, 0x74, 0x68, 0xaa, 0x02, 0x15, 0x45, 0x74, 0x68,
-	0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x45, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0xca, 0x02, 0x15, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5c, 0x45, 0x74,
-	0x68, 0x5c, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33,
+	0x61, 0x31, 0x42, 0x10, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x50,
+	0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
+	0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73,
+	0x2f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x65, 0x74,
+	0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x65, 0x74, 0x68, 0xaa, 0x02,
+	0x15, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x45, 0x74, 0x68, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x15, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
+	0x6d, 0x5c, 0x45, 0x74, 0x68, 0x5c, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
diff --git a/eth/v1alpha1_gateway/validator.pb.go b/eth/v1alpha1_gateway/validator.pb.go
index d083b53c..f043a590 100755
--- a/eth/v1alpha1_gateway/validator.pb.go
+++ b/eth/v1alpha1_gateway/validator.pb.go
@@ -1904,478 +1904,502 @@ var file_eth_v1alpha1_validator_proto_rawDesc = []byte{
 	0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x1a, 0x1e, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x61,
 	0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x22, 0x3d, 0x0a, 0x0d, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
-	0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69,
-	0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22,
-	0x3b, 0x0a, 0x0e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x64,
-	0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x73, 0x69, 0x67,
-	0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x52, 0x0a, 0x1a,
-	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74,
-	0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0b, 0x70, 0x75,
-	0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x42,
-	0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x3f,
-	0x2c, 0x34, 0x38, 0x22, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73,
-	0x22, 0xfc, 0x01, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63,
-	0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x55, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x39, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
-	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64,
-	0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x08, 0x73,
-	0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x85, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74,
-	0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65,
-	0x79, 0x12, 0x46, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68,
+	0x22, 0x6c, 0x0a, 0x0d, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x43, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
+	0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
+	0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65,
+	0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52,
+	0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x3b,
+	0x0a, 0x0e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x29, 0x0a, 0x10, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x6f,
+	0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x73, 0x69, 0x67, 0x6e,
+	0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x52, 0x0a, 0x1a, 0x56,
+	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0b, 0x70, 0x75, 0x62,
+	0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x13,
+	0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c,
+	0x34, 0x38, 0x22, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x22,
+	0xfc, 0x01, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74,
+	0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x55, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x39, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68,
 	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
-	0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64,
-	0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22,
-	0x9c, 0x01, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65,
-	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64,
-	0x12, 0x21, 0x0a, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x54,
-	0x69, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x17, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x76,
-	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69,
-	0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x15, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73,
-	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x4b,
-	0x0a, 0x0e, 0x53, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x06, 0x73, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x65, 0x6e, 0x65,
-	0x73, 0x69, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b,
-	0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x49, 0x0a, 0x15, 0x56,
-	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b,
-	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73,
-	0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x34, 0x38, 0x22, 0x52, 0x09, 0x70, 0x75, 0x62,
-	0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x2e, 0x0a, 0x16, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
-	0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
-	0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x4a, 0x0a, 0x16, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
-	0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x12, 0x30, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69,
-	0x7a, 0x65, 0x3a, 0x22, 0x34, 0x38, 0x22, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b,
-	0x65, 0x79, 0x22, 0xb6, 0x02, 0x0a, 0x17, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
-	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e,
-	0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26,
-	0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
-	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39,
-	0x0a, 0x19, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x62,
-	0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x04, 0x52, 0x16, 0x65, 0x74, 0x68, 0x31, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x42, 0x6c,
-	0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x64, 0x65, 0x70,
-	0x6f, 0x73, 0x69, 0x74, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73,
-	0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x64, 0x65, 0x70, 0x6f, 0x73,
-	0x69, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x6f, 0x74, 0x12,
-	0x29, 0x0a, 0x10, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x70,
-	0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3f, 0x0a, 0x1c, 0x70, 0x6f,
-	0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61,
-	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04,
-	0x52, 0x19, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x41, 0x63, 0x74, 0x69,
-	0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x22, 0x70, 0x0a, 0x1e, 0x4d,
-	0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
-	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a,
-	0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65,
-	0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b,
-	0x65, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02,
-	0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0xbd, 0x01,
-	0x0a, 0x1f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
-	0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x12, 0x34, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73,
-	0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d,
-	0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52, 0x0a, 0x70, 0x75, 0x62,
-	0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x4a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75,
-	0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x74, 0x68, 0x65,
-	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75,
-	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75,
-	0x73, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x03,
-	0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0x5b, 0x0a,
-	0x0d, 0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14,
-	0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65,
-	0x70, 0x6f, 0x63, 0x68, 0x12, 0x34, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b,
-	0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x73,
-	0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52, 0x0a,
-	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x22, 0xc5, 0x04, 0x0a, 0x0e, 0x44,
-	0x75, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a,
-	0x06, 0x64, 0x75, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e,
-	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x75, 0x74, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x64,
-	0x75, 0x74, 0x69, 0x65, 0x73, 0x12, 0x5c, 0x0a, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
-	0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x64, 0x75, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65,
-	0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x75, 0x74, 0x69,
-	0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x75, 0x74, 0x79, 0x52,
-	0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x44, 0x75, 0x74,
-	0x69, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x11, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63,
-	0x68, 0x5f, 0x64, 0x75, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a,
-	0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x75, 0x74, 0x79, 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74,
-	0x45, 0x70, 0x6f, 0x63, 0x68, 0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x1a, 0xb4, 0x02, 0x0a, 0x04,
-	0x44, 0x75, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65,
-	0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74,
-	0x65, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f,
-	0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x63, 0x6f, 0x6d,
-	0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x61,
-	0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x04, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x6f, 0x74,
-	0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x6f,
-	0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73,
-	0x65, 0x72, 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69,
-	0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f,
-	0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x34, 0x38, 0x22, 0x52, 0x09,
-	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, 0x61,
-	0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x65, 0x74, 0x68, 0x65,
-	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75,
-	0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x61, 0x6c,
-	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01,
-	0x28, 0x04, 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64,
-	0x65, 0x78, 0x22, 0x89, 0x01, 0x0a, 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x36, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61,
-	0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11,
-	0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x34, 0x38,
-	0x22, 0x52, 0x0c, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12,
-	0x2d, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a,
-	0x22, 0x33, 0x32, 0x22, 0x52, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x22, 0x43,
-	0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x12, 0x30, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73,
-	0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52,
-	0x6f, 0x6f, 0x74, 0x22, 0x45, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x45, 0x78,
-	0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x09, 0x65, 0x78,
-	0x69, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2,
-	0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22,
-	0x52, 0x08, 0x65, 0x78, 0x69, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x55, 0x0a, 0x16, 0x41, 0x74,
-	0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d,
-	0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x04, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x49, 0x6e, 0x64, 0x65,
-	0x78, 0x22, 0x57, 0x0a, 0x0e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x15, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65,
-	0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0xd7, 0x01, 0x0a, 0x19, 0x41,
-	0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
-	0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x27, 0x0a, 0x0f,
-	0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65,
-	0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x43, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f,
-	0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x24, 0xf2, 0xde, 0x1f, 0x20, 0x73,
-	0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x34, 0x38, 0x22, 0x20, 0x73, 0x70, 0x65,
-	0x63, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x22, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x22, 0x52,
-	0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x0e, 0x73, 0x6c,
-	0x6f, 0x74, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65,
-	0x3a, 0x22, 0x39, 0x36, 0x22, 0x52, 0x0d, 0x73, 0x6c, 0x6f, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61,
-	0x74, 0x75, 0x72, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x1a, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61,
-	0x74, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x13, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65,
-	0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x33, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61,
-	0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64,
-	0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x11, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65,
-	0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x22, 0x96, 0x01, 0x0a, 0x1c, 0x53, 0x69, 0x67,
-	0x6e, 0x65, 0x64, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d,
-	0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x76, 0x0a, 0x1a, 0x73, 0x69, 0x67,
-	0x6e, 0x65, 0x64, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6e,
-	0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e,
+	0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x08, 0x73, 0x74,
+	0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x1a, 0x85, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79,
+	0x12, 0x46, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2e, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
+	0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65,
+	0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x9c,
+	0x01, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12,
+	0x21, 0x0a, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x54, 0x69,
+	0x6d, 0x65, 0x12, 0x49, 0x0a, 0x17, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x76, 0x61,
+	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a,
+	0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x15, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x56,
+	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x4b, 0x0a,
+	0x0e, 0x53, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x16, 0x0a, 0x06, 0x73, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x06, 0x73, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x73,
+	0x69, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x67,
+	0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x49, 0x0a, 0x15, 0x56, 0x61,
+	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65,
+	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a,
+	0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x34, 0x38, 0x22, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c,
+	0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x2e, 0x0a, 0x16, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
+	0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05,
+	0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x4a, 0x0a, 0x16, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
+	0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+	0x30, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a,
+	0x65, 0x3a, 0x22, 0x34, 0x38, 0x22, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65,
+	0x79, 0x22, 0xe5, 0x02, 0x0a, 0x17, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a,
+	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e,
 	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x67, 0x67, 0x72,
-	0x65, 0x67, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x17, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64,
-	0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f,
-	0x66, 0x22, 0x66, 0x0a, 0x1d, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x67, 0x67, 0x72, 0x65,
-	0x67, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x45, 0x0a, 0x15, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a,
-	0x22, 0x33, 0x32, 0x22, 0x52, 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x82, 0x01, 0x0a, 0x20, 0x43, 0x6f,
-	0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x53, 0x75,
-	0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14,
-	0x0a, 0x05, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x73,
-	0x6c, 0x6f, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65,
-	0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0c, 0x63, 0x6f, 0x6d,
-	0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f,
-	0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x08,
-	0x52, 0x0c, 0x69, 0x73, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x9c,
-	0x03, 0x0a, 0x09, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x0a,
-	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
-	0x42, 0x24, 0xf2, 0xde, 0x1f, 0x20, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22,
-	0x34, 0x38, 0x22, 0x20, 0x73, 0x70, 0x65, 0x63, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x22, 0x70,
-	0x75, 0x62, 0x6b, 0x65, 0x79, 0x22, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65,
-	0x79, 0x12, 0x48, 0x0a, 0x16, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x5f,
-	0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a,
-	0x22, 0x33, 0x32, 0x22, 0x52, 0x15, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c,
-	0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x65,
-	0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76,
-	0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6c, 0x61, 0x73,
-	0x68, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x6c, 0x61, 0x73, 0x68,
-	0x65, 0x64, 0x12, 0x40, 0x0a, 0x1c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x5f, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x65, 0x70, 0x6f,
-	0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61,
-	0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x45,
-	0x70, 0x6f, 0x63, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f,
-	0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12,
-	0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x04, 0x52, 0x09, 0x65, 0x78, 0x69, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x2d,
-	0x0a, 0x12, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65,
-	0x70, 0x6f, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x77, 0x69, 0x74, 0x68,
-	0x64, 0x72, 0x61, 0x77, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x8e, 0x05,
-	0x0a, 0x16, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x69,
-	0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x19, 0x67, 0x6c, 0x6f, 0x62,
-	0x61, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x02, 0x18, 0x01, 0x52,
-	0x17, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
-	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0b, 0x76, 0x6f, 0x74, 0x65,
-	0x64, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x02, 0x18,
-	0x01, 0x52, 0x0a, 0x76, 0x6f, 0x74, 0x65, 0x64, 0x45, 0x74, 0x68, 0x65, 0x72, 0x12, 0x29, 0x0a,
-	0x0e, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x65, 0x6c, 0x69, 0x67, 0x69,
-	0x62, 0x6c, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x19, 0x63, 0x75, 0x72, 0x72,
-	0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65,
-	0x5f, 0x67, 0x77, 0x65, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x63, 0x75, 0x72,
-	0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x47,
-	0x77, 0x65, 0x69, 0x12, 0x3f, 0x0a, 0x1c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65,
-	0x70, 0x6f, 0x63, 0x68, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x67,
-	0x77, 0x65, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x19, 0x63, 0x75, 0x72, 0x72, 0x65,
-	0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
-	0x47, 0x77, 0x65, 0x69, 0x12, 0x4c, 0x0a, 0x23, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f,
-	0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x74, 0x74,
-	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x67, 0x77, 0x65, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28,
-	0x04, 0x52, 0x1f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54,
-	0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x47, 0x77,
-	0x65, 0x69, 0x12, 0x3b, 0x0a, 0x1a, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x65,
-	0x70, 0x6f, 0x63, 0x68, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x77, 0x65, 0x69,
-	0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73,
-	0x45, 0x70, 0x6f, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x47, 0x77, 0x65, 0x69, 0x12,
-	0x41, 0x0a, 0x1d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63,
-	0x68, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x67, 0x77, 0x65, 0x69,
-	0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1a, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73,
-	0x45, 0x70, 0x6f, 0x63, 0x68, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x47, 0x77,
-	0x65, 0x69, 0x12, 0x4e, 0x0a, 0x24, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x65,
-	0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x65,
-	0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x67, 0x77, 0x65, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04,
-	0x52, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54,
-	0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x47, 0x77,
-	0x65, 0x69, 0x12, 0x4a, 0x0a, 0x22, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x65,
-	0x70, 0x6f, 0x63, 0x68, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74,
-	0x69, 0x6e, 0x67, 0x5f, 0x67, 0x77, 0x65, 0x69, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1e,
-	0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x48, 0x65, 0x61,
-	0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x47, 0x77, 0x65, 0x69, 0x22, 0x94,
-	0x02, 0x0a, 0x0d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f,
-	0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12,
-	0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05,
-	0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3e, 0x0a, 0x06, 0x73,
-	0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x65, 0x74,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a,
+	0x19, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x62, 0x6c,
+	0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x16, 0x65, 0x74, 0x68, 0x31, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x42, 0x6c, 0x6f,
+	0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x64, 0x65, 0x70, 0x6f,
+	0x73, 0x69, 0x74, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6c,
+	0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69,
+	0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x58,
+	0x0a, 0x10, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x70, 0x6f,
+	0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69,
+	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74,
+	0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3f, 0x0a, 0x1c, 0x70, 0x6f, 0x73, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x19,
+	0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x22, 0x70, 0x0a, 0x1e, 0x4d, 0x75, 0x6c,
+	0x74, 0x69, 0x70, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74,
+	0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0b, 0x70,
+	0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c,
+	0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22,
+	0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79,
+	0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03,
+	0x28, 0x03, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0xbd, 0x01, 0x0a, 0x1f,
+	0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
+	0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x34, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01,
+	0x20, 0x03, 0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69,
+	0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69,
+	0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x4a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65,
+	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
+	0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65,
+	0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03,
+	0x28, 0x04, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x0d,
+	0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a,
+	0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde,
+	0x1f, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79,
+	0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d,
+	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f,
+	0x63, 0x68, 0x12, 0x34, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79,
+	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x73, 0x73, 0x7a,
+	0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x3f, 0x2c, 0x34, 0x38, 0x22, 0x52, 0x0a, 0x70, 0x75,
+	0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x22, 0xc5, 0x04, 0x0a, 0x0e, 0x44, 0x75, 0x74,
+	0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x06, 0x64,
+	0x75, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x74,
 	0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61,
-	0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x31, 0x0a, 0x14, 0x74,
-	0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
-	0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73,
-	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18,
-	0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52,
-	0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x66, 0x66, 0x65,
-	0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x04, 0x52, 0x10, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x42, 0x61,
-	0x6c, 0x61, 0x6e, 0x63, 0x65, 0x2a, 0x9a, 0x01, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
-	0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x4b,
-	0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x00, 0x12, 0x0d, 0x0a,
-	0x09, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07,
-	0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54,
-	0x49, 0x56, 0x45, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x58, 0x49, 0x54, 0x49, 0x4e, 0x47,
-	0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x10, 0x05,
-	0x12, 0x0a, 0x0a, 0x06, 0x45, 0x58, 0x49, 0x54, 0x45, 0x44, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07,
-	0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x41, 0x52,
-	0x54, 0x49, 0x41, 0x4c, 0x4c, 0x59, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x45, 0x44,
-	0x10, 0x08, 0x32, 0xb6, 0x13, 0x0a, 0x13, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x4e, 0x6f, 0x64,
-	0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x80, 0x01, 0x0a, 0x09, 0x47,
-	0x65, 0x74, 0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72,
-	0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2e, 0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25,
-	0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f,
-	0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c,
-	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x64, 0x75, 0x74, 0x69, 0x65, 0x73, 0x12, 0x8c, 0x01,
-	0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x12, 0x24,
+	0x68, 0x61, 0x31, 0x2e, 0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x2e, 0x44, 0x75, 0x74, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x64, 0x75, 0x74,
+	0x69, 0x65, 0x73, 0x12, 0x5c, 0x0a, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65,
+	0x70, 0x6f, 0x63, 0x68, 0x5f, 0x64, 0x75, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68,
+	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x75, 0x74, 0x69, 0x65, 0x73,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x75, 0x74, 0x79, 0x52, 0x12, 0x63,
+	0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x44, 0x75, 0x74, 0x69, 0x65,
+	0x73, 0x12, 0x56, 0x0a, 0x11, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f,
+	0x64, 0x75, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65,
+	0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x2e, 0x44, 0x75, 0x74, 0x79, 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x45, 0x70,
+	0x6f, 0x63, 0x68, 0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x1a, 0xb4, 0x02, 0x0a, 0x04, 0x44, 0x75,
+	0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x18,
+	0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65,
+	0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x69, 0x6e,
+	0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69,
+	0x74, 0x74, 0x65, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x74, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x25,
+	0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73,
+	0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72,
+	0x53, 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f,
+	0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73,
+	0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x34, 0x38, 0x22, 0x52, 0x09, 0x70, 0x75,
+	0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
+	0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
+	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64,
+	0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78,
+	0x22, 0x89, 0x01, 0x0a, 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
+	0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x36, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f,
+	0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde,
+	0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x34, 0x38, 0x22, 0x52,
+	0x0c, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x2d, 0x0a,
+	0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42,
+	0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33,
+	0x32, 0x22, 0x52, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x22, 0x43, 0x0a, 0x0f,
+	0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x30, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a,
+	0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f,
+	0x74, 0x22, 0x45, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x45, 0x78, 0x69, 0x74,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x09, 0x65, 0x78, 0x69, 0x74,
+	0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f,
+	0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x08,
+	0x65, 0x78, 0x69, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x55, 0x0a, 0x16, 0x41, 0x74, 0x74, 0x65,
+	0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
+	0x74, 0x65, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52,
+	0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22,
+	0x57, 0x0a, 0x0e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x45, 0x0a, 0x15, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
+	0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22,
+	0x33, 0x32, 0x22, 0x52, 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x44, 0x61, 0x74, 0x61, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0xd7, 0x01, 0x0a, 0x19, 0x41, 0x67, 0x67,
+	0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f,
+	0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x04, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x49, 0x6e,
+	0x64, 0x65, 0x78, 0x12, 0x43, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65,
+	0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x24, 0xf2, 0xde, 0x1f, 0x20, 0x73, 0x73, 0x7a,
+	0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x34, 0x38, 0x22, 0x20, 0x73, 0x70, 0x65, 0x63, 0x2d,
+	0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x22, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x22, 0x52, 0x09, 0x70,
+	0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x0e, 0x73, 0x6c, 0x6f, 0x74,
+	0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c,
+	0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22,
+	0x39, 0x36, 0x22, 0x52, 0x0d, 0x73, 0x6c, 0x6f, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75,
+	0x72, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x1a, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65,
+	0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x63, 0x0a, 0x13, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x61,
+	0x6e, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33,
 	0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e,
-	0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x75, 0x74,
-	0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4,
-	0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x64, 0x75, 0x74,
-	0x69, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, 0x81, 0x01, 0x0a,
-	0x0a, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x24, 0x2e, 0x65, 0x74,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65,
+	0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x50, 0x72,
+	0x6f, 0x6f, 0x66, 0x52, 0x11, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x41, 0x6e,
+	0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x22, 0x96, 0x01, 0x0a, 0x1c, 0x53, 0x69, 0x67, 0x6e, 0x65,
+	0x64, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x76, 0x0a, 0x1a, 0x73, 0x69, 0x67, 0x6e, 0x65,
+	0x64, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f,
+	0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x65, 0x74,
 	0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x1a, 0x25, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20,
-	0x12, 0x1e, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f,
-	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e,
-	0x12, 0x8e, 0x01, 0x0a, 0x11, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x69,
-	0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x29,
-	0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x72,
-	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x88, 0x02, 0x01, 0x82, 0xd3,
-	0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x63, 0x68,
-	0x61, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30,
-	0x01, 0x12, 0xaf, 0x01, 0x0a, 0x11, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x41, 0x63, 0x74,
-	0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
+	0x68, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67,
+	0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e,
+	0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x17, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x67,
+	0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x22,
+	0x66, 0x0a, 0x1d, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61,
+	0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x45, 0x0a, 0x15, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+	0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42,
+	0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33,
+	0x32, 0x22, 0x52, 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44,
+	0x61, 0x74, 0x61, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x82, 0x01, 0x0a, 0x20, 0x43, 0x6f, 0x6d, 0x6d,
+	0x69, 0x74, 0x74, 0x65, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x53, 0x75, 0x62, 0x73,
+	0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05,
+	0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x73, 0x6c, 0x6f,
+	0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f,
+	0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x69,
+	0x74, 0x74, 0x65, 0x65, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x61, 0x67,
+	0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0c,
+	0x69, 0x73, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xd8, 0x04, 0x0a,
+	0x09, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x0a, 0x70, 0x75,
+	0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x24,
+	0xf2, 0xde, 0x1f, 0x20, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x34, 0x38,
+	0x22, 0x20, 0x73, 0x70, 0x65, 0x63, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x22, 0x70, 0x75, 0x62,
+	0x6b, 0x65, 0x79, 0x22, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12,
+	0x48, 0x0a, 0x16, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x5f, 0x63, 0x72,
+	0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42,
+	0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33,
+	0x32, 0x22, 0x52, 0x15, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x43, 0x72,
+	0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x66, 0x66,
+	0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x42,
+	0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65,
+	0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x64,
+	0x12, 0x6f, 0x0a, 0x1c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65,
+	0x6c, 0x69, 0x67, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68,
+	0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63,
+	0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
+	0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x45, 0x70, 0x6f, 0x63,
+	0x68, 0x12, 0x58, 0x0a, 0x10, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+	0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f,
+	0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73,
+	0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74,
+	0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69,
+	0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x4c, 0x0a, 0x0a, 0x65,
+	0x78, 0x69, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42,
+	0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
+	0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74,
+	0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x09,
+	0x65, 0x78, 0x69, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x5c, 0x0a, 0x12, 0x77, 0x69, 0x74,
+	0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18,
+	0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75,
+	0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c,
+	0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45,
+	0x70, 0x6f, 0x63, 0x68, 0x52, 0x11, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x62,
+	0x6c, 0x65, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x8e, 0x05, 0x0a, 0x16, 0x56, 0x61, 0x6c, 0x69,
+	0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x19, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x72,
+	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x02, 0x18, 0x01, 0x52, 0x17, 0x67, 0x6c, 0x6f, 0x62, 0x61,
+	0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61,
+	0x74, 0x65, 0x12, 0x23, 0x0a, 0x0b, 0x76, 0x6f, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x74, 0x68, 0x65,
+	0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x76, 0x6f, 0x74,
+	0x65, 0x64, 0x45, 0x74, 0x68, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x0e, 0x65, 0x6c, 0x69, 0x67, 0x69,
+	0x62, 0x6c, 0x65, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42,
+	0x02, 0x18, 0x01, 0x52, 0x0d, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x45, 0x74, 0x68,
+	0x65, 0x72, 0x12, 0x39, 0x0a, 0x19, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70,
+	0x6f, 0x63, 0x68, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x77, 0x65, 0x69, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70,
+	0x6f, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x47, 0x77, 0x65, 0x69, 0x12, 0x3f, 0x0a,
+	0x1c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x61,
+	0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x67, 0x77, 0x65, 0x69, 0x18, 0x05, 0x20,
+	0x01, 0x28, 0x04, 0x52, 0x19, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63,
+	0x68, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x47, 0x77, 0x65, 0x69, 0x12, 0x4c,
+	0x0a, 0x23, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f,
+	0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
+	0x5f, 0x67, 0x77, 0x65, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1f, 0x63, 0x75, 0x72,
+	0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41,
+	0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x47, 0x77, 0x65, 0x69, 0x12, 0x3b, 0x0a, 0x1a,
+	0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x61,
+	0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x77, 0x65, 0x69, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x17, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x41,
+	0x63, 0x74, 0x69, 0x76, 0x65, 0x47, 0x77, 0x65, 0x69, 0x12, 0x41, 0x0a, 0x1d, 0x70, 0x72, 0x65,
+	0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x61, 0x74, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x67, 0x77, 0x65, 0x69, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x1a, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x41,
+	0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x47, 0x77, 0x65, 0x69, 0x12, 0x4e, 0x0a, 0x24,
+	0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74,
+	0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f,
+	0x67, 0x77, 0x65, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x20, 0x70, 0x72, 0x65, 0x76,
+	0x69, 0x6f, 0x75, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41,
+	0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x47, 0x77, 0x65, 0x69, 0x12, 0x4a, 0x0a, 0x22,
+	0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x68,
+	0x65, 0x61, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x67, 0x77,
+	0x65, 0x69, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1e, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
+	0x75, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x48, 0x65, 0x61, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x47, 0x77, 0x65, 0x69, 0x22, 0xc3, 0x02, 0x0a, 0x0d, 0x56, 0x61, 0x6c,
+	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75,
+	0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09,
+	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64,
+	0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12,
+	0x43, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d,
+	0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70,
+	0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68,
+	0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65,
+	0x70, 0x6f, 0x63, 0x68, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e,
+	0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c,
+	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
+	0x61, 0x74, 0x75, 0x73, 0x12, 0x31, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x04, 0x52, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e,
+	0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63,
+	0x65, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x62,
+	0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x65, 0x66,
+	0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x2a, 0x9a,
+	0x01, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x54,
+	0x41, 0x54, 0x55, 0x53, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49,
+	0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47,
+	0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x03, 0x12, 0x0b,
+	0x0a, 0x07, 0x45, 0x58, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x53,
+	0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x58, 0x49,
+	0x54, 0x45, 0x44, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44,
+	0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41, 0x4c, 0x4c, 0x59, 0x5f,
+	0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x45, 0x44, 0x10, 0x08, 0x32, 0xb6, 0x13, 0x0a, 0x13,
+	0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
+	0x74, 0x6f, 0x72, 0x12, 0x80, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x44, 0x75, 0x74, 0x69, 0x65,
+	0x73, 0x12, 0x24, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68,
+	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x75, 0x74, 0x69, 0x65, 0x73,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
 	0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
-	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74,
-	0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x65, 0x74, 0x68,
-	0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69,
-	0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31,
-	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61,
+	0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26,
+	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61,
 	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f,
-	0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61,
-	0x6d, 0x30, 0x01, 0x12, 0x94, 0x01, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
-	0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2c, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
-	0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56,
-	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e,
-	0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c,
-	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x65, 0x74,
-	0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64,
-	0x61, 0x74, 0x6f, 0x72, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x98, 0x01, 0x0a, 0x0f, 0x56,
-	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2d,
-	0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
-	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e,
+	0x64, 0x75, 0x74, 0x69, 0x65, 0x73, 0x12, 0x8c, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61,
+	0x6d, 0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
+	0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e,
 	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53,
-	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82,
-	0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x73,
-	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0xb2, 0x01, 0x0a, 0x17, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70,
-	0x6c, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75,
-	0x73, 0x12, 0x35, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x75, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x65,
+	0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69,
+	0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x64, 0x75, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x72,
+	0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, 0x81, 0x01, 0x0a, 0x0a, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e,
+	0x44, 0x61, 0x74, 0x61, 0x12, 0x24, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e,
+	0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x6f, 0x6d,
+	0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x65, 0x74, 0x68,
+	0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x65, 0x74, 0x68, 0x2f,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
+	0x6f, 0x72, 0x2f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x8e, 0x01, 0x0a, 0x11, 0x57, 0x61,
+	0x69, 0x74, 0x46, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12,
+	0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x29, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
+	0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x43, 0x68, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x22, 0x34, 0x88, 0x02, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f,
+	0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c,
+	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x72,
+	0x74, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, 0xaf, 0x01, 0x0a, 0x11, 0x57,
+	0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x12, 0x31, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
+	0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65,
+	0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69,
+	0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12,
+	0x29, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76,
+	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, 0x94, 0x01, 0x0a,
+	0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12,
+	0x2c, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
+	0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e,
+	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49,
+	0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3,
+	0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x69, 0x6e,
+	0x64, 0x65, 0x78, 0x12, 0x98, 0x01, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
+	0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2d, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
+	0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
+	0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56,
+	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e,
+	0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61,
+	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0xb2,
+	0x01, 0x0a, 0x17, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64,
+	0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x35, 0x2e, 0x65, 0x74, 0x68,
+	0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64,
+	0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x1a, 0x36, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68,
 	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70,
 	0x6c, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75,
-	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72,
-	0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
-	0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76,
+	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+	0x22, 0x12, 0x20, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+	0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x65, 0x73, 0x12, 0x7a, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12,
+	0x23, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e,
+	0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x65, 0x61,
+	0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f,
+	0x12, 0x1d, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f,
+	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12,
+	0x8a, 0x01, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
+	0x12, 0x28, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42,
+	0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x1a, 0x26, 0x2e, 0x65, 0x74, 0x68,
+	0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, 0x2f, 0x65, 0x74, 0x68,
+	0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
+	0x74, 0x6f, 0x72, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x3a, 0x01, 0x2a, 0x12, 0x98, 0x01, 0x0a,
+	0x12, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44,
+	0x61, 0x74, 0x61, 0x12, 0x2d, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65,
+	0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65,
+	0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x1a, 0x26, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
+	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73,
+	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93,
+	0x02, 0x25, 0x12, 0x23, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x61, 0x74, 0x74, 0x65,
+	0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x70,
+	0x6f, 0x73, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22,
+	0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x1a, 0x25, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
+	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73,
+	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+	0x28, 0x22, 0x23, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+	0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x61, 0x74, 0x74, 0x65, 0x73,
+	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x01, 0x2a, 0x12, 0xb2, 0x01, 0x0a, 0x1d, 0x53, 0x75,
+	0x62, 0x6d, 0x69, 0x74, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6c,
+	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x30, 0x2e, 0x65, 0x74,
+	0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6c,
+	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e,
+	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53,
+	0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x22, 0x21, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76,
 	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
-	0x72, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x7a, 0x0a, 0x08, 0x47, 0x65,
-	0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x23, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
-	0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42,
-	0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x65, 0x74,
+	0x72, 0x2f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0xbe,
+	0x01, 0x0a, 0x23, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41,
+	0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
+	0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x33, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
+	0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53,
+	0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x75,
+	0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x65, 0x74,
 	0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22,
-	0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31,
+	0x68, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67,
+	0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x22, 0x21, 0x2f, 0x65, 0x74, 0x68, 0x2f,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
+	0x6f, 0x72, 0x2f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12,
+	0x8e, 0x01, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x45, 0x78, 0x69, 0x74, 0x12,
+	0x2a, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f,
+	0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x1a, 0x2a, 0x2e, 0x65, 0x74,
+	0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x45, 0x78, 0x69, 0x74, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22,
+	0x1c, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76,
+	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x65, 0x78, 0x69, 0x74, 0x3a, 0x01, 0x2a,
+	0x12, 0xa1, 0x01, 0x0a, 0x19, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6f,
+	0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x37,
+	0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65,
+	0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22,
+	0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x22, 0x28, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31,
 	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
-	0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x8a, 0x01, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x6f,
-	0x73, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x28, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65,
-	0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
-	0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63,
-	0x6b, 0x1a, 0x26, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73,
-	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02,
-	0x22, 0x22, 0x1d, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
-	0x3a, 0x01, 0x2a, 0x12, 0x98, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x65, 0x73,
-	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x2e, 0x65, 0x74, 0x68,
+	0x2f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
+	0x65, 0x3a, 0x01, 0x2a, 0x42, 0x95, 0x01, 0x0a, 0x19, 0x6f, 0x72, 0x67, 0x2e, 0x65, 0x74, 0x68,
 	0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61,
-	0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x65, 0x74, 0x68, 0x65,
-	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74,
-	0x61, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x65, 0x74, 0x68, 0x2f,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
-	0x6f, 0x72, 0x2f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x8f,
-	0x01, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d,
-	0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x74,
-	0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x25, 0x2e, 0x65, 0x74, 0x68, 0x65,
-	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x22, 0x23, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
-	0x72, 0x2f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x01, 0x2a,
-	0x12, 0xb2, 0x01, 0x0a, 0x1d, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x41, 0x67, 0x67, 0x72, 0x65,
-	0x67, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f,
-	0x6f, 0x66, 0x12, 0x30, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
-	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65,
-	0x67, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e,
-	0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x67, 0x67,
-	0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x22,
-	0x21, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76,
-	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61,
-	0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0xbe, 0x01, 0x0a, 0x23, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74,
-	0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53,
-	0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x33, 0x2e,
-	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x67, 0x67, 0x72,
-	0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x1a, 0x34, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
-	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65,
-	0x64, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26,
-	0x22, 0x21, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f,
-	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67,
-	0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x8e, 0x01, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x70, 0x6f,
-	0x73, 0x65, 0x45, 0x78, 0x69, 0x74, 0x12, 0x2a, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
-	0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53,
-	0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78,
-	0x69, 0x74, 0x1a, 0x2a, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74,
-	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f,
-	0x73, 0x65, 0x45, 0x78, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27,
-	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f,
-	0x65, 0x78, 0x69, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0xa1, 0x01, 0x0a, 0x19, 0x53, 0x75, 0x62, 0x73,
-	0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x53, 0x75,
-	0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x37, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d,
-	0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f,
-	0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x53, 0x75,
-	0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x22, 0x28,
-	0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61,
-	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x2f, 0x73,
-	0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x3a, 0x01, 0x2a, 0x42, 0x95, 0x01, 0x0a, 0x19,
-	0x6f, 0x72, 0x67, 0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64,
-	0x61, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74,
-	0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69,
-	0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x61, 0x70,
-	0x69, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b,
-	0x65, 0x74, 0x68, 0xaa, 0x02, 0x15, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x45,
-	0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x15, 0x45, 0x74,
-	0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5c, 0x45, 0x74, 0x68, 0x5c, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x61, 0x31, 0x42, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f,
+	0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
+	0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65,
+	0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x2f,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x65, 0x74, 0x68, 0xaa, 0x02, 0x15, 0x45,
+	0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x45, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x15, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5c,
+	0x45, 0x74, 0x68, 0x5c, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
diff --git a/go.mod b/go.mod
index ce324fe9..e157c83d 100644
--- a/go.mod
+++ b/go.mod
@@ -3,10 +3,11 @@ module github.com/prysmaticlabs/ethereumapis
 go 1.13
 
 require (
-	github.com/ferranbt/fastssz v0.0.0-20200728110133-0b6e349af87a
+	github.com/ferranbt/fastssz v0.0.0-20210120143747-11b9eff30ea9
 	github.com/gogo/protobuf v1.3.1
 	github.com/golang/protobuf v1.4.2
 	github.com/grpc-ecosystem/grpc-gateway v1.13.0
+	github.com/prysmaticlabs/eth2-types v0.0.0-20210127031309-22cbe426eba6
 	github.com/prysmaticlabs/go-bitfield v0.0.0-20200322041314-62c2aee71669
 	google.golang.org/genproto v0.0.0-20200528191852-705c0b31589b
 	google.golang.org/grpc v1.29.1
diff --git a/go.sum b/go.sum
index 36be6432..ee0185ae 100644
--- a/go.sum
+++ b/go.sum
@@ -8,8 +8,8 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF
 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/ferranbt/fastssz v0.0.0-20200728110133-0b6e349af87a h1:qLZC3oQLJ5eb18EZS3yDcnX7zmlEt8WTWlQR7x5wS5I=
-github.com/ferranbt/fastssz v0.0.0-20200728110133-0b6e349af87a/go.mod h1:DyEu2iuLBnb/T51BlsiO3yLYdJC6UbGMrIkqK1KmQxM=
+github.com/ferranbt/fastssz v0.0.0-20210120143747-11b9eff30ea9 h1:9VDpsWq096+oGMDTT/SgBD/VgZYf4pTF+KTPmZ+OaKM=
+github.com/ferranbt/fastssz v0.0.0-20210120143747-11b9eff30ea9/go.mod h1:DyEu2iuLBnb/T51BlsiO3yLYdJC6UbGMrIkqK1KmQxM=
 github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
 github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls=
 github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
@@ -37,8 +37,11 @@ github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQL
 github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 github.com/minio/sha256-simd v0.1.1 h1:5QHSlgo3nt5yKOJrC7W8w7X+NFl8cMPZm96iu8kKUJU=
 github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
+github.com/mitchellh/mapstructure v1.3.2 h1:mRS76wmkOn3KkKAyXDu42V+6ebnXWIztFSYGN7GeoRg=
 github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prysmaticlabs/eth2-types v0.0.0-20210127031309-22cbe426eba6 h1:n/ZI+/bZfkMoGoV2Rult3YvS5LT4dvpAFOuISq+I+GY=
+github.com/prysmaticlabs/eth2-types v0.0.0-20210127031309-22cbe426eba6/go.mod h1:kOmQ/zdobQf7HUohDTifDNFEZfNaSCIY5fkONPL+dWU=
 github.com/prysmaticlabs/go-bitfield v0.0.0-20200322041314-62c2aee71669 h1:cX6YRZnZ9sgMqM5U14llxUiXVNJ3u07Res1IIjTOgtI=
 github.com/prysmaticlabs/go-bitfield v0.0.0-20200322041314-62c2aee71669/go.mod h1:hCwmef+4qXWjv0jLDbQdWnL0Ol7cS7/lCSS26WR+u6s=
 github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
@@ -94,8 +97,10 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
 google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA=
 google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
 gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff --git a/tools/ethereumapi_dependencies.bzl b/tools/ethereumapi_dependencies.bzl
index be2e03eb..9ac1b607 100644
--- a/tools/ethereumapi_dependencies.bzl
+++ b/tools/ethereumapi_dependencies.bzl
@@ -311,8 +311,8 @@ def ethereumapi_deps():
     go_repository(
         name = "com_github_ferranbt_fastssz",
         importpath = "github.com/ferranbt/fastssz",
-        sum = "h1:qLZC3oQLJ5eb18EZS3yDcnX7zmlEt8WTWlQR7x5wS5I=",
-        version = "v0.0.0-20200728110133-0b6e349af87a",
+        sum = "h1:9VDpsWq096+oGMDTT/SgBD/VgZYf4pTF+KTPmZ+OaKM=",
+        version = "v0.0.0-20210120143747-11b9eff30ea9",
     )
     go_repository(
         name = "com_github_ghodss_yaml",
@@ -344,3 +344,9 @@ def ethereumapi_deps():
         sum = "h1:mRS76wmkOn3KkKAyXDu42V+6ebnXWIztFSYGN7GeoRg=",
         version = "v1.3.2",
     )
+    go_repository(
+        name = "com_github_prysmaticlabs_eth2_types",
+        importpath = "github.com/prysmaticlabs/eth2-types",
+        sum = "h1:n/ZI+/bZfkMoGoV2Rult3YvS5LT4dvpAFOuISq+I+GY=",
+        version = "v0.0.0-20210127031309-22cbe426eba6",
+    )


Test patch:
diff --git a/eth/v1/attestation.pb.go b/eth/v1/attestation.pb.go
index 77be1fa9..ffad6551 100644
--- a/eth/v1/attestation.pb.go
+++ b/eth/v1/attestation.pb.go
@@ -11,6 +11,7 @@ import (
 
 	_ "github.com/gogo/protobuf/gogoproto"
 	proto "github.com/gogo/protobuf/proto"
+	github_com_prysmaticlabs_eth2_types "github.com/prysmaticlabs/eth2-types"
 	github_com_prysmaticlabs_go_bitfield "github.com/prysmaticlabs/go-bitfield"
 )
 
@@ -286,11 +287,11 @@ func (m *AttestationData) GetTarget() *Checkpoint {
 }
 
 type Checkpoint struct {
-	Epoch                uint64   `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	Root                 []byte   `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty" ssz-size:"32"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	Root                 []byte                                    `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty" ssz-size:"32"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *Checkpoint) Reset()         { *m = Checkpoint{} }
@@ -326,7 +327,7 @@ func (m *Checkpoint) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_Checkpoint proto.InternalMessageInfo
 
-func (m *Checkpoint) GetEpoch() uint64 {
+func (m *Checkpoint) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -351,43 +352,45 @@ func init() {
 func init() { proto.RegisterFile("eth/v1/attestation.proto", fileDescriptor_b424b17af5508fe0) }
 
 var fileDescriptor_b424b17af5508fe0 = []byte{
-	// 573 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0x4d, 0x6e, 0xd3, 0x40,
-	0x14, 0xd6, 0x84, 0xb4, 0xa8, 0x13, 0xa8, 0xdb, 0x81, 0x45, 0x04, 0x55, 0x5b, 0x59, 0x42, 0x14,
-	0x89, 0xd8, 0x24, 0xad, 0x10, 0x44, 0x62, 0x51, 0x43, 0x85, 0xba, 0xab, 0xcc, 0x0e, 0x55, 0xaa,
-	0xc6, 0xce, 0xeb, 0x78, 0x54, 0xdb, 0x63, 0xcd, 0xbc, 0x44, 0xa5, 0x17, 0xe0, 0x16, 0x1c, 0x80,
-	0x5b, 0xb0, 0x43, 0xac, 0x38, 0x41, 0x85, 0xca, 0x0d, 0xba, 0x41, 0x62, 0x85, 0x3c, 0x4e, 0xea,
-	0xd0, 0x9f, 0xa8, 0x3b, 0xbf, 0x37, 0xdf, 0xf7, 0xde, 0xf7, 0x7d, 0x93, 0x09, 0x6d, 0x03, 0x26,
-	0xfe, 0xa8, 0xeb, 0x73, 0x44, 0x30, 0xc8, 0x51, 0xaa, 0xdc, 0x2b, 0xb4, 0x42, 0xc5, 0x1c, 0xc0,
-	0x04, 0x34, 0x0c, 0x33, 0x0f, 0x30, 0xf1, 0x46, 0xdd, 0x47, 0x1d, 0x21, 0x31, 0x19, 0x46, 0x5e,
-	0xac, 0x32, 0x5f, 0x28, 0xa1, 0x7c, 0x8b, 0x8b, 0x86, 0x87, 0xb6, 0xb2, 0x85, 0xfd, 0xaa, 0xf8,
-	0xee, 0x6f, 0x42, 0x5b, 0xdb, 0xf5, 0x54, 0x96, 0xd1, 0x25, 0x2e, 0x84, 0x06, 0x61, 0xcb, 0x83,
-	0x48, 0xa2, 0x69, 0x93, 0x75, 0xb2, 0x71, 0x2f, 0x08, 0xce, 0x4f, 0xd7, 0x16, 0x8d, 0x39, 0xe9,
-	0x64, 0xfc, 0xb8, 0xef, 0xf6, 0x5e, 0x6c, 0xbd, 0x72, 0xff, 0x9e, 0xae, 0x3d, 0x9f, 0x5a, 0x57,
-	0xe8, 0x4f, 0x26, 0xe3, 0x28, 0xe3, 0x94, 0x47, 0xc6, 0x17, 0xaa, 0x13, 0x49, 0x3c, 0x94, 0x90,
-	0x0e, 0xbc, 0x40, 0x62, 0x2a, 0x0d, 0x86, 0xce, 0xd4, 0xec, 0x40, 0xa2, 0x61, 0x5b, 0xb4, 0x39,
-	0xe0, 0xc8, 0xdb, 0x8d, 0x75, 0xb2, 0xd1, 0xea, 0xad, 0x7b, 0x97, 0xdc, 0x78, 0x53, 0xd2, 0xde,
-	0x71, 0xe4, 0xa1, 0x45, 0x33, 0x9f, 0x2e, 0x18, 0x29, 0x72, 0x8e, 0x43, 0x0d, 0xed, 0x3b, 0x56,
-	0xdd, 0xf2, 0xf9, 0xe9, 0xda, 0xfd, 0x52, 0x9d, 0x91, 0x27, 0xd0, 0x77, 0x5f, 0xbf, 0x74, 0xc3,
-	0x1a, 0xe3, 0x7e, 0x23, 0x74, 0x65, 0x7b, 0xbc, 0x1a, 0xa6, 0x66, 0x6e, 0xe7, 0x83, 0x3d, 0xad,
-	0xd4, 0x21, 0x7b, 0x56, 0xdb, 0x56, 0xfa, 0x40, 0xe6, 0x03, 0x38, 0xb6, 0xb6, 0x9b, 0xb5, 0x64,
-	0xa5, 0x77, 0xcb, 0x36, 0xeb, 0xd3, 0x85, 0x49, 0xab, 0x5a, 0xde, 0xea, 0xad, 0xcc, 0xd2, 0x1d,
-	0xd6, 0x70, 0xd6, 0xa7, 0x8e, 0x81, 0x14, 0x62, 0x9b, 0x6d, 0x51, 0x6e, 0xb6, 0xce, 0xaf, 0x95,
-	0xbf, 0x78, 0x81, 0xb4, 0x12, 0xdd, 0x2f, 0x84, 0xba, 0x1f, 0xa4, 0xc8, 0x61, 0x30, 0xd3, 0xc9,
-	0x7b, 0x7a, 0x37, 0x03, 0x63, 0xb8, 0x00, 0x6b, 0xa0, 0xd5, 0xeb, 0x5c, 0x15, 0x37, 0x83, 0x1f,
-	0x4e, 0xd8, 0xff, 0x87, 0xdc, 0xb8, 0x45, 0xc8, 0x7f, 0x08, 0x75, 0x2e, 0xdd, 0x17, 0x63, 0xb4,
-	0x69, 0x52, 0x85, 0xe3, 0x2c, 0xed, 0x37, 0x7b, 0x4a, 0x9d, 0x58, 0x65, 0x99, 0x44, 0x04, 0x18,
-	0x47, 0xdd, 0xb0, 0xc7, 0x8b, 0x17, 0xed, 0x2a, 0xe9, 0x37, 0x74, 0x39, 0x02, 0x1e, 0x97, 0x3f,
-	0xc3, 0x54, 0xc5, 0x47, 0x07, 0x5a, 0x29, 0xbc, 0xfe, 0xba, 0x37, 0x7b, 0x6e, 0xe8, 0x54, 0xd8,
-	0xa0, 0x84, 0x86, 0x4a, 0x21, 0xdb, 0xa4, 0xf3, 0x46, 0x0d, 0x75, 0x0c, 0xed, 0xa6, 0x0d, 0xe2,
-	0xf1, 0x95, 0x20, 0xde, 0x26, 0x10, 0x1f, 0x15, 0x4a, 0xe6, 0x18, 0x8e, 0xa1, 0x25, 0x09, 0xb9,
-	0x16, 0x80, 0xed, 0xb9, 0x5b, 0x90, 0x2a, 0xa8, 0xbb, 0x4b, 0x69, 0xdd, 0x65, 0x0f, 0xe9, 0x1c,
-	0x14, 0x2a, 0x4e, 0xc6, 0xa6, 0xab, 0x82, 0x3d, 0xa1, 0x4d, 0xab, 0xbf, 0x71, 0x93, 0x7e, 0x7b,
-	0x1c, 0x7c, 0x26, 0xdf, 0xcf, 0x56, 0xc9, 0xcf, 0xb3, 0x55, 0xf2, 0xeb, 0x6c, 0x95, 0xd0, 0x07,
-	0x4a, 0x8b, 0xcb, 0x0a, 0x82, 0xa5, 0xa9, 0x94, 0xf7, 0xca, 0x57, 0xbc, 0x47, 0x3e, 0xde, 0xfc,
-	0x0e, 0x27, 0x6c, 0x5e, 0x48, 0x5b, 0xf8, 0xa3, 0xee, 0xd7, 0x86, 0xb3, 0x33, 0x99, 0xb9, 0x63,
-	0x67, 0xfe, 0xa8, 0x3b, 0xfb, 0x3b, 0x98, 0xec, 0x8f, 0xba, 0xd1, 0xbc, 0xfd, 0x83, 0xd8, 0xfc,
-	0x17, 0x00, 0x00, 0xff, 0xff, 0xd8, 0xe3, 0x58, 0xbb, 0x7c, 0x04, 0x00, 0x00,
+	// 594 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xd1, 0x4a, 0x1b, 0x4d,
+	0x14, 0x66, 0xf2, 0x47, 0x7f, 0x9c, 0xb4, 0xae, 0x4e, 0x6f, 0x42, 0x2b, 0x46, 0x16, 0x4a, 0x15,
+	0xcc, 0x6e, 0x13, 0xa5, 0xb4, 0x81, 0x5e, 0xb8, 0x36, 0x94, 0xde, 0xc9, 0xf6, 0xae, 0x08, 0x32,
+	0xbb, 0x39, 0xce, 0x0e, 0x66, 0x33, 0xcb, 0xcc, 0x49, 0x50, 0x5f, 0xa0, 0x6f, 0xd1, 0x07, 0xe8,
+	0x5b, 0xf4, 0xae, 0xf4, 0xaa, 0x4f, 0x10, 0x8a, 0x7d, 0x03, 0x6f, 0x0a, 0x5e, 0x95, 0x9d, 0x8d,
+	0x6e, 0x1a, 0x35, 0x78, 0xb7, 0xe7, 0xcc, 0xf7, 0x9d, 0xf3, 0x7d, 0xdf, 0x64, 0x42, 0xeb, 0x80,
+	0x89, 0x3f, 0x6a, 0xf9, 0x1c, 0x11, 0x0c, 0x72, 0x94, 0x6a, 0xe0, 0x65, 0x5a, 0xa1, 0x62, 0x0e,
+	0x60, 0x02, 0x1a, 0x86, 0xa9, 0x07, 0x98, 0x78, 0xa3, 0xd6, 0xd3, 0xa6, 0x90, 0x98, 0x0c, 0x23,
+	0x2f, 0x56, 0xa9, 0x2f, 0x94, 0x50, 0xbe, 0xc5, 0x45, 0xc3, 0x63, 0x5b, 0xd9, 0xc2, 0x7e, 0x15,
+	0x7c, 0xf7, 0x37, 0xa1, 0xb5, 0xbd, 0x72, 0x2a, 0x4b, 0xe9, 0x0a, 0x17, 0x42, 0x83, 0xb0, 0xe5,
+	0x51, 0x24, 0xd1, 0xd4, 0xc9, 0x06, 0xd9, 0x7c, 0x14, 0x04, 0x97, 0xe3, 0xc6, 0xb2, 0x31, 0xe7,
+	0xcd, 0x94, 0x9f, 0x76, 0xdc, 0xf6, 0xcb, 0xdd, 0xd7, 0xee, 0xd5, 0xb8, 0xb1, 0x3d, 0xb5, 0x2e,
+	0xd3, 0x67, 0x26, 0xe5, 0x28, 0xe3, 0x3e, 0x8f, 0x8c, 0x2f, 0x54, 0x33, 0x92, 0x78, 0x2c, 0xa1,
+	0xdf, 0xf3, 0x02, 0x89, 0x7d, 0x69, 0x30, 0x74, 0xa6, 0x66, 0x07, 0x12, 0x0d, 0xdb, 0xa5, 0xd5,
+	0x1e, 0x47, 0x5e, 0xaf, 0x6c, 0x90, 0xcd, 0x5a, 0x7b, 0xc3, 0x9b, 0x71, 0xe3, 0x4d, 0x49, 0x7b,
+	0xc7, 0x91, 0x87, 0x16, 0xcd, 0x7c, 0xba, 0x64, 0xa4, 0x18, 0x70, 0x1c, 0x6a, 0xa8, 0xff, 0x67,
+	0xd5, 0xad, 0x5e, 0x8e, 0x1b, 0x8f, 0x73, 0x75, 0x46, 0x9e, 0x43, 0xc7, 0x7d, 0xf3, 0xca, 0x0d,
+	0x4b, 0x8c, 0xfb, 0x8d, 0xd0, 0xb5, 0xbd, 0xc9, 0x6a, 0x98, 0x9a, 0xb9, 0x37, 0xe8, 0x1d, 0x68,
+	0xa5, 0x8e, 0xd9, 0x56, 0x69, 0x5b, 0xe9, 0x23, 0x39, 0xe8, 0xc1, 0xa9, 0xb5, 0x5d, 0x2d, 0x25,
+	0x2b, 0xfd, 0x21, 0x6f, 0xb3, 0x0e, 0x5d, 0xba, 0x6e, 0x15, 0xcb, 0x6b, 0xed, 0xb5, 0x79, 0xba,
+	0xc3, 0x12, 0xce, 0x3a, 0xd4, 0x31, 0xd0, 0x87, 0xd8, 0x66, 0x9b, 0xe5, 0x9b, 0xad, 0xf3, 0x3b,
+	0xe5, 0x2f, 0xdf, 0x20, 0xad, 0x44, 0xf7, 0x0b, 0xa1, 0xee, 0x47, 0x29, 0x06, 0xd0, 0x9b, 0xeb,
+	0xe4, 0x3d, 0xfd, 0x3f, 0x05, 0x63, 0xb8, 0x00, 0x6b, 0xa0, 0xd6, 0x6e, 0xde, 0x16, 0x37, 0x87,
+	0x1f, 0x5e, 0xb3, 0xff, 0x0d, 0xb9, 0xf2, 0x80, 0x90, 0xff, 0x10, 0xea, 0xcc, 0xdc, 0x17, 0x63,
+	0xb4, 0x6a, 0xfa, 0x0a, 0x27, 0x59, 0xda, 0x6f, 0xf6, 0x82, 0x3a, 0xb1, 0x4a, 0x53, 0x89, 0x08,
+	0x30, 0x89, 0xba, 0x62, 0x8f, 0x97, 0x6f, 0xda, 0x45, 0xd2, 0x6f, 0xe9, 0x6a, 0x04, 0x3c, 0xce,
+	0x7f, 0x86, 0x7d, 0x15, 0x9f, 0x1c, 0x69, 0xa5, 0xf0, 0xee, 0xeb, 0xde, 0x69, 0xbb, 0xa1, 0x53,
+	0x60, 0x83, 0x1c, 0x1a, 0x2a, 0x85, 0x6c, 0x87, 0x2e, 0x1a, 0x35, 0xd4, 0x31, 0xd4, 0xab, 0x36,
+	0x88, 0x67, 0xb7, 0x82, 0xd8, 0x4f, 0x20, 0x3e, 0xc9, 0x94, 0x1c, 0x60, 0x38, 0x81, 0xe6, 0x24,
+	0xe4, 0x5a, 0x00, 0xd6, 0x17, 0x1e, 0x40, 0x2a, 0xa0, 0xee, 0x29, 0xa5, 0x65, 0x97, 0xed, 0xd3,
+	0x05, 0xc8, 0x54, 0x9c, 0x14, 0xa6, 0x83, 0xe6, 0xd5, 0xb8, 0xb1, 0x75, 0xef, 0x2b, 0x01, 0x4c,
+	0xda, 0x4d, 0x3c, 0xcb, 0xc0, 0x78, 0xdd, 0x9c, 0x14, 0x16, 0x5c, 0xf6, 0x9c, 0x56, 0xad, 0xdd,
+	0xca, 0x7d, 0x76, 0xed, 0x71, 0xf0, 0x99, 0x7c, 0xbf, 0x58, 0x27, 0x3f, 0x2f, 0xd6, 0xc9, 0xaf,
+	0x8b, 0x75, 0x42, 0x9f, 0x28, 0x2d, 0x66, 0x05, 0x07, 0x2b, 0x53, 0x97, 0x72, 0x90, 0x3f, 0xfa,
+	0x03, 0xf2, 0x69, 0x7b, 0x9e, 0x20, 0xcb, 0xe6, 0x99, 0xb4, 0x85, 0x3f, 0x6a, 0x7d, 0xad, 0x38,
+	0xdd, 0xeb, 0x99, 0x5d, 0x3b, 0xf3, 0x47, 0xd9, 0x39, 0xec, 0x62, 0x72, 0x38, 0x6a, 0x45, 0x8b,
+	0xf6, 0xff, 0x64, 0xe7, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcf, 0x97, 0x95, 0x3d, 0xab, 0x04,
+	0x00, 0x00,
 }
 
 func (m *Attestation) Marshal() (dAtA []byte, err error) {
@@ -1446,7 +1449,7 @@ func (m *Checkpoint) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
diff --git a/eth/v1/attestation.proto b/eth/v1/attestation.proto
index 36e8e153..23c46e0e 100644
--- a/eth/v1/attestation.proto
+++ b/eth/v1/attestation.proto
@@ -79,7 +79,7 @@ message Checkpoint {
     // is to link the check points together for justification and finalization.
 
     // Epoch the checkpoint references.
-    uint64 epoch = 1;
+    uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // Block root of the checkpoint references.
     bytes root = 2 [(gogoproto.moretags) = "ssz-size:\"32\""];
diff --git a/eth/v1alpha1/attestation.pb.go b/eth/v1alpha1/attestation.pb.go
index d44d6741..2b31b8ef 100755
--- a/eth/v1alpha1/attestation.pb.go
+++ b/eth/v1alpha1/attestation.pb.go
@@ -11,6 +11,7 @@ import (
 
 	_ "github.com/gogo/protobuf/gogoproto"
 	proto "github.com/gogo/protobuf/proto"
+	github_com_prysmaticlabs_eth2_types "github.com/prysmaticlabs/eth2-types"
 	github_com_prysmaticlabs_go_bitfield "github.com/prysmaticlabs/go-bitfield"
 )
 
@@ -286,11 +287,11 @@ func (m *AttestationData) GetTarget() *Checkpoint {
 }
 
 type Checkpoint struct {
-	Epoch                uint64   `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
-	Root                 []byte   `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty" ssz-size:"32"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Epoch                github_com_prysmaticlabs_eth2_types.Epoch `protobuf:"varint,1,opt,name=epoch,proto3,casttype=github.com/prysmaticlabs/eth2-types.Epoch" json:"epoch,omitempty"`
+	Root                 []byte                                    `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty" ssz-size:"32"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
 }
 
 func (m *Checkpoint) Reset()         { *m = Checkpoint{} }
@@ -326,7 +327,7 @@ func (m *Checkpoint) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_Checkpoint proto.InternalMessageInfo
 
-func (m *Checkpoint) GetEpoch() uint64 {
+func (m *Checkpoint) GetEpoch() github_com_prysmaticlabs_eth2_types.Epoch {
 	if m != nil {
 		return m.Epoch
 	}
@@ -351,44 +352,45 @@ func init() {
 func init() { proto.RegisterFile("eth/v1alpha1/attestation.proto", fileDescriptor_7894c78397fc93a1) }
 
 var fileDescriptor_7894c78397fc93a1 = []byte{
-	// 582 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xcf, 0x4f, 0xd4, 0x40,
-	0x14, 0x4e, 0xeb, 0x82, 0x61, 0x56, 0x59, 0x98, 0x48, 0xb2, 0x1a, 0xb3, 0x60, 0x13, 0x15, 0x13,
-	0x69, 0x65, 0x31, 0x44, 0xd6, 0x98, 0x48, 0x95, 0x03, 0x07, 0x13, 0x52, 0x6f, 0x86, 0x84, 0x4c,
-	0xbb, 0x8f, 0xe9, 0x84, 0xb6, 0xd3, 0xcc, 0xbc, 0x35, 0xc8, 0xd5, 0x3f, 0x45, 0x4f, 0xfe, 0x23,
-	0x1a, 0x4f, 0xfe, 0x05, 0xc4, 0x70, 0xf3, 0xca, 0xd1, 0x93, 0xe9, 0x74, 0x4b, 0xab, 0xd9, 0x45,
-	0x6e, 0xf3, 0xde, 0xbc, 0xf7, 0xbd, 0xef, 0xfb, 0xe6, 0x07, 0xe9, 0x01, 0xc6, 0xde, 0xfb, 0x75,
-	0x96, 0xe4, 0x31, 0x5b, 0xf7, 0x18, 0x22, 0x68, 0x64, 0x28, 0x64, 0xe6, 0xe6, 0x4a, 0xa2, 0xa4,
-	0x4b, 0x80, 0x31, 0x28, 0x18, 0xa5, 0x2e, 0x60, 0xec, 0x56, 0x85, 0x77, 0xd6, 0xb8, 0xc0, 0x78,
-	0x14, 0xba, 0x91, 0x4c, 0x3d, 0x2e, 0xb9, 0xf4, 0x4c, 0x75, 0x38, 0x3a, 0x34, 0x91, 0x09, 0xcc,
-	0xaa, 0x44, 0x71, 0x7e, 0x59, 0xa4, 0xbd, 0x5d, 0x63, 0xd3, 0x94, 0x2c, 0x30, 0xce, 0x15, 0x70,
-	0x13, 0x1e, 0x84, 0x02, 0x75, 0xd7, 0x5a, 0xb1, 0x56, 0x6f, 0xf8, 0xfe, 0xf9, 0xe9, 0xf2, 0xbc,
-	0xd6, 0x27, 0x6b, 0x29, 0x3b, 0x1e, 0x38, 0xfd, 0x27, 0x4f, 0x9f, 0x39, 0xbf, 0x4f, 0x97, 0x1f,
-	0x37, 0xc6, 0xe5, 0xea, 0x83, 0x4e, 0x19, 0x8a, 0x28, 0x61, 0xa1, 0xf6, 0xb8, 0x5c, 0x0b, 0x05,
-	0x1e, 0x0a, 0x48, 0x86, 0xae, 0x2f, 0x30, 0x11, 0x1a, 0x83, 0x4e, 0x03, 0xdb, 0x17, 0xa8, 0xe9,
-	0x80, 0xb4, 0x86, 0x0c, 0x59, 0xd7, 0x5e, 0xb1, 0x56, 0xdb, 0xfd, 0x07, 0xee, 0x44, 0x4d, 0x6e,
-	0x83, 0xe0, 0x6b, 0x86, 0x2c, 0x30, 0x3d, 0xd4, 0x23, 0x73, 0x5a, 0xf0, 0x8c, 0xe1, 0x48, 0x41,
-	0xf7, 0x9a, 0xe1, 0xb8, 0x78, 0x7e, 0xba, 0x7c, 0xb3, 0xe0, 0xa8, 0xc5, 0x09, 0x0c, 0x9c, 0xad,
-	0x4d, 0x27, 0xa8, 0x6b, 0x9c, 0xaf, 0x16, 0xb9, 0xbb, 0x3d, 0x26, 0x00, 0x0d, 0xcc, 0xed, 0x6c,
-	0xb8, 0xa7, 0xa4, 0x3c, 0xa4, 0x8f, 0x6a, 0xf1, 0x52, 0x1d, 0x88, 0x6c, 0x08, 0xc7, 0x46, 0x7c,
-	0xab, 0x26, 0x2e, 0xd5, 0x6e, 0x91, 0xa6, 0x2f, 0xc9, 0x5c, 0x95, 0x2a, 0x87, 0xb7, 0xfb, 0xce,
-	0xff, 0xd9, 0x07, 0x75, 0x13, 0x1d, 0x90, 0x8e, 0x86, 0x04, 0x22, 0xe3, 0x73, 0x5e, 0xcc, 0x37,
-	0x2e, 0x4c, 0x14, 0x31, 0x7f, 0x51, 0x69, 0x88, 0x3a, 0x9f, 0x2d, 0xe2, 0xbc, 0x15, 0x3c, 0x83,
-	0xe1, 0xa5, 0x7a, 0xde, 0x90, 0xeb, 0x29, 0x68, 0xcd, 0x38, 0x18, 0x19, 0xed, 0xfe, 0xc6, 0x34,
-	0x8a, 0x97, 0xa0, 0x04, 0x15, 0xc6, 0xdf, 0x86, 0xdb, 0x57, 0x30, 0xfc, 0xa3, 0x4d, 0x3a, 0xff,
-	0x9c, 0x1d, 0xa5, 0xa4, 0xa5, 0x13, 0x89, 0x63, 0x5f, 0xcd, 0x9a, 0x3e, 0x24, 0x9d, 0x48, 0xa6,
-	0xa9, 0x40, 0x04, 0x18, 0xdb, 0x6e, 0x9b, 0xed, 0xf9, 0x8b, 0x74, 0xe9, 0xfa, 0x0b, 0xb2, 0x18,
-	0x02, 0x8b, 0x8a, 0x8b, 0x99, 0xc8, 0xe8, 0xe8, 0x40, 0x49, 0x89, 0x93, 0x8f, 0x7e, 0xa3, 0xef,
-	0x04, 0x9d, 0xb2, 0xd6, 0x2f, 0x4a, 0x03, 0x29, 0x91, 0x6e, 0x91, 0x59, 0x2d, 0x47, 0x2a, 0x82,
-	0x6e, 0xcb, 0xd8, 0x71, 0x6f, 0x8a, 0x1d, 0xaf, 0x62, 0x88, 0x8e, 0x72, 0x29, 0x32, 0x0c, 0xc6,
-	0x0d, 0x45, 0x2b, 0x32, 0xc5, 0x01, 0xbb, 0x33, 0x57, 0x6e, 0x2d, 0x1b, 0x9c, 0x5d, 0x42, 0xea,
-	0x2c, 0xbd, 0x45, 0x66, 0x20, 0x97, 0x51, 0x3c, 0x36, 0xa0, 0x0c, 0xe8, 0x7d, 0xd2, 0x32, 0x5a,
-	0xec, 0x69, 0x5a, 0xcc, 0xb6, 0xff, 0xc9, 0xfa, 0x76, 0xd6, 0xb3, 0x7e, 0x9c, 0xf5, 0xac, 0x9f,
-	0x67, 0x3d, 0x8b, 0xdc, 0x96, 0x8a, 0x4f, 0xe6, 0xe1, 0x2f, 0x34, 0x7c, 0xdf, 0x2b, 0x5e, 0xfa,
-	0x9e, 0xf5, 0x6e, 0x73, 0xea, 0x5b, 0xad, 0x30, 0x58, 0x2e, 0x4c, 0x70, 0xf1, 0xef, 0x3c, 0x07,
-	0x8c, 0xbf, 0xd8, 0x4b, 0x3b, 0xd5, 0x8c, 0x9d, 0xc6, 0x8c, 0xef, 0x75, 0x7e, 0x7f, 0x07, 0xe3,
-	0xfd, 0x2a, 0x1f, 0xce, 0x9a, 0xaf, 0x65, 0xe3, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x79, 0xc9,
-	0x31, 0x43, 0xc2, 0x04, 0x00, 0x00,
+	// 601 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0x41, 0x6b, 0x13, 0x41,
+	0x14, 0x66, 0x63, 0x5a, 0xe9, 0x44, 0x9b, 0x76, 0xa0, 0x10, 0x45, 0x92, 0xba, 0xa0, 0xb6, 0x60,
+	0x36, 0x36, 0x95, 0x62, 0x23, 0x82, 0xdd, 0x9a, 0x83, 0x07, 0xa1, 0xac, 0x37, 0x29, 0x94, 0xd9,
+	0xcd, 0xeb, 0xec, 0xd0, 0xdd, 0x9d, 0x65, 0xe6, 0x45, 0xda, 0x5e, 0xfd, 0x29, 0x7a, 0xf2, 0x8f,
+	0x28, 0x9e, 0xfc, 0x05, 0x41, 0x7a, 0xf3, 0xda, 0x63, 0x4f, 0xb2, 0xb3, 0x49, 0x77, 0x95, 0x24,
+	0xf6, 0xb6, 0xef, 0xcd, 0xfb, 0xbe, 0xf7, 0x7d, 0xdf, 0x24, 0x43, 0x9a, 0x80, 0x61, 0xe7, 0xe3,
+	0x16, 0x8b, 0xd2, 0x90, 0x6d, 0x75, 0x18, 0x22, 0x68, 0x64, 0x28, 0x64, 0xe2, 0xa4, 0x4a, 0xa2,
+	0xa4, 0x6b, 0x80, 0x21, 0x28, 0x18, 0xc6, 0x0e, 0x60, 0xe8, 0x4c, 0x06, 0xef, 0xb7, 0xb9, 0xc0,
+	0x70, 0xe8, 0x3b, 0x81, 0x8c, 0x3b, 0x5c, 0x72, 0xd9, 0x31, 0xd3, 0xfe, 0xf0, 0xd8, 0x54, 0xa6,
+	0x30, 0x5f, 0x39, 0x8b, 0xfd, 0xdb, 0x22, 0xb5, 0xbd, 0x82, 0x9b, 0xc6, 0x64, 0x85, 0x71, 0xae,
+	0x80, 0x9b, 0xf2, 0xc8, 0x17, 0xa8, 0x1b, 0xd6, 0xba, 0xb5, 0x71, 0xc7, 0x75, 0x2f, 0x47, 0xad,
+	0x65, 0xad, 0xcf, 0xdb, 0x31, 0x3b, 0xed, 0xd9, 0xdd, 0x67, 0xcf, 0x5f, 0xd8, 0x57, 0xa3, 0xd6,
+	0xd3, 0xd2, 0xba, 0x54, 0x9d, 0xe9, 0x98, 0xa1, 0x08, 0x22, 0xe6, 0xeb, 0x0e, 0x97, 0x6d, 0x5f,
+	0xe0, 0xb1, 0x80, 0x68, 0xe0, 0xb8, 0x02, 0x23, 0xa1, 0xd1, 0xab, 0x97, 0xb8, 0x5d, 0x81, 0x9a,
+	0xf6, 0x48, 0x75, 0xc0, 0x90, 0x35, 0x2a, 0xeb, 0xd6, 0x46, 0xad, 0xfb, 0xd8, 0x99, 0xea, 0xc9,
+	0x29, 0x09, 0x7c, 0xc3, 0x90, 0x79, 0x06, 0x43, 0x3b, 0x64, 0x49, 0x0b, 0x9e, 0x30, 0x1c, 0x2a,
+	0x68, 0xdc, 0x32, 0x1a, 0x57, 0x2f, 0x47, 0xad, 0xbb, 0x99, 0x46, 0x2d, 0xce, 0xa1, 0x67, 0xef,
+	0xee, 0xd8, 0x5e, 0x31, 0x63, 0x7f, 0xb3, 0xc8, 0x83, 0xbd, 0xb1, 0x00, 0x28, 0x71, 0xee, 0x25,
+	0x83, 0x03, 0x25, 0xe5, 0x31, 0xdd, 0x2c, 0xcc, 0x4b, 0x75, 0x24, 0x92, 0x01, 0x9c, 0x1a, 0xf3,
+	0xd5, 0x42, 0xb8, 0x54, 0x6f, 0xb3, 0x36, 0x7d, 0x4d, 0x96, 0x26, 0xad, 0x7c, 0x79, 0xad, 0x6b,
+	0xff, 0x5f, 0xbd, 0x57, 0x80, 0x68, 0x8f, 0xd4, 0x35, 0x44, 0x10, 0x98, 0x9c, 0xd3, 0x6c, 0xbf,
+	0x49, 0x61, 0xaa, 0x89, 0xe5, 0xeb, 0x49, 0x23, 0xd4, 0xfe, 0x62, 0x11, 0xfb, 0xbd, 0xe0, 0x09,
+	0x0c, 0xe6, 0xfa, 0x79, 0x47, 0x6e, 0xc7, 0xa0, 0x35, 0xe3, 0x60, 0x6c, 0xd4, 0xba, 0xdb, 0xb3,
+	0x24, 0xce, 0x61, 0xf1, 0x26, 0x1c, 0x7f, 0x07, 0x5e, 0xb9, 0x41, 0xe0, 0x9f, 0x2a, 0xa4, 0xfe,
+	0xcf, 0xdd, 0x51, 0x4a, 0xaa, 0x3a, 0x92, 0x38, 0xce, 0xd5, 0x7c, 0xd3, 0x27, 0xa4, 0x1e, 0xc8,
+	0x38, 0x16, 0x88, 0x00, 0xe3, 0xd8, 0x2b, 0xe6, 0x78, 0xf9, 0xba, 0x9d, 0xa7, 0xfe, 0x8a, 0xac,
+	0xfa, 0xc0, 0x82, 0xec, 0x87, 0x19, 0xc9, 0xe0, 0xe4, 0x48, 0x49, 0x89, 0xd3, 0xaf, 0x7e, 0xbb,
+	0x6b, 0x7b, 0xf5, 0x7c, 0xd6, 0xcd, 0x46, 0x3d, 0x29, 0x91, 0xee, 0x92, 0x45, 0x2d, 0x87, 0x2a,
+	0x80, 0x46, 0xd5, 0xc4, 0xf1, 0x70, 0x46, 0x1c, 0xfb, 0x21, 0x04, 0x27, 0xa9, 0x14, 0x09, 0x7a,
+	0x63, 0x40, 0x06, 0x45, 0xa6, 0x38, 0x60, 0x63, 0xe1, 0xc6, 0xd0, 0x1c, 0x60, 0x9f, 0x12, 0x52,
+	0x74, 0xe9, 0x3e, 0x59, 0x80, 0x54, 0x06, 0x61, 0x1e, 0x80, 0xdb, 0xbe, 0x1a, 0xb5, 0x36, 0x67,
+	0xfe, 0x87, 0x00, 0xc3, 0x6e, 0x1b, 0xcf, 0x52, 0xd0, 0x4e, 0x3f, 0x03, 0x79, 0x39, 0x96, 0x3e,
+	0x22, 0x55, 0x63, 0xbd, 0x32, 0xcb, 0xba, 0x39, 0x76, 0x3f, 0x5b, 0xdf, 0x2f, 0x9a, 0xd6, 0xcf,
+	0x8b, 0xa6, 0xf5, 0xeb, 0xa2, 0x69, 0x91, 0x7b, 0x52, 0xf1, 0xe9, 0xb2, 0xdd, 0x95, 0xd2, 0x35,
+	0x1d, 0x64, 0x0f, 0xc3, 0x81, 0xf5, 0x61, 0x67, 0x9e, 0x2c, 0xc3, 0xc1, 0x52, 0x61, 0x8a, 0xeb,
+	0x67, 0xea, 0x25, 0x60, 0xf8, 0xb5, 0xb2, 0xd6, 0x9f, 0xec, 0xe8, 0x97, 0x76, 0xfc, 0x28, 0xfa,
+	0x87, 0x7d, 0x0c, 0x0f, 0x27, 0x7d, 0x7f, 0xd1, 0xbc, 0x44, 0xdb, 0x7f, 0x02, 0x00, 0x00, 0xff,
+	0xff, 0xa9, 0xf8, 0x18, 0x9c, 0xf1, 0x04, 0x00, 0x00,
 }
 
 func (m *Attestation) Marshal() (dAtA []byte, err error) {
@@ -1447,7 +1449,7 @@ func (m *Checkpoint) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Epoch |= uint64(b&0x7F) << shift
+				m.Epoch |= github_com_prysmaticlabs_eth2_types.Epoch(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
diff --git a/eth/v1alpha1/attestation.proto b/eth/v1alpha1/attestation.proto
index 88b8c8ec..7c0b83d0 100644
--- a/eth/v1alpha1/attestation.proto
+++ b/eth/v1alpha1/attestation.proto
@@ -79,7 +79,7 @@ message Checkpoint {
     // is to link the check points together for justification and finalization.
 
     // Epoch the checkpoint references.
-    uint64 epoch = 1;
+    uint64 epoch = 1 [(gogoproto.casttype) = "github.com/prysmaticlabs/eth2-types.Epoch"];
 
     // Block root of the checkpoint references.
     bytes root = 2 [(gogoproto.moretags) = "ssz-size:\"32\""];
diff --git a/eth/v1alpha1_gateway/attestation.pb.go b/eth/v1alpha1_gateway/attestation.pb.go
index e6aa1322..e7ae4853 100755
--- a/eth/v1alpha1_gateway/attestation.pb.go
+++ b/eth/v1alpha1_gateway/attestation.pb.go
@@ -405,22 +405,25 @@ var file_eth_v1alpha1_attestation_proto_rawDesc = []byte{
 	0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21,
 	0x2e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31,
 	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e,
-	0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x49, 0x0a, 0x0a, 0x43, 0x68, 0x65,
-	0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x25, 0x0a,
-	0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f,
-	0x0d, 0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x04,
-	0x72, 0x6f, 0x6f, 0x74, 0x42, 0x97, 0x01, 0x0a, 0x19, 0x6f, 0x72, 0x67, 0x2e, 0x65, 0x74, 0x68,
-	0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x42, 0x10, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
-	0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73,
-	0x2f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x65, 0x74,
-	0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x65, 0x74, 0x68, 0xaa, 0x02,
-	0x15, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x45, 0x74, 0x68, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x15, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
-	0x6d, 0x5c, 0x45, 0x74, 0x68, 0x5c, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x78, 0x0a, 0x0a, 0x43, 0x68, 0x65,
+	0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x2d, 0xfa, 0xde, 0x1f, 0x29, 0x67, 0x69, 0x74, 0x68,
+	0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63,
+	0x6c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x32, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
+	0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x25, 0x0a, 0x04,
+	0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d,
+	0x73, 0x73, 0x7a, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x22, 0x33, 0x32, 0x22, 0x52, 0x04, 0x72,
+	0x6f, 0x6f, 0x74, 0x42, 0x97, 0x01, 0x0a, 0x19, 0x6f, 0x72, 0x67, 0x2e, 0x65, 0x74, 0x68, 0x65,
+	0x72, 0x65, 0x75, 0x6d, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x42, 0x10, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72,
+	0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
+	0x6d, 0x2f, 0x70, 0x72, 0x79, 0x73, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x6c, 0x61, 0x62, 0x73, 0x2f,
+	0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x65, 0x74, 0x68,
+	0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x65, 0x74, 0x68, 0xaa, 0x02, 0x15,
+	0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x45, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x15, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d,
+	0x5c, 0x45, 0x74, 0x68, 0x5c, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (