From fba94af716b8f174b26f327e4240074282f27494 Mon Sep 17 00:00:00 2001 From: jtieri Date: Wed, 2 Aug 2023 13:29:22 -0500 Subject: [PATCH] update penumbra 0.57.0, pull new protos, adjust code to account for bigint and rpc changes --- chain/cosmos/sidecar.go | 2 +- chain/internal/tendermint/tendermint_node.go | 5 +- chain/penumbra/core/ibc/v1alpha1/ibc.pb.go | 200 +-- .../transaction/v1alpha1/transaction.pb.go | 1356 ++++++++++++----- chain/penumbra/penumbra_app_node.go | 7 +- chain/penumbra/penumbra_chain.go | 82 +- chain/penumbra/penumbra_client_node.go | 94 +- chain/penumbra/view/v1alpha1/view.pb.go | 633 ++++---- examples/penumbra/penumbra_chain_test.go | 2 +- go.mod | 26 +- go.sum | 55 +- 11 files changed, 1477 insertions(+), 985 deletions(-) diff --git a/chain/cosmos/sidecar.go b/chain/cosmos/sidecar.go index 7ae7aaf46..454eba45d 100644 --- a/chain/cosmos/sidecar.go +++ b/chain/cosmos/sidecar.go @@ -103,7 +103,7 @@ func (s *SidecarProcess) logger() *zap.Logger { } func (s *SidecarProcess) CreateContainer(ctx context.Context) error { - return s.containerLifecycle.CreateContainer(ctx, s.TestName, s.NetworkID, s.Image, s.ports, s.Bind(), s.HostName(), s.startCmd) + return s.containerLifecycle.CreateContainer(ctx, s.TestName, s.NetworkID, s.Image, s.ports, s.Bind(), s.HostName(), s.startCmd, nil) } func (s *SidecarProcess) StartContainer(ctx context.Context) error { diff --git a/chain/internal/tendermint/tendermint_node.go b/chain/internal/tendermint/tendermint_node.go index 71e230751..40f186127 100644 --- a/chain/internal/tendermint/tendermint_node.go +++ b/chain/internal/tendermint/tendermint_node.go @@ -55,10 +55,9 @@ func NewTendermintNode( tn.containerLifecycle = dockerutil.NewContainerLifecycle(log, dockerClient, tn.Name()) - tv, err := dockerClient.VolumeCreate(ctx, volumetypes.VolumeCreateBody{ + tv, err := dockerClient.VolumeCreate(ctx, volumetypes.CreateOptions{ Labels: map[string]string{ - dockerutil.CleanupLabel: testName, - + dockerutil.CleanupLabel: testName, dockerutil.NodeOwnerLabel: tn.Name(), }, }) diff --git a/chain/penumbra/core/ibc/v1alpha1/ibc.pb.go b/chain/penumbra/core/ibc/v1alpha1/ibc.pb.go index 2ae7380f2..375407b9a 100644 --- a/chain/penumbra/core/ibc/v1alpha1/ibc.pb.go +++ b/chain/penumbra/core/ibc/v1alpha1/ibc.pb.go @@ -168,27 +168,25 @@ func (m *FungibleTokenPacketData) GetReceiver() string { } type Ics20Withdrawal struct { - // the chain ID of the destination chain for this ICS20 transfer - DestinationChainId string `protobuf:"bytes,1,opt,name=destination_chain_id,json=destinationChainId,proto3" json:"destination_chain_id,omitempty"` - Amount *v1alpha1.Amount `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` - Denom *v1alpha1.Denom `protobuf:"bytes,3,opt,name=denom,proto3" json:"denom,omitempty"` + Amount *v1alpha1.Amount `protobuf:"bytes,1,opt,name=amount,proto3" json:"amount,omitempty"` + Denom *v1alpha1.Denom `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` // the address on the destination chain to send the transfer to - DestinationChainAddress string `protobuf:"bytes,4,opt,name=destination_chain_address,json=destinationChainAddress,proto3" json:"destination_chain_address,omitempty"` + DestinationChainAddress string `protobuf:"bytes,3,opt,name=destination_chain_address,json=destinationChainAddress,proto3" json:"destination_chain_address,omitempty"` // a "sender" penumbra address to use to return funds from this withdrawal. // this should be an ephemeral address - ReturnAddress *v1alpha1.Address `protobuf:"bytes,5,opt,name=return_address,json=returnAddress,proto3" json:"return_address,omitempty"` + ReturnAddress *v1alpha1.Address `protobuf:"bytes,4,opt,name=return_address,json=returnAddress,proto3" json:"return_address,omitempty"` // the height (on Penumbra) at which this transfer expires (and funds are sent // back to the sender address?). NOTE: if funds are sent back to the sender, // we MUST verify a nonexistence proof before accepting the timeout, to // prevent relayer censorship attacks. The core IBC implementation does this // in its handling of validation of timeouts. - TimeoutHeight uint64 `protobuf:"varint,6,opt,name=timeout_height,json=timeoutHeight,proto3" json:"timeout_height,omitempty"` + TimeoutHeight uint64 `protobuf:"varint,5,opt,name=timeout_height,json=timeoutHeight,proto3" json:"timeout_height,omitempty"` // the timestamp at which this transfer expires. - TimeoutTime uint64 `protobuf:"varint,7,opt,name=timeout_time,json=timeoutTime,proto3" json:"timeout_time,omitempty"` + TimeoutTime uint64 `protobuf:"varint,6,opt,name=timeout_time,json=timeoutTime,proto3" json:"timeout_time,omitempty"` // the source port that identifies the channel used for the withdrawal - SourcePort string `protobuf:"bytes,8,opt,name=source_port,json=sourcePort,proto3" json:"source_port,omitempty"` + SourcePort string `protobuf:"bytes,7,opt,name=source_port,json=sourcePort,proto3" json:"source_port,omitempty"` // the source channel used for the withdrawal - SourceChannel string `protobuf:"bytes,9,opt,name=source_channel,json=sourceChannel,proto3" json:"source_channel,omitempty"` + SourceChannel string `protobuf:"bytes,8,opt,name=source_channel,json=sourceChannel,proto3" json:"source_channel,omitempty"` } func (m *Ics20Withdrawal) Reset() { *m = Ics20Withdrawal{} } @@ -224,13 +222,6 @@ func (m *Ics20Withdrawal) XXX_DiscardUnknown() { var xxx_messageInfo_Ics20Withdrawal proto.InternalMessageInfo -func (m *Ics20Withdrawal) GetDestinationChainId() string { - if m != nil { - return m.DestinationChainId - } - return "" -} - func (m *Ics20Withdrawal) GetAmount() *v1alpha1.Amount { if m != nil { return m.Amount @@ -592,58 +583,58 @@ func init() { } var fileDescriptor_6509740287584c65 = []byte{ - // 815 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x54, 0x41, 0x6f, 0x1b, 0x45, - 0x14, 0xce, 0xda, 0x69, 0x12, 0x8f, 0xeb, 0x84, 0xae, 0x22, 0xba, 0x35, 0xc2, 0x0d, 0xab, 0xb6, - 0x4a, 0x91, 0xba, 0xdb, 0xb8, 0xa0, 0x4a, 0x8b, 0x2a, 0xe1, 0x6c, 0x45, 0xd9, 0x43, 0x85, 0x65, - 0xaa, 0x22, 0x21, 0x0b, 0x6b, 0x76, 0xf6, 0xd5, 0x1e, 0xd5, 0x9e, 0xb1, 0x66, 0x66, 0x1d, 0x45, - 0xfc, 0x09, 0x7e, 0x03, 0x47, 0x24, 0x6e, 0xfc, 0x08, 0xc4, 0xa9, 0x47, 0x24, 0x2e, 0xc8, 0xb9, - 0xf1, 0x2b, 0xd0, 0xcc, 0xec, 0xd8, 0x31, 0x10, 0x72, 0xf2, 0xbe, 0xef, 0xfb, 0xde, 0xf3, 0xf7, - 0xde, 0xbc, 0x19, 0x74, 0x6f, 0x0e, 0xac, 0x9c, 0xe5, 0x02, 0xc7, 0x84, 0x0b, 0x88, 0x69, 0x4e, - 0xe2, 0xc5, 0x09, 0x9e, 0xce, 0x27, 0xf8, 0x44, 0x07, 0xd1, 0x5c, 0x70, 0xc5, 0xfd, 0xb6, 0x53, - 0x45, 0x5a, 0x15, 0x69, 0xc2, 0xa9, 0xda, 0x1f, 0x6f, 0x56, 0x20, 0xe2, 0x7c, 0xae, 0xf8, 0xba, - 0x88, 0x8d, 0x6d, 0x9d, 0xf6, 0x5d, 0x5d, 0xdf, 0xca, 0xa6, 0x14, 0x98, 0x8a, 0x17, 0x27, 0xd5, - 0x57, 0x25, 0xb8, 0x33, 0xe6, 0x7c, 0x3c, 0x85, 0xd8, 0x44, 0x79, 0xf9, 0x26, 0xc6, 0xec, 0xdc, - 0x52, 0xe1, 0xe7, 0xa8, 0x91, 0xe5, 0xa4, 0x47, 0x14, 0xe5, 0xcc, 0x7f, 0x82, 0x90, 0xc0, 0x67, - 0x23, 0x6c, 0xa2, 0xc0, 0x3b, 0xf2, 0x8e, 0x9b, 0xdd, 0xc3, 0xc8, 0x26, 0x47, 0x2e, 0x39, 0xea, - 0xb1, 0xf3, 0x41, 0x43, 0xe0, 0x33, 0x9b, 0x14, 0x7e, 0x8f, 0x6e, 0x7f, 0x51, 0xb2, 0x31, 0xcd, - 0xa7, 0xf0, 0x8a, 0xbf, 0x05, 0xd6, 0xc7, 0xe4, 0x2d, 0xa8, 0xe7, 0x58, 0x61, 0xff, 0x10, 0xdd, - 0x28, 0x80, 0xf1, 0x99, 0x29, 0xd5, 0x18, 0xd8, 0xc0, 0x7f, 0x1f, 0xed, 0xe0, 0x19, 0x2f, 0x99, - 0x0a, 0x6a, 0x06, 0xae, 0x22, 0x8d, 0x4b, 0x60, 0x05, 0x88, 0xa0, 0x6e, 0x71, 0x1b, 0xf9, 0x6d, - 0xb4, 0x27, 0x80, 0x00, 0x5d, 0x80, 0x08, 0xb6, 0x0d, 0xb3, 0x8a, 0xc3, 0x3f, 0xea, 0xe8, 0x20, - 0x23, 0xb2, 0xfb, 0xf8, 0x1b, 0xaa, 0x26, 0x85, 0xc0, 0x67, 0x78, 0xea, 0x3f, 0x46, 0x87, 0x05, - 0x48, 0x45, 0x19, 0xd6, 0xfe, 0x46, 0x64, 0x82, 0x29, 0x1b, 0xd1, 0xa2, 0x32, 0xe1, 0x5f, 0xe2, - 0x52, 0x4d, 0x65, 0x85, 0xff, 0x6c, 0xc3, 0x51, 0xb3, 0x7b, 0x3f, 0xda, 0x3c, 0x99, 0x6a, 0xda, - 0x6e, 0xfa, 0x51, 0xcf, 0x88, 0x57, 0xc6, 0x13, 0xd7, 0x66, 0xdd, 0x64, 0xdf, 0xbb, 0x26, 0xfb, - 0xb9, 0xd6, 0xba, 0x61, 0x24, 0xe8, 0xce, 0xbf, 0xcd, 0xe2, 0xa2, 0x10, 0x20, 0x65, 0xd5, 0xed, - 0xed, 0x7f, 0x3a, 0xee, 0x59, 0xda, 0x7f, 0x89, 0xf6, 0x05, 0xa8, 0x52, 0xac, 0x13, 0x6e, 0x18, - 0x03, 0x0f, 0xae, 0xb3, 0x6f, 0xd5, 0x83, 0x96, 0xcd, 0x76, 0xe5, 0xee, 0xa3, 0x7d, 0x45, 0x67, - 0xc0, 0x4b, 0x35, 0x9a, 0x00, 0x1d, 0x4f, 0x54, 0xb0, 0x73, 0xe4, 0x1d, 0x6f, 0x0f, 0x5a, 0x15, - 0xfa, 0xa5, 0x01, 0xfd, 0x8f, 0xd0, 0x4d, 0x27, 0xd3, 0xbf, 0xc1, 0xae, 0x11, 0x35, 0x2b, 0xec, - 0x15, 0x9d, 0x81, 0x7f, 0x17, 0x35, 0x25, 0x2f, 0x05, 0x81, 0xd1, 0x9c, 0x0b, 0x15, 0xec, 0x99, - 0x36, 0x90, 0x85, 0xfa, 0x5c, 0x28, 0xfd, 0x57, 0x95, 0x80, 0x4c, 0x30, 0x63, 0x30, 0x0d, 0x1a, - 0x46, 0xd3, 0xb2, 0x68, 0x6a, 0xc1, 0xf0, 0x17, 0x0f, 0xa1, 0xd4, 0x2c, 0xb2, 0x59, 0xa7, 0x0f, - 0x50, 0xc3, 0xae, 0xf5, 0xfa, 0x34, 0xf7, 0x2c, 0x90, 0x15, 0xfe, 0x53, 0x74, 0xb3, 0x22, 0xa5, - 0xc2, 0x0a, 0xaa, 0x93, 0xfc, 0xef, 0xed, 0x6d, 0x5a, 0xe5, 0xd7, 0x5a, 0xa8, 0xbd, 0xcc, 0x05, - 0x27, 0x20, 0x25, 0x14, 0xb6, 0x23, 0xbb, 0x7e, 0xad, 0x15, 0x6a, 0x7a, 0x7a, 0x88, 0xde, 0x5b, - 0xcb, 0xaa, 0xf9, 0x6c, 0x9b, 0xd6, 0x0f, 0x56, 0xb8, 0x9d, 0x50, 0xf8, 0x10, 0xb5, 0xac, 0xeb, - 0x54, 0xaf, 0x07, 0x08, 0x3f, 0x40, 0xbb, 0xc4, 0x7e, 0x1a, 0xdb, 0xdb, 0x03, 0x17, 0x86, 0x5f, - 0xa1, 0xfd, 0x94, 0x33, 0x09, 0x4c, 0x96, 0xd2, 0xda, 0x79, 0x86, 0x0e, 0x88, 0x43, 0xaa, 0x56, - 0xfe, 0xef, 0x22, 0xee, 0x93, 0x8d, 0xf4, 0xf0, 0x05, 0x3a, 0x78, 0x0d, 0x82, 0xbe, 0xa1, 0xce, - 0x8d, 0xf4, 0x3f, 0x41, 0xbb, 0xd6, 0xaf, 0x0c, 0xbc, 0xa3, 0xfa, 0x71, 0xb3, 0xdb, 0x36, 0x4f, - 0x8d, 0x5d, 0x0d, 0xfb, 0x4c, 0x2c, 0x4e, 0x22, 0xab, 0x1e, 0x38, 0x69, 0xf8, 0x08, 0xdd, 0x4a, - 0x39, 0x63, 0x60, 0x2e, 0xf9, 0xf5, 0x8d, 0x7c, 0x8a, 0x6e, 0xb9, 0x9e, 0x5d, 0x92, 0xf4, 0x8f, - 0x50, 0x93, 0xac, 0x43, 0xf3, 0xef, 0x8d, 0xc1, 0x65, 0xe8, 0xf4, 0xe7, 0xda, 0xaf, 0xcb, 0x8e, - 0xf7, 0x6e, 0xd9, 0xf1, 0xfe, 0x5c, 0x76, 0xbc, 0x1f, 0x2e, 0x3a, 0x5b, 0xef, 0x2e, 0x3a, 0x5b, - 0xbf, 0x5f, 0x74, 0xb6, 0x50, 0x87, 0xf0, 0x59, 0x74, 0xf5, 0x0b, 0x79, 0xba, 0x97, 0xe5, 0xa4, - 0xaf, 0x47, 0xd1, 0xf7, 0xbe, 0xfd, 0x6e, 0x4c, 0xd5, 0xa4, 0xcc, 0x23, 0xc2, 0x67, 0xb1, 0x54, - 0x02, 0xb3, 0x31, 0x4c, 0xf9, 0x02, 0x1e, 0x2d, 0x80, 0xa9, 0x52, 0x80, 0x8c, 0xa9, 0x36, 0x69, - 0x2e, 0x97, 0x02, 0xa9, 0xe2, 0xc5, 0xd3, 0xd8, 0x04, 0xf1, 0xd5, 0xef, 0xf4, 0x67, 0x34, 0x27, - 0xee, 0xfb, 0xc7, 0x5a, 0xbd, 0x9f, 0x66, 0x3f, 0xd5, 0xda, 0x7d, 0x67, 0x27, 0xd5, 0x76, 0xb2, - 0x9c, 0x44, 0xaf, 0x2b, 0xc9, 0x6f, 0x6b, 0x72, 0xa8, 0xc9, 0x61, 0x96, 0x93, 0xa1, 0x23, 0x97, - 0xb5, 0x07, 0x57, 0x93, 0xc3, 0x17, 0xfd, 0xd3, 0x97, 0xa0, 0x70, 0x81, 0x15, 0xfe, 0xab, 0xf6, - 0xa1, 0x13, 0x26, 0x89, 0x56, 0x26, 0x49, 0x96, 0x93, 0x24, 0x71, 0xda, 0x7c, 0xc7, 0x1c, 0xfe, - 0x93, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x23, 0xcd, 0xf1, 0x07, 0x61, 0x06, 0x00, 0x00, + // 801 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x54, 0x41, 0x6b, 0x1b, 0x47, + 0x14, 0xf6, 0xca, 0x8a, 0x6d, 0x8d, 0x22, 0xab, 0x59, 0x42, 0xb3, 0x51, 0xa9, 0xa2, 0x2e, 0x49, + 0x70, 0x0a, 0xd9, 0xad, 0x9c, 0x96, 0xc0, 0x96, 0x40, 0xe5, 0x0d, 0x4d, 0xf7, 0x10, 0x2a, 0xd4, + 0x90, 0x42, 0x11, 0x15, 0xb3, 0xb3, 0x2f, 0xd2, 0x10, 0x69, 0x46, 0xcc, 0xcc, 0xca, 0x98, 0xfe, + 0x89, 0xfe, 0x86, 0xde, 0x5a, 0xe8, 0xad, 0x3f, 0xa2, 0xf4, 0x94, 0x63, 0x8f, 0x45, 0xbe, 0xf5, + 0x57, 0x94, 0x99, 0xd9, 0x91, 0x6c, 0xa8, 0xe3, 0x93, 0xe6, 0xfb, 0xde, 0xf7, 0x9e, 0xbe, 0xf7, + 0xf6, 0xcd, 0xa0, 0xfb, 0x4b, 0x60, 0xe5, 0x22, 0x17, 0x38, 0x26, 0x5c, 0x40, 0x4c, 0x73, 0x12, + 0xaf, 0xfa, 0x78, 0xbe, 0x9c, 0xe1, 0xbe, 0x06, 0xd1, 0x52, 0x70, 0xc5, 0xfd, 0x8e, 0x53, 0x45, + 0x5a, 0x15, 0xe9, 0x80, 0x53, 0x75, 0x3e, 0xbd, 0x5c, 0x81, 0x88, 0xb3, 0xa5, 0xe2, 0xdb, 0x22, + 0x16, 0xdb, 0x3a, 0x9d, 0x7b, 0xba, 0xbe, 0x95, 0xcd, 0x29, 0x30, 0x15, 0xaf, 0xfa, 0xd5, 0xa9, + 0x12, 0xdc, 0x9d, 0x72, 0x3e, 0x9d, 0x43, 0x6c, 0x50, 0x5e, 0xbe, 0x89, 0x31, 0x3b, 0xb3, 0xa1, + 0xf0, 0x2b, 0xd4, 0xc8, 0x72, 0x32, 0x20, 0x8a, 0x72, 0xe6, 0x3f, 0x41, 0x48, 0xe0, 0xd3, 0x09, + 0x36, 0x28, 0xf0, 0x7a, 0xde, 0x51, 0xf3, 0xf8, 0x76, 0x64, 0x93, 0x23, 0x97, 0x1c, 0x0d, 0xd8, + 0xd9, 0xa8, 0x21, 0xf0, 0xa9, 0x4d, 0x0a, 0x7f, 0x42, 0x77, 0xbe, 0x2e, 0xd9, 0x94, 0xe6, 0x73, + 0x78, 0xc5, 0xdf, 0x02, 0x1b, 0x62, 0xf2, 0x16, 0xd4, 0x73, 0xac, 0xb0, 0x7f, 0x1b, 0xdd, 0x28, + 0x80, 0xf1, 0x85, 0x29, 0xd5, 0x18, 0x59, 0xe0, 0x7f, 0x88, 0xf6, 0xf0, 0x82, 0x97, 0x4c, 0x05, + 0x35, 0x43, 0x57, 0x48, 0xf3, 0x12, 0x58, 0x01, 0x22, 0xd8, 0xb5, 0xbc, 0x45, 0x7e, 0x07, 0x1d, + 0x08, 0x20, 0x40, 0x57, 0x20, 0x82, 0xba, 0x89, 0x6c, 0x70, 0xf8, 0xeb, 0x2e, 0x6a, 0x67, 0x44, + 0x1e, 0x7f, 0xf6, 0x3d, 0x55, 0xb3, 0x42, 0xe0, 0x53, 0x3c, 0xf7, 0x9f, 0x6d, 0xea, 0xdb, 0x0e, + 0x1e, 0x44, 0x97, 0xe7, 0x5c, 0xcd, 0xce, 0xcd, 0x32, 0x1a, 0x18, 0xf1, 0xc6, 0x46, 0xe2, 0x4c, + 0xd7, 0x4c, 0xf6, 0xfd, 0x6b, 0xb2, 0x9f, 0x6b, 0xad, 0x6b, 0x2d, 0x41, 0x77, 0x0b, 0x90, 0x8a, + 0x32, 0xac, 0x47, 0x33, 0x21, 0x33, 0x4c, 0xd9, 0x04, 0x17, 0x85, 0x00, 0x29, 0xab, 0xae, 0xee, + 0x5c, 0x10, 0xa4, 0x3a, 0x3e, 0xb0, 0x61, 0xff, 0x25, 0x3a, 0x14, 0xa0, 0x4a, 0xb1, 0x4d, 0xa8, + 0x1b, 0x03, 0x0f, 0xaf, 0xb3, 0x6f, 0xd5, 0xa3, 0x96, 0xcd, 0x76, 0xe5, 0x1e, 0xa0, 0x43, 0x45, + 0x17, 0xc0, 0x4b, 0x35, 0x99, 0x01, 0x9d, 0xce, 0x54, 0x70, 0xa3, 0xe7, 0x1d, 0xd5, 0x47, 0xad, + 0x8a, 0xfd, 0xc6, 0x90, 0xfe, 0x27, 0xe8, 0xa6, 0x93, 0xe9, 0xdf, 0x60, 0xcf, 0x88, 0x9a, 0x15, + 0xf7, 0x8a, 0x2e, 0xc0, 0xbf, 0x87, 0x9a, 0x92, 0x97, 0x82, 0xc0, 0x64, 0xc9, 0x85, 0x0a, 0xf6, + 0x4d, 0x1b, 0xc8, 0x52, 0x43, 0x2e, 0x94, 0xfe, 0xab, 0x4a, 0x40, 0x66, 0x98, 0x31, 0x98, 0x07, + 0x07, 0x46, 0xd3, 0xb2, 0x6c, 0x6a, 0xc9, 0xf0, 0x0f, 0x0f, 0xa1, 0xd4, 0xac, 0xa5, 0x59, 0x8e, + 0x8f, 0x50, 0xc3, 0x2e, 0xe9, 0x84, 0x16, 0xd5, 0x82, 0x1c, 0x58, 0x22, 0x2b, 0xfc, 0xa7, 0xe8, + 0x66, 0x15, 0x94, 0x0a, 0x2b, 0xa8, 0xbe, 0xc5, 0xff, 0xef, 0x62, 0xd3, 0x2a, 0xbf, 0xd3, 0x42, + 0xed, 0x65, 0x29, 0x38, 0x01, 0x29, 0xa1, 0xb0, 0x1d, 0xd9, 0xb1, 0xb7, 0x36, 0xac, 0xe9, 0xe9, + 0x11, 0xfa, 0x60, 0x2b, 0xab, 0xe6, 0x53, 0x37, 0xad, 0xb7, 0x37, 0xbc, 0x9d, 0x50, 0xf8, 0x08, + 0xb5, 0xac, 0xeb, 0x54, 0xaf, 0x07, 0x08, 0x3f, 0x40, 0xfb, 0xc4, 0x1e, 0x8d, 0xed, 0xfa, 0xc8, + 0xc1, 0xf0, 0x5b, 0x74, 0x98, 0x72, 0x26, 0x81, 0xc9, 0x52, 0x5a, 0x3b, 0xcf, 0x50, 0x9b, 0x38, + 0xa6, 0x6a, 0xe5, 0x7d, 0xd7, 0xea, 0x90, 0x5c, 0x4a, 0x0f, 0x5f, 0xa0, 0xf6, 0x6b, 0x10, 0xf4, + 0x0d, 0x75, 0x6e, 0xa4, 0xff, 0x39, 0xda, 0xb7, 0x7e, 0x65, 0xe0, 0xf5, 0x76, 0x8f, 0x9a, 0xc7, + 0x1d, 0xf3, 0x70, 0xd8, 0xd5, 0xb0, 0x97, 0x7e, 0xd5, 0x8f, 0xac, 0x7a, 0xe4, 0xa4, 0xe1, 0x63, + 0x74, 0x2b, 0xe5, 0x8c, 0x81, 0xb9, 0xb2, 0xd7, 0x37, 0xf2, 0x05, 0xba, 0xe5, 0x7a, 0x76, 0x49, + 0xd2, 0xef, 0xa1, 0x26, 0xd9, 0x42, 0xf3, 0xef, 0x8d, 0xd1, 0x45, 0xea, 0xe4, 0xf7, 0xda, 0x9f, + 0xeb, 0xae, 0xf7, 0x6e, 0xdd, 0xf5, 0xfe, 0x59, 0x77, 0xbd, 0x9f, 0xcf, 0xbb, 0x3b, 0xef, 0xce, + 0xbb, 0x3b, 0x7f, 0x9f, 0x77, 0x77, 0x50, 0x97, 0xf0, 0x45, 0x74, 0xf5, 0x7b, 0x77, 0x72, 0x90, + 0xe5, 0x64, 0xa8, 0x47, 0x31, 0xf4, 0x7e, 0xf8, 0x71, 0x4a, 0xd5, 0xac, 0xcc, 0x23, 0xc2, 0x17, + 0xb1, 0x54, 0x02, 0xb3, 0x29, 0xcc, 0xf9, 0x0a, 0x1e, 0xaf, 0x80, 0xa9, 0x52, 0x80, 0x8c, 0xa9, + 0x36, 0x69, 0x2e, 0x97, 0x02, 0xa9, 0xe2, 0xd5, 0xd3, 0xd8, 0x80, 0xf8, 0xea, 0x57, 0xf7, 0x4b, + 0x9a, 0x13, 0x77, 0xfe, 0xa5, 0xb6, 0x3b, 0x4c, 0xb3, 0xdf, 0x6a, 0x9d, 0xa1, 0xb3, 0x93, 0x6a, + 0x3b, 0x59, 0x4e, 0xa2, 0xd7, 0x95, 0xe4, 0xaf, 0x6d, 0x70, 0xac, 0x83, 0xe3, 0x2c, 0x27, 0x63, + 0x17, 0x5c, 0xd7, 0x1e, 0x5e, 0x1d, 0x1c, 0xbf, 0x18, 0x9e, 0xbc, 0x04, 0x85, 0x0b, 0xac, 0xf0, + 0xbf, 0xb5, 0x8f, 0x9d, 0x30, 0x49, 0xb4, 0x32, 0x49, 0xb2, 0x9c, 0x24, 0x89, 0xd3, 0xe6, 0x7b, + 0xe6, 0xe3, 0x3f, 0xf9, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x99, 0xfa, 0x74, 0xd2, 0x2f, 0x06, 0x00, + 0x00, } func (m *IbcAction) Marshal() (dAtA []byte, err error) { @@ -757,24 +748,24 @@ func (m *Ics20Withdrawal) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.SourceChannel) i = encodeVarintIbc(dAtA, i, uint64(len(m.SourceChannel))) i-- - dAtA[i] = 0x4a + dAtA[i] = 0x42 } if len(m.SourcePort) > 0 { i -= len(m.SourcePort) copy(dAtA[i:], m.SourcePort) i = encodeVarintIbc(dAtA, i, uint64(len(m.SourcePort))) i-- - dAtA[i] = 0x42 + dAtA[i] = 0x3a } if m.TimeoutTime != 0 { i = encodeVarintIbc(dAtA, i, uint64(m.TimeoutTime)) i-- - dAtA[i] = 0x38 + dAtA[i] = 0x30 } if m.TimeoutHeight != 0 { i = encodeVarintIbc(dAtA, i, uint64(m.TimeoutHeight)) i-- - dAtA[i] = 0x30 + dAtA[i] = 0x28 } if m.ReturnAddress != nil { { @@ -786,14 +777,14 @@ func (m *Ics20Withdrawal) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintIbc(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x2a + dAtA[i] = 0x22 } if len(m.DestinationChainAddress) > 0 { i -= len(m.DestinationChainAddress) copy(dAtA[i:], m.DestinationChainAddress) i = encodeVarintIbc(dAtA, i, uint64(len(m.DestinationChainAddress))) i-- - dAtA[i] = 0x22 + dAtA[i] = 0x1a } if m.Denom != nil { { @@ -805,7 +796,7 @@ func (m *Ics20Withdrawal) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintIbc(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x1a + dAtA[i] = 0x12 } if m.Amount != nil { { @@ -817,13 +808,6 @@ func (m *Ics20Withdrawal) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintIbc(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x12 - } - if len(m.DestinationChainId) > 0 { - i -= len(m.DestinationChainId) - copy(dAtA[i:], m.DestinationChainId) - i = encodeVarintIbc(dAtA, i, uint64(len(m.DestinationChainId))) - i-- dAtA[i] = 0xa } return len(dAtA) - i, nil @@ -1098,10 +1082,6 @@ func (m *Ics20Withdrawal) Size() (n int) { } var l int _ = l - l = len(m.DestinationChainId) - if l > 0 { - n += 1 + l + sovIbc(uint64(l)) - } if m.Amount != nil { l = m.Amount.Size() n += 1 + l + sovIbc(uint64(l)) @@ -1526,38 +1506,6 @@ func (m *Ics20Withdrawal) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DestinationChainId", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowIbc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthIbc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthIbc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.DestinationChainId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) } @@ -1593,7 +1541,7 @@ func (m *Ics20Withdrawal) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 3: + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) } @@ -1629,7 +1577,7 @@ func (m *Ics20Withdrawal) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 4: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field DestinationChainAddress", wireType) } @@ -1661,7 +1609,7 @@ func (m *Ics20Withdrawal) Unmarshal(dAtA []byte) error { } m.DestinationChainAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ReturnAddress", wireType) } @@ -1697,7 +1645,7 @@ func (m *Ics20Withdrawal) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 6: + case 5: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field TimeoutHeight", wireType) } @@ -1716,7 +1664,7 @@ func (m *Ics20Withdrawal) Unmarshal(dAtA []byte) error { break } } - case 7: + case 6: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field TimeoutTime", wireType) } @@ -1735,7 +1683,7 @@ func (m *Ics20Withdrawal) Unmarshal(dAtA []byte) error { break } } - case 8: + case 7: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field SourcePort", wireType) } @@ -1767,7 +1715,7 @@ func (m *Ics20Withdrawal) Unmarshal(dAtA []byte) error { } m.SourcePort = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 9: + case 8: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field SourceChannel", wireType) } diff --git a/chain/penumbra/core/transaction/v1alpha1/transaction.pb.go b/chain/penumbra/core/transaction/v1alpha1/transaction.pb.go index 8b7e2b948..e37ad6a7a 100644 --- a/chain/penumbra/core/transaction/v1alpha1/transaction.pb.go +++ b/chain/penumbra/core/transaction/v1alpha1/transaction.pb.go @@ -184,20 +184,14 @@ func (m *EffectHash) GetInner() []byte { type TransactionBody struct { // A list of actions (state changes) performed by this transaction. Actions []*Action `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"` - // The maximum height that this transaction can be included in the chain. - // - // If zero, there is no maximum. - ExpiryHeight uint64 `protobuf:"varint,2,opt,name=expiry_height,json=expiryHeight,proto3" json:"expiry_height,omitempty"` - // The chain this transaction is intended for. Including this prevents - // replaying a transaction on one chain onto a different chain. - ChainId string `protobuf:"bytes,3,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + // Parameters determining if a transaction should be accepted by this chain. + TransactionParameters *TransactionParameters `protobuf:"bytes,2,opt,name=transaction_parameters,json=transactionParameters,proto3" json:"transaction_parameters,omitempty"` // The transaction fee. - Fee *v1alpha1.Fee `protobuf:"bytes,4,opt,name=fee,proto3" json:"fee,omitempty"` - // A list of clues for use with Fuzzy Message Detection. - FmdClues []*v1alpha1.Clue `protobuf:"bytes,5,rep,name=fmd_clues,json=fmdClues,proto3" json:"fmd_clues,omitempty"` - // Types that are valid to be assigned to XEncryptedMemo: - // *TransactionBody_EncryptedMemo - XEncryptedMemo isTransactionBody_XEncryptedMemo `protobuf_oneof:"_encrypted_memo"` + Fee *v1alpha1.Fee `protobuf:"bytes,3,opt,name=fee,proto3" json:"fee,omitempty"` + // Detection data for use with Fuzzy Message Detection + DetectionData *DetectionData `protobuf:"bytes,4,opt,name=detection_data,json=detectionData,proto3" json:"detection_data,omitempty"` + // Sub-message containing memo ciphertext if a memo was added to the transaction. + MemoData *MemoData `protobuf:"bytes,5,opt,name=memo_data,json=memoData,proto3" json:"memo_data,omitempty"` } func (m *TransactionBody) Reset() { *m = TransactionBody{} } @@ -233,72 +227,216 @@ func (m *TransactionBody) XXX_DiscardUnknown() { var xxx_messageInfo_TransactionBody proto.InternalMessageInfo -type isTransactionBody_XEncryptedMemo interface { - isTransactionBody_XEncryptedMemo() - MarshalTo([]byte) (int, error) - Size() int -} - -type TransactionBody_EncryptedMemo struct { - EncryptedMemo []byte `protobuf:"bytes,6,opt,name=encrypted_memo,json=encryptedMemo,proto3,oneof" json:"encrypted_memo,omitempty"` -} - -func (*TransactionBody_EncryptedMemo) isTransactionBody_XEncryptedMemo() {} - -func (m *TransactionBody) GetXEncryptedMemo() isTransactionBody_XEncryptedMemo { +func (m *TransactionBody) GetActions() []*Action { if m != nil { - return m.XEncryptedMemo + return m.Actions } return nil } -func (m *TransactionBody) GetActions() []*Action { +func (m *TransactionBody) GetTransactionParameters() *TransactionParameters { if m != nil { - return m.Actions + return m.TransactionParameters } return nil } -func (m *TransactionBody) GetExpiryHeight() uint64 { +func (m *TransactionBody) GetFee() *v1alpha1.Fee { if m != nil { - return m.ExpiryHeight + return m.Fee } - return 0 + return nil } -func (m *TransactionBody) GetChainId() string { +func (m *TransactionBody) GetDetectionData() *DetectionData { if m != nil { - return m.ChainId + return m.DetectionData } - return "" + return nil } -func (m *TransactionBody) GetFee() *v1alpha1.Fee { +func (m *TransactionBody) GetMemoData() *MemoData { if m != nil { - return m.Fee + return m.MemoData } return nil } -func (m *TransactionBody) GetFmdClues() []*v1alpha1.Clue { +// Represents the encrypted memo data. +type MemoData struct { + // Types that are valid to be assigned to XEncryptedMemo: + // *MemoData_EncryptedMemo + XEncryptedMemo isMemoData_XEncryptedMemo `protobuf_oneof:"_encrypted_memo"` +} + +func (m *MemoData) Reset() { *m = MemoData{} } +func (m *MemoData) String() string { return proto.CompactTextString(m) } +func (*MemoData) ProtoMessage() {} +func (*MemoData) Descriptor() ([]byte, []int) { + return fileDescriptor_cd20ea79758052c4, []int{4} +} +func (m *MemoData) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MemoData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MemoData.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MemoData) XXX_Merge(src proto.Message) { + xxx_messageInfo_MemoData.Merge(m, src) +} +func (m *MemoData) XXX_Size() int { + return m.Size() +} +func (m *MemoData) XXX_DiscardUnknown() { + xxx_messageInfo_MemoData.DiscardUnknown(m) +} + +var xxx_messageInfo_MemoData proto.InternalMessageInfo + +type isMemoData_XEncryptedMemo interface { + isMemoData_XEncryptedMemo() + MarshalTo([]byte) (int, error) + Size() int +} + +type MemoData_EncryptedMemo struct { + EncryptedMemo []byte `protobuf:"bytes,1,opt,name=encrypted_memo,json=encryptedMemo,proto3,oneof" json:"encrypted_memo,omitempty"` +} + +func (*MemoData_EncryptedMemo) isMemoData_XEncryptedMemo() {} + +func (m *MemoData) GetXEncryptedMemo() isMemoData_XEncryptedMemo { if m != nil { - return m.FmdClues + return m.XEncryptedMemo } return nil } -func (m *TransactionBody) GetEncryptedMemo() []byte { - if x, ok := m.GetXEncryptedMemo().(*TransactionBody_EncryptedMemo); ok { +func (m *MemoData) GetEncryptedMemo() []byte { + if x, ok := m.GetXEncryptedMemo().(*MemoData_EncryptedMemo); ok { return x.EncryptedMemo } return nil } // XXX_OneofWrappers is for the internal use of the proto package. -func (*TransactionBody) XXX_OneofWrappers() []interface{} { +func (*MemoData) XXX_OneofWrappers() []interface{} { return []interface{}{ - (*TransactionBody_EncryptedMemo)(nil), + (*MemoData_EncryptedMemo)(nil), + } +} + +// The parameters determining if a transaction should be accepted by the chain. +type TransactionParameters struct { + // The maximum height that this transaction can be included in the chain. + // + // If zero, there is no maximum. + ExpiryHeight uint64 `protobuf:"varint,1,opt,name=expiry_height,json=expiryHeight,proto3" json:"expiry_height,omitempty"` + // The chain this transaction is intended for. Including this prevents + // replaying a transaction on one chain onto a different chain. + ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` +} + +func (m *TransactionParameters) Reset() { *m = TransactionParameters{} } +func (m *TransactionParameters) String() string { return proto.CompactTextString(m) } +func (*TransactionParameters) ProtoMessage() {} +func (*TransactionParameters) Descriptor() ([]byte, []int) { + return fileDescriptor_cd20ea79758052c4, []int{5} +} +func (m *TransactionParameters) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TransactionParameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TransactionParameters.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TransactionParameters) XXX_Merge(src proto.Message) { + xxx_messageInfo_TransactionParameters.Merge(m, src) +} +func (m *TransactionParameters) XXX_Size() int { + return m.Size() +} +func (m *TransactionParameters) XXX_DiscardUnknown() { + xxx_messageInfo_TransactionParameters.DiscardUnknown(m) +} + +var xxx_messageInfo_TransactionParameters proto.InternalMessageInfo + +func (m *TransactionParameters) GetExpiryHeight() uint64 { + if m != nil { + return m.ExpiryHeight + } + return 0 +} + +func (m *TransactionParameters) GetChainId() string { + if m != nil { + return m.ChainId + } + return "" +} + +// Detection data used by a detection server performing Fuzzy Message Detection. +type DetectionData struct { + // A list of clues for use with Fuzzy Message Detection. + FmdClues []*v1alpha1.Clue `protobuf:"bytes,4,rep,name=fmd_clues,json=fmdClues,proto3" json:"fmd_clues,omitempty"` +} + +func (m *DetectionData) Reset() { *m = DetectionData{} } +func (m *DetectionData) String() string { return proto.CompactTextString(m) } +func (*DetectionData) ProtoMessage() {} +func (*DetectionData) Descriptor() ([]byte, []int) { + return fileDescriptor_cd20ea79758052c4, []int{6} +} +func (m *DetectionData) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DetectionData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DetectionData.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *DetectionData) XXX_Merge(src proto.Message) { + xxx_messageInfo_DetectionData.Merge(m, src) +} +func (m *DetectionData) XXX_Size() int { + return m.Size() +} +func (m *DetectionData) XXX_DiscardUnknown() { + xxx_messageInfo_DetectionData.DiscardUnknown(m) +} + +var xxx_messageInfo_DetectionData proto.InternalMessageInfo + +func (m *DetectionData) GetFmdClues() []*v1alpha1.Clue { + if m != nil { + return m.FmdClues } + return nil } // A state change performed by a transaction. @@ -333,7 +471,7 @@ func (m *Action) Reset() { *m = Action{} } func (m *Action) String() string { return proto.CompactTextString(m) } func (*Action) ProtoMessage() {} func (*Action) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{4} + return fileDescriptor_cd20ea79758052c4, []int{7} } func (m *Action) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -667,7 +805,7 @@ func (m *TransactionPerspective) Reset() { *m = TransactionPerspective{} func (m *TransactionPerspective) String() string { return proto.CompactTextString(m) } func (*TransactionPerspective) ProtoMessage() {} func (*TransactionPerspective) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{5} + return fileDescriptor_cd20ea79758052c4, []int{8} } func (m *TransactionPerspective) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -746,7 +884,7 @@ func (m *PayloadKey) Reset() { *m = PayloadKey{} } func (m *PayloadKey) String() string { return proto.CompactTextString(m) } func (*PayloadKey) ProtoMessage() {} func (*PayloadKey) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{6} + return fileDescriptor_cd20ea79758052c4, []int{9} } func (m *PayloadKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -791,7 +929,7 @@ func (m *PayloadKeyWithCommitment) Reset() { *m = PayloadKeyWithCommitme func (m *PayloadKeyWithCommitment) String() string { return proto.CompactTextString(m) } func (*PayloadKeyWithCommitment) ProtoMessage() {} func (*PayloadKeyWithCommitment) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{7} + return fileDescriptor_cd20ea79758052c4, []int{10} } func (m *PayloadKeyWithCommitment) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -843,7 +981,7 @@ func (m *NullifierWithNote) Reset() { *m = NullifierWithNote{} } func (m *NullifierWithNote) String() string { return proto.CompactTextString(m) } func (*NullifierWithNote) ProtoMessage() {} func (*NullifierWithNote) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{8} + return fileDescriptor_cd20ea79758052c4, []int{11} } func (m *NullifierWithNote) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -901,7 +1039,7 @@ func (m *TransactionView) Reset() { *m = TransactionView{} } func (m *TransactionView) String() string { return proto.CompactTextString(m) } func (*TransactionView) ProtoMessage() {} func (*TransactionView) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{9} + return fileDescriptor_cd20ea79758052c4, []int{12} } func (m *TransactionView) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -954,17 +1092,14 @@ func (m *TransactionView) GetAnchor() *v1alpha1.MerkleRoot { type TransactionBodyView struct { // A list views into of actions (state changes) performed by this transaction. ActionViews []*ActionView `protobuf:"bytes,1,rep,name=action_views,json=actionViews,proto3" json:"action_views,omitempty"` - // The maximum height that this transaction can be included in the chain. - // - // If zero, there is no maximum. - ExpiryHeight uint64 `protobuf:"varint,2,opt,name=expiry_height,json=expiryHeight,proto3" json:"expiry_height,omitempty"` - // The chain this transaction is intended for. Including this prevents - // replaying a transaction on one chain onto a different chain. - ChainId string `protobuf:"bytes,3,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + // Transaction parameters. + TransactionParameters *TransactionParameters `protobuf:"bytes,2,opt,name=transaction_parameters,json=transactionParameters,proto3" json:"transaction_parameters,omitempty"` // The transaction fee. - Fee *v1alpha1.Fee `protobuf:"bytes,4,opt,name=fee,proto3" json:"fee,omitempty"` - // A list of clues for use with Fuzzy Message Detection. - FmdClues []*v1alpha1.Clue `protobuf:"bytes,5,rep,name=fmd_clues,json=fmdClues,proto3" json:"fmd_clues,omitempty"` + Fee *v1alpha1.Fee `protobuf:"bytes,3,opt,name=fee,proto3" json:"fee,omitempty"` + // Types that are valid to be assigned to XDetectionData: + // + // *TransactionBodyView_DetectionData + XDetectionData isTransactionBodyView_XDetectionData `protobuf_oneof:"_detection_data"` // Types that are valid to be assigned to XMemoView: // // *TransactionBodyView_MemoView @@ -975,7 +1110,7 @@ func (m *TransactionBodyView) Reset() { *m = TransactionBodyView{} } func (m *TransactionBodyView) String() string { return proto.CompactTextString(m) } func (*TransactionBodyView) ProtoMessage() {} func (*TransactionBodyView) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{10} + return fileDescriptor_cd20ea79758052c4, []int{13} } func (m *TransactionBodyView) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1004,18 +1139,33 @@ func (m *TransactionBodyView) XXX_DiscardUnknown() { var xxx_messageInfo_TransactionBodyView proto.InternalMessageInfo +type isTransactionBodyView_XDetectionData interface { + isTransactionBodyView_XDetectionData() + MarshalTo([]byte) (int, error) + Size() int +} type isTransactionBodyView_XMemoView interface { isTransactionBodyView_XMemoView() MarshalTo([]byte) (int, error) Size() int } +type TransactionBodyView_DetectionData struct { + DetectionData *DetectionData `protobuf:"bytes,4,opt,name=detection_data,json=detectionData,proto3,oneof" json:"detection_data,omitempty"` +} type TransactionBodyView_MemoView struct { - MemoView *MemoView `protobuf:"bytes,6,opt,name=memo_view,json=memoView,proto3,oneof" json:"memo_view,omitempty"` + MemoView *MemoView `protobuf:"bytes,5,opt,name=memo_view,json=memoView,proto3,oneof" json:"memo_view,omitempty"` } -func (*TransactionBodyView_MemoView) isTransactionBodyView_XMemoView() {} +func (*TransactionBodyView_DetectionData) isTransactionBodyView_XDetectionData() {} +func (*TransactionBodyView_MemoView) isTransactionBodyView_XMemoView() {} +func (m *TransactionBodyView) GetXDetectionData() isTransactionBodyView_XDetectionData { + if m != nil { + return m.XDetectionData + } + return nil +} func (m *TransactionBodyView) GetXMemoView() isTransactionBodyView_XMemoView { if m != nil { return m.XMemoView @@ -1030,18 +1180,11 @@ func (m *TransactionBodyView) GetActionViews() []*ActionView { return nil } -func (m *TransactionBodyView) GetExpiryHeight() uint64 { - if m != nil { - return m.ExpiryHeight - } - return 0 -} - -func (m *TransactionBodyView) GetChainId() string { +func (m *TransactionBodyView) GetTransactionParameters() *TransactionParameters { if m != nil { - return m.ChainId + return m.TransactionParameters } - return "" + return nil } func (m *TransactionBodyView) GetFee() *v1alpha1.Fee { @@ -1051,9 +1194,9 @@ func (m *TransactionBodyView) GetFee() *v1alpha1.Fee { return nil } -func (m *TransactionBodyView) GetFmdClues() []*v1alpha1.Clue { - if m != nil { - return m.FmdClues +func (m *TransactionBodyView) GetDetectionData() *DetectionData { + if x, ok := m.GetXDetectionData().(*TransactionBodyView_DetectionData); ok { + return x.DetectionData } return nil } @@ -1068,6 +1211,7 @@ func (m *TransactionBodyView) GetMemoView() *MemoView { // XXX_OneofWrappers is for the internal use of the proto package. func (*TransactionBodyView) XXX_OneofWrappers() []interface{} { return []interface{}{ + (*TransactionBodyView_DetectionData)(nil), (*TransactionBodyView_MemoView)(nil), } } @@ -1105,7 +1249,7 @@ func (m *ActionView) Reset() { *m = ActionView{} } func (m *ActionView) String() string { return proto.CompactTextString(m) } func (*ActionView) ProtoMessage() {} func (*ActionView) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{11} + return fileDescriptor_cd20ea79758052c4, []int{14} } func (m *ActionView) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1431,7 +1575,7 @@ func (m *SpendView) Reset() { *m = SpendView{} } func (m *SpendView) String() string { return proto.CompactTextString(m) } func (*SpendView) ProtoMessage() {} func (*SpendView) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{12} + return fileDescriptor_cd20ea79758052c4, []int{15} } func (m *SpendView) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1514,7 +1658,7 @@ func (m *SpendView_Visible) Reset() { *m = SpendView_Visible{} } func (m *SpendView_Visible) String() string { return proto.CompactTextString(m) } func (*SpendView_Visible) ProtoMessage() {} func (*SpendView_Visible) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{12, 0} + return fileDescriptor_cd20ea79758052c4, []int{15, 0} } func (m *SpendView_Visible) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1565,7 +1709,7 @@ func (m *SpendView_Opaque) Reset() { *m = SpendView_Opaque{} } func (m *SpendView_Opaque) String() string { return proto.CompactTextString(m) } func (*SpendView_Opaque) ProtoMessage() {} func (*SpendView_Opaque) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{12, 1} + return fileDescriptor_cd20ea79758052c4, []int{15, 1} } func (m *SpendView_Opaque) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1613,7 +1757,7 @@ func (m *DelegatorVoteView) Reset() { *m = DelegatorVoteView{} } func (m *DelegatorVoteView) String() string { return proto.CompactTextString(m) } func (*DelegatorVoteView) ProtoMessage() {} func (*DelegatorVoteView) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{13} + return fileDescriptor_cd20ea79758052c4, []int{16} } func (m *DelegatorVoteView) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1696,7 +1840,7 @@ func (m *DelegatorVoteView_Visible) Reset() { *m = DelegatorVoteView_Vis func (m *DelegatorVoteView_Visible) String() string { return proto.CompactTextString(m) } func (*DelegatorVoteView_Visible) ProtoMessage() {} func (*DelegatorVoteView_Visible) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{13, 0} + return fileDescriptor_cd20ea79758052c4, []int{16, 0} } func (m *DelegatorVoteView_Visible) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1747,7 +1891,7 @@ func (m *DelegatorVoteView_Opaque) Reset() { *m = DelegatorVoteView_Opaq func (m *DelegatorVoteView_Opaque) String() string { return proto.CompactTextString(m) } func (*DelegatorVoteView_Opaque) ProtoMessage() {} func (*DelegatorVoteView_Opaque) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{13, 1} + return fileDescriptor_cd20ea79758052c4, []int{16, 1} } func (m *DelegatorVoteView_Opaque) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1795,7 +1939,7 @@ func (m *OutputView) Reset() { *m = OutputView{} } func (m *OutputView) String() string { return proto.CompactTextString(m) } func (*OutputView) ProtoMessage() {} func (*OutputView) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{14} + return fileDescriptor_cd20ea79758052c4, []int{17} } func (m *OutputView) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1879,7 +2023,7 @@ func (m *OutputView_Visible) Reset() { *m = OutputView_Visible{} } func (m *OutputView_Visible) String() string { return proto.CompactTextString(m) } func (*OutputView_Visible) ProtoMessage() {} func (*OutputView_Visible) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{14, 0} + return fileDescriptor_cd20ea79758052c4, []int{17, 0} } func (m *OutputView_Visible) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1937,7 +2081,7 @@ func (m *OutputView_Opaque) Reset() { *m = OutputView_Opaque{} } func (m *OutputView_Opaque) String() string { return proto.CompactTextString(m) } func (*OutputView_Opaque) ProtoMessage() {} func (*OutputView_Opaque) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{14, 1} + return fileDescriptor_cd20ea79758052c4, []int{17, 1} } func (m *OutputView_Opaque) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1987,7 +2131,7 @@ func (m *Spend) Reset() { *m = Spend{} } func (m *Spend) String() string { return proto.CompactTextString(m) } func (*Spend) ProtoMessage() {} func (*Spend) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{15} + return fileDescriptor_cd20ea79758052c4, []int{18} } func (m *Spend) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2053,7 +2197,7 @@ func (m *SpendBody) Reset() { *m = SpendBody{} } func (m *SpendBody) String() string { return proto.CompactTextString(m) } func (*SpendBody) ProtoMessage() {} func (*SpendBody) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{16} + return fileDescriptor_cd20ea79758052c4, []int{19} } func (m *SpendBody) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2115,7 +2259,7 @@ func (m *Output) Reset() { *m = Output{} } func (m *Output) String() string { return proto.CompactTextString(m) } func (*Output) ProtoMessage() {} func (*Output) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{17} + return fileDescriptor_cd20ea79758052c4, []int{20} } func (m *Output) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2177,7 +2321,7 @@ func (m *OutputBody) Reset() { *m = OutputBody{} } func (m *OutputBody) String() string { return proto.CompactTextString(m) } func (*OutputBody) ProtoMessage() {} func (*OutputBody) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{18} + return fileDescriptor_cd20ea79758052c4, []int{21} } func (m *OutputBody) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2250,7 +2394,7 @@ func (m *AuthorizationData) Reset() { *m = AuthorizationData{} } func (m *AuthorizationData) String() string { return proto.CompactTextString(m) } func (*AuthorizationData) ProtoMessage() {} func (*AuthorizationData) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{19} + return fileDescriptor_cd20ea79758052c4, []int{22} } func (m *AuthorizationData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2313,7 +2457,7 @@ func (m *WitnessData) Reset() { *m = WitnessData{} } func (m *WitnessData) String() string { return proto.CompactTextString(m) } func (*WitnessData) ProtoMessage() {} func (*WitnessData) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{20} + return fileDescriptor_cd20ea79758052c4, []int{23} } func (m *WitnessData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2370,7 +2514,7 @@ func (m *TransactionPlan) Reset() { *m = TransactionPlan{} } func (m *TransactionPlan) String() string { return proto.CompactTextString(m) } func (*TransactionPlan) ProtoMessage() {} func (*TransactionPlan) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{21} + return fileDescriptor_cd20ea79758052c4, []int{24} } func (m *TransactionPlan) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2477,7 +2621,7 @@ func (m *ActionPlan) Reset() { *m = ActionPlan{} } func (m *ActionPlan) String() string { return proto.CompactTextString(m) } func (*ActionPlan) ProtoMessage() {} func (*ActionPlan) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{22} + return fileDescriptor_cd20ea79758052c4, []int{25} } func (m *ActionPlan) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2805,7 +2949,7 @@ func (m *CluePlan) Reset() { *m = CluePlan{} } func (m *CluePlan) String() string { return proto.CompactTextString(m) } func (*CluePlan) ProtoMessage() {} func (*CluePlan) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{23} + return fileDescriptor_cd20ea79758052c4, []int{26} } func (m *CluePlan) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2867,7 +3011,7 @@ func (m *MemoPlan) Reset() { *m = MemoPlan{} } func (m *MemoPlan) String() string { return proto.CompactTextString(m) } func (*MemoPlan) ProtoMessage() {} func (*MemoPlan) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{24} + return fileDescriptor_cd20ea79758052c4, []int{27} } func (m *MemoPlan) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2918,7 +3062,7 @@ func (m *MemoCiphertext) Reset() { *m = MemoCiphertext{} } func (m *MemoCiphertext) String() string { return proto.CompactTextString(m) } func (*MemoCiphertext) ProtoMessage() {} func (*MemoCiphertext) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{25} + return fileDescriptor_cd20ea79758052c4, []int{28} } func (m *MemoCiphertext) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2963,7 +3107,7 @@ func (m *MemoPlaintext) Reset() { *m = MemoPlaintext{} } func (m *MemoPlaintext) String() string { return proto.CompactTextString(m) } func (*MemoPlaintext) ProtoMessage() {} func (*MemoPlaintext) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{26} + return fileDescriptor_cd20ea79758052c4, []int{29} } func (m *MemoPlaintext) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3018,7 +3162,7 @@ func (m *MemoView) Reset() { *m = MemoView{} } func (m *MemoView) String() string { return proto.CompactTextString(m) } func (*MemoView) ProtoMessage() {} func (*MemoView) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{27} + return fileDescriptor_cd20ea79758052c4, []int{30} } func (m *MemoView) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3101,7 +3245,7 @@ func (m *MemoView_Visible) Reset() { *m = MemoView_Visible{} } func (m *MemoView_Visible) String() string { return proto.CompactTextString(m) } func (*MemoView_Visible) ProtoMessage() {} func (*MemoView_Visible) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{27, 0} + return fileDescriptor_cd20ea79758052c4, []int{30, 0} } func (m *MemoView_Visible) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3152,7 +3296,7 @@ func (m *MemoView_Opaque) Reset() { *m = MemoView_Opaque{} } func (m *MemoView_Opaque) String() string { return proto.CompactTextString(m) } func (*MemoView_Opaque) ProtoMessage() {} func (*MemoView_Opaque) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{27, 1} + return fileDescriptor_cd20ea79758052c4, []int{30, 1} } func (m *MemoView_Opaque) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3207,7 +3351,7 @@ func (m *SpendPlan) Reset() { *m = SpendPlan{} } func (m *SpendPlan) String() string { return proto.CompactTextString(m) } func (*SpendPlan) ProtoMessage() {} func (*SpendPlan) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{28} + return fileDescriptor_cd20ea79758052c4, []int{31} } func (m *SpendPlan) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3297,7 +3441,7 @@ func (m *OutputPlan) Reset() { *m = OutputPlan{} } func (m *OutputPlan) String() string { return proto.CompactTextString(m) } func (*OutputPlan) ProtoMessage() {} func (*OutputPlan) Descriptor() ([]byte, []int) { - return fileDescriptor_cd20ea79758052c4, []int{29} + return fileDescriptor_cd20ea79758052c4, []int{32} } func (m *OutputPlan) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3373,6 +3517,9 @@ func init() { proto.RegisterType((*Id)(nil), "penumbra.core.transaction.v1alpha1.Id") proto.RegisterType((*EffectHash)(nil), "penumbra.core.transaction.v1alpha1.EffectHash") proto.RegisterType((*TransactionBody)(nil), "penumbra.core.transaction.v1alpha1.TransactionBody") + proto.RegisterType((*MemoData)(nil), "penumbra.core.transaction.v1alpha1.MemoData") + proto.RegisterType((*TransactionParameters)(nil), "penumbra.core.transaction.v1alpha1.TransactionParameters") + proto.RegisterType((*DetectionData)(nil), "penumbra.core.transaction.v1alpha1.DetectionData") proto.RegisterType((*Action)(nil), "penumbra.core.transaction.v1alpha1.Action") proto.RegisterType((*TransactionPerspective)(nil), "penumbra.core.transaction.v1alpha1.TransactionPerspective") proto.RegisterType((*PayloadKey)(nil), "penumbra.core.transaction.v1alpha1.PayloadKey") @@ -3414,176 +3561,183 @@ func init() { } var fileDescriptor_cd20ea79758052c4 = []byte{ - // 2692 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcf, 0x6f, 0x1b, 0xc7, - 0xf5, 0xe7, 0x92, 0x12, 0x25, 0x3d, 0x52, 0xbf, 0xc6, 0x4a, 0xb2, 0x5f, 0xe1, 0x0b, 0xc5, 0xd8, - 0xc4, 0xae, 0x6c, 0xc7, 0x94, 0x2d, 0xc9, 0x31, 0xa0, 0xa4, 0x6d, 0x44, 0x29, 0x0e, 0x65, 0x47, - 0x16, 0xb3, 0x72, 0x65, 0xd8, 0x55, 0xb3, 0x5d, 0xee, 0x8e, 0xc4, 0x85, 0xc8, 0xdd, 0xed, 0xee, - 0x92, 0xb2, 0xf2, 0x0f, 0xb4, 0xbd, 0x14, 0x29, 0xd0, 0x43, 0xd1, 0x4b, 0x81, 0xa2, 0xa7, 0x1e, - 0xfa, 0x07, 0xb4, 0xe8, 0xb9, 0x41, 0x0b, 0x14, 0x01, 0x7a, 0x29, 0x10, 0x14, 0x28, 0xec, 0x53, - 0x7f, 0x1d, 0x7a, 0x2e, 0x50, 0x14, 0xf3, 0x63, 0x7f, 0x72, 0x65, 0x2e, 0x25, 0xbb, 0x86, 0x63, - 0x9f, 0xb4, 0xf3, 0xf4, 0xde, 0x67, 0x66, 0xde, 0x7b, 0x33, 0xf3, 0xde, 0x9b, 0x21, 0x2c, 0xdb, - 0xd8, 0xec, 0xb4, 0x1b, 0x8e, 0xba, 0xa0, 0x59, 0x0e, 0x5e, 0xf0, 0x1c, 0xd5, 0x74, 0x55, 0xcd, - 0x33, 0x2c, 0x73, 0xa1, 0x7b, 0x55, 0x6d, 0xd9, 0x4d, 0xf5, 0x6a, 0x94, 0x58, 0xb1, 0x1d, 0xcb, - 0xb3, 0x90, 0xe4, 0x4b, 0x55, 0x88, 0x54, 0x25, 0xca, 0xe0, 0x4b, 0xcd, 0x5e, 0x8c, 0x23, 0x6b, - 0xce, 0x91, 0xed, 0x59, 0x21, 0x28, 0x6b, 0x33, 0xbc, 0xd9, 0xf9, 0x38, 0xaf, 0xeb, 0xa9, 0x07, - 0x38, 0x64, 0xa5, 0x4d, 0xce, 0xf9, 0x66, 0x9c, 0xd3, 0x68, 0x68, 0x21, 0x9f, 0xd1, 0xd0, 0xd2, - 0xb9, 0x74, 0xfc, 0x20, 0xe4, 0xd2, 0xf1, 0x03, 0xce, 0xb5, 0x18, 0xe7, 0xda, 0xb7, 0xba, 0xd8, - 0x31, 0x55, 0x53, 0x8b, 0x74, 0x1d, 0xd2, 0x98, 0x8c, 0xf4, 0x2b, 0x01, 0x4a, 0x77, 0xc2, 0xe9, - 0xa2, 0x0f, 0x60, 0xa8, 0x61, 0xe9, 0x47, 0xa2, 0x70, 0x56, 0x98, 0x2f, 0x2d, 0x2e, 0x55, 0xfa, - 0x2b, 0xa6, 0x12, 0x11, 0xaf, 0x5a, 0xfa, 0x91, 0x4c, 0x01, 0xd0, 0xeb, 0x50, 0x6a, 0x18, 0xa6, - 0x6e, 0x98, 0xfb, 0x8a, 0x6b, 0xec, 0x8b, 0xf9, 0xb3, 0xc2, 0x7c, 0x59, 0x06, 0x4e, 0xda, 0x36, - 0xf6, 0xd1, 0x2a, 0x14, 0x55, 0x53, 0x6b, 0x5a, 0x8e, 0x58, 0xa0, 0x7d, 0x5d, 0x48, 0xf4, 0xc5, - 0x15, 0x1a, 0x74, 0xb3, 0x89, 0x9d, 0x83, 0x16, 0x96, 0x2d, 0xcb, 0x93, 0xb9, 0xa0, 0x24, 0x42, - 0x7e, 0x43, 0x47, 0x08, 0x86, 0x9a, 0xaa, 0xdb, 0xa4, 0x43, 0x2e, 0xcb, 0xf4, 0x5b, 0x92, 0x00, - 0xde, 0xdf, 0xdb, 0xc3, 0x9a, 0x57, 0x53, 0xdd, 0x26, 0x9a, 0x81, 0x61, 0xc3, 0x34, 0xb1, 0xc3, - 0x59, 0x58, 0x43, 0xfa, 0x43, 0x1e, 0x26, 0x13, 0x63, 0x47, 0xeb, 0x30, 0xc2, 0x5a, 0xae, 0x28, - 0x9c, 0x2d, 0xcc, 0x97, 0x16, 0x2f, 0x66, 0xd1, 0xc0, 0x2a, 0x6d, 0xcb, 0xbe, 0x28, 0x7a, 0x03, - 0xc6, 0xf1, 0x03, 0xdb, 0x70, 0x8e, 0x94, 0x26, 0x36, 0xf6, 0x9b, 0x1e, 0x9d, 0xfd, 0x90, 0x5c, - 0x66, 0xc4, 0x1a, 0xa5, 0xa1, 0xff, 0x83, 0x51, 0xad, 0xa9, 0x1a, 0xa6, 0x62, 0xe8, 0x54, 0x03, - 0x63, 0xf2, 0x08, 0x6d, 0x6f, 0xe8, 0x68, 0x19, 0x0a, 0x7b, 0x18, 0x8b, 0x43, 0x54, 0x2f, 0x52, - 0x1f, 0xbd, 0xdc, 0xc0, 0x58, 0x26, 0xec, 0xe8, 0x3d, 0x18, 0xdb, 0x6b, 0xeb, 0x8a, 0xd6, 0xea, - 0x60, 0x57, 0x1c, 0xa6, 0xa3, 0x7f, 0xa3, 0x8f, 0xec, 0x5a, 0xab, 0x83, 0xe5, 0xd1, 0xbd, 0xb6, - 0x4e, 0x3e, 0x5c, 0x74, 0x11, 0x26, 0xb0, 0x49, 0x79, 0xb0, 0xae, 0xb4, 0x71, 0xdb, 0x12, 0x8b, - 0x44, 0x61, 0xb5, 0x9c, 0x3c, 0x1e, 0xd0, 0x37, 0x71, 0xdb, 0xfa, 0x9e, 0x20, 0x54, 0xa7, 0x61, - 0x52, 0x89, 0x33, 0x4b, 0x7f, 0x9c, 0x80, 0x22, 0x53, 0x05, 0x5a, 0x85, 0x61, 0xd7, 0xc6, 0xa6, - 0xce, 0xfd, 0xe8, 0x42, 0x16, 0x2d, 0x6e, 0x13, 0x81, 0x5a, 0x4e, 0x66, 0x92, 0x68, 0x1d, 0x8a, - 0x56, 0xc7, 0xb3, 0x3b, 0x4c, 0x7b, 0x19, 0x2d, 0xb1, 0x45, 0x25, 0x6a, 0x39, 0x99, 0xcb, 0xa2, - 0xb7, 0x61, 0xc8, 0x3d, 0x54, 0x6d, 0xee, 0x63, 0x67, 0x13, 0x18, 0x64, 0xed, 0x84, 0xfd, 0x1f, - 0xaa, 0x76, 0x2d, 0x27, 0x53, 0x7e, 0x74, 0x03, 0x80, 0xfc, 0x55, 0xb4, 0x96, 0x6a, 0xb4, 0xb9, - 0x25, 0xce, 0xf5, 0x93, 0x5e, 0x23, 0xcc, 0xb5, 0x9c, 0x3c, 0xe6, 0xfa, 0x0d, 0xb4, 0x07, 0x33, - 0x5d, 0xb5, 0x65, 0xe8, 0xaa, 0x67, 0x39, 0x8a, 0x8e, 0xf7, 0x0c, 0xd3, 0x20, 0x23, 0x16, 0xa7, - 0x28, 0xe2, 0xd5, 0x04, 0x22, 0xdb, 0x19, 0x02, 0xcc, 0x1d, 0x5f, 0x72, 0x3d, 0x10, 0xac, 0xe5, - 0xe4, 0x33, 0xdd, 0x5e, 0x32, 0x19, 0xaf, 0xd1, 0xd0, 0x14, 0xa6, 0x0f, 0x71, 0x3a, 0x75, 0xbc, - 0x64, 0x3f, 0x09, 0xb0, 0x37, 0x1a, 0x1a, 0xb3, 0x15, 0x19, 0xaf, 0xe1, 0x37, 0xd0, 0x2e, 0x4c, - 0xda, 0x8e, 0x65, 0x5b, 0xae, 0xda, 0x52, 0xdc, 0x4e, 0xa3, 0x6d, 0x78, 0x22, 0x4a, 0x1d, 0x6a, - 0x64, 0x27, 0x09, 0x30, 0xeb, 0x5c, 0x72, 0x9b, 0x0a, 0xd6, 0x72, 0xf2, 0x84, 0x1d, 0xa3, 0xa0, - 0x06, 0x4c, 0x07, 0xe8, 0x87, 0x86, 0xd7, 0xd4, 0x1d, 0xf5, 0x50, 0x3c, 0x93, 0xba, 0xd5, 0x3c, - 0x0e, 0xff, 0x2e, 0x17, 0xad, 0xe5, 0xe4, 0x29, 0x3b, 0x41, 0x43, 0xf7, 0x60, 0x22, 0xd4, 0x78, - 0xd7, 0xf2, 0xb0, 0x38, 0x43, 0x3b, 0xb8, 0x92, 0xa1, 0x83, 0x40, 0xe1, 0x3b, 0x96, 0x87, 0x89, - 0xdb, 0x77, 0xa3, 0x04, 0x02, 0xad, 0xe3, 0x16, 0xde, 0x0f, 0xa1, 0x5f, 0xc9, 0x0c, 0xbd, 0xee, - 0x0b, 0xfa, 0xd0, 0x7a, 0x94, 0x80, 0x2c, 0x78, 0x35, 0xd0, 0x8c, 0x8e, 0x6d, 0xcb, 0x35, 0x3c, - 0xee, 0x7b, 0xaf, 0xd2, 0x2e, 0xae, 0x0f, 0xa0, 0x9e, 0x75, 0x26, 0xef, 0x7b, 0xe3, 0x8c, 0x9d, - 0x42, 0x47, 0x5b, 0x30, 0x4e, 0x5b, 0x86, 0x65, 0x2a, 0x96, 0x8d, 0x4d, 0x71, 0x8e, 0xf6, 0x33, - 0xff, 0x38, 0x1f, 0xaf, 0x73, 0x81, 0x2d, 0x1b, 0x13, 0xb7, 0x29, 0xdb, 0x91, 0x36, 0x92, 0x61, - 0x22, 0x00, 0xd4, 0x5a, 0x96, 0x8b, 0xc5, 0xd7, 0x53, 0xd7, 0x7e, 0x2a, 0xe2, 0x1a, 0x11, 0x20, - 0x5a, 0xb1, 0xa3, 0x04, 0xf4, 0x4d, 0x98, 0x0e, 0x30, 0x03, 0x7f, 0x39, 0x4b, 0x61, 0xdf, 0xca, - 0x02, 0x1b, 0x73, 0x94, 0x04, 0x0d, 0x61, 0x78, 0x25, 0x00, 0x77, 0xf0, 0xa1, 0xea, 0xe8, 0x5c, - 0xe3, 0x12, 0xed, 0x60, 0x21, 0x4b, 0x07, 0x32, 0x95, 0xf3, 0x35, 0x7d, 0xc6, 0xee, 0x25, 0xa3, - 0x75, 0x18, 0xe5, 0xa6, 0xc6, 0xe2, 0x3c, 0x45, 0x3e, 0xff, 0xf8, 0x55, 0xcf, 0x3d, 0x85, 0xa8, - 0x23, 0x90, 0x44, 0x37, 0x01, 0x3a, 0x66, 0x80, 0x73, 0x21, 0xd5, 0x56, 0x09, 0x9c, 0x6f, 0x04, - 0xfc, 0xb5, 0x9c, 0x1c, 0x91, 0x46, 0xf7, 0x61, 0x2a, 0x6c, 0xf1, 0x39, 0x5f, 0xa4, 0x88, 0x97, - 0xb3, 0x22, 0xfa, 0x33, 0x9e, 0xec, 0xc4, 0x49, 0xe8, 0x26, 0x8c, 0xe9, 0xaa, 0xa5, 0xb0, 0xcd, - 0x7f, 0x91, 0x82, 0x5e, 0xca, 0xb2, 0x3a, 0x54, 0xcb, 0xdf, 0xfe, 0x47, 0x75, 0xfe, 0x8d, 0x36, - 0x01, 0x08, 0x16, 0x3f, 0x05, 0x96, 0x52, 0xcd, 0x7e, 0x0c, 0x58, 0x70, 0x0e, 0x90, 0xd1, 0xb0, - 0x06, 0xaa, 0x43, 0x89, 0xc0, 0xf1, 0xd5, 0x25, 0x2e, 0xa7, 0xce, 0xf8, 0x18, 0x3c, 0xbe, 0x74, - 0x88, 0x22, 0xf5, 0xa0, 0x85, 0xee, 0xc1, 0x94, 0xa1, 0xb9, 0x8b, 0x57, 0x02, 0xdf, 0x54, 0x5b, - 0xe2, 0x67, 0x42, 0xea, 0xa4, 0xe3, 0x7b, 0x2f, 0x11, 0xba, 0x1b, 0xc8, 0x10, 0x3d, 0x1a, 0x71, - 0x52, 0x75, 0x14, 0x8a, 0x6c, 0x2f, 0x97, 0xbe, 0x3f, 0x04, 0xaf, 0x46, 0xc2, 0x94, 0x3a, 0x76, - 0x5c, 0x1b, 0x6b, 0x9e, 0xd1, 0xc5, 0x48, 0x81, 0xb2, 0xad, 0x1e, 0xb5, 0x2c, 0x55, 0x57, 0x0e, - 0xf0, 0x91, 0x1f, 0xb2, 0xbc, 0x9b, 0xe5, 0xa0, 0xac, 0x33, 0xb9, 0x5b, 0xf8, 0x88, 0x74, 0xba, - 0x66, 0xb5, 0xdb, 0x86, 0xd7, 0xc6, 0xa6, 0x27, 0x97, 0xec, 0xe0, 0x3f, 0x2e, 0xfa, 0x36, 0x4c, - 0x51, 0x4b, 0x2a, 0x66, 0xa7, 0xd5, 0x32, 0xf6, 0x0c, 0xec, 0xb8, 0x62, 0x9e, 0x76, 0x72, 0x2d, - 0x4b, 0x27, 0xb7, 0x7d, 0x29, 0xd2, 0xc7, 0x6d, 0xcb, 0xc3, 0xf2, 0x24, 0x85, 0x0b, 0xe8, 0x2e, - 0xba, 0x01, 0x65, 0x55, 0xef, 0x1a, 0x1a, 0x56, 0x4c, 0xcb, 0xc3, 0xae, 0x58, 0xc8, 0x14, 0xb7, - 0x50, 0xac, 0x12, 0x13, 0x24, 0xdf, 0x2e, 0xd9, 0xce, 0x54, 0x5d, 0x77, 0xb0, 0xeb, 0x2a, 0x5d, - 0x03, 0x1f, 0xba, 0xe2, 0x50, 0x6a, 0xf8, 0x96, 0x04, 0x5a, 0x65, 0x32, 0x3b, 0x06, 0x3e, 0x94, - 0xcb, 0x6a, 0xd8, 0x70, 0x49, 0xf8, 0xa1, 0x63, 0xd3, 0x6a, 0xfb, 0xa1, 0xd4, 0x5b, 0x7d, 0x90, - 0xd6, 0x09, 0xf3, 0x26, 0xf6, 0x54, 0x5d, 0xf5, 0x54, 0x99, 0xcb, 0xa2, 0x4d, 0x98, 0x88, 0x68, - 0x86, 0x84, 0x7a, 0xc5, 0xd4, 0x2d, 0x20, 0x55, 0x7d, 0x1b, 0xba, 0x3c, 0x1e, 0xf9, 0xc7, 0x86, - 0x4e, 0xc2, 0xda, 0xd0, 0x70, 0xc7, 0x84, 0xb5, 0xbf, 0x16, 0x40, 0x3c, 0xce, 0xba, 0x68, 0x0b, - 0x4a, 0x11, 0x8f, 0xe1, 0xd1, 0x59, 0x65, 0x30, 0x87, 0x91, 0x21, 0x74, 0x11, 0x74, 0x1b, 0x40, - 0x0b, 0xe0, 0x79, 0xa4, 0x56, 0xe9, 0xa3, 0xaa, 0x6d, 0x8f, 0x6c, 0x17, 0xa1, 0xcb, 0x45, 0x10, - 0xa4, 0x1f, 0x09, 0x30, 0xdd, 0xe3, 0x36, 0xe8, 0x06, 0x8c, 0x05, 0x1e, 0xc8, 0x07, 0x3d, 0xdf, - 0xcf, 0x45, 0x7c, 0x7e, 0x39, 0x14, 0x45, 0xd7, 0x61, 0x88, 0xb8, 0x19, 0x1f, 0x67, 0x26, 0x2f, - 0xa3, 0x02, 0xd2, 0xef, 0x85, 0x58, 0xae, 0x40, 0x5c, 0x04, 0xdd, 0x81, 0x31, 0x92, 0xe9, 0x50, - 0x7f, 0xe3, 0x83, 0xba, 0x7e, 0x82, 0x7c, 0x89, 0xfa, 0xde, 0x68, 0x83, 0x7f, 0xfd, 0x4f, 0xf2, - 0xa6, 0xff, 0xe4, 0xe1, 0x4c, 0xca, 0x28, 0xd0, 0x47, 0x50, 0xe6, 0x8e, 0xca, 0xd6, 0x10, 0xdb, - 0x4f, 0x2a, 0xd9, 0x53, 0x20, 0x3a, 0x97, 0x52, 0xa8, 0xa3, 0xe7, 0x37, 0x15, 0xba, 0x0d, 0x63, - 0x24, 0xa7, 0x61, 0xc6, 0x2d, 0xa6, 0x1e, 0x3d, 0xa9, 0x7a, 0x20, 0xe9, 0x11, 0x99, 0x39, 0x39, - 0xc8, 0xda, 0xfc, 0x9b, 0xa4, 0x4b, 0x65, 0x00, 0x25, 0x00, 0x94, 0xfe, 0x35, 0x01, 0x10, 0x6a, - 0x0c, 0xbd, 0x1f, 0xcf, 0x96, 0x2e, 0x67, 0xce, 0x96, 0x78, 0x4f, 0x3c, 0x63, 0xaa, 0x25, 0x32, - 0xa6, 0x4a, 0xf6, 0x8c, 0x89, 0x03, 0xf9, 0x59, 0xd3, 0x4a, 0x2c, 0x6b, 0x7a, 0xb3, 0x5f, 0xde, - 0xc3, 0xa5, 0x59, 0xe6, 0x74, 0x33, 0x25, 0x73, 0xba, 0x90, 0x29, 0x73, 0xe2, 0x30, 0x2f, 0xb3, - 0xa7, 0x2f, 0x67, 0xf6, 0xf4, 0xf1, 0x31, 0xd9, 0x53, 0xa6, 0x50, 0x22, 0x96, 0x3e, 0x71, 0x47, - 0x79, 0x99, 0x42, 0xbd, 0x80, 0x29, 0xd4, 0x85, 0x27, 0x94, 0x42, 0x5d, 0x3c, 0x55, 0x0a, 0xf5, - 0x42, 0xa5, 0x39, 0x69, 0xf9, 0xe2, 0xa5, 0x27, 0x94, 0x2f, 0x3e, 0xc5, 0x14, 0x6a, 0x1c, 0x4a, - 0x91, 0x68, 0x46, 0xfa, 0x61, 0x01, 0xc6, 0x82, 0x43, 0x13, 0x7d, 0x04, 0x23, 0x5d, 0xc3, 0x35, - 0x1a, 0x2d, 0xcc, 0x0f, 0xdd, 0x6b, 0x03, 0x1d, 0xba, 0x95, 0x1d, 0x26, 0x5c, 0xcb, 0xc9, 0x3e, - 0x0e, 0xba, 0x0d, 0x45, 0xcb, 0x56, 0xbf, 0xd3, 0xf1, 0xc3, 0xcb, 0xe5, 0xc1, 0x10, 0xb7, 0xa8, - 0x2c, 0x3d, 0x84, 0xe9, 0xd7, 0xec, 0x77, 0x05, 0x18, 0xe1, 0xdd, 0xa0, 0xaf, 0x9f, 0xb4, 0x9e, - 0xea, 0xc7, 0x06, 0xef, 0xc4, 0x22, 0xdf, 0xaf, 0x64, 0x88, 0x7c, 0x69, 0x2c, 0x47, 0x85, 0x66, - 0x37, 0xa0, 0xc8, 0x46, 0x77, 0xea, 0x71, 0x90, 0x38, 0x88, 0x65, 0x94, 0xd4, 0x26, 0x7f, 0x2e, - 0xc0, 0x74, 0xcf, 0xce, 0x8e, 0xee, 0x25, 0x6d, 0xf3, 0xd5, 0x13, 0x9d, 0x10, 0x69, 0x36, 0xda, - 0x49, 0xd8, 0xe8, 0xdd, 0x93, 0x21, 0xf7, 0xd8, 0xea, 0xa7, 0x11, 0x5b, 0xdd, 0xed, 0x39, 0xe7, - 0x84, 0x93, 0x55, 0x09, 0x93, 0x07, 0xdc, 0xa9, 0x6c, 0xa8, 0x06, 0x36, 0x7c, 0x5a, 0xe3, 0xab, - 0x4e, 0x25, 0x81, 0xa5, 0x7f, 0x14, 0x00, 0xc2, 0x00, 0x13, 0xc9, 0x49, 0xc3, 0xbe, 0x3d, 0x58, - 0x84, 0x9a, 0x66, 0xd1, 0xad, 0x84, 0x45, 0xaf, 0x0d, 0x08, 0xd9, 0x63, 0xca, 0x2f, 0x22, 0xa6, - 0xac, 0x06, 0x11, 0xb5, 0x30, 0xe8, 0x1d, 0x44, 0x10, 0x4b, 0x9f, 0xc6, 0x6a, 0xc9, 0x7c, 0xbd, - 0x70, 0xda, 0x7c, 0x7d, 0xf6, 0xc3, 0xc0, 0x0d, 0x9e, 0xc0, 0xdc, 0xc8, 0x16, 0xcb, 0xbe, 0xd8, - 0x72, 0xfe, 0x42, 0x80, 0x61, 0x76, 0xa6, 0xad, 0xc6, 0xae, 0x11, 0xb3, 0x27, 0x34, 0x91, 0x0b, - 0xc4, 0x0f, 0x61, 0x54, 0xed, 0x78, 0xcd, 0x20, 0x0b, 0xee, 0x0d, 0xa2, 0x7b, 0xea, 0x0a, 0x04, - 0x61, 0xb5, 0xe3, 0x35, 0xb7, 0x8d, 0x7d, 0x53, 0xf5, 0x3a, 0x0e, 0x96, 0x47, 0x54, 0xd6, 0x44, - 0xab, 0x30, 0x6c, 0x3b, 0x96, 0xb5, 0xc7, 0x55, 0x78, 0xa9, 0x0f, 0xd4, 0xfd, 0x5b, 0x14, 0xac, - 0x4e, 0x44, 0x64, 0x26, 0x29, 0xfd, 0x44, 0xe0, 0x07, 0x08, 0xbd, 0x29, 0x54, 0x00, 0x35, 0xd4, - 0x16, 0x59, 0x1d, 0x4a, 0xa4, 0x00, 0x92, 0xbe, 0x92, 0x92, 0xe8, 0x55, 0x26, 0x18, 0x29, 0x81, - 0x4c, 0x37, 0x92, 0x24, 0xf4, 0xff, 0xd1, 0x9a, 0x47, 0x81, 0x96, 0x01, 0x22, 0x95, 0x8c, 0x09, - 0xc8, 0x3b, 0x07, 0x34, 0xbb, 0x2a, 0xcb, 0x79, 0xe7, 0x40, 0xfa, 0x54, 0x80, 0x22, 0x0f, 0x00, - 0xaa, 0x31, 0xdd, 0x0f, 0x90, 0x04, 0x46, 0x94, 0x5f, 0xf5, 0xd5, 0x95, 0x4f, 0x0d, 0x47, 0x7a, - 0xd5, 0xc5, 0x10, 0x62, 0xfa, 0xfa, 0x41, 0xde, 0x5f, 0xfc, 0x54, 0x61, 0x9b, 0x50, 0x26, 0x2e, - 0xad, 0x70, 0x67, 0x3c, 0xc6, 0xeb, 0xd2, 0xd6, 0x03, 0x77, 0x65, 0xb9, 0x64, 0x86, 0x8d, 0x63, - 0xf4, 0x9f, 0x7f, 0x72, 0xfa, 0x9f, 0x87, 0xa9, 0x43, 0x47, 0xb5, 0x6d, 0x7e, 0xbb, 0x19, 0xac, - 0xbf, 0xb2, 0x3c, 0xc1, 0xe9, 0x24, 0xd7, 0xbf, 0x85, 0x8f, 0xd0, 0x79, 0x98, 0xb4, 0xba, 0x07, - 0x8a, 0xcf, 0x4d, 0x18, 0x99, 0x61, 0xc6, 0xad, 0xee, 0xc1, 0x5d, 0x46, 0xbd, 0x85, 0x8f, 0xa4, - 0x1f, 0xe7, 0x61, 0x9a, 0xb8, 0xa7, 0xe5, 0x18, 0x9f, 0xa8, 0xc4, 0x00, 0xeb, 0xaa, 0xa7, 0xa2, - 0x9b, 0x50, 0xc2, 0xf4, 0xaa, 0x5a, 0x09, 0x6e, 0xb1, 0xfb, 0x17, 0x75, 0xc2, 0xcb, 0x6d, 0x19, - 0x70, 0x78, 0xd1, 0x2d, 0x43, 0x89, 0x9d, 0xae, 0xc4, 0xed, 0xfd, 0x52, 0xed, 0x09, 0x96, 0x0d, - 0x3b, 0xa3, 0x09, 0xcd, 0x45, 0x1a, 0xcc, 0xc4, 0x77, 0x75, 0x0e, 0x5e, 0x38, 0x29, 0x38, 0x8a, - 0x9d, 0x1a, 0xb4, 0x13, 0xe9, 0x37, 0x02, 0x94, 0xee, 0x1a, 0x9e, 0x89, 0x5d, 0x97, 0x2a, 0x25, - 0x2c, 0x72, 0x09, 0x27, 0x2c, 0x72, 0xa1, 0x03, 0x78, 0xcd, 0xf5, 0x68, 0xc0, 0x1a, 0xd8, 0x54, - 0xa1, 0x8e, 0xe9, 0xeb, 0x65, 0x69, 0xb0, 0x32, 0x25, 0xf3, 0xed, 0x57, 0xdc, 0x14, 0xaa, 0x2b, - 0xfd, 0x35, 0xfe, 0x96, 0xa0, 0xde, 0x52, 0x4d, 0x54, 0x4b, 0xbe, 0x25, 0x18, 0xa0, 0x90, 0x46, - 0x00, 0x9e, 0xf5, 0x7b, 0x82, 0x5b, 0x00, 0x5a, 0xab, 0x83, 0x15, 0xbb, 0xa5, 0x9a, 0xc7, 0x55, - 0xc1, 0x53, 0xa7, 0xb0, 0xd6, 0xea, 0x60, 0x3a, 0x81, 0x31, 0x8d, 0x7f, 0xb9, 0x68, 0x83, 0xd7, - 0xd3, 0x08, 0xd8, 0xa0, 0xf5, 0x34, 0x8a, 0x45, 0xab, 0x69, 0xe4, 0x4b, 0xfa, 0x7b, 0x50, 0x3c, - 0xa3, 0x6a, 0x3e, 0x71, 0xf1, 0x8c, 0x48, 0x3f, 0x91, 0xe2, 0x19, 0x07, 0x3a, 0x61, 0xf1, 0x8c, - 0x4b, 0x9f, 0xb6, 0x78, 0xc6, 0x61, 0x5e, 0x16, 0xcf, 0xbe, 0x9c, 0xc5, 0xb3, 0x6f, 0x1d, 0x53, - 0x3c, 0x5b, 0x1e, 0x34, 0x68, 0xe7, 0x7e, 0xf2, 0xac, 0x6b, 0x67, 0x9b, 0x00, 0x91, 0x8c, 0xff, - 0xb5, 0x93, 0x24, 0xfc, 0x11, 0x80, 0xe7, 0xa3, 0x14, 0xa7, 0x1c, 0x5f, 0x8a, 0xbb, 0x32, 0x48, - 0x29, 0x8e, 0x9b, 0xb0, 0xb7, 0x1c, 0x67, 0x3c, 0xbe, 0x1c, 0xb7, 0x34, 0x60, 0x39, 0x8e, 0xf7, - 0xf3, 0x9c, 0xbc, 0x6a, 0xf8, 0xf8, 0xd8, 0x57, 0x0d, 0x57, 0x07, 0xaa, 0x52, 0xf1, 0x59, 0xbf, - 0xd0, 0x2f, 0x1b, 0xa2, 0xcf, 0x0f, 0x04, 0x18, 0xf5, 0x0f, 0x74, 0xf4, 0x1e, 0x8c, 0xf0, 0x4b, - 0x72, 0x7e, 0xda, 0x9e, 0xcf, 0x76, 0xbf, 0x2e, 0xfb, 0x62, 0x68, 0x06, 0x86, 0x1d, 0x17, 0x63, - 0x9d, 0x5f, 0x6c, 0xb2, 0x06, 0x3a, 0x07, 0x13, 0xb6, 0x83, 0x35, 0xc3, 0x25, 0x9e, 0xdb, 0x30, - 0x3c, 0x97, 0x1e, 0x9e, 0x43, 0xf2, 0x78, 0x40, 0xad, 0x1a, 0x9e, 0x2b, 0xb5, 0x61, 0xd4, 0x8f, - 0x07, 0xd0, 0x16, 0x8c, 0xd9, 0x2d, 0xd5, 0x30, 0x3d, 0xfc, 0xc0, 0x4f, 0xbb, 0xae, 0x0e, 0x10, - 0x50, 0x30, 0x41, 0x39, 0xc4, 0x40, 0x53, 0x50, 0x20, 0x91, 0x3b, 0x1b, 0x17, 0xf9, 0x94, 0xce, - 0xc3, 0x04, 0xe1, 0x5e, 0x33, 0xec, 0x26, 0x76, 0x28, 0x4f, 0xfa, 0x8d, 0xbb, 0x06, 0xe3, 0x31, - 0x54, 0xf4, 0x35, 0x28, 0xba, 0xd8, 0xd4, 0x83, 0xbb, 0xea, 0xac, 0x5a, 0xe2, 0x52, 0x08, 0xc1, - 0x10, 0x9d, 0x56, 0x9e, 0x86, 0x71, 0xf4, 0x5b, 0xfa, 0x6d, 0x81, 0x4d, 0x9e, 0x16, 0x52, 0xea, - 0xc9, 0x42, 0xca, 0xf2, 0x20, 0x77, 0x93, 0x69, 0x65, 0x94, 0xcd, 0x44, 0x19, 0x65, 0x69, 0x20, - 0xc0, 0x9e, 0x22, 0xca, 0x2f, 0x23, 0x45, 0x14, 0x19, 0x40, 0x0b, 0x54, 0xc8, 0xc7, 0xbb, 0x98, - 0x15, 0x3e, 0x54, 0xbe, 0x1c, 0x41, 0x89, 0x5b, 0x3f, 0x7f, 0x7a, 0xeb, 0xcf, 0xee, 0x06, 0x75, - 0x91, 0xa7, 0x30, 0xdc, 0x6a, 0x29, 0x72, 0x9b, 0x2c, 0xfd, 0xdb, 0xaf, 0x23, 0x50, 0x3f, 0xf6, - 0x9f, 0x24, 0x08, 0x03, 0x3e, 0x49, 0x40, 0xb3, 0x30, 0xea, 0x6f, 0xcc, 0x3c, 0x1f, 0x08, 0xda, - 0x68, 0x0e, 0xc0, 0x51, 0x4d, 0xdd, 0x6a, 0x1b, 0x9f, 0x04, 0xc5, 0x83, 0x08, 0x85, 0xac, 0xb7, - 0xae, 0x4a, 0x62, 0xfb, 0x46, 0x8b, 0x3d, 0x2c, 0xf0, 0x13, 0x56, 0x4a, 0xad, 0x72, 0x22, 0x49, - 0x81, 0x69, 0xc6, 0x14, 0xb0, 0x29, 0x8e, 0x38, 0xcc, 0x52, 0x60, 0x4a, 0xf7, 0x19, 0xe5, 0x14, - 0x4e, 0x97, 0xbd, 0x1d, 0x4e, 0x70, 0x6e, 0x4b, 0x3f, 0x0f, 0xaa, 0x02, 0x74, 0xfa, 0x2b, 0x30, - 0x4c, 0xfb, 0xe4, 0xf3, 0x7f, 0xb3, 0xcf, 0xfc, 0x77, 0x08, 0xaf, 0xcc, 0x44, 0xd0, 0x06, 0x94, - 0x75, 0xec, 0x7a, 0x8a, 0xbf, 0x25, 0xe5, 0x07, 0x5a, 0x6c, 0x25, 0x22, 0xbb, 0x9a, 0xdc, 0x96, - 0x0a, 0x89, 0x6d, 0xe9, 0x19, 0xa9, 0xa9, 0xfa, 0xcf, 0xfc, 0x67, 0x0f, 0xe7, 0x84, 0xcf, 0x1f, - 0xce, 0x09, 0x7f, 0x79, 0x38, 0x27, 0x7c, 0xfa, 0x68, 0x2e, 0xf7, 0xf9, 0xa3, 0xb9, 0xdc, 0x9f, - 0x1e, 0xcd, 0xe5, 0xe0, 0xbc, 0x66, 0xb5, 0x33, 0xf8, 0x63, 0x75, 0x2a, 0x9a, 0x90, 0x3a, 0x96, - 0x67, 0xd5, 0x85, 0xfb, 0xe6, 0xbe, 0xe1, 0x35, 0x3b, 0x8d, 0x8a, 0x66, 0xb5, 0x17, 0x5c, 0x22, - 0xb5, 0x8f, 0x5b, 0x56, 0x17, 0x5f, 0xee, 0x62, 0x93, 0xe4, 0xe6, 0xee, 0x02, 0x59, 0x0e, 0x0e, - 0xcd, 0x1b, 0x3d, 0xec, 0x7a, 0x0b, 0xdd, 0xeb, 0x0b, 0xb4, 0xb1, 0xd0, 0xff, 0x67, 0x15, 0xef, - 0x44, 0x88, 0x3e, 0xed, 0x67, 0xf9, 0x42, 0x7d, 0xed, 0xce, 0x2f, 0xf2, 0x52, 0xdd, 0x1f, 0xee, - 0x1a, 0x19, 0x6e, 0x64, 0x60, 0x95, 0x1d, 0xce, 0xfa, 0xbb, 0x90, 0x69, 0x97, 0x30, 0xed, 0x46, - 0x98, 0x76, 0x7d, 0xa6, 0x87, 0xf9, 0x4a, 0x7f, 0xa6, 0xdd, 0x0f, 0xea, 0x55, 0xff, 0x21, 0xd6, - 0xdf, 0xf2, 0xe7, 0x7c, 0x81, 0x95, 0x15, 0x22, 0xb1, 0xb2, 0x12, 0x11, 0x59, 0x59, 0xf1, 0x65, - 0x1a, 0x45, 0xfa, 0x73, 0x88, 0xa5, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x0b, 0x9c, 0x79, 0x35, - 0x40, 0x32, 0x00, 0x00, + // 2804 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcf, 0x6f, 0xe3, 0xc6, + 0xf5, 0x17, 0x25, 0xff, 0x7c, 0x92, 0x65, 0x7b, 0xd6, 0xbb, 0xd1, 0xd7, 0xf8, 0xc2, 0x59, 0x30, + 0xc9, 0xd6, 0xeb, 0x24, 0x72, 0xd6, 0xf6, 0x66, 0x51, 0x27, 0x6d, 0x63, 0xd9, 0xd9, 0xc8, 0xbb, + 0xf1, 0x5a, 0xa1, 0x53, 0xbb, 0x49, 0x9d, 0xb0, 0x14, 0x39, 0xb6, 0x08, 0x4b, 0x24, 0x4b, 0x52, + 0xf2, 0x3a, 0xff, 0x40, 0xd3, 0x4b, 0x91, 0x02, 0x3d, 0x14, 0xbd, 0x14, 0x28, 0x72, 0xea, 0xa1, + 0x7f, 0x40, 0x8b, 0x9e, 0x1b, 0xb4, 0x97, 0x00, 0xbd, 0x14, 0x08, 0x0a, 0x04, 0x9b, 0x53, 0x7f, + 0x1d, 0x7a, 0xee, 0xa5, 0x98, 0x1f, 0x1c, 0x92, 0x12, 0xbd, 0xa2, 0x6c, 0xa7, 0xc1, 0x66, 0xf7, + 0x64, 0xce, 0xf3, 0x7b, 0x9f, 0x99, 0x79, 0xef, 0xcd, 0xcc, 0x7b, 0x6f, 0x46, 0xb0, 0xe2, 0x60, + 0xab, 0xdd, 0xaa, 0xbb, 0xda, 0xa2, 0x6e, 0xbb, 0x78, 0xd1, 0x77, 0x35, 0xcb, 0xd3, 0x74, 0xdf, + 0xb4, 0xad, 0xc5, 0xce, 0x0d, 0xad, 0xe9, 0x34, 0xb4, 0x1b, 0x51, 0x62, 0xd9, 0x71, 0x6d, 0xdf, + 0x46, 0x72, 0x20, 0x55, 0x26, 0x52, 0xe5, 0x28, 0x43, 0x20, 0x35, 0xbb, 0x10, 0x47, 0xd6, 0xdd, + 0x13, 0xc7, 0xb7, 0x43, 0x50, 0xd6, 0x66, 0x78, 0xb3, 0xf3, 0x71, 0x5e, 0xcf, 0xd7, 0x8e, 0x70, + 0xc8, 0x4a, 0x9b, 0x9c, 0xf3, 0xd9, 0x38, 0xa7, 0x59, 0xd7, 0x43, 0x3e, 0xb3, 0xae, 0x27, 0x73, + 0x19, 0xf8, 0x7e, 0xc8, 0x65, 0xe0, 0xfb, 0x9c, 0x6b, 0x29, 0xce, 0x75, 0x68, 0x77, 0xb0, 0x6b, + 0x69, 0x96, 0x1e, 0xe9, 0x3a, 0xa4, 0x31, 0x19, 0xf9, 0xb7, 0x12, 0xe4, 0xdf, 0x0e, 0xa7, 0x8b, + 0xde, 0x80, 0xa1, 0xba, 0x6d, 0x9c, 0x94, 0xa4, 0xab, 0xd2, 0x7c, 0x7e, 0x69, 0xb9, 0xdc, 0x5f, + 0x31, 0xe5, 0x88, 0x78, 0xc5, 0x36, 0x4e, 0x14, 0x0a, 0x80, 0x9e, 0x86, 0x7c, 0xdd, 0xb4, 0x0c, + 0xd3, 0x3a, 0x54, 0x3d, 0xf3, 0xb0, 0x94, 0xbd, 0x2a, 0xcd, 0x17, 0x14, 0xe0, 0xa4, 0x1d, 0xf3, + 0x10, 0xad, 0xc1, 0x88, 0x66, 0xe9, 0x0d, 0xdb, 0x2d, 0xe5, 0x68, 0x5f, 0xd7, 0xbb, 0xfa, 0xe2, + 0x0a, 0x15, 0xdd, 0x6c, 0x61, 0xf7, 0xa8, 0x89, 0x15, 0xdb, 0xf6, 0x15, 0x2e, 0x28, 0x97, 0x20, + 0xbb, 0x69, 0x20, 0x04, 0x43, 0x0d, 0xcd, 0x6b, 0xd0, 0x21, 0x17, 0x14, 0xfa, 0x2d, 0xcb, 0x00, + 0xaf, 0x1f, 0x1c, 0x60, 0xdd, 0xaf, 0x6a, 0x5e, 0x03, 0xcd, 0xc0, 0xb0, 0x69, 0x59, 0xd8, 0xe5, + 0x2c, 0xac, 0x21, 0x7f, 0x9c, 0x83, 0xc9, 0xae, 0xb1, 0xa3, 0x0d, 0x18, 0x65, 0x2d, 0xaf, 0x24, + 0x5d, 0xcd, 0xcd, 0xe7, 0x97, 0x16, 0xd2, 0x68, 0x60, 0x8d, 0xb6, 0x95, 0x40, 0x14, 0x39, 0x70, + 0x25, 0xc2, 0xa7, 0x3a, 0x9a, 0xab, 0xb5, 0xb0, 0x8f, 0x5d, 0x8f, 0xaa, 0x21, 0xbf, 0xf4, 0xcd, + 0x01, 0xd5, 0x5a, 0x13, 0x00, 0xca, 0x65, 0x3f, 0x89, 0x8c, 0x56, 0x20, 0x77, 0x80, 0x31, 0xd7, + 0xa4, 0xdc, 0x47, 0x93, 0xb7, 0x31, 0x56, 0x08, 0x3b, 0xfa, 0x1e, 0x14, 0x0d, 0xec, 0x63, 0x36, + 0x4a, 0x43, 0xf3, 0xb5, 0xd2, 0x10, 0x05, 0xb8, 0x91, 0x66, 0x7c, 0x1b, 0x81, 0xe4, 0x86, 0xe6, + 0x6b, 0xca, 0x84, 0x11, 0x6d, 0xa2, 0x4d, 0x18, 0x6f, 0xe1, 0x96, 0xcd, 0x40, 0x87, 0x29, 0xe8, + 0x0b, 0x69, 0x40, 0xb7, 0x70, 0xcb, 0xa6, 0x78, 0x63, 0x2d, 0xfe, 0x25, 0x6f, 0xc2, 0x58, 0x40, + 0x45, 0x0b, 0x50, 0xc4, 0x16, 0x9d, 0x0e, 0x36, 0x54, 0xc2, 0xc1, 0x2c, 0x5a, 0xcd, 0x28, 0x13, + 0x82, 0x4e, 0x98, 0x3f, 0x94, 0xa4, 0xca, 0x34, 0x4c, 0xaa, 0x71, 0x66, 0x79, 0x0f, 0x2e, 0x27, + 0x6a, 0x15, 0x3d, 0x03, 0x13, 0xf8, 0xbe, 0x63, 0xba, 0x27, 0x6a, 0x03, 0x9b, 0x87, 0x0d, 0x9f, + 0xc2, 0x0e, 0x29, 0x05, 0x46, 0xac, 0x52, 0x1a, 0xfa, 0x3f, 0x18, 0xd3, 0x1b, 0x9a, 0x69, 0xa9, + 0xa6, 0x41, 0xed, 0x38, 0xae, 0x8c, 0xd2, 0xf6, 0xa6, 0x21, 0xbf, 0x05, 0x13, 0x31, 0x75, 0xa0, + 0xd7, 0x60, 0xfc, 0xa0, 0x65, 0xa8, 0x7a, 0xb3, 0x8d, 0xbd, 0xd2, 0x10, 0xf5, 0xa4, 0x67, 0xfa, + 0x58, 0x65, 0xbd, 0xd9, 0xc6, 0xca, 0xd8, 0x41, 0xcb, 0x20, 0x1f, 0x9e, 0xfc, 0xe7, 0x22, 0x8c, + 0x30, 0xbf, 0x42, 0x6b, 0x30, 0xec, 0x39, 0xd8, 0x32, 0xf8, 0xa2, 0xbc, 0x9e, 0x46, 0x91, 0x3b, + 0x44, 0xa0, 0x9a, 0x51, 0x98, 0x24, 0xda, 0x80, 0x11, 0xbb, 0xed, 0x3b, 0x6d, 0x9f, 0x7b, 0x60, + 0x2a, 0xb7, 0xde, 0xa6, 0x12, 0xd5, 0x8c, 0xc2, 0x65, 0xd1, 0xcb, 0x30, 0xe4, 0x1d, 0x6b, 0x0e, + 0x77, 0xb3, 0xab, 0x5d, 0x18, 0x64, 0x23, 0x0a, 0xfb, 0x3f, 0xd6, 0x9c, 0x6a, 0x46, 0xa1, 0xfc, + 0xe8, 0x36, 0x00, 0xf9, 0xab, 0xea, 0x4d, 0xcd, 0x6c, 0x71, 0x1f, 0x7b, 0xae, 0x9f, 0xf4, 0x3a, + 0x61, 0xae, 0x66, 0x94, 0x71, 0x2f, 0x68, 0xa0, 0x03, 0x98, 0xe9, 0x68, 0x4d, 0xd3, 0xd0, 0x7c, + 0xdb, 0x55, 0x0d, 0x7c, 0x60, 0x5a, 0x26, 0x19, 0x71, 0x69, 0x2a, 0xd1, 0x6b, 0xd9, 0x36, 0x2b, + 0x30, 0x77, 0x03, 0xc9, 0x0d, 0x21, 0x58, 0xcd, 0x28, 0x97, 0x3a, 0xbd, 0x64, 0x32, 0x5e, 0xb3, + 0xae, 0xab, 0x4c, 0x1f, 0xa5, 0xe9, 0xc4, 0xf1, 0x92, 0xcd, 0x59, 0x60, 0x6f, 0xd6, 0x75, 0x66, + 0x2b, 0x32, 0x5e, 0x33, 0x68, 0xa0, 0x7d, 0x98, 0x74, 0x5c, 0xdb, 0xb1, 0x3d, 0xad, 0xa9, 0x7a, + 0xed, 0x7a, 0xcb, 0xf4, 0x4b, 0x28, 0x71, 0xa8, 0x91, 0x6d, 0x59, 0x60, 0xd6, 0xb8, 0xe4, 0x0e, + 0x15, 0xac, 0x66, 0x94, 0xa2, 0x13, 0xa3, 0xa0, 0x3a, 0x4c, 0x0b, 0xf4, 0x63, 0xd3, 0x6f, 0x18, + 0xae, 0x76, 0x5c, 0xba, 0x94, 0xb8, 0x6f, 0x3f, 0x0c, 0x7f, 0x8f, 0x8b, 0x56, 0x33, 0xca, 0x94, + 0xd3, 0x45, 0x43, 0xef, 0x40, 0x31, 0xd4, 0x78, 0xc7, 0xf6, 0x71, 0x69, 0x86, 0x76, 0xf0, 0x52, + 0x8a, 0x0e, 0x84, 0xc2, 0x77, 0x6d, 0x1f, 0x93, 0x25, 0xda, 0x89, 0x12, 0x08, 0xb4, 0x81, 0x9b, + 0xf8, 0x30, 0x84, 0xbe, 0x9c, 0x1a, 0x7a, 0x23, 0x10, 0x0c, 0xa0, 0x8d, 0x28, 0x01, 0xd9, 0x70, + 0x45, 0x68, 0xc6, 0xc0, 0x8e, 0xed, 0x99, 0x3e, 0xf7, 0xbd, 0x2b, 0xb4, 0x8b, 0x5b, 0x03, 0xa8, + 0x67, 0x83, 0xc9, 0x07, 0xde, 0x38, 0xe3, 0x24, 0xd0, 0xd1, 0x36, 0x4c, 0xd0, 0x16, 0xd9, 0x47, + 0x6d, 0x07, 0x5b, 0xa5, 0x39, 0xda, 0xcf, 0xfc, 0xc3, 0x7c, 0xbc, 0xc6, 0x05, 0xb6, 0x1d, 0x4c, + 0xdc, 0xa6, 0xe0, 0x44, 0xda, 0x48, 0x81, 0xa2, 0x00, 0xd4, 0x9b, 0xb6, 0x87, 0x4b, 0x4f, 0x27, + 0xae, 0xfd, 0x44, 0xc4, 0x75, 0x22, 0x40, 0xb4, 0xe2, 0x44, 0x09, 0xe8, 0xfb, 0x30, 0x2d, 0x30, + 0x85, 0xbf, 0x5c, 0x4d, 0xdc, 0x9b, 0x13, 0x61, 0x63, 0x8e, 0xd2, 0x45, 0x43, 0x18, 0x2e, 0x0b, + 0x70, 0x17, 0x1f, 0x6b, 0xae, 0xc1, 0x35, 0x2e, 0xd3, 0x0e, 0x16, 0xd3, 0x74, 0xa0, 0x50, 0xb9, + 0x40, 0xd3, 0x97, 0x9c, 0x5e, 0x32, 0xda, 0x80, 0x31, 0x6e, 0x6a, 0x5c, 0x9a, 0xa7, 0xc8, 0xd7, + 0x1e, 0xbe, 0xea, 0xb9, 0xa7, 0x10, 0x75, 0x08, 0x49, 0x74, 0x07, 0xa0, 0x6d, 0x09, 0x9c, 0xeb, + 0x89, 0xb6, 0xea, 0xc2, 0xf9, 0xae, 0xe0, 0xaf, 0x66, 0x94, 0x88, 0x34, 0x7a, 0x17, 0xa6, 0xc2, + 0x16, 0x9f, 0xf3, 0x02, 0x45, 0x7c, 0x31, 0x2d, 0x62, 0x30, 0xe3, 0xc9, 0x76, 0x9c, 0x84, 0xee, + 0xc0, 0xb8, 0xa1, 0xd9, 0x2a, 0xdb, 0xfc, 0x97, 0x28, 0xe8, 0xf3, 0x69, 0x56, 0x87, 0x66, 0x07, + 0xdb, 0xff, 0x98, 0xc1, 0xbf, 0xd1, 0x16, 0x00, 0xc1, 0xe2, 0xa7, 0xc0, 0x72, 0xa2, 0xd9, 0x4f, + 0x01, 0x13, 0xe7, 0x00, 0x19, 0x0d, 0x6b, 0xa0, 0x1a, 0xe4, 0x09, 0x1c, 0x5f, 0x5d, 0xa5, 0x95, + 0xc4, 0x19, 0x9f, 0x82, 0xc7, 0x97, 0x0e, 0x51, 0xa4, 0x21, 0x5a, 0xe8, 0x1d, 0x98, 0x32, 0x75, + 0x6f, 0xe9, 0x25, 0xe1, 0x9b, 0x5a, 0xb3, 0xf4, 0x89, 0x94, 0x38, 0xe9, 0xf8, 0xde, 0x4b, 0x84, + 0xf6, 0x84, 0x0c, 0xd1, 0xa3, 0x19, 0x27, 0x55, 0xc6, 0x60, 0x84, 0xed, 0xe5, 0xf2, 0x8f, 0x87, + 0xe0, 0x4a, 0x34, 0x04, 0xc0, 0xae, 0xe7, 0x90, 0x63, 0xbb, 0x83, 0x91, 0x0a, 0x05, 0x47, 0x3b, + 0x69, 0xda, 0x9a, 0xa1, 0x1e, 0xe1, 0x93, 0x20, 0xfe, 0x7b, 0x35, 0xcd, 0x41, 0x59, 0x63, 0x72, + 0x77, 0xf1, 0x09, 0xe9, 0x74, 0xdd, 0x6e, 0xb5, 0x4c, 0xbf, 0x85, 0x2d, 0x5f, 0xc9, 0x3b, 0xe2, + 0x3f, 0x1e, 0xfa, 0x01, 0x4c, 0x51, 0x4b, 0xaa, 0x56, 0xbb, 0xd9, 0x34, 0x0f, 0x4c, 0x16, 0x0f, + 0x92, 0x4e, 0x6e, 0xa6, 0xe9, 0xe4, 0x5e, 0x20, 0x45, 0xfa, 0xb8, 0x67, 0xfb, 0x58, 0x99, 0xa4, + 0x70, 0x82, 0xee, 0xa1, 0xdb, 0x50, 0xd0, 0x8c, 0x8e, 0xa9, 0x63, 0xd5, 0xb2, 0x7d, 0xec, 0x95, + 0x72, 0xa9, 0x02, 0x0f, 0x8a, 0x95, 0x67, 0x82, 0xe4, 0xdb, 0x23, 0xdb, 0x99, 0x66, 0x18, 0x2e, + 0xf6, 0x3c, 0xb5, 0x63, 0xe2, 0xe3, 0x20, 0x82, 0x59, 0xe8, 0x03, 0xb4, 0xc6, 0x64, 0x76, 0x4d, + 0x7c, 0xac, 0x14, 0xb4, 0xb0, 0xe1, 0x91, 0xf0, 0xc3, 0xc0, 0x96, 0xdd, 0xf2, 0x4a, 0xc3, 0x14, + 0xe9, 0x85, 0x3e, 0x48, 0x1b, 0x84, 0x79, 0x0b, 0xfb, 0x1a, 0x89, 0x1f, 0x15, 0x2e, 0x8b, 0xb6, + 0xa0, 0x18, 0x0d, 0xab, 0x4d, 0xa3, 0x34, 0x92, 0xb8, 0x05, 0x24, 0xaa, 0x6f, 0xd3, 0x50, 0x26, + 0x22, 0xff, 0xd8, 0x34, 0x48, 0x8e, 0x10, 0x1a, 0xee, 0x94, 0x1c, 0xe1, 0x77, 0x12, 0x94, 0x4e, + 0xb3, 0x2e, 0xda, 0x86, 0x7c, 0xc4, 0x63, 0x78, 0x74, 0x56, 0x1e, 0xcc, 0x61, 0x14, 0x08, 0x5d, + 0x04, 0xdd, 0x03, 0xd0, 0x05, 0x3c, 0x8f, 0xd4, 0xca, 0x7d, 0x54, 0xb5, 0xe3, 0x93, 0xed, 0x22, + 0x74, 0xb9, 0x08, 0x82, 0xfc, 0x33, 0x09, 0xa6, 0x7b, 0xdc, 0x06, 0xdd, 0x86, 0x71, 0xe1, 0x81, + 0x7c, 0xd0, 0xf3, 0xfd, 0x5c, 0x24, 0xe0, 0x57, 0x42, 0x51, 0x74, 0x0b, 0x86, 0x88, 0x9b, 0xf1, + 0x71, 0xa6, 0xf2, 0x32, 0x2a, 0x20, 0xff, 0x49, 0x8a, 0x25, 0x5e, 0xc4, 0x45, 0xd0, 0xdb, 0x30, + 0x4e, 0xd2, 0x46, 0xea, 0x6f, 0x7c, 0x50, 0xb7, 0xce, 0x90, 0x7c, 0x52, 0xdf, 0x1b, 0xab, 0xf3, + 0xaf, 0xff, 0x49, 0x12, 0xfa, 0x79, 0x0e, 0x2e, 0x25, 0x8c, 0x02, 0xbd, 0x05, 0x05, 0xee, 0xa8, + 0x6c, 0x0d, 0xb1, 0xfd, 0xa4, 0x9c, 0x3e, 0x9f, 0xa4, 0x73, 0xc9, 0x87, 0x3a, 0x7a, 0x74, 0xf2, + 0xca, 0xf7, 0x2e, 0x2c, 0xaf, 0x64, 0xb1, 0x5d, 0x84, 0xf0, 0xa1, 0x24, 0xa1, 0x7b, 0x3c, 0xb9, + 0xa4, 0xbe, 0x32, 0x60, 0x72, 0x49, 0x14, 0x59, 0x95, 0x58, 0x7a, 0x49, 0xbe, 0x83, 0x4c, 0x31, + 0x3e, 0xde, 0x4a, 0x01, 0x40, 0x15, 0x7d, 0xc8, 0xff, 0x2e, 0x02, 0x84, 0x36, 0x41, 0xaf, 0xc7, + 0xf3, 0xb1, 0x17, 0x53, 0xe7, 0x63, 0xb4, 0x73, 0x91, 0x93, 0x55, 0xbb, 0x72, 0xb2, 0x72, 0xfa, + 0x9c, 0x8c, 0x03, 0x05, 0x79, 0xd9, 0x6a, 0x2c, 0x2f, 0x7b, 0xb6, 0x5f, 0x66, 0xc5, 0xa5, 0x59, + 0x6e, 0x76, 0x27, 0x21, 0x37, 0xbb, 0x9e, 0x2a, 0x37, 0xe3, 0x30, 0x4f, 0xf2, 0xb3, 0xaf, 0x67, + 0x7e, 0xf6, 0xfe, 0x29, 0xf9, 0xd9, 0xcd, 0x74, 0x8b, 0x38, 0x92, 0x8f, 0x71, 0x47, 0x79, 0x92, + 0xa4, 0x3d, 0x86, 0x49, 0xda, 0xf5, 0x0b, 0x4a, 0xd2, 0x16, 0xce, 0x95, 0xa4, 0x3d, 0x56, 0x89, + 0x54, 0x52, 0x46, 0xfa, 0xfc, 0x05, 0x65, 0xa4, 0x5f, 0x62, 0x92, 0x36, 0x01, 0xf9, 0x48, 0xbc, + 0x24, 0xff, 0x34, 0x07, 0xe3, 0xe2, 0xd0, 0x44, 0x6f, 0xc1, 0x68, 0xc7, 0xf4, 0xcc, 0x7a, 0x13, + 0xf3, 0x43, 0xf7, 0xe6, 0x40, 0x87, 0x6e, 0x79, 0x97, 0x09, 0x57, 0x33, 0x4a, 0x80, 0x83, 0xee, + 0xc1, 0x88, 0xed, 0x68, 0x3f, 0x6c, 0x07, 0x01, 0xec, 0xca, 0x60, 0x88, 0xdb, 0x54, 0x96, 0x1e, + 0xc2, 0xf4, 0x6b, 0xf6, 0x47, 0x12, 0x8c, 0xf2, 0x6e, 0xd0, 0x77, 0xce, 0x5a, 0xb1, 0x0d, 0x62, + 0x83, 0x57, 0x62, 0xb1, 0xf5, 0x37, 0x52, 0xc4, 0xd6, 0x34, 0x5a, 0xa4, 0x42, 0xb3, 0x9b, 0x30, + 0xc2, 0x46, 0x77, 0xee, 0x71, 0x90, 0x38, 0x88, 0xe5, 0xac, 0xd4, 0x26, 0x7f, 0xcd, 0xc1, 0x74, + 0xcf, 0xce, 0x8e, 0xde, 0xe9, 0xb6, 0xcd, 0xb7, 0xce, 0x74, 0x42, 0x24, 0xd9, 0x68, 0xb7, 0xcb, + 0x46, 0xaf, 0x9e, 0x0d, 0xb9, 0xc7, 0x56, 0xbf, 0x8c, 0xd8, 0x6a, 0xaf, 0xe7, 0x9c, 0x93, 0xce, + 0x56, 0x87, 0xec, 0x3e, 0xe0, 0xce, 0x65, 0x43, 0x4d, 0xd8, 0xf0, 0xcb, 0x1a, 0x5f, 0x65, 0xaa, + 0x1b, 0x58, 0xfe, 0x67, 0x0e, 0x20, 0x0c, 0x30, 0x91, 0xd2, 0x6d, 0xd8, 0x97, 0x07, 0x8b, 0x50, + 0x93, 0x2c, 0xba, 0xdd, 0x65, 0xd1, 0x9b, 0x03, 0x42, 0xf6, 0x98, 0xf2, 0xb3, 0x88, 0x29, 0x2b, + 0x22, 0xa2, 0x96, 0x06, 0xbd, 0xe5, 0x10, 0xb1, 0xf4, 0x79, 0xac, 0xd6, 0x5d, 0x11, 0xc8, 0x9d, + 0xb7, 0x22, 0x30, 0xfb, 0xa6, 0x70, 0x83, 0x0b, 0x98, 0x1b, 0xd9, 0x62, 0xd9, 0x17, 0x5b, 0xce, + 0x9f, 0x49, 0x30, 0xcc, 0xce, 0xb4, 0xb5, 0xd8, 0xad, 0x6f, 0xfa, 0x84, 0x26, 0x72, 0xdf, 0xfb, + 0x26, 0x8c, 0x69, 0x6d, 0xbf, 0x21, 0xf2, 0xec, 0xde, 0x20, 0xba, 0xa7, 0x72, 0x41, 0x10, 0xd6, + 0xda, 0x7e, 0x63, 0xc7, 0x3c, 0xb4, 0x34, 0xbf, 0xed, 0x62, 0x65, 0x54, 0x63, 0x4d, 0xb4, 0x06, + 0xc3, 0x8e, 0x6b, 0xdb, 0x07, 0x5c, 0x85, 0xcf, 0xf7, 0x81, 0x7a, 0xf7, 0x2e, 0x05, 0xab, 0x11, + 0x11, 0x85, 0x49, 0xca, 0xbf, 0x90, 0xf8, 0x01, 0x42, 0x2f, 0x76, 0x55, 0x40, 0x75, 0xad, 0x49, + 0x56, 0x87, 0x1a, 0x29, 0xb1, 0x24, 0xaf, 0xa4, 0x6e, 0xf4, 0x0a, 0x13, 0x8c, 0x14, 0x59, 0xa6, + 0xeb, 0xdd, 0x24, 0xf4, 0xff, 0xd1, 0xaa, 0x4a, 0x8e, 0x16, 0x1a, 0x22, 0xb5, 0x92, 0x22, 0x64, + 0xdd, 0x23, 0x9a, 0x5d, 0x15, 0x94, 0xac, 0x7b, 0x24, 0x7f, 0x24, 0xc1, 0x08, 0x0f, 0x00, 0x2a, + 0x31, 0xdd, 0x0f, 0x90, 0x04, 0x46, 0x94, 0x5f, 0x09, 0xd4, 0x95, 0x4d, 0x0c, 0x47, 0x7a, 0xd5, + 0xc5, 0x10, 0x62, 0xfa, 0xfa, 0x49, 0x36, 0x58, 0xfc, 0x54, 0x61, 0x5b, 0x50, 0x20, 0x2e, 0xad, + 0x72, 0x67, 0x3c, 0xc5, 0xeb, 0x92, 0xd6, 0x03, 0x77, 0x65, 0x25, 0x6f, 0x85, 0x8d, 0x53, 0xf4, + 0x9f, 0xbd, 0x38, 0xfd, 0xcf, 0xc3, 0xd4, 0xb1, 0xab, 0x39, 0x0e, 0xbf, 0xeb, 0x15, 0xeb, 0xaf, + 0xa0, 0x14, 0x39, 0x9d, 0xa4, 0xff, 0x77, 0xf1, 0x09, 0xba, 0x06, 0x93, 0x76, 0xe7, 0x48, 0x0d, + 0xb8, 0x09, 0x23, 0x33, 0xcc, 0x84, 0xdd, 0x39, 0xda, 0x63, 0xd4, 0xbb, 0xf8, 0x44, 0xfe, 0x79, + 0x16, 0xa6, 0x89, 0x7b, 0xda, 0xae, 0xf9, 0x81, 0x26, 0x6e, 0x76, 0xef, 0x40, 0x1e, 0xd3, 0x97, + 0x05, 0xaa, 0x78, 0x74, 0xd0, 0xbf, 0x6c, 0x14, 0xbe, 0x45, 0x50, 0x00, 0x87, 0xef, 0x12, 0x14, + 0xc8, 0xb3, 0xd3, 0x95, 0xb8, 0x7d, 0x50, 0x0c, 0x3e, 0xc3, 0xb2, 0x61, 0x67, 0x34, 0xa1, 0x79, + 0x48, 0x87, 0x99, 0xf8, 0xae, 0xce, 0xc1, 0x73, 0x67, 0x05, 0x47, 0xb1, 0x53, 0x83, 0x76, 0x22, + 0xff, 0x5e, 0x82, 0xfc, 0x9e, 0xe9, 0x5b, 0xd8, 0xf3, 0xa8, 0x52, 0xc2, 0x32, 0x9a, 0x74, 0xc6, + 0x32, 0x1a, 0x3a, 0x82, 0xa7, 0x3c, 0x9f, 0x06, 0xac, 0xc2, 0xa6, 0x2a, 0x75, 0xcc, 0x40, 0x2f, + 0xcb, 0x83, 0x15, 0x42, 0x99, 0x6f, 0x5f, 0xf6, 0x12, 0xa8, 0x9e, 0xfc, 0xb7, 0x6c, 0xac, 0x02, + 0x59, 0x6b, 0x6a, 0x16, 0xaa, 0x76, 0x3f, 0xfd, 0x18, 0xa0, 0x54, 0x47, 0x00, 0xc2, 0xe7, 0x1f, + 0x3d, 0xaf, 0x09, 0xb2, 0x7d, 0x5e, 0x13, 0xe4, 0x62, 0xaf, 0x09, 0x82, 0xa2, 0xdb, 0xd0, 0x60, + 0x45, 0xb7, 0xbb, 0x00, 0x7a, 0xb3, 0x8d, 0x55, 0xa7, 0xa9, 0x59, 0xa7, 0xd5, 0xd9, 0x13, 0xa7, + 0xb0, 0xde, 0x6c, 0x63, 0x3a, 0x81, 0x71, 0x9d, 0x7f, 0x79, 0xe2, 0xfd, 0x06, 0x01, 0xe3, 0x55, + 0xf6, 0xd4, 0x25, 0x36, 0x8a, 0x45, 0x0b, 0x6c, 0xe4, 0x4b, 0xfe, 0x87, 0x28, 0x9e, 0x51, 0x35, + 0x9f, 0xb9, 0x78, 0x46, 0xa4, 0x2f, 0xa4, 0x78, 0xc6, 0x81, 0xce, 0x58, 0x3c, 0xe3, 0xd2, 0xe7, + 0x2d, 0x9e, 0x71, 0x98, 0x27, 0xc5, 0xb3, 0xaf, 0x67, 0xf1, 0xec, 0xbd, 0x53, 0x8a, 0x67, 0x2b, + 0x83, 0x06, 0xed, 0xdc, 0x4f, 0xbe, 0xea, 0xda, 0xd9, 0x16, 0x40, 0x24, 0xe3, 0x7f, 0xea, 0x2c, + 0x09, 0x7f, 0x04, 0xe0, 0xd1, 0x28, 0xc5, 0xa9, 0xa7, 0x97, 0xe2, 0x5e, 0x1a, 0xa4, 0x14, 0xc7, + 0x4d, 0xd8, 0x5b, 0x8e, 0x33, 0x1f, 0x5e, 0x8e, 0x5b, 0x1e, 0xb0, 0x1c, 0xc7, 0xfb, 0x79, 0x44, + 0xde, 0x4d, 0xbc, 0x7f, 0xea, 0xbb, 0x89, 0x1b, 0x03, 0x55, 0xa9, 0xf8, 0xac, 0x1f, 0xeb, 0xb7, + 0x13, 0xd1, 0x07, 0x0e, 0x12, 0x8c, 0x05, 0x07, 0x3a, 0x7a, 0x0d, 0x46, 0xf9, 0x35, 0x3c, 0x3f, + 0x6d, 0xaf, 0xa5, 0xbb, 0xc1, 0x57, 0x02, 0x31, 0x34, 0x03, 0xc3, 0xae, 0x87, 0xb1, 0xc1, 0xaf, + 0x4e, 0x59, 0x03, 0x3d, 0x07, 0x45, 0xc7, 0xc5, 0xba, 0xe9, 0x11, 0xcf, 0xad, 0x9b, 0xbe, 0x47, + 0x0f, 0xcf, 0x21, 0x65, 0x42, 0x50, 0x2b, 0xa6, 0xef, 0xc9, 0x2d, 0xf6, 0x72, 0x93, 0x0e, 0x65, + 0x1b, 0xc6, 0x9d, 0xa6, 0x66, 0x5a, 0x3e, 0xbe, 0x1f, 0xa4, 0x5d, 0x37, 0x06, 0x08, 0x28, 0x98, + 0xa0, 0x12, 0x62, 0xa0, 0x29, 0xc8, 0x91, 0xc8, 0x9d, 0x8d, 0x8b, 0x7c, 0xca, 0xd7, 0xa0, 0x48, + 0xb8, 0xd7, 0x4d, 0xa7, 0x81, 0x5d, 0xca, 0x93, 0x7c, 0xa7, 0xaf, 0xc3, 0x44, 0x0c, 0x15, 0x7d, + 0x1b, 0x46, 0x3c, 0x6c, 0x19, 0xe2, 0x36, 0x3c, 0xad, 0x96, 0xb8, 0x14, 0x42, 0x30, 0x44, 0xa7, + 0xc5, 0x1e, 0x85, 0xd2, 0x6f, 0xf9, 0x0f, 0x39, 0x36, 0x79, 0x5a, 0x48, 0xa9, 0x75, 0x17, 0x52, + 0x56, 0x06, 0xb9, 0xae, 0x4c, 0x2a, 0xa3, 0x6c, 0x75, 0x95, 0x51, 0x96, 0x07, 0x02, 0xec, 0x29, + 0xa2, 0xfc, 0x26, 0x52, 0x44, 0x51, 0x00, 0x74, 0xa1, 0x42, 0x3e, 0xde, 0xa5, 0xb4, 0xf0, 0xa1, + 0xf2, 0x95, 0x08, 0x4a, 0xdc, 0xfa, 0xd9, 0xf3, 0x5b, 0x7f, 0x76, 0x5f, 0xd4, 0x45, 0xbe, 0x84, + 0xe1, 0x56, 0xf2, 0x91, 0x0b, 0x66, 0xf9, 0x3f, 0x41, 0x1d, 0x81, 0xfa, 0x71, 0xf0, 0xe8, 0x41, + 0x1a, 0xf0, 0xd1, 0x03, 0x9a, 0x85, 0xb1, 0x60, 0x63, 0xe6, 0xf9, 0x80, 0x68, 0xa3, 0x39, 0x00, + 0x57, 0xb3, 0x0c, 0xbb, 0x65, 0x7e, 0x20, 0x8a, 0x07, 0x11, 0x0a, 0x59, 0x6f, 0x1d, 0x8d, 0xc4, + 0xf6, 0xf5, 0x26, 0x7b, 0xba, 0x10, 0x24, 0xac, 0x94, 0x5a, 0xe1, 0x44, 0x92, 0x02, 0xd3, 0x8c, + 0x49, 0xb0, 0xa9, 0x2e, 0xbd, 0x1e, 0x2f, 0xd0, 0xe8, 0xca, 0x3e, 0x08, 0x18, 0x95, 0x04, 0x4e, + 0x8f, 0x46, 0xf9, 0xdd, 0x9c, 0x3b, 0xf2, 0xc7, 0xa2, 0x2a, 0x40, 0xa7, 0xbf, 0x0a, 0xc3, 0xb4, + 0x4f, 0x3e, 0xff, 0x67, 0xfb, 0xcc, 0x7f, 0x97, 0xf0, 0x2a, 0x4c, 0x04, 0x6d, 0x42, 0xc1, 0xc0, + 0x9e, 0xaf, 0x06, 0x5b, 0x52, 0x76, 0xa0, 0xc5, 0x96, 0x27, 0xb2, 0x6b, 0xdd, 0xdb, 0x52, 0xae, + 0x6b, 0x5b, 0xfa, 0x8a, 0xd4, 0x54, 0xf9, 0x57, 0xf6, 0x93, 0x07, 0x73, 0xd2, 0xa7, 0x0f, 0xe6, + 0xa4, 0xcf, 0x1f, 0xcc, 0x49, 0x1f, 0x7d, 0x31, 0x97, 0xf9, 0xf4, 0x8b, 0xb9, 0xcc, 0x5f, 0xbe, + 0x98, 0xcb, 0xc0, 0x35, 0xdd, 0x6e, 0xa5, 0xf0, 0xc7, 0xca, 0x54, 0x34, 0x21, 0x75, 0x6d, 0xdf, + 0xae, 0x49, 0xef, 0x5a, 0x87, 0xa6, 0xdf, 0x68, 0xd7, 0xcb, 0xba, 0xdd, 0x5a, 0xf4, 0x88, 0xd4, + 0x21, 0x6e, 0xda, 0x1d, 0xfc, 0x62, 0x07, 0x5b, 0x24, 0x37, 0xf7, 0x16, 0xc9, 0x72, 0x70, 0x69, + 0xde, 0xe8, 0x63, 0xcf, 0x5f, 0xec, 0xdc, 0x5a, 0xa4, 0x8d, 0xc5, 0xfe, 0xbf, 0x82, 0x79, 0x25, + 0x42, 0x0c, 0x68, 0xbf, 0xca, 0xe6, 0x6a, 0xeb, 0x6f, 0xff, 0x3a, 0x2b, 0xd7, 0x82, 0xe1, 0xae, + 0x93, 0xe1, 0x46, 0x06, 0x56, 0xde, 0xe5, 0xac, 0x7f, 0x0c, 0x99, 0xf6, 0x09, 0xd3, 0x7e, 0x84, + 0x69, 0x3f, 0x60, 0x7a, 0x90, 0x2d, 0xf7, 0x67, 0xda, 0x7f, 0xa3, 0x56, 0x09, 0x9e, 0x7a, 0xfd, + 0x3d, 0xfb, 0x5c, 0x20, 0xb0, 0xba, 0x4a, 0x24, 0x56, 0x57, 0x23, 0x22, 0xab, 0xab, 0x81, 0x4c, + 0x7d, 0x84, 0xfe, 0x7a, 0x65, 0xf9, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x67, 0xf4, 0x45, 0x46, + 0xef, 0x33, 0x00, 0x00, } func (m *Transaction) Marshal() (dAtA []byte, err error) { @@ -3720,28 +3874,29 @@ func (m *TransactionBody) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.XEncryptedMemo != nil { + if m.MemoData != nil { { - size := m.XEncryptedMemo.Size() - i -= size - if _, err := m.XEncryptedMemo.MarshalTo(dAtA[i:]); err != nil { + size, err := m.MemoData.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { return 0, err } + i -= size + i = encodeVarintTransaction(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x2a } - if len(m.FmdClues) > 0 { - for iNdEx := len(m.FmdClues) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.FmdClues[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTransaction(dAtA, i, uint64(size)) + if m.DetectionData != nil { + { + size, err := m.DetectionData.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } - i-- - dAtA[i] = 0x2a + i -= size + i = encodeVarintTransaction(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x22 } if m.Fee != nil { { @@ -3753,19 +3908,19 @@ func (m *TransactionBody) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintTransaction(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x22 - } - if len(m.ChainId) > 0 { - i -= len(m.ChainId) - copy(dAtA[i:], m.ChainId) - i = encodeVarintTransaction(dAtA, i, uint64(len(m.ChainId))) - i-- dAtA[i] = 0x1a } - if m.ExpiryHeight != 0 { - i = encodeVarintTransaction(dAtA, i, uint64(m.ExpiryHeight)) + if m.TransactionParameters != nil { + { + size, err := m.TransactionParameters.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTransaction(dAtA, i, uint64(size)) + } i-- - dAtA[i] = 0x10 + dAtA[i] = 0x12 } if len(m.Actions) > 0 { for iNdEx := len(m.Actions) - 1; iNdEx >= 0; iNdEx-- { @@ -3784,22 +3939,126 @@ func (m *TransactionBody) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *TransactionBody_EncryptedMemo) MarshalTo(dAtA []byte) (int, error) { +func (m *MemoData) Marshal() (dAtA []byte, err error) { size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil } -func (m *TransactionBody_EncryptedMemo) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MemoData) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MemoData) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XEncryptedMemo != nil { + { + size := m.XEncryptedMemo.Size() + i -= size + if _, err := m.XEncryptedMemo.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + } + } + return len(dAtA) - i, nil +} + +func (m *MemoData_EncryptedMemo) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MemoData_EncryptedMemo) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) if m.EncryptedMemo != nil { i -= len(m.EncryptedMemo) copy(dAtA[i:], m.EncryptedMemo) i = encodeVarintTransaction(dAtA, i, uint64(len(m.EncryptedMemo))) i-- - dAtA[i] = 0x32 + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} +func (m *TransactionParameters) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TransactionParameters) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TransactionParameters) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ChainId) > 0 { + i -= len(m.ChainId) + copy(dAtA[i:], m.ChainId) + i = encodeVarintTransaction(dAtA, i, uint64(len(m.ChainId))) + i-- + dAtA[i] = 0x12 + } + if m.ExpiryHeight != 0 { + i = encodeVarintTransaction(dAtA, i, uint64(m.ExpiryHeight)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *DetectionData) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DetectionData) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DetectionData) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.FmdClues) > 0 { + for iNdEx := len(m.FmdClues) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.FmdClues[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTransaction(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } } return len(dAtA) - i, nil } + func (m *Action) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -4642,18 +4901,13 @@ func (m *TransactionBodyView) MarshalToSizedBuffer(dAtA []byte) (int, error) { } } } - if len(m.FmdClues) > 0 { - for iNdEx := len(m.FmdClues) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.FmdClues[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTransaction(dAtA, i, uint64(size)) + if m.XDetectionData != nil { + { + size := m.XDetectionData.Size() + i -= size + if _, err := m.XDetectionData.MarshalTo(dAtA[i:]); err != nil { + return 0, err } - i-- - dAtA[i] = 0x2a } } if m.Fee != nil { @@ -4666,19 +4920,19 @@ func (m *TransactionBodyView) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintTransaction(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x22 - } - if len(m.ChainId) > 0 { - i -= len(m.ChainId) - copy(dAtA[i:], m.ChainId) - i = encodeVarintTransaction(dAtA, i, uint64(len(m.ChainId))) - i-- dAtA[i] = 0x1a } - if m.ExpiryHeight != 0 { - i = encodeVarintTransaction(dAtA, i, uint64(m.ExpiryHeight)) + if m.TransactionParameters != nil { + { + size, err := m.TransactionParameters.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTransaction(dAtA, i, uint64(size)) + } i-- - dAtA[i] = 0x10 + dAtA[i] = 0x12 } if len(m.ActionViews) > 0 { for iNdEx := len(m.ActionViews) - 1; iNdEx >= 0; iNdEx-- { @@ -4697,6 +4951,27 @@ func (m *TransactionBodyView) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *TransactionBodyView_DetectionData) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TransactionBodyView_DetectionData) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.DetectionData != nil { + { + size, err := m.DetectionData.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTransaction(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + return len(dAtA) - i, nil +} func (m *TransactionBodyView_MemoView) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) @@ -4714,7 +4989,7 @@ func (m *TransactionBodyView_MemoView) MarshalToSizedBuffer(dAtA []byte) (int, e i = encodeVarintTransaction(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x32 + dAtA[i] = 0x2a } return len(dAtA) - i, nil } @@ -7203,30 +7478,38 @@ func (m *TransactionBody) Size() (n int) { n += 1 + l + sovTransaction(uint64(l)) } } - if m.ExpiryHeight != 0 { - n += 1 + sovTransaction(uint64(m.ExpiryHeight)) - } - l = len(m.ChainId) - if l > 0 { + if m.TransactionParameters != nil { + l = m.TransactionParameters.Size() n += 1 + l + sovTransaction(uint64(l)) } if m.Fee != nil { l = m.Fee.Size() n += 1 + l + sovTransaction(uint64(l)) } - if len(m.FmdClues) > 0 { - for _, e := range m.FmdClues { - l = e.Size() - n += 1 + l + sovTransaction(uint64(l)) - } + if m.DetectionData != nil { + l = m.DetectionData.Size() + n += 1 + l + sovTransaction(uint64(l)) + } + if m.MemoData != nil { + l = m.MemoData.Size() + n += 1 + l + sovTransaction(uint64(l)) + } + return n +} + +func (m *MemoData) Size() (n int) { + if m == nil { + return 0 } + var l int + _ = l if m.XEncryptedMemo != nil { n += m.XEncryptedMemo.Size() } return n } -func (m *TransactionBody_EncryptedMemo) Size() (n int) { +func (m *MemoData_EncryptedMemo) Size() (n int) { if m == nil { return 0 } @@ -7238,6 +7521,37 @@ func (m *TransactionBody_EncryptedMemo) Size() (n int) { } return n } +func (m *TransactionParameters) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ExpiryHeight != 0 { + n += 1 + sovTransaction(uint64(m.ExpiryHeight)) + } + l = len(m.ChainId) + if l > 0 { + n += 1 + l + sovTransaction(uint64(l)) + } + return n +} + +func (m *DetectionData) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.FmdClues) > 0 { + for _, e := range m.FmdClues { + l = e.Size() + n += 1 + l + sovTransaction(uint64(l)) + } + } + return n +} + func (m *Action) Size() (n int) { if m == nil { return 0 @@ -7637,22 +7951,16 @@ func (m *TransactionBodyView) Size() (n int) { n += 1 + l + sovTransaction(uint64(l)) } } - if m.ExpiryHeight != 0 { - n += 1 + sovTransaction(uint64(m.ExpiryHeight)) - } - l = len(m.ChainId) - if l > 0 { + if m.TransactionParameters != nil { + l = m.TransactionParameters.Size() n += 1 + l + sovTransaction(uint64(l)) } if m.Fee != nil { l = m.Fee.Size() n += 1 + l + sovTransaction(uint64(l)) } - if len(m.FmdClues) > 0 { - for _, e := range m.FmdClues { - l = e.Size() - n += 1 + l + sovTransaction(uint64(l)) - } + if m.XDetectionData != nil { + n += m.XDetectionData.Size() } if m.XMemoView != nil { n += m.XMemoView.Size() @@ -7660,6 +7968,18 @@ func (m *TransactionBodyView) Size() (n int) { return n } +func (m *TransactionBodyView_DetectionData) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.DetectionData != nil { + l = m.DetectionData.Size() + n += 1 + l + sovTransaction(uint64(l)) + } + return n +} func (m *TransactionBodyView_MemoView) Size() (n int) { if m == nil { return 0 @@ -9182,10 +9502,10 @@ func (m *TransactionBody) Unmarshal(dAtA []byte) error { } iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ExpiryHeight", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TransactionParameters", wireType) } - m.ExpiryHeight = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTransaction @@ -9195,16 +9515,33 @@ func (m *TransactionBody) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ExpiryHeight |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthTransaction + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTransaction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TransactionParameters == nil { + m.TransactionParameters = &TransactionParameters{} + } + if err := m.TransactionParameters.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ChainId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Fee", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTransaction @@ -9214,27 +9551,31 @@ func (m *TransactionBody) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthTransaction } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthTransaction } if postIndex > l { return io.ErrUnexpectedEOF } - m.ChainId = string(dAtA[iNdEx:postIndex]) + if m.Fee == nil { + m.Fee = &v1alpha1.Fee{} + } + if err := m.Fee.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Fee", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DetectionData", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -9261,16 +9602,16 @@ func (m *TransactionBody) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Fee == nil { - m.Fee = &v1alpha1.Fee{} + if m.DetectionData == nil { + m.DetectionData = &DetectionData{} } - if err := m.Fee.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.DetectionData.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field FmdClues", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MemoData", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -9297,12 +9638,64 @@ func (m *TransactionBody) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.FmdClues = append(m.FmdClues, &v1alpha1.Clue{}) - if err := m.FmdClues[len(m.FmdClues)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.MemoData == nil { + m.MemoData = &MemoData{} + } + if err := m.MemoData.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 6: + default: + iNdEx = preIndex + skippy, err := skipTransaction(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTransaction + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MemoData) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransaction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MemoData: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MemoData: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field EncryptedMemo", wireType) } @@ -9333,7 +9726,192 @@ func (m *TransactionBody) Unmarshal(dAtA []byte) error { } v := make([]byte, postIndex-iNdEx) copy(v, dAtA[iNdEx:postIndex]) - m.XEncryptedMemo = &TransactionBody_EncryptedMemo{v} + m.XEncryptedMemo = &MemoData_EncryptedMemo{v} + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTransaction(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTransaction + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TransactionParameters) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransaction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TransactionParameters: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TransactionParameters: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpiryHeight", wireType) + } + m.ExpiryHeight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransaction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ExpiryHeight |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChainId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransaction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTransaction + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTransaction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTransaction(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTransaction + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DetectionData) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransaction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DetectionData: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DetectionData: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FmdClues", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransaction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTransaction + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTransaction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FmdClues = append(m.FmdClues, &v1alpha1.Clue{}) + if err := m.FmdClues[len(m.FmdClues)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -10980,29 +11558,10 @@ func (m *TransactionBodyView) Unmarshal(dAtA []byte) error { } iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ExpiryHeight", wireType) - } - m.ExpiryHeight = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTransaction - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ExpiryHeight |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ChainId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TransactionParameters", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTransaction @@ -11012,25 +11571,29 @@ func (m *TransactionBodyView) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthTransaction } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthTransaction } if postIndex > l { return io.ErrUnexpectedEOF } - m.ChainId = string(dAtA[iNdEx:postIndex]) + if m.TransactionParameters == nil { + m.TransactionParameters = &TransactionParameters{} + } + if err := m.TransactionParameters.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 4: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Fee", wireType) } @@ -11066,9 +11629,9 @@ func (m *TransactionBodyView) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 5: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field FmdClues", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DetectionData", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -11095,12 +11658,13 @@ func (m *TransactionBodyView) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.FmdClues = append(m.FmdClues, &v1alpha1.Clue{}) - if err := m.FmdClues[len(m.FmdClues)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + v := &DetectionData{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } + m.XDetectionData = &TransactionBodyView_DetectionData{v} iNdEx = postIndex - case 6: + case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field MemoView", wireType) } diff --git a/chain/penumbra/penumbra_app_node.go b/chain/penumbra/penumbra_app_node.go index 4d344366a..4e9341e9e 100644 --- a/chain/penumbra/penumbra_app_node.go +++ b/chain/penumbra/penumbra_app_node.go @@ -50,10 +50,9 @@ func NewPenumbraAppNode( pn.containerLifecycle = dockerutil.NewContainerLifecycle(log, dockerClient, pn.Name()) - pv, err := dockerClient.VolumeCreate(ctx, volumetypes.VolumeCreateBody{ + pv, err := dockerClient.VolumeCreate(ctx, volumetypes.CreateOptions{ Labels: map[string]string{ - dockerutil.CleanupLabel: testName, - + dockerutil.CleanupLabel: testName, dockerutil.NodeOwnerLabel: pn.Name(), }, }) @@ -202,7 +201,7 @@ func (p *PenumbraAppNode) GenerateGenesisFile( allocationsCsv := []byte("\"amount\",\"denom\",\"address\"\n") for _, allocation := range allocations { - allocationsCsv = append(allocationsCsv, []byte(fmt.Sprintf("\"%d\",\"%s\",\"%s\"\n", allocation.Amount, allocation.Denom, allocation.Address))...) + allocationsCsv = append(allocationsCsv, []byte(fmt.Sprintf("\"%s\",\"%s\",\"%s\"\n", allocation.Amount.String(), allocation.Denom, allocation.Address))...) } if err := fw.WriteFile(ctx, p.VolumeName, "allocations.csv", allocationsCsv); err != nil { diff --git a/chain/penumbra/penumbra_chain.go b/chain/penumbra/penumbra_chain.go index e5d1cd7e2..19f4c01b3 100644 --- a/chain/penumbra/penumbra_chain.go +++ b/chain/penumbra/penumbra_chain.go @@ -243,7 +243,7 @@ func (c *PenumbraChain) Height(ctx context.Context) (uint64, error) { func (c *PenumbraChain) GetBalance(ctx context.Context, keyName string, denom string) (math.Int, error) { fn := c.getFullNode() if len(fn.PenumbraClientNodes) == 0 { - return 0, fmt.Errorf("no pclientd nodes on the fullnode for balance check") + return math.Int{}, fmt.Errorf("no pclientd nodes on the fullnode for balance check") } // TODO remove this after debugging @@ -254,12 +254,10 @@ func (c *PenumbraChain) GetBalance(ctx context.Context, keyName string, denom st bal, err := fn.PenumbraClientNodes[keyName].GetBalance(ctx, denom) if err != nil { - return 0, err + return math.Int{}, err } - // TODO: this is messing up the precision but the ibc.Chain interface specifies the GetBalance return value as int64 - // we need to figure out what the best solution is here. Possibly switch to big.Int and refactor - return bal.Int64(), nil + return bal, nil } // Implements Chain interface @@ -269,78 +267,6 @@ func (c *PenumbraChain) GetGasFeesInNativeDenom(gasPaid int64) int64 { return int64(fees) } -// NewChainNode returns a penumbra chain node with tendermint and penumbra nodes -// with docker volumes created. -func (c *PenumbraChain) NewChainNode( - ctx context.Context, - i int, - dockerClient *dockerclient.Client, - networkID string, - testName string, - tendermintImage ibc.DockerImage, - penumbraImage ibc.DockerImage, -) (PenumbraNode, error) { - tn := tendermint.NewTendermintNode(c.log, i, c, dockerClient, networkID, testName, tendermintImage) - - tv, err := dockerClient.VolumeCreate(ctx, volumetypes.CreateOptions{ - Labels: map[string]string{ - dockerutil.CleanupLabel: testName, - - dockerutil.NodeOwnerLabel: tn.Name(), - }, - }) - if err != nil { - return PenumbraNode{}, fmt.Errorf("creating tendermint volume: %w", err) - } - tn.VolumeName = tv.Name - if err := dockerutil.SetVolumeOwner(ctx, dockerutil.VolumeOwnerOptions{ - Log: c.log, - - Client: dockerClient, - - VolumeName: tn.VolumeName, - ImageRef: tn.Image.Ref(), - TestName: tn.TestName, - UidGid: tn.Image.UidGid, - }); err != nil { - return PenumbraNode{}, fmt.Errorf("set tendermint volume owner: %w", err) - } - - pn := &PenumbraAppNode{log: c.log, Index: i, Chain: c, - DockerClient: dockerClient, NetworkID: networkID, TestName: testName, Image: penumbraImage} - - pn.containerLifecycle = dockerutil.NewContainerLifecycle(c.log, dockerClient, pn.Name()) - - pv, err := dockerClient.VolumeCreate(ctx, volumetypes.CreateOptions{ - Labels: map[string]string{ - dockerutil.CleanupLabel: testName, - - dockerutil.NodeOwnerLabel: pn.Name(), - }, - }) - if err != nil { - return PenumbraNode{}, fmt.Errorf("creating penumbra volume: %w", err) - } - pn.VolumeName = pv.Name - if err := dockerutil.SetVolumeOwner(ctx, dockerutil.VolumeOwnerOptions{ - Log: c.log, - - Client: dockerClient, - - VolumeName: pn.VolumeName, - ImageRef: pn.Image.Ref(), - TestName: pn.TestName, - UidGid: tn.Image.UidGid, - }); err != nil { - return PenumbraNode{}, fmt.Errorf("set penumbra volume owner: %w", err) - } - - return PenumbraNode{ - TendermintNode: tn, - PenumbraAppNode: pn, - }, nil -} - // creates the test node objects required for bootstrapping tests func (c *PenumbraChain) initializeChainNodes( ctx context.Context, @@ -384,12 +310,14 @@ type GenesisValidatorPubKey struct { Type string `json:"type"` Value string `json:"value"` } + type GenesisValidators struct { Address string `json:"address"` Name string `json:"name"` Power string `json:"power"` PubKey GenesisValidatorPubKey `json:"pub_key"` } + type GenesisFile struct { Validators []GenesisValidators `json:"validators"` } diff --git a/chain/penumbra/penumbra_client_node.go b/chain/penumbra/penumbra_client_node.go index b11dcbb81..9a7df2c3a 100644 --- a/chain/penumbra/penumbra_client_node.go +++ b/chain/penumbra/penumbra_client_node.go @@ -8,6 +8,7 @@ import ( "math/big" "strings" + "cosmossdk.io/math" "github.com/BurntSushi/toml" volumetypes "github.com/docker/docker/api/types/volume" "github.com/docker/docker/client" @@ -73,10 +74,9 @@ func NewClientNode( p.containerLifecycle = dockerutil.NewContainerLifecycle(log, dockerClient, p.Name()) - tv, err := dockerClient.VolumeCreate(ctx, volumetypes.VolumeCreateBody{ + tv, err := dockerClient.VolumeCreate(ctx, volumetypes.CreateOptions{ Labels: map[string]string{ - dockerutil.CleanupLabel: testName, - + dockerutil.CleanupLabel: testName, dockerutil.NodeOwnerLabel: p.Name(), }, }) @@ -147,8 +147,8 @@ func (p *PenumbraClientNode) SendFunds(ctx context.Context, amount ibc.WalletAmo Amount: &cryptov1alpha1.Amount{ // TODO: this is incorrect, we need to take a 128-bit int and break it into the hi/lo parts before // building the tx plan - Lo: uint64(amount.Amount), - Hi: uint64(amount.Amount), + Lo: amount.Amount.Uint64(), + Hi: amount.Amount.Uint64(), }, // TODO: this should be the AssetID and not the denom string. One option is to make a mapping // of DenomID->Denom Strings or see if we can get a change server side for this as well like the balance @@ -215,8 +215,7 @@ func (p *PenumbraClientNode) SendIBCTransfer( panic("not yet implemented") } -// TODO: We probably need to change all the balance func sigs to return *big.Int -func (p *PenumbraClientNode) GetBalance(ctx context.Context, denom string) (*big.Int, error) { +func (p *PenumbraClientNode) GetBalance(ctx context.Context, denom string) (math.Int, error) { fmt.Println("Entering GetBalance function from client perspective...") pclientd_addr := p.hostGRPCPort fmt.Printf("Dialing pclientd(?) grpc address at %v\n", pclientd_addr) @@ -225,77 +224,75 @@ func (p *PenumbraClientNode) GetBalance(ctx context.Context, denom string) (*big grpc.WithTransportCredentials(insecure.NewCredentials()), ) if err != nil { - return nil, err + return math.Int{}, err } defer channel.Close() viewClient := viewv1alpha1.NewViewProtocolServiceClient(channel) - addressReq := &viewv1alpha1.AddressByIndexRequest{ - AddressIndex: &cryptov1alpha1.AddressIndex{ - Account: 0, - }} - fmt.Println("In GetBalance, requesting address...") - addressResponse, err := viewClient.AddressByIndex(ctx, addressReq) - if err != nil { - return nil, err + fmt.Println("In GetBalance, building BalancesRequest...") + balanceRequest := &viewv1alpha1.BalancesRequest{ + AccountFilter: &cryptov1alpha1.AddressIndex{ + Account: 0, + }, + AssetIdFilter: nil, } - fmt.Println("Received address bytes:", addressResponse.Address.Inner) - - fmt.Println("In GetBalance, building BalanceByAddressRequest...") - balanceRequest := &viewv1alpha1.BalanceByAddressRequest{ - Address: addressResponse.Address, - } - fmt.Println("In GetBalance, submitting BalanceByAddressRequest...") // The BalanceByAddress method returns a stream response, containing // zero-or-more balances, including denom and amount info per balance. - balanceStream, err := viewClient.BalanceByAddress(ctx, balanceRequest) + fmt.Println("In GetBalance, submitting BalancesRequest...") + balanceStream, err := viewClient.Balances(ctx, balanceRequest) if err != nil { - return nil, err + return math.Int{}, err } - var balances []viewv1alpha1.BalanceByAddressResponse + var balances []*viewv1alpha1.BalancesResponse for { balance, err := balanceStream.Recv() if err != nil { // A gRPC streaming response will return EOF when it's done. if err == io.EOF { + fmt.Println("Found expected EOF error") break } else { fmt.Println("Failed to get balance:", err) - return nil, err + return math.Int{}, err } } - balances = append(balances, *balance) + fmt.Printf("Adding %v to balances array \n", balance) + balances = append(balances, balance) } - fmt.Println("In GetBalance, dumping all wallet contents...") - for _, b := range balances { - metadata, err := p.GetDenomMetadata(ctx, b.Asset) - if err != nil { - p.log.Error( - "Failed to retrieve DenomMetadata", - zap.String("asset_id", b.Asset.String()), - zap.Error(err), - ) - - continue - } - - if metadata.Base == denom { - return translateHiAndLo(b.Amount.Hi, b.Amount.Lo), nil - } - } + fmt.Println("HERE DA BALANCES YO") + fmt.Printf("%v \n", balances) + fmt.Println() + + //fmt.Println("In GetBalance, dumping all wallet contents...") + //for _, b := range balances { + // metadata, err := p.GetDenomMetadata(ctx, b.Balance.AssetId) + // if err != nil { + // p.log.Error( + // "Failed to retrieve DenomMetadata", + // zap.String("asset_id", b.Balance.String()), + // zap.Error(err), + // ) + // + // continue + // } + // + // if metadata.Base == denom { + // return translateHiAndLo(b.Balance.Amount.Hi, b.Balance.Amount.Lo), nil + // } + //} // we should have found the specified denom balance by this point - return nil, fmt.Errorf("balance not found for specified denom %s", denom) + return math.Int{}, fmt.Errorf("balance not found for specified denom %s", denom) } // translateHiAndLo takes the high and low order bytes and decodes the two uint64 values into the single int128 value // they represent. Since Go does not support native uint128 we make use of the big.Int type. // see: https://github.com/penumbra-zone/penumbra/blob/4d175986f385e00638328c64d729091d45eb042a/crates/core/crypto/src/asset/amount.rs#L220-L240 -func translateHiAndLo(hi, lo uint64) *big.Int { +func translateHiAndLo(hi, lo uint64) math.Int { hiBig := big.NewInt(0).SetUint64(hi) loBig := big.NewInt(0).SetUint64(lo) @@ -303,7 +300,8 @@ func translateHiAndLo(hi, lo uint64) *big.Int { hiBig.Lsh(hiBig, 64) // Add the lower order bytes - return big.NewInt(0).Add(hiBig, loBig) + i := big.NewInt(0).Add(hiBig, loBig) + return math.NewIntFromBigInt(i) } // GetDenomMetadata invokes a gRPC request to obtain the DenomMetadata for a specified asset ID. diff --git a/chain/penumbra/view/v1alpha1/view.pb.go b/chain/penumbra/view/v1alpha1/view.pb.go index c20593ffb..dd6910e54 100644 --- a/chain/penumbra/view/v1alpha1/view.pb.go +++ b/chain/penumbra/view/v1alpha1/view.pb.go @@ -950,22 +950,25 @@ func (m *EphemeralAddressResponse) GetAddress() *v1alpha11.Address { return nil } -type BalanceByAddressRequest struct { - Address *v1alpha11.Address `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` +type BalancesRequest struct { + // If present, filter balances to only include the account specified by the `AddressIndex`. + AccountFilter *v1alpha11.AddressIndex `protobuf:"bytes,1,opt,name=account_filter,json=accountFilter,proto3" json:"account_filter,omitempty"` + // If present, filter balances to only include the specified asset ID. + AssetIdFilter *v1alpha11.AssetId `protobuf:"bytes,2,opt,name=asset_id_filter,json=assetIdFilter,proto3" json:"asset_id_filter,omitempty"` } -func (m *BalanceByAddressRequest) Reset() { *m = BalanceByAddressRequest{} } -func (m *BalanceByAddressRequest) String() string { return proto.CompactTextString(m) } -func (*BalanceByAddressRequest) ProtoMessage() {} -func (*BalanceByAddressRequest) Descriptor() ([]byte, []int) { +func (m *BalancesRequest) Reset() { *m = BalancesRequest{} } +func (m *BalancesRequest) String() string { return proto.CompactTextString(m) } +func (*BalancesRequest) ProtoMessage() {} +func (*BalancesRequest) Descriptor() ([]byte, []int) { return fileDescriptor_0aa947b204e6a7c2, []int{12} } -func (m *BalanceByAddressRequest) XXX_Unmarshal(b []byte) error { +func (m *BalancesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *BalanceByAddressRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *BalancesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_BalanceByAddressRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_BalancesRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -975,42 +978,49 @@ func (m *BalanceByAddressRequest) XXX_Marshal(b []byte, deterministic bool) ([]b return b[:n], nil } } -func (m *BalanceByAddressRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_BalanceByAddressRequest.Merge(m, src) +func (m *BalancesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_BalancesRequest.Merge(m, src) } -func (m *BalanceByAddressRequest) XXX_Size() int { +func (m *BalancesRequest) XXX_Size() int { return m.Size() } -func (m *BalanceByAddressRequest) XXX_DiscardUnknown() { - xxx_messageInfo_BalanceByAddressRequest.DiscardUnknown(m) +func (m *BalancesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_BalancesRequest.DiscardUnknown(m) } -var xxx_messageInfo_BalanceByAddressRequest proto.InternalMessageInfo +var xxx_messageInfo_BalancesRequest proto.InternalMessageInfo -func (m *BalanceByAddressRequest) GetAddress() *v1alpha11.Address { +func (m *BalancesRequest) GetAccountFilter() *v1alpha11.AddressIndex { if m != nil { - return m.Address + return m.AccountFilter } return nil } -type BalanceByAddressResponse struct { - Asset *v1alpha11.AssetId `protobuf:"bytes,1,opt,name=asset,proto3" json:"asset,omitempty"` - Amount *v1alpha11.Amount `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` +func (m *BalancesRequest) GetAssetIdFilter() *v1alpha11.AssetId { + if m != nil { + return m.AssetIdFilter + } + return nil } -func (m *BalanceByAddressResponse) Reset() { *m = BalanceByAddressResponse{} } -func (m *BalanceByAddressResponse) String() string { return proto.CompactTextString(m) } -func (*BalanceByAddressResponse) ProtoMessage() {} -func (*BalanceByAddressResponse) Descriptor() ([]byte, []int) { +type BalancesResponse struct { + Account *v1alpha11.AddressIndex `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` + Balance *v1alpha11.Value `protobuf:"bytes,2,opt,name=balance,proto3" json:"balance,omitempty"` +} + +func (m *BalancesResponse) Reset() { *m = BalancesResponse{} } +func (m *BalancesResponse) String() string { return proto.CompactTextString(m) } +func (*BalancesResponse) ProtoMessage() {} +func (*BalancesResponse) Descriptor() ([]byte, []int) { return fileDescriptor_0aa947b204e6a7c2, []int{13} } -func (m *BalanceByAddressResponse) XXX_Unmarshal(b []byte) error { +func (m *BalancesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *BalanceByAddressResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *BalancesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_BalanceByAddressResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_BalancesResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1020,28 +1030,28 @@ func (m *BalanceByAddressResponse) XXX_Marshal(b []byte, deterministic bool) ([] return b[:n], nil } } -func (m *BalanceByAddressResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_BalanceByAddressResponse.Merge(m, src) +func (m *BalancesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_BalancesResponse.Merge(m, src) } -func (m *BalanceByAddressResponse) XXX_Size() int { +func (m *BalancesResponse) XXX_Size() int { return m.Size() } -func (m *BalanceByAddressResponse) XXX_DiscardUnknown() { - xxx_messageInfo_BalanceByAddressResponse.DiscardUnknown(m) +func (m *BalancesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_BalancesResponse.DiscardUnknown(m) } -var xxx_messageInfo_BalanceByAddressResponse proto.InternalMessageInfo +var xxx_messageInfo_BalancesResponse proto.InternalMessageInfo -func (m *BalanceByAddressResponse) GetAsset() *v1alpha11.AssetId { +func (m *BalancesResponse) GetAccount() *v1alpha11.AddressIndex { if m != nil { - return m.Asset + return m.Account } return nil } -func (m *BalanceByAddressResponse) GetAmount() *v1alpha11.Amount { +func (m *BalancesResponse) GetBalance() *v1alpha11.Value { if m != nil { - return m.Amount + return m.Balance } return nil } @@ -3424,8 +3434,8 @@ func init() { proto.RegisterType((*IndexByAddressResponse)(nil), "penumbra.view.v1alpha1.IndexByAddressResponse") proto.RegisterType((*EphemeralAddressRequest)(nil), "penumbra.view.v1alpha1.EphemeralAddressRequest") proto.RegisterType((*EphemeralAddressResponse)(nil), "penumbra.view.v1alpha1.EphemeralAddressResponse") - proto.RegisterType((*BalanceByAddressRequest)(nil), "penumbra.view.v1alpha1.BalanceByAddressRequest") - proto.RegisterType((*BalanceByAddressResponse)(nil), "penumbra.view.v1alpha1.BalanceByAddressResponse") + proto.RegisterType((*BalancesRequest)(nil), "penumbra.view.v1alpha1.BalancesRequest") + proto.RegisterType((*BalancesResponse)(nil), "penumbra.view.v1alpha1.BalancesResponse") proto.RegisterType((*ViewAuthToken)(nil), "penumbra.view.v1alpha1.ViewAuthToken") proto.RegisterType((*ViewAuthRequest)(nil), "penumbra.view.v1alpha1.ViewAuthRequest") proto.RegisterType((*ViewAuthResponse)(nil), "penumbra.view.v1alpha1.ViewAuthResponse") @@ -3467,190 +3477,193 @@ func init() { func init() { proto.RegisterFile("penumbra/view/v1alpha1/view.proto", fileDescriptor_0aa947b204e6a7c2) } var fileDescriptor_0aa947b204e6a7c2 = []byte{ - // 2927 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x1b, 0x4d, 0x6f, 0xdc, 0xc6, - 0xd5, 0xdc, 0xd5, 0x97, 0xdf, 0x6a, 0x77, 0x65, 0xda, 0x96, 0xd6, 0x9b, 0x44, 0x49, 0x99, 0xd8, - 0x56, 0x9c, 0x78, 0x65, 0x2b, 0xce, 0x47, 0x95, 0x04, 0x8d, 0xd6, 0xaa, 0x2c, 0xc1, 0x71, 0xac, - 0x52, 0xb6, 0xd2, 0x24, 0x4a, 0x89, 0x11, 0x39, 0x92, 0x58, 0x71, 0x49, 0x86, 0x9c, 0xd5, 0x4a, - 0xed, 0x29, 0x45, 0x50, 0x18, 0x05, 0x1a, 0x14, 0x45, 0xd1, 0x22, 0xd7, 0x1e, 0x8b, 0x5e, 0x7b, - 0xed, 0xa5, 0x97, 0xa2, 0xa7, 0x9c, 0x8a, 0x02, 0x05, 0x8a, 0xc0, 0x41, 0x2f, 0xed, 0x5f, 0x28, - 0xd0, 0x62, 0xbe, 0xb8, 0x24, 0x97, 0xf4, 0x6a, 0x25, 0x19, 0x6e, 0x7b, 0xd2, 0xce, 0xcc, 0xfb, - 0x9e, 0x37, 0xef, 0xbd, 0x79, 0x43, 0xc1, 0x37, 0x7c, 0xec, 0xb6, 0x5b, 0x9b, 0x01, 0x9a, 0xdd, - 0xb3, 0x71, 0x67, 0x76, 0xef, 0x3a, 0x72, 0xfc, 0x1d, 0x74, 0x9d, 0x8d, 0x1a, 0x7e, 0xe0, 0x11, - 0x4f, 0x9d, 0x94, 0x20, 0x0d, 0x36, 0x29, 0x41, 0xea, 0x33, 0x11, 0xaa, 0xe9, 0x05, 0x78, 0xd6, - 0xdc, 0x41, 0xb6, 0xdb, 0x25, 0xc0, 0x86, 0x9c, 0x42, 0xfd, 0x4a, 0x0a, 0x32, 0x38, 0xf0, 0x89, - 0x17, 0x03, 0x65, 0x63, 0x01, 0xfb, 0x42, 0x12, 0xd6, 0xc2, 0xfb, 0x5d, 0x40, 0x0b, 0xef, 0x0b, - 0xa8, 0x1b, 0x49, 0x28, 0x12, 0x20, 0x37, 0x44, 0x26, 0xb1, 0xbd, 0x98, 0x04, 0xb1, 0xc9, 0x6c, - 0xda, 0xf6, 0xa6, 0xd9, 0x85, 0xb6, 0x37, 0x4d, 0x01, 0x95, 0xd2, 0x2b, 0x24, 0x68, 0x17, 0x77, - 0xe1, 0xd8, 0x90, 0x43, 0x6a, 0x5f, 0x29, 0x50, 0x5b, 0x68, 0x93, 0x1d, 0x2f, 0xb0, 0x7f, 0x80, - 0x17, 0x5c, 0xab, 0xd9, 0xb6, 0x1d, 0x4b, 0xc7, 0x9f, 0xb4, 0x71, 0x48, 0xd4, 0xef, 0xc1, 0x44, - 0x4c, 0x02, 0xc3, 0x77, 0x90, 0x5b, 0x53, 0x9e, 0x53, 0x66, 0x4a, 0x73, 0xaf, 0x34, 0x22, 0x8b, - 0x52, 0x0e, 0x8d, 0xb8, 0xa0, 0x92, 0x4f, 0xe3, 0x5e, 0x77, 0x72, 0xd5, 0x41, 0xae, 0x5e, 0x25, - 0xc9, 0x09, 0xd5, 0x02, 0x15, 0x09, 0xde, 0x88, 0x71, 0xb0, 0x10, 0x41, 0xb5, 0x02, 0xe3, 0xf0, - 0xea, 0x61, 0x38, 0x2c, 0xc4, 0xb1, 0x17, 0x11, 0x41, 0xfa, 0x19, 0x94, 0x9e, 0xd2, 0x5c, 0xb8, - 0x90, 0xa1, 0x61, 0xe8, 0x7b, 0x6e, 0x88, 0xd5, 0xef, 0x40, 0x29, 0x46, 0x59, 0x68, 0x37, 0x3b, - 0xa0, 0x76, 0x7a, 0x9c, 0x86, 0xf6, 0x85, 0x02, 0x4f, 0x35, 0x03, 0x0f, 0x59, 0x26, 0x0a, 0x49, - 0x1c, 0x4a, 0x58, 0xf5, 0xe4, 0x59, 0xaa, 0x97, 0xa1, 0x8a, 0x3a, 0xc8, 0x26, 0x86, 0x85, 0x09, - 0xe6, 0x64, 0xa9, 0x15, 0xc7, 0xf4, 0x0a, 0x9b, 0x5e, 0x94, 0xb3, 0xda, 0xa7, 0x0a, 0x3c, 0x9d, - 0x2d, 0x9b, 0xb0, 0xc7, 0x6b, 0x50, 0xb0, 0x2d, 0x21, 0xd3, 0xa5, 0xc3, 0xc8, 0xb4, 0x62, 0xe9, - 0x05, 0xdb, 0x52, 0x5f, 0x84, 0x89, 0x88, 0xb7, 0xb1, 0x83, 0xed, 0xed, 0x1d, 0xc2, 0x44, 0x18, - 0xd2, 0xab, 0xd1, 0xfc, 0x32, 0x9b, 0xd6, 0xbe, 0x00, 0xb8, 0x90, 0x72, 0x0d, 0x17, 0x07, 0xd2, - 0x3a, 0xcf, 0x43, 0x19, 0xef, 0xfb, 0x76, 0x70, 0x20, 0xa9, 0x28, 0x8c, 0xca, 0x38, 0x9f, 0xe4, - 0x24, 0xd4, 0x1b, 0x50, 0xdc, 0xc2, 0x58, 0x78, 0x8a, 0x96, 0x12, 0x53, 0x9c, 0xc5, 0x48, 0xc2, - 0x25, 0x8c, 0x75, 0x0a, 0xae, 0xaa, 0x30, 0xd4, 0xc2, 0x2d, 0xaf, 0x56, 0x7c, 0x4e, 0x99, 0x39, - 0xad, 0xb3, 0xdf, 0xea, 0x06, 0x4c, 0x20, 0xd3, 0xf4, 0xda, 0x2e, 0x31, 0xb6, 0x03, 0xaf, 0xed, - 0x1b, 0xb6, 0x55, 0xab, 0x30, 0xb2, 0x57, 0xfb, 0x90, 0x5d, 0xe0, 0x68, 0xb7, 0x28, 0xd6, 0x8a, - 0xb5, 0x7c, 0x4a, 0xaf, 0xa0, 0xc4, 0xcc, 0x03, 0x45, 0x51, 0x75, 0x18, 0xf5, 0xda, 0xc4, 0x6f, - 0x93, 0xb0, 0x76, 0xee, 0xb9, 0xe2, 0x4c, 0x69, 0xee, 0x8d, 0x46, 0x76, 0x24, 0x6a, 0xe4, 0x1a, - 0xa4, 0x71, 0x97, 0x11, 0xd0, 0x25, 0x21, 0xf5, 0x5d, 0x18, 0x0e, 0x3b, 0xc8, 0x0f, 0x6b, 0xd3, - 0x8c, 0xe2, 0x6b, 0x83, 0x53, 0x5c, 0xeb, 0x20, 0x5f, 0xe7, 0x44, 0xd4, 0x0d, 0x28, 0x59, 0xd8, - 0xc1, 0xdb, 0xec, 0xb8, 0x84, 0xb5, 0x19, 0x46, 0x73, 0x7e, 0x70, 0x9a, 0x8b, 0x9c, 0x08, 0xd6, - 0xe3, 0xe4, 0xd4, 0x4d, 0x28, 0xb7, 0xdd, 0x38, 0xfd, 0x39, 0x46, 0xff, 0xad, 0xc1, 0xe9, 0xdf, - 0x97, 0x64, 0xb0, 0x9e, 0x24, 0xa9, 0x2e, 0x41, 0xc9, 0xde, 0x34, 0x0d, 0x8e, 0x15, 0xd6, 0xde, - 0x62, 0x1c, 0x2e, 0xa6, 0x36, 0x8f, 0x86, 0xc6, 0xae, 0xcb, 0x6e, 0x9a, 0x0b, 0xdc, 0xeb, 0xc1, - 0x96, 0x3f, 0xc3, 0xfa, 0x8f, 0x15, 0x18, 0xe1, 0xb6, 0x56, 0xe7, 0x61, 0x78, 0x0f, 0x39, 0x6d, - 0x2c, 0xce, 0xc1, 0x0b, 0x7d, 0x3c, 0x61, 0x9d, 0xc2, 0xea, 0x1c, 0x45, 0x7d, 0x07, 0x46, 0x91, - 0x65, 0x05, 0x38, 0x0c, 0x85, 0x7b, 0x5e, 0xea, 0xe7, 0x47, 0x1c, 0x5a, 0x97, 0x68, 0xf5, 0x3f, - 0x28, 0x30, 0x44, 0xb7, 0xe8, 0x58, 0x62, 0xac, 0xc0, 0x38, 0x41, 0xc1, 0x36, 0x26, 0x06, 0x0a, - 0x43, 0x4c, 0x0e, 0x2b, 0x0b, 0x85, 0x5d, 0xb1, 0xf4, 0x12, 0xc7, 0x65, 0x43, 0x79, 0xd8, 0x8a, - 0x03, 0x1d, 0xb6, 0xfa, 0xe7, 0x0a, 0x8c, 0x49, 0xa7, 0x50, 0xdf, 0x86, 0x11, 0xd4, 0xa2, 0x67, - 0x43, 0xa8, 0x72, 0xb1, 0x9f, 0x1c, 0x0c, 0x58, 0x17, 0x48, 0xea, 0x4d, 0x38, 0x1d, 0x20, 0x82, - 0x79, 0x7a, 0x28, 0x66, 0x6a, 0xc2, 0x73, 0x5a, 0x44, 0x40, 0x47, 0x04, 0xb3, 0x7c, 0x30, 0x16, - 0x88, 0x5f, 0xf5, 0x9f, 0x2a, 0x00, 0x5d, 0x2f, 0x3a, 0x96, 0x71, 0x13, 0xf2, 0x14, 0x8e, 0x26, - 0x4f, 0xf3, 0x2c, 0x9c, 0x31, 0xd2, 0xa1, 0x47, 0xc3, 0x50, 0xcf, 0x3a, 0x03, 0x22, 0x38, 0xdf, - 0x82, 0xa1, 0xe3, 0xe6, 0x60, 0x46, 0x40, 0xfb, 0xb9, 0x02, 0xe7, 0x85, 0xdf, 0x35, 0x0f, 0x56, - 0x5c, 0x0b, 0xef, 0xcb, 0xf0, 0xbb, 0x0a, 0x65, 0xe1, 0x87, 0x86, 0x4d, 0xe7, 0x05, 0xaf, 0x97, - 0x0e, 0xe7, 0xc4, 0x9c, 0xd4, 0x38, 0x8a, 0x8d, 0x68, 0x6e, 0xb2, 0xec, 0xd0, 0x77, 0xd0, 0x81, - 0x61, 0x7a, 0xee, 0x96, 0x1d, 0xb4, 0x64, 0x6e, 0x12, 0xd3, 0x37, 0xf9, 0xac, 0xf6, 0x21, 0x4c, - 0xa6, 0x65, 0x12, 0x7a, 0xc7, 0xce, 0x94, 0x72, 0xa4, 0x33, 0xa5, 0x7d, 0x00, 0xe7, 0x19, 0xc9, - 0xe6, 0x81, 0x5c, 0x12, 0xfa, 0x1e, 0x9f, 0xf4, 0xa7, 0x0a, 0x4c, 0xa6, 0x69, 0x0b, 0xb9, 0xef, - 0x1f, 0xdf, 0x98, 0xcb, 0xa7, 0x92, 0xe6, 0x7c, 0xa0, 0x28, 0xcd, 0x09, 0xa8, 0x18, 0x09, 0xba, - 0xda, 0x2f, 0x14, 0x98, 0xfa, 0xb6, 0xbf, 0x83, 0x5b, 0x38, 0x40, 0x4e, 0x4a, 0xc3, 0x27, 0xb8, - 0xa3, 0x1b, 0x50, 0xeb, 0x95, 0xea, 0xc4, 0xf6, 0xf4, 0x23, 0x98, 0x6a, 0x22, 0x07, 0xb9, 0x26, - 0x7e, 0x0c, 0xbb, 0xfa, 0x2b, 0x05, 0x6a, 0xbd, 0xd4, 0x85, 0xec, 0x6f, 0xc1, 0x30, 0x8f, 0xaa, - 0xca, 0x40, 0x51, 0x95, 0x23, 0xc5, 0x82, 0x61, 0xe1, 0x08, 0xc1, 0x50, 0xbb, 0x08, 0xe5, 0x75, - 0x1b, 0x77, 0x68, 0x49, 0x7b, 0xcf, 0xdb, 0xc5, 0xae, 0x7a, 0x0e, 0x86, 0x6d, 0x1a, 0x26, 0x98, - 0x34, 0xe3, 0x3a, 0x1f, 0x68, 0x3a, 0x54, 0x25, 0x98, 0xb4, 0xca, 0xb7, 0xa0, 0xb8, 0xb5, 0xb7, - 0x2b, 0x84, 0xee, 0x57, 0xde, 0x2c, 0xb5, 0x1d, 0x87, 0x12, 0xb0, 0xdd, 0xed, 0xdb, 0xf8, 0x40, - 0xa7, 0x98, 0xda, 0x5d, 0x98, 0xe8, 0xd2, 0x14, 0xb6, 0x78, 0x13, 0x86, 0x09, 0x15, 0xa3, 0x37, - 0xb2, 0x27, 0x53, 0x7b, 0x42, 0x66, 0x9d, 0xe3, 0x68, 0x3f, 0x52, 0xa0, 0xbc, 0x46, 0x10, 0x69, - 0x47, 0x3b, 0xf7, 0x58, 0xeb, 0xb1, 0xec, 0x98, 0xab, 0x43, 0x45, 0xca, 0x20, 0x74, 0x7a, 0x16, - 0x4a, 0xe1, 0x81, 0x6b, 0x26, 0x2b, 0x50, 0xa0, 0x53, 0xa2, 0xfe, 0x7c, 0x16, 0x4a, 0x26, 0x22, - 0xe6, 0x8e, 0xed, 0x6e, 0x1b, 0x6d, 0x5f, 0x78, 0x3f, 0xc8, 0xa9, 0xfb, 0xbe, 0xf6, 0x40, 0x81, - 0xb3, 0x9c, 0xe8, 0x1a, 0x09, 0x30, 0x6a, 0x3d, 0x41, 0xf5, 0x02, 0x38, 0x97, 0x94, 0x44, 0x28, - 0xf9, 0x4d, 0xb8, 0xe0, 0x20, 0x82, 0x43, 0x62, 0xec, 0xba, 0x5e, 0xc7, 0x35, 0x36, 0x1d, 0xcf, - 0xdc, 0x4d, 0xaa, 0x3c, 0xc9, 0x01, 0x6e, 0xd3, 0xf5, 0x26, 0x5d, 0xee, 0xaa, 0x1f, 0xb7, 0x4f, - 0x21, 0x6d, 0x1f, 0xed, 0x27, 0x45, 0x18, 0x7f, 0xcf, 0x23, 0x38, 0x8c, 0x55, 0xf5, 0xb6, 0x6b, - 0x3a, 0x6d, 0x0b, 0x1b, 0xa1, 0x8f, 0x85, 0xeb, 0x8f, 0xe9, 0xe3, 0x62, 0x72, 0x8d, 0xce, 0xa9, - 0x0b, 0x30, 0xc6, 0x4e, 0x08, 0x35, 0x4a, 0x71, 0xa0, 0x93, 0x35, 0x8a, 0xf8, 0x8f, 0xde, 0x60, - 0x37, 0x74, 0xdc, 0x60, 0x77, 0x07, 0xaa, 0xfc, 0xe0, 0x19, 0xc4, 0x63, 0xb2, 0x5b, 0xb5, 0x91, - 0x41, 0x8e, 0x6d, 0x99, 0x63, 0xdf, 0xf3, 0xa8, 0x8e, 0xd6, 0x93, 0x70, 0x80, 0x07, 0x05, 0x38, - 0xcf, 0x36, 0x63, 0xc9, 0x0b, 0xd6, 0x3d, 0x62, 0xbb, 0xdb, 0x72, 0x57, 0xae, 0xc0, 0x99, 0x3d, - 0x8f, 0xa0, 0x4d, 0x07, 0x1b, 0x88, 0x24, 0xb7, 0xbe, 0x2a, 0x16, 0x16, 0x88, 0xd8, 0xf3, 0x1e, - 0xcb, 0x16, 0x8f, 0x6b, 0xd9, 0x27, 0x60, 0x8a, 0xdf, 0x17, 0xa0, 0xf2, 0xbe, 0x4d, 0xdc, 0x58, - 0xaa, 0xf8, 0x00, 0x26, 0x5c, 0x8f, 0x60, 0xc3, 0xf4, 0x5a, 0x2d, 0x9b, 0xb4, 0xb0, 0x4b, 0x68, - 0xe1, 0x4e, 0xef, 0x10, 0x8d, 0x3e, 0x52, 0xd0, 0x53, 0x85, 0x6f, 0x46, 0x68, 0x7a, 0x95, 0xd2, - 0xe9, 0x8e, 0xc3, 0xcc, 0xf6, 0x49, 0xf1, 0x04, 0xdb, 0x27, 0x4f, 0xc0, 0x80, 0x18, 0xaa, 0x91, - 0xfd, 0x44, 0x1c, 0xd1, 0x61, 0xbc, 0xc3, 0xa7, 0x78, 0x3d, 0x3c, 0x40, 0x3f, 0x43, 0x90, 0x62, - 0x85, 0x71, 0xa9, 0xd3, 0x1d, 0x68, 0x7f, 0x53, 0x60, 0x52, 0x2c, 0xfe, 0x7f, 0xf6, 0xa4, 0x1c, - 0x98, 0xea, 0xd1, 0xef, 0xf1, 0x75, 0xa4, 0x7e, 0x5b, 0x84, 0x32, 0x0b, 0x95, 0x91, 0xd7, 0xd7, - 0x61, 0x6c, 0xcb, 0x76, 0x08, 0x0e, 0x30, 0x6f, 0xf6, 0x8c, 0xe9, 0xd1, 0x58, 0xfd, 0x3e, 0x4c, - 0xc7, 0x62, 0xb5, 0x69, 0x6f, 0xd9, 0xa6, 0x61, 0x61, 0xd7, 0x6b, 0xd9, 0xae, 0xb8, 0xc5, 0xf3, - 0xf3, 0xd1, 0xef, 0xca, 0xb4, 0x48, 0x71, 0xf4, 0xa7, 0xbb, 0x21, 0x9e, 0x91, 0x5a, 0x8c, 0x53, - 0x52, 0xe7, 0xe1, 0x82, 0xe4, 0xd5, 0xbd, 0xd3, 0x1b, 0xac, 0x38, 0x08, 0xd9, 0x59, 0x19, 0xd3, - 0xa7, 0x04, 0xc0, 0x62, 0xb4, 0xce, 0x4a, 0x88, 0x50, 0x7d, 0x03, 0x6a, 0x12, 0xb7, 0xed, 0x6e, - 0x7a, 0xae, 0x45, 0xb3, 0xb1, 0x40, 0x1d, 0x62, 0xa8, 0x93, 0x62, 0xfd, 0xbe, 0x5c, 0x16, 0x98, - 0x97, 0xa0, 0x2a, 0x31, 0x1d, 0xdf, 0x70, 0xb7, 0x48, 0x58, 0x1b, 0x66, 0x08, 0x32, 0x49, 0xbd, - 0xeb, 0xbf, 0xb7, 0x45, 0x42, 0x75, 0x0e, 0xce, 0x4b, 0x38, 0x3f, 0xf0, 0x7c, 0x2f, 0x44, 0x0e, - 0x87, 0x1e, 0x61, 0xd0, 0x67, 0xc5, 0xe2, 0xaa, 0x58, 0x63, 0x38, 0x0b, 0xf0, 0x8c, 0xc4, 0xd9, - 0x63, 0xc1, 0xd6, 0x08, 0xb0, 0x89, 0x6d, 0x9f, 0x48, 0xd1, 0x46, 0x19, 0x6e, 0x5d, 0x00, 0xc9, - 0x80, 0xcc, 0x40, 0xb8, 0x78, 0x1a, 0x86, 0x8a, 0xdc, 0x2d, 0xe1, 0x13, 0x6b, 0x50, 0x61, 0x3b, - 0x60, 0xb4, 0x30, 0x41, 0x31, 0x87, 0x7c, 0xf9, 0x30, 0x5b, 0x70, 0x47, 0xe0, 0xe8, 0x65, 0x2b, - 0x3e, 0xd4, 0x6a, 0x30, 0x79, 0x73, 0x07, 0xd9, 0xee, 0x2a, 0x0a, 0x50, 0x0b, 0x13, 0x1c, 0x48, - 0xef, 0xd0, 0x76, 0x60, 0xaa, 0x67, 0x45, 0x48, 0x72, 0x07, 0xc0, 0x8f, 0x66, 0xf3, 0x4a, 0x49, - 0xd6, 0x37, 0x8f, 0x84, 0x48, 0x93, 0x8a, 0x11, 0xd0, 0x26, 0xe1, 0xdc, 0xd2, 0x9d, 0xc5, 0x5e, - 0x09, 0x2c, 0x38, 0x9f, 0x9a, 0x17, 0xfc, 0x6f, 0x67, 0xf0, 0x7f, 0xe9, 0xd1, 0xfc, 0x97, 0x5a, - 0x56, 0x0e, 0xf7, 0xcf, 0x0b, 0x30, 0x45, 0x33, 0x63, 0xf3, 0x20, 0x16, 0xc6, 0xc5, 0x09, 0x79, - 0x1f, 0xaa, 0xa9, 0xbc, 0x20, 0x6c, 0x3e, 0x68, 0x5a, 0xa8, 0x24, 0xd3, 0x42, 0x56, 0xaf, 0xb6, - 0x98, 0xd5, 0xab, 0x7d, 0x12, 0xe1, 0xdd, 0x85, 0x5a, 0xaf, 0x3d, 0xa2, 0x38, 0x5f, 0x61, 0xe5, - 0x0f, 0x2b, 0x17, 0xa8, 0x4e, 0xbd, 0xd6, 0x4f, 0x56, 0xfc, 0x6b, 0x12, 0x9a, 0x92, 0xd4, 0xb1, - 0xe9, 0x05, 0x96, 0x5e, 0x0e, 0xe3, 0x93, 0x6c, 0x03, 0xd6, 0x3a, 0xc8, 0xcf, 0xd9, 0x80, 0xb0, - 0x83, 0xfc, 0x13, 0xd8, 0x00, 0x4a, 0xe6, 0x7f, 0x64, 0x03, 0x74, 0xa8, 0xf5, 0xda, 0x23, 0x6a, - 0xcd, 0x0f, 0x51, 0x4d, 0x84, 0xd9, 0xb5, 0x5c, 0xb3, 0x77, 0x90, 0x2f, 0xac, 0xcd, 0xe0, 0xb5, - 0x7f, 0x29, 0x30, 0xf9, 0x5e, 0xdb, 0x71, 0xec, 0x2d, 0x1b, 0x07, 0xc9, 0xdb, 0xd6, 0x12, 0x9c, - 0x76, 0xe5, 0x8a, 0xb0, 0xee, 0x4c, 0x1f, 0xd5, 0x22, 0x4a, 0x7a, 0x17, 0xf5, 0xbf, 0xda, 0xa4, - 0xb3, 0x30, 0xd5, 0xa3, 0xbd, 0xb0, 0xe8, 0x39, 0x18, 0xe6, 0xb7, 0x11, 0x9e, 0x02, 0xf9, 0x40, - 0x5b, 0x87, 0xa7, 0x63, 0x99, 0x74, 0xc5, 0xdd, 0xf2, 0x9a, 0x07, 0xcb, 0x28, 0x8c, 0xae, 0xd1, - 0xfc, 0x89, 0xa4, 0x30, 0xe8, 0x13, 0x89, 0xf6, 0x99, 0x02, 0x93, 0x29, 0xc2, 0x92, 0xe4, 0x25, - 0x18, 0x0f, 0x09, 0x0a, 0x92, 0x35, 0xf8, 0xf2, 0x29, 0xbd, 0xc4, 0x66, 0x79, 0x05, 0xfe, 0x40, - 0x51, 0x54, 0x0d, 0x00, 0xbb, 0x56, 0xe2, 0xde, 0xb5, 0xac, 0xe8, 0xa7, 0xb1, 0x6b, 0x45, 0x30, - 0xcd, 0x2a, 0x94, 0x8d, 0x38, 0xb1, 0x66, 0x19, 0x4a, 0x46, 0x17, 0x4b, 0xfb, 0x67, 0x01, 0xaa, - 0x29, 0x31, 0xd4, 0xa7, 0x60, 0x24, 0xc5, 0x59, 0x8c, 0x29, 0xd3, 0x23, 0xea, 0x9b, 0x2e, 0x64, - 0x8a, 0x27, 0xf0, 0xce, 0xb5, 0x01, 0x25, 0x1f, 0x07, 0xb4, 0x2a, 0x21, 0xf6, 0x1e, 0x16, 0x97, - 0xbb, 0xf9, 0x41, 0xeb, 0xbe, 0x2e, 0x05, 0x3d, 0x4e, 0x4e, 0xbd, 0x05, 0x43, 0xf4, 0x28, 0xb1, - 0x5a, 0x60, 0xf0, 0x72, 0x72, 0xdd, 0xc6, 0x1d, 0x9d, 0x11, 0x68, 0x9e, 0x86, 0x51, 0x69, 0xed, - 0x8f, 0x60, 0xaa, 0x67, 0xcf, 0xbb, 0x1d, 0x30, 0xb2, 0x6f, 0xd8, 0xee, 0x96, 0x27, 0x8e, 0xf4, - 0xe5, 0x43, 0x3c, 0x8b, 0x30, 0x0a, 0x23, 0x64, 0x9f, 0xfe, 0xd5, 0x10, 0x3c, 0x93, 0xe3, 0xa9, - 0x27, 0xc6, 0xe2, 0x63, 0x28, 0x8b, 0x8b, 0xbc, 0x20, 0xf9, 0x2e, 0x94, 0x58, 0x5e, 0x0c, 0x58, - 0x88, 0x39, 0x4a, 0x0e, 0x00, 0x37, 0xfa, 0xad, 0xfd, 0x8e, 0xc6, 0xa6, 0xd4, 0xdd, 0xf4, 0x71, - 0x30, 0x52, 0xef, 0xc0, 0xb8, 0x6d, 0x61, 0x97, 0xd8, 0xe4, 0xc0, 0xd8, 0xc5, 0x07, 0xc2, 0x9d, - 0xaf, 0xf4, 0x09, 0x3a, 0x2b, 0x02, 0xe5, 0x36, 0x3e, 0xd0, 0x4b, 0x76, 0x77, 0xa0, 0xfd, 0xbb, - 0x08, 0x67, 0x33, 0x58, 0x66, 0x55, 0x0d, 0xca, 0x89, 0x54, 0x0d, 0xaf, 0xc3, 0x10, 0xcb, 0xb9, - 0x5c, 0xee, 0xe7, 0xfb, 0x05, 0x69, 0x2a, 0x11, 0x43, 0x78, 0x0c, 0xf7, 0xf6, 0x44, 0xd2, 0x18, - 0x3a, 0x7a, 0xd2, 0xb8, 0x08, 0x15, 0x7e, 0x48, 0x0c, 0x33, 0xc0, 0x88, 0x60, 0x8b, 0x1d, 0xbc, - 0x21, 0xbd, 0xcc, 0x67, 0x6f, 0xf2, 0x49, 0x1a, 0x1b, 0x05, 0x18, 0x8f, 0xd5, 0x23, 0x32, 0x36, - 0xf2, 0x59, 0xd6, 0x3a, 0xa2, 0x61, 0xaa, 0x0e, 0x63, 0xbe, 0x17, 0xda, 0x2c, 0xd6, 0x8c, 0x32, - 0x42, 0xd1, 0x58, 0x7d, 0x07, 0x46, 0x42, 0xaf, 0x1d, 0x98, 0xb8, 0x36, 0x96, 0x2d, 0x6f, 0xb2, - 0x62, 0xa4, 0xe6, 0x5b, 0x63, 0xf0, 0xba, 0xc0, 0x63, 0x51, 0x35, 0x2e, 0x86, 0xf6, 0xd7, 0x22, - 0x40, 0x37, 0xd5, 0x66, 0x55, 0x2b, 0xca, 0x89, 0x54, 0x2b, 0x6f, 0x8b, 0xac, 0xcf, 0x37, 0xfe, - 0xc5, 0x14, 0x35, 0x0b, 0xef, 0x27, 0x33, 0xff, 0xaa, 0x83, 0x6c, 0x97, 0xe0, 0x7d, 0xc2, 0x93, - 0x7f, 0xc2, 0x2a, 0xc5, 0x94, 0x55, 0x4e, 0x6a, 0x23, 0x57, 0xa1, 0xc4, 0x1f, 0xa7, 0xf9, 0x5d, - 0x79, 0x38, 0x33, 0xd0, 0x27, 0x24, 0x6d, 0x22, 0x62, 0xee, 0x50, 0x71, 0xf9, 0x83, 0x2b, 0xbb, - 0x25, 0x83, 0x17, 0xfd, 0x56, 0xaf, 0x74, 0x5d, 0xc3, 0x41, 0x76, 0x0b, 0x5b, 0xd1, 0xae, 0x4b, - 0xe7, 0xe0, 0xd3, 0x74, 0xdf, 0xbb, 0x7b, 0x3b, 0x7a, 0xc4, 0xbd, 0x3d, 0x03, 0x55, 0x23, 0xc9, - 0x4e, 0xfb, 0xbb, 0x02, 0x53, 0x77, 0x3b, 0x2e, 0xb6, 0x56, 0x85, 0xb1, 0x56, 0xac, 0xa8, 0x68, - 0xba, 0x0f, 0x15, 0x69, 0x42, 0x9a, 0x68, 0xa3, 0x42, 0xf8, 0x91, 0x7b, 0x23, 0xe9, 0xb0, 0xed, - 0xa6, 0x7a, 0xf8, 0xf1, 0x09, 0xaa, 0xc7, 0x5d, 0x18, 0x27, 0x01, 0x62, 0x97, 0x58, 0x1f, 0xd9, - 0xb2, 0x1c, 0xbb, 0xfc, 0x28, 0xa2, 0xf7, 0x38, 0xfc, 0x2a, 0xb2, 0x83, 0x65, 0x85, 0x65, 0x4a, - 0x39, 0xa4, 0x85, 0x00, 0x55, 0x2b, 0x29, 0x28, 0xf3, 0xe2, 0x38, 0x13, 0x0d, 0x43, 0xad, 0x57, - 0x4d, 0x11, 0x80, 0x57, 0x60, 0x3c, 0x42, 0xb7, 0x2d, 0x7a, 0xd9, 0x2a, 0x66, 0x54, 0x00, 0x99, - 0x5a, 0xae, 0x58, 0x7a, 0xc9, 0xef, 0x92, 0x9c, 0xfb, 0xf3, 0x59, 0x38, 0x4b, 0xf3, 0xe3, 0x6a, - 0xe0, 0x11, 0xcf, 0xf4, 0x9c, 0x35, 0x1c, 0xec, 0xd9, 0x26, 0x56, 0xdf, 0x87, 0x11, 0x5e, 0x92, - 0xa9, 0xb9, 0xef, 0x06, 0x89, 0x82, 0xb5, 0x7e, 0xa9, 0x1f, 0x98, 0x90, 0x7d, 0x17, 0xc6, 0xe3, - 0x4d, 0x6f, 0xf5, 0xa5, 0x47, 0xe3, 0x25, 0x9a, 0xf4, 0xf5, 0x97, 0x0f, 0x07, 0xcc, 0x59, 0x5d, - 0x53, 0xd4, 0x75, 0x18, 0x66, 0x39, 0x4c, 0x7d, 0x21, 0x0f, 0x31, 0xde, 0x0b, 0xaf, 0x5f, 0xec, - 0x03, 0x15, 0xd1, 0xfd, 0x04, 0x2a, 0xc9, 0xdc, 0xa8, 0x5e, 0x7d, 0x24, 0x6a, 0xba, 0xbf, 0x5b, - 0x6f, 0x1c, 0x16, 0x3c, 0x62, 0xf9, 0x21, 0x8c, 0x8a, 0xbe, 0x94, 0x9a, 0x6b, 0xea, 0x64, 0x03, - 0xb5, 0x7e, 0xb9, 0x2f, 0x9c, 0xd8, 0x93, 0x20, 0xea, 0x1d, 0xca, 0x9e, 0x97, 0xda, 0xe8, 0x83, - 0x9b, 0x6a, 0xfe, 0xd5, 0x67, 0x0f, 0x0d, 0x2f, 0x78, 0x7e, 0x00, 0x23, 0xbc, 0x95, 0x92, 0xef, - 0x60, 0x89, 0xc6, 0x58, 0xbe, 0x83, 0x25, 0x3b, 0x32, 0xd7, 0x14, 0xaa, 0x4e, 0xaa, 0xb3, 0x91, - 0xaf, 0x4e, 0x76, 0x9f, 0x25, 0x5f, 0x9d, 0xbc, 0xee, 0x8b, 0x03, 0xe5, 0x44, 0x5b, 0x44, 0xcd, - 0x75, 0xd5, 0xac, 0xae, 0x4a, 0xfd, 0xea, 0x21, 0xa1, 0x05, 0x37, 0x0f, 0x2a, 0xc9, 0x07, 0xf9, - 0x7c, 0xff, 0xcb, 0xfc, 0x98, 0x20, 0xdf, 0xff, 0x72, 0xde, 0xf9, 0x3d, 0xa8, 0x24, 0x5f, 0xd2, - 0xf3, 0x19, 0x66, 0xbe, 0xe6, 0xe7, 0x33, 0xcc, 0x79, 0xa0, 0x6f, 0xc3, 0x44, 0xfa, 0x81, 0x5a, - 0xcd, 0xdd, 0x94, 0x9c, 0x07, 0xf6, 0xfa, 0xb5, 0xc3, 0x23, 0x08, 0xb6, 0x1d, 0x98, 0x48, 0xbf, - 0x2d, 0xe7, 0xb3, 0xcd, 0x79, 0xe3, 0xce, 0x67, 0x9b, 0xf7, 0x6c, 0x7d, 0x4d, 0xa1, 0xfa, 0xa6, - 0xfb, 0x3b, 0xf9, 0x8c, 0x73, 0x3a, 0x63, 0xf9, 0x8c, 0x73, 0x5b, 0x47, 0x6d, 0x98, 0x48, 0x77, - 0x35, 0xf2, 0xd9, 0xe6, 0xf4, 0x83, 0xf2, 0xd9, 0xe6, 0x36, 0x4c, 0x02, 0xa8, 0xa6, 0x6e, 0xfe, - 0xf9, 0x27, 0x34, 0xbb, 0x41, 0x92, 0x7f, 0x42, 0xf3, 0x5a, 0x0a, 0x9f, 0x29, 0x70, 0x3e, 0xf3, - 0x4e, 0xa6, 0xde, 0x38, 0xe4, 0xd5, 0x2b, 0xd1, 0x6c, 0xa8, 0xbf, 0x3a, 0x20, 0x96, 0x10, 0x83, - 0xf4, 0xde, 0xf1, 0x1b, 0x87, 0xbd, 0xfa, 0xf5, 0x53, 0x3d, 0xe7, 0x3e, 0x7b, 0x4d, 0x51, 0x7f, - 0x08, 0x6a, 0xef, 0xd7, 0x4b, 0xea, 0xf5, 0x81, 0xbf, 0xf6, 0xab, 0xcf, 0x0d, 0x82, 0x22, 0x54, - 0xfe, 0x54, 0x81, 0x73, 0x59, 0x9f, 0xb6, 0xaa, 0xaf, 0xe4, 0x1e, 0x94, 0xfc, 0x8f, 0x74, 0xeb, - 0x37, 0x06, 0x43, 0xea, 0x3a, 0x7a, 0xba, 0x9c, 0xca, 0x77, 0xf4, 0x9c, 0xfa, 0x32, 0xdf, 0xd1, - 0x73, 0x2b, 0xb5, 0x7d, 0x38, 0xd3, 0xf3, 0x85, 0xb3, 0x9a, 0x4b, 0x26, 0xef, 0x73, 0xef, 0xfa, - 0xf5, 0x01, 0x30, 0x38, 0xe7, 0x39, 0xbf, 0xfb, 0x95, 0x89, 0xac, 0xe9, 0x3e, 0x86, 0x31, 0x39, - 0xa5, 0x5e, 0xee, 0xf7, 0x35, 0x88, 0x64, 0x3d, 0xd3, 0x1f, 0x90, 0x73, 0x6c, 0xfe, 0xb2, 0xf0, - 0xc7, 0x87, 0xd3, 0xca, 0x97, 0x0f, 0xa7, 0x95, 0xaf, 0x1e, 0x4e, 0x2b, 0x3f, 0xfb, 0x7a, 0xfa, - 0xd4, 0x97, 0x5f, 0x4f, 0x9f, 0xfa, 0xcb, 0xd7, 0xd3, 0xa7, 0xa0, 0x6e, 0x7a, 0xad, 0x1c, 0x3a, - 0xcd, 0xd3, 0x51, 0xf9, 0xb9, 0xaa, 0x7c, 0xf8, 0xd1, 0xb6, 0x4d, 0x76, 0xda, 0x9b, 0x0d, 0xd3, - 0x6b, 0xcd, 0x86, 0x24, 0x40, 0xee, 0x36, 0x76, 0xbc, 0x3d, 0x7c, 0x75, 0x0f, 0xbb, 0xa4, 0x1d, - 0xe0, 0x70, 0x96, 0x5e, 0xa1, 0x02, 0x76, 0x71, 0x20, 0x38, 0x24, 0xb3, 0x7b, 0xaf, 0x8b, 0x7f, - 0x0d, 0xc8, 0xfe, 0x4f, 0x83, 0x37, 0xe9, 0x48, 0x0e, 0x7e, 0x5d, 0x28, 0xae, 0xae, 0x7f, 0xf7, - 0x37, 0x85, 0xc9, 0x55, 0x29, 0x08, 0xe5, 0xdc, 0x58, 0x17, 0xcb, 0x7f, 0xea, 0x2e, 0x6c, 0xd0, - 0x85, 0x0d, 0xb9, 0xf0, 0xb0, 0xa0, 0x65, 0x2f, 0x6c, 0xdc, 0x5a, 0x6d, 0xca, 0x37, 0x9b, 0x7f, - 0x14, 0x6a, 0x12, 0x68, 0x7e, 0x9e, 0x42, 0xcd, 0xcf, 0x4b, 0xb0, 0xcd, 0x11, 0xf6, 0x41, 0xff, - 0x2b, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0xee, 0x40, 0xed, 0x58, 0x0f, 0x31, 0x00, 0x00, + // 2966 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5b, 0xcd, 0x6f, 0xdc, 0xc6, + 0x15, 0x37, 0x77, 0xf5, 0xe5, 0xb7, 0xda, 0x5d, 0x99, 0xb6, 0xa5, 0xf5, 0x26, 0x51, 0x52, 0x26, + 0xfe, 0x88, 0x13, 0xaf, 0x6c, 0xc5, 0xf9, 0xa8, 0x92, 0xb4, 0xd1, 0x5a, 0x91, 0x25, 0x38, 0xb6, + 0x55, 0xca, 0x56, 0x9a, 0x44, 0x29, 0x31, 0x22, 0x47, 0x12, 0xab, 0x5d, 0x92, 0x21, 0x67, 0xf5, + 0xd1, 0x9e, 0x52, 0x04, 0x85, 0x51, 0xa0, 0x41, 0x51, 0x14, 0x05, 0x72, 0xed, 0xb1, 0xe8, 0x35, + 0xd7, 0x5c, 0x7a, 0x29, 0x7a, 0xca, 0xb1, 0x40, 0x81, 0x22, 0x70, 0xd0, 0x4b, 0xfb, 0x2f, 0x14, + 0x68, 0x31, 0x5f, 0xfc, 0x5a, 0xd2, 0xbb, 0x2b, 0xc9, 0x70, 0xdb, 0x93, 0x76, 0x86, 0xef, 0xfd, + 0xde, 0xc7, 0xbc, 0x79, 0xf3, 0xe6, 0x91, 0x82, 0xef, 0x78, 0xd8, 0xe9, 0xb4, 0x37, 0x7c, 0x34, + 0xb3, 0x6b, 0xe3, 0xbd, 0x99, 0xdd, 0x6b, 0xa8, 0xe5, 0x6d, 0xa3, 0x6b, 0x6c, 0xd4, 0xf0, 0x7c, + 0x97, 0xb8, 0xea, 0xa4, 0x24, 0x69, 0xb0, 0x49, 0x49, 0x52, 0xbf, 0x14, 0xb2, 0x9a, 0xae, 0x8f, + 0x67, 0xcc, 0x6d, 0x64, 0x3b, 0x11, 0x00, 0x1b, 0x72, 0x84, 0xfa, 0xe5, 0x14, 0xa5, 0x7f, 0xe0, + 0x11, 0x37, 0x46, 0xca, 0xc6, 0x82, 0xf6, 0x85, 0x24, 0xad, 0x85, 0xf7, 0x23, 0x42, 0x0b, 0xef, + 0x0b, 0xaa, 0xeb, 0x49, 0x2a, 0xe2, 0x23, 0x27, 0x40, 0x26, 0xb1, 0xdd, 0x98, 0x06, 0xb1, 0xc9, + 0x6c, 0x6c, 0x7b, 0xc3, 0x8c, 0xa8, 0xed, 0x0d, 0x53, 0x50, 0xa5, 0xec, 0x0a, 0x08, 0xda, 0xc1, + 0x11, 0x1d, 0x1b, 0x72, 0x4a, 0xed, 0x1b, 0x05, 0x6a, 0xf3, 0x1d, 0xb2, 0xed, 0xfa, 0xf6, 0x4f, + 0xf0, 0xbc, 0x63, 0x35, 0x3b, 0x76, 0xcb, 0xd2, 0xf1, 0x27, 0x1d, 0x1c, 0x10, 0xf5, 0x47, 0x30, + 0x11, 0xd3, 0xc0, 0xf0, 0x5a, 0xc8, 0xa9, 0x29, 0xcf, 0x29, 0x97, 0x4a, 0xb3, 0xaf, 0x34, 0x42, + 0x8f, 0x52, 0x09, 0x8d, 0xb8, 0xa2, 0x52, 0x4e, 0xe3, 0x5e, 0x34, 0xb9, 0xd2, 0x42, 0x8e, 0x5e, + 0x25, 0xc9, 0x09, 0xd5, 0x02, 0x15, 0x09, 0xd9, 0x88, 0x49, 0xb0, 0x10, 0x41, 0xb5, 0x02, 0x93, + 0xf0, 0x6a, 0x3f, 0x12, 0xe6, 0xe3, 0xdc, 0x0b, 0x88, 0x20, 0xfd, 0x14, 0x4a, 0x4f, 0x69, 0x0e, + 0x9c, 0xcb, 0xb0, 0x30, 0xf0, 0x5c, 0x27, 0xc0, 0xea, 0x0f, 0xa0, 0x14, 0x43, 0x16, 0xd6, 0xcd, + 0x0c, 0x68, 0x9d, 0x1e, 0xc7, 0xd0, 0xbe, 0x50, 0xe0, 0xa9, 0xa6, 0xef, 0x22, 0xcb, 0x44, 0x01, + 0x89, 0x53, 0x09, 0xaf, 0x1e, 0xbf, 0x48, 0xf5, 0x22, 0x54, 0xd1, 0x1e, 0xb2, 0x89, 0x61, 0x61, + 0x82, 0x39, 0x2c, 0xf5, 0xe2, 0x98, 0x5e, 0x61, 0xd3, 0x0b, 0x72, 0x56, 0xfb, 0x54, 0x81, 0xa7, + 0xb3, 0x75, 0x13, 0xfe, 0x78, 0x0d, 0x0a, 0xb6, 0x25, 0x74, 0xba, 0xd0, 0x8f, 0x4e, 0xcb, 0x96, + 0x5e, 0xb0, 0x2d, 0xf5, 0x45, 0x98, 0x08, 0x65, 0x1b, 0xdb, 0xd8, 0xde, 0xda, 0x26, 0x4c, 0x85, + 0x21, 0xbd, 0x1a, 0xce, 0x2f, 0xb1, 0x69, 0xed, 0x0b, 0x80, 0x73, 0xa9, 0xd0, 0x70, 0xb0, 0x2f, + 0xbd, 0xf3, 0x3c, 0x94, 0xf1, 0xbe, 0x67, 0xfb, 0x07, 0x12, 0x45, 0x61, 0x28, 0xe3, 0x7c, 0x92, + 0x43, 0xa8, 0xd7, 0xa1, 0xb8, 0x89, 0xb1, 0x88, 0x14, 0x2d, 0xa5, 0xa6, 0xd8, 0x8b, 0xa1, 0x86, + 0x8b, 0x18, 0xeb, 0x94, 0x5c, 0x55, 0x61, 0xa8, 0x8d, 0xdb, 0x6e, 0xad, 0xf8, 0x9c, 0x72, 0xe9, + 0xa4, 0xce, 0x7e, 0xab, 0xeb, 0x30, 0x81, 0x4c, 0xd3, 0xed, 0x38, 0xc4, 0xd8, 0xf2, 0xdd, 0x8e, + 0x67, 0xd8, 0x56, 0xad, 0xc2, 0x60, 0xaf, 0xf4, 0x80, 0x9d, 0xe7, 0x6c, 0x37, 0x29, 0xd7, 0xb2, + 0xb5, 0x74, 0x42, 0xaf, 0xa0, 0xc4, 0xcc, 0x03, 0x45, 0x51, 0x75, 0x18, 0x75, 0x3b, 0xc4, 0xeb, + 0x90, 0xa0, 0x76, 0xe6, 0xb9, 0xe2, 0xa5, 0xd2, 0xec, 0x1b, 0x8d, 0xec, 0x4c, 0xd4, 0xc8, 0x75, + 0x48, 0xe3, 0x2e, 0x03, 0xd0, 0x25, 0x90, 0xfa, 0x1e, 0x0c, 0x07, 0x7b, 0xc8, 0x0b, 0x6a, 0xd3, + 0x0c, 0xf1, 0xb5, 0xc1, 0x11, 0x57, 0xf7, 0x90, 0xa7, 0x73, 0x10, 0x75, 0x1d, 0x4a, 0x16, 0x6e, + 0xe1, 0x2d, 0xb6, 0x5d, 0x82, 0xda, 0x25, 0x86, 0x39, 0x37, 0x38, 0xe6, 0x02, 0x07, 0xc1, 0x7a, + 0x1c, 0x4e, 0xdd, 0x80, 0x72, 0xc7, 0x89, 0xe3, 0xcf, 0x32, 0xfc, 0xb7, 0x06, 0xc7, 0xbf, 0x2f, + 0x61, 0xb0, 0x9e, 0x84, 0x54, 0x17, 0xa1, 0x64, 0x6f, 0x98, 0x06, 0xe7, 0x0a, 0x6a, 0x6f, 0x31, + 0x09, 0xe7, 0x53, 0x8b, 0x47, 0x53, 0x63, 0x14, 0xb2, 0x1b, 0xe6, 0x3c, 0x8f, 0x7a, 0xb0, 0xe5, + 0xcf, 0xa0, 0xfe, 0x73, 0x05, 0x46, 0xb8, 0xaf, 0xd5, 0x39, 0x18, 0xde, 0x45, 0xad, 0x0e, 0x16, + 0xfb, 0xe0, 0x85, 0x1e, 0x91, 0xb0, 0x46, 0x69, 0x75, 0xce, 0xa2, 0xbe, 0x03, 0xa3, 0xc8, 0xb2, + 0x7c, 0x1c, 0x04, 0x22, 0x3c, 0x2f, 0xf4, 0x8a, 0x23, 0x4e, 0xad, 0x4b, 0xb6, 0xfa, 0x1f, 0x15, + 0x18, 0xa2, 0x4b, 0x74, 0x24, 0x35, 0x96, 0x61, 0x9c, 0x20, 0x7f, 0x0b, 0x13, 0x03, 0x05, 0x01, + 0x26, 0xfd, 0xea, 0x42, 0x69, 0x97, 0x2d, 0xbd, 0xc4, 0x79, 0xd9, 0x50, 0x6e, 0xb6, 0xe2, 0x40, + 0x9b, 0xad, 0xfe, 0xb9, 0x02, 0x63, 0x32, 0x28, 0xd4, 0xb7, 0x61, 0x04, 0xb5, 0xe9, 0xde, 0x10, + 0xa6, 0x9c, 0xef, 0xa5, 0x07, 0x23, 0xd6, 0x05, 0x93, 0x7a, 0x03, 0x4e, 0xfa, 0x88, 0x60, 0x7e, + 0x3c, 0x14, 0x33, 0x2d, 0xe1, 0x67, 0x5a, 0x08, 0xa0, 0x23, 0x82, 0xd9, 0x79, 0x30, 0xe6, 0x8b, + 0x5f, 0xf5, 0x5f, 0x2a, 0x00, 0x51, 0x14, 0x1d, 0xc9, 0xb9, 0x09, 0x7d, 0x0a, 0x87, 0xd3, 0xa7, + 0x79, 0x1a, 0x4e, 0x19, 0xe9, 0xd4, 0xa3, 0x61, 0xa8, 0x67, 0xed, 0x01, 0x91, 0x9c, 0x6f, 0xc2, + 0xd0, 0x51, 0xcf, 0x60, 0x06, 0xa0, 0xfd, 0x5a, 0x81, 0xb3, 0x22, 0xee, 0x9a, 0x07, 0xcb, 0x8e, + 0x85, 0xf7, 0x65, 0xfa, 0x5d, 0x81, 0xb2, 0x88, 0x43, 0xc3, 0xa6, 0xf3, 0x42, 0xd6, 0x4b, 0xfd, + 0x05, 0x31, 0x87, 0x1a, 0x47, 0xb1, 0x11, 0x3d, 0x9b, 0x2c, 0x3b, 0xf0, 0x5a, 0xe8, 0xc0, 0x30, + 0x5d, 0x67, 0xd3, 0xf6, 0xdb, 0xf2, 0x6c, 0x12, 0xd3, 0x37, 0xf8, 0xac, 0xf6, 0x21, 0x4c, 0xa6, + 0x75, 0x12, 0x76, 0xc7, 0xf6, 0x94, 0x72, 0xa8, 0x3d, 0xa5, 0x7d, 0x00, 0x67, 0x19, 0x64, 0xf3, + 0x40, 0x3e, 0x12, 0xf6, 0x1e, 0x1d, 0xfa, 0x53, 0x05, 0x26, 0xd3, 0xd8, 0x42, 0xef, 0xfb, 0x47, + 0x77, 0xe6, 0xd2, 0x89, 0xa4, 0x3b, 0x1f, 0x28, 0x4a, 0x73, 0x02, 0x2a, 0x46, 0x02, 0x57, 0xfb, + 0x8d, 0x02, 0x53, 0xef, 0x7a, 0xdb, 0xb8, 0x8d, 0x7d, 0xd4, 0x4a, 0x59, 0xf8, 0x04, 0x57, 0x74, + 0x1d, 0x6a, 0xdd, 0x5a, 0x1d, 0xdb, 0x9a, 0x7e, 0xa9, 0x40, 0xb5, 0x89, 0x5a, 0xc8, 0x31, 0x71, + 0x68, 0xac, 0x0e, 0xf2, 0x14, 0x36, 0x36, 0xed, 0x16, 0xc1, 0xfe, 0x61, 0xac, 0x2d, 0x0b, 0x88, + 0x45, 0x86, 0xa0, 0xde, 0x81, 0x2a, 0xcb, 0xa1, 0x86, 0x6d, 0x49, 0xd0, 0xc1, 0xb2, 0x69, 0x19, + 0xf1, 0x1f, 0x1c, 0x8f, 0xd6, 0x87, 0x13, 0x91, 0xde, 0xc2, 0x1d, 0xef, 0xc2, 0xa8, 0x90, 0x7a, + 0x18, 0x8d, 0x25, 0xaf, 0xfa, 0x3d, 0x18, 0xdd, 0xe0, 0xd0, 0x42, 0xc7, 0xfe, 0xf2, 0x9a, 0x64, + 0xd2, 0xce, 0x43, 0x79, 0xcd, 0xc6, 0x7b, 0xb4, 0x5e, 0xbe, 0xe7, 0xee, 0x60, 0x47, 0x3d, 0x03, + 0xc3, 0x36, 0xcd, 0x41, 0x4c, 0xab, 0x71, 0x9d, 0x0f, 0x34, 0x1d, 0xaa, 0x92, 0x4c, 0x7a, 0xfe, + 0xfb, 0x50, 0xdc, 0xdc, 0xdd, 0x11, 0xca, 0xf7, 0xaa, 0x9d, 0x16, 0x3b, 0xad, 0x16, 0x05, 0xb0, + 0x9d, 0xad, 0x5b, 0xf8, 0x40, 0xa7, 0x9c, 0xda, 0x5d, 0x98, 0x88, 0x30, 0x85, 0x57, 0xde, 0x84, + 0x61, 0x42, 0xd5, 0xe8, 0x3e, 0x36, 0x92, 0x75, 0x43, 0x42, 0x67, 0x9d, 0xf3, 0x68, 0x3f, 0x53, + 0xa0, 0xbc, 0x4a, 0x10, 0xe9, 0x84, 0xd1, 0xf1, 0x58, 0x8b, 0xbd, 0xec, 0x84, 0xae, 0x43, 0x45, + 0xea, 0x20, 0x6c, 0x7a, 0x16, 0x4a, 0xc1, 0x81, 0x63, 0x26, 0xcb, 0x5b, 0xa0, 0x53, 0xa2, 0xb8, + 0x7d, 0x16, 0x4a, 0x26, 0x22, 0xe6, 0xb6, 0xed, 0x6c, 0x19, 0x1d, 0x4f, 0x6c, 0x2d, 0x90, 0x53, + 0xf7, 0x3d, 0xed, 0x81, 0x02, 0xa7, 0x39, 0xe8, 0x2a, 0xf1, 0x31, 0x6a, 0x3f, 0x41, 0xf3, 0x7c, + 0x38, 0x93, 0xd4, 0x44, 0x18, 0xf9, 0x5d, 0x38, 0xd7, 0x42, 0x04, 0x07, 0xc4, 0xd8, 0x71, 0xdc, + 0x3d, 0xc7, 0xd8, 0x68, 0xb9, 0xe6, 0x4e, 0xd2, 0xe4, 0x49, 0x4e, 0x70, 0x8b, 0x3e, 0x6f, 0xd2, + 0xc7, 0x91, 0xf9, 0x71, 0xff, 0x14, 0xd2, 0xfe, 0xd1, 0x7e, 0x51, 0x84, 0xf1, 0x3b, 0x2e, 0x89, + 0x36, 0xfd, 0xf3, 0x50, 0xb6, 0x1d, 0xb3, 0xd5, 0xb1, 0xb0, 0x11, 0x78, 0xd8, 0x21, 0xc2, 0x65, + 0xe3, 0x62, 0x72, 0x95, 0xce, 0xa9, 0xf3, 0x30, 0x26, 0x77, 0x71, 0x4e, 0x09, 0x91, 0xb7, 0x7d, + 0x47, 0xc5, 0xf6, 0xed, 0xce, 0xa4, 0x43, 0x47, 0xcd, 0xa4, 0xb7, 0xa1, 0xca, 0x4b, 0x1c, 0x83, + 0xb8, 0x4c, 0x77, 0xab, 0x36, 0x32, 0x48, 0x81, 0x54, 0xe6, 0xdc, 0xf7, 0x5c, 0x6a, 0xa3, 0xf5, + 0x24, 0x02, 0xe0, 0x41, 0x01, 0xce, 0xb2, 0xc5, 0x58, 0x74, 0xfd, 0x35, 0x97, 0xd8, 0xce, 0x96, + 0x5c, 0x95, 0xcb, 0x70, 0x6a, 0xd7, 0x25, 0x68, 0xa3, 0x85, 0x0d, 0x44, 0x92, 0x4b, 0x5f, 0x15, + 0x0f, 0xe6, 0x89, 0x58, 0xf3, 0x2e, 0xcf, 0x16, 0x8f, 0xea, 0xd9, 0x27, 0xe0, 0x8a, 0xaf, 0x0a, + 0x50, 0x79, 0xdf, 0x26, 0x4e, 0xec, 0xec, 0xfd, 0x00, 0x26, 0x1c, 0x97, 0x60, 0xc3, 0x74, 0xdb, + 0x6d, 0x9b, 0xb4, 0xb1, 0x43, 0xe8, 0xad, 0x80, 0x5e, 0x50, 0x1a, 0x3d, 0xb4, 0xa0, 0xbb, 0x0a, + 0xdf, 0x08, 0xd9, 0xf4, 0x2a, 0xc5, 0x89, 0xc6, 0x41, 0x66, 0x6f, 0xa6, 0x78, 0x8c, 0xbd, 0x99, + 0x27, 0xe0, 0x40, 0x0c, 0xd5, 0xd0, 0x7f, 0x22, 0x8f, 0xe8, 0x30, 0xbe, 0xc7, 0xa7, 0x78, 0xb1, + 0x3d, 0x40, 0xb3, 0x44, 0x40, 0xb1, 0xaa, 0xbb, 0xb4, 0x17, 0x0d, 0xb4, 0xbf, 0x29, 0x30, 0x29, + 0x1e, 0xfe, 0x7f, 0x36, 0xbc, 0x5a, 0x30, 0xd5, 0x65, 0xdf, 0xe3, 0x6b, 0x77, 0xfd, 0xa1, 0x08, + 0x65, 0x96, 0x2a, 0xc3, 0xa8, 0xaf, 0xc3, 0x18, 0xaf, 0x93, 0x30, 0xef, 0x24, 0x8d, 0xe9, 0xe1, + 0x58, 0xfd, 0x31, 0x4c, 0xc7, 0x72, 0xb5, 0x69, 0x6f, 0xda, 0xa6, 0x61, 0x61, 0xc7, 0x6d, 0xdb, + 0x8e, 0x68, 0x11, 0xf0, 0xfd, 0xd1, 0xab, 0x6e, 0x59, 0xa0, 0x3c, 0xfa, 0xd3, 0x51, 0x8a, 0x67, + 0x50, 0x0b, 0x71, 0x24, 0x75, 0x0e, 0xce, 0x49, 0x59, 0x51, 0xc3, 0xc0, 0x60, 0xc5, 0x41, 0xc0, + 0xf6, 0xca, 0x98, 0x3e, 0x25, 0x08, 0x16, 0xc2, 0xe7, 0xac, 0x84, 0x08, 0xd4, 0x37, 0xa0, 0x26, + 0x79, 0x3b, 0xce, 0x86, 0xeb, 0x58, 0xf4, 0x34, 0x16, 0xac, 0x43, 0x8c, 0x75, 0x52, 0x3c, 0xbf, + 0x2f, 0x1f, 0x0b, 0xce, 0x0b, 0x50, 0x95, 0x9c, 0x2d, 0xcf, 0x70, 0x36, 0x49, 0x50, 0x1b, 0x66, + 0x0c, 0xf2, 0x90, 0x7a, 0xcf, 0xbb, 0xb3, 0x49, 0x02, 0x75, 0x16, 0xce, 0x4a, 0x3a, 0xcf, 0x77, + 0x3d, 0x37, 0x40, 0x2d, 0x4e, 0x3d, 0xc2, 0xa8, 0x4f, 0x8b, 0x87, 0x2b, 0xe2, 0x19, 0xe3, 0x99, + 0x87, 0x67, 0x24, 0xcf, 0x2e, 0x4b, 0xb6, 0x86, 0x8f, 0x4d, 0x6c, 0x7b, 0x44, 0xaa, 0x36, 0xca, + 0x78, 0xeb, 0x82, 0x48, 0x26, 0x64, 0x46, 0xc2, 0xd5, 0xd3, 0x30, 0x54, 0xe4, 0x6a, 0x89, 0x98, + 0x58, 0x85, 0x0a, 0x5b, 0x01, 0xa3, 0x8d, 0x09, 0x8a, 0x05, 0xe4, 0xcb, 0xfd, 0x2c, 0xc1, 0x6d, + 0xc1, 0xa3, 0x97, 0xad, 0xf8, 0x50, 0xab, 0xc1, 0xe4, 0x8d, 0x6d, 0x64, 0x3b, 0x2b, 0xc8, 0x47, + 0x6d, 0x4c, 0xb0, 0x2f, 0xa3, 0x43, 0xdb, 0x86, 0xa9, 0xae, 0x27, 0x42, 0x93, 0xdb, 0x00, 0x5e, + 0x38, 0x9b, 0x57, 0x4a, 0xb2, 0xa6, 0x7c, 0xa8, 0x44, 0x1a, 0x2a, 0x06, 0xa0, 0x4d, 0xc2, 0x99, + 0xc5, 0xdb, 0x0b, 0xdd, 0x1a, 0x58, 0x70, 0x36, 0x35, 0x2f, 0xe4, 0xdf, 0xca, 0x90, 0xff, 0xd2, + 0xa3, 0xe5, 0x2f, 0xb6, 0xad, 0x1c, 0xe9, 0x9f, 0x17, 0x60, 0x8a, 0x9e, 0x8c, 0xcd, 0x83, 0x58, + 0x1a, 0x17, 0x3b, 0xe4, 0x7d, 0xa8, 0xa6, 0xce, 0x05, 0xe1, 0xf3, 0x41, 0x8f, 0x85, 0x4a, 0xf2, + 0x58, 0xc8, 0x6a, 0x04, 0x17, 0xb3, 0x1a, 0xc1, 0x4f, 0x22, 0xbd, 0x3b, 0x50, 0xeb, 0xf6, 0x47, + 0x98, 0xe7, 0x2b, 0xac, 0xfc, 0x61, 0xe5, 0x02, 0xb5, 0xa9, 0xdb, 0xfb, 0xc9, 0x8a, 0x7f, 0x55, + 0x52, 0x53, 0x48, 0x1d, 0x9b, 0xae, 0x6f, 0xe9, 0xe5, 0x20, 0x3e, 0xc9, 0x16, 0x60, 0x75, 0x0f, + 0x79, 0x39, 0x0b, 0x10, 0xec, 0x21, 0xef, 0x18, 0x16, 0x80, 0xc2, 0xfc, 0x8f, 0x2c, 0x80, 0x0e, + 0xb5, 0x6e, 0x7f, 0x84, 0x7d, 0xff, 0x21, 0x6a, 0x89, 0x70, 0xbb, 0x96, 0xeb, 0xf6, 0x3d, 0xe4, + 0x09, 0x6f, 0x33, 0x7a, 0xed, 0x5f, 0x0a, 0x4c, 0xde, 0xe9, 0xb4, 0x5a, 0xf6, 0xa6, 0x8d, 0xfd, + 0xe4, 0x6d, 0x6b, 0x11, 0x4e, 0x3a, 0xf2, 0x89, 0xf0, 0xee, 0xa5, 0x1e, 0xa6, 0x85, 0x48, 0x7a, + 0xc4, 0xfa, 0x5f, 0xed, 0xd2, 0x19, 0x98, 0xea, 0xb2, 0x5e, 0x78, 0xf4, 0x0c, 0x0c, 0xf3, 0xdb, + 0x08, 0x3f, 0x02, 0xf9, 0x40, 0x5b, 0x83, 0xa7, 0x63, 0x27, 0xe9, 0xb2, 0xb3, 0xe9, 0x36, 0x0f, + 0x96, 0x50, 0x10, 0x5e, 0xa3, 0xf9, 0xfb, 0x97, 0xc2, 0xa0, 0xef, 0x5f, 0xb4, 0xcf, 0x14, 0x98, + 0x4c, 0x01, 0x4b, 0xc8, 0x0b, 0x30, 0x1e, 0x10, 0xe4, 0x27, 0x6b, 0xf0, 0xa5, 0x13, 0x7a, 0x89, + 0xcd, 0xf2, 0x0a, 0xfc, 0x81, 0xa2, 0xa8, 0x1a, 0x00, 0x76, 0xac, 0xc4, 0xbd, 0x6b, 0x49, 0xd1, + 0x4f, 0x62, 0xc7, 0x0a, 0x69, 0x9a, 0x55, 0x28, 0x1b, 0x71, 0xb0, 0x66, 0x19, 0x4a, 0x46, 0xc4, + 0xa5, 0xfd, 0xb3, 0x00, 0xd5, 0x94, 0x1a, 0xea, 0x53, 0x30, 0x92, 0x92, 0x2c, 0xc6, 0x54, 0xe8, + 0x21, 0xed, 0x4d, 0x17, 0x32, 0xc5, 0x63, 0x78, 0x89, 0xb6, 0x0e, 0x25, 0x0f, 0xfb, 0xb4, 0x2a, + 0x21, 0xf6, 0x2e, 0x16, 0x97, 0xbb, 0xb9, 0x41, 0xeb, 0xbe, 0x08, 0x41, 0x8f, 0xc3, 0xa9, 0x37, + 0x61, 0x88, 0x6e, 0x25, 0x56, 0x0b, 0x0c, 0x5e, 0x4e, 0xae, 0xd9, 0x78, 0x4f, 0x67, 0x00, 0xcd, + 0x93, 0x30, 0x2a, 0xbd, 0xfd, 0x11, 0x4c, 0x75, 0xad, 0x79, 0xd4, 0x5e, 0x23, 0xfb, 0x86, 0xed, + 0x6c, 0xba, 0x62, 0x4b, 0x5f, 0xec, 0xe3, 0x9d, 0x0b, 0x43, 0x18, 0x21, 0xfb, 0xf4, 0xaf, 0x86, + 0xe0, 0x99, 0x9c, 0x48, 0x3d, 0x36, 0x11, 0x1f, 0x43, 0x59, 0x5c, 0xe4, 0x05, 0xe4, 0x7b, 0x50, + 0x62, 0xe7, 0xa2, 0xcf, 0x52, 0xcc, 0x61, 0xce, 0x00, 0x70, 0xc2, 0xdf, 0xda, 0x97, 0x34, 0x37, + 0xa5, 0xee, 0xa6, 0x8f, 0x43, 0x90, 0x7a, 0x1b, 0xc6, 0x6d, 0x0b, 0x3b, 0xc4, 0x26, 0x07, 0xc6, + 0x0e, 0x3e, 0x10, 0xe1, 0x7c, 0xb9, 0x47, 0xd2, 0x59, 0x16, 0x2c, 0xb7, 0xf0, 0x81, 0x5e, 0xb2, + 0xa3, 0x81, 0xf6, 0xef, 0x22, 0x9c, 0xce, 0x10, 0x99, 0x55, 0x35, 0x28, 0xc7, 0x52, 0x35, 0xbc, + 0x0e, 0x43, 0xec, 0xcc, 0xe5, 0x7a, 0x3f, 0xdf, 0x2b, 0x49, 0x53, 0x8d, 0x18, 0xc3, 0x63, 0xb8, + 0xb7, 0x27, 0x0e, 0x8d, 0xa1, 0xc3, 0x1f, 0x1a, 0xe7, 0xa1, 0xc2, 0x37, 0x89, 0x61, 0xfa, 0x18, + 0x11, 0x6c, 0xb1, 0x8d, 0x37, 0xa4, 0x97, 0xf9, 0xec, 0x0d, 0x3e, 0x49, 0x73, 0xa3, 0x20, 0xe3, + 0xb9, 0x7a, 0x44, 0xe6, 0x46, 0x3e, 0xcb, 0x5a, 0x47, 0x34, 0x4d, 0xd5, 0x61, 0xcc, 0x73, 0x03, + 0x9b, 0xe5, 0x9a, 0x51, 0x06, 0x14, 0x8e, 0xd5, 0x77, 0x60, 0x24, 0x70, 0x3b, 0xbe, 0x89, 0x6b, + 0x63, 0xd9, 0xfa, 0x26, 0x2b, 0x46, 0xea, 0xbe, 0x55, 0x46, 0xaf, 0x0b, 0x3e, 0x96, 0x55, 0xe3, + 0x6a, 0x68, 0x7f, 0x2d, 0x02, 0x44, 0x47, 0x6d, 0x56, 0xb5, 0xa2, 0x1c, 0x4b, 0xb5, 0xf2, 0xb6, + 0x38, 0xf5, 0xf9, 0xc2, 0xbf, 0x98, 0x42, 0xb3, 0xf0, 0x7e, 0xf2, 0xe4, 0x5f, 0x69, 0x21, 0xdb, + 0x21, 0x78, 0x9f, 0xf0, 0xc3, 0x3f, 0xe1, 0x95, 0x62, 0xca, 0x2b, 0xc7, 0xb5, 0x90, 0x2b, 0x50, + 0xe2, 0x6f, 0xbe, 0xf9, 0x5d, 0x79, 0x38, 0x33, 0xd1, 0x27, 0x34, 0x6d, 0x22, 0x62, 0x6e, 0x53, + 0x75, 0xf9, 0xdb, 0x5c, 0x76, 0x4b, 0x06, 0x37, 0xfc, 0xad, 0x5e, 0x8e, 0x42, 0xa3, 0x85, 0xec, + 0x36, 0xb6, 0xc2, 0x55, 0x97, 0xc1, 0xc1, 0xa7, 0xe9, 0xba, 0x47, 0x6b, 0x3b, 0x7a, 0xc8, 0xb5, + 0x3d, 0x05, 0x55, 0x23, 0x29, 0x4e, 0xfb, 0xbb, 0x02, 0x53, 0x77, 0xf7, 0x1c, 0x6c, 0xad, 0x08, + 0x67, 0x2d, 0x5b, 0x61, 0xd1, 0x74, 0x1f, 0x2a, 0xd2, 0x85, 0xf4, 0xa0, 0x0d, 0x0b, 0xe1, 0x47, + 0xae, 0x8d, 0xc4, 0x61, 0xcb, 0x4d, 0xed, 0xf0, 0xe2, 0x13, 0xd4, 0x8e, 0xbb, 0x30, 0x4e, 0x7c, + 0xc4, 0x2e, 0xb1, 0x1e, 0xb2, 0x65, 0x39, 0x76, 0xf1, 0x51, 0xa0, 0xf7, 0x38, 0xfd, 0x0a, 0xb2, + 0xfd, 0x25, 0x85, 0x9d, 0x94, 0x72, 0x48, 0x0b, 0x01, 0x6a, 0x56, 0x52, 0x51, 0x16, 0xc5, 0x71, + 0x21, 0x1a, 0x86, 0x5a, 0xb7, 0x99, 0x22, 0x01, 0x2f, 0xc3, 0x78, 0xc8, 0x6e, 0x5b, 0xf4, 0xb2, + 0x55, 0xcc, 0xa8, 0x00, 0x32, 0xad, 0x5c, 0xb6, 0xf4, 0x92, 0x17, 0x41, 0xce, 0x7e, 0x75, 0x1a, + 0x4e, 0xd3, 0xf3, 0x71, 0xc5, 0x77, 0x89, 0x6b, 0xba, 0xad, 0x55, 0xec, 0xef, 0xda, 0x26, 0x56, + 0xdf, 0x87, 0x11, 0x5e, 0x92, 0xa9, 0xb9, 0xef, 0x0d, 0x12, 0x05, 0x6b, 0xfd, 0x42, 0x2f, 0x32, + 0xa1, 0xfb, 0x0e, 0x8c, 0xc7, 0x9b, 0xde, 0xea, 0x4b, 0x8f, 0xe6, 0x4b, 0x34, 0xe9, 0xeb, 0x2f, + 0xf7, 0x47, 0xcc, 0x45, 0x5d, 0x55, 0xd4, 0x35, 0x18, 0x66, 0x67, 0x98, 0xfa, 0x42, 0x1e, 0x63, + 0xbc, 0x17, 0x5e, 0x3f, 0xdf, 0x83, 0x2a, 0xc4, 0xfd, 0x04, 0x2a, 0xc9, 0xb3, 0x51, 0xbd, 0xf2, + 0x48, 0xd6, 0x74, 0x7f, 0xb7, 0xde, 0xe8, 0x97, 0x3c, 0x14, 0xf9, 0x21, 0x8c, 0x8a, 0xbe, 0x94, + 0x9a, 0xeb, 0xea, 0x64, 0x03, 0xb5, 0x7e, 0xb1, 0x27, 0x9d, 0x58, 0x13, 0x3f, 0xec, 0x1d, 0xca, + 0x9e, 0x97, 0xda, 0xe8, 0xc1, 0x9b, 0x6a, 0xfe, 0xd5, 0x67, 0xfa, 0xa6, 0x17, 0x32, 0x3f, 0x80, + 0x11, 0xde, 0x4a, 0xc9, 0x0f, 0xb0, 0x44, 0x63, 0x2c, 0x3f, 0xc0, 0x92, 0x1d, 0x99, 0xab, 0x0a, + 0x35, 0x27, 0xd5, 0xd9, 0xc8, 0x37, 0x27, 0xbb, 0xcf, 0x92, 0x6f, 0x4e, 0x5e, 0xf7, 0xa5, 0x05, + 0xe5, 0x44, 0x5b, 0x44, 0xcd, 0x0d, 0xd5, 0xac, 0xae, 0x4a, 0xfd, 0x4a, 0x9f, 0xd4, 0x42, 0x9a, + 0x0b, 0x95, 0xe4, 0xdb, 0xfe, 0xfc, 0xf8, 0xcb, 0xfc, 0x52, 0x21, 0x3f, 0xfe, 0x72, 0x3e, 0x22, + 0x70, 0xa1, 0x92, 0x7c, 0x4d, 0x9f, 0x2f, 0x30, 0xf3, 0x53, 0x81, 0x7c, 0x81, 0x39, 0x6f, 0xff, + 0x3b, 0x30, 0x91, 0x7e, 0xfb, 0xad, 0xe6, 0x2e, 0x4a, 0xce, 0xdb, 0xfb, 0xfa, 0xd5, 0xfe, 0x19, + 0x84, 0x58, 0x03, 0xc6, 0xe4, 0xdb, 0x65, 0x35, 0x77, 0xfb, 0xa4, 0xde, 0x9b, 0xd7, 0x2f, 0xf5, + 0x26, 0x0c, 0x63, 0xb3, 0x03, 0x13, 0xe9, 0x3e, 0x4e, 0xbe, 0x5d, 0x39, 0x1d, 0xb0, 0x7c, 0xbb, + 0x72, 0x5b, 0x44, 0x1d, 0x98, 0x48, 0x77, 0x2f, 0xf2, 0xc5, 0xe6, 0xf4, 0x7d, 0xf2, 0xc5, 0xe6, + 0x36, 0x46, 0x7c, 0xa8, 0xa6, 0x6e, 0xf8, 0xf9, 0x3b, 0x31, 0xbb, 0x11, 0x92, 0xbf, 0x13, 0xf3, + 0x5a, 0x07, 0x9f, 0x29, 0x70, 0x36, 0xf3, 0xee, 0xa5, 0x5e, 0xef, 0xf3, 0x8a, 0x95, 0x68, 0x2a, + 0xd4, 0x5f, 0x1d, 0x90, 0x4b, 0xa8, 0x41, 0xba, 0xef, 0xf2, 0x8d, 0x7e, 0xaf, 0x78, 0xbd, 0x4c, + 0xcf, 0xb9, 0xb7, 0x5e, 0x55, 0xd4, 0x9f, 0x82, 0xda, 0xfd, 0x09, 0x94, 0x7a, 0x6d, 0xe0, 0x4f, + 0x06, 0xeb, 0xb3, 0x83, 0xb0, 0x08, 0x93, 0x3f, 0x55, 0xe0, 0x4c, 0xd6, 0xf7, 0xb1, 0xea, 0x2b, + 0xb9, 0x1b, 0x24, 0xff, 0x4b, 0xdf, 0xfa, 0xf5, 0xc1, 0x98, 0xa2, 0x40, 0x4f, 0x97, 0x4d, 0xf9, + 0x81, 0x9e, 0x53, 0x47, 0xe6, 0x07, 0x7a, 0x6e, 0x45, 0xb6, 0x0f, 0xa7, 0xba, 0x3e, 0x93, 0x56, + 0x73, 0x61, 0xf2, 0xbe, 0x19, 0xaf, 0x5f, 0x1b, 0x80, 0x83, 0x4b, 0x9e, 0xf5, 0xa2, 0xaf, 0x49, + 0x64, 0xed, 0xf6, 0x31, 0x8c, 0xc9, 0xa9, 0xfc, 0x24, 0x96, 0xfa, 0x04, 0x25, 0x3f, 0x89, 0xa5, + 0xbf, 0x2b, 0x69, 0xfe, 0xb6, 0xf0, 0xa7, 0x87, 0xd3, 0xca, 0xd7, 0x0f, 0xa7, 0x95, 0x6f, 0x1e, + 0x4e, 0x2b, 0xbf, 0xfa, 0x76, 0xfa, 0xc4, 0xd7, 0xdf, 0x4e, 0x9f, 0xf8, 0xcb, 0xb7, 0xd3, 0x27, + 0xa0, 0x6e, 0xba, 0xed, 0x1c, 0x9c, 0xe6, 0xc9, 0xb0, 0xcc, 0x5c, 0x51, 0x3e, 0xfc, 0x68, 0xcb, + 0x26, 0xdb, 0x9d, 0x8d, 0x86, 0xe9, 0xb6, 0x67, 0x02, 0xe2, 0x23, 0x67, 0x0b, 0xb7, 0xdc, 0x5d, + 0x7c, 0x65, 0x17, 0x3b, 0xa4, 0xe3, 0xe3, 0x60, 0x86, 0x5e, 0x95, 0x7c, 0x76, 0x41, 0x20, 0x38, + 0x20, 0x33, 0xbb, 0xaf, 0x8b, 0xff, 0x2f, 0xc8, 0xfe, 0x77, 0x85, 0x37, 0xe9, 0x48, 0x0e, 0x7e, + 0x57, 0x28, 0xae, 0xac, 0xfd, 0xf0, 0xf7, 0x85, 0xc9, 0x15, 0xa9, 0x08, 0x95, 0xdc, 0x58, 0x13, + 0x8f, 0xff, 0x1c, 0x3d, 0x58, 0xa7, 0x0f, 0xd6, 0xe5, 0x83, 0x87, 0x05, 0x2d, 0xfb, 0xc1, 0xfa, + 0xcd, 0x95, 0xa6, 0x7c, 0x37, 0xf3, 0x8f, 0x42, 0x4d, 0x12, 0xcd, 0xcd, 0x51, 0xaa, 0xb9, 0x39, + 0x49, 0xb6, 0x31, 0xc2, 0xfe, 0x2b, 0xe0, 0x95, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x00, 0x57, + 0xfa, 0xc4, 0x54, 0x31, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -3697,8 +3710,8 @@ type ViewProtocolServiceClient interface { // Query for an ephemeral address EphemeralAddress(ctx context.Context, in *EphemeralAddressRequest, opts ...grpc.CallOption) (*EphemeralAddressResponse, error) // Query for balance of a given address. - // Returns a stream of `BalanceByAddressResponses`. - BalanceByAddress(ctx context.Context, in *BalanceByAddressRequest, opts ...grpc.CallOption) (ViewProtocolService_BalanceByAddressClient, error) + // Returns a stream of `BalancesResponses`. + Balances(ctx context.Context, in *BalancesRequest, opts ...grpc.CallOption) (ViewProtocolService_BalancesClient, error) // Query for a note by its note commitment, optionally waiting until the note is detected. NoteByCommitment(ctx context.Context, in *NoteByCommitmentRequest, opts ...grpc.CallOption) (*NoteByCommitmentResponse, error) // Query for a swap by its swap commitment, optionally waiting until the swap is detected. @@ -3928,12 +3941,12 @@ func (c *viewProtocolServiceClient) EphemeralAddress(ctx context.Context, in *Ep return out, nil } -func (c *viewProtocolServiceClient) BalanceByAddress(ctx context.Context, in *BalanceByAddressRequest, opts ...grpc.CallOption) (ViewProtocolService_BalanceByAddressClient, error) { - stream, err := c.cc.NewStream(ctx, &_ViewProtocolService_serviceDesc.Streams[4], "/penumbra.view.v1alpha1.ViewProtocolService/BalanceByAddress", opts...) +func (c *viewProtocolServiceClient) Balances(ctx context.Context, in *BalancesRequest, opts ...grpc.CallOption) (ViewProtocolService_BalancesClient, error) { + stream, err := c.cc.NewStream(ctx, &_ViewProtocolService_serviceDesc.Streams[4], "/penumbra.view.v1alpha1.ViewProtocolService/Balances", opts...) if err != nil { return nil, err } - x := &viewProtocolServiceBalanceByAddressClient{stream} + x := &viewProtocolServiceBalancesClient{stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -3943,17 +3956,17 @@ func (c *viewProtocolServiceClient) BalanceByAddress(ctx context.Context, in *Ba return x, nil } -type ViewProtocolService_BalanceByAddressClient interface { - Recv() (*BalanceByAddressResponse, error) +type ViewProtocolService_BalancesClient interface { + Recv() (*BalancesResponse, error) grpc.ClientStream } -type viewProtocolServiceBalanceByAddressClient struct { +type viewProtocolServiceBalancesClient struct { grpc.ClientStream } -func (x *viewProtocolServiceBalanceByAddressClient) Recv() (*BalanceByAddressResponse, error) { - m := new(BalanceByAddressResponse) +func (x *viewProtocolServiceBalancesClient) Recv() (*BalancesResponse, error) { + m := new(BalancesResponse) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } @@ -4098,8 +4111,8 @@ type ViewProtocolServiceServer interface { // Query for an ephemeral address EphemeralAddress(context.Context, *EphemeralAddressRequest) (*EphemeralAddressResponse, error) // Query for balance of a given address. - // Returns a stream of `BalanceByAddressResponses`. - BalanceByAddress(*BalanceByAddressRequest, ViewProtocolService_BalanceByAddressServer) error + // Returns a stream of `BalancesResponses`. + Balances(*BalancesRequest, ViewProtocolService_BalancesServer) error // Query for a note by its note commitment, optionally waiting until the note is detected. NoteByCommitment(context.Context, *NoteByCommitmentRequest) (*NoteByCommitmentResponse, error) // Query for a swap by its swap commitment, optionally waiting until the swap is detected. @@ -4161,8 +4174,8 @@ func (*UnimplementedViewProtocolServiceServer) IndexByAddress(ctx context.Contex func (*UnimplementedViewProtocolServiceServer) EphemeralAddress(ctx context.Context, req *EphemeralAddressRequest) (*EphemeralAddressResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method EphemeralAddress not implemented") } -func (*UnimplementedViewProtocolServiceServer) BalanceByAddress(req *BalanceByAddressRequest, srv ViewProtocolService_BalanceByAddressServer) error { - return status.Errorf(codes.Unimplemented, "method BalanceByAddress not implemented") +func (*UnimplementedViewProtocolServiceServer) Balances(req *BalancesRequest, srv ViewProtocolService_BalancesServer) error { + return status.Errorf(codes.Unimplemented, "method Balances not implemented") } func (*UnimplementedViewProtocolServiceServer) NoteByCommitment(ctx context.Context, req *NoteByCommitmentRequest) (*NoteByCommitmentResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method NoteByCommitment not implemented") @@ -4424,24 +4437,24 @@ func _ViewProtocolService_EphemeralAddress_Handler(srv interface{}, ctx context. return interceptor(ctx, in, info, handler) } -func _ViewProtocolService_BalanceByAddress_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(BalanceByAddressRequest) +func _ViewProtocolService_Balances_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(BalancesRequest) if err := stream.RecvMsg(m); err != nil { return err } - return srv.(ViewProtocolServiceServer).BalanceByAddress(m, &viewProtocolServiceBalanceByAddressServer{stream}) + return srv.(ViewProtocolServiceServer).Balances(m, &viewProtocolServiceBalancesServer{stream}) } -type ViewProtocolService_BalanceByAddressServer interface { - Send(*BalanceByAddressResponse) error +type ViewProtocolService_BalancesServer interface { + Send(*BalancesResponse) error grpc.ServerStream } -type viewProtocolServiceBalanceByAddressServer struct { +type viewProtocolServiceBalancesServer struct { grpc.ServerStream } -func (x *viewProtocolServiceBalanceByAddressServer) Send(m *BalanceByAddressResponse) error { +func (x *viewProtocolServiceBalancesServer) Send(m *BalancesResponse) error { return x.ServerStream.SendMsg(m) } @@ -4701,8 +4714,8 @@ var _ViewProtocolService_serviceDesc = grpc.ServiceDesc{ ServerStreams: true, }, { - StreamName: "BalanceByAddress", - Handler: _ViewProtocolService_BalanceByAddress_Handler, + StreamName: "Balances", + Handler: _ViewProtocolService_Balances_Handler, ServerStreams: true, }, { @@ -5593,7 +5606,7 @@ func (m *EphemeralAddressResponse) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } -func (m *BalanceByAddressRequest) Marshal() (dAtA []byte, err error) { +func (m *BalancesRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -5603,19 +5616,31 @@ func (m *BalanceByAddressRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *BalanceByAddressRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *BalancesRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *BalanceByAddressRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *BalancesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Address != nil { + if m.AssetIdFilter != nil { { - size, err := m.Address.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.AssetIdFilter.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintView(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.AccountFilter != nil { + { + size, err := m.AccountFilter.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -5628,7 +5653,7 @@ func (m *BalanceByAddressRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *BalanceByAddressResponse) Marshal() (dAtA []byte, err error) { +func (m *BalancesResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -5638,19 +5663,19 @@ func (m *BalanceByAddressResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *BalanceByAddressResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *BalancesResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *BalanceByAddressResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *BalancesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Amount != nil { + if m.Balance != nil { { - size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Balance.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -5660,9 +5685,9 @@ func (m *BalanceByAddressResponse) MarshalToSizedBuffer(dAtA []byte) (int, error i-- dAtA[i] = 0x12 } - if m.Asset != nil { + if m.Account != nil { { - size, err := m.Asset.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Account.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -7898,31 +7923,35 @@ func (m *EphemeralAddressResponse) Size() (n int) { return n } -func (m *BalanceByAddressRequest) Size() (n int) { +func (m *BalancesRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l - if m.Address != nil { - l = m.Address.Size() + if m.AccountFilter != nil { + l = m.AccountFilter.Size() + n += 1 + l + sovView(uint64(l)) + } + if m.AssetIdFilter != nil { + l = m.AssetIdFilter.Size() n += 1 + l + sovView(uint64(l)) } return n } -func (m *BalanceByAddressResponse) Size() (n int) { +func (m *BalancesResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - if m.Asset != nil { - l = m.Asset.Size() + if m.Account != nil { + l = m.Account.Size() n += 1 + l + sovView(uint64(l)) } - if m.Amount != nil { - l = m.Amount.Size() + if m.Balance != nil { + l = m.Balance.Size() n += 1 + l + sovView(uint64(l)) } return n @@ -10629,7 +10658,7 @@ func (m *EphemeralAddressResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *BalanceByAddressRequest) Unmarshal(dAtA []byte) error { +func (m *BalancesRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -10652,15 +10681,15 @@ func (m *BalanceByAddressRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: BalanceByAddressRequest: wiretype end group for non-group") + return fmt.Errorf("proto: BalancesRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: BalanceByAddressRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: BalancesRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AccountFilter", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -10687,10 +10716,46 @@ func (m *BalanceByAddressRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Address == nil { - m.Address = &v1alpha11.Address{} + if m.AccountFilter == nil { + m.AccountFilter = &v1alpha11.AddressIndex{} } - if err := m.Address.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.AccountFilter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetIdFilter", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowView + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthView + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthView + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AssetIdFilter == nil { + m.AssetIdFilter = &v1alpha11.AssetId{} + } + if err := m.AssetIdFilter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -10715,7 +10780,7 @@ func (m *BalanceByAddressRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *BalanceByAddressResponse) Unmarshal(dAtA []byte) error { +func (m *BalancesResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -10738,15 +10803,15 @@ func (m *BalanceByAddressResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: BalanceByAddressResponse: wiretype end group for non-group") + return fmt.Errorf("proto: BalancesResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: BalanceByAddressResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: BalancesResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Asset", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Account", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -10773,16 +10838,16 @@ func (m *BalanceByAddressResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Asset == nil { - m.Asset = &v1alpha11.AssetId{} + if m.Account == nil { + m.Account = &v1alpha11.AddressIndex{} } - if err := m.Asset.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Account.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Balance", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -10809,10 +10874,10 @@ func (m *BalanceByAddressResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Amount == nil { - m.Amount = &v1alpha11.Amount{} + if m.Balance == nil { + m.Balance = &v1alpha11.Value{} } - if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Balance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/examples/penumbra/penumbra_chain_test.go b/examples/penumbra/penumbra_chain_test.go index 7efef33e6..2bc627c06 100644 --- a/examples/penumbra/penumbra_chain_test.go +++ b/examples/penumbra/penumbra_chain_test.go @@ -27,7 +27,7 @@ func TestPenumbraChainStart(t *testing.T) { { Name: "penumbra", // Version: "040-themisto.1,v0.34.23", - Version: "v0.55.0,v0.34.24", + Version: "v0.57.0,v0.34.24", ChainConfig: ibc.ChainConfig{ ChainID: "penumbra-1", }, diff --git a/go.mod b/go.mod index 61f53ac67..58dcc6241 100644 --- a/go.mod +++ b/go.mod @@ -25,10 +25,9 @@ require ( github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/hashicorp/go-version v1.6.0 github.com/icza/dyno v0.0.0-20220812133438-f0b6f8a18845 - github.com/libp2p/go-libp2p v0.22.0 + github.com/libp2p/go-libp2p v0.27.3 github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20230413215336-5bd2aea337ae github.com/mr-tron/base58 v1.2.0 - github.com/pactus-project/pactus v0.11.0 github.com/pelletier/go-toml v1.9.5 github.com/pelletier/go-toml/v2 v2.0.9 github.com/rivo/tview v0.0.0-20220307222120-9994674d60a8 @@ -134,28 +133,26 @@ require ( github.com/hashicorp/go-getter v1.7.1 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect - github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect + github.com/hashicorp/golang-lru v0.6.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hdevalence/ed25519consensus v0.1.0 // indirect github.com/huandu/skiplist v1.2.0 // indirect github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/ipfs/go-cid v0.2.0 // indirect + github.com/ipfs/go-cid v0.4.1 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect - github.com/klauspost/compress v1.16.3 // indirect - github.com/klauspost/cpuid/v2 v2.2.3 // indirect + github.com/klauspost/compress v1.16.4 // indirect + github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/lib/pq v1.10.7 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect - github.com/libp2p/go-openssl v0.1.0 // indirect github.com/linxGnu/grocksdb v1.7.16 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.19 // indirect - github.com/mattn/go-pointer v0.0.1 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b // indirect @@ -165,13 +162,13 @@ require ( github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect - github.com/multiformats/go-base32 v0.0.4 // indirect - github.com/multiformats/go-base36 v0.1.0 // indirect - github.com/multiformats/go-multiaddr v0.6.0 // indirect - github.com/multiformats/go-multibase v0.1.1 // indirect - github.com/multiformats/go-multicodec v0.5.0 // indirect + github.com/multiformats/go-base32 v0.1.0 // indirect + github.com/multiformats/go-base36 v0.2.0 // indirect + github.com/multiformats/go-multiaddr v0.9.0 // indirect + github.com/multiformats/go-multibase v0.2.0 // indirect + github.com/multiformats/go-multicodec v0.8.1 // indirect github.com/multiformats/go-multihash v0.2.1 // indirect - github.com/multiformats/go-varint v0.0.6 // indirect + github.com/multiformats/go-varint v0.0.7 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc2 // indirect github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect @@ -189,7 +186,6 @@ require ( github.com/rs/cors v1.8.3 // indirect github.com/rs/zerolog v1.29.1 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/afero v1.9.5 // indirect github.com/spf13/cast v1.5.1 // indirect diff --git a/go.sum b/go.sum index a5f09407d..028fbc674 100644 --- a/go.sum +++ b/go.sum @@ -588,7 +588,7 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= +github.com/google/pprof v0.0.0-20230405160723-4a4c7d95572b h1:Qcx5LM0fSiks9uCyFZwDBUasd3lxd1RM0GYpL+Li5o4= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= @@ -670,8 +670,8 @@ github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09 github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v0.6.0 h1:uL2shRDx7RTrOrTCUZEGP/wJUFiUI8QT6E7z5o8jga4= +github.com/hashicorp/golang-lru v0.6.0/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= @@ -696,8 +696,8 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/ipfs/go-cid v0.2.0 h1:01JTiihFq9en9Vz0lc0VDWvZe/uBonGpzo4THP0vcQ0= -github.com/ipfs/go-cid v0.2.0/go.mod h1:P+HXFDF4CVhaVayiEb4wkAy7zBHxBwsJyt0Y5U6MLro= +github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= +github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= @@ -727,12 +727,12 @@ github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= -github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.16.4 h1:91KN02FnsOYhuunwU4ssRe8lc2JosWmizWa91B5v1PU= +github.com/klauspost/compress v1.16.4/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.3 h1:sxCkb+qR91z4vsqw4vGGZlDgPz3G7gjaLyK3V8y70BU= -github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= +github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -748,10 +748,8 @@ github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= -github.com/libp2p/go-libp2p v0.22.0 h1:2Tce0kHOp5zASFKJbNzRElvh0iZwdtG5uZheNW8chIw= -github.com/libp2p/go-libp2p v0.22.0/go.mod h1:UDolmweypBSjQb2f7xutPnwZ/fxioLbMBxSjRksxxU4= -github.com/libp2p/go-openssl v0.1.0 h1:LBkKEcUv6vtZIQLVTegAil8jbNpJErQ9AnT+bWV+Ooo= -github.com/libp2p/go-openssl v0.1.0/go.mod h1:OiOxwPpL3n4xlenjx2h7AwSGaFSC/KZvf6gNdOBQMtc= +github.com/libp2p/go-libp2p v0.27.3 h1:tkV/zm3KCZ4R5er9Xcs2pt0YNB4JH0iBfGAtHJdLHRs= +github.com/libp2p/go-libp2p v0.27.3/go.mod h1:FAvvfQa/YOShUYdiSS03IR9OXzkcJXwcNA2FUCh9ImE= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/linxGnu/grocksdb v1.7.16 h1:Q2co1xrpdkr5Hx3Fp+f+f7fRGhQFQhvi/+226dtLmA8= @@ -775,8 +773,6 @@ github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27k github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o0= -github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= @@ -821,20 +817,20 @@ github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= -github.com/multiformats/go-base32 v0.0.4 h1:+qMh4a2f37b4xTNs6mqitDinryCI+tfO2dRVMN9mjSE= -github.com/multiformats/go-base32 v0.0.4/go.mod h1:jNLFzjPZtp3aIARHbJRZIaPuspdH0J6q39uUM5pnABM= -github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4= -github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= -github.com/multiformats/go-multiaddr v0.6.0 h1:qMnoOPj2s8xxPU5kZ57Cqdr0hHhARz7mFsPMIiYNqzg= -github.com/multiformats/go-multiaddr v0.6.0/go.mod h1:F4IpaKZuPP360tOMn2Tpyu0At8w23aRyVqeK0DbFeGM= -github.com/multiformats/go-multibase v0.1.1 h1:3ASCDsuLX8+j4kx58qnJ4YFq/JWTJpCyDW27ztsVTOI= -github.com/multiformats/go-multibase v0.1.1/go.mod h1:ZEjHE+IsUrgp5mhlEAYjMtZwK1k4haNkcaPg9aoe1a8= -github.com/multiformats/go-multicodec v0.5.0 h1:EgU6cBe/D7WRwQb1KmnBvU7lrcFGMggZVTPtOW9dDHs= -github.com/multiformats/go-multicodec v0.5.0/go.mod h1:DiY2HFaEp5EhEXb/iYzVAunmyX/aSFMxq2KMKfWEues= +github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= +github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= +github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= +github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= +github.com/multiformats/go-multiaddr v0.9.0 h1:3h4V1LHIk5w4hJHekMKWALPXErDfz/sggzwC/NcqbDQ= +github.com/multiformats/go-multiaddr v0.9.0/go.mod h1:mI67Lb1EeTOYb8GQfL/7wpIZwc46ElrvzhYnoJOmTT0= +github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g= +github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk= +github.com/multiformats/go-multicodec v0.8.1 h1:ycepHwavHafh3grIbR1jIXnKCsFm0fqsfEOsJ8NtKE8= +github.com/multiformats/go-multicodec v0.8.1/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k= github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d16Vve9l108= github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc= -github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY= -github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= +github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -985,8 +981,6 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1 github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 h1:RC6RW7j+1+HkWaX/Yh71Ee5ZHaHYt7ZP4sQgUrm6cDU= -github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -1774,8 +1768,9 @@ modernc.org/tcl v1.15.2 h1:C4ybAYCGJw968e+Me18oW55kD/FexcHbqH2xak1ROSY= modernc.org/token v1.0.1 h1:A3qvTqOwexpfZZeyI0FeGPDlSWX5pjZu9hF4lU+EKWg= modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= modernc.org/z v1.7.3 h1:zDJf6iHjrnB+WRD88stbXokugjyc0/pB91ri1gO6LZY= -nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= +nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA= pgregory.net/rapid v0.5.5/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=