lnrpc: OpenChannel and CloseChannel now return "status updates"

This commit modifies the prior protos to make the open/close channel
RPC commands return the “union” status update rather than a concrete
item of that union directly. With this change, RPC clients can now
receive status updates of the current state of the opening or closing
channel.
This commit is contained in:
Olaoluwa Osuntokun 2016-08-30 16:42:23 -07:00
parent 164db26a11
commit d548e56069
No known key found for this signature in database
GPG Key ID: 9CC5B105D03521A2
2 changed files with 215 additions and 134 deletions

@ -33,6 +33,7 @@ It has these top-level messages:
ChannelCloseUpdate
CloseChannelRequest
CloseStatusUpdate
PendingUpdate
OpenChannelRequest
OpenStatusUpdate
PendingChannelRequest
@ -404,6 +405,7 @@ func (m *CloseChannelRequest) GetChannelPoint() *ChannelPoint {
type CloseStatusUpdate struct {
// Types that are valid to be assigned to Update:
// *CloseStatusUpdate_ClosePending
// *CloseStatusUpdate_Confirmation
// *CloseStatusUpdate_ChanClose
Update isCloseStatusUpdate_Update `protobuf_oneof:"update"`
@ -418,13 +420,17 @@ type isCloseStatusUpdate_Update interface {
isCloseStatusUpdate_Update()
}
type CloseStatusUpdate_ClosePending struct {
ClosePending *PendingUpdate `protobuf:"bytes,1,opt,name=close_pending,oneof"`
}
type CloseStatusUpdate_Confirmation struct {
Confirmation *ConfirmationUpdate `protobuf:"bytes,1,opt,name=confirmation,oneof"`
Confirmation *ConfirmationUpdate `protobuf:"bytes,2,opt,name=confirmation,oneof"`
}
type CloseStatusUpdate_ChanClose struct {
ChanClose *ChannelCloseUpdate `protobuf:"bytes,2,opt,name=chan_close,oneof"`
ChanClose *ChannelCloseUpdate `protobuf:"bytes,3,opt,name=chan_close,oneof"`
}
func (*CloseStatusUpdate_ClosePending) isCloseStatusUpdate_Update() {}
func (*CloseStatusUpdate_Confirmation) isCloseStatusUpdate_Update() {}
func (*CloseStatusUpdate_ChanClose) isCloseStatusUpdate_Update() {}
@ -435,6 +441,13 @@ func (m *CloseStatusUpdate) GetUpdate() isCloseStatusUpdate_Update {
return nil
}
func (m *CloseStatusUpdate) GetClosePending() *PendingUpdate {
if x, ok := m.GetUpdate().(*CloseStatusUpdate_ClosePending); ok {
return x.ClosePending
}
return nil
}
func (m *CloseStatusUpdate) GetConfirmation() *ConfirmationUpdate {
if x, ok := m.GetUpdate().(*CloseStatusUpdate_Confirmation); ok {
return x.Confirmation
@ -452,6 +465,7 @@ func (m *CloseStatusUpdate) GetChanClose() *ChannelCloseUpdate {
// XXX_OneofFuncs is for the internal use of the proto package.
func (*CloseStatusUpdate) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
return _CloseStatusUpdate_OneofMarshaler, _CloseStatusUpdate_OneofUnmarshaler, _CloseStatusUpdate_OneofSizer, []interface{}{
(*CloseStatusUpdate_ClosePending)(nil),
(*CloseStatusUpdate_Confirmation)(nil),
(*CloseStatusUpdate_ChanClose)(nil),
}
@ -461,13 +475,18 @@ func _CloseStatusUpdate_OneofMarshaler(msg proto.Message, b *proto.Buffer) error
m := msg.(*CloseStatusUpdate)
// update
switch x := m.Update.(type) {
case *CloseStatusUpdate_Confirmation:
case *CloseStatusUpdate_ClosePending:
b.EncodeVarint(1<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.ClosePending); err != nil {
return err
}
case *CloseStatusUpdate_Confirmation:
b.EncodeVarint(2<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Confirmation); err != nil {
return err
}
case *CloseStatusUpdate_ChanClose:
b.EncodeVarint(2<<3 | proto.WireBytes)
b.EncodeVarint(3<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.ChanClose); err != nil {
return err
}
@ -481,7 +500,15 @@ func _CloseStatusUpdate_OneofMarshaler(msg proto.Message, b *proto.Buffer) error
func _CloseStatusUpdate_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
m := msg.(*CloseStatusUpdate)
switch tag {
case 1: // update.confirmation
case 1: // update.close_pending
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(PendingUpdate)
err := b.DecodeMessage(msg)
m.Update = &CloseStatusUpdate_ClosePending{msg}
return true, err
case 2: // update.confirmation
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
@ -489,7 +516,7 @@ func _CloseStatusUpdate_OneofUnmarshaler(msg proto.Message, tag, wire int, b *pr
err := b.DecodeMessage(msg)
m.Update = &CloseStatusUpdate_Confirmation{msg}
return true, err
case 2: // update.chan_close
case 3: // update.chan_close
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
@ -506,14 +533,19 @@ func _CloseStatusUpdate_OneofSizer(msg proto.Message) (n int) {
m := msg.(*CloseStatusUpdate)
// update
switch x := m.Update.(type) {
case *CloseStatusUpdate_ClosePending:
s := proto.Size(x.ClosePending)
n += proto.SizeVarint(1<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *CloseStatusUpdate_Confirmation:
s := proto.Size(x.Confirmation)
n += proto.SizeVarint(1<<3 | proto.WireBytes)
n += proto.SizeVarint(2<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *CloseStatusUpdate_ChanClose:
s := proto.Size(x.ChanClose)
n += proto.SizeVarint(2<<3 | proto.WireBytes)
n += proto.SizeVarint(3<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case nil:
@ -523,6 +555,15 @@ func _CloseStatusUpdate_OneofSizer(msg proto.Message) (n int) {
return n
}
type PendingUpdate struct {
Txid []byte `protobuf:"bytes,1,opt,name=txid,proto3" json:"txid,omitempty"`
}
func (m *PendingUpdate) Reset() { *m = PendingUpdate{} }
func (m *PendingUpdate) String() string { return proto.CompactTextString(m) }
func (*PendingUpdate) ProtoMessage() {}
func (*PendingUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
type OpenChannelRequest struct {
TargetPeerId int32 `protobuf:"varint,1,opt,name=target_peer_id" json:"target_peer_id,omitempty"`
TargetNode *LightningAddress `protobuf:"bytes,2,opt,name=target_node" json:"target_node,omitempty"`
@ -535,7 +576,7 @@ type OpenChannelRequest struct {
func (m *OpenChannelRequest) Reset() { *m = OpenChannelRequest{} }
func (m *OpenChannelRequest) String() string { return proto.CompactTextString(m) }
func (*OpenChannelRequest) ProtoMessage() {}
func (*OpenChannelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
func (*OpenChannelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
func (m *OpenChannelRequest) GetTargetNode() *LightningAddress {
if m != nil {
@ -546,6 +587,7 @@ func (m *OpenChannelRequest) GetTargetNode() *LightningAddress {
type OpenStatusUpdate struct {
// Types that are valid to be assigned to Update:
// *OpenStatusUpdate_ChanPending
// *OpenStatusUpdate_Confirmation
// *OpenStatusUpdate_ChanOpen
Update isOpenStatusUpdate_Update `protobuf_oneof:"update"`
@ -554,19 +596,23 @@ type OpenStatusUpdate struct {
func (m *OpenStatusUpdate) Reset() { *m = OpenStatusUpdate{} }
func (m *OpenStatusUpdate) String() string { return proto.CompactTextString(m) }
func (*OpenStatusUpdate) ProtoMessage() {}
func (*OpenStatusUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
func (*OpenStatusUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
type isOpenStatusUpdate_Update interface {
isOpenStatusUpdate_Update()
}
type OpenStatusUpdate_ChanPending struct {
ChanPending *PendingUpdate `protobuf:"bytes,1,opt,name=chan_pending,oneof"`
}
type OpenStatusUpdate_Confirmation struct {
Confirmation *ConfirmationUpdate `protobuf:"bytes,1,opt,name=confirmation,oneof"`
Confirmation *ConfirmationUpdate `protobuf:"bytes,2,opt,name=confirmation,oneof"`
}
type OpenStatusUpdate_ChanOpen struct {
ChanOpen *ChannelOpenUpdate `protobuf:"bytes,2,opt,name=chan_open,oneof"`
ChanOpen *ChannelOpenUpdate `protobuf:"bytes,3,opt,name=chan_open,oneof"`
}
func (*OpenStatusUpdate_ChanPending) isOpenStatusUpdate_Update() {}
func (*OpenStatusUpdate_Confirmation) isOpenStatusUpdate_Update() {}
func (*OpenStatusUpdate_ChanOpen) isOpenStatusUpdate_Update() {}
@ -577,6 +623,13 @@ func (m *OpenStatusUpdate) GetUpdate() isOpenStatusUpdate_Update {
return nil
}
func (m *OpenStatusUpdate) GetChanPending() *PendingUpdate {
if x, ok := m.GetUpdate().(*OpenStatusUpdate_ChanPending); ok {
return x.ChanPending
}
return nil
}
func (m *OpenStatusUpdate) GetConfirmation() *ConfirmationUpdate {
if x, ok := m.GetUpdate().(*OpenStatusUpdate_Confirmation); ok {
return x.Confirmation
@ -594,6 +647,7 @@ func (m *OpenStatusUpdate) GetChanOpen() *ChannelOpenUpdate {
// XXX_OneofFuncs is for the internal use of the proto package.
func (*OpenStatusUpdate) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
return _OpenStatusUpdate_OneofMarshaler, _OpenStatusUpdate_OneofUnmarshaler, _OpenStatusUpdate_OneofSizer, []interface{}{
(*OpenStatusUpdate_ChanPending)(nil),
(*OpenStatusUpdate_Confirmation)(nil),
(*OpenStatusUpdate_ChanOpen)(nil),
}
@ -603,13 +657,18 @@ func _OpenStatusUpdate_OneofMarshaler(msg proto.Message, b *proto.Buffer) error
m := msg.(*OpenStatusUpdate)
// update
switch x := m.Update.(type) {
case *OpenStatusUpdate_Confirmation:
case *OpenStatusUpdate_ChanPending:
b.EncodeVarint(1<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.ChanPending); err != nil {
return err
}
case *OpenStatusUpdate_Confirmation:
b.EncodeVarint(2<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Confirmation); err != nil {
return err
}
case *OpenStatusUpdate_ChanOpen:
b.EncodeVarint(2<<3 | proto.WireBytes)
b.EncodeVarint(3<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.ChanOpen); err != nil {
return err
}
@ -623,7 +682,15 @@ func _OpenStatusUpdate_OneofMarshaler(msg proto.Message, b *proto.Buffer) error
func _OpenStatusUpdate_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
m := msg.(*OpenStatusUpdate)
switch tag {
case 1: // update.confirmation
case 1: // update.chan_pending
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(PendingUpdate)
err := b.DecodeMessage(msg)
m.Update = &OpenStatusUpdate_ChanPending{msg}
return true, err
case 2: // update.confirmation
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
@ -631,7 +698,7 @@ func _OpenStatusUpdate_OneofUnmarshaler(msg proto.Message, tag, wire int, b *pro
err := b.DecodeMessage(msg)
m.Update = &OpenStatusUpdate_Confirmation{msg}
return true, err
case 2: // update.chan_open
case 3: // update.chan_open
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
@ -648,14 +715,19 @@ func _OpenStatusUpdate_OneofSizer(msg proto.Message) (n int) {
m := msg.(*OpenStatusUpdate)
// update
switch x := m.Update.(type) {
case *OpenStatusUpdate_ChanPending:
s := proto.Size(x.ChanPending)
n += proto.SizeVarint(1<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *OpenStatusUpdate_Confirmation:
s := proto.Size(x.Confirmation)
n += proto.SizeVarint(1<<3 | proto.WireBytes)
n += proto.SizeVarint(2<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *OpenStatusUpdate_ChanOpen:
s := proto.Size(x.ChanOpen)
n += proto.SizeVarint(2<<3 | proto.WireBytes)
n += proto.SizeVarint(3<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case nil:
@ -672,7 +744,7 @@ type PendingChannelRequest struct {
func (m *PendingChannelRequest) Reset() { *m = PendingChannelRequest{} }
func (m *PendingChannelRequest) String() string { return proto.CompactTextString(m) }
func (*PendingChannelRequest) ProtoMessage() {}
func (*PendingChannelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
func (*PendingChannelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
type PendingChannelResponse struct {
PendingChannels []*PendingChannelResponse_PendingChannel `protobuf:"bytes,1,rep,name=pending_channels" json:"pending_channels,omitempty"`
@ -681,7 +753,7 @@ type PendingChannelResponse struct {
func (m *PendingChannelResponse) Reset() { *m = PendingChannelResponse{} }
func (m *PendingChannelResponse) String() string { return proto.CompactTextString(m) }
func (*PendingChannelResponse) ProtoMessage() {}
func (*PendingChannelResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
func (*PendingChannelResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
func (m *PendingChannelResponse) GetPendingChannels() []*PendingChannelResponse_PendingChannel {
if m != nil {
@ -705,7 +777,7 @@ func (m *PendingChannelResponse_PendingChannel) Reset() { *m = PendingCh
func (m *PendingChannelResponse_PendingChannel) String() string { return proto.CompactTextString(m) }
func (*PendingChannelResponse_PendingChannel) ProtoMessage() {}
func (*PendingChannelResponse_PendingChannel) Descriptor() ([]byte, []int) {
return fileDescriptor0, []int{27, 0}
return fileDescriptor0, []int{28, 0}
}
type WalletBalanceRequest struct {
@ -715,7 +787,7 @@ type WalletBalanceRequest struct {
func (m *WalletBalanceRequest) Reset() { *m = WalletBalanceRequest{} }
func (m *WalletBalanceRequest) String() string { return proto.CompactTextString(m) }
func (*WalletBalanceRequest) ProtoMessage() {}
func (*WalletBalanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
func (*WalletBalanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
type WalletBalanceResponse struct {
Balance float64 `protobuf:"fixed64,1,opt,name=balance" json:"balance,omitempty"`
@ -724,7 +796,7 @@ type WalletBalanceResponse struct {
func (m *WalletBalanceResponse) Reset() { *m = WalletBalanceResponse{} }
func (m *WalletBalanceResponse) String() string { return proto.CompactTextString(m) }
func (*WalletBalanceResponse) ProtoMessage() {}
func (*WalletBalanceResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
func (*WalletBalanceResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
type ShowRoutingTableRequest struct {
}
@ -732,7 +804,7 @@ type ShowRoutingTableRequest struct {
func (m *ShowRoutingTableRequest) Reset() { *m = ShowRoutingTableRequest{} }
func (m *ShowRoutingTableRequest) String() string { return proto.CompactTextString(m) }
func (*ShowRoutingTableRequest) ProtoMessage() {}
func (*ShowRoutingTableRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
func (*ShowRoutingTableRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }
type ShowRoutingTableResponse struct {
Rt string `protobuf:"bytes,1,opt,name=rt" json:"rt,omitempty"`
@ -741,7 +813,7 @@ type ShowRoutingTableResponse struct {
func (m *ShowRoutingTableResponse) Reset() { *m = ShowRoutingTableResponse{} }
func (m *ShowRoutingTableResponse) String() string { return proto.CompactTextString(m) }
func (*ShowRoutingTableResponse) ProtoMessage() {}
func (*ShowRoutingTableResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }
func (*ShowRoutingTableResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }
func init() {
proto.RegisterType((*SendRequest)(nil), "lnrpc.SendRequest")
@ -768,6 +840,7 @@ func init() {
proto.RegisterType((*ChannelCloseUpdate)(nil), "lnrpc.ChannelCloseUpdate")
proto.RegisterType((*CloseChannelRequest)(nil), "lnrpc.CloseChannelRequest")
proto.RegisterType((*CloseStatusUpdate)(nil), "lnrpc.CloseStatusUpdate")
proto.RegisterType((*PendingUpdate)(nil), "lnrpc.PendingUpdate")
proto.RegisterType((*OpenChannelRequest)(nil), "lnrpc.OpenChannelRequest")
proto.RegisterType((*OpenStatusUpdate)(nil), "lnrpc.OpenStatusUpdate")
proto.RegisterType((*PendingChannelRequest)(nil), "lnrpc.PendingChannelRequest")
@ -893,7 +966,7 @@ func (c *lightningClient) OpenChannel(ctx context.Context, in *OpenChannelReques
}
type Lightning_OpenChannelClient interface {
Recv() (*ChannelOpenUpdate, error)
Recv() (*OpenStatusUpdate, error)
grpc.ClientStream
}
@ -901,8 +974,8 @@ type lightningOpenChannelClient struct {
grpc.ClientStream
}
func (x *lightningOpenChannelClient) Recv() (*ChannelOpenUpdate, error) {
m := new(ChannelOpenUpdate)
func (x *lightningOpenChannelClient) Recv() (*OpenStatusUpdate, error) {
m := new(OpenStatusUpdate)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
@ -925,7 +998,7 @@ func (c *lightningClient) CloseChannel(ctx context.Context, in *CloseChannelRequ
}
type Lightning_CloseChannelClient interface {
Recv() (*ChannelCloseUpdate, error)
Recv() (*CloseStatusUpdate, error)
grpc.ClientStream
}
@ -933,8 +1006,8 @@ type lightningCloseChannelClient struct {
grpc.ClientStream
}
func (x *lightningCloseChannelClient) Recv() (*ChannelCloseUpdate, error) {
m := new(ChannelCloseUpdate)
func (x *lightningCloseChannelClient) Recv() (*CloseStatusUpdate, error) {
m := new(CloseStatusUpdate)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
@ -1146,7 +1219,7 @@ func _Lightning_OpenChannel_Handler(srv interface{}, stream grpc.ServerStream) e
}
type Lightning_OpenChannelServer interface {
Send(*ChannelOpenUpdate) error
Send(*OpenStatusUpdate) error
grpc.ServerStream
}
@ -1154,7 +1227,7 @@ type lightningOpenChannelServer struct {
grpc.ServerStream
}
func (x *lightningOpenChannelServer) Send(m *ChannelOpenUpdate) error {
func (x *lightningOpenChannelServer) Send(m *OpenStatusUpdate) error {
return x.ServerStream.SendMsg(m)
}
@ -1167,7 +1240,7 @@ func _Lightning_CloseChannel_Handler(srv interface{}, stream grpc.ServerStream)
}
type Lightning_CloseChannelServer interface {
Send(*ChannelCloseUpdate) error
Send(*CloseStatusUpdate) error
grpc.ServerStream
}
@ -1175,7 +1248,7 @@ type lightningCloseChannelServer struct {
grpc.ServerStream
}
func (x *lightningCloseChannelServer) Send(m *ChannelCloseUpdate) error {
func (x *lightningCloseChannelServer) Send(m *CloseStatusUpdate) error {
return x.ServerStream.SendMsg(m)
}
@ -1306,97 +1379,99 @@ var _Lightning_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("rpc.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 1458 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x57, 0x4b, 0x6f, 0xdb, 0x46,
0x10, 0x8e, 0x5e, 0x96, 0x34, 0xb2, 0x6c, 0x69, 0xfd, 0x92, 0x99, 0xa4, 0x4d, 0x89, 0x24, 0x30,
0x82, 0xd4, 0x49, 0x9d, 0x1e, 0x82, 0x04, 0x4d, 0xe1, 0x38, 0x6e, 0x9c, 0xc6, 0xb5, 0xdd, 0xc8,
0x41, 0xd0, 0x13, 0x41, 0x51, 0xeb, 0x88, 0x08, 0x45, 0xb2, 0xda, 0x65, 0x1c, 0xf5, 0x50, 0xa0,
0x97, 0x5e, 0x7b, 0xed, 0xaf, 0xe8, 0x9f, 0xe8, 0xa1, 0x87, 0x02, 0xfd, 0x4d, 0x9d, 0x7d, 0x50,
0x7c, 0x49, 0x01, 0x8a, 0x9e, 0x04, 0xce, 0xce, 0x7e, 0x3b, 0xf3, 0xed, 0xcc, 0x37, 0x2b, 0x68,
0x4e, 0x42, 0x67, 0x37, 0x9c, 0x04, 0x3c, 0x20, 0x35, 0xcf, 0xc7, 0x0f, 0xf3, 0x7b, 0x68, 0xf5,
0xa9, 0x3f, 0x7c, 0x45, 0x7f, 0x8c, 0x28, 0xe3, 0x64, 0x19, 0xaa, 0x43, 0xfc, 0xed, 0x95, 0x6e,
0x94, 0x76, 0x96, 0x49, 0x0b, 0x2a, 0xf6, 0x98, 0xf7, 0xca, 0xf8, 0x51, 0x21, 0xeb, 0xb0, 0x1c,
0xda, 0xd3, 0x31, 0xf5, 0xb9, 0x35, 0xb2, 0xd9, 0xa8, 0x57, 0x91, 0x2e, 0x5d, 0x68, 0x5e, 0xd8,
0x8c, 0x5b, 0x0c, 0x41, 0x7a, 0x55, 0x34, 0x35, 0xcc, 0x15, 0x58, 0x56, 0x90, 0x2c, 0x0c, 0x7c,
0x46, 0xcd, 0x47, 0xb0, 0x7c, 0x30, 0xb2, 0x7d, 0x9f, 0x7a, 0x67, 0x81, 0xeb, 0x73, 0x01, 0x74,
0x11, 0xf9, 0x43, 0xd7, 0x7f, 0x6b, 0xf1, 0x0f, 0xee, 0x50, 0x9f, 0x85, 0xd6, 0x20, 0xe2, 0x61,
0xc4, 0x2d, 0xd7, 0x1f, 0xd2, 0x0f, 0xf2, 0xd0, 0xb6, 0xf9, 0x25, 0x74, 0x8e, 0xdd, 0xb7, 0x23,
0xee, 0xa3, 0xf7, 0xfe, 0x70, 0x38, 0xa1, 0x8c, 0x11, 0x02, 0x10, 0x46, 0x83, 0x97, 0x74, 0x7a,
0x24, 0xc2, 0x10, 0xbb, 0x9b, 0x22, 0xee, 0x51, 0xc0, 0x54, 0xa8, 0x4d, 0xf3, 0xd7, 0x12, 0xac,
0x8a, 0x10, 0xbe, 0xb3, 0xfd, 0x69, 0x9c, 0xd9, 0x13, 0x58, 0x16, 0x00, 0xe7, 0xc1, 0xfe, 0x38,
0x88, 0x7c, 0x91, 0x61, 0x65, 0xa7, 0xb5, 0xb7, 0xb3, 0x2b, 0x69, 0xd8, 0xcd, 0x79, 0xef, 0xa6,
0x5d, 0x0f, 0x7d, 0x3e, 0x99, 0x1a, 0x0f, 0xa0, 0x5b, 0x30, 0x0a, 0x82, 0xde, 0xd1, 0xa9, 0x8e,
0xa1, 0x0d, 0xb5, 0xf7, 0xb6, 0x17, 0x51, 0xc5, 0xd7, 0xa3, 0xf2, 0xc3, 0x92, 0x79, 0x03, 0x3a,
0x09, 0xb2, 0xa2, 0x43, 0x84, 0x3a, 0x4b, 0xbb, 0x69, 0xde, 0x57, 0x1e, 0x07, 0xc8, 0x0c, 0x4b,
0x5d, 0x82, 0x8d, 0x47, 0x69, 0xd8, 0x15, 0x58, 0xb2, 0x55, 0xc8, 0x12, 0xd7, 0xfc, 0x0c, 0xba,
0xa9, 0x1d, 0x73, 0x41, 0x7f, 0x2f, 0x41, 0xf7, 0x84, 0x5e, 0x6a, 0xc2, 0x62, 0xd8, 0x3d, 0xf4,
0x99, 0x86, 0x54, 0xfa, 0xac, 0xec, 0xdd, 0xd4, 0x99, 0x17, 0xfc, 0x76, 0xf5, 0xe7, 0x39, 0xfa,
0x9a, 0xa7, 0xd0, 0x4a, 0x7d, 0x92, 0x2d, 0x58, 0x7b, 0xf3, 0xe2, 0xfc, 0xe4, 0xb0, 0xdf, 0xb7,
0xce, 0x5e, 0x3f, 0x7d, 0x79, 0xf8, 0x83, 0x75, 0xb4, 0xdf, 0x3f, 0xea, 0x5c, 0x21, 0x9b, 0x40,
0xd0, 0x7a, 0x7e, 0xf8, 0x2c, 0x63, 0x2f, 0x91, 0x55, 0x68, 0xa5, 0x0d, 0x65, 0xf3, 0x16, 0x3a,
0xa6, 0x4e, 0xd4, 0xe1, 0xaf, 0x42, 0xdd, 0x56, 0x26, 0x9d, 0xc1, 0x63, 0x20, 0x07, 0x01, 0x96,
0x8c, 0xc3, 0xcf, 0x28, 0x9d, 0xc4, 0x19, 0xdc, 0x4a, 0x11, 0xd3, 0xda, 0xdb, 0xd2, 0x19, 0xe4,
0x0b, 0xc4, 0xbc, 0x0d, 0x6b, 0x99, 0xcd, 0xc9, 0x21, 0x21, 0x7e, 0x5b, 0x9a, 0xa6, 0x9a, 0xf9,
0x0c, 0xaa, 0x47, 0xe7, 0xc7, 0x07, 0x58, 0x4f, 0x65, 0x6d, 0xab, 0xe4, 0xd9, 0x16, 0xf5, 0x2d,
0xaa, 0xdd, 0xf2, 0x02, 0xe7, 0x9d, 0x2e, 0x79, 0xbc, 0x67, 0x1e, 0x58, 0x11, 0xd3, 0xe5, 0xfe,
0x4f, 0x09, 0xda, 0xfb, 0x0e, 0x77, 0xdf, 0x53, 0x5d, 0xe5, 0x62, 0xcf, 0x84, 0x8e, 0x03, 0x4e,
0xe3, 0xa3, 0x9a, 0x64, 0x03, 0xda, 0x8e, 0x5a, 0xb5, 0x42, 0xd1, 0x04, 0xaa, 0x50, 0x49, 0x07,
0x1a, 0x8e, 0x1d, 0xda, 0x8e, 0xcb, 0xa7, 0x12, 0xbc, 0x22, 0x1c, 0xf1, 0x28, 0xdb, 0xb3, 0x06,
0xb6, 0x67, 0xfb, 0x0e, 0x95, 0x87, 0x54, 0x90, 0xdf, 0x15, 0x0d, 0x19, 0xdb, 0x6b, 0xd2, 0xbe,
0x0d, 0xdd, 0x08, 0x73, 0xe3, 0xdc, 0xa3, 0x43, 0x6b, 0x40, 0xd5, 0xd2, 0x92, 0x5c, 0x32, 0xa1,
0x1d, 0x52, 0xd5, 0x66, 0x23, 0xee, 0x39, 0xac, 0x57, 0x97, 0x15, 0xdf, 0xd2, 0xac, 0xc9, 0xcc,
0xd7, 0xa0, 0xe5, 0x47, 0x63, 0x2b, 0x0a, 0x87, 0x36, 0xa7, 0xac, 0xd7, 0xc0, 0x8d, 0x55, 0xf3,
0xcf, 0x12, 0x54, 0x05, 0x71, 0xa2, 0x25, 0xbd, 0x98, 0xdb, 0x24, 0x95, 0x14, 0x8d, 0x22, 0x89,
0x5a, 0xfa, 0xf2, 0x2a, 0xd2, 0x03, 0x09, 0x1d, 0x4c, 0x11, 0x4f, 0x88, 0x02, 0x97, 0x09, 0x54,
0x13, 0xdb, 0x84, 0x3a, 0xef, 0x65, 0xf0, 0x55, 0x91, 0x3d, 0xb3, 0xb9, 0xf2, 0x52, 0x31, 0x6b,
0x8b, 0xf4, 0xa9, 0x4b, 0x0b, 0x82, 0xbb, 0xfe, 0x00, 0x2f, 0x64, 0x28, 0xa3, 0x6b, 0x90, 0xdb,
0x48, 0x99, 0x62, 0x92, 0xf5, 0x9a, 0x32, 0xa3, 0x75, 0x9d, 0x51, 0xe6, 0x12, 0x4c, 0x22, 0x94,
0x83, 0xc9, 0x0a, 0x88, 0x2b, 0xdb, 0xbc, 0x07, 0xdd, 0x94, 0x4d, 0x97, 0x85, 0x01, 0x35, 0x91,
0x0f, 0xd3, 0x8a, 0x10, 0xf3, 0x23, 0x9c, 0xcc, 0x0e, 0xac, 0x3c, 0xa7, 0xfc, 0x85, 0x7f, 0x11,
0xc4, 0x10, 0xbf, 0xa1, 0xb4, 0xcc, 0x4c, 0x1a, 0x61, 0x3e, 0x4f, 0x3d, 0xe8, 0xb8, 0x43, 0x4c,
0x0d, 0xef, 0xd6, 0x8a, 0xf9, 0x51, 0xb7, 0x7e, 0x0d, 0xd6, 0x05, 0xeb, 0xf1, 0xed, 0xcc, 0xd2,
0x11, 0xec, 0xb5, 0xc9, 0x55, 0x58, 0x13, 0xab, 0xb6, 0xcc, 0x26, 0x59, 0xac, 0xca, 0x45, 0x2c,
0x2d, 0xb5, 0x55, 0x04, 0x5c, 0x93, 0x12, 0xf9, 0x5a, 0xb6, 0xca, 0x85, 0x3b, 0x19, 0xdb, 0xdc,
0x0d, 0xfc, 0xd7, 0xf2, 0x2e, 0x85, 0xe3, 0x40, 0xd4, 0xac, 0xc5, 0x46, 0x76, 0xa2, 0xb0, 0xca,
0x34, 0xa2, 0x22, 0x5a, 0x7d, 0x7b, 0x58, 0x59, 0x02, 0xd1, 0x41, 0x08, 0x66, 0x79, 0xf4, 0x82,
0xab, 0x30, 0xcc, 0xaf, 0xa1, 0xab, 0xa9, 0x3c, 0xc5, 0x40, 0x35, 0xea, 0x9d, 0x7c, 0x19, 0xab,
0x4e, 0x5c, 0xd3, 0x9c, 0xa5, 0x65, 0x5e, 0xb6, 0xb0, 0xfa, 0x3e, 0xf0, 0x02, 0x46, 0x35, 0x02,
0x06, 0xe1, 0xe0, 0x67, 0x4e, 0xfc, 0xf1, 0x96, 0x59, 0xe4, 0x38, 0x31, 0x45, 0x0d, 0x33, 0xc4,
0x16, 0x16, 0xbb, 0x34, 0x42, 0x2c, 0x00, 0xff, 0xe1, 0x7c, 0x51, 0x71, 0xdc, 0x1d, 0x53, 0xcb,
0x73, 0xc7, 0x6e, 0xdc, 0xcd, 0xd8, 0x2e, 0xb6, 0xe7, 0x05, 0x97, 0xd6, 0x45, 0x30, 0x71, 0x90,
0x5c, 0x71, 0x84, 0xcc, 0xb7, 0x61, 0xfe, 0x82, 0x9a, 0x29, 0x8f, 0xec, 0x73, 0x9b, 0x47, 0x4c,
0x87, 0xfb, 0x05, 0x86, 0x9b, 0x22, 0x57, 0x9f, 0xb7, 0x1d, 0x9f, 0x57, 0xe0, 0xfd, 0xe8, 0x0a,
0xb9, 0x07, 0x20, 0x62, 0xd4, 0xe0, 0xe5, 0xec, 0x86, 0x02, 0x21, 0x47, 0x57, 0x9e, 0x36, 0x60,
0x49, 0x35, 0xa0, 0xe8, 0x3c, 0x22, 0xd8, 0xce, 0x65, 0x8d, 0x57, 0xc4, 0xed, 0xc9, 0x5b, 0xca,
0xad, 0x8c, 0x7e, 0x91, 0xbb, 0xd0, 0xd2, 0x76, 0x3f, 0x18, 0xc6, 0x47, 0x2d, 0x52, 0x45, 0x51,
0x75, 0x4a, 0x59, 0xe2, 0xe1, 0xab, 0x75, 0x4e, 0xe9, 0xce, 0x75, 0xd8, 0xd0, 0x02, 0x93, 0x5b,
0x56, 0xfa, 0xb3, 0x05, 0xab, 0x4e, 0x30, 0x1e, 0xbb, 0x8c, 0x61, 0xaa, 0x16, 0x73, 0x7f, 0x8a,
0x05, 0x48, 0x17, 0xa4, 0x2c, 0x1f, 0xd9, 0xc4, 0x6d, 0xf3, 0x67, 0xe8, 0x88, 0x24, 0xfe, 0x2f,
0x8f, 0x9f, 0x43, 0x53, 0xf2, 0x18, 0x20, 0x96, 0xce, 0xad, 0x97, 0xa5, 0x31, 0x29, 0xcc, 0x0c,
0x8b, 0x5f, 0xc1, 0xc6, 0x99, 0x6a, 0xad, 0x1c, 0x8f, 0x37, 0x61, 0x89, 0xc9, 0xa0, 0xf4, 0x08,
0x5c, 0xcf, 0xc2, 0xa9, 0x80, 0xcd, 0x3f, 0xca, 0xb0, 0x99, 0xdf, 0xaf, 0x1b, 0xfd, 0x1b, 0xe8,
0x14, 0x9a, 0x56, 0xa9, 0xc6, 0xdd, 0x99, 0x6a, 0xcc, 0xdb, 0x98, 0x33, 0x1b, 0x7f, 0x97, 0x60,
0x25, 0x6b, 0x2a, 0x0c, 0xa7, 0x82, 0xa8, 0x94, 0xe7, 0xcf, 0x91, 0x4a, 0x61, 0x8e, 0x54, 0xe7,
0xcf, 0x91, 0xda, 0x82, 0x39, 0xb2, 0x14, 0x3f, 0xee, 0x32, 0x6d, 0x59, 0x97, 0xb0, 0x09, 0x61,
0x8d, 0x8f, 0x10, 0x76, 0x17, 0xd6, 0xdf, 0x60, 0x57, 0x51, 0xfe, 0x54, 0x41, 0xc6, 0x74, 0x23,
0xe6, 0xa5, 0xcb, 0x7d, 0xac, 0x3d, 0x2b, 0xf0, 0x3d, 0xf5, 0x4a, 0x6a, 0x98, 0x3b, 0xb0, 0x91,
0xf3, 0x4e, 0xc6, 0x73, 0x1c, 0x93, 0xf0, 0x2c, 0x99, 0xdb, 0xb0, 0xd5, 0x1f, 0x05, 0x97, 0xaf,
0xf0, 0x59, 0x88, 0x71, 0x9d, 0xdb, 0x03, 0x2f, 0x86, 0xc6, 0x09, 0xdf, 0x2b, 0x2e, 0x69, 0x1c,
0x9c, 0xe6, 0x13, 0x25, 0x0c, 0xcd, 0x3b, 0x7b, 0xd0, 0xce, 0xc4, 0x4a, 0xea, 0x50, 0xd9, 0x3f,
0x3e, 0xc6, 0x07, 0x4b, 0x0b, 0xea, 0xa7, 0x67, 0x87, 0x27, 0x2f, 0x4e, 0x9e, 0xe3, 0x2b, 0x05,
0x3f, 0x0e, 0x8e, 0x4f, 0xfb, 0xe2, 0xa3, 0xbc, 0xf7, 0xd7, 0x12, 0x34, 0x67, 0xcd, 0x43, 0xbe,
0x85, 0x76, 0x26, 0x5c, 0x72, 0x55, 0x73, 0x30, 0x2f, 0x65, 0xe3, 0xda, 0xfc, 0x45, 0x1d, 0xd9,
0x63, 0x68, 0xc4, 0xaf, 0x41, 0xb2, 0x39, 0xff, 0xe1, 0x69, 0x6c, 0x15, 0xec, 0x7a, 0xf3, 0x13,
0x68, 0xce, 0x9e, 0x7d, 0x24, 0xed, 0x95, 0x7e, 0x3a, 0x1a, 0xbd, 0xe2, 0x82, 0xde, 0xbf, 0x0f,
0x90, 0x3c, 0xbc, 0x48, 0x6f, 0xd1, 0xeb, 0xcf, 0xd8, 0x9e, 0xb3, 0xa2, 0x21, 0x9e, 0x41, 0x2b,
0xf5, 0xae, 0x22, 0xa9, 0xee, 0xcd, 0x3d, 0xd4, 0x0c, 0x63, 0xde, 0x52, 0x92, 0xc8, 0x6c, 0x08,
0x93, 0x44, 0xad, 0xb2, 0xa3, 0x7a, 0x96, 0x48, 0x71, 0x5e, 0x3f, 0x84, 0xba, 0x1e, 0xc0, 0x64,
0x43, 0x3b, 0x65, 0x67, 0xb4, 0xb1, 0x99, 0x37, 0x27, 0xf1, 0xa7, 0xd4, 0x75, 0x16, 0x7f, 0x51,
0x71, 0x8d, 0x85, 0x42, 0x73, 0xbf, 0x44, 0x9e, 0xe3, 0xdf, 0x99, 0xd4, 0x68, 0x22, 0xb3, 0x5c,
0x8b, 0xf3, 0xca, 0x58, 0xac, 0xfb, 0x08, 0x74, 0x02, 0xab, 0x59, 0x11, 0x40, 0x8d, 0x5e, 0x20,
0x23, 0x0a, 0xed, 0xfa, 0x47, 0x45, 0x86, 0x3c, 0x52, 0x7f, 0xe5, 0xce, 0xd4, 0x9f, 0x34, 0x42,
0x52, 0xa5, 0x10, 0x23, 0xac, 0x65, 0x6c, 0x6a, 0xdf, 0x4e, 0x09, 0x63, 0xe9, 0xe3, 0xdf, 0x90,
0x5c, 0x43, 0x91, 0x4f, 0x62, 0xe7, 0xf9, 0x4d, 0x68, 0x7c, 0xba, 0x70, 0x5d, 0x01, 0x0f, 0x96,
0xe4, 0x3f, 0xcd, 0x07, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x71, 0xcd, 0xec, 0x2c, 0x76, 0x0e,
0x00, 0x00,
// 1496 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x57, 0x5b, 0x6f, 0x13, 0xd7,
0x13, 0xc7, 0x77, 0x7b, 0x6c, 0x27, 0xf6, 0xc9, 0xcd, 0x31, 0xf0, 0xff, 0xd3, 0x15, 0xa0, 0x08,
0x85, 0x40, 0x4d, 0x1f, 0x10, 0xa8, 0x54, 0xc1, 0xa4, 0x84, 0x92, 0x26, 0x29, 0x0e, 0x42, 0x7d,
0x5a, 0xad, 0xd7, 0x27, 0x78, 0xc5, 0x7a, 0x77, 0xeb, 0x73, 0x36, 0xc1, 0xfd, 0x00, 0x7d, 0xed,
0x6b, 0x3f, 0x44, 0x55, 0xf5, 0x3b, 0x54, 0x7d, 0xaa, 0xd4, 0xcf, 0xd4, 0x39, 0x97, 0xb5, 0xf7,
0xe2, 0x20, 0xf5, 0xa1, 0x4f, 0xd6, 0xce, 0x99, 0x33, 0x97, 0xdf, 0xcc, 0xfc, 0xce, 0x18, 0x6a,
0xd3, 0xc0, 0xde, 0x0b, 0xa6, 0x3e, 0xf7, 0x49, 0xc9, 0xf5, 0xf0, 0xc3, 0xf8, 0x0e, 0xea, 0x03,
0xea, 0x8d, 0xde, 0xd0, 0x1f, 0x42, 0xca, 0x38, 0x69, 0x40, 0x71, 0x84, 0xbf, 0x9d, 0xdc, 0xad,
0xdc, 0x4e, 0x83, 0xd4, 0xa1, 0x60, 0x4d, 0x78, 0x27, 0x8f, 0x1f, 0x05, 0xb2, 0x0e, 0x8d, 0xc0,
0x9a, 0x4d, 0xa8, 0xc7, 0xcd, 0xb1, 0xc5, 0xc6, 0x9d, 0x82, 0x54, 0x69, 0x43, 0xed, 0xdc, 0x62,
0xdc, 0x64, 0x68, 0xa4, 0x53, 0x44, 0x51, 0xd5, 0x58, 0x81, 0x86, 0x32, 0xc9, 0x02, 0xdf, 0x63,
0xd4, 0x78, 0x02, 0x8d, 0xfe, 0xd8, 0xf2, 0x3c, 0xea, 0x9e, 0xfa, 0x8e, 0xc7, 0x85, 0xa1, 0xf3,
0xd0, 0x1b, 0x39, 0xde, 0x7b, 0x93, 0x7f, 0x74, 0x46, 0xda, 0x17, 0x4a, 0xfd, 0x90, 0x07, 0x21,
0x37, 0x1d, 0x6f, 0x44, 0x3f, 0x4a, 0xa7, 0x4d, 0xe3, 0x0b, 0x68, 0x1d, 0x39, 0xef, 0xc7, 0xdc,
0x43, 0xed, 0xfd, 0xd1, 0x68, 0x4a, 0x19, 0x23, 0x04, 0x20, 0x08, 0x87, 0xaf, 0xe9, 0xec, 0x50,
0x84, 0x21, 0x6e, 0xd7, 0x44, 0xdc, 0x63, 0x9f, 0xa9, 0x50, 0x6b, 0xc6, 0x4f, 0x39, 0x58, 0x15,
0x21, 0x7c, 0x6b, 0x79, 0xb3, 0x28, 0xb3, 0x67, 0xd0, 0x10, 0x06, 0xce, 0xfc, 0xfd, 0x89, 0x1f,
0x7a, 0x22, 0xc3, 0xc2, 0x4e, 0xbd, 0xb7, 0xb3, 0x27, 0x61, 0xd8, 0x4b, 0x69, 0xef, 0xc5, 0x55,
0x0f, 0x3c, 0x3e, 0x9d, 0x75, 0x1f, 0x41, 0x3b, 0x23, 0x14, 0x00, 0x7d, 0xa0, 0x33, 0x1d, 0x43,
0x13, 0x4a, 0x17, 0x96, 0x1b, 0x52, 0x85, 0xd7, 0x93, 0xfc, 0xe3, 0x9c, 0x71, 0x0b, 0x5a, 0x0b,
0xcb, 0x0a, 0x0e, 0x11, 0xea, 0x3c, 0xed, 0x9a, 0xf1, 0x50, 0x69, 0xf4, 0x11, 0x19, 0x16, 0x2b,
0x82, 0x85, 0xae, 0xb4, 0xd9, 0x15, 0x28, 0x5b, 0x2a, 0x64, 0x69, 0xd7, 0xf8, 0x0c, 0xda, 0xb1,
0x1b, 0x4b, 0x8d, 0xfe, 0x92, 0x83, 0xf6, 0x31, 0xbd, 0xd4, 0x80, 0x45, 0x66, 0x7b, 0xa8, 0x33,
0x0b, 0xa8, 0xd4, 0x59, 0xe9, 0xdd, 0xd6, 0x99, 0x67, 0xf4, 0xf6, 0xf4, 0xe7, 0x19, 0xea, 0x1a,
0x27, 0x50, 0x8f, 0x7d, 0x92, 0x2d, 0x58, 0x7b, 0xf7, 0xea, 0xec, 0xf8, 0x60, 0x30, 0x30, 0x4f,
0xdf, 0x3e, 0x7f, 0x7d, 0xf0, 0xbd, 0x79, 0xb8, 0x3f, 0x38, 0x6c, 0x5d, 0x23, 0x9b, 0x40, 0x50,
0x7a, 0x76, 0xf0, 0x22, 0x21, 0xcf, 0x91, 0x55, 0xa8, 0xc7, 0x05, 0x79, 0xe3, 0x0e, 0x2a, 0xc6,
0x3c, 0xea, 0xf0, 0x57, 0xa1, 0x62, 0x29, 0x91, 0xce, 0xe0, 0x29, 0x90, 0xbe, 0x8f, 0x2d, 0x63,
0xf3, 0x53, 0x4a, 0xa7, 0x51, 0x06, 0x77, 0x62, 0xc0, 0xd4, 0x7b, 0x5b, 0x3a, 0x83, 0x74, 0x83,
0x18, 0x77, 0x61, 0x2d, 0x71, 0x79, 0xe1, 0x24, 0xc0, 0x6f, 0x53, 0xc3, 0x54, 0x32, 0x5e, 0x40,
0xf1, 0xf0, 0xec, 0xa8, 0x8f, 0xfd, 0x94, 0xd7, 0xb2, 0x42, 0x1a, 0x6d, 0xd1, 0xdf, 0xa2, 0xdb,
0x4d, 0xd7, 0xb7, 0x3f, 0xe8, 0x96, 0xc7, 0x3a, 0x73, 0xdf, 0x0c, 0x99, 0x6e, 0xf7, 0xbf, 0x73,
0xd0, 0xdc, 0xb7, 0xb9, 0x73, 0x41, 0x75, 0x97, 0x8b, 0x3b, 0x53, 0x3a, 0xf1, 0x39, 0x8d, 0x5c,
0xd5, 0xc8, 0x06, 0x34, 0x6d, 0x75, 0x6a, 0x06, 0x62, 0x08, 0x54, 0xa3, 0x92, 0x16, 0x54, 0x6d,
0x2b, 0xb0, 0x6c, 0x87, 0xcf, 0xa4, 0xf1, 0x82, 0x50, 0x44, 0x57, 0x96, 0x6b, 0x0e, 0x2d, 0xd7,
0xf2, 0x6c, 0x2a, 0x9d, 0x14, 0x10, 0xdf, 0x15, 0x6d, 0x32, 0x92, 0x97, 0xa4, 0x7c, 0x1b, 0xda,
0x21, 0xe6, 0xc6, 0xb9, 0x4b, 0x47, 0xe6, 0x90, 0xaa, 0xa3, 0xb2, 0x3c, 0x32, 0xa0, 0x19, 0x50,
0x35, 0x66, 0x63, 0xee, 0xda, 0xac, 0x53, 0x91, 0x1d, 0x5f, 0xd7, 0xa8, 0xc9, 0xcc, 0xd7, 0xa0,
0xee, 0x85, 0x13, 0x33, 0x0c, 0x46, 0x16, 0xa7, 0xac, 0x53, 0xc5, 0x8b, 0x45, 0xe3, 0x8f, 0x1c,
0x14, 0x05, 0x70, 0x62, 0x24, 0xdd, 0x08, 0xdb, 0x45, 0x2a, 0x31, 0x18, 0x45, 0x12, 0xa5, 0x78,
0xf1, 0x0a, 0x52, 0x03, 0x01, 0x1d, 0xce, 0xd0, 0x9e, 0x20, 0x05, 0x2e, 0x13, 0x28, 0x2e, 0x64,
0x53, 0x6a, 0x5f, 0xc8, 0xe0, 0x8b, 0x22, 0x7b, 0x66, 0x71, 0xa5, 0xa5, 0x62, 0xd6, 0x12, 0xa9,
0x53, 0x91, 0x12, 0x34, 0xee, 0x78, 0x43, 0x2c, 0xc8, 0x48, 0x46, 0x57, 0x25, 0x77, 0x11, 0x32,
0x85, 0x24, 0xeb, 0xd4, 0x64, 0x46, 0xeb, 0x3a, 0xa3, 0x44, 0x11, 0x0c, 0x22, 0x98, 0x83, 0xc9,
0x0e, 0x88, 0x3a, 0xdb, 0x78, 0x00, 0xed, 0x98, 0x4c, 0xb7, 0x45, 0x17, 0x4a, 0x22, 0x1f, 0xa6,
0x19, 0x21, 0xc2, 0x47, 0x28, 0x19, 0x2d, 0x58, 0x79, 0x49, 0xf9, 0x2b, 0xef, 0xdc, 0x8f, 0x4c,
0xfc, 0x8c, 0xd4, 0x32, 0x17, 0x69, 0x0b, 0xcb, 0x71, 0xea, 0x40, 0xcb, 0x19, 0x61, 0x6a, 0x58,
0x5b, 0x33, 0xc2, 0x47, 0x55, 0xfd, 0x06, 0xac, 0x0b, 0xd4, 0xa3, 0xea, 0xcc, 0xd3, 0x11, 0xe8,
0x35, 0xc9, 0x75, 0x58, 0x13, 0xa7, 0x96, 0xcc, 0x66, 0x71, 0x58, 0x94, 0x87, 0xd8, 0x5a, 0xea,
0xaa, 0x08, 0xb8, 0x24, 0x29, 0xf2, 0xad, 0x1c, 0x95, 0x73, 0x67, 0x3a, 0xb1, 0xb8, 0xe3, 0x7b,
0x6f, 0x65, 0x2d, 0x85, 0xe2, 0x50, 0xf4, 0xac, 0xc9, 0xc6, 0xd6, 0x82, 0x61, 0x95, 0x68, 0x4c,
0x45, 0xb4, 0xba, 0x7a, 0xd8, 0x59, 0xc2, 0xa2, 0x8d, 0x26, 0x98, 0xe9, 0xd2, 0x73, 0xae, 0xc2,
0x30, 0xbe, 0x82, 0xb6, 0x86, 0xf2, 0x04, 0x03, 0xd5, 0x56, 0xef, 0xa5, 0xdb, 0x58, 0x4d, 0xe2,
0x9a, 0xc6, 0x2c, 0x4e, 0xf3, 0x72, 0x84, 0xd5, 0x77, 0xdf, 0xf5, 0x19, 0xd5, 0x16, 0x30, 0x08,
0x1b, 0x3f, 0x53, 0xe4, 0x8f, 0x55, 0x66, 0xa1, 0x6d, 0x47, 0x10, 0x55, 0x8d, 0x00, 0x47, 0x58,
0xdc, 0xd2, 0x16, 0x22, 0x02, 0xf8, 0x17, 0xfe, 0x45, 0xc7, 0x71, 0x67, 0x42, 0x4d, 0xd7, 0x99,
0x38, 0xd1, 0x34, 0xe3, 0xb8, 0x58, 0xae, 0xeb, 0x5f, 0x9a, 0xe7, 0xfe, 0xd4, 0x46, 0x70, 0x85,
0x0b, 0x99, 0x6f, 0xd5, 0xf8, 0x1d, 0x39, 0x53, 0xba, 0x1c, 0x70, 0x8b, 0x87, 0x4c, 0x87, 0x7b,
0x1f, 0x1d, 0x0a, 0x61, 0x54, 0x2c, 0xed, 0x70, 0x7d, 0xde, 0x24, 0x52, 0xaa, 0x94, 0x0f, 0xaf,
0x91, 0xcf, 0x31, 0xbb, 0x58, 0x2d, 0xa4, 0xd7, 0x7a, 0x6f, 0x3b, 0x0a, 0x2f, 0x53, 0x26, 0xbc,
0xf2, 0x00, 0x40, 0xa4, 0x14, 0x8b, 0x25, 0x76, 0x21, 0x83, 0xdf, 0xe1, 0xb5, 0xe7, 0x55, 0x28,
0xab, 0x79, 0x35, 0x6e, 0x42, 0x33, 0x11, 0x40, 0xe2, 0x15, 0x68, 0x88, 0x39, 0x26, 0xa2, 0x76,
0x29, 0x0c, 0xb1, 0xe0, 0xdc, 0x9a, 0xbe, 0xa7, 0xdc, 0x4c, 0xb0, 0x21, 0xd9, 0x85, 0xba, 0x96,
0x7b, 0xfe, 0x88, 0xea, 0xd0, 0xaf, 0xe2, 0x58, 0xd1, 0xc3, 0x8a, 0xa7, 0xa2, 0xa7, 0x5c, 0xb3,
0xa6, 0x62, 0xb1, 0x9b, 0xb0, 0xa1, 0xe9, 0x2a, 0x75, 0xac, 0xd8, 0x6c, 0x0b, 0x56, 0x6d, 0x7f,
0x32, 0x71, 0x18, 0x43, 0x24, 0x4c, 0xe6, 0xfc, 0x18, 0xd1, 0x99, 0x6e, 0x6f, 0xd9, 0x8c, 0x92,
0x12, 0x9a, 0xc6, 0xaf, 0x39, 0x68, 0x89, 0x2c, 0x12, 0x65, 0xd9, 0x45, 0x9c, 0x05, 0x68, 0xff,
0x59, 0x55, 0xee, 0x43, 0x4d, 0x3a, 0xf0, 0xd1, 0x83, 0x2e, 0x4a, 0x27, 0x59, 0x94, 0xc5, 0x54,
0x24, 0x6a, 0xf2, 0x25, 0x6c, 0x68, 0xf7, 0x29, 0xd8, 0x6f, 0x43, 0x99, 0xc9, 0x14, 0xf4, 0xfb,
0xbb, 0x9e, 0x34, 0xa7, 0xd2, 0x33, 0x7e, 0xcb, 0xc3, 0x66, 0xfa, 0xbe, 0x66, 0x99, 0xaf, 0xa1,
0x95, 0x61, 0x0c, 0x45, 0x59, 0xbb, 0xc9, 0xbc, 0x53, 0x17, 0x53, 0xe2, 0xee, 0x5f, 0x39, 0x58,
0x49, 0x8a, 0x32, 0x2f, 0x63, 0x86, 0xd1, 0xf2, 0xcb, 0x1f, 0xb1, 0x42, 0xe6, 0x11, 0x2b, 0x2e,
0x7f, 0xc4, 0x4a, 0x57, 0x3c, 0x62, 0xe5, 0x68, 0xb3, 0x4c, 0x70, 0x42, 0x45, 0x9a, 0x5d, 0x00,
0x56, 0xfd, 0x04, 0x60, 0xbb, 0xb0, 0xfe, 0x0e, 0x47, 0x9a, 0xf2, 0xe7, 0xca, 0x64, 0x04, 0x37,
0xda, 0xbc, 0x74, 0xb8, 0x87, 0xad, 0x6a, 0xfa, 0x9e, 0xab, 0x56, 0xb4, 0xaa, 0xb1, 0x03, 0x1b,
0x29, 0xed, 0xc5, 0x6e, 0x10, 0xc5, 0x24, 0x34, 0x73, 0xc6, 0x36, 0x6c, 0x0d, 0xc6, 0xfe, 0xe5,
0x1b, 0xdc, 0x49, 0x31, 0xae, 0x33, 0x6b, 0xe8, 0x46, 0xa6, 0x71, 0xbd, 0xe8, 0x64, 0x8f, 0xb4,
0x1d, 0x5c, 0x25, 0xa6, 0x8a, 0x95, 0x6a, 0xf7, 0x7a, 0xd0, 0x4c, 0xc4, 0x4a, 0x2a, 0x50, 0xd8,
0x3f, 0x3a, 0xc2, 0x6d, 0xa9, 0x0e, 0x95, 0x93, 0xd3, 0x83, 0xe3, 0x57, 0xc7, 0x2f, 0x71, 0x45,
0xc2, 0x8f, 0xfe, 0xd1, 0xc9, 0x40, 0x7c, 0xe4, 0x7b, 0x7f, 0x96, 0xa1, 0x36, 0x9f, 0x35, 0xf2,
0x0d, 0x34, 0x13, 0xe1, 0x92, 0xeb, 0x1a, 0x83, 0x65, 0x29, 0x77, 0x6f, 0x2c, 0x3f, 0xd4, 0x91,
0x3d, 0x85, 0x6a, 0xb4, 0x8a, 0x92, 0xcd, 0xe5, 0x5b, 0x6f, 0x77, 0x2b, 0x23, 0xd7, 0x97, 0x9f,
0x41, 0x6d, 0xbe, 0x73, 0x92, 0xb8, 0x56, 0x7c, 0x6f, 0xed, 0x76, 0xb2, 0x07, 0xfa, 0xfe, 0x3e,
0xc0, 0x62, 0xeb, 0x23, 0x9d, 0xab, 0x56, 0xcf, 0xee, 0xf6, 0x92, 0x13, 0x6d, 0xe2, 0x05, 0xd4,
0x63, 0x4b, 0x1d, 0x89, 0x4d, 0x6f, 0x6a, 0x4b, 0xec, 0x76, 0x97, 0x1d, 0x2d, 0x12, 0x99, 0x6f,
0x00, 0x64, 0x41, 0x6e, 0xc9, 0x3d, 0x61, 0x9e, 0x48, 0x76, 0x59, 0x78, 0x0c, 0x15, 0xfd, 0xfa,
0x93, 0x0d, 0xad, 0x94, 0x5c, 0x10, 0xba, 0x9b, 0x69, 0xb1, 0xbe, 0xd9, 0x87, 0x7a, 0x8c, 0x8c,
0xe7, 0xf1, 0x67, 0x09, 0x7a, 0x5e, 0x85, 0x34, 0xeb, 0x3d, 0xcc, 0x21, 0x07, 0x34, 0xe2, 0xcf,
0x22, 0x99, 0xa7, 0x9a, 0x7d, 0x2b, 0xe7, 0x49, 0x64, 0x1e, 0x35, 0xb4, 0x73, 0x0c, 0xab, 0x49,
0x0a, 0x40, 0x42, 0xbf, 0x82, 0x44, 0x94, 0xb1, 0x9b, 0x9f, 0xa4, 0x18, 0xf2, 0x44, 0xfd, 0x8b,
0x3c, 0x55, 0xff, 0x0f, 0x09, 0x89, 0x35, 0x42, 0x64, 0x61, 0x2d, 0x21, 0x53, 0xf7, 0x76, 0x72,
0x18, 0xcb, 0x00, 0xff, 0x01, 0xa5, 0xc6, 0x89, 0xfc, 0x2f, 0x52, 0x5e, 0x3e, 0x82, 0xdd, 0xff,
0x5f, 0x79, 0xae, 0x0c, 0x0f, 0xcb, 0xf2, 0x4f, 0xee, 0xa3, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff,
0xfb, 0x5b, 0x5f, 0x9d, 0xf1, 0x0e, 0x00, 0x00,
}

@ -12,8 +12,8 @@ service Lightning {
rpc ListPeers(ListPeersRequest) returns (ListPeersResponse);
rpc GetInfo(GetInfoRequest) returns (GetInfoResponse);
rpc OpenChannel(OpenChannelRequest) returns (stream ChannelOpenUpdate);
rpc CloseChannel(CloseChannelRequest) returns (stream ChannelCloseUpdate);
rpc OpenChannel(OpenChannelRequest) returns (stream OpenStatusUpdate);
rpc CloseChannel(CloseChannelRequest) returns (stream CloseStatusUpdate);
rpc PendingChannels(PendingChannelRequest) returns (PendingChannelResponse);
rpc SendPayment(stream SendRequest) returns (stream SendResponse);
@ -159,11 +159,16 @@ message CloseChannelRequest {
}
message CloseStatusUpdate {
oneof update {
ConfirmationUpdate confirmation = 1;
ChannelCloseUpdate chan_close = 2;
PendingUpdate close_pending = 1;
ConfirmationUpdate confirmation = 2;
ChannelCloseUpdate chan_close = 3;
}
}
message PendingUpdate {
bytes txid = 1;
}
message OpenChannelRequest {
int32 target_peer_id = 1;
LightningAddress target_node = 2;
@ -177,8 +182,9 @@ message OpenChannelRequest {
}
message OpenStatusUpdate {
oneof update {
ConfirmationUpdate confirmation = 1;
ChannelOpenUpdate chan_open = 2;
PendingUpdate chan_pending = 1;
ConfirmationUpdate confirmation = 2;
ChannelOpenUpdate chan_open = 3;
}
}