From 41e4e1dfc16983a83f8d52dca5e45258a3114203 Mon Sep 17 00:00:00 2001 From: Jeff Thompson Date: Tue, 27 Jun 2023 12:43:12 +0200 Subject: [PATCH] fix: BREAKING CHANGE. Make API messages names be the same as their event. Fixes #79. Signed-off-by: Jeff Thompson --- api/protocol/protocoltypes.proto | 70 +- contact_request_manager.go | 6 +- contact_request_manager_test.go | 4 +- docs/apis/protocoltypes.md | 232 ++-- docs/apis/protocoltypes.swagger.json | 2 +- events.go | 24 +- events_sig_checkers.go | 4 +- group.go | 4 +- group_context.go | 6 +- orbitdb_test.go | 10 +- orbitdb_utils_test.go | 4 +- pkg/protocoltypes/events_account.go | 24 +- pkg/protocoltypes/protocoltypes.pb.go | 1449 +++++++++++++------------ pkg/testutil/filters.go | 6 +- scenario_test.go | 2 +- store_metadata.go | 22 +- store_metadata_index.go | 28 +- testing.go | 2 +- 18 files changed, 951 insertions(+), 948 deletions(-) diff --git a/api/protocol/protocoltypes.proto b/api/protocol/protocoltypes.proto index b4db4a38..4da5d717 100644 --- a/api/protocol/protocoltypes.proto +++ b/api/protocol/protocoltypes.proto @@ -200,19 +200,19 @@ enum EventType { // EventTypeAccountContactRequestReferenceReset indicates the payload includes that the account has a new contact request rendezvous seed EventTypeAccountContactRequestReferenceReset = 105; - // EventTypeAccountContactRequestEnqueued indicates the payload includes that the account will attempt to send a new contact request + // EventTypeAccountContactRequestOutgoingEnqueued indicates the payload includes that the account will attempt to send a new contact request EventTypeAccountContactRequestOutgoingEnqueued = 106; - // EventTypeAccountContactRequestSent indicates the payload includes that the account has sent a contact request + // EventTypeAccountContactRequestOutgoingSent indicates the payload includes that the account has sent a contact request EventTypeAccountContactRequestOutgoingSent = 107; - // EventTypeAccountContactRequestReceived indicates the payload includes that the account has received a contact request + // EventTypeAccountContactRequestIncomingReceived indicates the payload includes that the account has received a contact request EventTypeAccountContactRequestIncomingReceived = 108; // EventTypeAccountContactRequestIncomingDiscarded indicates the payload includes that the account has ignored a contact request EventTypeAccountContactRequestIncomingDiscarded = 109; - // EventTypeAccountContactRequestAccepted indicates the payload includes that the account has accepted a contact request + // EventTypeAccountContactRequestIncomingAccepted indicates the payload includes that the account has accepted a contact request EventTypeAccountContactRequestIncomingAccepted = 110; // EventTypeAccountContactBlocked indicates the payload includes that the account has blocked a contact @@ -403,8 +403,8 @@ message EventContext { reserved 4; // repeated bytes attachment_cids = 4 [(gogoproto.customname) = "AttachmentCIDs"]; } -// AppMetadata is an app defined message, accessible to future group members -message AppMetadata { +// GroupMetadataPayloadSent is an app defined message, accessible to future group members +message GroupMetadataPayloadSent { // device_pk is the device sending the event, signs the message bytes device_pk = 1 [(gogoproto.customname) = "DevicePK"]; @@ -412,8 +412,8 @@ message AppMetadata { bytes message = 2; } -// ContactAddAliasKey is an event type where ones shares their alias public key -message ContactAddAliasKey { +// ContactAliasKeyAdded is an event type where ones shares their alias public key +message ContactAliasKeyAdded { // device_pk is the device sending the event, signs the message bytes device_pk = 1 [(gogoproto.customname) = "DevicePK"]; @@ -421,9 +421,9 @@ message ContactAddAliasKey { bytes alias_pk = 2 [(gogoproto.customname) = "AliasPK"]; } -// GroupAddMemberDevice is an event which indicates to a group a new device (and eventually a new member) is joining it -// When added on AccountGroup, this event should be followed by appropriate GroupAddMemberDevice and GroupAddDeviceChainKey events -message GroupAddMemberDevice { +// GroupMemberDeviceAdded is an event which indicates to a group a new device (and eventually a new member) is joining it +// When added on AccountGroup, this event should be followed by appropriate GroupMemberDeviceAdded and GroupDeviceChainKeyAdded events +message GroupMemberDeviceAdded { // member_pk is the member sending the event bytes member_pk = 1 [(gogoproto.customname) = "MemberPK"]; @@ -443,8 +443,8 @@ message DeviceChainKey { uint64 counter = 2; } -// GroupAddDeviceChainKey is an event which indicates to a group member a device chain key -message GroupAddDeviceChainKey { +// GroupDeviceChainKeyAdded is an event which indicates to a group member a device chain key +message GroupDeviceChainKeyAdded { // device_pk is the device sending the event, signs the message bytes device_pk = 1 [(gogoproto.customname) = "DevicePK"]; @@ -455,8 +455,8 @@ message GroupAddDeviceChainKey { bytes payload = 3; } -// MultiMemberGroupAddAliasResolver indicates that a group member want to disclose their presence in the group to their contacts -message MultiMemberGroupAddAliasResolver { +// MultiMemberGroupAliasResolverAdded indicates that a group member want to disclose their presence in the group to their contacts +message MultiMemberGroupAliasResolverAdded { // device_pk is the device sending the event, signs the message bytes device_pk = 1 [(gogoproto.customname) = "DevicePK"]; @@ -469,8 +469,8 @@ message MultiMemberGroupAddAliasResolver { bytes alias_proof = 3; } -// MultiMemberGrantAdminRole indicates that a group admin allows another group member to act as an admin -message MultiMemberGrantAdminRole { +// MultiMemberGroupAdminRoleGranted indicates that a group admin allows another group member to act as an admin +message MultiMemberGroupAdminRoleGranted { // device_pk is the device sending the event, signs the message, must be the device of an admin of the group bytes device_pk = 1 [(gogoproto.customname) = "DevicePK"]; @@ -478,8 +478,8 @@ message MultiMemberGrantAdminRole { bytes grantee_member_pk = 2 [(gogoproto.customname) = "GranteeMemberPK"]; } -// MultiMemberInitialMember indicates that a member is the group creator, this event is signed using the group ID private key -message MultiMemberInitialMember { +// MultiMemberGroupInitialMemberAnnounced indicates that a member is the group creator, this event is signed using the group ID private key +message MultiMemberGroupInitialMemberAnnounced { // member_pk is the public key of the member who is the group creator bytes member_pk = 1 [(gogoproto.customname) = "MemberPK"]; } @@ -511,7 +511,7 @@ message AccountGroupJoined { Group group = 2; } -// AccountGroupJoined indicates that the account has left a group +// AccountGroupLeft indicates that the account has left a group message AccountGroupLeft { // device_pk is the device sending the event, signs the message bytes device_pk = 1 [(gogoproto.customname) = "DevicePK"]; @@ -526,13 +526,13 @@ message AccountContactRequestDisabled { bytes device_pk = 1 [(gogoproto.customname) = "DevicePK"]; } -// AccountContactRequestDisabled indicates that the account should be advertised on a public rendezvous point +// AccountContactRequestEnabled indicates that the account should be advertised on a public rendezvous point message AccountContactRequestEnabled { // device_pk is the device sending the event, signs the message bytes device_pk = 1 [(gogoproto.customname) = "DevicePK"]; } -// AccountContactRequestDisabled indicates that the account should be advertised on different public rendezvous points +// AccountContactRequestReferenceReset indicates that the account should be advertised on different public rendezvous points message AccountContactRequestReferenceReset { // device_pk is the device sending the event, signs the message bytes device_pk = 1 [(gogoproto.customname) = "DevicePK"]; @@ -542,10 +542,10 @@ message AccountContactRequestReferenceReset { } // This event should be followed by an AccountGroupJoined event -// This event should be followed by a GroupAddMemberDevice event within the AccountGroup -// This event should be followed by a GroupAddDeviceChainKey event within the AccountGroup -// AccountContactRequestEnqueued indicates that the account will attempt to send a contact request when a matching peer is discovered -message AccountContactRequestEnqueued { +// This event should be followed by a GroupMemberDeviceAdded event within the AccountGroup +// This event should be followed by a GroupDeviceChainKeyAdded event within the AccountGroup +// AccountContactRequestOutgoingEnqueued indicates that the account will attempt to send a contact request when a matching peer is discovered +message AccountContactRequestOutgoingEnqueued { // device_pk is the device sending the event, signs the message bytes device_pk = 1 [(gogoproto.customname) = "DevicePK"]; @@ -559,8 +559,8 @@ message AccountContactRequestEnqueued { bytes own_metadata = 4; } -// AccountContactRequestSent indicates that the account has sent a contact request -message AccountContactRequestSent { +// AccountContactRequestOutgoingSent indicates that the account has sent a contact request +message AccountContactRequestOutgoingSent { // device_pk is the device sending the account event, signs the message bytes device_pk = 1 [(gogoproto.customname) = "DevicePK"]; @@ -568,8 +568,8 @@ message AccountContactRequestSent { bytes contact_pk = 2 [(gogoproto.customname) = "ContactPK"]; } -// AccountContactRequestReceived indicates that the account has received a new contact request -message AccountContactRequestReceived { +// AccountContactRequestIncomingReceived indicates that the account has received a new contact request +message AccountContactRequestIncomingReceived { // device_pk is the device sending the account event (which received the contact request), signs the message bytes device_pk = 1 [(gogoproto.customname) = "DevicePK"]; @@ -585,8 +585,8 @@ message AccountContactRequestReceived { bytes contact_metadata = 4; } -// AccountContactRequestDiscarded indicates that a contact request has been refused -message AccountContactRequestDiscarded { +// AccountContactRequestIncomingDiscarded indicates that a contact request has been refused +message AccountContactRequestIncomingDiscarded { // device_pk is the device sending the event, signs the message bytes device_pk = 1 [(gogoproto.customname) = "DevicePK"]; @@ -595,9 +595,9 @@ message AccountContactRequestDiscarded { } // This event should be followed by an AccountGroupJoined event -// This event should be followed by GroupAddMemberDevice and GroupAddDeviceChainKey events within the AccountGroup -// AccountContactRequestAccepted indicates that a contact request has been accepted -message AccountContactRequestAccepted { +// This event should be followed by GroupMemberDeviceAdded and GroupDeviceChainKeyAdded events within the AccountGroup +// AccountContactRequestIncomingAccepted indicates that a contact request has been accepted +message AccountContactRequestIncomingAccepted { // device_pk is the device sending the event, signs the message bytes device_pk = 1 [(gogoproto.customname) = "DevicePK"]; diff --git a/contact_request_manager.go b/contact_request_manager.go index c79a868e..09342827 100644 --- a/contact_request_manager.go +++ b/contact_request_manager.go @@ -269,7 +269,7 @@ func (c *contactRequestsManager) metadataRequestEnqueued(ctx context.Context, ev strings.TrimPrefix(evt.Metadata.EventType.String(), "EventType"), base64.RawURLEncoding.EncodeToString(evt.EventContext.GroupPK)) c.logger.Debug(traceName, tyber.FormatStepLogFields(ctx, []tyber.Detail{}, tyber.UpdateTraceName(traceName))...) - e := &protocoltypes.AccountContactRequestEnqueued{} + e := &protocoltypes.AccountContactRequestOutgoingEnqueued{} if err := e.Unmarshal(evt.Event); err != nil { return tyber.LogError(ctx, c.logger, "Failed to unmarshal event", err) } @@ -283,7 +283,7 @@ func (c *contactRequestsManager) metadataRequestEnqueued(ctx context.Context, ev } func (c *contactRequestsManager) metadataRequestSent(_ context.Context, evt *protocoltypes.GroupMetadataEvent) error { - e := &protocoltypes.AccountContactRequestSent{} + e := &protocoltypes.AccountContactRequestOutgoingSent{} if err := e.Unmarshal(evt.Event); err != nil { return errcode.ErrDeserialization.Wrap(err) } @@ -295,7 +295,7 @@ func (c *contactRequestsManager) metadataRequestSent(_ context.Context, evt *pro } func (c *contactRequestsManager) metadataRequestReceived(_ context.Context, evt *protocoltypes.GroupMetadataEvent) error { - e := &protocoltypes.AccountContactRequestReceived{} + e := &protocoltypes.AccountContactRequestIncomingReceived{} if err := e.Unmarshal(evt.Event); err != nil { return errcode.ErrDeserialization.Wrap(err) } diff --git a/contact_request_manager_test.go b/contact_request_manager_test.go index 20575e11..6b32aaec 100644 --- a/contact_request_manager_test.go +++ b/contact_request_manager_test.go @@ -84,7 +84,7 @@ func TestContactRequestFlow(t *testing.T) { continue } - req := &protocoltypes.AccountContactRequestReceived{} + req := &protocoltypes.AccountContactRequestIncomingReceived{} err = req.Unmarshal(evt.Event) require.NoError(t, err) @@ -208,7 +208,7 @@ func TestContactRequestFlowWithoutIncoming(t *testing.T) { continue } - req := &protocoltypes.AccountContactRequestReceived{} + req := &protocoltypes.AccountContactRequestIncomingReceived{} err = req.Unmarshal(evt.Event) require.NoError(t, err) diff --git a/docs/apis/protocoltypes.md b/docs/apis/protocoltypes.md index 57aaf568..264dd172 100644 --- a/docs/apis/protocoltypes.md +++ b/docs/apis/protocoltypes.md @@ -6,14 +6,14 @@ - [protocoltypes.proto](#protocoltypes-proto) - [Account](#weshnet-protocol-v1-Account) - [AccountContactBlocked](#weshnet-protocol-v1-AccountContactBlocked) - - [AccountContactRequestAccepted](#weshnet-protocol-v1-AccountContactRequestAccepted) - [AccountContactRequestDisabled](#weshnet-protocol-v1-AccountContactRequestDisabled) - - [AccountContactRequestDiscarded](#weshnet-protocol-v1-AccountContactRequestDiscarded) - [AccountContactRequestEnabled](#weshnet-protocol-v1-AccountContactRequestEnabled) - - [AccountContactRequestEnqueued](#weshnet-protocol-v1-AccountContactRequestEnqueued) - - [AccountContactRequestReceived](#weshnet-protocol-v1-AccountContactRequestReceived) + - [AccountContactRequestIncomingAccepted](#weshnet-protocol-v1-AccountContactRequestIncomingAccepted) + - [AccountContactRequestIncomingDiscarded](#weshnet-protocol-v1-AccountContactRequestIncomingDiscarded) + - [AccountContactRequestIncomingReceived](#weshnet-protocol-v1-AccountContactRequestIncomingReceived) + - [AccountContactRequestOutgoingEnqueued](#weshnet-protocol-v1-AccountContactRequestOutgoingEnqueued) + - [AccountContactRequestOutgoingSent](#weshnet-protocol-v1-AccountContactRequestOutgoingSent) - [AccountContactRequestReferenceReset](#weshnet-protocol-v1-AccountContactRequestReferenceReset) - - [AccountContactRequestSent](#weshnet-protocol-v1-AccountContactRequestSent) - [AccountContactUnblocked](#weshnet-protocol-v1-AccountContactUnblocked) - [AccountGroupJoined](#weshnet-protocol-v1-AccountGroupJoined) - [AccountGroupLeft](#weshnet-protocol-v1-AccountGroupLeft) @@ -26,7 +26,6 @@ - [AppMessageSend](#weshnet-protocol-v1-AppMessageSend) - [AppMessageSend.Reply](#weshnet-protocol-v1-AppMessageSend-Reply) - [AppMessageSend.Request](#weshnet-protocol-v1-AppMessageSend-Request) - - [AppMetadata](#weshnet-protocol-v1-AppMetadata) - [AppMetadataSend](#weshnet-protocol-v1-AppMetadataSend) - [AppMetadataSend.Reply](#weshnet-protocol-v1-AppMetadataSend-Reply) - [AppMetadataSend.Request](#weshnet-protocol-v1-AppMetadataSend-Request) @@ -38,7 +37,7 @@ - [AuthServiceInitFlow](#weshnet-protocol-v1-AuthServiceInitFlow) - [AuthServiceInitFlow.Reply](#weshnet-protocol-v1-AuthServiceInitFlow-Reply) - [AuthServiceInitFlow.Request](#weshnet-protocol-v1-AuthServiceInitFlow-Request) - - [ContactAddAliasKey](#weshnet-protocol-v1-ContactAddAliasKey) + - [ContactAliasKeyAdded](#weshnet-protocol-v1-ContactAliasKeyAdded) - [ContactAliasKeySend](#weshnet-protocol-v1-ContactAliasKeySend) - [ContactAliasKeySend.Reply](#weshnet-protocol-v1-ContactAliasKeySend-Reply) - [ContactAliasKeySend.Request](#weshnet-protocol-v1-ContactAliasKeySend-Request) @@ -99,8 +98,7 @@ - [FirstLastCounters](#weshnet-protocol-v1-FirstLastCounters) - [Group](#weshnet-protocol-v1-Group) - [GroupAddAdditionalRendezvousSeed](#weshnet-protocol-v1-GroupAddAdditionalRendezvousSeed) - - [GroupAddDeviceChainKey](#weshnet-protocol-v1-GroupAddDeviceChainKey) - - [GroupAddMemberDevice](#weshnet-protocol-v1-GroupAddMemberDevice) + - [GroupDeviceChainKeyAdded](#weshnet-protocol-v1-GroupDeviceChainKeyAdded) - [GroupDeviceStatus](#weshnet-protocol-v1-GroupDeviceStatus) - [GroupDeviceStatus.Reply](#weshnet-protocol-v1-GroupDeviceStatus-Reply) - [GroupDeviceStatus.Reply.PeerConnected](#weshnet-protocol-v1-GroupDeviceStatus-Reply-PeerConnected) @@ -112,6 +110,7 @@ - [GroupInfo](#weshnet-protocol-v1-GroupInfo) - [GroupInfo.Reply](#weshnet-protocol-v1-GroupInfo-Reply) - [GroupInfo.Request](#weshnet-protocol-v1-GroupInfo-Request) + - [GroupMemberDeviceAdded](#weshnet-protocol-v1-GroupMemberDeviceAdded) - [GroupMessageEvent](#weshnet-protocol-v1-GroupMessageEvent) - [GroupMessageList](#weshnet-protocol-v1-GroupMessageList) - [GroupMessageList.Request](#weshnet-protocol-v1-GroupMessageList-Request) @@ -119,23 +118,25 @@ - [GroupMetadataEvent](#weshnet-protocol-v1-GroupMetadataEvent) - [GroupMetadataList](#weshnet-protocol-v1-GroupMetadataList) - [GroupMetadataList.Request](#weshnet-protocol-v1-GroupMetadataList-Request) + - [GroupMetadataPayloadSent](#weshnet-protocol-v1-GroupMetadataPayloadSent) - [GroupRemoveAdditionalRendezvousSeed](#weshnet-protocol-v1-GroupRemoveAdditionalRendezvousSeed) - [GroupReplicating](#weshnet-protocol-v1-GroupReplicating) - [MemberWithDevices](#weshnet-protocol-v1-MemberWithDevices) - [MessageEnvelope](#weshnet-protocol-v1-MessageEnvelope) - [MessageHeaders](#weshnet-protocol-v1-MessageHeaders) - [MessageHeaders.MetadataEntry](#weshnet-protocol-v1-MessageHeaders-MetadataEntry) - - [MultiMemberGrantAdminRole](#weshnet-protocol-v1-MultiMemberGrantAdminRole) - - [MultiMemberGroupAddAliasResolver](#weshnet-protocol-v1-MultiMemberGroupAddAliasResolver) - [MultiMemberGroupAdminRoleGrant](#weshnet-protocol-v1-MultiMemberGroupAdminRoleGrant) - [MultiMemberGroupAdminRoleGrant.Reply](#weshnet-protocol-v1-MultiMemberGroupAdminRoleGrant-Reply) - [MultiMemberGroupAdminRoleGrant.Request](#weshnet-protocol-v1-MultiMemberGroupAdminRoleGrant-Request) + - [MultiMemberGroupAdminRoleGranted](#weshnet-protocol-v1-MultiMemberGroupAdminRoleGranted) + - [MultiMemberGroupAliasResolverAdded](#weshnet-protocol-v1-MultiMemberGroupAliasResolverAdded) - [MultiMemberGroupAliasResolverDisclose](#weshnet-protocol-v1-MultiMemberGroupAliasResolverDisclose) - [MultiMemberGroupAliasResolverDisclose.Reply](#weshnet-protocol-v1-MultiMemberGroupAliasResolverDisclose-Reply) - [MultiMemberGroupAliasResolverDisclose.Request](#weshnet-protocol-v1-MultiMemberGroupAliasResolverDisclose-Request) - [MultiMemberGroupCreate](#weshnet-protocol-v1-MultiMemberGroupCreate) - [MultiMemberGroupCreate.Reply](#weshnet-protocol-v1-MultiMemberGroupCreate-Reply) - [MultiMemberGroupCreate.Request](#weshnet-protocol-v1-MultiMemberGroupCreate-Request) + - [MultiMemberGroupInitialMemberAnnounced](#weshnet-protocol-v1-MultiMemberGroupInitialMemberAnnounced) - [MultiMemberGroupInvitationCreate](#weshnet-protocol-v1-MultiMemberGroupInvitationCreate) - [MultiMemberGroupInvitationCreate.Reply](#weshnet-protocol-v1-MultiMemberGroupInvitationCreate-Reply) - [MultiMemberGroupInvitationCreate.Request](#weshnet-protocol-v1-MultiMemberGroupInvitationCreate-Request) @@ -145,7 +146,6 @@ - [MultiMemberGroupLeave](#weshnet-protocol-v1-MultiMemberGroupLeave) - [MultiMemberGroupLeave.Reply](#weshnet-protocol-v1-MultiMemberGroupLeave-Reply) - [MultiMemberGroupLeave.Request](#weshnet-protocol-v1-MultiMemberGroupLeave-Request) - - [MultiMemberInitialMember](#weshnet-protocol-v1-MultiMemberInitialMember) - [OrbitDBMessageHeads](#weshnet-protocol-v1-OrbitDBMessageHeads) - [OrbitDBMessageHeads.Box](#weshnet-protocol-v1-OrbitDBMessageHeads-Box) - [OutOfStoreMessage](#weshnet-protocol-v1-OutOfStoreMessage) @@ -246,19 +246,6 @@ AccountContactBlocked indicates that a contact is blocked | device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message | | contact_pk | [bytes](#bytes) | | contact_pk is the contact blocked | - - -### AccountContactRequestAccepted -This event should be followed by an AccountGroupJoined event -This event should be followed by GroupAddMemberDevice and GroupAddDeviceChainKey events within the AccountGroup -AccountContactRequestAccepted indicates that a contact request has been accepted - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message | -| contact_pk | [bytes](#bytes) | | contact_pk is the contact whom request is accepted | -| group_pk | [bytes](#bytes) | | group_pk is the 1to1 group with the requester user | - ### AccountContactRequestDisabled @@ -268,44 +255,42 @@ AccountContactRequestDisabled indicates that the account should not be advertise | ----- | ---- | ----- | ----------- | | device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message | - + -### AccountContactRequestDiscarded -AccountContactRequestDiscarded indicates that a contact request has been refused +### AccountContactRequestEnabled +AccountContactRequestEnabled indicates that the account should be advertised on a public rendezvous point | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message | -| contact_pk | [bytes](#bytes) | | contact_pk is the contact whom request is refused | - + -### AccountContactRequestEnabled -AccountContactRequestDisabled indicates that the account should be advertised on a public rendezvous point +### AccountContactRequestIncomingAccepted +This event should be followed by an AccountGroupJoined event +This event should be followed by GroupMemberDeviceAdded and GroupDeviceChainKeyAdded events within the AccountGroup +AccountContactRequestIncomingAccepted indicates that a contact request has been accepted | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message | +| contact_pk | [bytes](#bytes) | | contact_pk is the contact whom request is accepted | +| group_pk | [bytes](#bytes) | | group_pk is the 1to1 group with the requester user | - + -### AccountContactRequestEnqueued -This event should be followed by an AccountGroupJoined event -This event should be followed by a GroupAddMemberDevice event within the AccountGroup -This event should be followed by a GroupAddDeviceChainKey event within the AccountGroup -AccountContactRequestEnqueued indicates that the account will attempt to send a contact request when a matching peer is discovered +### AccountContactRequestIncomingDiscarded +AccountContactRequestIncomingDiscarded indicates that a contact request has been refused | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message | -| group_pk | [bytes](#bytes) | | group_pk is the 1to1 group with the requested user | -| contact | [ShareableContact](#weshnet-protocol-v1-ShareableContact) | | contact is a message describing how to connect to the other account | -| own_metadata | [bytes](#bytes) | | own_metadata is the identifying metadata that will be shared to the other account | +| contact_pk | [bytes](#bytes) | | contact_pk is the contact whom request is refused | - + -### AccountContactRequestReceived -AccountContactRequestReceived indicates that the account has received a new contact request +### AccountContactRequestIncomingReceived +AccountContactRequestIncomingReceived indicates that the account has received a new contact request | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | @@ -314,26 +299,41 @@ AccountContactRequestReceived indicates that the account has received a new cont | contact_rendezvous_seed | [bytes](#bytes) | | TODO: is this necessary? contact_rendezvous_seed is the rendezvous seed of the contact sending the request | | contact_metadata | [bytes](#bytes) | | TODO: is this necessary? contact_metadata is the metadata specific to the app to identify the contact for the request | - + -### AccountContactRequestReferenceReset -AccountContactRequestDisabled indicates that the account should be advertised on different public rendezvous points +### AccountContactRequestOutgoingEnqueued +This event should be followed by an AccountGroupJoined event +This event should be followed by a GroupMemberDeviceAdded event within the AccountGroup +This event should be followed by a GroupDeviceChainKeyAdded event within the AccountGroup +AccountContactRequestOutgoingEnqueued indicates that the account will attempt to send a contact request when a matching peer is discovered | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message | -| public_rendezvous_seed | [bytes](#bytes) | | public_rendezvous_seed is the new rendezvous point seed | +| group_pk | [bytes](#bytes) | | group_pk is the 1to1 group with the requested user | +| contact | [ShareableContact](#weshnet-protocol-v1-ShareableContact) | | contact is a message describing how to connect to the other account | +| own_metadata | [bytes](#bytes) | | own_metadata is the identifying metadata that will be shared to the other account | - + -### AccountContactRequestSent -AccountContactRequestSent indicates that the account has sent a contact request +### AccountContactRequestOutgoingSent +AccountContactRequestOutgoingSent indicates that the account has sent a contact request | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | device_pk | [bytes](#bytes) | | device_pk is the device sending the account event, signs the message | | contact_pk | [bytes](#bytes) | | contact_pk is the contacted account | + + +### AccountContactRequestReferenceReset +AccountContactRequestReferenceReset indicates that the account should be advertised on different public rendezvous points + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message | +| public_rendezvous_seed | [bytes](#bytes) | | public_rendezvous_seed is the new rendezvous point seed | + ### AccountContactUnblocked @@ -357,7 +357,7 @@ AccountGroupJoined indicates that the account is now part of a new group ### AccountGroupLeft -AccountGroupJoined indicates that the account has left a group +AccountGroupLeft indicates that the account has left a group | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | @@ -436,16 +436,6 @@ AccountServiceTokenRemoved indicates a token has removed | group_pk | [bytes](#bytes) | | group_pk is the identifier of the group | | payload | [bytes](#bytes) | | payload is the payload to send | - - -### AppMetadata -AppMetadata is an app defined message, accessible to future group members - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message | -| message | [bytes](#bytes) | | message is the payload | - ### AppMetadataSend @@ -530,10 +520,10 @@ AppMetadata is an app defined message, accessible to future group members | auth_url | [string](#string) | | | | services | [string](#string) | repeated | | - + -### ContactAddAliasKey -ContactAddAliasKey is an event type where ones shares their alias public key +### ContactAliasKeyAdded +ContactAliasKeyAdded is an event type where ones shares their alias public key | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | @@ -922,10 +912,10 @@ GroupAddAdditionalRendezvousSeed indicates that an additional rendezvous point s | device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message, must be the device of an admin of the group | | seed | [bytes](#bytes) | | seed is the additional rendezvous point seed which should be used | - + -### GroupAddDeviceChainKey -GroupAddDeviceChainKey is an event which indicates to a group member a device chain key +### GroupDeviceChainKeyAdded +GroupDeviceChainKeyAdded is an event which indicates to a group member a device chain key | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | @@ -933,20 +923,6 @@ GroupAddDeviceChainKey is an event which indicates to a group member a device ch | dest_member_pk | [bytes](#bytes) | | dest_member_pk is the member who should receive the secret | | payload | [bytes](#bytes) | | payload is the serialization of Payload encrypted for the specified member | - - -### GroupAddMemberDevice -GroupAddMemberDevice is an event which indicates to a group a new device (and eventually a new member) is joining it -When added on AccountGroup, this event should be followed by appropriate GroupAddMemberDevice and GroupAddDeviceChainKey events - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| member_pk | [bytes](#bytes) | | member_pk is the member sending the event | -| device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message | -| member_sig | [bytes](#bytes) | | member_sig is used to prove the ownership of the member pk - -TODO: signature of what ??? ensure it can't be replayed | - ### GroupDeviceStatus @@ -1040,6 +1016,20 @@ GroupEnvelope is a publicly exposed structure containing a group metadata event | group_pk | [bytes](#bytes) | | group_pk is the identifier of the group | | contact_pk | [bytes](#bytes) | | contact_pk is the identifier of the contact | + + +### GroupMemberDeviceAdded +GroupMemberDeviceAdded is an event which indicates to a group a new device (and eventually a new member) is joining it +When added on AccountGroup, this event should be followed by appropriate GroupMemberDeviceAdded and GroupDeviceChainKeyAdded events + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| member_pk | [bytes](#bytes) | | member_pk is the member sending the event | +| device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message | +| member_sig | [bytes](#bytes) | | member_sig is used to prove the ownership of the member pk + +TODO: signature of what ??? ensure it can't be replayed | + ### GroupMessageEvent @@ -1106,6 +1096,16 @@ GroupMetadata is used in GroupEnvelope and only readable by invited group member | until_now | [bool](#bool) | | until_now will not list new event to come until_id must not be set | | reverse_order | [bool](#bool) | | reverse_order indicates whether the previous events should be returned in reverse chronological order | + + +### GroupMetadataPayloadSent +GroupMetadataPayloadSent is an app defined message, accessible to future group members + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message | +| message | [bytes](#bytes) | | message is the payload | + ### GroupRemoveAdditionalRendezvousSeed @@ -1167,27 +1167,6 @@ MessageHeaders is used in MessageEnvelope and only readable by invited group mem | key | [string](#string) | | | | value | [string](#string) | | | - - -### MultiMemberGrantAdminRole -MultiMemberGrantAdminRole indicates that a group admin allows another group member to act as an admin - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message, must be the device of an admin of the group | -| grantee_member_pk | [bytes](#bytes) | | grantee_member_pk is the member public key of the member granted of the admin role | - - - -### MultiMemberGroupAddAliasResolver -MultiMemberGroupAddAliasResolver indicates that a group member want to disclose their presence in the group to their contacts - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message | -| alias_resolver | [bytes](#bytes) | | alias_resolver allows contact of an account to resolve the real identity behind an alias (Multi-Member Group Member) Generated by both contacts and account independently using: hmac(aliasPK, GroupID) | -| alias_proof | [bytes](#bytes) | | alias_proof ensures that the associated alias_resolver has been issued by the right account Generated using aliasSKSig(GroupID) | - ### MultiMemberGroupAdminRoleGrant @@ -1205,6 +1184,27 @@ MultiMemberGroupAddAliasResolver indicates that a group member want to disclose | group_pk | [bytes](#bytes) | | group_pk is the identifier of the group | | member_pk | [bytes](#bytes) | | member_pk is the identifier of the member which will be granted the admin role | + + +### MultiMemberGroupAdminRoleGranted +MultiMemberGroupAdminRoleGranted indicates that a group admin allows another group member to act as an admin + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message, must be the device of an admin of the group | +| grantee_member_pk | [bytes](#bytes) | | grantee_member_pk is the member public key of the member granted of the admin role | + + + +### MultiMemberGroupAliasResolverAdded +MultiMemberGroupAliasResolverAdded indicates that a group member want to disclose their presence in the group to their contacts + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| device_pk | [bytes](#bytes) | | device_pk is the device sending the event, signs the message | +| alias_resolver | [bytes](#bytes) | | alias_resolver allows contact of an account to resolve the real identity behind an alias (Multi-Member Group Member) Generated by both contacts and account independently using: hmac(aliasPK, GroupID) | +| alias_proof | [bytes](#bytes) | | alias_proof ensures that the associated alias_resolver has been issued by the right account Generated using aliasSKSig(GroupID) | + ### MultiMemberGroupAliasResolverDisclose @@ -1237,6 +1237,15 @@ MultiMemberGroupAddAliasResolver indicates that a group member want to disclose ### MultiMemberGroupCreate.Request + + +### MultiMemberGroupInitialMemberAnnounced +MultiMemberGroupInitialMemberAnnounced indicates that a member is the group creator, this event is signed using the group ID private key + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| member_pk | [bytes](#bytes) | | member_pk is the public key of the member who is the group creator | + ### MultiMemberGroupInvitationCreate @@ -1289,15 +1298,6 @@ MultiMemberGroupAddAliasResolver indicates that a group member want to disclose | ----- | ---- | ----- | ----------- | | group_pk | [bytes](#bytes) | | | - - -### MultiMemberInitialMember -MultiMemberInitialMember indicates that a member is the group creator, this event is signed using the group ID private key - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| member_pk | [bytes](#bytes) | | member_pk is the public key of the member who is the group creator | - ### OrbitDBMessageHeads @@ -1823,11 +1823,11 @@ Progress define a generic object that can be used to display a progress bar for | EventTypeAccountContactRequestDisabled | 103 | EventTypeAccountContactRequestDisabled indicates the payload includes that the account has disabled incoming contact requests | | EventTypeAccountContactRequestEnabled | 104 | EventTypeAccountContactRequestEnabled indicates the payload includes that the account has enabled incoming contact requests | | EventTypeAccountContactRequestReferenceReset | 105 | EventTypeAccountContactRequestReferenceReset indicates the payload includes that the account has a new contact request rendezvous seed | -| EventTypeAccountContactRequestOutgoingEnqueued | 106 | EventTypeAccountContactRequestEnqueued indicates the payload includes that the account will attempt to send a new contact request | -| EventTypeAccountContactRequestOutgoingSent | 107 | EventTypeAccountContactRequestSent indicates the payload includes that the account has sent a contact request | -| EventTypeAccountContactRequestIncomingReceived | 108 | EventTypeAccountContactRequestReceived indicates the payload includes that the account has received a contact request | +| EventTypeAccountContactRequestOutgoingEnqueued | 106 | EventTypeAccountContactRequestOutgoingEnqueued indicates the payload includes that the account will attempt to send a new contact request | +| EventTypeAccountContactRequestOutgoingSent | 107 | EventTypeAccountContactRequestOutgoingSent indicates the payload includes that the account has sent a contact request | +| EventTypeAccountContactRequestIncomingReceived | 108 | EventTypeAccountContactRequestIncomingReceived indicates the payload includes that the account has received a contact request | | EventTypeAccountContactRequestIncomingDiscarded | 109 | EventTypeAccountContactRequestIncomingDiscarded indicates the payload includes that the account has ignored a contact request | -| EventTypeAccountContactRequestIncomingAccepted | 110 | EventTypeAccountContactRequestAccepted indicates the payload includes that the account has accepted a contact request | +| EventTypeAccountContactRequestIncomingAccepted | 110 | EventTypeAccountContactRequestIncomingAccepted indicates the payload includes that the account has accepted a contact request | | EventTypeAccountContactBlocked | 111 | EventTypeAccountContactBlocked indicates the payload includes that the account has blocked a contact | | EventTypeAccountContactUnblocked | 112 | EventTypeAccountContactUnblocked indicates the payload includes that the account has unblocked a contact | | EventTypeContactAliasKeyAdded | 201 | EventTypeContactAliasKeyAdded indicates the payload includes that the contact group has received an alias key | diff --git a/docs/apis/protocoltypes.swagger.json b/docs/apis/protocoltypes.swagger.json index 762a2101..c1b74fd8 100644 --- a/docs/apis/protocoltypes.swagger.json +++ b/docs/apis/protocoltypes.swagger.json @@ -573,7 +573,7 @@ "EventTypeGroupMetadataPayloadSent" ], "default": "EventTypeUndefined", - "title": "- EventTypeUndefined: EventTypeUndefined indicates that the value has not been set. Should not happen.\n - EventTypeGroupMemberDeviceAdded: EventTypeGroupMemberDeviceAdded indicates the payload includes that a member has added their device to the group\n - EventTypeGroupDeviceChainKeyAdded: EventTypeGroupDeviceChainKeyAdded indicates the payload includes that a member has sent their device chain key to another member\n - EventTypeAccountGroupJoined: EventTypeAccountGroupJoined indicates the payload includes that the account has joined a group\n - EventTypeAccountGroupLeft: EventTypeAccountGroupLeft indicates the payload includes that the account has left a group\n - EventTypeAccountContactRequestDisabled: EventTypeAccountContactRequestDisabled indicates the payload includes that the account has disabled incoming contact requests\n - EventTypeAccountContactRequestEnabled: EventTypeAccountContactRequestEnabled indicates the payload includes that the account has enabled incoming contact requests\n - EventTypeAccountContactRequestReferenceReset: EventTypeAccountContactRequestReferenceReset indicates the payload includes that the account has a new contact request rendezvous seed\n - EventTypeAccountContactRequestOutgoingEnqueued: EventTypeAccountContactRequestEnqueued indicates the payload includes that the account will attempt to send a new contact request\n - EventTypeAccountContactRequestOutgoingSent: EventTypeAccountContactRequestSent indicates the payload includes that the account has sent a contact request\n - EventTypeAccountContactRequestIncomingReceived: EventTypeAccountContactRequestReceived indicates the payload includes that the account has received a contact request\n - EventTypeAccountContactRequestIncomingDiscarded: EventTypeAccountContactRequestIncomingDiscarded indicates the payload includes that the account has ignored a contact request\n - EventTypeAccountContactRequestIncomingAccepted: EventTypeAccountContactRequestAccepted indicates the payload includes that the account has accepted a contact request\n - EventTypeAccountContactBlocked: EventTypeAccountContactBlocked indicates the payload includes that the account has blocked a contact\n - EventTypeAccountContactUnblocked: EventTypeAccountContactUnblocked indicates the payload includes that the account has unblocked a contact\n - EventTypeContactAliasKeyAdded: EventTypeContactAliasKeyAdded indicates the payload includes that the contact group has received an alias key\n - EventTypeMultiMemberGroupAliasResolverAdded: EventTypeMultiMemberGroupAliasResolverAdded indicates the payload includes that a member of the group sent their alias proof\n - EventTypeMultiMemberGroupInitialMemberAnnounced: EventTypeMultiMemberGroupInitialMemberAnnounced indicates the payload includes that a member has authenticated themselves as the group owner\n - EventTypeMultiMemberGroupAdminRoleGranted: EventTypeMultiMemberGroupAdminRoleGranted indicates the payload includes that an admin of the group granted another member as an admin\n - EventTypeAccountServiceTokenAdded: EventTypeAccountServiceTokenAdded indicates that a new service provider has been registered for this account\n - EventTypeAccountServiceTokenRemoved: EventTypeAccountServiceTokenRemoved indicates that a service provider is not available anymore\n - EventTypeGroupReplicating: EventTypeGroupReplicating indicates that the group has been registered for replication on a server\n - EventTypePushMemberTokenUpdate: EventTypePushMemberTokenUpdate\n - EventTypePushDeviceTokenRegistered: EventTypePushDeviceTokenRegistered\n - EventTypePushDeviceServerRegistered: EventTypePushDeviceServerRegistered\n - EventTypeAccountVerifiedCredentialRegistered: EventTypeAccountVerifiedCredentialRegistered\n - EventTypeGroupMetadataPayloadSent: EventTypeGroupMetadataPayloadSent indicates the payload includes an app specific event, unlike messages stored on the message store it is encrypted using a static key" + "title": "- EventTypeUndefined: EventTypeUndefined indicates that the value has not been set. Should not happen.\n - EventTypeGroupMemberDeviceAdded: EventTypeGroupMemberDeviceAdded indicates the payload includes that a member has added their device to the group\n - EventTypeGroupDeviceChainKeyAdded: EventTypeGroupDeviceChainKeyAdded indicates the payload includes that a member has sent their device chain key to another member\n - EventTypeAccountGroupJoined: EventTypeAccountGroupJoined indicates the payload includes that the account has joined a group\n - EventTypeAccountGroupLeft: EventTypeAccountGroupLeft indicates the payload includes that the account has left a group\n - EventTypeAccountContactRequestDisabled: EventTypeAccountContactRequestDisabled indicates the payload includes that the account has disabled incoming contact requests\n - EventTypeAccountContactRequestEnabled: EventTypeAccountContactRequestEnabled indicates the payload includes that the account has enabled incoming contact requests\n - EventTypeAccountContactRequestReferenceReset: EventTypeAccountContactRequestReferenceReset indicates the payload includes that the account has a new contact request rendezvous seed\n - EventTypeAccountContactRequestOutgoingEnqueued: EventTypeAccountContactRequestOutgoingEnqueued indicates the payload includes that the account will attempt to send a new contact request\n - EventTypeAccountContactRequestOutgoingSent: EventTypeAccountContactRequestOutgoingSent indicates the payload includes that the account has sent a contact request\n - EventTypeAccountContactRequestIncomingReceived: EventTypeAccountContactRequestIncomingReceived indicates the payload includes that the account has received a contact request\n - EventTypeAccountContactRequestIncomingDiscarded: EventTypeAccountContactRequestIncomingDiscarded indicates the payload includes that the account has ignored a contact request\n - EventTypeAccountContactRequestIncomingAccepted: EventTypeAccountContactRequestIncomingAccepted indicates the payload includes that the account has accepted a contact request\n - EventTypeAccountContactBlocked: EventTypeAccountContactBlocked indicates the payload includes that the account has blocked a contact\n - EventTypeAccountContactUnblocked: EventTypeAccountContactUnblocked indicates the payload includes that the account has unblocked a contact\n - EventTypeContactAliasKeyAdded: EventTypeContactAliasKeyAdded indicates the payload includes that the contact group has received an alias key\n - EventTypeMultiMemberGroupAliasResolverAdded: EventTypeMultiMemberGroupAliasResolverAdded indicates the payload includes that a member of the group sent their alias proof\n - EventTypeMultiMemberGroupInitialMemberAnnounced: EventTypeMultiMemberGroupInitialMemberAnnounced indicates the payload includes that a member has authenticated themselves as the group owner\n - EventTypeMultiMemberGroupAdminRoleGranted: EventTypeMultiMemberGroupAdminRoleGranted indicates the payload includes that an admin of the group granted another member as an admin\n - EventTypeAccountServiceTokenAdded: EventTypeAccountServiceTokenAdded indicates that a new service provider has been registered for this account\n - EventTypeAccountServiceTokenRemoved: EventTypeAccountServiceTokenRemoved indicates that a service provider is not available anymore\n - EventTypeGroupReplicating: EventTypeGroupReplicating indicates that the group has been registered for replication on a server\n - EventTypePushMemberTokenUpdate: EventTypePushMemberTokenUpdate\n - EventTypePushDeviceTokenRegistered: EventTypePushDeviceTokenRegistered\n - EventTypePushDeviceServerRegistered: EventTypePushDeviceServerRegistered\n - EventTypeAccountVerifiedCredentialRegistered: EventTypeAccountVerifiedCredentialRegistered\n - EventTypeGroupMetadataPayloadSent: EventTypeGroupMetadataPayloadSent indicates the payload includes an app specific event, unlike messages stored on the message store it is encrypted using a static key" }, "v1Group": { "type": "object", diff --git a/events.go b/events.go index c87d5485..1fa8f958 100644 --- a/events.go +++ b/events.go @@ -17,25 +17,25 @@ var eventTypesMapper = map[protocoltypes.EventType]struct { Message proto.Message SigChecker sigChecker }{ - protocoltypes.EventTypeGroupMemberDeviceAdded: {Message: &protocoltypes.GroupAddMemberDevice{}, SigChecker: sigCheckerMemberDeviceAdded}, - protocoltypes.EventTypeGroupDeviceChainKeyAdded: {Message: &protocoltypes.GroupAddDeviceChainKey{}, SigChecker: sigCheckerDeviceSigned}, + protocoltypes.EventTypeGroupMemberDeviceAdded: {Message: &protocoltypes.GroupMemberDeviceAdded{}, SigChecker: sigCheckerGroupMemberDeviceAdded}, + protocoltypes.EventTypeGroupDeviceChainKeyAdded: {Message: &protocoltypes.GroupDeviceChainKeyAdded{}, SigChecker: sigCheckerDeviceSigned}, protocoltypes.EventTypeAccountGroupJoined: {Message: &protocoltypes.AccountGroupJoined{}, SigChecker: sigCheckerDeviceSigned}, protocoltypes.EventTypeAccountGroupLeft: {Message: &protocoltypes.AccountGroupLeft{}, SigChecker: sigCheckerDeviceSigned}, protocoltypes.EventTypeAccountContactRequestDisabled: {Message: &protocoltypes.AccountContactRequestDisabled{}, SigChecker: sigCheckerDeviceSigned}, protocoltypes.EventTypeAccountContactRequestEnabled: {Message: &protocoltypes.AccountContactRequestEnabled{}, SigChecker: sigCheckerDeviceSigned}, protocoltypes.EventTypeAccountContactRequestReferenceReset: {Message: &protocoltypes.AccountContactRequestReferenceReset{}, SigChecker: sigCheckerDeviceSigned}, - protocoltypes.EventTypeAccountContactRequestOutgoingEnqueued: {Message: &protocoltypes.AccountContactRequestEnqueued{}, SigChecker: sigCheckerDeviceSigned}, - protocoltypes.EventTypeAccountContactRequestOutgoingSent: {Message: &protocoltypes.AccountContactRequestSent{}, SigChecker: sigCheckerDeviceSigned}, - protocoltypes.EventTypeAccountContactRequestIncomingReceived: {Message: &protocoltypes.AccountContactRequestReceived{}, SigChecker: sigCheckerDeviceSigned}, - protocoltypes.EventTypeAccountContactRequestIncomingDiscarded: {Message: &protocoltypes.AccountContactRequestDiscarded{}, SigChecker: sigCheckerDeviceSigned}, - protocoltypes.EventTypeAccountContactRequestIncomingAccepted: {Message: &protocoltypes.AccountContactRequestAccepted{}, SigChecker: sigCheckerDeviceSigned}, + protocoltypes.EventTypeAccountContactRequestOutgoingEnqueued: {Message: &protocoltypes.AccountContactRequestOutgoingEnqueued{}, SigChecker: sigCheckerDeviceSigned}, + protocoltypes.EventTypeAccountContactRequestOutgoingSent: {Message: &protocoltypes.AccountContactRequestOutgoingSent{}, SigChecker: sigCheckerDeviceSigned}, + protocoltypes.EventTypeAccountContactRequestIncomingReceived: {Message: &protocoltypes.AccountContactRequestIncomingReceived{}, SigChecker: sigCheckerDeviceSigned}, + protocoltypes.EventTypeAccountContactRequestIncomingDiscarded: {Message: &protocoltypes.AccountContactRequestIncomingDiscarded{}, SigChecker: sigCheckerDeviceSigned}, + protocoltypes.EventTypeAccountContactRequestIncomingAccepted: {Message: &protocoltypes.AccountContactRequestIncomingAccepted{}, SigChecker: sigCheckerDeviceSigned}, protocoltypes.EventTypeAccountContactBlocked: {Message: &protocoltypes.AccountContactBlocked{}, SigChecker: sigCheckerDeviceSigned}, protocoltypes.EventTypeAccountContactUnblocked: {Message: &protocoltypes.AccountContactUnblocked{}, SigChecker: sigCheckerDeviceSigned}, - protocoltypes.EventTypeContactAliasKeyAdded: {Message: &protocoltypes.ContactAddAliasKey{}, SigChecker: sigCheckerDeviceSigned}, - protocoltypes.EventTypeMultiMemberGroupAliasResolverAdded: {Message: &protocoltypes.MultiMemberGroupAddAliasResolver{}, SigChecker: sigCheckerDeviceSigned}, - protocoltypes.EventTypeMultiMemberGroupInitialMemberAnnounced: {Message: &protocoltypes.MultiMemberInitialMember{}, SigChecker: sigCheckerGroupSigned}, - protocoltypes.EventTypeMultiMemberGroupAdminRoleGranted: {Message: &protocoltypes.MultiMemberGrantAdminRole{}, SigChecker: sigCheckerDeviceSigned}, - protocoltypes.EventTypeGroupMetadataPayloadSent: {Message: &protocoltypes.AppMetadata{}, SigChecker: sigCheckerDeviceSigned}, + protocoltypes.EventTypeContactAliasKeyAdded: {Message: &protocoltypes.ContactAliasKeyAdded{}, SigChecker: sigCheckerDeviceSigned}, + protocoltypes.EventTypeMultiMemberGroupAliasResolverAdded: {Message: &protocoltypes.MultiMemberGroupAliasResolverAdded{}, SigChecker: sigCheckerDeviceSigned}, + protocoltypes.EventTypeMultiMemberGroupInitialMemberAnnounced: {Message: &protocoltypes.MultiMemberGroupInitialMemberAnnounced{}, SigChecker: sigCheckerGroupSigned}, + protocoltypes.EventTypeMultiMemberGroupAdminRoleGranted: {Message: &protocoltypes.MultiMemberGroupAdminRoleGranted{}, SigChecker: sigCheckerDeviceSigned}, + protocoltypes.EventTypeGroupMetadataPayloadSent: {Message: &protocoltypes.GroupMetadataPayloadSent{}, SigChecker: sigCheckerDeviceSigned}, protocoltypes.EventTypeAccountServiceTokenAdded: {Message: &protocoltypes.AccountServiceTokenAdded{}, SigChecker: sigCheckerDeviceSigned}, protocoltypes.EventTypeAccountServiceTokenRemoved: {Message: &protocoltypes.AccountServiceTokenRemoved{}, SigChecker: sigCheckerDeviceSigned}, protocoltypes.EventTypeGroupReplicating: {Message: &protocoltypes.GroupReplicating{}, SigChecker: sigCheckerDeviceSigned}, diff --git a/events_sig_checkers.go b/events_sig_checkers.go index 69285aa6..17991903 100644 --- a/events_sig_checkers.go +++ b/events_sig_checkers.go @@ -56,8 +56,8 @@ func sigCheckerDeviceSigned(g *protocoltypes.Group, metadata *protocoltypes.Grou return nil } -func sigCheckerMemberDeviceAdded(g *protocoltypes.Group, metadata *protocoltypes.GroupMetadata, message proto.Message) error { - msg, ok := message.(*protocoltypes.GroupAddMemberDevice) +func sigCheckerGroupMemberDeviceAdded(g *protocoltypes.Group, metadata *protocoltypes.GroupMetadata, message proto.Message) error { + msg, ok := message.(*protocoltypes.GroupMemberDeviceAdded) if !ok { return errcode.ErrDeserialization } diff --git a/group.go b/group.go index dcbb63a1..adbecf99 100644 --- a/group.go +++ b/group.go @@ -15,12 +15,12 @@ func NewGroupMultiMember() (*protocoltypes.Group, crypto.PrivKey, error) { return protocoltypes.NewGroupMultiMember() } -func getAndFilterGroupAddDeviceChainKeyPayload(m *protocoltypes.GroupMetadata, localMemberPublicKey crypto.PubKey) (crypto.PubKey, []byte, error) { +func getAndFilterGroupDeviceChainKeyAddedPayload(m *protocoltypes.GroupMetadata, localMemberPublicKey crypto.PubKey) (crypto.PubKey, []byte, error) { if m == nil || m.EventType != protocoltypes.EventTypeGroupDeviceChainKeyAdded { return nil, nil, errcode.ErrInvalidInput } - s := &protocoltypes.GroupAddDeviceChainKey{} + s := &protocoltypes.GroupDeviceChainKeyAdded{} if err := s.Unmarshal(m.Payload); err != nil { return nil, nil, errcode.ErrDeserialization.Wrap(err) } diff --git a/group_context.go b/group_context.go index 9e81c491..3dff9b21 100644 --- a/group_context.go +++ b/group_context.go @@ -190,7 +190,7 @@ func (gc *GroupContext) ActivateGroupContext(contactPK crypto.PubKey) (err error func (gc *GroupContext) handleGroupMetadataEvent(e *protocoltypes.GroupMetadataEvent) (err error) { switch e.Metadata.EventType { case protocoltypes.EventTypeGroupMemberDeviceAdded: - event := &protocoltypes.GroupAddMemberDevice{} + event := &protocoltypes.GroupMemberDeviceAdded{} if err := event.Unmarshal(e.Event); err != nil { gc.logger.Error("unable to unmarshal payload", zap.Error(err)) } @@ -211,7 +211,7 @@ func (gc *GroupContext) handleGroupMetadataEvent(e *protocoltypes.GroupMetadataE } case protocoltypes.EventTypeGroupDeviceChainKeyAdded: - senderPublicKey, encryptedDeviceChainKey, err := getAndFilterGroupAddDeviceChainKeyPayload(e.Metadata, gc.ownMemberDevice.Member()) + senderPublicKey, encryptedDeviceChainKey, err := getAndFilterGroupDeviceChainKeyAddedPayload(e.Metadata, gc.ownMemberDevice.Member()) switch err { case nil: // ok case errcode.ErrInvalidInput, errcode.ErrGroupSecretOtherDestMember: @@ -265,7 +265,7 @@ func (gc *GroupContext) metadataStoreListSecrets() map[crypto.PubKey][]byte { continue } - pk, encryptedDeviceChainKey, err := getAndFilterGroupAddDeviceChainKeyPayload(metadata.Metadata, gc.MemberPubKey()) + pk, encryptedDeviceChainKey, err := getAndFilterGroupDeviceChainKeyAddedPayload(metadata.Metadata, gc.MemberPubKey()) if errcode.Is(err, errcode.ErrInvalidInput) || errcode.Is(err, errcode.ErrGroupSecretOtherDestMember) { continue } diff --git a/orbitdb_test.go b/orbitdb_test.go index 7892a150..2f8c366c 100644 --- a/orbitdb_test.go +++ b/orbitdb_test.go @@ -140,32 +140,32 @@ func TestDifferentStores(t *testing.T) { { var err error var cc <-chan *protocoltypes.GroupMetadataEvent - var ops []*protocoltypes.AppMetadata + var ops []*protocoltypes.GroupMetadataPayloadSent assert.Eventually(t, func() bool { cc, err = g1a.MetadataStore().ListEvents(ctx, nil, nil, false) - ops = testutil.TestFilterAppMetadata(t, cc) + ops = testutil.TestFilterGroupMetadataPayloadSent(t, cc) return len(ops) == 2 }, time.Second*2, time.Millisecond*100, "have: %d, want: %d", len(ops), 2) require.NoError(t, err) assert.Eventually(t, func() bool { cc, err = g2a.MetadataStore().ListEvents(ctx, nil, nil, false) - ops = testutil.TestFilterAppMetadata(t, cc) + ops = testutil.TestFilterGroupMetadataPayloadSent(t, cc) return len(ops) == 2 }, time.Second*2, time.Millisecond*100, "have: %d, want: %d", len(ops), 2) require.NoError(t, err) assert.Eventually(t, func() bool { cc, err = g1b.MetadataStore().ListEvents(ctx, nil, nil, false) - ops = testutil.TestFilterAppMetadata(t, cc) + ops = testutil.TestFilterGroupMetadataPayloadSent(t, cc) return len(ops) == 4 }, time.Second*2, time.Millisecond*100, "have: %d, want: %d", len(ops), 5) require.NoError(t, err) assert.Eventually(t, func() bool { cc, err = g2b.MetadataStore().ListEvents(ctx, nil, nil, false) - ops = testutil.TestFilterAppMetadata(t, cc) + ops = testutil.TestFilterGroupMetadataPayloadSent(t, cc) return len(ops) == 4 }, time.Second*2, time.Millisecond*100, "have: %d, want: %d", len(ops), 4) require.NoError(t, err) diff --git a/orbitdb_utils_test.go b/orbitdb_utils_test.go index 6ca1f82c..2c5a07a8 100644 --- a/orbitdb_utils_test.go +++ b/orbitdb_utils_test.go @@ -34,7 +34,7 @@ func inviteAllPeersToGroup(ctx context.Context, t *testing.T, peers []*mockedPee continue } - memdev := &protocoltypes.GroupAddMemberDevice{} + memdev := &protocoltypes.GroupMemberDeviceAdded{} if err := memdev.Unmarshal(evt.Event); err != nil { errChan <- err return @@ -102,7 +102,7 @@ func waitForBertyEventType(ctx context.Context, t *testing.T, ms *MetadataStore, handledEvents[eID] = struct{}{} - e := &protocoltypes.GroupAddDeviceChainKey{} + e := &protocoltypes.GroupDeviceChainKeyAdded{} if err := e.Unmarshal(evt.Event); err != nil { t.Fatalf(" err: %+v\n", err.Error()) } diff --git a/pkg/protocoltypes/events_account.go b/pkg/protocoltypes/events_account.go index 6fe6b02c..d88dfb30 100644 --- a/pkg/protocoltypes/events_account.go +++ b/pkg/protocoltypes/events_account.go @@ -20,23 +20,23 @@ func (m *AccountContactRequestReferenceReset) SetDevicePK(pk []byte) { m.DevicePK = pk } -func (m *AccountContactRequestEnqueued) SetDevicePK(pk []byte) { +func (m *AccountContactRequestOutgoingEnqueued) SetDevicePK(pk []byte) { m.DevicePK = pk } -func (m *AccountContactRequestSent) SetDevicePK(pk []byte) { +func (m *AccountContactRequestOutgoingSent) SetDevicePK(pk []byte) { m.DevicePK = pk } -func (m *AccountContactRequestReceived) SetDevicePK(pk []byte) { +func (m *AccountContactRequestIncomingReceived) SetDevicePK(pk []byte) { m.DevicePK = pk } -func (m *AccountContactRequestDiscarded) SetDevicePK(pk []byte) { +func (m *AccountContactRequestIncomingDiscarded) SetDevicePK(pk []byte) { m.DevicePK = pk } -func (m *AccountContactRequestAccepted) SetDevicePK(pk []byte) { +func (m *AccountContactRequestIncomingAccepted) SetDevicePK(pk []byte) { m.DevicePK = pk } @@ -48,15 +48,15 @@ func (m *AccountContactUnblocked) SetDevicePK(pk []byte) { m.DevicePK = pk } -func (m *AccountContactRequestSent) SetContactPK(pk []byte) { +func (m *AccountContactRequestOutgoingSent) SetContactPK(pk []byte) { m.ContactPK = pk } -func (m *AccountContactRequestDiscarded) SetContactPK(pk []byte) { +func (m *AccountContactRequestIncomingDiscarded) SetContactPK(pk []byte) { m.ContactPK = pk } -func (m *AccountContactRequestAccepted) SetContactPK(pk []byte) { +func (m *AccountContactRequestIncomingAccepted) SetContactPK(pk []byte) { m.ContactPK = pk } @@ -72,19 +72,19 @@ func (m *AccountGroupLeft) SetGroupPK(pk []byte) { m.GroupPK = pk } -func (m *ContactAddAliasKey) SetDevicePK(pk []byte) { +func (m *ContactAliasKeyAdded) SetDevicePK(pk []byte) { m.DevicePK = pk } -func (m *MultiMemberGroupAddAliasResolver) SetDevicePK(pk []byte) { +func (m *MultiMemberGroupAliasResolverAdded) SetDevicePK(pk []byte) { m.DevicePK = pk } -func (m *MultiMemberGrantAdminRole) SetDevicePK(pk []byte) { +func (m *MultiMemberGroupAdminRoleGranted) SetDevicePK(pk []byte) { m.DevicePK = pk } -func (m *AppMetadata) SetDevicePK(pk []byte) { +func (m *GroupMetadataPayloadSent) SetDevicePK(pk []byte) { m.DevicePK = pk } diff --git a/pkg/protocoltypes/protocoltypes.pb.go b/pkg/protocoltypes/protocoltypes.pb.go index 80b257d2..0c91fa3d 100644 --- a/pkg/protocoltypes/protocoltypes.pb.go +++ b/pkg/protocoltypes/protocoltypes.pb.go @@ -79,15 +79,15 @@ const ( EventTypeAccountContactRequestEnabled EventType = 104 // EventTypeAccountContactRequestReferenceReset indicates the payload includes that the account has a new contact request rendezvous seed EventTypeAccountContactRequestReferenceReset EventType = 105 - // EventTypeAccountContactRequestEnqueued indicates the payload includes that the account will attempt to send a new contact request + // EventTypeAccountContactRequestOutgoingEnqueued indicates the payload includes that the account will attempt to send a new contact request EventTypeAccountContactRequestOutgoingEnqueued EventType = 106 - // EventTypeAccountContactRequestSent indicates the payload includes that the account has sent a contact request + // EventTypeAccountContactRequestOutgoingSent indicates the payload includes that the account has sent a contact request EventTypeAccountContactRequestOutgoingSent EventType = 107 - // EventTypeAccountContactRequestReceived indicates the payload includes that the account has received a contact request + // EventTypeAccountContactRequestIncomingReceived indicates the payload includes that the account has received a contact request EventTypeAccountContactRequestIncomingReceived EventType = 108 // EventTypeAccountContactRequestIncomingDiscarded indicates the payload includes that the account has ignored a contact request EventTypeAccountContactRequestIncomingDiscarded EventType = 109 - // EventTypeAccountContactRequestAccepted indicates the payload includes that the account has accepted a contact request + // EventTypeAccountContactRequestIncomingAccepted indicates the payload includes that the account has accepted a contact request EventTypeAccountContactRequestIncomingAccepted EventType = 110 // EventTypeAccountContactBlocked indicates the payload includes that the account has blocked a contact EventTypeAccountContactBlocked EventType = 111 @@ -1120,8 +1120,8 @@ func (m *EventContext) GetGroupPK() []byte { return nil } -// AppMetadata is an app defined message, accessible to future group members -type AppMetadata struct { +// GroupMetadataPayloadSent is an app defined message, accessible to future group members +type GroupMetadataPayloadSent struct { // device_pk is the device sending the event, signs the message DevicePK []byte `protobuf:"bytes,1,opt,name=device_pk,json=devicePk,proto3" json:"device_pk,omitempty"` // message is the payload @@ -1131,18 +1131,18 @@ type AppMetadata struct { XXX_sizecache int32 `json:"-"` } -func (m *AppMetadata) Reset() { *m = AppMetadata{} } -func (m *AppMetadata) String() string { return proto.CompactTextString(m) } -func (*AppMetadata) ProtoMessage() {} -func (*AppMetadata) Descriptor() ([]byte, []int) { +func (m *GroupMetadataPayloadSent) Reset() { *m = GroupMetadataPayloadSent{} } +func (m *GroupMetadataPayloadSent) String() string { return proto.CompactTextString(m) } +func (*GroupMetadataPayloadSent) ProtoMessage() {} +func (*GroupMetadataPayloadSent) Descriptor() ([]byte, []int) { return fileDescriptor_8aa93e54ccb19003, []int{10} } -func (m *AppMetadata) XXX_Unmarshal(b []byte) error { +func (m *GroupMetadataPayloadSent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *AppMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *GroupMetadataPayloadSent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_AppMetadata.Marshal(b, m, deterministic) + return xxx_messageInfo_GroupMetadataPayloadSent.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1152,34 +1152,34 @@ func (m *AppMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) return b[:n], nil } } -func (m *AppMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_AppMetadata.Merge(m, src) +func (m *GroupMetadataPayloadSent) XXX_Merge(src proto.Message) { + xxx_messageInfo_GroupMetadataPayloadSent.Merge(m, src) } -func (m *AppMetadata) XXX_Size() int { +func (m *GroupMetadataPayloadSent) XXX_Size() int { return m.Size() } -func (m *AppMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_AppMetadata.DiscardUnknown(m) +func (m *GroupMetadataPayloadSent) XXX_DiscardUnknown() { + xxx_messageInfo_GroupMetadataPayloadSent.DiscardUnknown(m) } -var xxx_messageInfo_AppMetadata proto.InternalMessageInfo +var xxx_messageInfo_GroupMetadataPayloadSent proto.InternalMessageInfo -func (m *AppMetadata) GetDevicePK() []byte { +func (m *GroupMetadataPayloadSent) GetDevicePK() []byte { if m != nil { return m.DevicePK } return nil } -func (m *AppMetadata) GetMessage() []byte { +func (m *GroupMetadataPayloadSent) GetMessage() []byte { if m != nil { return m.Message } return nil } -// ContactAddAliasKey is an event type where ones shares their alias public key -type ContactAddAliasKey struct { +// ContactAliasKeyAdded is an event type where ones shares their alias public key +type ContactAliasKeyAdded struct { // device_pk is the device sending the event, signs the message DevicePK []byte `protobuf:"bytes,1,opt,name=device_pk,json=devicePk,proto3" json:"device_pk,omitempty"` // alias_pk is the alias key which will be used to verify a contact identity @@ -1189,18 +1189,18 @@ type ContactAddAliasKey struct { XXX_sizecache int32 `json:"-"` } -func (m *ContactAddAliasKey) Reset() { *m = ContactAddAliasKey{} } -func (m *ContactAddAliasKey) String() string { return proto.CompactTextString(m) } -func (*ContactAddAliasKey) ProtoMessage() {} -func (*ContactAddAliasKey) Descriptor() ([]byte, []int) { +func (m *ContactAliasKeyAdded) Reset() { *m = ContactAliasKeyAdded{} } +func (m *ContactAliasKeyAdded) String() string { return proto.CompactTextString(m) } +func (*ContactAliasKeyAdded) ProtoMessage() {} +func (*ContactAliasKeyAdded) Descriptor() ([]byte, []int) { return fileDescriptor_8aa93e54ccb19003, []int{11} } -func (m *ContactAddAliasKey) XXX_Unmarshal(b []byte) error { +func (m *ContactAliasKeyAdded) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *ContactAddAliasKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *ContactAliasKeyAdded) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_ContactAddAliasKey.Marshal(b, m, deterministic) + return xxx_messageInfo_ContactAliasKeyAdded.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1210,35 +1210,35 @@ func (m *ContactAddAliasKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, return b[:n], nil } } -func (m *ContactAddAliasKey) XXX_Merge(src proto.Message) { - xxx_messageInfo_ContactAddAliasKey.Merge(m, src) +func (m *ContactAliasKeyAdded) XXX_Merge(src proto.Message) { + xxx_messageInfo_ContactAliasKeyAdded.Merge(m, src) } -func (m *ContactAddAliasKey) XXX_Size() int { +func (m *ContactAliasKeyAdded) XXX_Size() int { return m.Size() } -func (m *ContactAddAliasKey) XXX_DiscardUnknown() { - xxx_messageInfo_ContactAddAliasKey.DiscardUnknown(m) +func (m *ContactAliasKeyAdded) XXX_DiscardUnknown() { + xxx_messageInfo_ContactAliasKeyAdded.DiscardUnknown(m) } -var xxx_messageInfo_ContactAddAliasKey proto.InternalMessageInfo +var xxx_messageInfo_ContactAliasKeyAdded proto.InternalMessageInfo -func (m *ContactAddAliasKey) GetDevicePK() []byte { +func (m *ContactAliasKeyAdded) GetDevicePK() []byte { if m != nil { return m.DevicePK } return nil } -func (m *ContactAddAliasKey) GetAliasPK() []byte { +func (m *ContactAliasKeyAdded) GetAliasPK() []byte { if m != nil { return m.AliasPK } return nil } -// GroupAddMemberDevice is an event which indicates to a group a new device (and eventually a new member) is joining it -// When added on AccountGroup, this event should be followed by appropriate GroupAddMemberDevice and GroupAddDeviceChainKey events -type GroupAddMemberDevice struct { +// GroupMemberDeviceAdded is an event which indicates to a group a new device (and eventually a new member) is joining it +// When added on AccountGroup, this event should be followed by appropriate GroupMemberDeviceAdded and GroupDeviceChainKeyAdded events +type GroupMemberDeviceAdded struct { // member_pk is the member sending the event MemberPK []byte `protobuf:"bytes,1,opt,name=member_pk,json=memberPk,proto3" json:"member_pk,omitempty"` // device_pk is the device sending the event, signs the message @@ -1250,18 +1250,18 @@ type GroupAddMemberDevice struct { XXX_sizecache int32 `json:"-"` } -func (m *GroupAddMemberDevice) Reset() { *m = GroupAddMemberDevice{} } -func (m *GroupAddMemberDevice) String() string { return proto.CompactTextString(m) } -func (*GroupAddMemberDevice) ProtoMessage() {} -func (*GroupAddMemberDevice) Descriptor() ([]byte, []int) { +func (m *GroupMemberDeviceAdded) Reset() { *m = GroupMemberDeviceAdded{} } +func (m *GroupMemberDeviceAdded) String() string { return proto.CompactTextString(m) } +func (*GroupMemberDeviceAdded) ProtoMessage() {} +func (*GroupMemberDeviceAdded) Descriptor() ([]byte, []int) { return fileDescriptor_8aa93e54ccb19003, []int{12} } -func (m *GroupAddMemberDevice) XXX_Unmarshal(b []byte) error { +func (m *GroupMemberDeviceAdded) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *GroupAddMemberDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *GroupMemberDeviceAdded) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_GroupAddMemberDevice.Marshal(b, m, deterministic) + return xxx_messageInfo_GroupMemberDeviceAdded.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1271,33 +1271,33 @@ func (m *GroupAddMemberDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte return b[:n], nil } } -func (m *GroupAddMemberDevice) XXX_Merge(src proto.Message) { - xxx_messageInfo_GroupAddMemberDevice.Merge(m, src) +func (m *GroupMemberDeviceAdded) XXX_Merge(src proto.Message) { + xxx_messageInfo_GroupMemberDeviceAdded.Merge(m, src) } -func (m *GroupAddMemberDevice) XXX_Size() int { +func (m *GroupMemberDeviceAdded) XXX_Size() int { return m.Size() } -func (m *GroupAddMemberDevice) XXX_DiscardUnknown() { - xxx_messageInfo_GroupAddMemberDevice.DiscardUnknown(m) +func (m *GroupMemberDeviceAdded) XXX_DiscardUnknown() { + xxx_messageInfo_GroupMemberDeviceAdded.DiscardUnknown(m) } -var xxx_messageInfo_GroupAddMemberDevice proto.InternalMessageInfo +var xxx_messageInfo_GroupMemberDeviceAdded proto.InternalMessageInfo -func (m *GroupAddMemberDevice) GetMemberPK() []byte { +func (m *GroupMemberDeviceAdded) GetMemberPK() []byte { if m != nil { return m.MemberPK } return nil } -func (m *GroupAddMemberDevice) GetDevicePK() []byte { +func (m *GroupMemberDeviceAdded) GetDevicePK() []byte { if m != nil { return m.DevicePK } return nil } -func (m *GroupAddMemberDevice) GetMemberSig() []byte { +func (m *GroupMemberDeviceAdded) GetMemberSig() []byte { if m != nil { return m.MemberSig } @@ -1362,8 +1362,8 @@ func (m *DeviceChainKey) GetCounter() uint64 { return 0 } -// GroupAddDeviceChainKey is an event which indicates to a group member a device chain key -type GroupAddDeviceChainKey struct { +// GroupDeviceChainKeyAdded is an event which indicates to a group member a device chain key +type GroupDeviceChainKeyAdded struct { // device_pk is the device sending the event, signs the message DevicePK []byte `protobuf:"bytes,1,opt,name=device_pk,json=devicePk,proto3" json:"device_pk,omitempty"` // dest_member_pk is the member who should receive the secret @@ -1375,18 +1375,18 @@ type GroupAddDeviceChainKey struct { XXX_sizecache int32 `json:"-"` } -func (m *GroupAddDeviceChainKey) Reset() { *m = GroupAddDeviceChainKey{} } -func (m *GroupAddDeviceChainKey) String() string { return proto.CompactTextString(m) } -func (*GroupAddDeviceChainKey) ProtoMessage() {} -func (*GroupAddDeviceChainKey) Descriptor() ([]byte, []int) { +func (m *GroupDeviceChainKeyAdded) Reset() { *m = GroupDeviceChainKeyAdded{} } +func (m *GroupDeviceChainKeyAdded) String() string { return proto.CompactTextString(m) } +func (*GroupDeviceChainKeyAdded) ProtoMessage() {} +func (*GroupDeviceChainKeyAdded) Descriptor() ([]byte, []int) { return fileDescriptor_8aa93e54ccb19003, []int{14} } -func (m *GroupAddDeviceChainKey) XXX_Unmarshal(b []byte) error { +func (m *GroupDeviceChainKeyAdded) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *GroupAddDeviceChainKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *GroupDeviceChainKeyAdded) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_GroupAddDeviceChainKey.Marshal(b, m, deterministic) + return xxx_messageInfo_GroupDeviceChainKeyAdded.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1396,41 +1396,41 @@ func (m *GroupAddDeviceChainKey) XXX_Marshal(b []byte, deterministic bool) ([]by return b[:n], nil } } -func (m *GroupAddDeviceChainKey) XXX_Merge(src proto.Message) { - xxx_messageInfo_GroupAddDeviceChainKey.Merge(m, src) +func (m *GroupDeviceChainKeyAdded) XXX_Merge(src proto.Message) { + xxx_messageInfo_GroupDeviceChainKeyAdded.Merge(m, src) } -func (m *GroupAddDeviceChainKey) XXX_Size() int { +func (m *GroupDeviceChainKeyAdded) XXX_Size() int { return m.Size() } -func (m *GroupAddDeviceChainKey) XXX_DiscardUnknown() { - xxx_messageInfo_GroupAddDeviceChainKey.DiscardUnknown(m) +func (m *GroupDeviceChainKeyAdded) XXX_DiscardUnknown() { + xxx_messageInfo_GroupDeviceChainKeyAdded.DiscardUnknown(m) } -var xxx_messageInfo_GroupAddDeviceChainKey proto.InternalMessageInfo +var xxx_messageInfo_GroupDeviceChainKeyAdded proto.InternalMessageInfo -func (m *GroupAddDeviceChainKey) GetDevicePK() []byte { +func (m *GroupDeviceChainKeyAdded) GetDevicePK() []byte { if m != nil { return m.DevicePK } return nil } -func (m *GroupAddDeviceChainKey) GetDestMemberPK() []byte { +func (m *GroupDeviceChainKeyAdded) GetDestMemberPK() []byte { if m != nil { return m.DestMemberPK } return nil } -func (m *GroupAddDeviceChainKey) GetPayload() []byte { +func (m *GroupDeviceChainKeyAdded) GetPayload() []byte { if m != nil { return m.Payload } return nil } -// MultiMemberGroupAddAliasResolver indicates that a group member want to disclose their presence in the group to their contacts -type MultiMemberGroupAddAliasResolver struct { +// MultiMemberGroupAliasResolverAdded indicates that a group member want to disclose their presence in the group to their contacts +type MultiMemberGroupAliasResolverAdded struct { // device_pk is the device sending the event, signs the message DevicePK []byte `protobuf:"bytes,1,opt,name=device_pk,json=devicePk,proto3" json:"device_pk,omitempty"` // alias_resolver allows contact of an account to resolve the real identity behind an alias (Multi-Member Group Member) @@ -1444,18 +1444,18 @@ type MultiMemberGroupAddAliasResolver struct { XXX_sizecache int32 `json:"-"` } -func (m *MultiMemberGroupAddAliasResolver) Reset() { *m = MultiMemberGroupAddAliasResolver{} } -func (m *MultiMemberGroupAddAliasResolver) String() string { return proto.CompactTextString(m) } -func (*MultiMemberGroupAddAliasResolver) ProtoMessage() {} -func (*MultiMemberGroupAddAliasResolver) Descriptor() ([]byte, []int) { +func (m *MultiMemberGroupAliasResolverAdded) Reset() { *m = MultiMemberGroupAliasResolverAdded{} } +func (m *MultiMemberGroupAliasResolverAdded) String() string { return proto.CompactTextString(m) } +func (*MultiMemberGroupAliasResolverAdded) ProtoMessage() {} +func (*MultiMemberGroupAliasResolverAdded) Descriptor() ([]byte, []int) { return fileDescriptor_8aa93e54ccb19003, []int{15} } -func (m *MultiMemberGroupAddAliasResolver) XXX_Unmarshal(b []byte) error { +func (m *MultiMemberGroupAliasResolverAdded) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MultiMemberGroupAddAliasResolver) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MultiMemberGroupAliasResolverAdded) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MultiMemberGroupAddAliasResolver.Marshal(b, m, deterministic) + return xxx_messageInfo_MultiMemberGroupAliasResolverAdded.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1465,41 +1465,41 @@ func (m *MultiMemberGroupAddAliasResolver) XXX_Marshal(b []byte, deterministic b return b[:n], nil } } -func (m *MultiMemberGroupAddAliasResolver) XXX_Merge(src proto.Message) { - xxx_messageInfo_MultiMemberGroupAddAliasResolver.Merge(m, src) +func (m *MultiMemberGroupAliasResolverAdded) XXX_Merge(src proto.Message) { + xxx_messageInfo_MultiMemberGroupAliasResolverAdded.Merge(m, src) } -func (m *MultiMemberGroupAddAliasResolver) XXX_Size() int { +func (m *MultiMemberGroupAliasResolverAdded) XXX_Size() int { return m.Size() } -func (m *MultiMemberGroupAddAliasResolver) XXX_DiscardUnknown() { - xxx_messageInfo_MultiMemberGroupAddAliasResolver.DiscardUnknown(m) +func (m *MultiMemberGroupAliasResolverAdded) XXX_DiscardUnknown() { + xxx_messageInfo_MultiMemberGroupAliasResolverAdded.DiscardUnknown(m) } -var xxx_messageInfo_MultiMemberGroupAddAliasResolver proto.InternalMessageInfo +var xxx_messageInfo_MultiMemberGroupAliasResolverAdded proto.InternalMessageInfo -func (m *MultiMemberGroupAddAliasResolver) GetDevicePK() []byte { +func (m *MultiMemberGroupAliasResolverAdded) GetDevicePK() []byte { if m != nil { return m.DevicePK } return nil } -func (m *MultiMemberGroupAddAliasResolver) GetAliasResolver() []byte { +func (m *MultiMemberGroupAliasResolverAdded) GetAliasResolver() []byte { if m != nil { return m.AliasResolver } return nil } -func (m *MultiMemberGroupAddAliasResolver) GetAliasProof() []byte { +func (m *MultiMemberGroupAliasResolverAdded) GetAliasProof() []byte { if m != nil { return m.AliasProof } return nil } -// MultiMemberGrantAdminRole indicates that a group admin allows another group member to act as an admin -type MultiMemberGrantAdminRole struct { +// MultiMemberGroupAdminRoleGranted indicates that a group admin allows another group member to act as an admin +type MultiMemberGroupAdminRoleGranted struct { // device_pk is the device sending the event, signs the message, must be the device of an admin of the group DevicePK []byte `protobuf:"bytes,1,opt,name=device_pk,json=devicePk,proto3" json:"device_pk,omitempty"` // grantee_member_pk is the member public key of the member granted of the admin role @@ -1509,18 +1509,18 @@ type MultiMemberGrantAdminRole struct { XXX_sizecache int32 `json:"-"` } -func (m *MultiMemberGrantAdminRole) Reset() { *m = MultiMemberGrantAdminRole{} } -func (m *MultiMemberGrantAdminRole) String() string { return proto.CompactTextString(m) } -func (*MultiMemberGrantAdminRole) ProtoMessage() {} -func (*MultiMemberGrantAdminRole) Descriptor() ([]byte, []int) { +func (m *MultiMemberGroupAdminRoleGranted) Reset() { *m = MultiMemberGroupAdminRoleGranted{} } +func (m *MultiMemberGroupAdminRoleGranted) String() string { return proto.CompactTextString(m) } +func (*MultiMemberGroupAdminRoleGranted) ProtoMessage() {} +func (*MultiMemberGroupAdminRoleGranted) Descriptor() ([]byte, []int) { return fileDescriptor_8aa93e54ccb19003, []int{16} } -func (m *MultiMemberGrantAdminRole) XXX_Unmarshal(b []byte) error { +func (m *MultiMemberGroupAdminRoleGranted) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MultiMemberGrantAdminRole) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MultiMemberGroupAdminRoleGranted) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MultiMemberGrantAdminRole.Marshal(b, m, deterministic) + return xxx_messageInfo_MultiMemberGroupAdminRoleGranted.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1530,34 +1530,34 @@ func (m *MultiMemberGrantAdminRole) XXX_Marshal(b []byte, deterministic bool) ([ return b[:n], nil } } -func (m *MultiMemberGrantAdminRole) XXX_Merge(src proto.Message) { - xxx_messageInfo_MultiMemberGrantAdminRole.Merge(m, src) +func (m *MultiMemberGroupAdminRoleGranted) XXX_Merge(src proto.Message) { + xxx_messageInfo_MultiMemberGroupAdminRoleGranted.Merge(m, src) } -func (m *MultiMemberGrantAdminRole) XXX_Size() int { +func (m *MultiMemberGroupAdminRoleGranted) XXX_Size() int { return m.Size() } -func (m *MultiMemberGrantAdminRole) XXX_DiscardUnknown() { - xxx_messageInfo_MultiMemberGrantAdminRole.DiscardUnknown(m) +func (m *MultiMemberGroupAdminRoleGranted) XXX_DiscardUnknown() { + xxx_messageInfo_MultiMemberGroupAdminRoleGranted.DiscardUnknown(m) } -var xxx_messageInfo_MultiMemberGrantAdminRole proto.InternalMessageInfo +var xxx_messageInfo_MultiMemberGroupAdminRoleGranted proto.InternalMessageInfo -func (m *MultiMemberGrantAdminRole) GetDevicePK() []byte { +func (m *MultiMemberGroupAdminRoleGranted) GetDevicePK() []byte { if m != nil { return m.DevicePK } return nil } -func (m *MultiMemberGrantAdminRole) GetGranteeMemberPK() []byte { +func (m *MultiMemberGroupAdminRoleGranted) GetGranteeMemberPK() []byte { if m != nil { return m.GranteeMemberPK } return nil } -// MultiMemberInitialMember indicates that a member is the group creator, this event is signed using the group ID private key -type MultiMemberInitialMember struct { +// MultiMemberGroupInitialMemberAnnounced indicates that a member is the group creator, this event is signed using the group ID private key +type MultiMemberGroupInitialMemberAnnounced struct { // member_pk is the public key of the member who is the group creator MemberPK []byte `protobuf:"bytes,1,opt,name=member_pk,json=memberPk,proto3" json:"member_pk,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -1565,18 +1565,20 @@ type MultiMemberInitialMember struct { XXX_sizecache int32 `json:"-"` } -func (m *MultiMemberInitialMember) Reset() { *m = MultiMemberInitialMember{} } -func (m *MultiMemberInitialMember) String() string { return proto.CompactTextString(m) } -func (*MultiMemberInitialMember) ProtoMessage() {} -func (*MultiMemberInitialMember) Descriptor() ([]byte, []int) { +func (m *MultiMemberGroupInitialMemberAnnounced) Reset() { + *m = MultiMemberGroupInitialMemberAnnounced{} +} +func (m *MultiMemberGroupInitialMemberAnnounced) String() string { return proto.CompactTextString(m) } +func (*MultiMemberGroupInitialMemberAnnounced) ProtoMessage() {} +func (*MultiMemberGroupInitialMemberAnnounced) Descriptor() ([]byte, []int) { return fileDescriptor_8aa93e54ccb19003, []int{17} } -func (m *MultiMemberInitialMember) XXX_Unmarshal(b []byte) error { +func (m *MultiMemberGroupInitialMemberAnnounced) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MultiMemberInitialMember) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MultiMemberGroupInitialMemberAnnounced) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MultiMemberInitialMember.Marshal(b, m, deterministic) + return xxx_messageInfo_MultiMemberGroupInitialMemberAnnounced.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1586,19 +1588,19 @@ func (m *MultiMemberInitialMember) XXX_Marshal(b []byte, deterministic bool) ([] return b[:n], nil } } -func (m *MultiMemberInitialMember) XXX_Merge(src proto.Message) { - xxx_messageInfo_MultiMemberInitialMember.Merge(m, src) +func (m *MultiMemberGroupInitialMemberAnnounced) XXX_Merge(src proto.Message) { + xxx_messageInfo_MultiMemberGroupInitialMemberAnnounced.Merge(m, src) } -func (m *MultiMemberInitialMember) XXX_Size() int { +func (m *MultiMemberGroupInitialMemberAnnounced) XXX_Size() int { return m.Size() } -func (m *MultiMemberInitialMember) XXX_DiscardUnknown() { - xxx_messageInfo_MultiMemberInitialMember.DiscardUnknown(m) +func (m *MultiMemberGroupInitialMemberAnnounced) XXX_DiscardUnknown() { + xxx_messageInfo_MultiMemberGroupInitialMemberAnnounced.DiscardUnknown(m) } -var xxx_messageInfo_MultiMemberInitialMember proto.InternalMessageInfo +var xxx_messageInfo_MultiMemberGroupInitialMemberAnnounced proto.InternalMessageInfo -func (m *MultiMemberInitialMember) GetMemberPK() []byte { +func (m *MultiMemberGroupInitialMemberAnnounced) GetMemberPK() []byte { if m != nil { return m.MemberPK } @@ -1779,7 +1781,7 @@ func (m *AccountGroupJoined) GetGroup() *Group { return nil } -// AccountGroupJoined indicates that the account has left a group +// AccountGroupLeft indicates that the account has left a group type AccountGroupLeft struct { // device_pk is the device sending the event, signs the message DevicePK []byte `protobuf:"bytes,1,opt,name=device_pk,json=devicePk,proto3" json:"device_pk,omitempty"` @@ -1886,7 +1888,7 @@ func (m *AccountContactRequestDisabled) GetDevicePK() []byte { return nil } -// AccountContactRequestDisabled indicates that the account should be advertised on a public rendezvous point +// AccountContactRequestEnabled indicates that the account should be advertised on a public rendezvous point type AccountContactRequestEnabled struct { // device_pk is the device sending the event, signs the message DevicePK []byte `protobuf:"bytes,1,opt,name=device_pk,json=devicePk,proto3" json:"device_pk,omitempty"` @@ -1935,7 +1937,7 @@ func (m *AccountContactRequestEnabled) GetDevicePK() []byte { return nil } -// AccountContactRequestDisabled indicates that the account should be advertised on different public rendezvous points +// AccountContactRequestReferenceReset indicates that the account should be advertised on different public rendezvous points type AccountContactRequestReferenceReset struct { // device_pk is the device sending the event, signs the message DevicePK []byte `protobuf:"bytes,1,opt,name=device_pk,json=devicePk,proto3" json:"device_pk,omitempty"` @@ -1994,10 +1996,10 @@ func (m *AccountContactRequestReferenceReset) GetPublicRendezvousSeed() []byte { } // This event should be followed by an AccountGroupJoined event -// This event should be followed by a GroupAddMemberDevice event within the AccountGroup -// This event should be followed by a GroupAddDeviceChainKey event within the AccountGroup -// AccountContactRequestEnqueued indicates that the account will attempt to send a contact request when a matching peer is discovered -type AccountContactRequestEnqueued struct { +// This event should be followed by a GroupMemberDeviceAdded event within the AccountGroup +// This event should be followed by a GroupDeviceChainKeyAdded event within the AccountGroup +// AccountContactRequestOutgoingEnqueued indicates that the account will attempt to send a contact request when a matching peer is discovered +type AccountContactRequestOutgoingEnqueued struct { // device_pk is the device sending the event, signs the message DevicePK []byte `protobuf:"bytes,1,opt,name=device_pk,json=devicePk,proto3" json:"device_pk,omitempty"` // group_pk is the 1to1 group with the requested user @@ -2011,18 +2013,18 @@ type AccountContactRequestEnqueued struct { XXX_sizecache int32 `json:"-"` } -func (m *AccountContactRequestEnqueued) Reset() { *m = AccountContactRequestEnqueued{} } -func (m *AccountContactRequestEnqueued) String() string { return proto.CompactTextString(m) } -func (*AccountContactRequestEnqueued) ProtoMessage() {} -func (*AccountContactRequestEnqueued) Descriptor() ([]byte, []int) { +func (m *AccountContactRequestOutgoingEnqueued) Reset() { *m = AccountContactRequestOutgoingEnqueued{} } +func (m *AccountContactRequestOutgoingEnqueued) String() string { return proto.CompactTextString(m) } +func (*AccountContactRequestOutgoingEnqueued) ProtoMessage() {} +func (*AccountContactRequestOutgoingEnqueued) Descriptor() ([]byte, []int) { return fileDescriptor_8aa93e54ccb19003, []int{25} } -func (m *AccountContactRequestEnqueued) XXX_Unmarshal(b []byte) error { +func (m *AccountContactRequestOutgoingEnqueued) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *AccountContactRequestEnqueued) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *AccountContactRequestOutgoingEnqueued) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_AccountContactRequestEnqueued.Marshal(b, m, deterministic) + return xxx_messageInfo_AccountContactRequestOutgoingEnqueued.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -2032,48 +2034,48 @@ func (m *AccountContactRequestEnqueued) XXX_Marshal(b []byte, deterministic bool return b[:n], nil } } -func (m *AccountContactRequestEnqueued) XXX_Merge(src proto.Message) { - xxx_messageInfo_AccountContactRequestEnqueued.Merge(m, src) +func (m *AccountContactRequestOutgoingEnqueued) XXX_Merge(src proto.Message) { + xxx_messageInfo_AccountContactRequestOutgoingEnqueued.Merge(m, src) } -func (m *AccountContactRequestEnqueued) XXX_Size() int { +func (m *AccountContactRequestOutgoingEnqueued) XXX_Size() int { return m.Size() } -func (m *AccountContactRequestEnqueued) XXX_DiscardUnknown() { - xxx_messageInfo_AccountContactRequestEnqueued.DiscardUnknown(m) +func (m *AccountContactRequestOutgoingEnqueued) XXX_DiscardUnknown() { + xxx_messageInfo_AccountContactRequestOutgoingEnqueued.DiscardUnknown(m) } -var xxx_messageInfo_AccountContactRequestEnqueued proto.InternalMessageInfo +var xxx_messageInfo_AccountContactRequestOutgoingEnqueued proto.InternalMessageInfo -func (m *AccountContactRequestEnqueued) GetDevicePK() []byte { +func (m *AccountContactRequestOutgoingEnqueued) GetDevicePK() []byte { if m != nil { return m.DevicePK } return nil } -func (m *AccountContactRequestEnqueued) GetGroupPK() []byte { +func (m *AccountContactRequestOutgoingEnqueued) GetGroupPK() []byte { if m != nil { return m.GroupPK } return nil } -func (m *AccountContactRequestEnqueued) GetContact() *ShareableContact { +func (m *AccountContactRequestOutgoingEnqueued) GetContact() *ShareableContact { if m != nil { return m.Contact } return nil } -func (m *AccountContactRequestEnqueued) GetOwnMetadata() []byte { +func (m *AccountContactRequestOutgoingEnqueued) GetOwnMetadata() []byte { if m != nil { return m.OwnMetadata } return nil } -// AccountContactRequestSent indicates that the account has sent a contact request -type AccountContactRequestSent struct { +// AccountContactRequestOutgoingSent indicates that the account has sent a contact request +type AccountContactRequestOutgoingSent struct { // device_pk is the device sending the account event, signs the message DevicePK []byte `protobuf:"bytes,1,opt,name=device_pk,json=devicePk,proto3" json:"device_pk,omitempty"` // contact_pk is the contacted account @@ -2083,18 +2085,18 @@ type AccountContactRequestSent struct { XXX_sizecache int32 `json:"-"` } -func (m *AccountContactRequestSent) Reset() { *m = AccountContactRequestSent{} } -func (m *AccountContactRequestSent) String() string { return proto.CompactTextString(m) } -func (*AccountContactRequestSent) ProtoMessage() {} -func (*AccountContactRequestSent) Descriptor() ([]byte, []int) { +func (m *AccountContactRequestOutgoingSent) Reset() { *m = AccountContactRequestOutgoingSent{} } +func (m *AccountContactRequestOutgoingSent) String() string { return proto.CompactTextString(m) } +func (*AccountContactRequestOutgoingSent) ProtoMessage() {} +func (*AccountContactRequestOutgoingSent) Descriptor() ([]byte, []int) { return fileDescriptor_8aa93e54ccb19003, []int{26} } -func (m *AccountContactRequestSent) XXX_Unmarshal(b []byte) error { +func (m *AccountContactRequestOutgoingSent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *AccountContactRequestSent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *AccountContactRequestOutgoingSent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_AccountContactRequestSent.Marshal(b, m, deterministic) + return xxx_messageInfo_AccountContactRequestOutgoingSent.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -2104,34 +2106,34 @@ func (m *AccountContactRequestSent) XXX_Marshal(b []byte, deterministic bool) ([ return b[:n], nil } } -func (m *AccountContactRequestSent) XXX_Merge(src proto.Message) { - xxx_messageInfo_AccountContactRequestSent.Merge(m, src) +func (m *AccountContactRequestOutgoingSent) XXX_Merge(src proto.Message) { + xxx_messageInfo_AccountContactRequestOutgoingSent.Merge(m, src) } -func (m *AccountContactRequestSent) XXX_Size() int { +func (m *AccountContactRequestOutgoingSent) XXX_Size() int { return m.Size() } -func (m *AccountContactRequestSent) XXX_DiscardUnknown() { - xxx_messageInfo_AccountContactRequestSent.DiscardUnknown(m) +func (m *AccountContactRequestOutgoingSent) XXX_DiscardUnknown() { + xxx_messageInfo_AccountContactRequestOutgoingSent.DiscardUnknown(m) } -var xxx_messageInfo_AccountContactRequestSent proto.InternalMessageInfo +var xxx_messageInfo_AccountContactRequestOutgoingSent proto.InternalMessageInfo -func (m *AccountContactRequestSent) GetDevicePK() []byte { +func (m *AccountContactRequestOutgoingSent) GetDevicePK() []byte { if m != nil { return m.DevicePK } return nil } -func (m *AccountContactRequestSent) GetContactPK() []byte { +func (m *AccountContactRequestOutgoingSent) GetContactPK() []byte { if m != nil { return m.ContactPK } return nil } -// AccountContactRequestReceived indicates that the account has received a new contact request -type AccountContactRequestReceived struct { +// AccountContactRequestIncomingReceived indicates that the account has received a new contact request +type AccountContactRequestIncomingReceived struct { // device_pk is the device sending the account event (which received the contact request), signs the message DevicePK []byte `protobuf:"bytes,1,opt,name=device_pk,json=devicePk,proto3" json:"device_pk,omitempty"` // contact_pk is the account sending the request @@ -2147,18 +2149,18 @@ type AccountContactRequestReceived struct { XXX_sizecache int32 `json:"-"` } -func (m *AccountContactRequestReceived) Reset() { *m = AccountContactRequestReceived{} } -func (m *AccountContactRequestReceived) String() string { return proto.CompactTextString(m) } -func (*AccountContactRequestReceived) ProtoMessage() {} -func (*AccountContactRequestReceived) Descriptor() ([]byte, []int) { +func (m *AccountContactRequestIncomingReceived) Reset() { *m = AccountContactRequestIncomingReceived{} } +func (m *AccountContactRequestIncomingReceived) String() string { return proto.CompactTextString(m) } +func (*AccountContactRequestIncomingReceived) ProtoMessage() {} +func (*AccountContactRequestIncomingReceived) Descriptor() ([]byte, []int) { return fileDescriptor_8aa93e54ccb19003, []int{27} } -func (m *AccountContactRequestReceived) XXX_Unmarshal(b []byte) error { +func (m *AccountContactRequestIncomingReceived) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *AccountContactRequestReceived) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *AccountContactRequestIncomingReceived) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_AccountContactRequestReceived.Marshal(b, m, deterministic) + return xxx_messageInfo_AccountContactRequestIncomingReceived.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -2168,48 +2170,48 @@ func (m *AccountContactRequestReceived) XXX_Marshal(b []byte, deterministic bool return b[:n], nil } } -func (m *AccountContactRequestReceived) XXX_Merge(src proto.Message) { - xxx_messageInfo_AccountContactRequestReceived.Merge(m, src) +func (m *AccountContactRequestIncomingReceived) XXX_Merge(src proto.Message) { + xxx_messageInfo_AccountContactRequestIncomingReceived.Merge(m, src) } -func (m *AccountContactRequestReceived) XXX_Size() int { +func (m *AccountContactRequestIncomingReceived) XXX_Size() int { return m.Size() } -func (m *AccountContactRequestReceived) XXX_DiscardUnknown() { - xxx_messageInfo_AccountContactRequestReceived.DiscardUnknown(m) +func (m *AccountContactRequestIncomingReceived) XXX_DiscardUnknown() { + xxx_messageInfo_AccountContactRequestIncomingReceived.DiscardUnknown(m) } -var xxx_messageInfo_AccountContactRequestReceived proto.InternalMessageInfo +var xxx_messageInfo_AccountContactRequestIncomingReceived proto.InternalMessageInfo -func (m *AccountContactRequestReceived) GetDevicePK() []byte { +func (m *AccountContactRequestIncomingReceived) GetDevicePK() []byte { if m != nil { return m.DevicePK } return nil } -func (m *AccountContactRequestReceived) GetContactPK() []byte { +func (m *AccountContactRequestIncomingReceived) GetContactPK() []byte { if m != nil { return m.ContactPK } return nil } -func (m *AccountContactRequestReceived) GetContactRendezvousSeed() []byte { +func (m *AccountContactRequestIncomingReceived) GetContactRendezvousSeed() []byte { if m != nil { return m.ContactRendezvousSeed } return nil } -func (m *AccountContactRequestReceived) GetContactMetadata() []byte { +func (m *AccountContactRequestIncomingReceived) GetContactMetadata() []byte { if m != nil { return m.ContactMetadata } return nil } -// AccountContactRequestDiscarded indicates that a contact request has been refused -type AccountContactRequestDiscarded struct { +// AccountContactRequestIncomingDiscarded indicates that a contact request has been refused +type AccountContactRequestIncomingDiscarded struct { // device_pk is the device sending the event, signs the message DevicePK []byte `protobuf:"bytes,1,opt,name=device_pk,json=devicePk,proto3" json:"device_pk,omitempty"` // contact_pk is the contact whom request is refused @@ -2219,18 +2221,20 @@ type AccountContactRequestDiscarded struct { XXX_sizecache int32 `json:"-"` } -func (m *AccountContactRequestDiscarded) Reset() { *m = AccountContactRequestDiscarded{} } -func (m *AccountContactRequestDiscarded) String() string { return proto.CompactTextString(m) } -func (*AccountContactRequestDiscarded) ProtoMessage() {} -func (*AccountContactRequestDiscarded) Descriptor() ([]byte, []int) { +func (m *AccountContactRequestIncomingDiscarded) Reset() { + *m = AccountContactRequestIncomingDiscarded{} +} +func (m *AccountContactRequestIncomingDiscarded) String() string { return proto.CompactTextString(m) } +func (*AccountContactRequestIncomingDiscarded) ProtoMessage() {} +func (*AccountContactRequestIncomingDiscarded) Descriptor() ([]byte, []int) { return fileDescriptor_8aa93e54ccb19003, []int{28} } -func (m *AccountContactRequestDiscarded) XXX_Unmarshal(b []byte) error { +func (m *AccountContactRequestIncomingDiscarded) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *AccountContactRequestDiscarded) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *AccountContactRequestIncomingDiscarded) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_AccountContactRequestDiscarded.Marshal(b, m, deterministic) + return xxx_messageInfo_AccountContactRequestIncomingDiscarded.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -2240,26 +2244,26 @@ func (m *AccountContactRequestDiscarded) XXX_Marshal(b []byte, deterministic boo return b[:n], nil } } -func (m *AccountContactRequestDiscarded) XXX_Merge(src proto.Message) { - xxx_messageInfo_AccountContactRequestDiscarded.Merge(m, src) +func (m *AccountContactRequestIncomingDiscarded) XXX_Merge(src proto.Message) { + xxx_messageInfo_AccountContactRequestIncomingDiscarded.Merge(m, src) } -func (m *AccountContactRequestDiscarded) XXX_Size() int { +func (m *AccountContactRequestIncomingDiscarded) XXX_Size() int { return m.Size() } -func (m *AccountContactRequestDiscarded) XXX_DiscardUnknown() { - xxx_messageInfo_AccountContactRequestDiscarded.DiscardUnknown(m) +func (m *AccountContactRequestIncomingDiscarded) XXX_DiscardUnknown() { + xxx_messageInfo_AccountContactRequestIncomingDiscarded.DiscardUnknown(m) } -var xxx_messageInfo_AccountContactRequestDiscarded proto.InternalMessageInfo +var xxx_messageInfo_AccountContactRequestIncomingDiscarded proto.InternalMessageInfo -func (m *AccountContactRequestDiscarded) GetDevicePK() []byte { +func (m *AccountContactRequestIncomingDiscarded) GetDevicePK() []byte { if m != nil { return m.DevicePK } return nil } -func (m *AccountContactRequestDiscarded) GetContactPK() []byte { +func (m *AccountContactRequestIncomingDiscarded) GetContactPK() []byte { if m != nil { return m.ContactPK } @@ -2267,9 +2271,9 @@ func (m *AccountContactRequestDiscarded) GetContactPK() []byte { } // This event should be followed by an AccountGroupJoined event -// This event should be followed by GroupAddMemberDevice and GroupAddDeviceChainKey events within the AccountGroup -// AccountContactRequestAccepted indicates that a contact request has been accepted -type AccountContactRequestAccepted struct { +// This event should be followed by GroupMemberDeviceAdded and GroupDeviceChainKeyAdded events within the AccountGroup +// AccountContactRequestIncomingAccepted indicates that a contact request has been accepted +type AccountContactRequestIncomingAccepted struct { // device_pk is the device sending the event, signs the message DevicePK []byte `protobuf:"bytes,1,opt,name=device_pk,json=devicePk,proto3" json:"device_pk,omitempty"` // contact_pk is the contact whom request is accepted @@ -2281,18 +2285,18 @@ type AccountContactRequestAccepted struct { XXX_sizecache int32 `json:"-"` } -func (m *AccountContactRequestAccepted) Reset() { *m = AccountContactRequestAccepted{} } -func (m *AccountContactRequestAccepted) String() string { return proto.CompactTextString(m) } -func (*AccountContactRequestAccepted) ProtoMessage() {} -func (*AccountContactRequestAccepted) Descriptor() ([]byte, []int) { +func (m *AccountContactRequestIncomingAccepted) Reset() { *m = AccountContactRequestIncomingAccepted{} } +func (m *AccountContactRequestIncomingAccepted) String() string { return proto.CompactTextString(m) } +func (*AccountContactRequestIncomingAccepted) ProtoMessage() {} +func (*AccountContactRequestIncomingAccepted) Descriptor() ([]byte, []int) { return fileDescriptor_8aa93e54ccb19003, []int{29} } -func (m *AccountContactRequestAccepted) XXX_Unmarshal(b []byte) error { +func (m *AccountContactRequestIncomingAccepted) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *AccountContactRequestAccepted) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *AccountContactRequestIncomingAccepted) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_AccountContactRequestAccepted.Marshal(b, m, deterministic) + return xxx_messageInfo_AccountContactRequestIncomingAccepted.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -2302,33 +2306,33 @@ func (m *AccountContactRequestAccepted) XXX_Marshal(b []byte, deterministic bool return b[:n], nil } } -func (m *AccountContactRequestAccepted) XXX_Merge(src proto.Message) { - xxx_messageInfo_AccountContactRequestAccepted.Merge(m, src) +func (m *AccountContactRequestIncomingAccepted) XXX_Merge(src proto.Message) { + xxx_messageInfo_AccountContactRequestIncomingAccepted.Merge(m, src) } -func (m *AccountContactRequestAccepted) XXX_Size() int { +func (m *AccountContactRequestIncomingAccepted) XXX_Size() int { return m.Size() } -func (m *AccountContactRequestAccepted) XXX_DiscardUnknown() { - xxx_messageInfo_AccountContactRequestAccepted.DiscardUnknown(m) +func (m *AccountContactRequestIncomingAccepted) XXX_DiscardUnknown() { + xxx_messageInfo_AccountContactRequestIncomingAccepted.DiscardUnknown(m) } -var xxx_messageInfo_AccountContactRequestAccepted proto.InternalMessageInfo +var xxx_messageInfo_AccountContactRequestIncomingAccepted proto.InternalMessageInfo -func (m *AccountContactRequestAccepted) GetDevicePK() []byte { +func (m *AccountContactRequestIncomingAccepted) GetDevicePK() []byte { if m != nil { return m.DevicePK } return nil } -func (m *AccountContactRequestAccepted) GetContactPK() []byte { +func (m *AccountContactRequestIncomingAccepted) GetContactPK() []byte { if m != nil { return m.ContactPK } return nil } -func (m *AccountContactRequestAccepted) GetGroupPK() []byte { +func (m *AccountContactRequestIncomingAccepted) GetGroupPK() []byte { if m != nil { return m.GroupPK } @@ -11012,14 +11016,14 @@ func init() { proto.RegisterType((*EncryptedMessage)(nil), "weshnet.protocol.v1.EncryptedMessage") proto.RegisterType((*MessageEnvelope)(nil), "weshnet.protocol.v1.MessageEnvelope") proto.RegisterType((*EventContext)(nil), "weshnet.protocol.v1.EventContext") - proto.RegisterType((*AppMetadata)(nil), "weshnet.protocol.v1.AppMetadata") - proto.RegisterType((*ContactAddAliasKey)(nil), "weshnet.protocol.v1.ContactAddAliasKey") - proto.RegisterType((*GroupAddMemberDevice)(nil), "weshnet.protocol.v1.GroupAddMemberDevice") + proto.RegisterType((*GroupMetadataPayloadSent)(nil), "weshnet.protocol.v1.GroupMetadataPayloadSent") + proto.RegisterType((*ContactAliasKeyAdded)(nil), "weshnet.protocol.v1.ContactAliasKeyAdded") + proto.RegisterType((*GroupMemberDeviceAdded)(nil), "weshnet.protocol.v1.GroupMemberDeviceAdded") proto.RegisterType((*DeviceChainKey)(nil), "weshnet.protocol.v1.DeviceChainKey") - proto.RegisterType((*GroupAddDeviceChainKey)(nil), "weshnet.protocol.v1.GroupAddDeviceChainKey") - proto.RegisterType((*MultiMemberGroupAddAliasResolver)(nil), "weshnet.protocol.v1.MultiMemberGroupAddAliasResolver") - proto.RegisterType((*MultiMemberGrantAdminRole)(nil), "weshnet.protocol.v1.MultiMemberGrantAdminRole") - proto.RegisterType((*MultiMemberInitialMember)(nil), "weshnet.protocol.v1.MultiMemberInitialMember") + proto.RegisterType((*GroupDeviceChainKeyAdded)(nil), "weshnet.protocol.v1.GroupDeviceChainKeyAdded") + proto.RegisterType((*MultiMemberGroupAliasResolverAdded)(nil), "weshnet.protocol.v1.MultiMemberGroupAliasResolverAdded") + proto.RegisterType((*MultiMemberGroupAdminRoleGranted)(nil), "weshnet.protocol.v1.MultiMemberGroupAdminRoleGranted") + proto.RegisterType((*MultiMemberGroupInitialMemberAnnounced)(nil), "weshnet.protocol.v1.MultiMemberGroupInitialMemberAnnounced") proto.RegisterType((*GroupAddAdditionalRendezvousSeed)(nil), "weshnet.protocol.v1.GroupAddAdditionalRendezvousSeed") proto.RegisterType((*GroupRemoveAdditionalRendezvousSeed)(nil), "weshnet.protocol.v1.GroupRemoveAdditionalRendezvousSeed") proto.RegisterType((*AccountGroupJoined)(nil), "weshnet.protocol.v1.AccountGroupJoined") @@ -11027,11 +11031,11 @@ func init() { proto.RegisterType((*AccountContactRequestDisabled)(nil), "weshnet.protocol.v1.AccountContactRequestDisabled") proto.RegisterType((*AccountContactRequestEnabled)(nil), "weshnet.protocol.v1.AccountContactRequestEnabled") proto.RegisterType((*AccountContactRequestReferenceReset)(nil), "weshnet.protocol.v1.AccountContactRequestReferenceReset") - proto.RegisterType((*AccountContactRequestEnqueued)(nil), "weshnet.protocol.v1.AccountContactRequestEnqueued") - proto.RegisterType((*AccountContactRequestSent)(nil), "weshnet.protocol.v1.AccountContactRequestSent") - proto.RegisterType((*AccountContactRequestReceived)(nil), "weshnet.protocol.v1.AccountContactRequestReceived") - proto.RegisterType((*AccountContactRequestDiscarded)(nil), "weshnet.protocol.v1.AccountContactRequestDiscarded") - proto.RegisterType((*AccountContactRequestAccepted)(nil), "weshnet.protocol.v1.AccountContactRequestAccepted") + proto.RegisterType((*AccountContactRequestOutgoingEnqueued)(nil), "weshnet.protocol.v1.AccountContactRequestOutgoingEnqueued") + proto.RegisterType((*AccountContactRequestOutgoingSent)(nil), "weshnet.protocol.v1.AccountContactRequestOutgoingSent") + proto.RegisterType((*AccountContactRequestIncomingReceived)(nil), "weshnet.protocol.v1.AccountContactRequestIncomingReceived") + proto.RegisterType((*AccountContactRequestIncomingDiscarded)(nil), "weshnet.protocol.v1.AccountContactRequestIncomingDiscarded") + proto.RegisterType((*AccountContactRequestIncomingAccepted)(nil), "weshnet.protocol.v1.AccountContactRequestIncomingAccepted") proto.RegisterType((*AccountContactBlocked)(nil), "weshnet.protocol.v1.AccountContactBlocked") proto.RegisterType((*AccountContactUnblocked)(nil), "weshnet.protocol.v1.AccountContactUnblocked") proto.RegisterType((*AccountServiceTokenAdded)(nil), "weshnet.protocol.v1.AccountServiceTokenAdded") @@ -11206,411 +11210,410 @@ func init() { func init() { proto.RegisterFile("protocoltypes.proto", fileDescriptor_8aa93e54ccb19003) } var fileDescriptor_8aa93e54ccb19003 = []byte{ - // 6465 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x5d, 0x6c, 0x1c, 0xd7, - 0x75, 0xb0, 0x67, 0x97, 0xe4, 0xee, 0x9e, 0x5d, 0x2e, 0x87, 0x57, 0x94, 0xb4, 0x5a, 0x4b, 0xa2, - 0x3c, 0xb2, 0x7e, 0x6d, 0x53, 0x32, 0xed, 0x2f, 0x8e, 0xa3, 0xd8, 0x09, 0x45, 0x52, 0x0a, 0xad, - 0xbf, 0xf5, 0x50, 0x8c, 0xe3, 0xc0, 0xf8, 0x36, 0xc3, 0x99, 0xcb, 0xe5, 0x84, 0xb3, 0x33, 0xe3, - 0x99, 0x59, 0x4a, 0x0c, 0xbe, 0x7c, 0x08, 0x92, 0x38, 0x49, 0xd1, 0xb4, 0xcd, 0x4f, 0x53, 0x14, - 0x68, 0x50, 0xf4, 0xa1, 0x6f, 0x45, 0x5a, 0x20, 0x28, 0x02, 0x14, 0xe8, 0x53, 0x9f, 0x9a, 0xa2, - 0x0d, 0xf2, 0x94, 0x87, 0x16, 0x60, 0x53, 0x3e, 0xa5, 0x40, 0x51, 0x14, 0x68, 0xd2, 0x3e, 0x04, - 0x28, 0x8a, 0xfb, 0x37, 0x73, 0x67, 0x39, 0xb3, 0x3f, 0xa2, 0x8c, 0x3e, 0xf4, 0x49, 0x7b, 0xcf, - 0x9c, 0xbf, 0x7b, 0xee, 0xdf, 0xb9, 0xe7, 0x9e, 0x43, 0xc1, 0x31, 0x3f, 0xf0, 0x22, 0xcf, 0xf4, - 0x9c, 0x68, 0xcf, 0xc7, 0xe1, 0x02, 0x6d, 0xa1, 0x63, 0x8f, 0x70, 0xb8, 0xed, 0xe2, 0x68, 0x41, - 0x7c, 0x5c, 0xd8, 0x7d, 0xb9, 0x39, 0xd7, 0xf1, 0x3a, 0x1e, 0x05, 0x5c, 0x23, 0xbf, 0xd8, 0xb7, - 0xe6, 0x29, 0xbf, 0x17, 0x6e, 0x53, 0xda, 0x6b, 0xf1, 0x2f, 0xf6, 0x49, 0xfb, 0x3b, 0x05, 0x4a, - 0x4b, 0xa6, 0xe9, 0xf5, 0xdc, 0x08, 0x5d, 0x87, 0xc9, 0x4e, 0xe0, 0xf5, 0xfc, 0x86, 0x72, 0x4e, - 0xb9, 0x5c, 0x5d, 0x6c, 0x2e, 0x64, 0x48, 0x58, 0xb8, 0x4d, 0x30, 0x74, 0x86, 0x88, 0x16, 0xe0, - 0x98, 0xc1, 0x88, 0xdb, 0x7e, 0x60, 0xef, 0x1a, 0x11, 0x6e, 0xef, 0xe0, 0xbd, 0x46, 0xe1, 0x9c, - 0x72, 0xb9, 0xa6, 0xcf, 0xf2, 0x4f, 0x2d, 0xf6, 0xe5, 0x0e, 0xde, 0x43, 0x57, 0x61, 0xd6, 0x70, - 0x6c, 0x23, 0x4c, 0x61, 0x17, 0x29, 0xf6, 0x0c, 0xfd, 0x20, 0xe1, 0xbe, 0x0a, 0x27, 0xfc, 0xde, - 0xa6, 0x63, 0x9b, 0xed, 0x00, 0xbb, 0x16, 0xfe, 0xc2, 0xae, 0xd7, 0x0b, 0xdb, 0x21, 0xc6, 0x56, - 0x63, 0x82, 0x12, 0xcc, 0xb1, 0xaf, 0x7a, 0xfc, 0x71, 0x1d, 0x63, 0x4b, 0xfb, 0xa5, 0x02, 0x93, - 0x54, 0x45, 0x74, 0x06, 0x80, 0xd3, 0x13, 0x21, 0x0a, 0xa5, 0xa9, 0x30, 0x08, 0x61, 0x7f, 0x02, - 0xa6, 0x42, 0x6c, 0x06, 0x38, 0xe2, 0xda, 0xf2, 0x16, 0x21, 0x63, 0xbf, 0xda, 0xa1, 0xdd, 0xe1, - 0xba, 0x55, 0x18, 0x64, 0xdd, 0xee, 0xa0, 0x37, 0x00, 0x68, 0xd7, 0xdb, 0xc4, 0x88, 0x54, 0x93, - 0xfa, 0xe2, 0xd9, 0x7c, 0x43, 0x3d, 0xdc, 0xf3, 0xb1, 0x5e, 0xe9, 0x88, 0x9f, 0xe8, 0x14, 0x94, - 0x43, 0xbb, 0xe3, 0xb6, 0xfd, 0xde, 0x66, 0x63, 0x92, 0xf2, 0x2e, 0x91, 0x76, 0xab, 0xb7, 0x49, - 0x3e, 0x39, 0xb6, 0xbb, 0x43, 0xb5, 0x9d, 0x62, 0x9f, 0x48, 0x9b, 0xe8, 0x7a, 0x0e, 0x6a, 0xe2, - 0x13, 0xd5, 0xaa, 0x44, 0x3f, 0x03, 0xff, 0xbc, 0x6e, 0x77, 0xb4, 0x5f, 0x29, 0xa0, 0x52, 0x81, - 0x9f, 0xc2, 0x86, 0x15, 0xae, 0x3e, 0xf6, 0xbd, 0x20, 0x1a, 0x66, 0x01, 0x59, 0x97, 0x42, 0x5a, - 0x97, 0x55, 0x38, 0xd6, 0xc5, 0x91, 0x61, 0x19, 0x91, 0xd1, 0xde, 0x26, 0x1c, 0xdb, 0xa6, 0x6d, - 0x85, 0x8d, 0xe2, 0xb9, 0xe2, 0xe5, 0xda, 0xcd, 0xe3, 0x07, 0xfb, 0xf3, 0xb3, 0xf7, 0xf8, 0x67, - 0x2a, 0x6f, 0x79, 0x6d, 0x25, 0xd4, 0x67, 0xbb, 0x29, 0x90, 0x6d, 0x85, 0x8c, 0x4d, 0x18, 0x1a, - 0x1d, 0x1c, 0xca, 0x6c, 0x26, 0x64, 0x36, 0xec, 0x73, 0x8a, 0x8d, 0x0c, 0x22, 0x6c, 0x64, 0xcb, - 0x4c, 0xa6, 0x2c, 0xa3, 0xfd, 0x44, 0x81, 0x69, 0xda, 0x6f, 0xa1, 0x0f, 0x19, 0x20, 0xbc, 0x8b, - 0xdd, 0x88, 0x0d, 0x90, 0x32, 0x60, 0x80, 0x56, 0x09, 0x1a, 0x1b, 0x20, 0x2c, 0x7e, 0xa2, 0x06, - 0x94, 0x7c, 0x63, 0xcf, 0xf1, 0x0c, 0x4b, 0xd8, 0x84, 0x37, 0x91, 0x0a, 0xc5, 0x64, 0x46, 0x90, - 0x9f, 0x48, 0x87, 0x59, 0xc1, 0xaf, 0x2d, 0x3a, 0x4f, 0xa7, 0x44, 0x75, 0xf1, 0x42, 0xa6, 0xc4, - 0x16, 0xff, 0x2d, 0x94, 0xd5, 0x55, 0xbf, 0x0f, 0xa2, 0x2d, 0xf1, 0xfe, 0xac, 0xba, 0xbb, 0xd8, - 0xf1, 0x7c, 0x8c, 0xe6, 0x60, 0xd2, 0xf5, 0x5c, 0x13, 0xf3, 0xf1, 0x63, 0x0d, 0x02, 0xa5, 0x3a, - 0x73, 0x25, 0x59, 0xe3, 0xad, 0x89, 0x72, 0x51, 0x9d, 0xd0, 0xfe, 0x5d, 0x81, 0x3a, 0xb7, 0x2b, - 0xb1, 0x21, 0x0e, 0x42, 0xd2, 0x2b, 0xba, 0x14, 0x71, 0x40, 0xd9, 0x4c, 0xe8, 0xa2, 0x89, 0xae, - 0x40, 0xc5, 0xc2, 0xbb, 0xb6, 0x89, 0xdb, 0xfe, 0x0e, 0x63, 0x76, 0xb3, 0x76, 0xb0, 0x3f, 0x5f, - 0x5e, 0xa1, 0xc0, 0xd6, 0x1d, 0xbd, 0xcc, 0x3e, 0xb7, 0x76, 0x32, 0x0c, 0x70, 0x0f, 0xca, 0x52, - 0xbf, 0x8b, 0x97, 0xab, 0x8b, 0x2f, 0x67, 0xf6, 0x3b, 0xad, 0xcd, 0x82, 0xe8, 0xec, 0xaa, 0x1b, - 0x05, 0x7b, 0x7a, 0xcc, 0xa2, 0x79, 0x03, 0xa6, 0x53, 0x9f, 0x88, 0x44, 0x31, 0x73, 0x2b, 0x3a, - 0xf9, 0x49, 0xfa, 0xbd, 0x6b, 0x38, 0x3d, 0x4c, 0x55, 0xad, 0xe8, 0xac, 0xf1, 0xb1, 0xc2, 0x47, - 0x15, 0xad, 0x01, 0x6a, 0xbf, 0x79, 0xdf, 0x9a, 0x28, 0x2b, 0x6a, 0x41, 0xfb, 0xaa, 0x02, 0xea, - 0xaa, 0x6b, 0x06, 0x7b, 0x7e, 0x84, 0x2d, 0xae, 0x0a, 0x3a, 0x0d, 0x15, 0xdf, 0x31, 0x6c, 0x37, - 0xc2, 0x8f, 0xa3, 0x78, 0x69, 0x08, 0x40, 0xf6, 0xc8, 0x16, 0x8e, 0x36, 0xb2, 0x3e, 0xcc, 0x70, - 0xe1, 0xf1, 0xd8, 0x5e, 0x82, 0x19, 0x3e, 0xdb, 0xe9, 0xf2, 0xc0, 0x41, 0xc8, 0x55, 0xa9, 0x77, - 0x0f, 0x8d, 0x1f, 0x87, 0x88, 0x59, 0xc9, 0x9b, 0xc9, 0xf4, 0x28, 0x4a, 0xd3, 0xe3, 0xad, 0x89, - 0xf2, 0x84, 0x3a, 0xa9, 0x7d, 0x59, 0x81, 0x1a, 0x9d, 0xe4, 0xcb, 0x1e, 0xeb, 0xd6, 0x09, 0x28, - 0xd8, 0x16, 0x13, 0x71, 0x73, 0xea, 0x60, 0x7f, 0xbe, 0xb0, 0xb6, 0xa2, 0x17, 0x6c, 0x0b, 0xbd, - 0x08, 0xe0, 0x1b, 0x01, 0x59, 0x34, 0x64, 0x79, 0x16, 0xe8, 0xf2, 0x9c, 0x3e, 0xd8, 0x9f, 0xaf, - 0xb4, 0x28, 0x94, 0x2c, 0xcb, 0x0a, 0x43, 0x58, 0xb3, 0x42, 0x74, 0x11, 0xca, 0x6c, 0x0b, 0xf4, - 0x77, 0x98, 0xd4, 0x9b, 0xd5, 0x83, 0xfd, 0xf9, 0x12, 0x9d, 0xb6, 0xad, 0x3b, 0x7a, 0x89, 0x7e, - 0x6c, 0xed, 0x70, 0x25, 0x74, 0xa8, 0x2e, 0xf9, 0xc9, 0xf2, 0x4c, 0xcd, 0x37, 0x65, 0xe0, 0x7c, - 0xcb, 0xed, 0xb4, 0xd6, 0x01, 0x44, 0xba, 0x64, 0x98, 0xd1, 0x92, 0x65, 0x2d, 0x91, 0x73, 0x83, - 0xec, 0x67, 0x63, 0xb0, 0xbe, 0x08, 0x65, 0x7e, 0x0e, 0x89, 0x49, 0x4f, 0xbb, 0x40, 0x59, 0x91, - 0x2e, 0xb0, 0xb3, 0x68, 0x47, 0xfb, 0x4d, 0x05, 0xe6, 0x68, 0xbf, 0x96, 0x2c, 0xeb, 0x1e, 0xee, - 0x6e, 0xe2, 0x80, 0x31, 0x23, 0xb2, 0xba, 0xb4, 0xdd, 0x27, 0x8b, 0x21, 0x11, 0x59, 0xec, 0x73, - 0x6b, 0x67, 0x9c, 0x15, 0x76, 0x06, 0x80, 0x73, 0x95, 0xce, 0x1e, 0x06, 0x21, 0x9b, 0xfc, 0x6d, - 0xa8, 0x33, 0xa2, 0xe5, 0x6d, 0xc3, 0x76, 0x49, 0x97, 0x9f, 0x85, 0x8a, 0x49, 0x7e, 0x4b, 0x1b, - 0x7c, 0xd9, 0x14, 0x1f, 0xa5, 0x45, 0x5f, 0x48, 0x2d, 0x7a, 0xed, 0x7b, 0x0a, 0x9c, 0x10, 0xdd, - 0xea, 0xe3, 0x38, 0x86, 0x11, 0x3f, 0x02, 0x75, 0x0b, 0x87, 0x51, 0x3b, 0x31, 0x04, 0xeb, 0x9d, - 0x7a, 0xb0, 0x3f, 0x5f, 0x5b, 0xc1, 0x61, 0x14, 0x1b, 0xa3, 0x66, 0x25, 0xad, 0x1d, 0x79, 0x8b, - 0x2d, 0xa6, 0xb6, 0x58, 0xa2, 0xd7, 0xb9, 0x7b, 0x3d, 0x27, 0xb2, 0x19, 0xae, 0x50, 0x91, 0x0e, - 0x8b, 0x8e, 0x43, 0xcf, 0xd9, 0xed, 0xdf, 0xb1, 0x06, 0x6b, 0x78, 0x01, 0xea, 0x6c, 0x98, 0x03, - 0x4e, 0xcc, 0x27, 0xd2, 0xb4, 0x91, 0xe2, 0x38, 0x0f, 0x55, 0xe1, 0x95, 0x78, 0xde, 0x16, 0x57, - 0x0a, 0xb8, 0x3f, 0xe2, 0x79, 0x5b, 0xda, 0xd7, 0x15, 0x38, 0x95, 0xd2, 0xcb, 0x70, 0xa3, 0x25, - 0xab, 0x6b, 0xbb, 0xba, 0xe7, 0xe0, 0x71, 0x14, 0xfa, 0x04, 0xcc, 0x76, 0x08, 0x31, 0xc6, 0x87, - 0xac, 0x76, 0xec, 0x60, 0x7f, 0x7e, 0xe6, 0x36, 0xfb, 0x18, 0x1b, 0x6e, 0xa6, 0x93, 0x02, 0xec, - 0x68, 0xab, 0xd0, 0x90, 0x14, 0x59, 0x73, 0xed, 0xc8, 0x36, 0x1c, 0xd6, 0x18, 0x63, 0x4e, 0x6a, - 0x06, 0x9c, 0x8b, 0x8d, 0x6b, 0x59, 0x76, 0x64, 0x7b, 0xae, 0xe1, 0xa4, 0x3d, 0xa9, 0x71, 0xba, - 0x85, 0x60, 0x82, 0x3a, 0x66, 0xcc, 0xba, 0xf4, 0xb7, 0x66, 0xc1, 0x79, 0xe6, 0x2a, 0xe2, 0xae, - 0xb7, 0x8b, 0x3f, 0x2c, 0x29, 0xef, 0x03, 0xe2, 0xde, 0x2b, 0x15, 0xf6, 0x96, 0x67, 0xbb, 0xe3, - 0x31, 0x8d, 0x7d, 0xde, 0xc2, 0x88, 0x3e, 0xaf, 0x86, 0x41, 0x95, 0x45, 0xde, 0xc5, 0x5b, 0xd1, - 0x98, 0x5b, 0x4f, 0xbc, 0x7b, 0x16, 0xf2, 0x77, 0x4f, 0xed, 0x2d, 0x38, 0xc3, 0xc5, 0xf0, 0xad, - 0x4e, 0xc7, 0xef, 0xf7, 0x70, 0x18, 0xad, 0xd8, 0xa1, 0xb1, 0xe9, 0x8c, 0xd5, 0x49, 0x6d, 0x0d, - 0x4e, 0x67, 0xf2, 0x5a, 0x75, 0xc7, 0x66, 0xf5, 0x35, 0x05, 0xce, 0x67, 0xf2, 0xd2, 0xf1, 0x16, - 0x0e, 0xb0, 0x6b, 0x62, 0x1d, 0x87, 0x78, 0x2c, 0x8b, 0xe4, 0x3b, 0xfa, 0x85, 0x01, 0x8e, 0xfe, - 0xcf, 0x94, 0x1c, 0x03, 0xad, 0xba, 0xef, 0xf7, 0x70, 0x6f, 0xbc, 0x59, 0x30, 0xe2, 0xa0, 0xa0, - 0x4f, 0x90, 0x2d, 0x95, 0x0a, 0xa3, 0xbb, 0x44, 0x9e, 0x37, 0xb0, 0xbe, 0x6d, 0x04, 0x98, 0x98, - 0x56, 0x68, 0x26, 0xa8, 0xd0, 0x73, 0x50, 0xf3, 0x1e, 0xb9, 0x69, 0x6f, 0xb1, 0xa6, 0x57, 0xbd, - 0x47, 0x6e, 0xec, 0x27, 0x44, 0x70, 0x2a, 0xb3, 0x5f, 0xeb, 0xd8, 0x1d, 0xcb, 0xac, 0x2f, 0x02, - 0x70, 0xa9, 0x49, 0xaf, 0xe8, 0xa1, 0xce, 0xd9, 0xb6, 0xee, 0xe8, 0x15, 0x8e, 0xd0, 0xda, 0xd1, - 0xfe, 0x21, 0xcf, 0x9c, 0x3a, 0x36, 0xb1, 0xbd, 0x3b, 0x9e, 0x39, 0xc7, 0x12, 0x8d, 0x3e, 0x02, - 0x27, 0x05, 0x76, 0xff, 0x04, 0x60, 0x5b, 0xf1, 0x71, 0x53, 0x68, 0xd4, 0xb7, 0x75, 0xa8, 0x82, - 0xae, 0xcf, 0x9e, 0x33, 0x1c, 0x1e, 0xdb, 0x74, 0x0f, 0xce, 0xe6, 0x2d, 0x26, 0xd3, 0x08, 0xac, - 0x0f, 0xb1, 0x77, 0xda, 0x1f, 0xe5, 0x19, 0x76, 0xc9, 0x34, 0x31, 0xf1, 0x48, 0x3f, 0x3c, 0xc3, - 0x8e, 0xe8, 0xa8, 0x69, 0x3e, 0x1c, 0x4f, 0x6b, 0x78, 0xd3, 0xf1, 0xcc, 0x9d, 0x0f, 0xd3, 0x28, - 0x01, 0x9c, 0x4c, 0x4b, 0xdc, 0x70, 0x37, 0x3f, 0x6c, 0x99, 0xbf, 0xa5, 0x40, 0x83, 0x0b, 0x5d, - 0xc7, 0x01, 0x61, 0xf1, 0xd0, 0xdb, 0xc1, 0xee, 0x92, 0x35, 0xe6, 0xf0, 0xdf, 0x82, 0xe9, 0x90, - 0xd1, 0xb7, 0x23, 0xc2, 0x80, 0x9f, 0x1c, 0xcf, 0x65, 0xef, 0x04, 0x92, 0x24, 0xbd, 0x16, 0x4a, - 0x2d, 0xcd, 0x83, 0x66, 0x86, 0x3a, 0xec, 0xb8, 0x1c, 0x77, 0xf3, 0xa2, 0x8a, 0xb4, 0x6d, 0xb6, - 0x63, 0x56, 0xd8, 0x30, 0x53, 0x76, 0x6b, 0x2b, 0x7a, 0x89, 0x7e, 0x5c, 0xb3, 0xb4, 0x1f, 0x8a, - 0x18, 0x81, 0x8e, 0x7d, 0xc7, 0x36, 0x8d, 0xc8, 0x76, 0x3b, 0xe3, 0xc8, 0x59, 0x01, 0x64, 0xf4, - 0xa2, 0x6d, 0xec, 0x46, 0x94, 0xd8, 0x73, 0xdb, 0xbd, 0xc0, 0xe1, 0x12, 0xe9, 0x65, 0x7e, 0x29, - 0xf5, 0x75, 0x43, 0xbf, 0xab, 0xcf, 0xa6, 0x09, 0x36, 0x02, 0x07, 0xbd, 0x04, 0x28, 0x10, 0xf2, - 0x3d, 0xb7, 0x4d, 0x4c, 0x82, 0x03, 0x3a, 0x3d, 0x2b, 0xfa, 0xac, 0xf4, 0x65, 0x9d, 0x7e, 0xd0, - 0xee, 0xc2, 0x2c, 0x37, 0x0f, 0x0b, 0x6a, 0xac, 0x90, 0x8b, 0x62, 0x05, 0x4a, 0x7c, 0x11, 0x35, - 0x5f, 0x84, 0x49, 0xd2, 0x9d, 0x3d, 0x74, 0x1e, 0xa6, 0x31, 0xc5, 0xc0, 0x56, 0x9b, 0x6e, 0x05, - 0xcc, 0x1d, 0xae, 0x09, 0x20, 0x21, 0xd4, 0x7e, 0x35, 0x05, 0x27, 0x39, 0xbb, 0xdb, 0x98, 0xcc, - 0xbd, 0x2d, 0xbb, 0xd3, 0x0b, 0xa8, 0x3c, 0x99, 0xe9, 0x07, 0x53, 0x82, 0xeb, 0x8b, 0x00, 0x71, - 0x80, 0x4b, 0xd8, 0x87, 0x4e, 0x31, 0x3e, 0x74, 0x64, 0x8a, 0x89, 0x30, 0xd7, 0x58, 0xae, 0xfe, - 0xc7, 0x41, 0x15, 0x8c, 0xfb, 0xd6, 0x28, 0x3a, 0xd8, 0x9f, 0xaf, 0xcb, 0x1e, 0x46, 0xeb, 0x8e, - 0x5e, 0x37, 0xe4, 0xf6, 0x0e, 0x3a, 0x0f, 0x25, 0x1f, 0xe3, 0x80, 0x8c, 0xf8, 0x04, 0xb5, 0x3f, - 0x1c, 0xec, 0xcf, 0x4f, 0xb5, 0x30, 0x0e, 0xd6, 0x56, 0xf4, 0x29, 0xf2, 0x69, 0xcd, 0x22, 0x57, - 0x5c, 0xc7, 0x0e, 0x23, 0xec, 0x92, 0x7b, 0xe5, 0xe4, 0xb9, 0xe2, 0xe5, 0x8a, 0x9e, 0x00, 0xd0, - 0x67, 0xa1, 0xba, 0xe9, 0xe0, 0x36, 0x66, 0x2e, 0x00, 0x8d, 0x38, 0xd5, 0x17, 0x5f, 0x1f, 0x34, - 0x89, 0xfb, 0x2d, 0xb6, 0xb0, 0x8e, 0x23, 0x32, 0x87, 0xd6, 0x23, 0x23, 0xc2, 0x3a, 0x6c, 0x3a, - 0x58, 0xf8, 0x13, 0x26, 0xa8, 0x8f, 0xec, 0x2d, 0xbb, 0xed, 0x2f, 0xfa, 0xb1, 0x80, 0xd2, 0x51, - 0x05, 0xd4, 0x09, 0xcb, 0xd6, 0xa2, 0x2f, 0x84, 0xbc, 0x07, 0xb5, 0xae, 0xe5, 0x86, 0xb1, 0x80, - 0xf2, 0x51, 0x05, 0x54, 0x09, 0x3b, 0xc1, 0xfd, 0xff, 0xc2, 0x74, 0x80, 0x1d, 0x63, 0x2f, 0x66, - 0x5f, 0x39, 0x2a, 0xfb, 0x1a, 0xe5, 0x27, 0xf8, 0x3f, 0x84, 0x59, 0x31, 0x55, 0x7a, 0xe1, 0x36, - 0xdf, 0x49, 0x80, 0xee, 0x24, 0x97, 0xb3, 0x23, 0x0c, 0xbd, 0x70, 0x9b, 0xcb, 0xe1, 0x47, 0x72, - 0xa0, 0xcf, 0xf0, 0xe9, 0xd4, 0x0b, 0xb7, 0xe9, 0x6a, 0x47, 0xf7, 0x00, 0xc9, 0x5c, 0xf9, 0xe2, - 0xaa, 0x52, 0xb6, 0xf3, 0x03, 0xd9, 0xe2, 0x40, 0x57, 0x13, 0x6e, 0x7c, 0xf1, 0xdd, 0x86, 0x9a, - 0xdc, 0x05, 0x54, 0x85, 0xd2, 0x86, 0xbb, 0xe3, 0x7a, 0x8f, 0x5c, 0xf5, 0x19, 0xd2, 0xe0, 0x9d, - 0x51, 0x15, 0x54, 0x83, 0xb2, 0x70, 0x4c, 0xd5, 0x02, 0x9a, 0x81, 0xea, 0x86, 0x6b, 0xec, 0x1a, - 0xb6, 0x43, 0x20, 0x6a, 0x51, 0xfb, 0x22, 0x9c, 0xcc, 0xf1, 0x16, 0xe5, 0x65, 0xf7, 0x8e, 0x58, - 0x75, 0xf9, 0x1e, 0xa1, 0x92, 0xef, 0x11, 0x92, 0x7b, 0xa5, 0x18, 0x2c, 0xb2, 0xf6, 0xca, 0xba, - 0x68, 0x6a, 0x2f, 0xc0, 0xf1, 0x4c, 0x27, 0x5a, 0x16, 0x5e, 0xe2, 0xc2, 0xb5, 0xcf, 0xc1, 0x5c, - 0x96, 0x97, 0x2c, 0xe3, 0xbe, 0x71, 0x24, 0x45, 0xb5, 0x6d, 0x38, 0xdd, 0x6f, 0x8d, 0x10, 0x67, - 0x9b, 0xe4, 0x88, 0x92, 0xbe, 0xa9, 0xc4, 0x91, 0x92, 0xc4, 0x8b, 0xb4, 0x9a, 0xdd, 0x58, 0x80, - 0xec, 0xd1, 0x2a, 0x4f, 0xc5, 0xa3, 0x2d, 0x1c, 0xf2, 0x68, 0x13, 0xd3, 0x7e, 0xa6, 0xdf, 0xb4, - 0xcc, 0x07, 0x6a, 0xbe, 0x96, 0xe8, 0x93, 0x3e, 0xd3, 0x95, 0xc1, 0x67, 0x7a, 0xc2, 0xf9, 0xdd, - 0x8c, 0x11, 0x26, 0x9e, 0xdd, 0x53, 0x60, 0x7d, 0x07, 0x6a, 0xb4, 0xf7, 0x1c, 0x4b, 0x1e, 0x9d, - 0xeb, 0x62, 0x74, 0x2e, 0xc1, 0x0c, 0x76, 0x4d, 0xcf, 0xc2, 0x56, 0x5b, 0xb6, 0x66, 0x4d, 0xaf, - 0x73, 0x30, 0x27, 0x26, 0x4e, 0xc8, 0xf4, 0x0a, 0x26, 0x20, 0xc1, 0x6e, 0x31, 0x51, 0x70, 0x54, - 0x2e, 0xcd, 0x4f, 0x09, 0xb9, 0x47, 0x1d, 0x3d, 0xad, 0x05, 0x35, 0xd9, 0xe7, 0x7b, 0x0a, 0xe6, - 0xd2, 0xa1, 0x9e, 0xf6, 0xe9, 0x9e, 0x02, 0xcf, 0xb7, 0xe1, 0x98, 0x88, 0xf7, 0xf1, 0x60, 0x1f, - 0x9d, 0xc6, 0x2f, 0x27, 0x8c, 0x65, 0x57, 0x57, 0xc9, 0x77, 0x75, 0x13, 0x96, 0x0f, 0xe1, 0x44, - 0x7f, 0xa4, 0x69, 0x39, 0xc0, 0x46, 0x94, 0x5a, 0x7d, 0xd7, 0x84, 0x9d, 0x47, 0x64, 0xaf, 0xbd, - 0x07, 0x73, 0xfd, 0x5c, 0xdf, 0xf2, 0x6c, 0xb7, 0x79, 0x23, 0xd1, 0x74, 0xec, 0x47, 0xb6, 0x44, - 0xe7, 0x75, 0x38, 0xde, 0xcf, 0xfd, 0x2e, 0x36, 0x76, 0xf1, 0x91, 0x0c, 0x61, 0xc2, 0x85, 0x43, - 0x21, 0x37, 0x39, 0x3a, 0x46, 0x16, 0x92, 0xe3, 0x85, 0x47, 0x13, 0xf2, 0x75, 0x05, 0xce, 0x1e, - 0x0e, 0xec, 0xf1, 0x00, 0x1a, 0x0d, 0x7a, 0x35, 0xdf, 0x1b, 0x9b, 0x7d, 0x3a, 0xe0, 0x55, 0x18, - 0x14, 0xf0, 0x4a, 0x34, 0xf9, 0x56, 0x46, 0x88, 0x71, 0xcd, 0xdd, 0xb5, 0x23, 0x7a, 0x62, 0xf3, - 0x29, 0xf0, 0x04, 0x5d, 0x7d, 0x5d, 0x4c, 0x95, 0xb1, 0xc7, 0x57, 0xfb, 0x86, 0x02, 0x33, 0x52, - 0x88, 0x9c, 0x4e, 0xed, 0xb7, 0xc7, 0xb7, 0x46, 0xee, 0xcb, 0x15, 0x7b, 0x16, 0x6a, 0x6a, 0x42, - 0xc3, 0x53, 0x50, 0x34, 0xe3, 0x67, 0x80, 0xd2, 0xc1, 0xfe, 0x7c, 0x71, 0x79, 0x6d, 0x45, 0x27, - 0x30, 0x32, 0x4e, 0x75, 0xaa, 0x0a, 0x8d, 0xb3, 0xff, 0x4f, 0x6a, 0xf2, 0x43, 0x05, 0x50, 0xea, - 0x61, 0x8f, 0x3e, 0x64, 0x90, 0xcb, 0x17, 0x7b, 0xdd, 0x33, 0xbd, 0xe4, 0xe9, 0x26, 0xef, 0xf2, - 0x25, 0xbf, 0x7d, 0xe8, 0x35, 0x2c, 0xbf, 0x84, 0xbc, 0x29, 0xbd, 0x5c, 0xb1, 0xfb, 0x9b, 0x96, - 0x3f, 0x50, 0xf1, 0xa3, 0x4e, 0x4c, 0x93, 0xbc, 0xbf, 0x15, 0xa5, 0xf7, 0x37, 0xed, 0xcf, 0x15, - 0x98, 0xe5, 0x14, 0xec, 0xa1, 0xe7, 0xa9, 0xea, 0xfc, 0x06, 0x94, 0xc4, 0x2b, 0x11, 0x53, 0xf9, - 0xfc, 0x08, 0x8f, 0x6d, 0xba, 0xa0, 0x91, 0x9f, 0x53, 0x8a, 0xe9, 0xe7, 0x94, 0xff, 0x48, 0xd4, - 0x66, 0xdd, 0xbb, 0x6b, 0x87, 0x51, 0xf3, 0xe7, 0xca, 0xf8, 0x23, 0x7f, 0x11, 0xca, 0xa1, 0xed, - 0x9a, 0x58, 0x5c, 0x45, 0x39, 0xde, 0x3a, 0x81, 0x91, 0xab, 0x28, 0xfd, 0xb8, 0x66, 0xa1, 0x67, - 0xa1, 0xc2, 0xf0, 0x5c, 0xef, 0x11, 0xd5, 0xa6, 0xac, 0x33, 0xc2, 0xfb, 0xde, 0x23, 0xc2, 0xa4, - 0xe7, 0x46, 0xb6, 0x23, 0x6e, 0x37, 0x9c, 0xc9, 0x06, 0x81, 0x11, 0x26, 0xf4, 0x23, 0x63, 0xc2, - 0xf0, 0x08, 0x93, 0x49, 0xc6, 0x84, 0x02, 0x08, 0x93, 0xf3, 0xc4, 0x7f, 0xdf, 0xc5, 0x41, 0x88, - 0xdb, 0x5e, 0x60, 0xe1, 0x80, 0x5e, 0x70, 0xca, 0xc4, 0x09, 0xa7, 0xc0, 0x07, 0x04, 0x96, 0xbc, - 0x9a, 0x73, 0x9b, 0xfd, 0x6f, 0xe9, 0xf7, 0x7f, 0x29, 0x50, 0xe1, 0x3b, 0xdf, 0x96, 0xd7, 0x6c, - 0x8f, 0xdf, 0xdf, 0xb1, 0x22, 0x2f, 0xcd, 0xdf, 0x51, 0x9e, 0x78, 0x73, 0x1c, 0x63, 0x8f, 0x4f, - 0xdf, 0xbe, 0x8b, 0x03, 0xa3, 0xd8, 0x9f, 0x87, 0xe9, 0x25, 0x33, 0xa2, 0xa9, 0x26, 0x54, 0x5a, - 0xb3, 0x35, 0xbe, 0x0d, 0xce, 0x00, 0x38, 0x9e, 0x69, 0x38, 0x6d, 0xcf, 0x75, 0xf6, 0xf8, 0x8d, - 0xa3, 0x42, 0x21, 0x0f, 0x5c, 0x67, 0x2f, 0x39, 0x71, 0xee, 0xc1, 0xcc, 0x0a, 0x36, 0x52, 0xd2, - 0x8e, 0x72, 0x94, 0x7e, 0x6b, 0x92, 0x2f, 0x56, 0xd6, 0x2d, 0x72, 0x31, 0xeb, 0x85, 0x4f, 0xc2, - 0xf1, 0xfb, 0xc5, 0xc4, 0x8b, 0x9c, 0x90, 0x92, 0x25, 0x5e, 0xc8, 0x1f, 0x14, 0x59, 0xe4, 0x02, - 0xcd, 0x9c, 0xa0, 0x84, 0xd9, 0xd9, 0x08, 0xcd, 0x1f, 0x2b, 0x30, 0xdd, 0xc2, 0x38, 0x58, 0xf6, - 0x5c, 0x17, 0x9b, 0x11, 0xb6, 0xe4, 0xb0, 0x85, 0x92, 0x1b, 0xb6, 0x18, 0x23, 0x88, 0xd2, 0x02, - 0x88, 0x02, 0xc3, 0x0d, 0x7d, 0x2f, 0x88, 0x58, 0x76, 0x4a, 0x7d, 0xf1, 0xfa, 0xa8, 0xea, 0x0b, - 0x42, 0x5d, 0xe2, 0x81, 0x4e, 0xc0, 0x54, 0xd7, 0xb0, 0xac, 0x80, 0x25, 0xa9, 0x54, 0x74, 0xde, - 0x6a, 0xbe, 0x06, 0x2a, 0x51, 0x53, 0xc7, 0x26, 0xeb, 0x8c, 0xed, 0x76, 0x46, 0xea, 0x8d, 0x20, - 0x24, 0x5e, 0xd4, 0x58, 0x66, 0xd0, 0x36, 0x61, 0x82, 0x26, 0xa4, 0xcc, 0x40, 0x95, 0xfc, 0x9b, - 0xdc, 0xbb, 0x1b, 0x30, 0x47, 0x00, 0xfd, 0x5c, 0x55, 0x05, 0x1d, 0x87, 0x59, 0xf1, 0x25, 0xb6, - 0xb9, 0x5a, 0x90, 0x09, 0x64, 0xfd, 0xd5, 0xa2, 0xb6, 0x0a, 0x95, 0xd8, 0x0c, 0xa8, 0x0e, 0xf0, - 0xd0, 0x8f, 0x12, 0x39, 0x00, 0x53, 0x0f, 0xfd, 0xe8, 0xee, 0xd2, 0x7d, 0x55, 0xe1, 0xbf, 0xdf, - 0x59, 0xba, 0xaf, 0x16, 0x90, 0x0a, 0xb5, 0x87, 0x7e, 0xd4, 0x0a, 0xbc, 0xc7, 0x76, 0xd7, 0x8e, - 0xf6, 0xd4, 0xa2, 0xf6, 0x37, 0x0a, 0x99, 0xe2, 0x9b, 0xbd, 0x0e, 0xd9, 0x3f, 0xa9, 0xa5, 0x43, - 0xd9, 0x8b, 0xfe, 0x13, 0x65, 0x4c, 0x37, 0x1a, 0xdd, 0x4d, 0x25, 0x59, 0x15, 0x46, 0x49, 0xb2, - 0x62, 0xdb, 0x4f, 0x66, 0xce, 0x55, 0x7a, 0xb3, 0x2a, 0x0e, 0x09, 0x13, 0xff, 0x76, 0x11, 0x4e, - 0xd0, 0xce, 0xac, 0xb9, 0xa1, 0x8f, 0x4d, 0xd6, 0x9f, 0xf5, 0xc8, 0x0b, 0x70, 0xf3, 0x1b, 0x4f, - 0x70, 0x32, 0x6c, 0x40, 0xd9, 0xf1, 0x3a, 0x72, 0x47, 0x5e, 0xca, 0xec, 0xc8, 0x21, 0x91, 0x77, - 0xbd, 0x0e, 0xed, 0x17, 0x65, 0xcb, 0x1b, 0x7a, 0xc9, 0x61, 0x3f, 0x9a, 0xbf, 0x50, 0x86, 0xfb, - 0x50, 0xe8, 0x1a, 0x54, 0x79, 0x5a, 0x87, 0x99, 0xe4, 0x75, 0xd4, 0x0f, 0xf6, 0xe7, 0x81, 0xe5, - 0x75, 0xd0, 0x7c, 0x2b, 0x9e, 0xf9, 0x41, 0x13, 0xad, 0xee, 0x4b, 0x69, 0x5f, 0x52, 0x12, 0x55, - 0x71, 0xa4, 0x24, 0xaa, 0x38, 0xff, 0x2b, 0x06, 0xa5, 0x97, 0xf2, 0xc4, 0xb0, 0x64, 0x0f, 0xe1, - 0x33, 0x4e, 0xa5, 0x93, 0x02, 0x7c, 0x00, 0x6a, 0x9c, 0x27, 0xde, 0x3a, 0xe5, 0x5b, 0x1c, 0x5f, - 0x77, 0x61, 0x43, 0x21, 0xcb, 0x9b, 0x11, 0xb0, 0x85, 0x17, 0xea, 0x25, 0xb6, 0xf2, 0x42, 0xed, - 0x8f, 0x0b, 0x30, 0xb7, 0xd4, 0x8b, 0xb6, 0x57, 0x1f, 0x9b, 0xdb, 0x86, 0xdb, 0xc1, 0x3a, 0x0e, - 0x7d, 0xcf, 0x0d, 0x31, 0x7a, 0x0e, 0x6a, 0x86, 0x69, 0xe2, 0x30, 0xe4, 0xf1, 0x3a, 0x96, 0x98, - 0x54, 0x65, 0x30, 0x16, 0x81, 0x9b, 0x83, 0xc9, 0xd0, 0xf4, 0xfc, 0x38, 0x41, 0x89, 0x36, 0xe8, - 0x06, 0x19, 0x04, 0x9e, 0x88, 0x73, 0xb3, 0x06, 0x7a, 0x01, 0x66, 0xe9, 0x8f, 0xb6, 0x85, 0x43, - 0x33, 0xb0, 0x7d, 0x72, 0x03, 0x61, 0xf1, 0x5c, 0x5d, 0xa5, 0x1f, 0x56, 0x12, 0x38, 0x5a, 0x87, - 0x32, 0x7f, 0x3e, 0x60, 0xc1, 0xdc, 0xea, 0xe2, 0x6b, 0x99, 0x03, 0x92, 0xa5, 0xb8, 0x08, 0x50, - 0x86, 0x3c, 0xe3, 0x4a, 0x30, 0x6a, 0xde, 0x80, 0xe9, 0xd4, 0xa7, 0xb1, 0x32, 0xae, 0x7e, 0xa4, - 0x40, 0x83, 0x8e, 0x0c, 0x11, 0xc9, 0xd9, 0xac, 0xe3, 0x88, 0xda, 0xa1, 0xf9, 0x2d, 0x45, 0x8e, - 0x31, 0x4d, 0x26, 0xf6, 0xaa, 0x2e, 0x5e, 0x19, 0x59, 0x6f, 0x9d, 0xd1, 0x3d, 0x9d, 0x97, 0x87, - 0xe4, 0x08, 0xfd, 0x7f, 0xa0, 0xf6, 0x47, 0x44, 0xd0, 0x09, 0x28, 0xc4, 0xd3, 0x88, 0xa6, 0x46, - 0xb5, 0xee, 0xe8, 0x05, 0xff, 0x09, 0x1f, 0xa7, 0x51, 0x53, 0xba, 0x5e, 0x30, 0x67, 0x3b, 0x6e, - 0x6b, 0x0e, 0x9c, 0x96, 0x1f, 0x7c, 0xd6, 0x7b, 0x3e, 0x7b, 0xa0, 0xe0, 0x40, 0x32, 0xc9, 0xe2, - 0xf7, 0x25, 0x71, 0x2a, 0x57, 0xf4, 0xaa, 0x78, 0x3b, 0x62, 0xeb, 0x4a, 0x15, 0x28, 0xd8, 0xb5, - 0x7c, 0xcf, 0xe6, 0x47, 0x6f, 0x45, 0x9f, 0xe1, 0xf0, 0x55, 0x0e, 0xd6, 0xfe, 0x45, 0x81, 0x9a, - 0x2c, 0x8e, 0x8c, 0xa7, 0x3c, 0x79, 0x9f, 0xa6, 0x85, 0xd1, 0xe7, 0x00, 0x85, 0xa2, 0x3b, 0xed, - 0x78, 0xb6, 0x16, 0x07, 0x64, 0x06, 0x0e, 0xb2, 0x84, 0x3e, 0x1b, 0xf6, 0x41, 0x42, 0x74, 0x16, - 0x00, 0x3f, 0xf6, 0x6d, 0x16, 0x5f, 0xa7, 0x6b, 0xa5, 0xa8, 0x4b, 0x10, 0xed, 0x37, 0x14, 0x38, - 0x29, 0x4d, 0xc7, 0x65, 0xaf, 0xeb, 0x3b, 0x38, 0xc2, 0xb7, 0x1c, 0xef, 0x51, 0xf3, 0x8d, 0x64, - 0x46, 0x2e, 0x42, 0xcd, 0x34, 0x1c, 0x67, 0xd3, 0x30, 0x77, 0x68, 0x47, 0xd9, 0x31, 0x3c, 0x73, - 0xb0, 0x3f, 0x5f, 0x5d, 0xe6, 0x70, 0xd2, 0xc5, 0xaa, 0x40, 0x22, 0xd3, 0x47, 0xde, 0x46, 0xe2, - 0xf7, 0x36, 0x65, 0xc0, 0x7b, 0xdb, 0x8f, 0x14, 0x38, 0x26, 0xe9, 0xb2, 0xe6, 0xda, 0x11, 0xd5, - 0xe3, 0x5e, 0x6a, 0x0b, 0x23, 0x56, 0x94, 0x74, 0x60, 0x79, 0x68, 0xbd, 0x68, 0x9b, 0xc8, 0x2f, - 0x91, 0x8f, 0xc4, 0xb0, 0x4d, 0x69, 0xf1, 0x17, 0xa9, 0x63, 0x92, 0xac, 0xe1, 0x96, 0x74, 0x12, - 0x24, 0x7c, 0xe8, 0x49, 0x40, 0x78, 0x10, 0x18, 0x39, 0x02, 0x43, 0x6c, 0xf6, 0x02, 0x1c, 0x0f, - 0x6b, 0x99, 0x1d, 0x81, 0xeb, 0x14, 0x4a, 0xf0, 0x2a, 0x0c, 0x61, 0x23, 0x70, 0xb4, 0x5f, 0x28, - 0x70, 0x61, 0x39, 0xc0, 0x16, 0x19, 0x5c, 0xc3, 0xf9, 0x34, 0x0e, 0xec, 0x2d, 0xe9, 0x51, 0x4e, - 0xee, 0x8a, 0x14, 0x48, 0xbe, 0x06, 0x62, 0x8a, 0x4a, 0xbd, 0xa1, 0x87, 0x0d, 0x27, 0x22, 0x42, - 0x80, 0xa3, 0x90, 0x3e, 0xa5, 0xb3, 0x93, 0x0b, 0xfd, 0xd9, 0xc9, 0x08, 0x26, 0x1c, 0xdb, 0xdd, - 0xe1, 0x3b, 0x26, 0xfd, 0xfd, 0x21, 0x74, 0xf5, 0xbb, 0x0a, 0x5c, 0x19, 0xd8, 0xd5, 0xd1, 0x66, - 0x90, 0x9d, 0x3d, 0x83, 0xd6, 0xe4, 0x19, 0x64, 0x37, 0x2f, 0x09, 0xf5, 0xcf, 0x02, 0xd8, 0x54, - 0xe4, 0x96, 0xcd, 0x33, 0x72, 0x2b, 0xba, 0x04, 0xd1, 0xbe, 0x52, 0x80, 0x93, 0x4c, 0x17, 0x6c, - 0x25, 0xda, 0x85, 0xf4, 0x7a, 0xfa, 0x55, 0x69, 0x63, 0x7d, 0x01, 0x66, 0xb7, 0x6c, 0x27, 0xa2, - 0x47, 0x5a, 0x1f, 0x3b, 0x95, 0x7d, 0x58, 0x8b, 0xe1, 0xe4, 0x66, 0x28, 0x90, 0xc3, 0xb0, 0xc7, - 0x73, 0xe1, 0x2a, 0x7a, 0x8d, 0x23, 0x52, 0x18, 0x0d, 0x41, 0x3f, 0x36, 0x9d, 0x9e, 0x85, 0xdb, - 0x74, 0x55, 0xf1, 0x1c, 0x8c, 0xb2, 0x5e, 0xe7, 0xe0, 0x55, 0x06, 0x6d, 0x1a, 0xa2, 0x2f, 0x9f, - 0x01, 0x30, 0x63, 0x15, 0xf9, 0x0e, 0xff, 0xd1, 0xec, 0x1d, 0x9e, 0xbd, 0x61, 0x1e, 0xee, 0x98, - 0x8e, 0x3b, 0x76, 0x18, 0xe1, 0x00, 0x5b, 0xba, 0xc4, 0x4b, 0xfb, 0xa6, 0x12, 0xbf, 0xfd, 0xb2, - 0xc3, 0x95, 0xf6, 0x5f, 0x72, 0x2c, 0x9d, 0x31, 0x57, 0x24, 0xba, 0x01, 0x25, 0x3e, 0x01, 0x47, - 0x7f, 0xb4, 0x17, 0x14, 0xda, 0xff, 0xef, 0xd3, 0x66, 0xd9, 0xb3, 0x70, 0x6a, 0x61, 0x2a, 0xe9, - 0x85, 0x89, 0x2e, 0x40, 0xdd, 0xf4, 0x2c, 0xdc, 0x36, 0xb7, 0x0d, 0xc7, 0xc1, 0x6e, 0x47, 0x1c, - 0xa1, 0xd3, 0x34, 0xfc, 0x2f, 0x80, 0x29, 0xe5, 0x8b, 0x03, 0xb6, 0x93, 0x0f, 0x14, 0x98, 0xd7, - 0xd3, 0xef, 0xe3, 0xf4, 0x2d, 0x90, 0xd9, 0x8e, 0x79, 0x47, 0xef, 0xa6, 0xb6, 0x96, 0x91, 0x6c, - 0x32, 0x62, 0xea, 0x53, 0x72, 0x7a, 0x7e, 0x49, 0x81, 0x73, 0x59, 0x7a, 0x30, 0x08, 0xbf, 0xe1, - 0x1e, 0x29, 0xe0, 0x3d, 0x2f, 0xc6, 0xf5, 0x04, 0x14, 0x3c, 0x76, 0x28, 0x97, 0xd9, 0xa1, 0xfc, - 0xe0, 0x8e, 0x5e, 0xf0, 0x76, 0xb4, 0x1f, 0x01, 0xc0, 0xfa, 0x5e, 0x18, 0xe1, 0x2e, 0x0d, 0x60, - 0x48, 0x53, 0xe2, 0xdf, 0x62, 0xbf, 0x78, 0x09, 0x4a, 0x7e, 0xe0, 0x11, 0xc7, 0x8c, 0x0b, 0xbe, - 0x94, 0x3d, 0xd6, 0x31, 0x9b, 0x85, 0x16, 0x43, 0xd7, 0x05, 0x1d, 0x7a, 0x13, 0x8a, 0xfe, 0xa2, - 0x3f, 0x30, 0xd8, 0x26, 0x93, 0x2f, 0xb6, 0xd8, 0x56, 0xd4, 0x5a, 0x6c, 0xe9, 0x84, 0x10, 0xdd, - 0x87, 0x92, 0x17, 0x6c, 0xda, 0x91, 0xb5, 0xc9, 0xb3, 0xc5, 0x86, 0xaa, 0xf0, 0x80, 0xa0, 0xaf, - 0xdc, 0x64, 0x43, 0xc0, 0x1b, 0xba, 0x60, 0x42, 0x8e, 0xee, 0x47, 0x46, 0xe0, 0x8a, 0xbb, 0x29, - 0x6b, 0x34, 0xff, 0x55, 0x01, 0x81, 0x8a, 0xac, 0x24, 0xab, 0x20, 0xf6, 0x3f, 0x58, 0xef, 0x5f, - 0x1f, 0x51, 0xf4, 0x82, 0x3c, 0xb4, 0xf4, 0xa6, 0xac, 0xcf, 0x70, 0x96, 0xf1, 0x7b, 0xde, 0x17, - 0x61, 0xf6, 0x10, 0x16, 0x59, 0x09, 0x7e, 0xe0, 0x75, 0x02, 0x61, 0xf0, 0xa2, 0x1e, 0xb7, 0x69, - 0xe8, 0xd1, 0x78, 0x6c, 0x77, 0x7b, 0x5d, 0x6a, 0xcc, 0xa2, 0x2e, 0x9a, 0x84, 0x6a, 0xb3, 0xb7, - 0xb5, 0x85, 0xc5, 0x46, 0x53, 0xd4, 0xe3, 0x36, 0xb9, 0x8b, 0xb3, 0x4c, 0x3e, 0x7e, 0xce, 0xf3, - 0x56, 0x73, 0x01, 0x88, 0x89, 0xc9, 0x56, 0x15, 0x5f, 0x7e, 0xdb, 0xc4, 0x75, 0x17, 0x72, 0xeb, - 0x31, 0x98, 0x78, 0xf6, 0x61, 0xf3, 0x1b, 0x53, 0x50, 0xe2, 0x63, 0x4b, 0x34, 0xd9, 0xc5, 0x41, - 0x48, 0x9c, 0x07, 0xb6, 0x4f, 0x8a, 0x26, 0x3a, 0x09, 0xa5, 0x5d, 0x33, 0x6c, 0x07, 0x78, 0x8b, - 0x2f, 0xd3, 0xa9, 0x5d, 0x33, 0xd4, 0xf1, 0x16, 0xb9, 0xc4, 0xf4, 0xfc, 0xc8, 0xee, 0xe2, 0x76, - 0x37, 0x64, 0x3a, 0xb2, 0x4b, 0xcc, 0x06, 0x05, 0xde, 0x5b, 0xd7, 0xcb, 0xec, 0xf3, 0xbd, 0x10, - 0x7d, 0x0c, 0xd4, 0x5e, 0x88, 0x83, 0xb6, 0xe9, 0xf7, 0xda, 0x82, 0x02, 0x28, 0xc5, 0xec, 0xc1, - 0xfe, 0xfc, 0xf4, 0x46, 0x88, 0x83, 0xe5, 0xd6, 0xc6, 0x43, 0x46, 0x36, 0x4d, 0x50, 0x97, 0xfd, - 0xde, 0x43, 0x46, 0xfb, 0x49, 0x40, 0x21, 0x1d, 0x8d, 0x14, 0x75, 0x95, 0x52, 0xd3, 0xdc, 0x60, - 0x36, 0x56, 0x09, 0xfd, 0x0c, 0x43, 0x4f, 0x38, 0x9c, 0x01, 0x08, 0x23, 0x83, 0xfa, 0x5e, 0x46, - 0xd4, 0xa8, 0x51, 0x5b, 0x54, 0x38, 0x64, 0x89, 0x56, 0x03, 0x05, 0x0e, 0xb9, 0xb2, 0xb7, 0xcd, - 0x5e, 0xd0, 0x98, 0xa6, 0x19, 0xe1, 0x15, 0x06, 0x59, 0xee, 0xd1, 0xe3, 0xc1, 0xed, 0x75, 0xdb, - 0x1d, 0x2f, 0xf0, 0x7a, 0x91, 0xed, 0xe2, 0x46, 0x9d, 0x32, 0xa8, 0xb9, 0xbd, 0xee, 0x6d, 0x01, - 0x23, 0x43, 0xe2, 0x7a, 0x5b, 0xb6, 0x83, 0x1b, 0x33, 0x6c, 0x48, 0x58, 0x0b, 0xbd, 0x04, 0xc7, - 0x22, 0xcf, 0x6b, 0x77, 0x0d, 0x77, 0xaf, 0xed, 0xf9, 0xd8, 0x6d, 0x13, 0x68, 0xd8, 0x50, 0xe9, - 0xd1, 0xa1, 0x46, 0x9e, 0x77, 0xcf, 0x70, 0xf7, 0x1e, 0xf8, 0xd8, 0xbd, 0x45, 0xe0, 0xe8, 0x3c, - 0x94, 0x88, 0x2c, 0xd3, 0xef, 0x35, 0x66, 0x69, 0x07, 0x69, 0x00, 0xe4, 0x7e, 0x8f, 0xf4, 0x4e, - 0x9f, 0x72, 0x7b, 0xa4, 0x53, 0x44, 0xdf, 0x8e, 0xd7, 0x16, 0xa3, 0x85, 0xe8, 0x98, 0x54, 0x3a, - 0xde, 0xa7, 0xf9, 0x78, 0x5d, 0x01, 0xd5, 0xf3, 0x71, 0x40, 0xb3, 0x98, 0xda, 0xcc, 0x14, 0x8d, - 0x63, 0xcc, 0x07, 0x8e, 0xe1, 0xcc, 0x64, 0xe8, 0x59, 0xa8, 0x6c, 0x7b, 0x61, 0xd4, 0x76, 0x8d, - 0x2e, 0x6e, 0xcc, 0x51, 0x9c, 0x32, 0x01, 0xdc, 0x37, 0xba, 0x98, 0xf8, 0x19, 0x46, 0x60, 0x6e, - 0x37, 0x8e, 0x33, 0x3f, 0x83, 0xfc, 0x96, 0x4c, 0xd5, 0x35, 0x1e, 0x37, 0x4e, 0xc8, 0xa6, 0xba, - 0x67, 0x3c, 0x26, 0xde, 0x87, 0x6f, 0x5b, 0x8d, 0x93, 0x54, 0x75, 0xb6, 0xe4, 0xc9, 0x95, 0xdb, - 0xb7, 0x2d, 0x74, 0x1a, 0x26, 0x7c, 0xf2, 0xad, 0x41, 0xbf, 0x95, 0x0f, 0xf6, 0xe7, 0x27, 0x5a, - 0xe4, 0x23, 0x85, 0xb2, 0x35, 0x62, 0x7b, 0x81, 0x1d, 0xed, 0x35, 0x4e, 0x89, 0x35, 0xc2, 0xda, - 0xd4, 0xa5, 0xb1, 0xad, 0x46, 0x33, 0x61, 0xba, 0x41, 0x98, 0xf6, 0x6c, 0x0b, 0xcd, 0x43, 0xf5, - 0x91, 0x17, 0xec, 0x90, 0x8e, 0x5a, 0x76, 0xd0, 0x78, 0x96, 0xf9, 0x0b, 0x1c, 0xb4, 0x62, 0xd3, - 0x53, 0x9b, 0xcf, 0x1d, 0x32, 0xa7, 0x68, 0x37, 0x4f, 0x53, 0xa4, 0x3a, 0x03, 0x6f, 0x70, 0xa8, - 0xf6, 0xeb, 0x49, 0x28, 0x93, 0x45, 0xd1, 0x7f, 0x92, 0x2e, 0x89, 0x5d, 0xf3, 0xa3, 0x30, 0x29, - 0x96, 0x52, 0x31, 0xf7, 0x51, 0x44, 0x70, 0xa0, 0x3f, 0x74, 0x46, 0xd0, 0xfc, 0x61, 0x01, 0x26, - 0x48, 0x5b, 0x2a, 0x32, 0xa9, 0xa4, 0x8a, 0x4c, 0x6e, 0xc0, 0x14, 0x99, 0x46, 0x98, 0x05, 0x22, - 0xf2, 0x36, 0xd4, 0x98, 0xb7, 0x4e, 0x70, 0x75, 0x4e, 0x42, 0x26, 0x1e, 0xbd, 0x11, 0x0b, 0xf7, - 0x97, 0xb7, 0xd0, 0x12, 0x94, 0xb7, 0xb0, 0x11, 0xf5, 0x02, 0xcc, 0x76, 0xc5, 0x7a, 0x5e, 0x7d, - 0x8e, 0x60, 0x7b, 0x8b, 0x61, 0xeb, 0x31, 0x19, 0xb1, 0x6e, 0xd7, 0x76, 0xdb, 0x8e, 0x11, 0x61, - 0xd7, 0x64, 0x05, 0x66, 0x45, 0x1d, 0xba, 0xb6, 0x7b, 0x97, 0x41, 0xc8, 0xf4, 0xb1, 0xc3, 0x36, - 0x8d, 0xe0, 0x62, 0x1e, 0x4e, 0x2f, 0xdb, 0x21, 0x8d, 0x1f, 0x63, 0xf4, 0x71, 0xa8, 0x58, 0x76, - 0x80, 0x4d, 0x7a, 0x1f, 0x29, 0x0d, 0x08, 0x94, 0xac, 0x08, 0x2c, 0x3d, 0x21, 0x68, 0xfe, 0x8c, - 0x1c, 0x57, 0xa4, 0x87, 0x69, 0x21, 0x4a, 0x9f, 0x90, 0x06, 0x94, 0x0c, 0xcb, 0xa2, 0x5b, 0x2b, - 0xdb, 0x9b, 0x44, 0x33, 0x2d, 0xbe, 0x38, 0xa6, 0x78, 0xc2, 0x57, 0x74, 0x9b, 0x6d, 0xb1, 0xa2, - 0x89, 0xde, 0x84, 0x52, 0x18, 0x05, 0xd8, 0xe8, 0x8a, 0x60, 0xc3, 0xf3, 0x83, 0xcd, 0xba, 0x4e, - 0x91, 0x75, 0x41, 0xd4, 0x3c, 0x07, 0x53, 0x0c, 0x94, 0x37, 0x1d, 0xb4, 0xf7, 0xa1, 0xc4, 0xc7, - 0x02, 0x21, 0xa8, 0xf3, 0xb0, 0x23, 0x87, 0xa8, 0xcf, 0xa0, 0x19, 0xa8, 0xbe, 0x83, 0xc3, 0x6d, - 0x01, 0x50, 0x50, 0x1d, 0xe0, 0xe6, 0xdd, 0x55, 0xd1, 0xa6, 0x61, 0xc8, 0xbb, 0x9e, 0x69, 0x38, - 0x02, 0x52, 0xa4, 0x01, 0x4c, 0x2f, 0x10, 0xed, 0x09, 0xc2, 0xe2, 0xed, 0x9e, 0x6d, 0x0a, 0xc0, - 0xa4, 0xf6, 0x7d, 0x05, 0xca, 0x2d, 0x71, 0x26, 0xcd, 0xc1, 0x64, 0x18, 0x19, 0x91, 0xb8, 0x5f, - 0xb3, 0x06, 0x81, 0x5a, 0x9e, 0xed, 0x76, 0x44, 0xb4, 0x83, 0x36, 0x52, 0x67, 0x1b, 0x31, 0x72, - 0x41, 0x3a, 0xdb, 0x4e, 0x43, 0xc5, 0xe4, 0x77, 0x04, 0x76, 0x50, 0x4d, 0xe8, 0x09, 0x80, 0xdd, - 0xb6, 0x23, 0xc3, 0xa1, 0xd3, 0x6a, 0x42, 0x67, 0x0d, 0x2a, 0x05, 0x3b, 0x06, 0xab, 0xf3, 0x9c, - 0xd0, 0x59, 0x43, 0x73, 0x61, 0x96, 0xbd, 0x6a, 0xbc, 0x63, 0x47, 0xdb, 0x2c, 0x44, 0x16, 0x8e, - 0x53, 0x68, 0xb4, 0x00, 0x55, 0x16, 0x4e, 0x0b, 0xdb, 0xfe, 0x4e, 0xaa, 0x8c, 0x4b, 0xc4, 0xdb, - 0x42, 0x1d, 0x38, 0x46, 0x6b, 0x27, 0xd4, 0xf6, 0x15, 0x98, 0x7d, 0xd0, 0x8b, 0x1e, 0x6c, 0xd1, - 0xe8, 0xa6, 0x28, 0x8c, 0x1b, 0x10, 0x4f, 0x1c, 0x23, 0x32, 0x2f, 0xd5, 0x1e, 0x11, 0x83, 0x4d, - 0x25, 0x05, 0x87, 0xbc, 0x8a, 0x70, 0x22, 0xa9, 0x22, 0x9c, 0x83, 0xc9, 0x2d, 0xc7, 0xe8, 0x84, - 0xd4, 0x46, 0x25, 0x9d, 0x35, 0x68, 0x70, 0x4c, 0x14, 0xed, 0xb5, 0xd3, 0xa1, 0x41, 0x35, 0xfe, - 0xd0, 0xe2, 0xb5, 0x99, 0x71, 0x15, 0x5c, 0x49, 0xaa, 0x82, 0xd3, 0x7e, 0xa2, 0xc0, 0xb1, 0x8c, - 0xb4, 0x39, 0xb4, 0x02, 0xc0, 0x5c, 0x63, 0xe9, 0xd5, 0x43, 0xda, 0x36, 0x7a, 0xe1, 0x76, 0x5f, - 0xc2, 0x1d, 0x75, 0x9a, 0x59, 0x58, 0x39, 0x12, 0x3f, 0x89, 0x35, 0x36, 0x7b, 0xae, 0xe5, 0xe0, - 0x24, 0xef, 0x96, 0x5a, 0xe3, 0x26, 0x05, 0xae, 0xad, 0x10, 0x4f, 0x86, 0xfe, 0xb2, 0x92, 0x98, - 0x0b, 0x7f, 0x2d, 0x66, 0x31, 0x97, 0xeb, 0x30, 0x17, 0x60, 0xd3, 0xf6, 0x6d, 0xec, 0x46, 0x6d, - 0xe9, 0x2a, 0xcc, 0x4c, 0x83, 0xe2, 0x6f, 0x2d, 0x71, 0x27, 0xd6, 0xee, 0x03, 0x24, 0xd9, 0x79, - 0xac, 0x52, 0x99, 0xfc, 0x92, 0xcb, 0x7b, 0x19, 0x84, 0x5c, 0xa0, 0xa5, 0x38, 0x12, 0xd9, 0x2d, - 0xf8, 0x8c, 0x16, 0x97, 0xf4, 0x25, 0xcb, 0x0a, 0xb4, 0xaf, 0x29, 0x70, 0x8a, 0x30, 0x64, 0x03, - 0xc8, 0xf3, 0x8f, 0xc5, 0x5d, 0x0c, 0xbd, 0x99, 0x0e, 0xdb, 0x8d, 0x9e, 0x96, 0xc8, 0xfb, 0x37, - 0xfa, 0x74, 0x21, 0x77, 0x8a, 0x66, 0xa2, 0x08, 0xcf, 0x47, 0x4c, 0x34, 0x79, 0x0d, 0xa6, 0x78, - 0x2a, 0xa3, 0x32, 0x5a, 0x2a, 0x23, 0x47, 0x1f, 0x47, 0x85, 0xbf, 0x2d, 0xc4, 0x85, 0x2d, 0x83, - 0x6e, 0xa8, 0xe3, 0x24, 0x4c, 0xdf, 0x80, 0x66, 0x68, 0x77, 0x5c, 0x6c, 0xf1, 0xeb, 0x79, 0xb4, - 0xd7, 0x3e, 0x14, 0xf1, 0x38, 0xc9, 0x30, 0xd6, 0x38, 0x42, 0x3c, 0xd6, 0xe8, 0x1a, 0x1c, 0xdb, - 0xe5, 0x7a, 0xb4, 0xa5, 0x0b, 0x36, 0x0b, 0x87, 0xa0, 0xdd, 0x43, 0x2a, 0x92, 0x05, 0x13, 0x50, - 0x35, 0x59, 0x28, 0xac, 0x6d, 0x91, 0xcd, 0x8d, 0x6d, 0xeb, 0xaa, 0xfc, 0x61, 0x85, 0xec, 0x73, - 0xf4, 0x9e, 0x2f, 0xa2, 0x66, 0x0c, 0x95, 0x1d, 0x7c, 0xf5, 0x04, 0x4c, 0x11, 0xd3, 0xa1, 0x8a, - 0xa9, 0xfe, 0x50, 0x05, 0x39, 0x98, 0x79, 0x38, 0xa1, 0xc4, 0xbc, 0x66, 0xd6, 0xd2, 0xbe, 0xad, - 0xc0, 0x71, 0x32, 0x20, 0x6c, 0x9f, 0xa2, 0x53, 0x6b, 0xc3, 0x27, 0x72, 0x9e, 0x7c, 0x30, 0xe3, - 0x55, 0x54, 0x90, 0x57, 0xd1, 0x18, 0xaf, 0xbe, 0xff, 0x99, 0xda, 0xf0, 0xf8, 0x74, 0x6d, 0x9e, - 0x4f, 0xae, 0xaa, 0xd2, 0x23, 0x84, 0x92, 0x7a, 0x84, 0x68, 0xfe, 0x65, 0x7c, 0xaf, 0xfc, 0x64, - 0x92, 0x46, 0xc1, 0xf4, 0xbf, 0x98, 0xa9, 0xff, 0xa1, 0x8d, 0x35, 0x29, 0xd9, 0x25, 0x27, 0x86, - 0x83, 0x89, 0x5b, 0xfe, 0x58, 0xbc, 0x98, 0x26, 0x00, 0x74, 0x19, 0x54, 0x7e, 0x1f, 0x4f, 0xa6, - 0x0a, 0xdb, 0x36, 0xea, 0xec, 0x2a, 0x1e, 0xcf, 0x90, 0x2b, 0xa0, 0x1a, 0x4e, 0x80, 0x0d, 0x6b, - 0xaf, 0x1d, 0xf0, 0x22, 0x1d, 0x3a, 0xde, 0x65, 0x7d, 0x86, 0xc3, 0x45, 0xed, 0x0e, 0xcd, 0xeb, - 0x49, 0x34, 0x5a, 0xc7, 0x86, 0xd3, 0xbc, 0x9f, 0x74, 0x7b, 0xc0, 0x96, 0x9f, 0xa5, 0x4d, 0x21, - 0x4b, 0x9b, 0xe6, 0x05, 0x61, 0xa0, 0xd3, 0x50, 0x89, 0xf7, 0x67, 0xb1, 0x2b, 0xc5, 0x00, 0xed, - 0x0d, 0x98, 0xbd, 0x65, 0x07, 0x61, 0x74, 0xd7, 0x08, 0xa3, 0x65, 0x76, 0x24, 0xd0, 0xb3, 0x78, - 0x8b, 0x00, 0x79, 0x71, 0x3a, 0x6b, 0xd0, 0x08, 0xa0, 0x11, 0x46, 0xbc, 0x78, 0x95, 0xfe, 0xd6, - 0xfe, 0x51, 0x81, 0x63, 0xfc, 0xa6, 0x2a, 0xe5, 0xb9, 0xb0, 0xbb, 0x0f, 0x36, 0x1c, 0x6c, 0xb5, - 0x37, 0xbd, 0xc7, 0xc2, 0xa8, 0x0c, 0x72, 0xd3, 0x7b, 0x4c, 0xf6, 0xc2, 0xc0, 0x78, 0xd4, 0x0e, - 0x3c, 0x96, 0xe6, 0xc5, 0x0d, 0x5a, 0x0d, 0x8c, 0x47, 0x3a, 0x07, 0x35, 0x3f, 0x50, 0xa0, 0x48, - 0x50, 0x25, 0x5f, 0x4b, 0x49, 0xfb, 0x5a, 0x73, 0x30, 0x49, 0xff, 0x88, 0x81, 0x98, 0x7f, 0xb4, - 0x31, 0xc6, 0xfc, 0xeb, 0xcf, 0xda, 0xaf, 0x65, 0xbe, 0xfb, 0xfe, 0x5a, 0x81, 0xe3, 0x3a, 0xde, - 0x0a, 0x70, 0xb8, 0x9d, 0xce, 0x68, 0x6d, 0xbe, 0x3a, 0xc4, 0xc1, 0x9e, 0x83, 0x49, 0xf6, 0x74, - 0x5d, 0x60, 0xe1, 0x01, 0xf6, 0x72, 0xfd, 0xf6, 0x13, 0x66, 0x5f, 0x12, 0x43, 0x90, 0x5b, 0xa8, - 0xd7, 0x8b, 0xc4, 0xa5, 0x9d, 0x37, 0x9b, 0xef, 0x8a, 0xa1, 0x6e, 0x41, 0x95, 0x3a, 0xff, 0xed, - 0x2d, 0xaf, 0xe7, 0x5a, 0xfc, 0xce, 0x70, 0x2d, 0x73, 0x3d, 0x64, 0x76, 0x89, 0x5d, 0x20, 0x80, - 0xf2, 0xb8, 0x45, 0x58, 0x5c, 0xb5, 0x21, 0x79, 0xc3, 0x45, 0x27, 0x78, 0x0a, 0x18, 0x7b, 0xff, - 0xb6, 0xf0, 0x96, 0xed, 0x62, 0x4b, 0x7d, 0x06, 0xcd, 0xf1, 0xac, 0x1d, 0x02, 0xe7, 0x5b, 0xb6, - 0xaa, 0xa4, 0xa0, 0x5c, 0x0c, 0x7b, 0xfc, 0x8e, 0xa1, 0x52, 0xde, 0x9f, 0x5a, 0xbc, 0xfa, 0xd5, - 0x0a, 0x54, 0x92, 0xa7, 0xca, 0x13, 0x80, 0xe2, 0x86, 0x2c, 0xeb, 0x3c, 0xcc, 0xc7, 0x70, 0x9e, - 0x2a, 0x94, 0x94, 0x81, 0xd3, 0xda, 0x21, 0x55, 0x41, 0x17, 0xe0, 0xb9, 0x34, 0x52, 0xba, 0xa8, - 0x9a, 0xa1, 0x15, 0xd0, 0x3c, 0x3c, 0x1b, 0xa3, 0x1d, 0xae, 0x5a, 0x55, 0x31, 0x3a, 0x03, 0xa7, - 0x32, 0x11, 0xee, 0xe2, 0xad, 0x48, 0xdd, 0x42, 0x57, 0xe1, 0x62, 0xff, 0xe7, 0xec, 0xda, 0x50, - 0xb5, 0x83, 0xae, 0xc0, 0x85, 0xc1, 0xb8, 0x22, 0x77, 0x7f, 0x1b, 0x5d, 0x87, 0x17, 0x07, 0xa3, - 0xa6, 0x4b, 0x3b, 0x55, 0x1b, 0x2d, 0xc2, 0xc2, 0x60, 0x8a, 0x07, 0xbd, 0xa8, 0x43, 0x3c, 0x67, - 0x51, 0x8b, 0xa9, 0x7e, 0x1e, 0x2d, 0xc0, 0xd5, 0xd1, 0x68, 0xd6, 0xb1, 0x1b, 0xa9, 0x3b, 0xc3, - 0x65, 0xac, 0xb9, 0xa6, 0xd7, 0xb5, 0xdd, 0x8e, 0xd8, 0xe4, 0x54, 0x07, 0xbd, 0x02, 0xd7, 0x46, - 0xa3, 0x89, 0xeb, 0xfe, 0xd4, 0xee, 0xe8, 0x82, 0x44, 0xc1, 0x9e, 0xea, 0x22, 0x0d, 0xce, 0xe6, - 0xd0, 0xf0, 0xd2, 0x39, 0xd5, 0x43, 0xcf, 0xc3, 0xb9, 0x1c, 0x9c, 0xb8, 0xd8, 0x4d, 0xf5, 0x91, - 0x06, 0x67, 0x62, 0xac, 0xbe, 0x1c, 0x67, 0x36, 0x6d, 0x7e, 0xac, 0xa0, 0xeb, 0xf0, 0x42, 0x8c, - 0x33, 0x30, 0x57, 0x97, 0x51, 0xfc, 0xa0, 0x80, 0x5e, 0x95, 0x0c, 0x71, 0x38, 0xdb, 0x55, 0x2a, - 0x1a, 0x5f, 0x72, 0x5d, 0xaf, 0xe7, 0x9a, 0xd8, 0x52, 0xff, 0xb4, 0x80, 0x16, 0xe0, 0x4a, 0xbe, - 0x9c, 0x54, 0xb6, 0x2e, 0xb6, 0xd4, 0x3f, 0x2b, 0xa0, 0x8b, 0xd2, 0xb4, 0xcf, 0xab, 0xac, 0x53, - 0xbf, 0x5d, 0x44, 0x97, 0xe1, 0xfc, 0x20, 0x3c, 0x5e, 0xf2, 0xa6, 0x7e, 0xa7, 0x88, 0xce, 0x4a, - 0x0b, 0xa0, 0xbf, 0x54, 0x4d, 0xfd, 0x6e, 0x11, 0x9d, 0x97, 0xec, 0x9e, 0xe9, 0x5d, 0xa8, 0xbf, - 0x5b, 0x44, 0x97, 0x40, 0x4b, 0x21, 0x65, 0x7a, 0xb7, 0xea, 0xf7, 0xd2, 0x7a, 0xe5, 0x7b, 0x9f, - 0xea, 0xef, 0x15, 0xd1, 0xcb, 0x87, 0x97, 0xc8, 0x20, 0x27, 0x51, 0xfd, 0x65, 0x31, 0x65, 0x9c, - 0x54, 0x72, 0x25, 0xbf, 0xb3, 0xd0, 0x69, 0xfe, 0xcf, 0xa5, 0xab, 0xdf, 0x14, 0xaf, 0xe8, 0x19, - 0xc9, 0x1f, 0x64, 0x63, 0xc9, 0xfb, 0xd6, 0xb7, 0x49, 0xe5, 0xa1, 0xf1, 0x53, 0x52, 0x55, 0xc8, - 0x7c, 0xcc, 0x47, 0x62, 0xaa, 0xa9, 0x85, 0xab, 0x7f, 0xa5, 0xc4, 0x15, 0x01, 0xac, 0xe6, 0xe7, - 0x54, 0x5c, 0x59, 0x41, 0xdb, 0xb2, 0xd8, 0xbe, 0x4f, 0x0f, 0x3d, 0xbe, 0x60, 0x54, 0x85, 0x6c, - 0xbb, 0xf2, 0xa7, 0x78, 0x8d, 0x16, 0xd0, 0x71, 0x98, 0x95, 0xbf, 0xb0, 0x49, 0x52, 0x44, 0x27, - 0xe3, 0x14, 0x7f, 0x4e, 0xc0, 0xe6, 0xc4, 0x44, 0xbf, 0x90, 0x64, 0xe5, 0x4e, 0xf6, 0xd3, 0x88, - 0xa5, 0x37, 0x75, 0xf5, 0x36, 0x54, 0xe2, 0x78, 0x07, 0xaa, 0x03, 0xf0, 0xe8, 0xc2, 0x8a, 0x1d, - 0xa8, 0xcf, 0x90, 0xf6, 0x9a, 0xbb, 0x49, 0x4e, 0x1b, 0xd2, 0x56, 0xd0, 0x0c, 0x54, 0x1f, 0xf4, - 0xa2, 0x18, 0x50, 0x40, 0x15, 0x98, 0xbc, 0x69, 0x93, 0x9f, 0xc5, 0xc5, 0xbf, 0xbf, 0x0a, 0x33, - 0xe2, 0x4f, 0xbb, 0x88, 0xf7, 0xf9, 0x30, 0xa3, 0x22, 0x11, 0x2d, 0x0c, 0x7a, 0x48, 0x4a, 0xf0, - 0x16, 0xe2, 0xb2, 0xc5, 0x91, 0xf1, 0x7d, 0x67, 0xef, 0xba, 0x82, 0xbe, 0xa2, 0xe4, 0x16, 0x2e, - 0xa2, 0x57, 0xc7, 0xaa, 0x49, 0x13, 0x1a, 0x2c, 0x8e, 0x49, 0x45, 0xce, 0x7b, 0xa2, 0x45, 0xce, - 0xd1, 0x90, 0xa3, 0x45, 0x0e, 0xf6, 0x10, 0x2d, 0xf2, 0xa9, 0x88, 0x16, 0x5f, 0xcc, 0xa9, 0xe6, - 0x42, 0xa3, 0x30, 0xe3, 0xb8, 0xb1, 0x02, 0xd7, 0xc7, 0xa2, 0x21, 0xe2, 0xbf, 0x90, 0x5d, 0x1f, - 0x86, 0x5e, 0x1e, 0x81, 0x13, 0x43, 0x8d, 0x85, 0x5f, 0x1b, 0x87, 0x84, 0xc8, 0xfe, 0x8e, 0x32, - 0xb8, 0x74, 0x0c, 0xbd, 0x3e, 0x92, 0x3d, 0x65, 0x92, 0x58, 0x99, 0xd7, 0x9e, 0x84, 0x94, 0x28, - 0x15, 0x65, 0xd5, 0x98, 0xa1, 0x51, 0xfa, 0x46, 0x10, 0x63, 0xf9, 0x2f, 0x8d, 0x4e, 0x90, 0x39, - 0x0c, 0xec, 0x78, 0x1e, 0x69, 0x18, 0x18, 0xea, 0x58, 0xc3, 0x10, 0x93, 0xe4, 0xcd, 0x40, 0xb2, - 0x2b, 0x8d, 0x3a, 0x03, 0x09, 0xee, 0xb8, 0x33, 0x90, 0xd3, 0x10, 0xf1, 0x9b, 0xe9, 0x8a, 0x34, - 0x74, 0x25, 0xbf, 0xe8, 0x8b, 0xa3, 0xc4, 0xc2, 0x2e, 0x8d, 0x82, 0x4a, 0x64, 0xe0, 0xbe, 0x3a, - 0x35, 0x74, 0x35, 0x27, 0x6d, 0x51, 0xc2, 0x89, 0xa5, 0x5c, 0x1e, 0x09, 0x97, 0x77, 0x45, 0x76, - 0x9c, 0x72, 0xba, 0x22, 0xa3, 0x0c, 0xe9, 0x4a, 0x1f, 0x2a, 0x91, 0xb1, 0xdd, 0x5f, 0x91, 0x86, - 0x5e, 0x18, 0x44, 0xca, 0x91, 0x62, 0x39, 0x57, 0x46, 0x43, 0x26, 0x92, 0x1e, 0x65, 0xd6, 0xa9, - 0xa1, 0x81, 0x23, 0x2c, 0x63, 0xc6, 0x32, 0x17, 0xc6, 0xa0, 0x20, 0x82, 0xbf, 0xa4, 0xe4, 0x95, - 0xb3, 0xa1, 0x57, 0xb2, 0x8b, 0x44, 0x32, 0x91, 0x63, 0xf9, 0x2f, 0x8f, 0x47, 0xc4, 0xd7, 0x63, - 0x56, 0xe9, 0x1b, 0x1a, 0x8d, 0x15, 0x41, 0x1d, 0xb2, 0x1e, 0x73, 0x48, 0xf8, 0x7a, 0xcc, 0x2c, - 0x8c, 0xcb, 0x59, 0x8f, 0x99, 0xb8, 0x43, 0xd6, 0x63, 0x1e, 0x0d, 0x11, 0xff, 0x03, 0x65, 0xc4, - 0x1a, 0x3a, 0x74, 0x73, 0x24, 0xde, 0x99, 0xb4, 0xb1, 0x7e, 0x9f, 0x3c, 0x12, 0x0f, 0xa2, 0xef, - 0xef, 0x0f, 0xad, 0xc6, 0x43, 0x37, 0x46, 0x13, 0x92, 0x22, 0x8a, 0x35, 0x7c, 0xfd, 0xc9, 0x88, - 0x89, 0x6a, 0x7f, 0x38, 0x42, 0x79, 0x1e, 0x7a, 0x63, 0x24, 0xfe, 0xfd, 0x64, 0xb1, 0x7a, 0x37, - 0x9e, 0x94, 0x9c, 0x28, 0xb8, 0x73, 0xa8, 0x56, 0x0f, 0x65, 0xfb, 0x72, 0x7d, 0x58, 0xb1, 0xf4, - 0xab, 0x23, 0x62, 0xf3, 0x9d, 0x2b, 0x5d, 0x8d, 0x97, 0xb3, 0x73, 0xa5, 0x91, 0x86, 0xec, 0x5c, - 0x87, 0x90, 0x89, 0x24, 0x37, 0xa3, 0x02, 0x2c, 0xc7, 0xa9, 0x3d, 0x84, 0x37, 0x64, 0x47, 0x3e, - 0x5c, 0xc5, 0x77, 0x5d, 0x41, 0x3b, 0x87, 0x0b, 0xaf, 0xd0, 0x4b, 0x83, 0xc8, 0x63, 0xb4, 0x58, - 0xda, 0xc5, 0xa1, 0xe8, 0x42, 0xd8, 0xbb, 0x52, 0xb5, 0x13, 0x1a, 0x40, 0x46, 0xf3, 0x60, 0x04, - 0xfb, 0xe7, 0x87, 0xe2, 0xf1, 0x63, 0x32, 0x55, 0x48, 0x94, 0x73, 0x4c, 0xa6, 0x70, 0x86, 0x1c, - 0x93, 0xfd, 0xb8, 0x7c, 0xd6, 0xf5, 0xd5, 0x10, 0xe5, 0xcc, 0xba, 0x3e, 0xac, 0x21, 0xb3, 0xee, - 0x30, 0x36, 0x11, 0x16, 0x66, 0x14, 0x18, 0x0d, 0x9a, 0x0b, 0xa9, 0xb2, 0x9a, 0xc1, 0x17, 0x9c, - 0x2c, 0x7c, 0x76, 0xc1, 0xe9, 0x1e, 0x2a, 0x21, 0xc9, 0xed, 0x61, 0x0a, 0x6b, 0x68, 0x0f, 0xfb, - 0xb1, 0x99, 0xb8, 0x2f, 0x2b, 0x79, 0x55, 0x1e, 0x39, 0x07, 0x66, 0x36, 0xf2, 0x90, 0x03, 0x33, - 0x97, 0x88, 0x29, 0xf1, 0x9e, 0x5c, 0xd9, 0x80, 0x2e, 0xe5, 0xb3, 0x48, 0x8f, 0xe5, 0x85, 0xe1, - 0x88, 0x64, 0x18, 0xbf, 0x36, 0x20, 0x3d, 0x1f, 0xfd, 0x9f, 0x7c, 0x1e, 0x19, 0xe8, 0xb1, 0xe8, - 0x57, 0xc6, 0x25, 0x23, 0x8a, 0xbc, 0x27, 0x27, 0xeb, 0xa1, 0xa1, 0x39, 0x70, 0x83, 0xbb, 0x99, - 0x42, 0xe4, 0x3e, 0x57, 0x46, 0x92, 0x75, 0x8e, 0xcf, 0x95, 0x81, 0x39, 0xc4, 0xe7, 0xca, 0xa6, - 0x10, 0x97, 0xe1, 0x9c, 0x54, 0xf3, 0x9c, 0xcb, 0x70, 0x0e, 0xf6, 0x90, 0xcb, 0x70, 0x3e, 0x95, - 0xf0, 0x3d, 0x46, 0xca, 0xd5, 0xce, 0xf1, 0x3d, 0x46, 0xa2, 0x1d, 0xe2, 0x7b, 0x8c, 0xca, 0x83, - 0xe8, 0xfb, 0x17, 0xe3, 0x24, 0x5c, 0xa3, 0x5b, 0xe3, 0xcb, 0xcb, 0xb4, 0xec, 0xca, 0x91, 0xf9, - 0x10, 0xdd, 0x3f, 0x50, 0x72, 0xd3, 0xb2, 0x73, 0x46, 0x3c, 0x07, 0x7b, 0xc8, 0x88, 0xe7, 0x53, - 0xb1, 0x7d, 0x23, 0xcc, 0xc8, 0x8b, 0x1e, 0x1c, 0x81, 0x4a, 0xf0, 0x46, 0x8b, 0x40, 0xa5, 0xf0, - 0x99, 0xd0, 0x3f, 0x18, 0x9e, 0x7e, 0x8c, 0x3e, 0x9e, 0xf3, 0xf4, 0x33, 0x90, 0x2a, 0xd6, 0xe8, - 0x63, 0x4f, 0x48, 0x4d, 0x86, 0xe6, 0xd3, 0x49, 0x5e, 0x1b, 0x1a, 0x92, 0x01, 0x26, 0xc4, 0x0d, - 0xcb, 0x3f, 0xa3, 0x7c, 0xdf, 0xcf, 0x78, 0x31, 0xce, 0x31, 0xf5, 0x21, 0xbc, 0x21, 0xa6, 0xce, - 0xc2, 0xe7, 0x4e, 0x5f, 0xfa, 0xa9, 0x36, 0xc7, 0xe9, 0x4b, 0x23, 0x0d, 0x71, 0xfa, 0x0e, 0x21, - 0xf3, 0x6b, 0x53, 0xe6, 0xb3, 0x5c, 0xce, 0xb5, 0x29, 0xfb, 0x09, 0x6f, 0xf0, 0xb5, 0x29, 0x8f, - 0xc6, 0x77, 0xf6, 0x6e, 0x7e, 0xe4, 0xa7, 0xff, 0x74, 0xf6, 0x99, 0xbf, 0x3e, 0x38, 0xab, 0xfc, - 0xf4, 0xe0, 0xac, 0xf2, 0xf3, 0x83, 0xb3, 0xca, 0x67, 0x9f, 0xdf, 0xc4, 0x41, 0xb4, 0xb7, 0x10, - 0x61, 0x73, 0xfb, 0x1a, 0xe7, 0x76, 0xcd, 0xdf, 0xe9, 0x5c, 0x4b, 0xfd, 0xf7, 0x07, 0x9b, 0x53, - 0xb4, 0xf9, 0xca, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x5e, 0xc2, 0x50, 0x0b, 0x16, 0x61, 0x00, + // 6449 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x4b, 0x6c, 0x1c, 0xd9, + 0x75, 0xe8, 0x54, 0x37, 0xc9, 0xee, 0x3e, 0x6c, 0x36, 0x8b, 0x57, 0x94, 0xd4, 0xea, 0x91, 0x44, + 0x4d, 0x69, 0xf4, 0x9d, 0x19, 0x4a, 0xc3, 0x99, 0xe7, 0xf1, 0x58, 0x9e, 0xb1, 0x29, 0x52, 0x92, + 0x39, 0xfa, 0xf5, 0x14, 0x45, 0x8f, 0xc7, 0x18, 0xbc, 0x72, 0xb1, 0xea, 0xb2, 0x59, 0x66, 0x75, + 0x55, 0x4d, 0x55, 0x35, 0x25, 0x1a, 0xf6, 0x83, 0x9f, 0xed, 0xf1, 0xf3, 0x03, 0x6c, 0xc7, 0x9f, + 0xfc, 0x80, 0x18, 0x59, 0x65, 0x11, 0x20, 0x70, 0x02, 0x18, 0x81, 0x81, 0x00, 0x59, 0x65, 0x15, + 0x07, 0x89, 0xe1, 0x55, 0x16, 0x59, 0x30, 0x0e, 0xb3, 0x71, 0x80, 0x20, 0x08, 0x10, 0x3b, 0x59, + 0x18, 0x08, 0x82, 0xfb, 0xab, 0xba, 0xd5, 0xac, 0xea, 0x8f, 0xa4, 0x41, 0x16, 0x59, 0xa9, 0xef, + 0xa9, 0xf3, 0xbb, 0xe7, 0xfe, 0xce, 0x3d, 0xf7, 0x1c, 0x0a, 0x8e, 0x04, 0xa1, 0x1f, 0xfb, 0x96, + 0xef, 0xc6, 0x7b, 0x01, 0x8e, 0x16, 0x69, 0x0b, 0x1d, 0x79, 0x88, 0xa3, 0x6d, 0x0f, 0xc7, 0x8b, + 0xe2, 0xe3, 0xe2, 0xee, 0xcb, 0xad, 0xf9, 0x8e, 0xdf, 0xf1, 0x29, 0xe0, 0x0a, 0xf9, 0xc5, 0xbe, + 0xb5, 0x4e, 0x04, 0xbd, 0x68, 0x9b, 0xd2, 0x5e, 0x49, 0x7e, 0xb1, 0x4f, 0xda, 0xdf, 0x28, 0x50, + 0x59, 0xb6, 0x2c, 0xbf, 0xe7, 0xc5, 0xe8, 0x2a, 0x4c, 0x76, 0x42, 0xbf, 0x17, 0x34, 0x95, 0x33, + 0xca, 0xc5, 0xe9, 0xa5, 0xd6, 0x62, 0x8e, 0x84, 0xc5, 0x5b, 0x04, 0x43, 0x67, 0x88, 0x68, 0x11, + 0x8e, 0x98, 0x8c, 0xd8, 0x08, 0x42, 0x67, 0xd7, 0x8c, 0xb1, 0xb1, 0x83, 0xf7, 0x9a, 0xa5, 0x33, + 0xca, 0xc5, 0xba, 0x3e, 0xc7, 0x3f, 0xb5, 0xd9, 0x97, 0xdb, 0x78, 0x0f, 0x5d, 0x86, 0x39, 0xd3, + 0x75, 0xcc, 0x28, 0x83, 0x5d, 0xa6, 0xd8, 0xb3, 0xf4, 0x83, 0x84, 0xfb, 0x2a, 0x1c, 0x0b, 0x7a, + 0x9b, 0xae, 0x63, 0x19, 0x21, 0xf6, 0x6c, 0xfc, 0x85, 0x5d, 0xbf, 0x17, 0x19, 0x11, 0xc6, 0x76, + 0x73, 0x82, 0x12, 0xcc, 0xb3, 0xaf, 0x7a, 0xf2, 0x71, 0x1d, 0x63, 0x5b, 0xfb, 0xa5, 0x02, 0x93, + 0x54, 0x45, 0x74, 0x0a, 0x80, 0xd3, 0x13, 0x21, 0x0a, 0xa5, 0xa9, 0x31, 0x08, 0x61, 0x7f, 0x0c, + 0xa6, 0x22, 0x6c, 0x85, 0x38, 0xe6, 0xda, 0xf2, 0x16, 0x21, 0x63, 0xbf, 0x8c, 0xc8, 0xe9, 0x70, + 0xdd, 0x6a, 0x0c, 0xb2, 0xee, 0x74, 0xd0, 0x1b, 0x00, 0xb4, 0xeb, 0x06, 0x31, 0x22, 0xd5, 0xa4, + 0xb1, 0x74, 0xba, 0xd8, 0x50, 0x0f, 0xf6, 0x02, 0xac, 0xd7, 0x3a, 0xe2, 0x27, 0x3a, 0x01, 0xd5, + 0xc8, 0xe9, 0x78, 0x46, 0xd0, 0xdb, 0x6c, 0x4e, 0x52, 0xde, 0x15, 0xd2, 0x6e, 0xf7, 0x36, 0xc9, + 0x27, 0xd7, 0xf1, 0x76, 0xa8, 0xb6, 0x53, 0xec, 0x13, 0x69, 0x13, 0x5d, 0xcf, 0x40, 0x5d, 0x7c, + 0xa2, 0x5a, 0x55, 0xe8, 0x67, 0xe0, 0x9f, 0xd7, 0x9d, 0x8e, 0xf6, 0x2b, 0x05, 0x54, 0x2a, 0xf0, + 0x53, 0xd8, 0xb4, 0xa3, 0x1b, 0x8f, 0x02, 0x3f, 0x8c, 0x87, 0x59, 0x40, 0xd6, 0xa5, 0x94, 0xd5, + 0xe5, 0x06, 0x1c, 0xe9, 0xe2, 0xd8, 0xb4, 0xcd, 0xd8, 0x34, 0xb6, 0x09, 0x47, 0xc3, 0x72, 0xec, + 0xa8, 0x59, 0x3e, 0x53, 0xbe, 0x58, 0xbf, 0x7e, 0xf4, 0x60, 0x7f, 0x61, 0xee, 0x2e, 0xff, 0x4c, + 0xe5, 0xad, 0xac, 0xad, 0x46, 0xfa, 0x5c, 0x37, 0x03, 0x72, 0xec, 0x88, 0xb1, 0x89, 0x22, 0xb3, + 0x83, 0x23, 0x99, 0xcd, 0x84, 0xcc, 0x86, 0x7d, 0xce, 0xb0, 0x91, 0x41, 0x84, 0x8d, 0x6c, 0x99, + 0xc9, 0x8c, 0x65, 0xb4, 0x9f, 0x2a, 0x30, 0x43, 0xfb, 0x2d, 0xf4, 0x21, 0x03, 0x84, 0x77, 0xb1, + 0x17, 0xb3, 0x01, 0x52, 0x06, 0x0c, 0xd0, 0x0d, 0x82, 0xc6, 0x06, 0x08, 0x8b, 0x9f, 0xa8, 0x09, + 0x95, 0xc0, 0xdc, 0x73, 0x7d, 0xd3, 0x16, 0x36, 0xe1, 0x4d, 0xa4, 0x42, 0x39, 0x9d, 0x11, 0xe4, + 0x27, 0xd2, 0x61, 0x4e, 0xf0, 0x33, 0x44, 0xe7, 0xe9, 0x94, 0x98, 0x5e, 0x3a, 0x97, 0x2b, 0xb1, + 0xcd, 0x7f, 0x0b, 0x65, 0x75, 0x35, 0xe8, 0x83, 0x68, 0xcb, 0xbc, 0x3f, 0x37, 0xbc, 0x5d, 0xec, + 0xfa, 0x01, 0x46, 0xf3, 0x30, 0xe9, 0xf9, 0x9e, 0x85, 0xf9, 0xf8, 0xb1, 0x06, 0x81, 0x52, 0x9d, + 0xb9, 0x92, 0xac, 0xf1, 0xd6, 0x44, 0xb5, 0xac, 0x4e, 0x68, 0xff, 0xa6, 0x40, 0x83, 0xdb, 0x95, + 0xd8, 0x10, 0x87, 0x11, 0xe9, 0x15, 0x5d, 0x8a, 0x38, 0xa4, 0x6c, 0x26, 0x74, 0xd1, 0x44, 0x97, + 0xa0, 0x66, 0xe3, 0x5d, 0xc7, 0xc2, 0x46, 0xb0, 0xc3, 0x98, 0x5d, 0xaf, 0x1f, 0xec, 0x2f, 0x54, + 0x57, 0x29, 0xb0, 0x7d, 0x5b, 0xaf, 0xb2, 0xcf, 0xed, 0x9d, 0x1c, 0x03, 0xdc, 0x85, 0xaa, 0xd4, + 0xef, 0xf2, 0xc5, 0xe9, 0xa5, 0x97, 0x73, 0xfb, 0x9d, 0xd5, 0x66, 0x51, 0x74, 0xf6, 0x86, 0x17, + 0x87, 0x7b, 0x7a, 0xc2, 0xa2, 0x75, 0x0d, 0x66, 0x32, 0x9f, 0x88, 0x44, 0x31, 0x73, 0x6b, 0x3a, + 0xf9, 0x49, 0xfa, 0xbd, 0x6b, 0xba, 0x3d, 0x4c, 0x55, 0xad, 0xe9, 0xac, 0xf1, 0xb1, 0xd2, 0x47, + 0x15, 0xad, 0x09, 0x6a, 0xbf, 0x79, 0xdf, 0x9a, 0xa8, 0x2a, 0x6a, 0x49, 0xfb, 0x9a, 0x02, 0xea, + 0x0d, 0xcf, 0x0a, 0xf7, 0x82, 0x18, 0xdb, 0x5c, 0x15, 0x74, 0x12, 0x6a, 0x81, 0x6b, 0x3a, 0x5e, + 0x8c, 0x1f, 0xc5, 0xc9, 0xd2, 0x10, 0x80, 0xfc, 0x91, 0x2d, 0x3d, 0xd9, 0xc8, 0x06, 0x30, 0xcb, + 0x85, 0x27, 0x63, 0x7b, 0x01, 0x66, 0xf9, 0x6c, 0xa7, 0xcb, 0x03, 0x87, 0x11, 0x57, 0xa5, 0xd1, + 0x3d, 0x34, 0x7e, 0x1c, 0x22, 0x66, 0x25, 0x6f, 0xa6, 0xd3, 0xa3, 0x2c, 0x4d, 0x8f, 0xb7, 0x26, + 0xaa, 0x13, 0xea, 0xa4, 0xf6, 0x15, 0x05, 0xea, 0x74, 0x92, 0xaf, 0xf8, 0xac, 0x5b, 0xc7, 0xa0, + 0xe4, 0xd8, 0x4c, 0xc4, 0xf5, 0xa9, 0x83, 0xfd, 0x85, 0xd2, 0xda, 0xaa, 0x5e, 0x72, 0x6c, 0xf4, + 0x22, 0x40, 0x60, 0x86, 0x64, 0xd1, 0x90, 0xe5, 0x59, 0xa2, 0xcb, 0x73, 0xe6, 0x60, 0x7f, 0xa1, + 0xd6, 0xa6, 0x50, 0xb2, 0x2c, 0x6b, 0x0c, 0x61, 0xcd, 0x8e, 0xd0, 0x79, 0xa8, 0xb2, 0x2d, 0x30, + 0xd8, 0x61, 0x52, 0xaf, 0x4f, 0x1f, 0xec, 0x2f, 0x54, 0xe8, 0xb4, 0x6d, 0xdf, 0xd6, 0x2b, 0xf4, + 0x63, 0x7b, 0x87, 0x2b, 0x61, 0x40, 0x33, 0xb3, 0x40, 0xdb, 0x6c, 0x39, 0xad, 0x63, 0x2f, 0xce, + 0x4e, 0x3e, 0x65, 0xe0, 0xe4, 0x2b, 0xb4, 0x80, 0xe6, 0xc0, 0x3c, 0xe9, 0x9f, 0x69, 0xc5, 0xcb, + 0xe4, 0x04, 0xb9, 0x8d, 0xf7, 0x96, 0x6d, 0x1b, 0xdb, 0xe3, 0x30, 0x3f, 0x0f, 0x55, 0x7e, 0x2c, + 0x89, 0x35, 0x40, 0x7b, 0x44, 0xf9, 0x91, 0x1e, 0xb1, 0xa3, 0x69, 0x47, 0xfb, 0x96, 0x02, 0xc7, + 0x78, 0x67, 0xba, 0x9b, 0x38, 0x64, 0x9c, 0x12, 0x69, 0x5d, 0x0a, 0xec, 0x93, 0xc6, 0x30, 0x89, + 0x34, 0xf6, 0xb9, 0xbd, 0x33, 0xce, 0x92, 0x3b, 0x05, 0xc0, 0xb9, 0x4a, 0x87, 0x11, 0x83, 0x90, + 0x5d, 0xff, 0x16, 0x34, 0x18, 0xd1, 0xca, 0xb6, 0xe9, 0x78, 0x64, 0x4f, 0x7f, 0x16, 0x6a, 0x16, + 0xf9, 0x2d, 0xed, 0xf8, 0x55, 0x4b, 0x7c, 0x94, 0x76, 0x81, 0x52, 0x66, 0x17, 0xd0, 0x7e, 0x47, + 0xe1, 0xa3, 0x94, 0x65, 0x37, 0xb6, 0x21, 0x3f, 0x02, 0x0d, 0x1b, 0x47, 0xb1, 0x91, 0x9a, 0x82, + 0xf5, 0x4f, 0x3d, 0xd8, 0x5f, 0xa8, 0xaf, 0xe2, 0x28, 0x4e, 0xcc, 0x51, 0xb7, 0xd3, 0xd6, 0x8e, + 0xbc, 0xeb, 0x96, 0x33, 0xbb, 0x2e, 0xd1, 0x4c, 0xbb, 0xdb, 0x73, 0x63, 0x87, 0xe1, 0x52, 0x25, + 0xe9, 0xb8, 0xe8, 0x38, 0xf2, 0xdd, 0x5d, 0x1c, 0x8e, 0xad, 0xe3, 0x39, 0x68, 0xb0, 0xc1, 0x0e, + 0x39, 0x07, 0x3e, 0xa1, 0x66, 0x4c, 0x99, 0x2d, 0x5a, 0x80, 0x69, 0xe1, 0xaa, 0xf8, 0xfe, 0x16, + 0x57, 0x0b, 0xb8, 0x93, 0xe2, 0xfb, 0x5b, 0xda, 0xb7, 0x15, 0x38, 0x73, 0x48, 0x33, 0xbb, 0xeb, + 0x78, 0xba, 0xef, 0xe2, 0x5b, 0xa1, 0xe9, 0xc5, 0xe3, 0xe9, 0xf5, 0x09, 0x98, 0xeb, 0x50, 0x2a, + 0x7c, 0xc8, 0x7c, 0x47, 0x0e, 0xf6, 0x17, 0x66, 0x19, 0x4b, 0x9c, 0x58, 0x70, 0xb6, 0x93, 0x01, + 0xec, 0x68, 0xeb, 0x70, 0xbe, 0x5f, 0x9f, 0x35, 0xcf, 0x89, 0x1d, 0xd3, 0x65, 0x90, 0x65, 0xcf, + 0xf3, 0x7b, 0x9e, 0x35, 0xd6, 0x64, 0xd5, 0x4c, 0x38, 0xc3, 0x7b, 0x66, 0x2f, 0xdb, 0xb6, 0x13, + 0x3b, 0xbe, 0x67, 0xba, 0x59, 0x9f, 0x6b, 0x9c, 0x4e, 0x22, 0x98, 0xa0, 0x2e, 0x1c, 0x33, 0x39, + 0xfd, 0xad, 0xd9, 0x70, 0x96, 0x39, 0x95, 0xb8, 0xeb, 0xef, 0xe2, 0x0f, 0x4b, 0xca, 0xfb, 0x80, + 0xb8, 0x9f, 0x4b, 0x85, 0xbd, 0xe5, 0x3b, 0xde, 0x78, 0x4c, 0x13, 0xef, 0xb8, 0x34, 0xa2, 0x77, + 0xac, 0x61, 0x50, 0x65, 0x91, 0x77, 0xf0, 0x56, 0x3c, 0xe6, 0xae, 0x94, 0xec, 0xb3, 0xa5, 0xe2, + 0x7d, 0x56, 0x7b, 0x0b, 0x4e, 0x71, 0x31, 0x7c, 0x1f, 0xd4, 0xf1, 0xfb, 0x3d, 0x1c, 0xc5, 0xab, + 0x4e, 0x64, 0x6e, 0xba, 0x63, 0x75, 0x52, 0x5b, 0x83, 0x93, 0xb9, 0xbc, 0x6e, 0x78, 0x63, 0xb3, + 0xfa, 0xba, 0x02, 0x67, 0x73, 0x79, 0xe9, 0x78, 0x0b, 0x87, 0xd8, 0xb3, 0xb0, 0x8e, 0x23, 0x3c, + 0x96, 0x45, 0x8a, 0xaf, 0x04, 0xa5, 0x01, 0x57, 0x82, 0x7d, 0x05, 0xce, 0xe5, 0x2a, 0x72, 0xbf, + 0x17, 0x77, 0x7c, 0xc7, 0xeb, 0xdc, 0xf0, 0xde, 0xef, 0xe1, 0xde, 0xd8, 0x47, 0xc6, 0x28, 0x83, + 0x83, 0x3e, 0x41, 0xf6, 0x5c, 0x2a, 0x94, 0x6e, 0x21, 0x45, 0xfe, 0xc3, 0xfa, 0xb6, 0x19, 0x62, + 0x62, 0x62, 0xa1, 0xa1, 0xa0, 0x42, 0xcf, 0x41, 0xdd, 0x7f, 0xe8, 0x65, 0xfd, 0xcb, 0xba, 0x3e, + 0xed, 0x3f, 0xf4, 0x12, 0xcf, 0xe2, 0x8b, 0xf0, 0xdc, 0xc0, 0xfe, 0x8d, 0x7b, 0xd6, 0xbe, 0x08, + 0xc0, 0xa5, 0xa7, 0xbd, 0xa3, 0xee, 0x00, 0x67, 0xdf, 0xbe, 0xad, 0xd7, 0x38, 0x42, 0x7b, 0x47, + 0xfb, 0xc7, 0x22, 0xf3, 0xae, 0x79, 0x96, 0xdf, 0x75, 0xbc, 0x8e, 0x8e, 0x2d, 0xec, 0xec, 0x8e, + 0x67, 0xde, 0xb1, 0x54, 0x40, 0x1f, 0x81, 0xe3, 0x02, 0xbb, 0x7f, 0x62, 0xb0, 0x7d, 0xfb, 0xa8, + 0x25, 0x34, 0xeb, 0xdb, 0x52, 0x54, 0x41, 0xd7, 0x67, 0xdf, 0x59, 0x0e, 0x4f, 0x6c, 0xfc, 0x7f, + 0x15, 0x38, 0x3f, 0xb0, 0x97, 0xab, 0x4e, 0x64, 0x99, 0xa1, 0xfd, 0x21, 0x76, 0x53, 0xfb, 0xc3, + 0x61, 0x96, 0x5e, 0xb6, 0x2c, 0x1c, 0xc4, 0x1f, 0xa6, 0xa5, 0x47, 0xf4, 0xfd, 0xb4, 0x00, 0x8e, + 0x66, 0x35, 0xbd, 0xee, 0xfa, 0xd6, 0xce, 0x87, 0x69, 0x9c, 0x10, 0x8e, 0x67, 0x25, 0x6e, 0x78, + 0x9b, 0x1f, 0xb6, 0xcc, 0x6f, 0x29, 0xd0, 0xe4, 0x42, 0xd7, 0x71, 0x48, 0x58, 0x3c, 0xf0, 0x77, + 0xb0, 0x37, 0xb6, 0x4b, 0x72, 0x13, 0x66, 0x22, 0x46, 0x6f, 0xc4, 0x84, 0x01, 0x3f, 0x62, 0x9e, + 0xcb, 0xdf, 0x2a, 0x24, 0x49, 0x7a, 0x3d, 0x92, 0x5a, 0x9a, 0x0f, 0xad, 0x1c, 0x75, 0xd8, 0xb9, + 0x3a, 0xee, 0xee, 0x46, 0x15, 0x31, 0x1c, 0xb6, 0xb5, 0xd6, 0xd8, 0x30, 0x53, 0x76, 0x6b, 0xab, + 0x7a, 0x85, 0x7e, 0x5c, 0xb3, 0xb5, 0x1f, 0x89, 0xb0, 0x83, 0x8e, 0x03, 0xd7, 0xb1, 0xcc, 0xd8, + 0xf1, 0x3a, 0xe3, 0xc8, 0x59, 0x05, 0x64, 0xf6, 0xe2, 0x6d, 0xec, 0xc5, 0x94, 0xd8, 0xf7, 0x8c, + 0x5e, 0xe8, 0x72, 0x89, 0x34, 0x3e, 0xb0, 0x9c, 0xf9, 0xba, 0xa1, 0xdf, 0xd1, 0xe7, 0xb2, 0x04, + 0x1b, 0xa1, 0x8b, 0x5e, 0x02, 0x14, 0x0a, 0xf9, 0xbe, 0x67, 0x10, 0x93, 0xe0, 0x90, 0x4e, 0xcf, + 0x9a, 0x3e, 0x27, 0x7d, 0x59, 0xa7, 0x1f, 0xb4, 0x3b, 0x30, 0xc7, 0xcd, 0xc3, 0xe2, 0x24, 0xab, + 0xe4, 0xee, 0x59, 0x83, 0x0a, 0x5f, 0x4c, 0xad, 0x17, 0x61, 0x92, 0x74, 0x67, 0x0f, 0x9d, 0x85, + 0x19, 0x4c, 0x31, 0xb0, 0x6d, 0xd0, 0xbd, 0x81, 0x39, 0xd4, 0x75, 0x01, 0x24, 0x84, 0xda, 0xaf, + 0xa6, 0xe0, 0x38, 0x67, 0x77, 0x0b, 0x93, 0xb9, 0xb7, 0xe5, 0x74, 0x7a, 0x21, 0x95, 0x27, 0x33, + 0xfd, 0x60, 0x4a, 0x70, 0x7d, 0x11, 0x20, 0x89, 0x99, 0x09, 0xfb, 0xd0, 0x29, 0xc6, 0x87, 0x8e, + 0x4c, 0x31, 0x11, 0x39, 0x1b, 0xeb, 0xb2, 0xf0, 0x71, 0x50, 0x05, 0xe3, 0xbe, 0x35, 0x8a, 0x0e, + 0xf6, 0x17, 0x1a, 0xb2, 0x2b, 0xd2, 0xbe, 0xad, 0x37, 0x4c, 0xb9, 0xbd, 0x83, 0xce, 0x42, 0x25, + 0xc0, 0x38, 0x24, 0x23, 0x3e, 0x41, 0xed, 0x0f, 0x07, 0xfb, 0x0b, 0x53, 0x6d, 0x8c, 0xc3, 0xb5, + 0x55, 0x7d, 0x8a, 0x7c, 0x5a, 0xb3, 0xc9, 0xad, 0xd9, 0x75, 0xa2, 0x18, 0x7b, 0xe4, 0xaa, 0x3a, + 0x79, 0xa6, 0x7c, 0xb1, 0xa6, 0xa7, 0x00, 0xf4, 0x59, 0x98, 0xde, 0x74, 0xb1, 0x81, 0x99, 0xaf, + 0x40, 0x83, 0x58, 0x8d, 0xa5, 0xd7, 0x07, 0x4d, 0xe2, 0x7e, 0x8b, 0x2d, 0xae, 0xe3, 0x98, 0xcc, + 0xa1, 0xf5, 0xd8, 0x8c, 0xb1, 0x0e, 0x9b, 0x2e, 0x16, 0x8e, 0x87, 0x05, 0xea, 0x43, 0x67, 0xcb, + 0x31, 0x82, 0xa5, 0x20, 0x11, 0x50, 0x79, 0x52, 0x01, 0x0d, 0xc2, 0xb2, 0xbd, 0x14, 0x08, 0x21, + 0xef, 0x41, 0xbd, 0x6b, 0x7b, 0x51, 0x22, 0xa0, 0xfa, 0xa4, 0x02, 0xa6, 0x09, 0x3b, 0xc1, 0xfd, + 0x7f, 0xc3, 0x4c, 0x88, 0x5d, 0x73, 0x2f, 0x61, 0x5f, 0x7b, 0x52, 0xf6, 0x75, 0xca, 0x4f, 0xf0, + 0x7f, 0x00, 0x73, 0x62, 0xaa, 0xf4, 0xa2, 0x6d, 0xbe, 0x93, 0x00, 0xdd, 0x49, 0x2e, 0xe6, 0x07, + 0x2d, 0x7a, 0xd1, 0x36, 0x97, 0xc3, 0xcf, 0xe8, 0x50, 0x9f, 0xe5, 0xd3, 0xa9, 0x17, 0x6d, 0xd3, + 0xd5, 0x8e, 0xee, 0x02, 0x92, 0xb9, 0xf2, 0xc5, 0x35, 0x4d, 0xd9, 0x2e, 0x0c, 0x64, 0x8b, 0x43, + 0x5d, 0x4d, 0xb9, 0xf1, 0xc5, 0x77, 0x0b, 0xea, 0x72, 0x17, 0xd0, 0x34, 0x54, 0x36, 0xbc, 0x1d, + 0xcf, 0x7f, 0xe8, 0xa9, 0xcf, 0x90, 0x06, 0xef, 0x8c, 0xaa, 0xa0, 0x3a, 0x54, 0x85, 0x07, 0xab, + 0x96, 0xd0, 0x2c, 0x4c, 0x6f, 0x78, 0xe6, 0xae, 0xe9, 0xb8, 0x04, 0xa2, 0x96, 0xb5, 0x2f, 0xc1, + 0xf1, 0x02, 0xb7, 0x52, 0x5e, 0x76, 0xef, 0x88, 0x55, 0x57, 0xec, 0x3a, 0x2a, 0xc5, 0xae, 0x23, + 0xb9, 0x97, 0x8a, 0xc1, 0x22, 0x6b, 0xaf, 0xaa, 0x8b, 0xa6, 0xf6, 0x02, 0x1c, 0xcd, 0xf5, 0xb6, + 0x65, 0xe1, 0x15, 0x2e, 0x5c, 0xfb, 0x5c, 0x12, 0xa2, 0xc8, 0xb8, 0xd3, 0x32, 0xee, 0x1b, 0x4f, + 0xa4, 0xa8, 0xb6, 0x0d, 0x27, 0xfb, 0xad, 0x11, 0xe1, 0x7c, 0x93, 0x3c, 0xa1, 0xa4, 0x6f, 0x2a, + 0x80, 0xb2, 0xa2, 0xd6, 0xb1, 0x67, 0xb7, 0xba, 0x89, 0x00, 0xd9, 0xe5, 0x55, 0x9e, 0x8a, 0xcb, + 0x5b, 0x3a, 0xe4, 0xf2, 0xa6, 0xa6, 0xfd, 0x4c, 0xbf, 0x69, 0x99, 0x0f, 0xd4, 0x7a, 0x2d, 0xd5, + 0x27, 0x7b, 0xa6, 0x2b, 0x83, 0xcf, 0xf4, 0x94, 0xf3, 0xbb, 0x39, 0x23, 0x4c, 0x3c, 0xbc, 0xa7, + 0xc0, 0xfa, 0x36, 0xd4, 0x69, 0xef, 0x39, 0x96, 0x3c, 0x3a, 0x57, 0xc5, 0xe8, 0x5c, 0x80, 0x59, + 0xec, 0x59, 0xbe, 0x8d, 0x6d, 0x43, 0xb6, 0x66, 0x5d, 0x6f, 0x70, 0x30, 0x27, 0x26, 0x4e, 0xc8, + 0xcc, 0x2a, 0x26, 0x20, 0xc1, 0x6e, 0x29, 0x55, 0x70, 0x54, 0x2e, 0xad, 0x4f, 0x09, 0xb9, 0x4f, + 0x3a, 0x7a, 0x5a, 0x1b, 0xea, 0xb2, 0xcf, 0xf7, 0x14, 0xcc, 0xa5, 0x43, 0x23, 0xeb, 0xd3, 0x3d, + 0x05, 0x9e, 0x6f, 0xc3, 0x91, 0xbe, 0xa8, 0x21, 0x9d, 0xc6, 0x2f, 0xa7, 0x8c, 0x65, 0x57, 0x57, + 0x29, 0x76, 0x75, 0x53, 0x96, 0x0f, 0xe0, 0x58, 0x7f, 0xfc, 0x65, 0x25, 0xc4, 0x66, 0x9c, 0x59, + 0x7d, 0x57, 0x84, 0x9d, 0x47, 0x64, 0xaf, 0xbd, 0x07, 0xf3, 0xfd, 0x5c, 0xdf, 0xf2, 0x1d, 0xaf, + 0x75, 0x2d, 0xd5, 0x74, 0xec, 0x77, 0xbb, 0x54, 0xe7, 0x75, 0x38, 0xda, 0xcf, 0xfd, 0x0e, 0x36, + 0x77, 0xf1, 0x13, 0x19, 0xc2, 0x82, 0x73, 0x03, 0x43, 0x76, 0x64, 0x21, 0xb9, 0x7e, 0xf4, 0x64, + 0x42, 0xfe, 0x9f, 0x02, 0xa7, 0x07, 0x87, 0xdf, 0x5a, 0xef, 0x8d, 0xcd, 0x3e, 0x1b, 0x19, 0x2b, + 0x0d, 0x8a, 0x8c, 0xa5, 0x9a, 0x7c, 0x27, 0x27, 0x10, 0xb8, 0xe6, 0xed, 0x3a, 0x31, 0x3d, 0xb1, + 0xf9, 0x14, 0x78, 0x8c, 0xae, 0xbe, 0x2e, 0xa6, 0xca, 0xd8, 0xe3, 0xab, 0x7d, 0x43, 0x81, 0xd9, + 0xe5, 0x20, 0x89, 0xb9, 0xd3, 0xa9, 0xfd, 0xf6, 0xf8, 0xd6, 0x28, 0x7c, 0x0c, 0x63, 0x2f, 0x4d, + 0x2d, 0x4d, 0x68, 0x78, 0x02, 0xca, 0x56, 0xf2, 0xb2, 0x50, 0x39, 0xd8, 0x5f, 0x28, 0xaf, 0xac, + 0xad, 0xea, 0x04, 0x46, 0xc6, 0xa9, 0x41, 0x55, 0xa1, 0xd1, 0xfa, 0xff, 0x4e, 0x4d, 0x7e, 0xa4, + 0x00, 0xca, 0x3c, 0x45, 0xd0, 0xb7, 0x11, 0x72, 0xf9, 0x62, 0x0f, 0x86, 0x96, 0x9f, 0xbe, 0x06, + 0x15, 0x5d, 0xbe, 0xe4, 0xe7, 0x14, 0xbd, 0x8e, 0xe5, 0xc7, 0x95, 0x37, 0xa5, 0xc7, 0x30, 0x76, + 0x7f, 0xd3, 0x8a, 0x07, 0x2a, 0x79, 0x27, 0x4a, 0x68, 0xd2, 0x27, 0xbd, 0xb2, 0xf4, 0xa4, 0xa7, + 0xfd, 0xa9, 0x02, 0x73, 0x9c, 0x82, 0xbd, 0x1d, 0x3d, 0x55, 0x9d, 0xdf, 0x80, 0x8a, 0x78, 0x78, + 0x62, 0x2a, 0x9f, 0x1d, 0xe1, 0xfd, 0x4e, 0x17, 0x34, 0xf2, 0xa3, 0x4c, 0x39, 0xfb, 0x28, 0xf3, + 0xef, 0xa9, 0xda, 0xac, 0x7b, 0x77, 0x9c, 0x28, 0x6e, 0xfd, 0x5c, 0x19, 0x7f, 0xe4, 0xcf, 0x43, + 0x35, 0x72, 0x3c, 0x0b, 0x8b, 0xab, 0x28, 0xc7, 0x5b, 0x27, 0x30, 0x72, 0x15, 0xa5, 0x1f, 0xd7, + 0x6c, 0xf4, 0x2c, 0xd4, 0x18, 0x9e, 0xe7, 0x3f, 0xa4, 0xda, 0x54, 0x75, 0x46, 0x78, 0xcf, 0x7f, + 0x48, 0x98, 0xf4, 0xbc, 0xd8, 0x71, 0xc5, 0xed, 0x86, 0x33, 0xd9, 0x20, 0x30, 0xc2, 0x84, 0x7e, + 0x64, 0x4c, 0x18, 0x1e, 0x61, 0x32, 0xc9, 0x98, 0x50, 0x00, 0x61, 0x72, 0x96, 0xf8, 0xef, 0xbb, + 0x38, 0x8c, 0xb0, 0xe1, 0x87, 0x36, 0x0e, 0xe9, 0x05, 0xa7, 0x4a, 0x9c, 0x70, 0x0a, 0xbc, 0x4f, + 0x60, 0xe9, 0x43, 0x3c, 0xb7, 0xd9, 0xff, 0x94, 0x7e, 0xff, 0xa7, 0x02, 0x35, 0xbe, 0xf3, 0x6d, + 0xf9, 0x2d, 0x63, 0xfc, 0xfe, 0x8e, 0x15, 0x79, 0x69, 0xfd, 0x86, 0xf2, 0xd8, 0x9b, 0xe3, 0x18, + 0x7b, 0x7c, 0xf6, 0xf6, 0x5d, 0x1e, 0x18, 0xee, 0xfe, 0x3c, 0xcc, 0x2c, 0x5b, 0x31, 0xcd, 0x5e, + 0xa1, 0xd2, 0x5a, 0xed, 0xf1, 0x6d, 0x70, 0x0a, 0xc0, 0xf5, 0x2d, 0xd3, 0x35, 0x7c, 0xcf, 0xdd, + 0xe3, 0x37, 0x8e, 0x1a, 0x85, 0xdc, 0xf7, 0xdc, 0xbd, 0xf4, 0xc4, 0xb9, 0x0b, 0xb3, 0xab, 0xd8, + 0xcc, 0x48, 0x7b, 0x92, 0xa3, 0xf4, 0x3b, 0x93, 0x7c, 0xb1, 0xb2, 0x6e, 0x91, 0x8b, 0x59, 0x2f, + 0x7a, 0x1c, 0x8e, 0x3f, 0x28, 0xa7, 0x5e, 0xe4, 0x84, 0x94, 0x7f, 0xf1, 0x42, 0xf1, 0xa0, 0xc8, + 0x22, 0x17, 0x69, 0x32, 0x06, 0x25, 0xcc, 0x4f, 0x70, 0x68, 0xfd, 0x44, 0x81, 0x99, 0x36, 0xc6, + 0xe1, 0x8a, 0xef, 0x79, 0xd8, 0x8a, 0xb1, 0x2d, 0x87, 0x2d, 0x94, 0xc2, 0xb0, 0xc5, 0x18, 0x41, + 0x94, 0x36, 0x40, 0x1c, 0x9a, 0x5e, 0x14, 0xf8, 0x61, 0xcc, 0x12, 0x5e, 0x1a, 0x4b, 0x57, 0x47, + 0x55, 0x5f, 0x10, 0xea, 0x12, 0x0f, 0x74, 0x0c, 0xa6, 0xba, 0xa6, 0x6d, 0x87, 0x2c, 0xef, 0xa5, + 0xa6, 0xf3, 0x56, 0xeb, 0x35, 0x50, 0x89, 0x9a, 0x3a, 0xb6, 0x58, 0x67, 0x1c, 0xaf, 0x33, 0x52, + 0x6f, 0x04, 0x21, 0xf1, 0xa2, 0xc6, 0x32, 0x83, 0xb6, 0x09, 0x13, 0x34, 0xc7, 0x65, 0x16, 0xa6, + 0xc9, 0xbf, 0xe9, 0xbd, 0xbb, 0x09, 0xf3, 0x04, 0xd0, 0xcf, 0x55, 0x55, 0xd0, 0x51, 0x98, 0x13, + 0x5f, 0x12, 0x9b, 0xab, 0x25, 0x99, 0x40, 0xd6, 0x5f, 0x2d, 0x6b, 0x37, 0xa0, 0x96, 0x98, 0x01, + 0x35, 0x00, 0x1e, 0x04, 0x71, 0x2a, 0x07, 0x60, 0xea, 0x41, 0x10, 0xdf, 0x59, 0xbe, 0xa7, 0x2a, + 0xfc, 0xf7, 0x3b, 0xcb, 0xf7, 0xd4, 0x12, 0x52, 0xa1, 0xfe, 0x20, 0x88, 0xdb, 0xa1, 0xff, 0xc8, + 0xe9, 0x3a, 0xf1, 0x9e, 0x5a, 0xd6, 0xfe, 0x4a, 0x21, 0x53, 0x7c, 0xb3, 0xd7, 0x21, 0xfb, 0x27, + 0xb5, 0x74, 0x24, 0x7b, 0xd1, 0x7f, 0xa4, 0x8c, 0xe9, 0x46, 0xa3, 0x3b, 0x99, 0xbc, 0xad, 0xd2, + 0x28, 0x79, 0x5b, 0x6c, 0xfb, 0xc9, 0x4d, 0xe3, 0xca, 0x6e, 0x56, 0xe5, 0x21, 0x61, 0xe2, 0x6f, + 0x97, 0xe1, 0x18, 0xed, 0xcc, 0x9a, 0x17, 0x05, 0xd8, 0x62, 0xfd, 0x59, 0x8f, 0xfd, 0x10, 0xb7, + 0xbe, 0xf1, 0x18, 0x27, 0xc3, 0x06, 0x54, 0x5d, 0xbf, 0x23, 0x77, 0xe4, 0xa5, 0xdc, 0x8e, 0x1c, + 0x12, 0x79, 0xc7, 0xef, 0xd0, 0x7e, 0x51, 0xb6, 0xbc, 0xa1, 0x57, 0x5c, 0xf6, 0xa3, 0xf5, 0x0b, + 0x65, 0xb8, 0x0f, 0x85, 0xae, 0xc0, 0x34, 0xcf, 0x14, 0xb1, 0xd2, 0x54, 0x91, 0xc6, 0xc1, 0xfe, + 0x02, 0xb0, 0x54, 0x11, 0x9a, 0xc2, 0xc5, 0x93, 0x49, 0x68, 0xee, 0xd6, 0x3d, 0x29, 0x93, 0x4c, + 0xca, 0xcb, 0x2a, 0x8f, 0x94, 0x97, 0x95, 0xa4, 0x94, 0x25, 0xa0, 0xec, 0x52, 0x9e, 0x18, 0x96, + 0x32, 0x22, 0x7c, 0xc6, 0xa9, 0x6c, 0x52, 0x41, 0x00, 0x40, 0x8d, 0xf3, 0xd8, 0x5b, 0xa7, 0x7c, + 0x8b, 0xe3, 0xeb, 0x2e, 0x6a, 0x2a, 0x64, 0x79, 0x33, 0x02, 0xb6, 0xf0, 0x22, 0xbd, 0xc2, 0x56, + 0x5e, 0xa4, 0xfd, 0x41, 0x09, 0xe6, 0x97, 0x7b, 0xf1, 0xf6, 0x8d, 0x47, 0xd6, 0xb6, 0xe9, 0x75, + 0xb0, 0x8e, 0xa3, 0xc0, 0xf7, 0x22, 0x8c, 0x9e, 0x83, 0xba, 0x69, 0x59, 0x38, 0x8a, 0x78, 0xbc, + 0x8e, 0xe5, 0x3a, 0x4d, 0x33, 0x18, 0x8b, 0xc0, 0xcd, 0xc3, 0x64, 0x64, 0xf9, 0x41, 0x92, 0xf3, + 0x44, 0x1b, 0x74, 0x83, 0x0c, 0x43, 0x5f, 0xc4, 0xb9, 0x59, 0x03, 0xbd, 0x00, 0x73, 0xf4, 0x87, + 0x61, 0xe3, 0xc8, 0x0a, 0x9d, 0x80, 0xdc, 0x40, 0x58, 0x3c, 0x57, 0x57, 0xe9, 0x87, 0xd5, 0x14, + 0x8e, 0xd6, 0xa1, 0xca, 0x9f, 0x0f, 0x58, 0x30, 0x77, 0x7a, 0xe9, 0xb5, 0xdc, 0x01, 0xc9, 0x53, + 0x5c, 0x04, 0x28, 0x23, 0x9e, 0xc4, 0x25, 0x18, 0xb5, 0xae, 0xc1, 0x4c, 0xe6, 0xd3, 0x58, 0x49, + 0x5c, 0x3f, 0x56, 0xa0, 0x49, 0x47, 0x86, 0x88, 0xe4, 0x6c, 0xd6, 0x71, 0x4c, 0xed, 0xd0, 0xfa, + 0x8e, 0x22, 0xc7, 0x98, 0x26, 0x53, 0x7b, 0x4d, 0x2f, 0x5d, 0x1a, 0x59, 0x6f, 0x9d, 0xd1, 0x3d, + 0x9d, 0x97, 0x87, 0xf4, 0x08, 0xfd, 0x22, 0xa8, 0xfd, 0x11, 0x11, 0x74, 0x0c, 0x4a, 0xc9, 0x34, + 0xa2, 0xd9, 0x56, 0xed, 0xdb, 0x7a, 0x29, 0x78, 0xcc, 0x57, 0x6c, 0xd4, 0x92, 0xae, 0x17, 0xcc, + 0xd9, 0x4e, 0xda, 0x9a, 0x0b, 0x27, 0xe5, 0x07, 0x9f, 0xf5, 0x5e, 0xc0, 0x1e, 0x28, 0x38, 0x90, + 0x4c, 0xb2, 0xe4, 0x7d, 0x49, 0x9c, 0xca, 0x35, 0x7d, 0x5a, 0xbc, 0x1d, 0xb1, 0x75, 0xa5, 0x0a, + 0x14, 0xec, 0xd9, 0x81, 0xef, 0xf0, 0xa3, 0xb7, 0xa6, 0xcf, 0x72, 0xf8, 0x0d, 0x0e, 0xd6, 0xfe, + 0x59, 0x81, 0xba, 0x2c, 0x8e, 0x8c, 0xa7, 0x3c, 0x79, 0x9f, 0xa6, 0x85, 0xd1, 0xe7, 0x00, 0x45, + 0xa2, 0x3b, 0x46, 0x32, 0x5b, 0xcb, 0x03, 0x92, 0x0d, 0x07, 0x59, 0x42, 0x9f, 0x8b, 0xfa, 0x20, + 0x11, 0x3a, 0x0d, 0x80, 0x1f, 0x05, 0x0e, 0x8b, 0xaf, 0xd3, 0xb5, 0x52, 0xd6, 0x25, 0x88, 0xf6, + 0xff, 0x15, 0x38, 0x2e, 0x4d, 0xc7, 0x15, 0xbf, 0x1b, 0xb8, 0x38, 0xc6, 0x37, 0x5d, 0xff, 0x61, + 0xeb, 0x8d, 0x74, 0x46, 0x2e, 0x41, 0xdd, 0x32, 0x5d, 0x77, 0xd3, 0xb4, 0x76, 0x68, 0x47, 0xd9, + 0x31, 0x3c, 0x7b, 0xb0, 0xbf, 0x30, 0xbd, 0xc2, 0xe1, 0xa4, 0x8b, 0xd3, 0x02, 0x89, 0x4c, 0x1f, + 0x79, 0x1b, 0x49, 0xde, 0xdb, 0x94, 0x01, 0xef, 0x6d, 0x3f, 0x56, 0xe0, 0x88, 0xa4, 0xcb, 0x9a, + 0xe7, 0xc4, 0x54, 0x8f, 0xbb, 0x99, 0x2d, 0x8c, 0x58, 0x51, 0xd2, 0x81, 0xe5, 0xb2, 0xf5, 0xe2, + 0x6d, 0x22, 0xbf, 0x42, 0x3e, 0x12, 0xc3, 0xb6, 0xa4, 0xc5, 0x5f, 0xa6, 0x8e, 0x49, 0xba, 0x86, + 0xdb, 0xd2, 0x49, 0x90, 0xf2, 0xa1, 0x27, 0x01, 0xe1, 0x41, 0x60, 0xe4, 0x08, 0x8c, 0xb0, 0xd5, + 0x0b, 0x71, 0x32, 0xac, 0x55, 0x76, 0x04, 0xae, 0x53, 0x28, 0xc1, 0xab, 0x31, 0x84, 0x8d, 0xd0, + 0xd5, 0x7e, 0xa1, 0xc0, 0xb9, 0x95, 0x10, 0xdb, 0x64, 0x70, 0x4d, 0xf7, 0xd3, 0x38, 0x74, 0xb6, + 0xa4, 0x47, 0x39, 0xb9, 0x2b, 0x52, 0x20, 0xf9, 0x0a, 0x88, 0x29, 0x2a, 0xf5, 0x86, 0x1e, 0x36, + 0x9c, 0x88, 0x08, 0x01, 0x8e, 0x42, 0xfa, 0x94, 0x4d, 0x78, 0x2e, 0xf5, 0x27, 0x3c, 0x23, 0x98, + 0x70, 0x1d, 0x6f, 0x87, 0xef, 0x98, 0xf4, 0xf7, 0x87, 0xd0, 0xd5, 0xef, 0x2b, 0x70, 0x69, 0x60, + 0x57, 0x47, 0x9b, 0x41, 0x4e, 0xfe, 0x0c, 0x5a, 0x93, 0x67, 0x90, 0xd3, 0xba, 0x20, 0xd4, 0x3f, + 0x0d, 0xe0, 0x50, 0x91, 0x5b, 0x0e, 0x4f, 0xf2, 0xad, 0xe9, 0x12, 0x44, 0xfb, 0x6a, 0x09, 0x8e, + 0x33, 0x5d, 0xb0, 0x9d, 0x6a, 0x17, 0xd1, 0xeb, 0xe9, 0xd7, 0xa4, 0x8d, 0xf5, 0x05, 0x98, 0xdb, + 0x72, 0xdc, 0x98, 0x1e, 0x69, 0x7d, 0xec, 0x54, 0xf6, 0x61, 0x2d, 0x81, 0x93, 0x9b, 0xa1, 0x40, + 0x8e, 0xa2, 0x1e, 0xcf, 0xa4, 0xab, 0xe9, 0x75, 0x8e, 0x48, 0x61, 0x34, 0x04, 0xfd, 0xc8, 0x72, + 0x7b, 0x36, 0x36, 0xe8, 0xaa, 0xe2, 0x49, 0x19, 0x55, 0xbd, 0xc1, 0xc1, 0x37, 0x18, 0xb4, 0x65, + 0x8a, 0xbe, 0x7c, 0x06, 0xc0, 0x4a, 0x54, 0xe4, 0x3b, 0xfc, 0x47, 0xf3, 0x77, 0x78, 0xf6, 0x86, + 0x79, 0xb8, 0x63, 0x3a, 0xee, 0x38, 0x51, 0x8c, 0x43, 0x6c, 0xeb, 0x12, 0x2f, 0xed, 0x9b, 0x4a, + 0xf2, 0xf6, 0xcb, 0x0e, 0x57, 0xda, 0x7f, 0xc9, 0xb1, 0x74, 0xc7, 0x5c, 0x91, 0xe8, 0x1a, 0x54, + 0xf8, 0x04, 0x1c, 0xfd, 0xd1, 0x5e, 0x50, 0x68, 0xff, 0xa7, 0x4f, 0x9b, 0x15, 0xdf, 0xc6, 0x99, + 0x85, 0xa9, 0x64, 0x17, 0x26, 0x3a, 0x07, 0x0d, 0xcb, 0xb7, 0xb1, 0x61, 0x6d, 0x9b, 0xae, 0x8b, + 0xbd, 0x8e, 0x38, 0x42, 0x67, 0x68, 0xf8, 0x5f, 0x00, 0x33, 0xca, 0x97, 0x07, 0x6c, 0x27, 0x1f, + 0x28, 0xb0, 0xa0, 0x67, 0xdf, 0xc7, 0xe9, 0x5b, 0x20, 0xb3, 0x1d, 0xf3, 0x8e, 0xde, 0xcd, 0x6c, + 0x2d, 0x23, 0xd9, 0x64, 0xc4, 0xdc, 0xa8, 0xf4, 0xf4, 0xfc, 0xb2, 0x02, 0x67, 0xf2, 0xf4, 0x60, + 0x10, 0x7e, 0xc3, 0x7d, 0xa2, 0x80, 0xf7, 0x82, 0x18, 0xd7, 0x63, 0x50, 0xf2, 0xd9, 0xa1, 0x5c, + 0x65, 0x87, 0xf2, 0xfd, 0xdb, 0x7a, 0xc9, 0xdf, 0xd1, 0x7e, 0x0c, 0x00, 0xeb, 0x7b, 0x51, 0x8c, + 0xbb, 0x34, 0x80, 0x21, 0x4d, 0x89, 0x7f, 0x4d, 0xfc, 0xe2, 0x65, 0xa8, 0x04, 0xa1, 0x4f, 0x1c, + 0x33, 0x2e, 0xf8, 0x42, 0xfe, 0x58, 0x27, 0x6c, 0x16, 0xdb, 0x0c, 0x5d, 0x17, 0x74, 0xe8, 0x4d, + 0x28, 0x07, 0x4b, 0xc1, 0xc0, 0x60, 0x9b, 0x4c, 0xbe, 0xd4, 0x66, 0x5b, 0x51, 0x7b, 0xa9, 0xad, + 0x13, 0x42, 0x74, 0x0f, 0x2a, 0x7e, 0xb8, 0xe9, 0xc4, 0xf6, 0x26, 0x4f, 0x27, 0x1b, 0xaa, 0xc2, + 0x7d, 0x82, 0xbe, 0x7a, 0x9d, 0x0d, 0x01, 0x6f, 0xe8, 0x82, 0x09, 0x39, 0xba, 0x1f, 0x9a, 0xa1, + 0x27, 0xee, 0xa6, 0xac, 0xd1, 0xfa, 0x17, 0x05, 0x04, 0x2a, 0xb2, 0xd3, 0xac, 0x82, 0xc4, 0xff, + 0x60, 0xbd, 0x7f, 0x7d, 0x44, 0xd1, 0x8b, 0xf2, 0xd0, 0xd2, 0x9b, 0xb2, 0x3e, 0xcb, 0x59, 0x26, + 0xef, 0x79, 0x5f, 0x82, 0xb9, 0x43, 0x58, 0x64, 0x25, 0x04, 0xa1, 0xdf, 0x09, 0x85, 0xc1, 0xcb, + 0x7a, 0xd2, 0xa6, 0xa1, 0x47, 0xf3, 0x91, 0xd3, 0xed, 0x75, 0xa9, 0x31, 0xcb, 0xba, 0x68, 0x12, + 0xaa, 0xcd, 0xde, 0xd6, 0x16, 0x16, 0x1b, 0x4d, 0x59, 0x4f, 0xda, 0xe4, 0x2e, 0xce, 0x52, 0xfd, + 0xf8, 0x39, 0xcf, 0x5b, 0xad, 0x45, 0x20, 0x26, 0x26, 0x5b, 0x55, 0x72, 0xf9, 0x35, 0x88, 0xeb, + 0x2e, 0xe4, 0x36, 0x12, 0x30, 0xf1, 0xec, 0xa3, 0xd6, 0x37, 0xa6, 0xa0, 0xc2, 0xc7, 0x96, 0x68, + 0xb2, 0x8b, 0xc3, 0x88, 0x38, 0x0f, 0x6c, 0x9f, 0x14, 0x4d, 0x74, 0x1c, 0x2a, 0xbb, 0x56, 0x64, + 0x84, 0x78, 0x8b, 0x2f, 0xd3, 0xa9, 0x5d, 0x2b, 0xd2, 0xf1, 0x16, 0xb9, 0xc4, 0xf4, 0x82, 0xd8, + 0xe9, 0x62, 0xa3, 0x1b, 0x31, 0x1d, 0xd9, 0x25, 0x66, 0x83, 0x02, 0xef, 0xae, 0xeb, 0x55, 0xf6, + 0xf9, 0x6e, 0x84, 0x3e, 0x06, 0x6a, 0x2f, 0xc2, 0xa1, 0x61, 0x05, 0x3d, 0x43, 0x50, 0x00, 0xa5, + 0x98, 0x3b, 0xd8, 0x5f, 0x98, 0xd9, 0x88, 0x70, 0xb8, 0xd2, 0xde, 0x78, 0xc0, 0xc8, 0x66, 0x08, + 0xea, 0x4a, 0xd0, 0x7b, 0xc0, 0x68, 0x3f, 0x09, 0x28, 0xa2, 0xa3, 0x91, 0xa1, 0x9e, 0xa6, 0xd4, + 0x34, 0xa5, 0x98, 0x8d, 0x55, 0x4a, 0x3f, 0xcb, 0xd0, 0x53, 0x0e, 0xa7, 0x00, 0xa2, 0xd8, 0xa4, + 0xbe, 0x97, 0x19, 0x37, 0xeb, 0xd4, 0x16, 0x35, 0x0e, 0x59, 0xa6, 0x05, 0x46, 0xa1, 0x4b, 0xae, + 0xec, 0x86, 0xd5, 0x0b, 0x9b, 0x33, 0x34, 0xa7, 0xbc, 0xc6, 0x20, 0x2b, 0x3d, 0x7a, 0x3c, 0x78, + 0xbd, 0xae, 0xd1, 0xf1, 0x43, 0xbf, 0x17, 0x3b, 0x1e, 0x6e, 0x36, 0x28, 0x83, 0xba, 0xd7, 0xeb, + 0xde, 0x12, 0x30, 0x32, 0x24, 0x9e, 0xbf, 0xe5, 0xb8, 0xb8, 0x39, 0xcb, 0x86, 0x84, 0xb5, 0xd0, + 0x4b, 0x70, 0x24, 0xf6, 0x7d, 0xa3, 0x6b, 0x7a, 0x7b, 0x86, 0x1f, 0x60, 0xcf, 0x20, 0xd0, 0xa8, + 0xa9, 0xd2, 0xa3, 0x43, 0x8d, 0x7d, 0xff, 0xae, 0xe9, 0xed, 0xdd, 0x0f, 0xb0, 0x77, 0x93, 0xc0, + 0xd1, 0x59, 0xa8, 0x10, 0x59, 0x56, 0xd0, 0x6b, 0xce, 0xd1, 0x0e, 0xd2, 0x00, 0xc8, 0xbd, 0x1e, + 0xe9, 0x9d, 0x3e, 0xe5, 0xf5, 0x48, 0xa7, 0x88, 0xbe, 0x1d, 0xdf, 0x10, 0xa3, 0x85, 0xe8, 0x98, + 0xd4, 0x3a, 0xfe, 0xa7, 0xf9, 0x78, 0x5d, 0x02, 0xd5, 0x0f, 0x70, 0x48, 0xb3, 0x98, 0x0c, 0x66, + 0x8a, 0xe6, 0x11, 0xe6, 0x03, 0x27, 0x70, 0x66, 0x32, 0xf4, 0x2c, 0xd4, 0xb6, 0xfd, 0x28, 0x36, + 0x3c, 0xb3, 0x8b, 0x9b, 0xf3, 0x14, 0xa7, 0x4a, 0x00, 0xf7, 0xcc, 0x2e, 0x26, 0x7e, 0x86, 0x19, + 0x5a, 0xdb, 0xcd, 0xa3, 0xcc, 0xcf, 0x20, 0xbf, 0x25, 0x53, 0x75, 0xcd, 0x47, 0xcd, 0x63, 0xb2, + 0xa9, 0xee, 0x9a, 0x8f, 0x88, 0xf7, 0x11, 0x38, 0x76, 0xf3, 0x38, 0x55, 0x9d, 0x2d, 0x79, 0x72, + 0xe5, 0x0e, 0x1c, 0x1b, 0x9d, 0x84, 0x89, 0x80, 0x7c, 0x6b, 0xd2, 0x6f, 0xd5, 0x83, 0xfd, 0x85, + 0x89, 0x36, 0xf9, 0x48, 0xa1, 0x6c, 0x8d, 0x38, 0x7e, 0xe8, 0xc4, 0x7b, 0xcd, 0x13, 0x62, 0x8d, + 0xb0, 0x36, 0x75, 0x69, 0x1c, 0xbb, 0xd9, 0x4a, 0x99, 0x6e, 0x10, 0xa6, 0x3d, 0xc7, 0x46, 0x0b, + 0x30, 0xfd, 0xd0, 0x0f, 0x77, 0x48, 0x47, 0x6d, 0x27, 0x6c, 0x3e, 0xcb, 0xfc, 0x05, 0x0e, 0x5a, + 0x75, 0xe8, 0xa9, 0xcd, 0xe7, 0x0e, 0x99, 0x53, 0xb4, 0x9b, 0x27, 0x29, 0x52, 0x83, 0x81, 0x37, + 0x38, 0x54, 0xfb, 0xf5, 0x24, 0x54, 0xc9, 0xa2, 0xe8, 0x3f, 0x49, 0x97, 0xc5, 0xae, 0xf9, 0x51, + 0x98, 0x14, 0x4b, 0xa9, 0x5c, 0xf8, 0x28, 0x22, 0x38, 0xd0, 0x1f, 0x3a, 0x23, 0x68, 0xfd, 0xa8, + 0x04, 0x13, 0xa4, 0x2d, 0xd5, 0xad, 0xd4, 0x32, 0x75, 0x2b, 0xd7, 0x60, 0x8a, 0x4c, 0x23, 0xcc, + 0x02, 0x11, 0x45, 0x1b, 0x6a, 0xc2, 0x5b, 0x27, 0xb8, 0x3a, 0x27, 0x21, 0x13, 0x8f, 0xde, 0x88, + 0x85, 0xfb, 0xcb, 0x5b, 0x68, 0x19, 0xaa, 0x5b, 0xd8, 0x8c, 0x7b, 0x21, 0x66, 0xbb, 0x62, 0xa3, + 0xa8, 0xe4, 0x47, 0xb0, 0xbd, 0xc9, 0xb0, 0xf5, 0x84, 0x8c, 0x58, 0xb7, 0xeb, 0x78, 0x86, 0x6b, + 0xc6, 0xd8, 0xb3, 0x58, 0xcd, 0x5a, 0x59, 0x87, 0xae, 0xe3, 0xdd, 0x61, 0x10, 0x32, 0x7d, 0x9c, + 0xc8, 0xa0, 0x11, 0x5c, 0xcc, 0xc3, 0xe9, 0x55, 0x27, 0xa2, 0xf1, 0x63, 0x8c, 0x3e, 0x0e, 0x35, + 0xdb, 0x09, 0xb1, 0x45, 0xef, 0x23, 0x95, 0x01, 0x81, 0x92, 0x55, 0x81, 0xa5, 0xa7, 0x04, 0xad, + 0xbf, 0x25, 0xc7, 0x15, 0xe9, 0x61, 0x56, 0x88, 0xd2, 0x27, 0xa4, 0x09, 0x15, 0xd3, 0xb6, 0xe9, + 0xd6, 0xca, 0xf6, 0x26, 0xd1, 0xcc, 0x8a, 0x2f, 0x8f, 0x29, 0x9e, 0xf0, 0x15, 0xdd, 0x66, 0x5b, + 0xac, 0x68, 0xa2, 0x37, 0xa1, 0x12, 0xc5, 0x21, 0x36, 0xbb, 0x22, 0xd8, 0xf0, 0xfc, 0x60, 0xb3, + 0xae, 0x53, 0x64, 0x5d, 0x10, 0xb5, 0xce, 0xc0, 0x14, 0x03, 0x15, 0x4d, 0x07, 0xed, 0x7d, 0xa8, + 0xf0, 0xb1, 0x40, 0x08, 0x1a, 0x3c, 0xec, 0xc8, 0x21, 0xea, 0x33, 0x68, 0x16, 0xa6, 0xdf, 0xc1, + 0xd1, 0xb6, 0x00, 0x28, 0xa8, 0x01, 0x70, 0xfd, 0xce, 0x0d, 0xd1, 0xa6, 0x61, 0xc8, 0x3b, 0xbe, + 0x65, 0xba, 0x02, 0x52, 0xa6, 0x01, 0x4c, 0x3f, 0x14, 0xed, 0x09, 0xc2, 0xe2, 0xed, 0x9e, 0x63, + 0x09, 0xc0, 0xa4, 0xf6, 0x03, 0x05, 0xaa, 0x6d, 0x71, 0x26, 0xcd, 0xc3, 0x64, 0x14, 0x9b, 0xb1, + 0xb8, 0x5f, 0xb3, 0x06, 0x81, 0xda, 0xbe, 0xe3, 0x75, 0x44, 0xb4, 0x83, 0x36, 0x32, 0x67, 0x1b, + 0x31, 0x72, 0x49, 0x3a, 0xdb, 0x4e, 0x42, 0xcd, 0xe2, 0x77, 0x04, 0x76, 0x50, 0x4d, 0xe8, 0x29, + 0x80, 0xdd, 0xb6, 0x63, 0xd3, 0xa5, 0xd3, 0x6a, 0x42, 0x67, 0x0d, 0x2a, 0x05, 0xbb, 0x26, 0x2b, + 0x1d, 0x9d, 0xd0, 0x59, 0x43, 0xf3, 0x60, 0x8e, 0xbd, 0x6a, 0xbc, 0xe3, 0xc4, 0xdb, 0x2c, 0x44, + 0x16, 0x8d, 0x53, 0xaa, 0xb4, 0x08, 0xd3, 0x2c, 0x9c, 0x16, 0x19, 0xc1, 0x4e, 0xa6, 0x32, 0x4c, + 0xc4, 0xdb, 0x22, 0x1d, 0x38, 0x46, 0x7b, 0x27, 0xd2, 0xf6, 0x15, 0x98, 0xbb, 0xdf, 0x8b, 0xef, + 0x6f, 0xd1, 0xe8, 0xa6, 0xa8, 0xb5, 0x1b, 0x10, 0x4f, 0x1c, 0x23, 0x32, 0x2f, 0x55, 0x2f, 0x11, + 0x83, 0x4d, 0xa5, 0x35, 0x8c, 0xbc, 0x30, 0x71, 0x22, 0x2d, 0x4c, 0x9c, 0x87, 0xc9, 0x2d, 0xd7, + 0xec, 0x44, 0xd4, 0x46, 0x15, 0x9d, 0x35, 0x68, 0x70, 0x4c, 0xd4, 0x01, 0x1a, 0xd9, 0xd0, 0xa0, + 0x9a, 0x7c, 0xe0, 0xf5, 0x69, 0x69, 0x61, 0x5d, 0x45, 0x2a, 0xac, 0xd3, 0x7e, 0xaa, 0xc0, 0x91, + 0x9c, 0xb4, 0x39, 0xb4, 0x0a, 0xc0, 0x5c, 0x63, 0xe9, 0xd5, 0x43, 0xda, 0x36, 0x7a, 0xd1, 0x76, + 0x5f, 0xc2, 0x1d, 0x75, 0x9a, 0x59, 0x58, 0x39, 0x16, 0x3f, 0x89, 0x35, 0x36, 0x7b, 0x9e, 0xed, + 0xe2, 0x34, 0xef, 0x96, 0x5a, 0xe3, 0x3a, 0x05, 0xae, 0xad, 0x12, 0x4f, 0x86, 0xfe, 0xb2, 0xd3, + 0x98, 0x0b, 0x7f, 0x2d, 0x66, 0x31, 0x97, 0xab, 0x30, 0x1f, 0x62, 0xcb, 0x09, 0x1c, 0xec, 0xc5, + 0x86, 0x74, 0x15, 0x66, 0xa6, 0x41, 0xc9, 0xb7, 0xb6, 0xb8, 0x13, 0x6b, 0xf7, 0x00, 0xd2, 0xec, + 0x3c, 0x56, 0xfc, 0x4c, 0x7e, 0xc9, 0x15, 0xc3, 0x0c, 0x42, 0x2e, 0xd0, 0x52, 0x1c, 0x89, 0xec, + 0x16, 0x7c, 0x46, 0x8b, 0x4b, 0xfa, 0xb2, 0x6d, 0x87, 0xda, 0xd7, 0x15, 0x38, 0x41, 0x18, 0xb2, + 0x01, 0xe4, 0xf9, 0xc7, 0xe2, 0x2e, 0x86, 0xde, 0xcc, 0x86, 0xed, 0x46, 0x4f, 0x4b, 0xe4, 0xfd, + 0x1b, 0x7d, 0xba, 0x90, 0x3b, 0x45, 0x2b, 0x55, 0x84, 0xe7, 0x23, 0xa6, 0x9a, 0xbc, 0x06, 0x53, + 0x3c, 0x95, 0x51, 0x19, 0x2d, 0x95, 0x91, 0xa3, 0x8f, 0xa3, 0xc2, 0x5f, 0x97, 0x92, 0x0a, 0x98, + 0x41, 0x37, 0xd4, 0x71, 0x12, 0xa6, 0xaf, 0x41, 0x2b, 0x72, 0x3a, 0x1e, 0xb6, 0xf9, 0xf5, 0x3c, + 0xde, 0x33, 0x0e, 0x45, 0x3c, 0x8e, 0x33, 0x8c, 0x35, 0x8e, 0x90, 0x8c, 0x35, 0xba, 0x02, 0x47, + 0x76, 0xb9, 0x1e, 0x86, 0x74, 0xc1, 0x66, 0xe1, 0x10, 0xb4, 0x7b, 0x48, 0x45, 0xb2, 0x60, 0x42, + 0xaa, 0x26, 0x0b, 0x85, 0x19, 0x36, 0xd9, 0xdc, 0xd8, 0xb6, 0xae, 0xca, 0x1f, 0x56, 0xc9, 0x3e, + 0x47, 0xef, 0xf9, 0x22, 0x6a, 0xc6, 0x50, 0xd9, 0xc1, 0xd7, 0x48, 0xc1, 0x14, 0x31, 0x1b, 0xaa, + 0x98, 0xea, 0x0f, 0x55, 0x90, 0x83, 0x99, 0x87, 0x13, 0x2a, 0xcc, 0x6b, 0x66, 0x2d, 0xed, 0xbb, + 0x0a, 0x1c, 0x25, 0x03, 0xc2, 0xf6, 0x29, 0x3a, 0xb5, 0x36, 0x02, 0x22, 0xe7, 0xf1, 0x07, 0x33, + 0x59, 0x45, 0x25, 0x79, 0x15, 0x8d, 0xf1, 0xea, 0xfb, 0x1f, 0x99, 0x0d, 0x8f, 0x4f, 0xd7, 0xd6, + 0xd9, 0xf4, 0xaa, 0x2a, 0x3d, 0x42, 0x28, 0x99, 0x47, 0x88, 0xd6, 0x9f, 0x27, 0xf7, 0xca, 0x4f, + 0xa6, 0x69, 0x14, 0x4c, 0xff, 0xf3, 0xb9, 0xfa, 0x1f, 0xda, 0x58, 0xd3, 0x2a, 0x60, 0x72, 0x62, + 0xb8, 0x98, 0xb8, 0xe5, 0x8f, 0xc4, 0x8b, 0x69, 0x0a, 0x40, 0x17, 0x41, 0xe5, 0xf7, 0xf1, 0x74, + 0xaa, 0xb0, 0x6d, 0xa3, 0xc1, 0xae, 0xe2, 0xc9, 0x0c, 0xb9, 0x04, 0xaa, 0xe9, 0x86, 0xd8, 0xb4, + 0xf7, 0x8c, 0x90, 0x57, 0xed, 0xd0, 0xf1, 0xae, 0xea, 0xb3, 0x1c, 0x2e, 0x8a, 0x79, 0x68, 0x5e, + 0x4f, 0xaa, 0xd1, 0x3a, 0x36, 0xdd, 0xd6, 0xbd, 0xb4, 0xdb, 0x03, 0xb6, 0xfc, 0x3c, 0x6d, 0x4a, + 0x79, 0xda, 0xb4, 0xce, 0x09, 0x03, 0x9d, 0x84, 0x5a, 0xb2, 0x3f, 0x8b, 0x5d, 0x29, 0x01, 0x68, + 0x6f, 0xc0, 0xdc, 0x4d, 0x27, 0x8c, 0xe2, 0x3b, 0x66, 0x14, 0xaf, 0xb0, 0x23, 0x81, 0x9e, 0xc5, + 0x5b, 0x04, 0xc8, 0xeb, 0xdd, 0x59, 0x83, 0x46, 0x00, 0xcd, 0x28, 0xe6, 0xe5, 0xaf, 0xf4, 0xb7, + 0xf6, 0xf7, 0x0a, 0x1c, 0xe1, 0x37, 0x55, 0x29, 0xcf, 0x85, 0xdd, 0x7d, 0xb0, 0xe9, 0x62, 0xdb, + 0xd8, 0xf4, 0x1f, 0x09, 0xa3, 0x32, 0xc8, 0x75, 0xff, 0x11, 0xd9, 0x0b, 0x43, 0xf3, 0xa1, 0x11, + 0xfa, 0x2c, 0xcd, 0x8b, 0x1b, 0x74, 0x3a, 0x34, 0x1f, 0xea, 0x1c, 0xd4, 0xfa, 0x40, 0x81, 0x32, + 0x41, 0x95, 0x7c, 0x2d, 0x25, 0xeb, 0x6b, 0xcd, 0xc3, 0x24, 0xfd, 0xbb, 0x08, 0x62, 0xfe, 0xd1, + 0xc6, 0x18, 0xf3, 0xaf, 0x3f, 0x6b, 0xbf, 0x9e, 0xfb, 0xee, 0xfb, 0x6b, 0x05, 0x8e, 0xea, 0x78, + 0x2b, 0xc4, 0xd1, 0x76, 0x36, 0xa3, 0xb5, 0xf5, 0xea, 0x10, 0x07, 0x7b, 0x1e, 0x26, 0xd9, 0xd3, + 0x75, 0x89, 0x85, 0x07, 0xd8, 0xcb, 0xf5, 0xdb, 0x8f, 0x99, 0x7d, 0x49, 0x0c, 0x41, 0x6e, 0xa1, + 0x7e, 0x2f, 0x16, 0x97, 0x76, 0xde, 0x6c, 0xbd, 0x2b, 0x86, 0xba, 0x0d, 0xd3, 0xd4, 0xf9, 0x37, + 0xb6, 0xfc, 0x9e, 0x67, 0xf3, 0x3b, 0xc3, 0x95, 0xdc, 0xf5, 0x90, 0xdb, 0x25, 0x76, 0x81, 0x00, + 0xca, 0xe3, 0x26, 0x61, 0x71, 0xd9, 0x81, 0xf4, 0x0d, 0x17, 0x1d, 0xe3, 0x29, 0x60, 0xec, 0xfd, + 0xdb, 0xc6, 0x5b, 0x8e, 0x87, 0x6d, 0xf5, 0x19, 0x34, 0xcf, 0xb3, 0x76, 0x08, 0x9c, 0x6f, 0xd9, + 0xaa, 0x92, 0x81, 0x72, 0x31, 0xec, 0xf1, 0x3b, 0x81, 0x4a, 0x79, 0x7f, 0x6a, 0xf9, 0xf2, 0xd7, + 0x6a, 0x50, 0x4b, 0x9f, 0x2a, 0x8f, 0x01, 0x4a, 0x1a, 0xb2, 0xac, 0xb3, 0xb0, 0x90, 0xc0, 0xf3, + 0xab, 0xc9, 0x55, 0x05, 0x9d, 0x83, 0xe7, 0xb2, 0x48, 0x39, 0x95, 0xd9, 0x6a, 0x09, 0x2d, 0xc0, + 0xb3, 0x09, 0xda, 0xe1, 0xf2, 0x56, 0x15, 0xa3, 0x53, 0x70, 0x22, 0x17, 0xe1, 0x0e, 0xde, 0x8a, + 0xd5, 0x2d, 0x74, 0x19, 0xce, 0xf7, 0x7f, 0xce, 0x2f, 0x22, 0x55, 0x3b, 0xe8, 0x12, 0x9c, 0x1b, + 0x8c, 0x2b, 0x72, 0xf7, 0xb7, 0xd1, 0x55, 0x78, 0x71, 0x30, 0x6a, 0xb6, 0x06, 0x54, 0x75, 0xd0, + 0x12, 0x2c, 0x0e, 0xa6, 0xe8, 0x2f, 0xd6, 0x54, 0x3f, 0x8f, 0x16, 0xe1, 0xf2, 0x68, 0x34, 0xeb, + 0xd8, 0x8b, 0xd5, 0x9d, 0xe1, 0x32, 0xfa, 0x2b, 0x16, 0x55, 0x17, 0xbd, 0x02, 0x57, 0x46, 0xa3, + 0x49, 0xea, 0xff, 0xd4, 0xee, 0xe8, 0x82, 0x44, 0xc1, 0x9e, 0xea, 0x21, 0x0d, 0x4e, 0x17, 0xd0, + 0xf0, 0xd2, 0x39, 0xd5, 0x47, 0xcf, 0xc3, 0x99, 0x02, 0x9c, 0xa4, 0xd8, 0x4d, 0x0d, 0x90, 0x06, + 0xa7, 0x12, 0xac, 0xbc, 0xbf, 0x8c, 0xa0, 0xfe, 0x44, 0x41, 0x57, 0xe1, 0x85, 0x04, 0x67, 0x78, + 0x79, 0xbd, 0xfa, 0xc3, 0x12, 0x7a, 0x55, 0x32, 0xc4, 0x68, 0x65, 0xe6, 0xea, 0x1f, 0x97, 0xd0, + 0x22, 0x5c, 0x2a, 0x96, 0xd3, 0x57, 0x2c, 0xaf, 0xfe, 0x49, 0x09, 0x9d, 0x97, 0xa6, 0x7d, 0x51, + 0x65, 0x9d, 0xfa, 0xdd, 0x32, 0xba, 0x08, 0x67, 0x07, 0xe1, 0xf1, 0x92, 0x37, 0xf5, 0x7b, 0x65, + 0x74, 0x5a, 0x5a, 0x00, 0xfd, 0xa5, 0x6a, 0xea, 0xf7, 0xcb, 0xe8, 0xac, 0x64, 0xf7, 0x5c, 0xef, + 0x42, 0xfd, 0xcd, 0x32, 0xba, 0x00, 0x5a, 0x06, 0x29, 0xd7, 0xbb, 0x55, 0x7f, 0x2b, 0xab, 0x57, + 0xb1, 0xf7, 0xa9, 0xfe, 0x76, 0x19, 0xbd, 0x7c, 0x78, 0x89, 0x0c, 0x72, 0x12, 0xd5, 0x5f, 0x96, + 0x33, 0xc6, 0x29, 0xfa, 0x9b, 0x1a, 0xea, 0x3f, 0x55, 0x2e, 0x7f, 0x53, 0xbc, 0xa2, 0xe7, 0x24, + 0x7f, 0x90, 0x8d, 0xa5, 0xe8, 0x5b, 0xdf, 0x26, 0x55, 0x84, 0xc6, 0x4f, 0x49, 0x55, 0x21, 0xf3, + 0xb1, 0x18, 0x89, 0xa9, 0xa6, 0x96, 0x2e, 0xff, 0x85, 0x92, 0x54, 0x04, 0xb0, 0x9a, 0x9f, 0x13, + 0x49, 0x65, 0x05, 0x6d, 0xcb, 0x62, 0xfb, 0x3e, 0x3d, 0xf0, 0xf9, 0x82, 0x51, 0x15, 0xb2, 0xed, + 0xca, 0x9f, 0x92, 0x35, 0x5a, 0x42, 0x47, 0x61, 0x4e, 0xfe, 0xc2, 0x26, 0x49, 0x19, 0x1d, 0x4f, + 0x52, 0xfc, 0x39, 0x01, 0x9b, 0x13, 0x13, 0xfd, 0x42, 0xd2, 0x95, 0x3b, 0xd9, 0x4f, 0x23, 0x96, + 0xde, 0xd4, 0xe5, 0x5b, 0x50, 0x4b, 0xe2, 0x1d, 0xa8, 0x01, 0xc0, 0xa3, 0x0b, 0xab, 0x4e, 0xa8, + 0x3e, 0x43, 0xda, 0x6b, 0xde, 0x26, 0x39, 0x6d, 0x48, 0x5b, 0x41, 0xb3, 0x30, 0x7d, 0xbf, 0x17, + 0x27, 0x80, 0x12, 0xaa, 0xc1, 0xe4, 0x75, 0x87, 0xfc, 0x2c, 0x2f, 0xfd, 0xdd, 0x65, 0x98, 0x15, + 0x7f, 0x2d, 0x46, 0xbc, 0xcf, 0x47, 0x39, 0x15, 0x89, 0x68, 0x71, 0xd0, 0x43, 0x52, 0x8a, 0xb7, + 0x98, 0x94, 0x2d, 0x8e, 0x8c, 0x1f, 0xb8, 0x7b, 0x57, 0x15, 0xf4, 0x55, 0xa5, 0xb0, 0x70, 0x11, + 0xbd, 0x3a, 0x56, 0x4d, 0x9a, 0xd0, 0x60, 0x69, 0x4c, 0x2a, 0x72, 0xde, 0x13, 0x2d, 0x0a, 0x8e, + 0x86, 0x02, 0x2d, 0x0a, 0xb0, 0x87, 0x68, 0x51, 0x4c, 0x45, 0xb4, 0xf8, 0x52, 0x41, 0x35, 0x17, + 0x1a, 0x85, 0x19, 0xc7, 0x4d, 0x14, 0xb8, 0x3a, 0x16, 0x0d, 0x11, 0xff, 0x85, 0xfc, 0xfa, 0x30, + 0xf4, 0xf2, 0x08, 0x9c, 0x18, 0x6a, 0x22, 0xfc, 0xca, 0x38, 0x24, 0x44, 0xf6, 0xf7, 0x94, 0xc1, + 0xa5, 0x63, 0xe8, 0xf5, 0x91, 0xec, 0x29, 0x93, 0x24, 0xca, 0xbc, 0xf6, 0x38, 0xa4, 0x44, 0xa9, + 0x38, 0xaf, 0xc6, 0x0c, 0x8d, 0xd2, 0x37, 0x82, 0x98, 0xc8, 0x7f, 0x69, 0x74, 0x82, 0xdc, 0x61, + 0x60, 0xc7, 0xf3, 0x48, 0xc3, 0xc0, 0x50, 0xc7, 0x1a, 0x86, 0x84, 0xa4, 0x68, 0x06, 0x92, 0x5d, + 0x69, 0xd4, 0x19, 0x48, 0x70, 0xc7, 0x9d, 0x81, 0x9c, 0x86, 0x88, 0xdf, 0xcc, 0x56, 0xa4, 0xa1, + 0x4b, 0xc5, 0x45, 0x5f, 0x1c, 0x25, 0x11, 0x76, 0x61, 0x14, 0x54, 0x22, 0x03, 0xf7, 0xd5, 0xa9, + 0xa1, 0xcb, 0x05, 0x69, 0x8b, 0x12, 0x4e, 0x22, 0xe5, 0xe2, 0x48, 0xb8, 0xbc, 0x2b, 0xb2, 0xe3, + 0x54, 0xd0, 0x15, 0x19, 0x65, 0x48, 0x57, 0xfa, 0x50, 0x89, 0x8c, 0xed, 0xfe, 0x8a, 0x34, 0xf4, + 0xc2, 0x20, 0x52, 0x8e, 0x94, 0xc8, 0xb9, 0x34, 0x1a, 0x32, 0x91, 0xf4, 0x30, 0xb7, 0x4e, 0x0d, + 0x0d, 0x1c, 0x61, 0x19, 0x33, 0x91, 0xb9, 0x38, 0x06, 0x05, 0x11, 0xfc, 0x65, 0xa5, 0xa8, 0x9c, + 0x0d, 0xbd, 0x92, 0x5f, 0x24, 0x92, 0x8b, 0x9c, 0xc8, 0x7f, 0x79, 0x3c, 0x22, 0xbe, 0x1e, 0xf3, + 0x4a, 0xdf, 0xd0, 0x68, 0xac, 0x08, 0xea, 0x90, 0xf5, 0x58, 0x40, 0xc2, 0xd7, 0x63, 0x6e, 0x61, + 0x5c, 0xc1, 0x7a, 0xcc, 0xc5, 0x1d, 0xb2, 0x1e, 0x8b, 0x68, 0x88, 0xf8, 0x1f, 0x2a, 0x23, 0xd6, + 0xd0, 0xa1, 0xeb, 0x23, 0xf1, 0xce, 0xa5, 0x4d, 0xf4, 0xfb, 0xe4, 0x13, 0xf1, 0x20, 0xfa, 0xfe, + 0xee, 0xd0, 0x6a, 0x3c, 0x74, 0x6d, 0x34, 0x21, 0x19, 0xa2, 0x44, 0xc3, 0xd7, 0x1f, 0x8f, 0x98, + 0xa8, 0xf6, 0xfb, 0x23, 0x94, 0xe7, 0xa1, 0x37, 0x46, 0xe2, 0xdf, 0x4f, 0x96, 0xa8, 0x77, 0xed, + 0x71, 0xc9, 0x89, 0x82, 0x3b, 0x87, 0x6a, 0xf5, 0x50, 0xbe, 0x2f, 0xd7, 0x87, 0x95, 0x48, 0xbf, + 0x3c, 0x22, 0x36, 0xdf, 0xb9, 0xb2, 0xd5, 0x78, 0x05, 0x3b, 0x57, 0x16, 0x69, 0xc8, 0xce, 0x75, + 0x08, 0x99, 0x48, 0xf2, 0x72, 0x2a, 0xc0, 0x0a, 0x9c, 0xda, 0x43, 0x78, 0x43, 0x76, 0xe4, 0xc3, + 0x55, 0x7c, 0x57, 0x15, 0xb4, 0x73, 0xb8, 0xf0, 0x0a, 0xbd, 0x34, 0x88, 0x3c, 0x41, 0x4b, 0xa4, + 0x9d, 0x1f, 0x8a, 0x2e, 0x84, 0xbd, 0x2b, 0x55, 0x3b, 0xa1, 0x01, 0x64, 0x34, 0x0f, 0x46, 0xb0, + 0x7f, 0x7e, 0x28, 0x1e, 0x3f, 0x26, 0x33, 0x85, 0x44, 0x05, 0xc7, 0x64, 0x06, 0x67, 0xc8, 0x31, + 0xd9, 0x8f, 0xcb, 0x67, 0x5d, 0x5f, 0x0d, 0x51, 0xc1, 0xac, 0xeb, 0xc3, 0x1a, 0x32, 0xeb, 0x0e, + 0x63, 0x13, 0x61, 0x51, 0x4e, 0x81, 0xd1, 0xa0, 0xb9, 0x90, 0x29, 0xab, 0x19, 0x7c, 0xc1, 0xc9, + 0xc3, 0x67, 0x17, 0x9c, 0xee, 0xa1, 0x12, 0x92, 0xc2, 0x1e, 0x66, 0xb0, 0x86, 0xf6, 0xb0, 0x1f, + 0x9b, 0x89, 0xfb, 0x8a, 0x52, 0x54, 0xe5, 0x51, 0x70, 0x60, 0xe6, 0x23, 0x0f, 0x39, 0x30, 0x0b, + 0x89, 0x98, 0x12, 0xef, 0xc9, 0x95, 0x0d, 0xe8, 0x42, 0x31, 0x8b, 0xec, 0x58, 0x9e, 0x1b, 0x8e, + 0x48, 0x86, 0xf1, 0xeb, 0x03, 0xd2, 0xf3, 0xd1, 0xff, 0x2a, 0xe6, 0x91, 0x83, 0x9e, 0x88, 0x7e, + 0x65, 0x5c, 0x32, 0xa2, 0xc8, 0x7b, 0x72, 0xb2, 0x1e, 0x1a, 0x9a, 0x03, 0x37, 0xb8, 0x9b, 0x19, + 0x44, 0xee, 0x73, 0xe5, 0x24, 0x59, 0x17, 0xf8, 0x5c, 0x39, 0x98, 0x43, 0x7c, 0xae, 0x7c, 0x0a, + 0x71, 0x19, 0x2e, 0x48, 0x35, 0x2f, 0xb8, 0x0c, 0x17, 0x60, 0x0f, 0xb9, 0x0c, 0x17, 0x53, 0x09, + 0xdf, 0x63, 0xa4, 0x5c, 0xed, 0x02, 0xdf, 0x63, 0x24, 0xda, 0x21, 0xbe, 0xc7, 0xa8, 0x3c, 0x88, + 0xbe, 0x7f, 0x36, 0x4e, 0xc2, 0x35, 0xba, 0x39, 0xbe, 0xbc, 0x5c, 0xcb, 0xae, 0x3e, 0x31, 0x1f, + 0xa2, 0xfb, 0x07, 0x4a, 0x61, 0x5a, 0x76, 0xc1, 0x88, 0x17, 0x60, 0x0f, 0x19, 0xf1, 0x62, 0x2a, + 0xb6, 0x6f, 0x44, 0x39, 0x79, 0xd1, 0x83, 0x23, 0x50, 0x29, 0xde, 0x68, 0x11, 0xa8, 0x0c, 0x3e, + 0x13, 0xfa, 0x7b, 0xc3, 0xd3, 0x8f, 0xd1, 0xc7, 0x0b, 0x9e, 0x7e, 0x06, 0x52, 0x25, 0x1a, 0x7d, + 0xec, 0x31, 0xa9, 0xc9, 0xd0, 0x7c, 0x3a, 0xcd, 0x6b, 0x43, 0x43, 0x32, 0xc0, 0x84, 0xb8, 0x61, + 0xf9, 0x67, 0x94, 0xef, 0xfb, 0x39, 0x2f, 0xc6, 0x05, 0xa6, 0x3e, 0x84, 0x37, 0xc4, 0xd4, 0x79, + 0xf8, 0xdc, 0xe9, 0xcb, 0x3e, 0xd5, 0x16, 0x38, 0x7d, 0x59, 0xa4, 0x21, 0x4e, 0xdf, 0x21, 0x64, + 0x7e, 0x6d, 0xca, 0x7d, 0x96, 0x2b, 0xb8, 0x36, 0xe5, 0x3f, 0xe1, 0x0d, 0xbe, 0x36, 0x15, 0xd1, + 0x04, 0xee, 0xde, 0xf5, 0x8f, 0xfc, 0xec, 0x1f, 0x4e, 0x3f, 0xf3, 0x97, 0x07, 0xa7, 0x95, 0x9f, + 0x1d, 0x9c, 0x56, 0x7e, 0x7e, 0x70, 0x5a, 0xf9, 0xec, 0xf3, 0x9b, 0x38, 0x8c, 0xf7, 0x16, 0x63, + 0x6c, 0x6d, 0x5f, 0xe1, 0xdc, 0xae, 0x04, 0x3b, 0x9d, 0x2b, 0x99, 0xff, 0x51, 0x61, 0x73, 0x8a, + 0x36, 0x5f, 0xf9, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf9, 0xeb, 0xa0, 0xf4, 0x69, 0x61, 0x00, 0x00, } @@ -12149,7 +12152,7 @@ func (m *EventContext) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *AppMetadata) Marshal() (dAtA []byte, err error) { +func (m *GroupMetadataPayloadSent) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -12159,12 +12162,12 @@ func (m *AppMetadata) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *AppMetadata) MarshalTo(dAtA []byte) (int, error) { +func (m *GroupMetadataPayloadSent) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *AppMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *GroupMetadataPayloadSent) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -12190,7 +12193,7 @@ func (m *AppMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *ContactAddAliasKey) Marshal() (dAtA []byte, err error) { +func (m *ContactAliasKeyAdded) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -12200,12 +12203,12 @@ func (m *ContactAddAliasKey) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ContactAddAliasKey) MarshalTo(dAtA []byte) (int, error) { +func (m *ContactAliasKeyAdded) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ContactAddAliasKey) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ContactAliasKeyAdded) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -12231,7 +12234,7 @@ func (m *ContactAddAliasKey) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *GroupAddMemberDevice) Marshal() (dAtA []byte, err error) { +func (m *GroupMemberDeviceAdded) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -12241,12 +12244,12 @@ func (m *GroupAddMemberDevice) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *GroupAddMemberDevice) MarshalTo(dAtA []byte) (int, error) { +func (m *GroupMemberDeviceAdded) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *GroupAddMemberDevice) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *GroupMemberDeviceAdded) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -12318,7 +12321,7 @@ func (m *DeviceChainKey) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *GroupAddDeviceChainKey) Marshal() (dAtA []byte, err error) { +func (m *GroupDeviceChainKeyAdded) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -12328,12 +12331,12 @@ func (m *GroupAddDeviceChainKey) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *GroupAddDeviceChainKey) MarshalTo(dAtA []byte) (int, error) { +func (m *GroupDeviceChainKeyAdded) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *GroupAddDeviceChainKey) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *GroupDeviceChainKeyAdded) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -12366,7 +12369,7 @@ func (m *GroupAddDeviceChainKey) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *MultiMemberGroupAddAliasResolver) Marshal() (dAtA []byte, err error) { +func (m *MultiMemberGroupAliasResolverAdded) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -12376,12 +12379,12 @@ func (m *MultiMemberGroupAddAliasResolver) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MultiMemberGroupAddAliasResolver) MarshalTo(dAtA []byte) (int, error) { +func (m *MultiMemberGroupAliasResolverAdded) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MultiMemberGroupAddAliasResolver) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MultiMemberGroupAliasResolverAdded) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -12414,7 +12417,7 @@ func (m *MultiMemberGroupAddAliasResolver) MarshalToSizedBuffer(dAtA []byte) (in return len(dAtA) - i, nil } -func (m *MultiMemberGrantAdminRole) Marshal() (dAtA []byte, err error) { +func (m *MultiMemberGroupAdminRoleGranted) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -12424,12 +12427,12 @@ func (m *MultiMemberGrantAdminRole) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MultiMemberGrantAdminRole) MarshalTo(dAtA []byte) (int, error) { +func (m *MultiMemberGroupAdminRoleGranted) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MultiMemberGrantAdminRole) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MultiMemberGroupAdminRoleGranted) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -12455,7 +12458,7 @@ func (m *MultiMemberGrantAdminRole) MarshalToSizedBuffer(dAtA []byte) (int, erro return len(dAtA) - i, nil } -func (m *MultiMemberInitialMember) Marshal() (dAtA []byte, err error) { +func (m *MultiMemberGroupInitialMemberAnnounced) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -12465,12 +12468,12 @@ func (m *MultiMemberInitialMember) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MultiMemberInitialMember) MarshalTo(dAtA []byte) (int, error) { +func (m *MultiMemberGroupInitialMemberAnnounced) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MultiMemberInitialMember) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MultiMemberGroupInitialMemberAnnounced) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -12767,7 +12770,7 @@ func (m *AccountContactRequestReferenceReset) MarshalToSizedBuffer(dAtA []byte) return len(dAtA) - i, nil } -func (m *AccountContactRequestEnqueued) Marshal() (dAtA []byte, err error) { +func (m *AccountContactRequestOutgoingEnqueued) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -12777,12 +12780,12 @@ func (m *AccountContactRequestEnqueued) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *AccountContactRequestEnqueued) MarshalTo(dAtA []byte) (int, error) { +func (m *AccountContactRequestOutgoingEnqueued) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *AccountContactRequestEnqueued) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *AccountContactRequestOutgoingEnqueued) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -12827,7 +12830,7 @@ func (m *AccountContactRequestEnqueued) MarshalToSizedBuffer(dAtA []byte) (int, return len(dAtA) - i, nil } -func (m *AccountContactRequestSent) Marshal() (dAtA []byte, err error) { +func (m *AccountContactRequestOutgoingSent) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -12837,12 +12840,12 @@ func (m *AccountContactRequestSent) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *AccountContactRequestSent) MarshalTo(dAtA []byte) (int, error) { +func (m *AccountContactRequestOutgoingSent) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *AccountContactRequestSent) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *AccountContactRequestOutgoingSent) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -12868,7 +12871,7 @@ func (m *AccountContactRequestSent) MarshalToSizedBuffer(dAtA []byte) (int, erro return len(dAtA) - i, nil } -func (m *AccountContactRequestReceived) Marshal() (dAtA []byte, err error) { +func (m *AccountContactRequestIncomingReceived) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -12878,12 +12881,12 @@ func (m *AccountContactRequestReceived) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *AccountContactRequestReceived) MarshalTo(dAtA []byte) (int, error) { +func (m *AccountContactRequestIncomingReceived) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *AccountContactRequestReceived) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *AccountContactRequestIncomingReceived) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -12923,7 +12926,7 @@ func (m *AccountContactRequestReceived) MarshalToSizedBuffer(dAtA []byte) (int, return len(dAtA) - i, nil } -func (m *AccountContactRequestDiscarded) Marshal() (dAtA []byte, err error) { +func (m *AccountContactRequestIncomingDiscarded) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -12933,12 +12936,12 @@ func (m *AccountContactRequestDiscarded) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *AccountContactRequestDiscarded) MarshalTo(dAtA []byte) (int, error) { +func (m *AccountContactRequestIncomingDiscarded) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *AccountContactRequestDiscarded) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *AccountContactRequestIncomingDiscarded) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -12964,7 +12967,7 @@ func (m *AccountContactRequestDiscarded) MarshalToSizedBuffer(dAtA []byte) (int, return len(dAtA) - i, nil } -func (m *AccountContactRequestAccepted) Marshal() (dAtA []byte, err error) { +func (m *AccountContactRequestIncomingAccepted) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -12974,12 +12977,12 @@ func (m *AccountContactRequestAccepted) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *AccountContactRequestAccepted) MarshalTo(dAtA []byte) (int, error) { +func (m *AccountContactRequestIncomingAccepted) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *AccountContactRequestAccepted) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *AccountContactRequestIncomingAccepted) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -19716,7 +19719,7 @@ func (m *EventContext) Size() (n int) { return n } -func (m *AppMetadata) Size() (n int) { +func (m *GroupMetadataPayloadSent) Size() (n int) { if m == nil { return 0 } @@ -19736,7 +19739,7 @@ func (m *AppMetadata) Size() (n int) { return n } -func (m *ContactAddAliasKey) Size() (n int) { +func (m *ContactAliasKeyAdded) Size() (n int) { if m == nil { return 0 } @@ -19756,7 +19759,7 @@ func (m *ContactAddAliasKey) Size() (n int) { return n } -func (m *GroupAddMemberDevice) Size() (n int) { +func (m *GroupMemberDeviceAdded) Size() (n int) { if m == nil { return 0 } @@ -19799,7 +19802,7 @@ func (m *DeviceChainKey) Size() (n int) { return n } -func (m *GroupAddDeviceChainKey) Size() (n int) { +func (m *GroupDeviceChainKeyAdded) Size() (n int) { if m == nil { return 0 } @@ -19823,7 +19826,7 @@ func (m *GroupAddDeviceChainKey) Size() (n int) { return n } -func (m *MultiMemberGroupAddAliasResolver) Size() (n int) { +func (m *MultiMemberGroupAliasResolverAdded) Size() (n int) { if m == nil { return 0 } @@ -19847,7 +19850,7 @@ func (m *MultiMemberGroupAddAliasResolver) Size() (n int) { return n } -func (m *MultiMemberGrantAdminRole) Size() (n int) { +func (m *MultiMemberGroupAdminRoleGranted) Size() (n int) { if m == nil { return 0 } @@ -19867,7 +19870,7 @@ func (m *MultiMemberGrantAdminRole) Size() (n int) { return n } -func (m *MultiMemberInitialMember) Size() (n int) { +func (m *MultiMemberGroupInitialMemberAnnounced) Size() (n int) { if m == nil { return 0 } @@ -20015,7 +20018,7 @@ func (m *AccountContactRequestReferenceReset) Size() (n int) { return n } -func (m *AccountContactRequestEnqueued) Size() (n int) { +func (m *AccountContactRequestOutgoingEnqueued) Size() (n int) { if m == nil { return 0 } @@ -20043,7 +20046,7 @@ func (m *AccountContactRequestEnqueued) Size() (n int) { return n } -func (m *AccountContactRequestSent) Size() (n int) { +func (m *AccountContactRequestOutgoingSent) Size() (n int) { if m == nil { return 0 } @@ -20063,7 +20066,7 @@ func (m *AccountContactRequestSent) Size() (n int) { return n } -func (m *AccountContactRequestReceived) Size() (n int) { +func (m *AccountContactRequestIncomingReceived) Size() (n int) { if m == nil { return 0 } @@ -20091,7 +20094,7 @@ func (m *AccountContactRequestReceived) Size() (n int) { return n } -func (m *AccountContactRequestDiscarded) Size() (n int) { +func (m *AccountContactRequestIncomingDiscarded) Size() (n int) { if m == nil { return 0 } @@ -20111,7 +20114,7 @@ func (m *AccountContactRequestDiscarded) Size() (n int) { return n } -func (m *AccountContactRequestAccepted) Size() (n int) { +func (m *AccountContactRequestIncomingAccepted) Size() (n int) { if m == nil { return 0 } @@ -24820,7 +24823,7 @@ func (m *EventContext) Unmarshal(dAtA []byte) error { } return nil } -func (m *AppMetadata) Unmarshal(dAtA []byte) error { +func (m *GroupMetadataPayloadSent) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -24843,10 +24846,10 @@ func (m *AppMetadata) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AppMetadata: wiretype end group for non-group") + return fmt.Errorf("proto: GroupMetadataPayloadSent: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AppMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GroupMetadataPayloadSent: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -24939,7 +24942,7 @@ func (m *AppMetadata) Unmarshal(dAtA []byte) error { } return nil } -func (m *ContactAddAliasKey) Unmarshal(dAtA []byte) error { +func (m *ContactAliasKeyAdded) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -24962,10 +24965,10 @@ func (m *ContactAddAliasKey) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ContactAddAliasKey: wiretype end group for non-group") + return fmt.Errorf("proto: ContactAliasKeyAdded: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ContactAddAliasKey: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ContactAliasKeyAdded: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -25058,7 +25061,7 @@ func (m *ContactAddAliasKey) Unmarshal(dAtA []byte) error { } return nil } -func (m *GroupAddMemberDevice) Unmarshal(dAtA []byte) error { +func (m *GroupMemberDeviceAdded) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -25081,10 +25084,10 @@ func (m *GroupAddMemberDevice) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GroupAddMemberDevice: wiretype end group for non-group") + return fmt.Errorf("proto: GroupMemberDeviceAdded: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GroupAddMemberDevice: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GroupMemberDeviceAdded: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -25315,7 +25318,7 @@ func (m *DeviceChainKey) Unmarshal(dAtA []byte) error { } return nil } -func (m *GroupAddDeviceChainKey) Unmarshal(dAtA []byte) error { +func (m *GroupDeviceChainKeyAdded) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -25338,10 +25341,10 @@ func (m *GroupAddDeviceChainKey) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GroupAddDeviceChainKey: wiretype end group for non-group") + return fmt.Errorf("proto: GroupDeviceChainKeyAdded: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GroupAddDeviceChainKey: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GroupDeviceChainKeyAdded: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -25468,7 +25471,7 @@ func (m *GroupAddDeviceChainKey) Unmarshal(dAtA []byte) error { } return nil } -func (m *MultiMemberGroupAddAliasResolver) Unmarshal(dAtA []byte) error { +func (m *MultiMemberGroupAliasResolverAdded) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -25491,10 +25494,10 @@ func (m *MultiMemberGroupAddAliasResolver) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MultiMemberGroupAddAliasResolver: wiretype end group for non-group") + return fmt.Errorf("proto: MultiMemberGroupAliasResolverAdded: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MultiMemberGroupAddAliasResolver: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MultiMemberGroupAliasResolverAdded: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -25621,7 +25624,7 @@ func (m *MultiMemberGroupAddAliasResolver) Unmarshal(dAtA []byte) error { } return nil } -func (m *MultiMemberGrantAdminRole) Unmarshal(dAtA []byte) error { +func (m *MultiMemberGroupAdminRoleGranted) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -25644,10 +25647,10 @@ func (m *MultiMemberGrantAdminRole) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MultiMemberGrantAdminRole: wiretype end group for non-group") + return fmt.Errorf("proto: MultiMemberGroupAdminRoleGranted: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MultiMemberGrantAdminRole: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MultiMemberGroupAdminRoleGranted: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -25740,7 +25743,7 @@ func (m *MultiMemberGrantAdminRole) Unmarshal(dAtA []byte) error { } return nil } -func (m *MultiMemberInitialMember) Unmarshal(dAtA []byte) error { +func (m *MultiMemberGroupInitialMemberAnnounced) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -25763,10 +25766,10 @@ func (m *MultiMemberInitialMember) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MultiMemberInitialMember: wiretype end group for non-group") + return fmt.Errorf("proto: MultiMemberGroupInitialMemberAnnounced: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MultiMemberInitialMember: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MultiMemberGroupInitialMemberAnnounced: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -26592,7 +26595,7 @@ func (m *AccountContactRequestReferenceReset) Unmarshal(dAtA []byte) error { } return nil } -func (m *AccountContactRequestEnqueued) Unmarshal(dAtA []byte) error { +func (m *AccountContactRequestOutgoingEnqueued) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -26615,10 +26618,10 @@ func (m *AccountContactRequestEnqueued) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AccountContactRequestEnqueued: wiretype end group for non-group") + return fmt.Errorf("proto: AccountContactRequestOutgoingEnqueued: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AccountContactRequestEnqueued: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AccountContactRequestOutgoingEnqueued: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -26781,7 +26784,7 @@ func (m *AccountContactRequestEnqueued) Unmarshal(dAtA []byte) error { } return nil } -func (m *AccountContactRequestSent) Unmarshal(dAtA []byte) error { +func (m *AccountContactRequestOutgoingSent) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -26804,10 +26807,10 @@ func (m *AccountContactRequestSent) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AccountContactRequestSent: wiretype end group for non-group") + return fmt.Errorf("proto: AccountContactRequestOutgoingSent: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AccountContactRequestSent: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AccountContactRequestOutgoingSent: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -26900,7 +26903,7 @@ func (m *AccountContactRequestSent) Unmarshal(dAtA []byte) error { } return nil } -func (m *AccountContactRequestReceived) Unmarshal(dAtA []byte) error { +func (m *AccountContactRequestIncomingReceived) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -26923,10 +26926,10 @@ func (m *AccountContactRequestReceived) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AccountContactRequestReceived: wiretype end group for non-group") + return fmt.Errorf("proto: AccountContactRequestIncomingReceived: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AccountContactRequestReceived: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AccountContactRequestIncomingReceived: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -27087,7 +27090,7 @@ func (m *AccountContactRequestReceived) Unmarshal(dAtA []byte) error { } return nil } -func (m *AccountContactRequestDiscarded) Unmarshal(dAtA []byte) error { +func (m *AccountContactRequestIncomingDiscarded) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -27110,10 +27113,10 @@ func (m *AccountContactRequestDiscarded) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AccountContactRequestDiscarded: wiretype end group for non-group") + return fmt.Errorf("proto: AccountContactRequestIncomingDiscarded: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AccountContactRequestDiscarded: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AccountContactRequestIncomingDiscarded: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -27206,7 +27209,7 @@ func (m *AccountContactRequestDiscarded) Unmarshal(dAtA []byte) error { } return nil } -func (m *AccountContactRequestAccepted) Unmarshal(dAtA []byte) error { +func (m *AccountContactRequestIncomingAccepted) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -27229,10 +27232,10 @@ func (m *AccountContactRequestAccepted) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AccountContactRequestAccepted: wiretype end group for non-group") + return fmt.Errorf("proto: AccountContactRequestIncomingAccepted: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AccountContactRequestAccepted: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AccountContactRequestIncomingAccepted: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: diff --git a/pkg/testutil/filters.go b/pkg/testutil/filters.go index bbec6de2..9d1cdfc4 100644 --- a/pkg/testutil/filters.go +++ b/pkg/testutil/filters.go @@ -6,10 +6,10 @@ import ( "berty.tech/weshnet/pkg/protocoltypes" ) -func TestFilterAppMetadata(t *testing.T, events <-chan *protocoltypes.GroupMetadataEvent) []*protocoltypes.AppMetadata { +func TestFilterGroupMetadataPayloadSent(t *testing.T, events <-chan *protocoltypes.GroupMetadataEvent) []*protocoltypes.GroupMetadataPayloadSent { t.Helper() - out := []*protocoltypes.AppMetadata(nil) + out := []*protocoltypes.GroupMetadataPayloadSent(nil) for evt := range events { if evt == nil { @@ -20,7 +20,7 @@ func TestFilterAppMetadata(t *testing.T, events <-chan *protocoltypes.GroupMetad continue } - m := &protocoltypes.AppMetadata{} + m := &protocoltypes.GroupMetadataPayloadSent{} if err := m.Unmarshal(evt.Event); err != nil { continue } diff --git a/scenario_test.go b/scenario_test.go index de9b1b2c..09c2349c 100644 --- a/scenario_test.go +++ b/scenario_test.go @@ -570,7 +570,7 @@ func addAsContact(ctx context.Context, t *testing.T, senders, receivers []*weshn continue } - req := &protocoltypes.AccountContactRequestReceived{} + req := &protocoltypes.AccountContactRequestIncomingReceived{} err = req.Unmarshal(evt.Event) require.NoError(t, err) diff --git a/store_metadata.go b/store_metadata.go index 920196a6..bf0d4bf2 100644 --- a/store_metadata.go +++ b/store_metadata.go @@ -167,7 +167,7 @@ func MetadataStoreAddDeviceToGroup(ctx context.Context, m *MetadataStore, g *pro return nil, errcode.ErrCryptoSignature.Wrap(err) } - event := &protocoltypes.GroupAddMemberDevice{ + event := &protocoltypes.GroupMemberDeviceAdded{ MemberPK: member, DevicePK: device, MemberSig: memberSig, @@ -216,7 +216,7 @@ func MetadataStoreSendSecret(ctx context.Context, m *MetadataStore, g *protocolt return nil, errcode.ErrSerialization.Wrap(err) } - event := &protocoltypes.GroupAddDeviceChainKey{ + event := &protocoltypes.GroupDeviceChainKeyAdded{ DevicePK: devicePKRaw, DestMemberPK: memberPKRaw, Payload: encryptedSecret, @@ -235,7 +235,7 @@ func (m *MetadataStore) ClaimGroupOwnership(ctx context.Context, groupSK crypto. return nil, errcode.ErrGroupInvalidType } - event := &protocoltypes.MultiMemberInitialMember{ + event := &protocoltypes.MultiMemberGroupInitialMemberAnnounced{ MemberPK: m.devicePublicKeyRaw, } @@ -588,7 +588,7 @@ func (m *MetadataStore) ContactRequestOutgoingEnqueue(ctx context.Context, conta return m.ContactRequestOutgoingSent(ctx, pk) } - op, err := m.attributeSignAndAddEvent(ctx, &protocoltypes.AccountContactRequestEnqueued{ + op, err := m.attributeSignAndAddEvent(ctx, &protocoltypes.AccountContactRequestOutgoingEnqueued{ Contact: &protocoltypes.ShareableContact{ PK: contact.PK, PublicRendezvousSeed: contact.PublicRendezvousSeed, @@ -624,7 +624,7 @@ func (m *MetadataStore) ContactRequestOutgoingSent(ctx context.Context, pk crypt return nil, errcode.ErrInvalidInput } - return m.contactAction(ctx, pk, &protocoltypes.AccountContactRequestSent{}, protocoltypes.EventTypeAccountContactRequestOutgoingSent) + return m.contactAction(ctx, pk, &protocoltypes.AccountContactRequestOutgoingSent{}, protocoltypes.EventTypeAccountContactRequestOutgoingSent) } // ContactRequestIncomingReceived indicates the payload includes that the deviceKeystore has received a contact request @@ -670,7 +670,7 @@ func (m *MetadataStore) ContactRequestIncomingReceived(ctx context.Context, cont return nil, errcode.ErrInvalidInput } - return m.attributeSignAndAddEvent(ctx, &protocoltypes.AccountContactRequestReceived{ + return m.attributeSignAndAddEvent(ctx, &protocoltypes.AccountContactRequestIncomingReceived{ ContactPK: contact.PK, ContactRendezvousSeed: contact.PublicRendezvousSeed, ContactMetadata: contact.Metadata, @@ -687,7 +687,7 @@ func (m *MetadataStore) ContactRequestIncomingDiscard(ctx context.Context, pk cr return nil, errcode.ErrInvalidInput } - return m.contactAction(ctx, pk, &protocoltypes.AccountContactRequestDiscarded{}, protocoltypes.EventTypeAccountContactRequestIncomingDiscarded) + return m.contactAction(ctx, pk, &protocoltypes.AccountContactRequestIncomingDiscarded{}, protocoltypes.EventTypeAccountContactRequestIncomingDiscarded) } // ContactRequestIncomingAccept indicates the payload includes that the deviceKeystore has accepted a contact request @@ -700,7 +700,7 @@ func (m *MetadataStore) ContactRequestIncomingAccept(ctx context.Context, pk cry return nil, errcode.ErrInvalidInput } - return m.contactAction(ctx, pk, &protocoltypes.AccountContactRequestAccepted{}, protocoltypes.EventTypeAccountContactRequestIncomingAccepted) + return m.contactAction(ctx, pk, &protocoltypes.AccountContactRequestIncomingAccepted{}, protocoltypes.EventTypeAccountContactRequestIncomingAccepted) } // ContactBlock indicates the payload includes that the deviceKeystore has blocked a contact @@ -749,7 +749,7 @@ func (m *MetadataStore) ContactSendAliasKey(ctx context.Context) (operation.Oper return nil, errcode.ErrInternal.Wrap(err) } - return m.attributeSignAndAddEvent(ctx, &protocoltypes.ContactAddAliasKey{ + return m.attributeSignAndAddEvent(ctx, &protocoltypes.ContactAliasKeyAdded{ AliasPK: alias, }, protocoltypes.EventTypeContactAliasKeyAdded) } @@ -762,14 +762,14 @@ func (m *MetadataStore) SendAliasProof(ctx context.Context) (operation.Operation resolver := []byte(nil) // TODO: should be a hmac value of something for quicker searches proof := []byte(nil) // TODO: should be a signed value of something - return m.attributeSignAndAddEvent(ctx, &protocoltypes.MultiMemberGroupAddAliasResolver{ + return m.attributeSignAndAddEvent(ctx, &protocoltypes.MultiMemberGroupAliasResolverAdded{ AliasResolver: resolver, AliasProof: proof, }, protocoltypes.EventTypeMultiMemberGroupAliasResolverAdded) } func (m *MetadataStore) SendAppMetadata(ctx context.Context, message []byte) (operation.Operation, error) { - return m.attributeSignAndAddEvent(ctx, &protocoltypes.AppMetadata{ + return m.attributeSignAndAddEvent(ctx, &protocoltypes.GroupMetadataPayloadSent{ Message: message, }, protocoltypes.EventTypeGroupMetadataPayloadSent) } diff --git a/store_metadata_index.go b/store_metadata_index.go index e6d887c5..8e869892 100644 --- a/store_metadata_index.go +++ b/store_metadata_index.go @@ -38,7 +38,7 @@ type metadataStoreIndex struct { contactRequestEnabled *bool eventHandlers map[protocoltypes.EventType][]func(event proto.Message) error postIndexActions []func() error - eventsContactAddAliasKey []*protocoltypes.ContactAddAliasKey + eventsContactAddAliasKey []*protocoltypes.ContactAliasKeyAdded ownAliasKeySent bool otherAliasKey []byte group *protocoltypes.Group @@ -131,8 +131,8 @@ func (m *metadataStoreIndex) UpdateIndex(log ipfslog.Log, _ []ipfslog.Entry) err return nil } -func (m *metadataStoreIndex) handleGroupAddMemberDevice(event proto.Message) error { - e, ok := event.(*protocoltypes.GroupAddMemberDevice) +func (m *metadataStoreIndex) handleGroupMemberDeviceAdded(event proto.Message) error { + e, ok := event.(*protocoltypes.GroupMemberDeviceAdded) if !ok { return errcode.ErrInvalidInput } @@ -159,8 +159,8 @@ func (m *metadataStoreIndex) handleGroupAddMemberDevice(event proto.Message) err return nil } -func (m *metadataStoreIndex) handleGroupAddDeviceChainKey(event proto.Message) error { - e, ok := event.(*protocoltypes.GroupAddDeviceChainKey) +func (m *metadataStoreIndex) handleGroupDeviceChainKeyAdded(event proto.Message) error { + e, ok := event.(*protocoltypes.GroupDeviceChainKeyAdded) if !ok { return errcode.ErrInvalidInput } @@ -435,7 +435,7 @@ func (m *metadataStoreIndex) registerContactFromGroupPK(ac *AccountContact) erro } func (m *metadataStoreIndex) handleContactRequestOutgoingEnqueued(event proto.Message) error { - evt, ok := event.(*protocoltypes.AccountContactRequestEnqueued) + evt, ok := event.(*protocoltypes.AccountContactRequestOutgoingEnqueued) if ko := !ok || evt.Contact == nil; ko { return errcode.ErrInvalidInput } @@ -472,7 +472,7 @@ func (m *metadataStoreIndex) handleContactRequestOutgoingEnqueued(event proto.Me } func (m *metadataStoreIndex) handleContactRequestOutgoingSent(event proto.Message) error { - evt, ok := event.(*protocoltypes.AccountContactRequestSent) + evt, ok := event.(*protocoltypes.AccountContactRequestOutgoingSent) if !ok { return errcode.ErrInvalidInput } @@ -495,7 +495,7 @@ func (m *metadataStoreIndex) handleContactRequestOutgoingSent(event proto.Messag } func (m *metadataStoreIndex) handleContactRequestIncomingReceived(event proto.Message) error { - evt, ok := event.(*protocoltypes.AccountContactRequestReceived) + evt, ok := event.(*protocoltypes.AccountContactRequestIncomingReceived) if !ok { return errcode.ErrInvalidInput } @@ -528,7 +528,7 @@ func (m *metadataStoreIndex) handleContactRequestIncomingReceived(event proto.Me } func (m *metadataStoreIndex) handleContactRequestIncomingDiscarded(event proto.Message) error { - evt, ok := event.(*protocoltypes.AccountContactRequestDiscarded) + evt, ok := event.(*protocoltypes.AccountContactRequestIncomingDiscarded) if !ok { return errcode.ErrInvalidInput } @@ -551,7 +551,7 @@ func (m *metadataStoreIndex) handleContactRequestIncomingDiscarded(event proto.M } func (m *metadataStoreIndex) handleContactRequestIncomingAccepted(event proto.Message) error { - evt, ok := event.(*protocoltypes.AccountContactRequestAccepted) + evt, ok := event.(*protocoltypes.AccountContactRequestIncomingAccepted) if !ok { return errcode.ErrInvalidInput } @@ -620,7 +620,7 @@ func (m *metadataStoreIndex) handleContactUnblocked(event proto.Message) error { } func (m *metadataStoreIndex) handleContactAliasKeyAdded(event proto.Message) error { - evt, ok := event.(*protocoltypes.ContactAddAliasKey) + evt, ok := event.(*protocoltypes.ContactAliasKeyAdded) if !ok { return errcode.ErrInvalidInput } @@ -674,7 +674,7 @@ func (m *metadataStoreIndex) handleAccountServiceTokenRemoved(event proto.Messag } func (m *metadataStoreIndex) handleMultiMemberInitialMember(event proto.Message) error { - e, ok := event.(*protocoltypes.MultiMemberInitialMember) + e, ok := event.(*protocoltypes.MultiMemberGroupInitialMemberAnnounced) if !ok { return errcode.ErrInvalidInput } @@ -926,8 +926,8 @@ func newMetadataIndex(ctx context.Context, g *protocoltypes.Group, md secretstor protocoltypes.EventTypeAccountGroupJoined: {m.handleGroupJoined}, protocoltypes.EventTypeAccountGroupLeft: {m.handleGroupLeft}, protocoltypes.EventTypeContactAliasKeyAdded: {m.handleContactAliasKeyAdded}, - protocoltypes.EventTypeGroupDeviceChainKeyAdded: {m.handleGroupAddDeviceChainKey}, - protocoltypes.EventTypeGroupMemberDeviceAdded: {m.handleGroupAddMemberDevice}, + protocoltypes.EventTypeGroupDeviceChainKeyAdded: {m.handleGroupDeviceChainKeyAdded}, + protocoltypes.EventTypeGroupMemberDeviceAdded: {m.handleGroupMemberDeviceAdded}, protocoltypes.EventTypeMultiMemberGroupAdminRoleGranted: {m.handleMultiMemberGrantAdminRole}, protocoltypes.EventTypeMultiMemberGroupInitialMemberAnnounced: {m.handleMultiMemberInitialMember}, protocoltypes.EventTypeAccountServiceTokenAdded: {m.handleAccountServiceTokenAdded}, diff --git a/testing.go b/testing.go index 03e02ad2..27e6c97a 100644 --- a/testing.go +++ b/testing.go @@ -677,7 +677,7 @@ func isEventAddSecretTargetedToMember(ownRawPK []byte, evt *protocoltypes.GroupM return nil, nil } - sec := &protocoltypes.GroupAddDeviceChainKey{} + sec := &protocoltypes.GroupDeviceChainKeyAdded{} err := sec.Unmarshal(evt.Event) if err != nil { return nil, err