Browse Source

Merge pull request #148 from tendermint/begin_block

Begin block
pull/1780/head
Ethan Buchman 7 years ago
committed by GitHub
parent
commit
026ff5e89f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 292 additions and 203 deletions
  1. +4
    -3
      CHANGELOG.md
  2. +3
    -3
      Makefile
  3. +3
    -1
      README.md
  4. +2
    -2
      example/dummy/dummy_test.go
  5. +49
    -1
      types/application.go
  6. +0
    -44
      types/base_app.go
  7. +0
    -19
      types/kvpair.go
  8. +25
    -25
      types/messages.go
  9. +28
    -0
      types/messages_test.go
  10. +144
    -98
      types/types.pb.go
  11. +7
    -0
      types/types.proto
  12. +27
    -7
      types/util.go
  13. +0
    -0
      types/util_test.go

+ 4
- 3
CHANGELOG.md View File

@ -17,9 +17,10 @@ BREAKING CHANGES:
- [abci-cli] codes are printed as their number instead of a message, except for `code == 0`, which is still printed as `OK`
FEATURES:
- [types] added Tags field to ResponseDeliverTx
- [types] added Gas and Fee fields to ResponseCheckTx
- [dummy] DeliverTx returns tags
- [types] ResponseDeliverTx: added `tags` field
- [types] ResponseCheckTx: added `gas` and `fee` fields
- [types] RequestBeginBlock: added `absent_validators` and `byzantine_validators` fields
- [dummy] DeliverTx returns an owner tag and a key tag
- [abci-cli] added `log_level` flag to control the logger
## 0.7.1 (November 14, 2017)


+ 3
- 3
Makefile View File

@ -26,7 +26,7 @@ protoc:
## On "error while loading shared libraries: libprotobuf.so.14: cannot open shared object file: No such file or directory"
## ldconfig (may require sudo)
## https://stackoverflow.com/a/25518702
protoc $(INCLUDE) --gogo_out=plugins=grpc:. types/*.proto
protoc $(INCLUDE) --gogo_out=plugins=grpc:. --lint_out=. types/*.proto
install:
@ go install ./cmd/...
@ -38,14 +38,14 @@ dist:
@ bash scripts/dist.sh
@ bash scripts/publish.sh
test:
test:
@ find . -path ./vendor -prune -o -name "*.sock" -exec rm {} \;
@ echo "==> Running linter"
@ make metalinter_test
@ echo "==> Running go test"
@ go test $(PACKAGES)
test_race:
test_race:
@ find . -path ./vendor -prune -o -name "*.sock" -exec rm {} \;
@ echo "==> Running go test --race"
@go test -v -race $(PACKAGES)


+ 3
- 1
README.md View File

@ -168,8 +168,10 @@ Here, we describe the requests and responses as function arguments and return va
* __Arguments__:
* `Hash ([]byte)`: The block's hash. This can be derived from the block header.
* `Header (struct{})`: The block header
* `AbsentValidators ([]int32)`: List of indices of validators not included in the LastCommit
* `ByzantineValidators ([]Evidence)`: List of evidence of validators that acted maliciously
* __Usage__:<br/>
Signals the beginning of a new block. Called prior to any DeliverTxs. The header is expected to at least contain the Height.
Signals the beginning of a new block. Called prior to any DeliverTxs. The header is expected to at least contain the Height. The `AbsentValidators` and `ByzantineValidators` can be used to determine rewards and punishments for the validators.
#### EndBlock
* __Arguments__:


+ 2
- 2
example/dummy/dummy_test.go View File

@ -95,7 +95,7 @@ func TestPersistentDummyInfo(t *testing.T) {
header := &types.Header{
Height: int64(height),
}
dummy.BeginBlock(types.RequestBeginBlock{hash, header})
dummy.BeginBlock(types.RequestBeginBlock{hash, header, nil, nil})
dummy.EndBlock(types.RequestEndBlock{header.Height})
dummy.Commit()
@ -179,7 +179,7 @@ func makeApplyBlock(t *testing.T, dummy types.Application, heightInt int, diff [
Height: height,
}
dummy.BeginBlock(types.RequestBeginBlock{hash, header})
dummy.BeginBlock(types.RequestBeginBlock{hash, header, nil, nil})
for _, tx := range txs {
if r := dummy.DeliverTx(tx); r.IsErr() {
t.Fatal(r)


+ 49
- 1
types/application.go View File

@ -25,7 +25,55 @@ type Application interface {
Commit() ResponseCommit // Commit the state and return the application Merkle root hash
}
//------------------------------------
//-------------------------------------------------------
// BaseApplication is a base form of Application
var _ Application = (*BaseApplication)(nil)
type BaseApplication struct {
}
func NewBaseApplication() *BaseApplication {
return &BaseApplication{}
}
func (BaseApplication) Info(req RequestInfo) ResponseInfo {
return ResponseInfo{}
}
func (BaseApplication) SetOption(req RequestSetOption) ResponseSetOption {
return ResponseSetOption{}
}
func (BaseApplication) DeliverTx(tx []byte) ResponseDeliverTx {
return ResponseDeliverTx{Code: CodeTypeOK}
}
func (BaseApplication) CheckTx(tx []byte) ResponseCheckTx {
return ResponseCheckTx{Code: CodeTypeOK}
}
func (BaseApplication) Commit() ResponseCommit {
return ResponseCommit{Code: CodeTypeOK}
}
func (BaseApplication) Query(req RequestQuery) ResponseQuery {
return ResponseQuery{Code: CodeTypeOK}
}
func (BaseApplication) InitChain(req RequestInitChain) ResponseInitChain {
return ResponseInitChain{}
}
func (BaseApplication) BeginBlock(req RequestBeginBlock) ResponseBeginBlock {
return ResponseBeginBlock{}
}
func (BaseApplication) EndBlock(req RequestEndBlock) ResponseEndBlock {
return ResponseEndBlock{}
}
//-------------------------------------------------------
// GRPCApplication is a GRPC wrapper for Application
type GRPCApplication struct {


+ 0
- 44
types/base_app.go View File

@ -1,44 +0,0 @@
package types
type BaseApplication struct {
}
func NewBaseApplication() *BaseApplication {
return &BaseApplication{}
}
func (BaseApplication) Info(req RequestInfo) ResponseInfo {
return ResponseInfo{}
}
func (BaseApplication) SetOption(req RequestSetOption) ResponseSetOption {
return ResponseSetOption{}
}
func (BaseApplication) DeliverTx(tx []byte) ResponseDeliverTx {
return ResponseDeliverTx{Code: CodeTypeOK}
}
func (BaseApplication) CheckTx(tx []byte) ResponseCheckTx {
return ResponseCheckTx{Code: CodeTypeOK}
}
func (BaseApplication) Commit() ResponseCommit {
return ResponseCommit{Code: CodeTypeOK}
}
func (BaseApplication) Query(req RequestQuery) ResponseQuery {
return ResponseQuery{Code: CodeTypeOK}
}
func (BaseApplication) InitChain(req RequestInitChain) ResponseInitChain {
return ResponseInitChain{}
}
func (BaseApplication) BeginBlock(req RequestBeginBlock) ResponseBeginBlock {
return ResponseBeginBlock{}
}
func (BaseApplication) EndBlock(req RequestEndBlock) ResponseEndBlock {
return ResponseEndBlock{}
}

+ 0
- 19
types/kvpair.go View File

@ -1,19 +0,0 @@
package types
// KVPairInt is a helper method to build KV pair with an integer value.
func KVPairInt(key string, val int64) *KVPair {
return &KVPair{
Key: key,
ValueInt: val,
ValueType: KVPair_INT,
}
}
// KVPairString is a helper method to build KV pair with a string value.
func KVPairString(key, val string) *KVPair {
return &KVPair{
Key: key,
ValueString: val,
ValueType: KVPair_STRING,
}
}

+ 25
- 25
types/messages.go View File

@ -7,6 +7,31 @@ import (
wire "github.com/tendermint/go-wire"
)
// WriteMessage writes a length-delimited protobuf message.
func WriteMessage(msg proto.Message, w io.Writer) error {
bz, err := proto.Marshal(msg)
if err != nil {
return err
}
var n int
wire.WriteByteSlice(bz, w, &n, &err)
return err
}
// ReadMessage reads a length delimited protobuf message.
func ReadMessage(r io.Reader, msg proto.Message) error {
var n int
var err error
bz := wire.ReadByteSlice(r, 0, &n, &err) //XXX: no max
if err != nil {
return err
}
err = proto.Unmarshal(bz, msg)
return err
}
//----------------------------------------
func ToRequestEcho(message string) *Request {
return &Request{
Value: &Request_Echo{&RequestEcho{message}},
@ -146,28 +171,3 @@ func ToResponseEndBlock(res ResponseEndBlock) *Response {
Value: &Response_EndBlock{&res},
}
}
//----------------------------------------
// Write proto message, length delimited
func WriteMessage(msg proto.Message, w io.Writer) error {
bz, err := proto.Marshal(msg)
if err != nil {
return err
}
var n int
wire.WriteByteSlice(bz, w, &n, &err)
return err
}
// Read proto message, length delimited
func ReadMessage(r io.Reader, msg proto.Message) error {
var n int
var err error
bz := wire.ReadByteSlice(r, 0, &n, &err)
if err != nil {
return err
}
err = proto.Unmarshal(bz, msg)
return err
}

+ 28
- 0
types/messages_test.go View File

@ -0,0 +1,28 @@
package types
import (
"bytes"
"testing"
"github.com/gogo/protobuf/proto"
"github.com/stretchr/testify/assert"
)
func TestWriteReadMessage(t *testing.T) {
cases := []proto.Message{
&RequestEcho{"hello"},
// TODO: add the rest
}
for _, c := range cases {
buf := new(bytes.Buffer)
err := WriteMessage(c, buf)
assert.Nil(t, err)
msg := new(RequestEcho)
err = ReadMessage(buf, msg)
assert.Nil(t, err)
assert.Equal(t, c, msg)
}
}

+ 144
- 98
types/types.pb.go View File

@ -37,6 +37,7 @@ It has these top-level messages:
BlockID
PartSetHeader
Validator
Evidence
KVPair
*/
package types
@ -81,7 +82,7 @@ var KVPair_Type_value = map[string]int32{
func (x KVPair_Type) String() string {
return proto.EnumName(KVPair_Type_name, int32(x))
}
func (KVPair_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptorTypes, []int{29, 0} }
func (KVPair_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptorTypes, []int{30, 0} }
type Request struct {
// Types that are valid to be assigned to Value:
@ -644,8 +645,10 @@ func (m *RequestInitChain) GetValidators() []*Validator {
}
type RequestBeginBlock struct {
Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
Header *Header `protobuf:"bytes,2,opt,name=header" json:"header,omitempty"`
Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
Header *Header `protobuf:"bytes,2,opt,name=header" json:"header,omitempty"`
AbsentValidators []int32 `protobuf:"varint,3,rep,packed,name=absent_validators,json=absentValidators" json:"absent_validators,omitempty"`
ByzantineValidators []*Evidence `protobuf:"bytes,4,rep,name=byzantine_validators,json=byzantineValidators" json:"byzantine_validators,omitempty"`
}
func (m *RequestBeginBlock) Reset() { *m = RequestBeginBlock{} }
@ -667,6 +670,20 @@ func (m *RequestBeginBlock) GetHeader() *Header {
return nil
}
func (m *RequestBeginBlock) GetAbsentValidators() []int32 {
if m != nil {
return m.AbsentValidators
}
return nil
}
func (m *RequestBeginBlock) GetByzantineValidators() []*Evidence {
if m != nil {
return m.ByzantineValidators
}
return nil
}
type RequestEndBlock struct {
Height int64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
}
@ -1536,6 +1553,30 @@ func (m *Validator) GetPower() int64 {
return 0
}
type Evidence struct {
PubKey []byte `protobuf:"bytes,1,opt,name=pub_key,json=pubKey,proto3" json:"pub_key,omitempty"`
Height int64 `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
}
func (m *Evidence) Reset() { *m = Evidence{} }
func (m *Evidence) String() string { return proto.CompactTextString(m) }
func (*Evidence) ProtoMessage() {}
func (*Evidence) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{29} }
func (m *Evidence) GetPubKey() []byte {
if m != nil {
return m.PubKey
}
return nil
}
func (m *Evidence) GetHeight() int64 {
if m != nil {
return m.Height
}
return 0
}
type KVPair struct {
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
ValueType KVPair_Type `protobuf:"varint,2,opt,name=value_type,json=valueType,proto3,enum=types.KVPair_Type" json:"value_type,omitempty"`
@ -1546,7 +1587,7 @@ type KVPair struct {
func (m *KVPair) Reset() { *m = KVPair{} }
func (m *KVPair) String() string { return proto.CompactTextString(m) }
func (*KVPair) ProtoMessage() {}
func (*KVPair) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{29} }
func (*KVPair) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{30} }
func (m *KVPair) GetKey() string {
if m != nil {
@ -1606,6 +1647,7 @@ func init() {
proto.RegisterType((*BlockID)(nil), "types.BlockID")
proto.RegisterType((*PartSetHeader)(nil), "types.PartSetHeader")
proto.RegisterType((*Validator)(nil), "types.Validator")
proto.RegisterType((*Evidence)(nil), "types.Evidence")
proto.RegisterType((*KVPair)(nil), "types.KVPair")
proto.RegisterEnum("types.KVPair_Type", KVPair_Type_name, KVPair_Type_value)
}
@ -2015,98 +2057,102 @@ var _ABCIApplication_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("types/types.proto", fileDescriptorTypes) }
var fileDescriptorTypes = []byte{
// 1488 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcd, 0x8e, 0x13, 0xc7,
0x13, 0x5f, 0x7f, 0xdb, 0xe5, 0xfd, 0x30, 0xcd, 0xfe, 0x61, 0x30, 0x07, 0x60, 0x24, 0xfe, 0xec,
0x12, 0x58, 0x93, 0x45, 0x44, 0x2c, 0x44, 0x91, 0xd6, 0x2c, 0xc4, 0x16, 0x12, 0x21, 0xc3, 0x8a,
0xab, 0x35, 0xf6, 0xb4, 0xed, 0x11, 0xf6, 0xcc, 0x30, 0xd3, 0x5e, 0xbc, 0x52, 0x1e, 0x81, 0x7b,
0xce, 0xc9, 0x25, 0x52, 0x5e, 0x20, 0x6f, 0x10, 0xe5, 0x19, 0x72, 0xe0, 0x59, 0xa2, 0xaa, 0xee,
0xf9, 0xdc, 0x19, 0x0e, 0x1c, 0xb8, 0xac, 0xba, 0xba, 0xea, 0xd7, 0xae, 0xea, 0xa9, 0xfe, 0x55,
0xd5, 0xc2, 0x25, 0x71, 0xee, 0xf1, 0xa0, 0x47, 0x7f, 0x0f, 0x3c, 0xdf, 0x15, 0x2e, 0xab, 0x91,
0xd0, 0xbd, 0x3f, 0xb3, 0xc5, 0x7c, 0x35, 0x3e, 0x98, 0xb8, 0xcb, 0xde, 0xcc, 0x9d, 0xb9, 0x3d,
0xd2, 0x8e, 0x57, 0x53, 0x92, 0x48, 0xa0, 0x95, 0x44, 0xe9, 0x7f, 0x57, 0xa1, 0x61, 0xf0, 0xf7,
0x2b, 0x1e, 0x08, 0xb6, 0x07, 0x55, 0x3e, 0x99, 0xbb, 0x5a, 0xe9, 0x66, 0x69, 0xaf, 0x7d, 0xc8,
0x0e, 0xe4, 0xe9, 0x4a, 0xfb, 0x7c, 0x32, 0x77, 0x07, 0x1b, 0x06, 0x59, 0xb0, 0x6f, 0xa0, 0x36,
0x5d, 0xac, 0x82, 0xb9, 0x56, 0x26, 0xd3, 0xcb, 0x69, 0xd3, 0x17, 0xa8, 0x1a, 0x6c, 0x18, 0xd2,
0x06, 0x8f, 0xb5, 0x9d, 0xa9, 0xab, 0x55, 0xf2, 0x8e, 0x1d, 0x3a, 0x53, 0x3a, 0x16, 0x2d, 0xd8,
0x63, 0x80, 0x80, 0x8b, 0x91, 0xeb, 0x09, 0xdb, 0x75, 0xb4, 0x2a, 0xd9, 0x5f, 0x4d, 0xdb, 0xbf,
0xe1, 0xe2, 0x27, 0x52, 0x0f, 0x36, 0x8c, 0x56, 0x10, 0x0a, 0x88, 0xb4, 0xf8, 0xc2, 0x3e, 0xe3,
0xfe, 0x48, 0xac, 0xb5, 0x5a, 0x1e, 0xf2, 0x44, 0xea, 0x4f, 0xd7, 0x88, 0xb4, 0x42, 0x81, 0x1d,
0x42, 0x73, 0x32, 0xe7, 0x93, 0x77, 0x88, 0xab, 0x13, 0xee, 0x7f, 0x69, 0xdc, 0x33, 0xd4, 0x12,
0xaa, 0x31, 0x91, 0x4b, 0x76, 0x00, 0xf5, 0x89, 0xbb, 0x5c, 0xda, 0x42, 0x6b, 0x10, 0x62, 0x37,
0x83, 0x20, 0xdd, 0x60, 0xc3, 0x50, 0x56, 0x78, 0x5d, 0xef, 0x57, 0xdc, 0x3f, 0xd7, 0x9a, 0x79,
0xd7, 0xf5, 0x33, 0xaa, 0xf0, 0xba, 0xc8, 0x06, 0x43, 0xb1, 0x1d, 0x5b, 0x8c, 0x26, 0x73, 0xd3,
0x76, 0xb4, 0x56, 0x5e, 0x28, 0x43, 0xc7, 0x16, 0xcf, 0x50, 0x8d, 0xa1, 0xd8, 0xa1, 0xc0, 0x9e,
0x42, 0x7b, 0xcc, 0x67, 0xb6, 0x33, 0x1a, 0x2f, 0xdc, 0xc9, 0x3b, 0x0d, 0x08, 0xaa, 0xa5, 0xa1,
0x7d, 0x34, 0xe8, 0xa3, 0x7e, 0xb0, 0x61, 0xc0, 0x38, 0x92, 0xd8, 0x23, 0x68, 0x71, 0xc7, 0x52,
0xd0, 0x36, 0x41, 0xaf, 0x64, 0x32, 0xc0, 0xb1, 0x42, 0x60, 0x93, 0xab, 0x75, 0xbf, 0x01, 0xb5,
0x33, 0x73, 0xb1, 0xe2, 0xfa, 0x1d, 0x68, 0x27, 0x32, 0x85, 0x69, 0xd0, 0x58, 0xf2, 0x20, 0x30,
0x67, 0x9c, 0xd2, 0xa9, 0x65, 0x84, 0xa2, 0xbe, 0x0d, 0x9b, 0xc9, 0x3c, 0x49, 0x00, 0x31, 0x17,
0x10, 0x78, 0xc6, 0xfd, 0x00, 0x13, 0x40, 0x01, 0x95, 0xa8, 0x3f, 0x81, 0x4e, 0x36, 0x09, 0x58,
0x07, 0x2a, 0xef, 0xf8, 0xb9, 0xb2, 0xc4, 0x25, 0xdb, 0x55, 0x0e, 0x51, 0x6a, 0xb6, 0x0c, 0xe5,
0x9d, 0x1e, 0x61, 0xa3, 0x34, 0x60, 0xdb, 0x50, 0x16, 0x6b, 0x82, 0x6e, 0x1a, 0x65, 0xb1, 0xd6,
0x6f, 0xc2, 0x76, 0xfa, 0x93, 0x5f, 0xb0, 0xb0, 0x22, 0xd7, 0xe9, 0x9b, 0x31, 0x06, 0x55, 0xcb,
0x14, 0xa6, 0xb2, 0xa0, 0x35, 0xee, 0x79, 0xa6, 0x98, 0xab, 0x9f, 0xa7, 0x35, 0xbb, 0x02, 0xf5,
0x39, 0xb7, 0x67, 0x73, 0x41, 0x6f, 0xa0, 0x62, 0x28, 0x09, 0x7d, 0xf5, 0x7c, 0xf7, 0x8c, 0x53,
0xaa, 0x37, 0x0d, 0x29, 0xe8, 0x3b, 0xb0, 0x95, 0x4a, 0x24, 0xfd, 0x24, 0x72, 0x3e, 0xfa, 0xf0,
0xec, 0x01, 0xc0, 0x99, 0xb9, 0xb0, 0x2d, 0x53, 0xb8, 0x7e, 0xa0, 0x95, 0x6e, 0x56, 0xf6, 0xda,
0x87, 0x1d, 0xf5, 0xbd, 0xde, 0x86, 0x0a, 0x23, 0x61, 0xa3, 0xbf, 0x82, 0x4b, 0x17, 0x72, 0x00,
0xbd, 0x9d, 0x9b, 0xc1, 0x3c, 0x8c, 0x00, 0xd7, 0xec, 0x36, 0x7a, 0x6b, 0x5a, 0xdc, 0x57, 0xaf,
0x7b, 0x4b, 0x1d, 0x3b, 0xa0, 0x4d, 0x43, 0x29, 0xf5, 0x7d, 0xd8, 0xc9, 0x24, 0x46, 0x22, 0xce,
0x52, 0x32, 0x4e, 0xfd, 0x63, 0x0d, 0x9a, 0x06, 0x0f, 0x3c, 0xd7, 0x09, 0x38, 0x7b, 0x0c, 0x2d,
0xbe, 0x9e, 0x70, 0xf9, 0xc6, 0x4b, 0x99, 0x1c, 0x95, 0x36, 0xcf, 0x43, 0x3d, 0xe6, 0x77, 0x64,
0xcc, 0xf6, 0x15, 0x3f, 0x65, 0x49, 0x47, 0x81, 0x92, 0x04, 0x75, 0x2f, 0x24, 0xa8, 0x4a, 0xe6,
0x81, 0x4a, 0xdb, 0x0c, 0x43, 0xed, 0x2b, 0x86, 0xaa, 0xe6, 0x1e, 0x9c, 0xa2, 0xa8, 0xa3, 0x14,
0x45, 0xd5, 0x72, 0xdd, 0x2f, 0xe0, 0xa8, 0xa3, 0x14, 0x47, 0xd5, 0x73, 0xa1, 0x05, 0x24, 0xf5,
0x30, 0x41, 0x52, 0x8d, 0xcc, 0xdb, 0x94, 0xc0, 0x1c, 0x96, 0xea, 0x45, 0x2c, 0xd5, 0xcc, 0xf0,
0x9a, 0x82, 0x64, 0x69, 0xea, 0x5e, 0x48, 0x53, 0xad, 0xdc, 0x4b, 0xcb, 0xf0, 0xd4, 0x51, 0x8a,
0xa7, 0x20, 0x37, 0x9c, 0x02, 0xa2, 0xfa, 0x3e, 0x4d, 0x54, 0x92, 0x6d, 0xae, 0x65, 0xb0, 0x85,
0x4c, 0xf5, 0x5d, 0x92, 0xa9, 0x36, 0x33, 0xfc, 0xa8, 0x72, 0xe1, 0xb3, 0x54, 0xb5, 0x8f, 0x2f,
0x21, 0x93, 0x69, 0xf8, 0x16, 0xb9, 0xef, 0xbb, 0xbe, 0xe2, 0x12, 0x29, 0xe8, 0x7b, 0xf8, 0xe2,
0xe3, 0xfc, 0xfa, 0x0c, 0xad, 0xd1, 0xab, 0x4d, 0x64, 0x97, 0xfe, 0x6b, 0x29, 0xc6, 0x12, 0xb3,
0x25, 0xd9, 0xa2, 0xa5, 0xd8, 0x22, 0xc1, 0x76, 0xe5, 0x14, 0xdb, 0xb1, 0xbb, 0x70, 0x69, 0x61,
0x06, 0x42, 0x86, 0x39, 0x4a, 0xd1, 0xc7, 0x0e, 0x2a, 0x64, 0x7c, 0x92, 0x47, 0xee, 0xc3, 0xe5,
0x84, 0xad, 0xe9, 0x79, 0x23, 0x7a, 0xd4, 0x55, 0x7a, 0xd4, 0x9d, 0xc8, 0xfa, 0xd8, 0xf3, 0x06,
0x66, 0x30, 0xd7, 0x6f, 0xc7, 0xf1, 0xa7, 0x98, 0x74, 0xe1, 0xce, 0x42, 0x26, 0x5d, 0xb8, 0x33,
0xfd, 0xf7, 0x52, 0x6c, 0x17, 0xb3, 0x26, 0x83, 0xea, 0xc4, 0xb5, 0x64, 0xf8, 0x5b, 0x06, 0xad,
0xd9, 0x89, 0x8a, 0x0c, 0x43, 0xd8, 0xec, 0x3f, 0xf8, 0xe7, 0xd3, 0x8d, 0x8d, 0x7f, 0x3f, 0xdd,
0xd8, 0x4b, 0x74, 0x22, 0x82, 0x3b, 0x16, 0xf7, 0x97, 0xb6, 0x23, 0x7a, 0x33, 0xf7, 0xfe, 0x07,
0xdb, 0xe7, 0x3d, 0x44, 0x1c, 0xf4, 0xcf, 0x05, 0x0f, 0xd4, 0x5d, 0x28, 0x0f, 0x2a, 0x91, 0x07,
0xec, 0x16, 0x54, 0x85, 0x39, 0x0b, 0xb4, 0x2a, 0xd1, 0x5b, 0xc8, 0x43, 0x2f, 0xdf, 0xbe, 0x36,
0x6d, 0xdf, 0x20, 0x95, 0xfe, 0x5b, 0x09, 0x69, 0x28, 0xf5, 0x06, 0xbe, 0xaa, 0x8b, 0x1d, 0xa8,
0xcc, 0xcc, 0x80, 0xae, 0xba, 0x62, 0xe0, 0x12, 0x77, 0xa6, 0x9c, 0x13, 0x35, 0x54, 0x0c, 0x5c,
0xea, 0x7f, 0x95, 0xe3, 0xdc, 0x88, 0x0a, 0xc7, 0x05, 0x0f, 0x77, 0xa1, 0x66, 0x3b, 0x16, 0x5f,
0x93, 0x8b, 0x15, 0x43, 0x0a, 0xac, 0x2f, 0x0b, 0x5c, 0xe5, 0x0b, 0xdd, 0xa6, 0x92, 0xf8, 0x22,
0x2c, 0x89, 0xd5, 0x2f, 0x3c, 0x45, 0xc2, 0xf1, 0x1c, 0xcf, 0x77, 0xdd, 0x29, 0xc5, 0xf6, 0x45,
0xe7, 0x10, 0x3c, 0x51, 0x26, 0xea, 0xa9, 0x72, 0xa8, 0x6e, 0xb7, 0x11, 0xa7, 0xe0, 0x2f, 0x58,
0x92, 0x93, 0x6c, 0xf5, 0x35, 0xbf, 0xad, 0x7e, 0x39, 0xce, 0xff, 0x88, 0xc8, 0xf4, 0x5d, 0x60,
0x17, 0x19, 0x4a, 0xf6, 0x26, 0x69, 0xee, 0x61, 0xff, 0x87, 0x9a, 0x65, 0x4f, 0xa7, 0xc5, 0xd5,
0x59, 0xaa, 0xf5, 0x3f, 0xca, 0x50, 0x97, 0xb5, 0x95, 0x5d, 0x43, 0x9e, 0x37, 0x6d, 0x67, 0x64,
0x5b, 0x21, 0xbf, 0x90, 0x3c, 0xb4, 0x12, 0x97, 0x56, 0x4e, 0x5d, 0x1a, 0x83, 0xaa, 0xb0, 0x97,
0x5c, 0x51, 0x03, 0xad, 0xd9, 0x55, 0x68, 0x38, 0xab, 0xe5, 0x48, 0xac, 0xc3, 0xc4, 0xac, 0x3b,
0xab, 0xe5, 0xe9, 0x3a, 0x60, 0x87, 0xb0, 0x95, 0x20, 0x0a, 0xdb, 0x52, 0x05, 0x6c, 0x5b, 0xb9,
0x46, 0x7e, 0x0f, 0x4f, 0x8c, 0x76, 0x44, 0x19, 0x43, 0x8b, 0xed, 0x01, 0x31, 0xc8, 0x48, 0x16,
0x09, 0xc9, 0x2c, 0x75, 0x62, 0x96, 0x6d, 0xdc, 0x57, 0x55, 0x04, 0x1b, 0x87, 0xeb, 0xd0, 0xc2,
0x9b, 0x94, 0x26, 0x0d, 0x32, 0x69, 0xe2, 0x06, 0x29, 0xef, 0xc0, 0x4e, 0xdc, 0x8c, 0x48, 0x93,
0xa6, 0x3c, 0x25, 0xde, 0x26, 0xc3, 0x6b, 0xd0, 0x8c, 0x18, 0xac, 0x45, 0x16, 0x0d, 0x53, 0x11,
0xd7, 0x10, 0x1a, 0xca, 0xc5, 0xdc, 0xc6, 0xe5, 0x2e, 0xd4, 0x3c, 0xd3, 0x17, 0x81, 0x6a, 0x10,
0xc2, 0xfa, 0xf5, 0xda, 0xf4, 0xb1, 0x63, 0x54, 0xed, 0x8b, 0x34, 0xd1, 0x8f, 0x60, 0x2b, 0xb5,
0x8f, 0xcf, 0x4f, 0xb8, 0xc2, 0x5c, 0xa8, 0xd6, 0x45, 0x0a, 0xd1, 0xcf, 0x94, 0xe3, 0x9f, 0xd1,
0x9f, 0x40, 0x2b, 0xfa, 0x86, 0x78, 0xd5, 0xde, 0x6a, 0x3c, 0x0a, 0x9b, 0xd0, 0x4d, 0xa3, 0xee,
0xad, 0xc6, 0x2f, 0x65, 0x1f, 0xea, 0xb9, 0x1f, 0x54, 0x13, 0x55, 0x31, 0xa4, 0xa0, 0xff, 0x59,
0x82, 0xba, 0xe4, 0xaf, 0x9c, 0xd6, 0xf5, 0x5b, 0xea, 0xe9, 0x56, 0x7c, 0x84, 0x7e, 0x13, 0x6e,
0x3b, 0x1a, 0x97, 0x24, 0xe8, 0xe0, 0xf4, 0xdc, 0xe3, 0x46, 0x8b, 0xac, 0x70, 0xc9, 0x6e, 0xc1,
0xa6, 0x84, 0x04, 0xc2, 0xb7, 0x9d, 0x30, 0x7b, 0xdb, 0xb4, 0xf7, 0x86, 0xb6, 0xf0, 0xab, 0x48,
0x13, 0xdb, 0x11, 0x2a, 0x1d, 0x9a, 0xb4, 0x31, 0x74, 0x84, 0x7e, 0x1d, 0xaa, 0x74, 0x0e, 0x40,
0xfd, 0xcd, 0xa9, 0x31, 0x7c, 0xf5, 0x63, 0x67, 0x83, 0x35, 0xa0, 0x32, 0x7c, 0x75, 0xda, 0x29,
0x1d, 0x7e, 0xac, 0xc1, 0xce, 0x71, 0xff, 0xd9, 0xf0, 0xd8, 0xf3, 0x16, 0xf6, 0xc4, 0xa4, 0x32,
0xd1, 0x83, 0x2a, 0x15, 0xc2, 0x9c, 0xe9, 0xb0, 0x9b, 0xd7, 0x91, 0xb1, 0x43, 0xa8, 0x51, 0x3d,
0x64, 0x79, 0x43, 0x62, 0x37, 0xb7, 0x31, 0xc3, 0x1f, 0x91, 0x15, 0xf3, 0xe2, 0xac, 0xd8, 0xcd,
0xeb, 0xce, 0xd8, 0x0f, 0xd0, 0x8a, 0x2b, 0x59, 0xd1, 0xc4, 0xd8, 0x2d, 0xec, 0xd3, 0x10, 0x1f,
0x57, 0xb8, 0xa2, 0xb9, 0xb1, 0x5b, 0xd8, 0xac, 0xb1, 0xc7, 0xd0, 0x08, 0x8b, 0x4f, 0xfe, 0xf4,
0xd8, 0x2d, 0xe8, 0xd7, 0xf0, 0x7a, 0x64, 0x49, 0xc8, 0x1b, 0x0a, 0xbb, 0xb9, 0x2d, 0x18, 0x7b,
0x04, 0x75, 0xc5, 0x86, 0xb9, 0x83, 0x67, 0x37, 0xbf, 0xd1, 0xc3, 0x20, 0xe3, 0xf9, 0xa1, 0x68,
0xa2, 0xec, 0x16, 0xb6, 0x70, 0xec, 0x18, 0x20, 0x31, 0x39, 0x14, 0xce, 0x95, 0xdd, 0xe2, 0x46,
0x8e, 0x3d, 0x85, 0x66, 0x3c, 0x2c, 0xe4, 0x4f, 0x97, 0xdd, 0xa2, 0x5e, 0x6e, 0x5c, 0xa7, 0xff,
0x58, 0x3c, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x34, 0x61, 0x21, 0x91, 0xfc, 0x10, 0x00, 0x00,
// 1551 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x98, 0xcb, 0x8e, 0x13, 0x47,
0x17, 0xc7, 0x6d, 0xb7, 0xaf, 0xc7, 0x73, 0xf1, 0xd4, 0xcc, 0x07, 0xc6, 0x2c, 0x18, 0x5a, 0xe2,
0xc3, 0xc3, 0x65, 0xcc, 0x37, 0x88, 0x4f, 0x0c, 0x44, 0x91, 0xc6, 0x0c, 0xc4, 0x16, 0x12, 0x21,
0xcd, 0x88, 0xad, 0xd5, 0x76, 0x97, 0xed, 0x12, 0x76, 0x77, 0xd3, 0x5d, 0x1e, 0x3c, 0x51, 0x1e,
0x81, 0x7d, 0xd6, 0xc9, 0x26, 0x52, 0x5e, 0x20, 0xcb, 0xec, 0xa2, 0x3c, 0x43, 0x16, 0x3c, 0x4b,
0x54, 0xa7, 0xaa, 0xaf, 0xd3, 0xcd, 0x82, 0x05, 0x9b, 0x51, 0x5d, 0xce, 0xbf, 0x7c, 0xaa, 0xfa,
0xd4, 0xef, 0x9c, 0x1a, 0xd8, 0xe1, 0x17, 0x2e, 0xf5, 0x7b, 0xf8, 0xf7, 0xd0, 0xf5, 0x1c, 0xee,
0x90, 0x0a, 0x76, 0x3a, 0xf7, 0x67, 0x8c, 0xcf, 0x57, 0xe3, 0xc3, 0x89, 0xb3, 0xec, 0xcd, 0x9c,
0x99, 0xd3, 0xc3, 0xd9, 0xf1, 0x6a, 0x8a, 0x3d, 0xec, 0x60, 0x4b, 0xaa, 0xf4, 0xbf, 0xca, 0x50,
0x33, 0xe8, 0xfb, 0x15, 0xf5, 0x39, 0xe9, 0x42, 0x99, 0x4e, 0xe6, 0x4e, 0xbb, 0xb8, 0x5f, 0xec,
0x36, 0x8f, 0xc8, 0xa1, 0x5c, 0x5d, 0xcd, 0x3e, 0x9f, 0xcc, 0x9d, 0x41, 0xc1, 0x40, 0x0b, 0x72,
0x17, 0x2a, 0xd3, 0xc5, 0xca, 0x9f, 0xb7, 0x4b, 0x68, 0xba, 0x9b, 0x34, 0x7d, 0x21, 0xa6, 0x06,
0x05, 0x43, 0xda, 0x88, 0x65, 0x99, 0x3d, 0x75, 0xda, 0x5a, 0xd6, 0xb2, 0x43, 0x7b, 0x8a, 0xcb,
0x0a, 0x0b, 0xf2, 0x18, 0xc0, 0xa7, 0x7c, 0xe4, 0xb8, 0x9c, 0x39, 0x76, 0xbb, 0x8c, 0xf6, 0x57,
0x93, 0xf6, 0x6f, 0x28, 0xff, 0x1e, 0xa7, 0x07, 0x05, 0xa3, 0xe1, 0x07, 0x1d, 0xa1, 0xb4, 0xe8,
0x82, 0x9d, 0x53, 0x6f, 0xc4, 0xd7, 0xed, 0x4a, 0x96, 0xf2, 0x54, 0xce, 0x9f, 0xad, 0x85, 0xd2,
0x0a, 0x3a, 0xe4, 0x08, 0xea, 0x93, 0x39, 0x9d, 0xbc, 0x13, 0xba, 0x2a, 0xea, 0xfe, 0x93, 0xd4,
0x3d, 0x13, 0xb3, 0xa8, 0xaa, 0x4d, 0x64, 0x93, 0x1c, 0x42, 0x75, 0xe2, 0x2c, 0x97, 0x8c, 0xb7,
0x6b, 0xa8, 0xd8, 0x4b, 0x29, 0x70, 0x6e, 0x50, 0x30, 0x94, 0x95, 0x38, 0xae, 0xf7, 0x2b, 0xea,
0x5d, 0xb4, 0xeb, 0x59, 0xc7, 0xf5, 0x83, 0x98, 0x12, 0xc7, 0x85, 0x36, 0x62, 0x2b, 0xcc, 0x66,
0x7c, 0x34, 0x99, 0x9b, 0xcc, 0x6e, 0x37, 0xb2, 0xb6, 0x32, 0xb4, 0x19, 0x7f, 0x26, 0xa6, 0xc5,
0x56, 0x58, 0xd0, 0x21, 0x4f, 0xa1, 0x39, 0xa6, 0x33, 0x66, 0x8f, 0xc6, 0x0b, 0x67, 0xf2, 0xae,
0x0d, 0x28, 0x6d, 0x27, 0xa5, 0x7d, 0x61, 0xd0, 0x17, 0xf3, 0x83, 0x82, 0x01, 0xe3, 0xb0, 0x47,
0x1e, 0x41, 0x83, 0xda, 0x96, 0x92, 0x36, 0x51, 0x7a, 0x25, 0x15, 0x01, 0xb6, 0x15, 0x08, 0xeb,
0x54, 0xb5, 0xfb, 0x35, 0xa8, 0x9c, 0x9b, 0x8b, 0x15, 0xd5, 0x6f, 0x43, 0x33, 0x16, 0x29, 0xa4,
0x0d, 0xb5, 0x25, 0xf5, 0x7d, 0x73, 0x46, 0x31, 0x9c, 0x1a, 0x46, 0xd0, 0xd5, 0xb7, 0x60, 0x23,
0x1e, 0x27, 0x31, 0xa1, 0x88, 0x05, 0x21, 0x3c, 0xa7, 0x9e, 0x2f, 0x02, 0x40, 0x09, 0x55, 0x57,
0x7f, 0x02, 0xad, 0x74, 0x10, 0x90, 0x16, 0x68, 0xef, 0xe8, 0x85, 0xb2, 0x14, 0x4d, 0xb2, 0xa7,
0x1c, 0xc2, 0xd0, 0x6c, 0x18, 0xca, 0x3b, 0x3d, 0xd4, 0x86, 0x61, 0x40, 0xb6, 0xa0, 0xc4, 0xd7,
0x28, 0xdd, 0x30, 0x4a, 0x7c, 0xad, 0xef, 0xc3, 0x56, 0xf2, 0x93, 0x5f, 0xb2, 0xb0, 0x42, 0xd7,
0xf1, 0x9b, 0x11, 0x02, 0x65, 0xcb, 0xe4, 0xa6, 0xb2, 0xc0, 0xb6, 0x18, 0x73, 0x4d, 0x3e, 0x57,
0x3f, 0x8f, 0x6d, 0x72, 0x05, 0xaa, 0x73, 0xca, 0x66, 0x73, 0x8e, 0x77, 0x40, 0x33, 0x54, 0x4f,
0xf8, 0xea, 0x7a, 0xce, 0x39, 0xc5, 0x50, 0xaf, 0x1b, 0xb2, 0xa3, 0x6f, 0xc3, 0x66, 0x22, 0x90,
0xf4, 0xd3, 0xd0, 0xf9, 0xf0, 0xc3, 0x93, 0x07, 0x00, 0xe7, 0xe6, 0x82, 0x59, 0x26, 0x77, 0x3c,
0xbf, 0x5d, 0xdc, 0xd7, 0xba, 0xcd, 0xa3, 0x96, 0xfa, 0x5e, 0x6f, 0x83, 0x09, 0x23, 0x66, 0xa3,
0xff, 0x59, 0x84, 0x9d, 0x4b, 0x41, 0x20, 0xdc, 0x9d, 0x9b, 0xfe, 0x3c, 0xd8, 0x82, 0x68, 0x93,
0x5b, 0xc2, 0x5d, 0xd3, 0xa2, 0x9e, 0xba, 0xde, 0x9b, 0x6a, 0xdd, 0x01, 0x0e, 0x1a, 0x6a, 0x92,
0xdc, 0x85, 0x1d, 0x73, 0xec, 0x53, 0x9b, 0x8f, 0x62, 0x9e, 0x68, 0xfb, 0x5a, 0xb7, 0x62, 0xb4,
0xe4, 0x44, 0xe8, 0x88, 0x4f, 0xfa, 0xb0, 0x37, 0xbe, 0xf8, 0xd1, 0xb4, 0x39, 0xb3, 0x69, 0xdc,
0xbe, 0x8c, 0x9e, 0x6f, 0xab, 0x5f, 0x78, 0x7e, 0xce, 0x2c, 0x6a, 0x4f, 0xa8, 0xb1, 0x1b, 0x1a,
0x47, 0x6b, 0xe8, 0x07, 0xb0, 0x9d, 0x0a, 0xc5, 0xd8, 0xc9, 0x16, 0xe3, 0x27, 0xab, 0x7f, 0xac,
0x40, 0xdd, 0xa0, 0xbe, 0xeb, 0xd8, 0x3e, 0x25, 0x8f, 0xa1, 0x41, 0xd7, 0x13, 0x2a, 0xa9, 0x52,
0x4c, 0xdd, 0x0a, 0x69, 0xf3, 0x3c, 0x98, 0x17, 0x37, 0x2a, 0x34, 0x26, 0x07, 0x8a, 0x88, 0x69,
0xcc, 0x29, 0x51, 0x1c, 0x89, 0xf7, 0x02, 0x24, 0x6a, 0x29, 0x24, 0x48, 0xdb, 0x14, 0x13, 0x0f,
0x14, 0x13, 0xcb, 0x99, 0x0b, 0x27, 0xa0, 0x78, 0x9c, 0x80, 0x62, 0x25, 0xd3, 0xfd, 0x1c, 0x2a,
0x1e, 0x27, 0xa8, 0x58, 0xcd, 0x94, 0xe6, 0x60, 0xf1, 0x61, 0x0c, 0x8b, 0xb5, 0x14, 0x0d, 0xa4,
0x30, 0x83, 0x8b, 0xbd, 0x90, 0x8b, 0xf5, 0x14, 0x49, 0x95, 0x24, 0x0d, 0xc6, 0x7b, 0x01, 0x18,
0x1b, 0x99, 0x87, 0x96, 0x22, 0xe3, 0x71, 0x82, 0x8c, 0x90, 0xb9, 0x9d, 0x1c, 0x34, 0x7e, 0x93,
0x44, 0xa3, 0xe4, 0xdb, 0xb5, 0x94, 0x36, 0x97, 0x8d, 0xff, 0x8f, 0xb3, 0x71, 0x23, 0x45, 0x64,
0x15, 0x0b, 0x9f, 0x85, 0xe3, 0x81, 0xb8, 0x7a, 0xa9, 0x48, 0x13, 0xb7, 0x9f, 0x7a, 0x9e, 0xe3,
0x29, 0x7a, 0xc9, 0x8e, 0xde, 0x15, 0x8c, 0x89, 0xe2, 0xeb, 0x33, 0x20, 0x45, 0x4e, 0xc4, 0xa2,
0x4b, 0xff, 0xb9, 0x18, 0x69, 0x91, 0xa5, 0x71, 0x3e, 0x35, 0x14, 0x9f, 0x62, 0x7c, 0x2d, 0x25,
0xf8, 0x4a, 0xee, 0xc0, 0xce, 0xc2, 0xf4, 0xb9, 0xdc, 0xe6, 0x28, 0x01, 0xac, 0x6d, 0x31, 0x21,
0xf7, 0x27, 0xc9, 0x75, 0x1f, 0x76, 0x63, 0xb6, 0xa6, 0xeb, 0x8e, 0x90, 0x22, 0x65, 0xa4, 0x48,
0x2b, 0xb4, 0x3e, 0x71, 0xdd, 0x81, 0xe9, 0xcf, 0xf5, 0x5b, 0xd1, 0xfe, 0x13, 0xec, 0x5e, 0x38,
0xb3, 0x80, 0xdd, 0x0b, 0x67, 0xa6, 0xff, 0x5a, 0x8c, 0xec, 0x22, 0x4e, 0x13, 0x28, 0x4f, 0x1c,
0x4b, 0x6e, 0x7f, 0xd3, 0xc0, 0x36, 0x39, 0x55, 0x3b, 0x13, 0x5b, 0xd8, 0xe8, 0x3f, 0xf8, 0xfb,
0xd3, 0x8d, 0xc2, 0x3f, 0x9f, 0x6e, 0x74, 0x63, 0xb5, 0x0f, 0xa7, 0xb6, 0x45, 0xbd, 0x25, 0xb3,
0x79, 0x6f, 0xe6, 0xdc, 0xff, 0xc0, 0x3c, 0xda, 0x13, 0x8a, 0xc3, 0xfe, 0x05, 0xa7, 0xbe, 0x3a,
0x0b, 0xe5, 0x81, 0x16, 0x7a, 0x40, 0x6e, 0x42, 0x99, 0x9b, 0xb3, 0x00, 0x4b, 0x01, 0xf8, 0x5e,
0xbe, 0x7d, 0x6d, 0x32, 0xcf, 0xc0, 0x29, 0xfd, 0x97, 0xa2, 0xc0, 0x50, 0xe2, 0x0e, 0x7c, 0x55,
0x17, 0x5b, 0xa0, 0xcd, 0x4c, 0x1f, 0x8f, 0x5a, 0x33, 0x44, 0x53, 0x8c, 0x4c, 0x29, 0x45, 0x34,
0x68, 0x86, 0x68, 0xea, 0x7f, 0x94, 0xa2, 0xd8, 0x08, 0x53, 0xd5, 0x25, 0x0f, 0xf7, 0xa0, 0xc2,
0x6c, 0x8b, 0xae, 0xd1, 0x45, 0xcd, 0x90, 0x1d, 0xd2, 0x97, 0x29, 0x55, 0xfb, 0x42, 0xb7, 0x31,
0x09, 0xbf, 0x08, 0x92, 0x70, 0xf9, 0x0b, 0x57, 0x91, 0x72, 0xb1, 0x8e, 0xeb, 0x39, 0xce, 0x14,
0xf7, 0xf6, 0x45, 0xeb, 0xa0, 0x3c, 0x96, 0x26, 0xaa, 0x89, 0x04, 0xac, 0x4e, 0xb7, 0x16, 0x85,
0xe0, 0x4f, 0xa2, 0x08, 0x88, 0xd3, 0xea, 0x6b, 0x7e, 0x5b, 0x7d, 0x37, 0x8a, 0xff, 0x10, 0x64,
0xfa, 0x1e, 0x90, 0xcb, 0x84, 0x92, 0xd5, 0x50, 0x92, 0x3d, 0xe4, 0xbf, 0x50, 0xb1, 0xd8, 0x74,
0x9a, 0x5f, 0x0f, 0xc8, 0x69, 0xfd, 0xb7, 0x12, 0x54, 0x65, 0x32, 0x27, 0xd7, 0x04, 0xe7, 0x4d,
0x66, 0x8f, 0x98, 0x15, 0xf0, 0x05, 0xfb, 0x43, 0x2b, 0x76, 0x68, 0xa5, 0xc4, 0xa1, 0x11, 0x28,
0x73, 0xb6, 0xa4, 0x0a, 0x0d, 0xd8, 0x26, 0x57, 0xa1, 0x66, 0xaf, 0x96, 0x23, 0xbe, 0x0e, 0x02,
0xb3, 0x6a, 0xaf, 0x96, 0x67, 0x6b, 0x9f, 0x1c, 0xc1, 0x66, 0x0c, 0x14, 0xcc, 0x52, 0x09, 0x6c,
0x4b, 0xb9, 0x86, 0x7e, 0x0f, 0x4f, 0x8d, 0x66, 0x88, 0x8c, 0xa1, 0x45, 0xba, 0x80, 0x04, 0x19,
0xc9, 0x24, 0x21, 0xc9, 0x52, 0x45, 0xb2, 0x6c, 0x89, 0x71, 0x95, 0x45, 0x44, 0xa5, 0x72, 0x1d,
0x1a, 0xe2, 0x24, 0xa5, 0x49, 0x0d, 0x4d, 0xea, 0x62, 0x00, 0x27, 0x6f, 0xc3, 0x76, 0x54, 0x68,
0x48, 0x93, 0xba, 0x5c, 0x25, 0x1a, 0x46, 0xc3, 0x6b, 0x50, 0x0f, 0x09, 0xd6, 0x40, 0x8b, 0x9a,
0xa9, 0xc0, 0x35, 0x84, 0x9a, 0x72, 0x31, 0xb3, 0x52, 0xba, 0x03, 0x15, 0xd7, 0xf4, 0xb8, 0xaf,
0x0a, 0x84, 0x20, 0x7f, 0xbd, 0x36, 0x3d, 0x51, 0xa3, 0xaa, 0x7a, 0x49, 0x9a, 0xe8, 0xc7, 0xb0,
0x99, 0x18, 0x17, 0xd7, 0x8f, 0x3b, 0xdc, 0x5c, 0xa8, 0xd2, 0x45, 0x76, 0xc2, 0x9f, 0x29, 0x45,
0x3f, 0xa3, 0x3f, 0x81, 0x46, 0xf8, 0x0d, 0xc5, 0x51, 0xbb, 0xab, 0xf1, 0x28, 0x28, 0x7b, 0x37,
0x8c, 0xaa, 0xbb, 0x1a, 0xbf, 0x94, 0x95, 0xaf, 0xeb, 0x7c, 0x50, 0x55, 0x9b, 0x66, 0xc8, 0x8e,
0xfe, 0x14, 0xea, 0x41, 0x55, 0x95, 0x2f, 0xcd, 0xf9, 0xd4, 0xfa, 0xef, 0x45, 0xa8, 0x4a, 0xf8,
0x65, 0x54, 0xda, 0xff, 0xc3, 0x12, 0x74, 0x45, 0x47, 0x62, 0xd3, 0x28, 0xdc, 0x0a, 0x5f, 0x77,
0x52, 0x74, 0x78, 0x76, 0xe1, 0x52, 0xa3, 0x81, 0x56, 0xa2, 0x49, 0x6e, 0xc2, 0x86, 0x94, 0xf8,
0xdc, 0x63, 0x76, 0x10, 0xfa, 0x4d, 0x1c, 0x7b, 0x83, 0x43, 0xe2, 0x93, 0x4a, 0x13, 0x66, 0x73,
0x15, 0x4b, 0x75, 0x1c, 0x18, 0xda, 0x5c, 0xbf, 0x0e, 0x65, 0x5c, 0x07, 0xa0, 0xfa, 0xe6, 0xcc,
0x18, 0xbe, 0xfa, 0xae, 0x55, 0x20, 0x35, 0xd0, 0x86, 0xaf, 0xce, 0x5a, 0xc5, 0xa3, 0x8f, 0x15,
0xd8, 0x3e, 0xe9, 0x3f, 0x1b, 0x9e, 0xb8, 0xee, 0x82, 0x4d, 0x4c, 0xcc, 0x31, 0x3d, 0x28, 0x63,
0x16, 0xcd, 0x78, 0xcc, 0x76, 0xb2, 0xca, 0x39, 0x72, 0x04, 0x15, 0x4c, 0xa6, 0x24, 0xeb, 0x4d,
0xdb, 0xc9, 0xac, 0xea, 0xc4, 0x8f, 0xc8, 0x74, 0x7b, 0xf9, 0x69, 0xdb, 0xc9, 0x2a, 0xed, 0xc8,
0xb7, 0xd0, 0x88, 0xd2, 0x60, 0xde, 0x03, 0xb7, 0x93, 0x5b, 0xe4, 0x09, 0x7d, 0x94, 0x1e, 0xf3,
0x9e, 0xb9, 0x9d, 0xdc, 0x4a, 0x8f, 0x3c, 0x86, 0x5a, 0x90, 0xb9, 0xb2, 0x1f, 0xbb, 0x9d, 0x9c,
0x62, 0x4f, 0x1c, 0x8f, 0xcc, 0x27, 0x59, 0x6f, 0xd8, 0x4e, 0x66, 0xfd, 0x46, 0x1e, 0x41, 0x55,
0xa1, 0x34, 0xf3, 0x9d, 0xdc, 0xc9, 0xae, 0x12, 0xc5, 0x26, 0xa3, 0xe7, 0x4e, 0xde, 0x03, 0xb8,
0x93, 0x5b, 0xff, 0x91, 0x13, 0x80, 0xd8, 0x3b, 0x27, 0xf7, 0x19, 0xdc, 0xc9, 0xaf, 0x02, 0x89,
0xb8, 0x3b, 0xe1, 0x4b, 0x23, 0xfb, 0x31, 0xdc, 0xc9, 0x2b, 0x04, 0xc7, 0x55, 0xfc, 0x07, 0xcb,
0xc3, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x39, 0xd6, 0x39, 0x74, 0xab, 0x11, 0x00, 0x00,
}

+ 7
- 0
types/types.proto View File

@ -66,6 +66,8 @@ message RequestInitChain{
message RequestBeginBlock{
bytes hash = 1;
Header header = 2;
repeated int32 absent_validators = 3;
repeated Evidence byzantine_validators = 4;
}
message RequestEndBlock{
@ -187,6 +189,11 @@ message Validator {
int64 power = 2;
}
message Evidence {
bytes pub_key = 1;
int64 height = 2;
}
//----------------------------------------
// Abstract types


types/validators.go → types/util.go View File


types/kvpair_test.go → types/util_test.go View File


Loading…
Cancel
Save