diff --git a/api/messengertypes.proto b/api/messengertypes.proto index ab235df341..297282e589 100644 --- a/api/messengertypes.proto +++ b/api/messengertypes.proto @@ -34,9 +34,6 @@ service MessengerService { // SendContactRequest takes the payload received from ParseDeepLink and send a contact request using the Berty Protocol. rpc SendContactRequest(SendContactRequest.Request) returns (SendContactRequest.Reply); - // SendReplyOptions sends a list of prefilled response options to a group. - rpc SendReplyOptions (SendReplyOptions.Request) returns (SendReplyOptions.Reply); - // SystemInfo returns runtime information. rpc SystemInfo(SystemInfo.Request) returns (SystemInfo.Reply); @@ -76,15 +73,6 @@ service MessengerService { // InstanceExportData exports instance data rpc InstanceExportData (InstanceExportData.Request) returns (stream InstanceExportData.Reply); - // MediaPrepare allows to upload a file and returns a cid to attach to messages - rpc MediaPrepare (stream MediaPrepare.Request) returns (MediaPrepare.Reply); - - // MediaRetrieve allows to download a file attached to a message - rpc MediaRetrieve (MediaRetrieve.Request) returns (stream MediaRetrieve.Reply); - - // MediaGetRelated Gets previous/next media to be played after current - rpc MediaGetRelated(MediaGetRelated.Request) returns (MediaGetRelated.Reply); - // MessageSearch rpc MessageSearch (MessageSearch.Request) returns (MessageSearch.Reply); @@ -107,9 +95,6 @@ service MessengerService { // PushReceive handles a push payload, decrypts it if possible, adds it to the local store rpc PushReceive(PushReceive.Request) returns (PushReceive.Reply); - - // InteractionReactionsForEmoji returns a list of reactions on an interaction for a specific emoji - rpc InteractionReactionsForEmoji(InteractionReactionsForEmoji.Request) returns (InteractionReactionsForEmoji.Reply); } message PaginatedInteractionsOptions { @@ -126,7 +111,7 @@ message PaginatedInteractionsOptions { bool oldest_to_newest = 4; // exclude_medias Medias are included by default - bool exclude_medias = 5; + reserved 5; // bool exclude_medias = 5; // no_bulk should interactions be via atomic update in the stream bool no_bulk = 6; @@ -305,14 +290,6 @@ message SendContactRequest { message Reply {} } -message SendReplyOptions { - message Request { - bytes group_pk = 1 [(gogoproto.customname) = "GroupPK"]; - AppMessage.ReplyOptions options = 2; - } - message Reply {} -} - message BertyID { bytes public_rendezvous_seed = 1; bytes account_pk = 2 [(gogoproto.customname) = "AccountPK"]; @@ -329,47 +306,35 @@ message AppMessage { Type type = 1; bytes payload = 2; int64 sent_date = 3 [(gogoproto.jsontag) = "sentDate"]; - repeated Media medias = 4; + reserved 4; // repeated Media medias = 4; string target_cid = 5 [(gogoproto.customname) = "TargetCID"]; enum Type { Undefined = 0; TypeUserMessage = 1; - TypeUserReaction = 2; + reserved 2; // TypeUserReaction = 2; TypeGroupInvitation = 3; TypeSetGroupInfo = 4; TypeSetUserInfo = 5; TypeAcknowledge = 6; - TypeReplyOptions = 7; + reserved 7; // TypeReplyOptions } message UserMessage { string body = 1; } - message UserReaction { - bool state = 1; - string emoji = 2; - } message GroupInvitation { string link = 2; // TODO: optimize message size } message SetGroupInfo { string display_name = 1; - string avatar_cid = 2; // TODO: optimize message size + reserved 2; // string avatar_cid = 2; // TODO: optimize message size } message SetUserInfo { string display_name = 1; - string avatar_cid = 2 [(gogoproto.customname) = "AvatarCID"]; // TODO: optimize message size + reserved 2; // string avatar_cid = 2 [(gogoproto.customname) = "AvatarCID"]; // TODO: optimize message size } message Acknowledge { } - message ReplyOptions { - repeated ReplyOption options = 1; - } -} - -message ReplyOption { - string display = 1; - string payload = 2; } message SystemInfo { @@ -395,9 +360,8 @@ message SystemInfo { int64 devices = 6; int64 service_tokens = 7; int64 conversation_replication_info = 8; - int64 reactions = 9; int64 metadata_events = 10; - int64 medias = 11; + reserved 11; // int64 medias = 11; int64 shared_push_tokens = 12; // older, more recent } @@ -422,7 +386,7 @@ message Account { string link = 3; repeated ServiceToken service_tokens = 5 [(gogoproto.moretags) = "gorm:\"foreignKey:AccountPK\""]; bool replicate_new_groups_automatically = 6 [(gogoproto.moretags) = "gorm:\"default:true\""]; - string avatar_cid = 7 [(gogoproto.moretags) = "gorm:\"column:avatar_cid\"", (gogoproto.customname) = "AvatarCID"]; + reserved 7; // string avatar_cid = 7 [(gogoproto.moretags) = "gorm:\"column:avatar_cid\"", (gogoproto.customname) = "AvatarCID"]; bool auto_share_push_token_flag = 8; bytes device_push_token = 9; bytes device_push_server = 10; @@ -447,12 +411,6 @@ message MetadataEvent { } message Interaction { - message ReactionView { - string emoji = 1; - bool own_state = 2; - uint64 count = 3; - } - string cid = 1 [(gogoproto.moretags) = "gorm:\"primaryKey;column:cid\"", (gogoproto.customname) = "CID"]; AppMessage.Type type = 2 [(gogoproto.moretags) = "gorm:\"index\""]; string member_public_key = 7; @@ -465,44 +423,18 @@ message Interaction { int64 sent_date = 9 [(gogoproto.moretags) = "gorm:\"index\""]; bool acknowledged = 10; string target_cid = 13 [(gogoproto.moretags) = "gorm:\"index;column:target_cid\"", (gogoproto.customname) = "TargetCID"]; - repeated Media medias = 15; - repeated ReactionView reactions = 16 [(gogoproto.moretags) = "gorm:\"-\""]; // specific to client model + reserved 15; // repeated Media medias = 15; + reserved 16; // repeated ReactionView reactions = 16 [(gogoproto.moretags) = "gorm:\"-\""]; // specific to client model bool out_of_store_message = 17; } -message Media { - string cid = 1 [(gogoproto.moretags) = "gorm:\"primaryKey;column:cid\"", (gogoproto.customname) = "CID"]; - string mime_type = 2; - string filename = 3; - string display_name = 4; - bytes metadata_bytes = 6; - - // these should not be sent on the bertyprotocol layer - string interaction_cid = 100 [(gogoproto.moretags) = "gorm:\"index;column:interaction_cid\"", (gogoproto.customname) = "InteractionCID"]; - State state = 103; - enum State { - StateUnknown = 0; - - // specific to media received - StateNeverDownloaded = 1; - StatePartiallyDownloaded = 2; - StateDownloaded = 3; - StateInCache = 4; - StateInvalidCrypto = 5; - - // specific to media sent - StatePrepared = 100; - StateAttached = 101; - } -} - message Contact { string public_key = 1 [(gogoproto.moretags) = "gorm:\"primaryKey\""]; string conversation_public_key = 2; Conversation conversation = 3; State state = 4; string display_name = 5; - string avatar_cid = 9 [(gogoproto.moretags) = "gorm:\"column:avatar_cid\"", (gogoproto.customname) = "AvatarCID"]; + reserved 9; // string avatar_cid = 9 [(gogoproto.moretags) = "gorm:\"column:avatar_cid\"", (gogoproto.customname) = "AvatarCID"]; int64 created_date = 7; // specific to outgoing requests int64 sent_date = 8; @@ -543,10 +475,10 @@ message Conversation { string account_member_public_key = 11; string local_device_public_key = 12; int64 created_date = 13; - string reply_options_cid = 14 [(gogoproto.moretags) = "gorm:\"column:reply_options_cid\"", (gogoproto.customname) = "ReplyOptionsCID"]; - Interaction reply_options = 15 [(gogoproto.customname) = "ReplyOptions"]; + reserved 14; // string reply_options_cid = 14 [(gogoproto.moretags) = "gorm:\"column:reply_options_cid\"", (gogoproto.customname) = "ReplyOptionsCID"]; + reserved 15; // Interaction reply_options = 15 [(gogoproto.customname) = "ReplyOptions"]; repeated ConversationReplicationInfo replication_info = 16 [(gogoproto.moretags) = "gorm:\"foreignKey:ConversationPublicKey\""]; - string avatar_cid = 17 [(gogoproto.moretags) = "gorm:\"column:avatar_cid\"", (gogoproto.customname) = "AvatarCID"]; + reserved 17; // string avatar_cid = 17 [(gogoproto.moretags) = "gorm:\"column:avatar_cid\"", (gogoproto.customname) = "AvatarCID"]; // info_date is used when SetGroupInfo is called int64 info_date = 18; string shared_push_token_identifier = 19; @@ -565,7 +497,7 @@ message ConversationReplicationInfo { message Member { // Composite primary key string public_key = 1 [(gogoproto.moretags) = "gorm:\"primaryKey\""]; string display_name = 2; - string avatar_cid = 6 [(gogoproto.moretags) = "gorm:\"column:avatar_cid\"", (gogoproto.customname) = "AvatarCID"]; + reserved 6; // string avatar_cid = 6 [(gogoproto.moretags) = "gorm:\"column:avatar_cid\"", (gogoproto.customname) = "AvatarCID"]; string conversation_public_key = 3 [(gogoproto.moretags) = "gorm:\"primaryKey\""]; bool is_me = 9; bool is_creator = 8; @@ -608,7 +540,7 @@ message StreamEvent { TypeMemberUpdated = 8; TypeDeviceUpdated = 9; TypeNotified = 10; - TypeMediaUpdated = 11; + reserved 11; // TypeMediaUpdated = 11; TypeConversationPartialLoad = 12; TypePeerStatusConnected = 13; TypePeerStatusReconnecting = 14; @@ -641,13 +573,10 @@ message StreamEvent { Device device = 1; } message ListEnded {} - message MediaUpdated { - Media media = 1; - } message ConversationPartialLoad { string conversation_pk = 1 [(gogoproto.customname) = "ConversationPK"]; repeated Interaction interactions = 2; - repeated Media medias = 3; + reserved 3; // repeated Media medias = 3; } message Notified { Type type = 1; @@ -744,7 +673,7 @@ message EventStream { message AccountUpdate { message Request { string display_name = 1; - string avatar_cid = 2 [(gogoproto.moretags) = "gorm:\"column:avatar_cid\"", (gogoproto.customname) = "AvatarCID"]; + reserved 2; // string avatar_cid = 2 [(gogoproto.moretags) = "gorm:\"column:avatar_cid\"", (gogoproto.customname) = "AvatarCID"]; } message Reply {} } @@ -783,7 +712,7 @@ message Interact { AppMessage.Type type = 1; bytes payload = 2; string conversation_public_key = 3; - repeated string media_cids = 4; + reserved 4; // repeated string media_cids = 4; string target_cid = 5 [(gogoproto.customname) = "TargetCID"]; bool metadata = 6; } @@ -841,91 +770,6 @@ message LocalConversationState { Conversation.Type type = 4; } -message MediaPrepare { - message Request { - bytes block = 1; - - /* Header data: - ** IMPORTANT: The first request must contain the header data and no block. Header data in following requests will be ignored - */ - - Media info = 2; - string uri = 3; - } - - message Reply { - string cid = 1; - } -} - -message MediaRetrieve { - message Request { - string cid = 1; - } - - message Reply { - bytes block = 1; - - /* Header data: - ** IMPORTANT: The first reply will contain the header data and no block. Header data in following replies will be empty - */ - - Media info = 2; - } -} - -message MediaGetRelated { - message Request { - string cid = 1 [(gogoproto.customname) = "CID"]; - reserved 2; - // bool previous = 2; // TODO: gets previous media instead of next - repeated string mime_types = 3; - repeated string file_names = 4; - } - - message Reply { - Media media = 1; - bool end = 2; - } -} - -enum MediaMetadataType { - MetadataUnknown = 0; - MetadataKeyValue = 1; - MetadataAudioPreview = 2; -} - -message MediaMetadata { - repeated MediaMetadataItem items = 1; -} - -message MediaMetadataItem { - MediaMetadataType metadata_type = 1; - bytes payload = 2; -} - -message MediaMetadataKV { - string key = 1; - string value = 2; -} - -message AudioPreview { - repeated uint32 volume_intensities = 1; - uint32 duration_ms = 2; - string format = 3; - uint32 bitrate = 4; - uint32 sampling_rate = 5; -} - -message Reaction { - string target_cid = 2 [(gogoproto.moretags) = "gorm:\"column:target_cid;primaryKey\"", (gogoproto.customname) = "TargetCID"]; - string member_public_key = 3 [(gogoproto.moretags) = "gorm:\"primaryKey\""]; - string emoji = 4 [(gogoproto.moretags) = "gorm:\"primaryKey\""]; - bool is_mine = 5; - bool state = 6; - int64 state_date = 7; -} - message MessageSearch { message Request { string query = 1; @@ -1010,13 +854,3 @@ message PushTokenSharedForConversation { SharedPushToken push_token = 1; } } - -message InteractionReactionsForEmoji { - message Request { - string interaction_cid = 1 [(gogoproto.customname) = "InteractionCID"]; - string emoji = 2; - } - message Reply { - repeated Reaction reactions = 1; - } -} diff --git a/api/messengertypes.yaml b/api/messengertypes.yaml index 7be35e7ad1..de429a4ad1 100644 --- a/api/messengertypes.yaml +++ b/api/messengertypes.yaml @@ -21,9 +21,6 @@ http: - selector: berty.messenger.v1.MessengerService.SendContactRequest post: /berty.messenger.v1/MessengerService/SendContactRequest body: "*" - - selector: berty.messenger.v1.MessengerService.SendReplyOptions - post: /berty.messenger.v1/MessengerService/SendReplyOptions - body: "*" - selector: berty.messenger.v1.MessengerService.SystemInfo post: /berty.messenger.v1/MessengerService/SystemInfo body: "*" @@ -90,15 +87,6 @@ http: - selector: berty.messenger.v1.MessengerService.InstanceExportData post: /berty.messenger.v1/MessengerService/InstanceExportData body: "*" - - selector: berty.messenger.v1.MessengerService.MediaPrepare - post: /berty.messenger.v1/MessengerService/MediaPrepare - body: "*" - - selector: berty.messenger.v1.MessengerService.MediaRetrieve - post: /berty.messenger.v1/MessengerService/MediaRetrieve - body: "*" - - selector: berty.messenger.v1.MessengerService.MediaGetRelated - post: /berty.messenger.v1/MessengerService/MediaGetRelated - body: "*" - selector: berty.messenger.v1.MessengerService.MessageSearch post: /berty.messenger.v1/MessengerService/MessageSearch body: "*" @@ -123,6 +111,3 @@ http: - selector: berty.messenger.v1.MessengerService.PushReceive post: /berty.messenger.v1/MessengerService/PushReceive body: "*" - - selector: berty.messenger.v1.MessengerService.InteractionReactionsForEmoji - post: /berty.messenger.v1/MessengerService/InteractionReactionsForEmoji - body: "*" diff --git a/api/protocoltypes.proto b/api/protocoltypes.proto index 5b93a9cdfb..180cf1c216 100644 --- a/api/protocoltypes.proto +++ b/api/protocoltypes.proto @@ -118,12 +118,6 @@ service ProtocolService { // PeerList returns a list of P2P peers rpc PeerList(PeerList.Request) returns (PeerList.Reply); - // AttachmentPrepare ... - rpc AttachmentPrepare(stream AttachmentPrepare.Request) returns (AttachmentPrepare.Reply); - - // AttachmentRetrieve returns an attachment data - rpc AttachmentRetrieve(AttachmentRetrieve.Request) returns (stream AttachmentRetrieve.Reply); - // PushReceive handles a push payload, decrypts it if possible rpc PushReceive(PushReceive.Request) returns (PushReceive.Reply); @@ -332,8 +326,7 @@ message GroupEnvelope { // event is encrypted using a symmetric key shared among group members bytes event = 2; - // encrypted_attachment_cids is a list of attachment CIDs encrypted specifically for replication services - repeated bytes encrypted_attachment_cids = 3 [(gogoproto.customname) = "EncryptedAttachmentCIDs"]; + reserved 3; // repeated bytes encrypted_attachment_cids = 3 [(gogoproto.customname) = "EncryptedAttachmentCIDs"]; } // MessageHeaders is used in MessageEnvelope and only readable by invited group members @@ -353,7 +346,7 @@ message MessageHeaders { message ProtocolMetadata { // attachments_secrets is a list of secret keys used retrieve attachments - repeated bytes attachments_secrets = 1; + reserved 1; //repeated bytes attachments_secrets = 1; } // EncryptedMessage is used in MessageEnvelope and only readable by groups members that joined before the message was sent @@ -377,7 +370,7 @@ message MessageEnvelope { bytes nonce = 3; // encrypted_attachment_cids is a list of attachment CIDs encrypted specifically for replication services - repeated bytes encrypted_attachment_cids = 4 [(gogoproto.customname) = "EncryptedAttachmentCIDs"]; + reserved 4; // repeated bytes encrypted_attachment_cids = 4 [(gogoproto.customname) = "EncryptedAttachmentCIDs"]; } // *************************************************************************** @@ -396,7 +389,7 @@ message EventContext { bytes group_pk = 3[(gogoproto.customname) = "GroupPK"]; // attachment_cids is a list of attachment that can be retrieved - repeated bytes attachment_cids = 4 [(gogoproto.customname) = "AttachmentCIDs"]; + reserved 4; // repeated bytes attachment_cids = 4 [(gogoproto.customname) = "AttachmentCIDs"]; } // AppMetadata is an app defined message, accessible to future group members @@ -844,7 +837,7 @@ message AppMetadataSend { bytes payload = 2; // attachment_cids is a list of attachment cids - repeated bytes attachment_cids = 3 [(gogoproto.customname) = "AttachmentCIDs"]; + reserved 3; // repeated bytes attachment_cids = 3 [(gogoproto.customname) = "AttachmentCIDs"]; } message Reply { @@ -861,7 +854,7 @@ message AppMessageSend { bytes payload = 2; // attachment_cids is a list of attachment cids - repeated bytes attachment_cids = 3 [(gogoproto.customname) = "AttachmentCIDs"]; + reserved 3; // repeated bytes attachment_cids = 3 [(gogoproto.customname) = "AttachmentCIDs"]; } message Reply { @@ -1312,37 +1305,6 @@ enum Direction { BiDir = 3; } -message AttachmentPrepare { - message Request { - // block is a plaintext block to append - bytes block = 1; - - /* Header data: - ** IMPORTANT: The first request must contain the header data and no block. Header data in following requests will be ignored - */ - - // disable_encryption tells the protocol to store the file as plain text - bool disable_encryption = 2; - } - - message Reply { - // attachment_cid is the cid of the (encrypted) file - bytes attachment_cid = 1 [(gogoproto.customname) = "AttachmentCID"]; - } -} - -message AttachmentRetrieve { - message Request { - // attachment_cid is the cid of the (encrypted) file - bytes attachment_cid = 1 [(gogoproto.customname) = "AttachmentCID"]; - } - - message Reply { - // block is a plaintext block to append - bytes block = 2; - } -} - // Progress define a generic object that can be used to display a progress bar for long-running actions. message Progress { string state = 1; diff --git a/api/protocoltypes.yaml b/api/protocoltypes.yaml index ee77033aeb..c5dd36c710 100644 --- a/api/protocoltypes.yaml +++ b/api/protocoltypes.yaml @@ -111,12 +111,6 @@ http: - selector: berty.protocol.v1.ProtocolService.PeerList post: /berty.protocol.v1/ProtocolService/PeerList body: "*" - - selector: berty.protocol.v1.ProtocolService.AttachmentPrepare - post: /berty.protocol.v1/ProtocolService/AttachmentPrepare - body: "*" - - selector: berty.protocol.v1.ProtocolService.AttachmentRetrieve - post: /berty.protocol.v1/ProtocolService/AttachmentRetrieve - body: "*" - selector: berty.protocol.v1.ProtocolService.PushReceive post: /berty.protocol.v1/ProtocolService/PushReceive body: "*" diff --git a/api/pushtypes.proto b/api/pushtypes.proto index ea8ce8fc58..30f1c89cf1 100644 --- a/api/pushtypes.proto +++ b/api/pushtypes.proto @@ -99,17 +99,13 @@ message DecryptedPush { enum PushType { Unknown = 0; Message = 1; - Reaction = 2; - Media = 3; - Photo = 4; - Gif = 5; - VoiceMessage = 6; + reserved 2; // Reaction = 2; + reserved 3, 4, 5, 6; // Media, Photo, Gif, VoiceMessage GroupInvitation = 7; ConversationNameChanged = 8; MemberNameChanged = 9; - MemberPictureChanged = 10; + reserved 10; // MemberPictureChanged MemberDetailsChanged = 11; - ReplyOptions = 12; } string account_id = 1 [(gogoproto.customname) = "AccountID"]; diff --git a/docs/apis/messengertypes.md b/docs/apis/messengertypes.md index 33a7eda7a0..9f8cdbe845 100644 --- a/docs/apis/messengertypes.md +++ b/docs/apis/messengertypes.md @@ -17,12 +17,9 @@ - [AppMessage](#berty.messenger.v1.AppMessage) - [AppMessage.Acknowledge](#berty.messenger.v1.AppMessage.Acknowledge) - [AppMessage.GroupInvitation](#berty.messenger.v1.AppMessage.GroupInvitation) - - [AppMessage.ReplyOptions](#berty.messenger.v1.AppMessage.ReplyOptions) - [AppMessage.SetGroupInfo](#berty.messenger.v1.AppMessage.SetGroupInfo) - [AppMessage.SetUserInfo](#berty.messenger.v1.AppMessage.SetUserInfo) - [AppMessage.UserMessage](#berty.messenger.v1.AppMessage.UserMessage) - - [AppMessage.UserReaction](#berty.messenger.v1.AppMessage.UserReaction) - - [AudioPreview](#berty.messenger.v1.AudioPreview) - [BannerQuote](#berty.messenger.v1.BannerQuote) - [BannerQuote.Reply](#berty.messenger.v1.BannerQuote.Reply) - [BannerQuote.Request](#berty.messenger.v1.BannerQuote.Request) @@ -88,28 +85,11 @@ - [Interact.Reply](#berty.messenger.v1.Interact.Reply) - [Interact.Request](#berty.messenger.v1.Interact.Request) - [Interaction](#berty.messenger.v1.Interaction) - - [Interaction.ReactionView](#berty.messenger.v1.Interaction.ReactionView) - - [InteractionReactionsForEmoji](#berty.messenger.v1.InteractionReactionsForEmoji) - - [InteractionReactionsForEmoji.Reply](#berty.messenger.v1.InteractionReactionsForEmoji.Reply) - - [InteractionReactionsForEmoji.Request](#berty.messenger.v1.InteractionReactionsForEmoji.Request) - [ListMemberDevices](#berty.messenger.v1.ListMemberDevices) - [ListMemberDevices.Reply](#berty.messenger.v1.ListMemberDevices.Reply) - [ListMemberDevices.Request](#berty.messenger.v1.ListMemberDevices.Request) - [LocalConversationState](#berty.messenger.v1.LocalConversationState) - [LocalDatabaseState](#berty.messenger.v1.LocalDatabaseState) - - [Media](#berty.messenger.v1.Media) - - [MediaGetRelated](#berty.messenger.v1.MediaGetRelated) - - [MediaGetRelated.Reply](#berty.messenger.v1.MediaGetRelated.Reply) - - [MediaGetRelated.Request](#berty.messenger.v1.MediaGetRelated.Request) - - [MediaMetadata](#berty.messenger.v1.MediaMetadata) - - [MediaMetadataItem](#berty.messenger.v1.MediaMetadataItem) - - [MediaMetadataKV](#berty.messenger.v1.MediaMetadataKV) - - [MediaPrepare](#berty.messenger.v1.MediaPrepare) - - [MediaPrepare.Reply](#berty.messenger.v1.MediaPrepare.Reply) - - [MediaPrepare.Request](#berty.messenger.v1.MediaPrepare.Request) - - [MediaRetrieve](#berty.messenger.v1.MediaRetrieve) - - [MediaRetrieve.Reply](#berty.messenger.v1.MediaRetrieve.Reply) - - [MediaRetrieve.Request](#berty.messenger.v1.MediaRetrieve.Request) - [Member](#berty.messenger.v1.Member) - [MessageSearch](#berty.messenger.v1.MessageSearch) - [MessageSearch.Reply](#berty.messenger.v1.MessageSearch.Reply) @@ -132,20 +112,15 @@ - [PushTokenSharedForConversation](#berty.messenger.v1.PushTokenSharedForConversation) - [PushTokenSharedForConversation.Reply](#berty.messenger.v1.PushTokenSharedForConversation.Reply) - [PushTokenSharedForConversation.Request](#berty.messenger.v1.PushTokenSharedForConversation.Request) - - [Reaction](#berty.messenger.v1.Reaction) - [ReplicationServiceRegisterGroup](#berty.messenger.v1.ReplicationServiceRegisterGroup) - [ReplicationServiceRegisterGroup.Reply](#berty.messenger.v1.ReplicationServiceRegisterGroup.Reply) - [ReplicationServiceRegisterGroup.Request](#berty.messenger.v1.ReplicationServiceRegisterGroup.Request) - [ReplicationSetAutoEnable](#berty.messenger.v1.ReplicationSetAutoEnable) - [ReplicationSetAutoEnable.Reply](#berty.messenger.v1.ReplicationSetAutoEnable.Reply) - [ReplicationSetAutoEnable.Request](#berty.messenger.v1.ReplicationSetAutoEnable.Request) - - [ReplyOption](#berty.messenger.v1.ReplyOption) - [SendContactRequest](#berty.messenger.v1.SendContactRequest) - [SendContactRequest.Reply](#berty.messenger.v1.SendContactRequest.Reply) - [SendContactRequest.Request](#berty.messenger.v1.SendContactRequest.Request) - - [SendReplyOptions](#berty.messenger.v1.SendReplyOptions) - - [SendReplyOptions.Reply](#berty.messenger.v1.SendReplyOptions.Reply) - - [SendReplyOptions.Request](#berty.messenger.v1.SendReplyOptions.Request) - [ServiceToken](#berty.messenger.v1.ServiceToken) - [ShareableBertyGroup](#berty.messenger.v1.ShareableBertyGroup) - [ShareableBertyGroup.Reply](#berty.messenger.v1.ShareableBertyGroup.Reply) @@ -161,7 +136,6 @@ - [StreamEvent.InteractionDeleted](#berty.messenger.v1.StreamEvent.InteractionDeleted) - [StreamEvent.InteractionUpdated](#berty.messenger.v1.StreamEvent.InteractionUpdated) - [StreamEvent.ListEnded](#berty.messenger.v1.StreamEvent.ListEnded) - - [StreamEvent.MediaUpdated](#berty.messenger.v1.StreamEvent.MediaUpdated) - [StreamEvent.MemberUpdated](#berty.messenger.v1.StreamEvent.MemberUpdated) - [StreamEvent.Notified](#berty.messenger.v1.StreamEvent.Notified) - [StreamEvent.Notified.Basic](#berty.messenger.v1.StreamEvent.Notified.Basic) @@ -189,8 +163,6 @@ - [BertyLink.Kind](#berty.messenger.v1.BertyLink.Kind) - [Contact.State](#berty.messenger.v1.Contact.State) - [Conversation.Type](#berty.messenger.v1.Conversation.Type) - - [Media.State](#berty.messenger.v1.Media.State) - - [MediaMetadataType](#berty.messenger.v1.MediaMetadataType) - [StreamEvent.Notified.Type](#berty.messenger.v1.StreamEvent.Notified.Type) - [StreamEvent.PeerStatusConnected.Transport](#berty.messenger.v1.StreamEvent.PeerStatusConnected.Transport) - [StreamEvent.Type](#berty.messenger.v1.StreamEvent.Type) @@ -215,7 +187,6 @@ | link | [string](#string) | | | | service_tokens | [ServiceToken](#berty.messenger.v1.ServiceToken) | repeated | | | replicate_new_groups_automatically | [bool](#bool) | | | -| avatar_cid | [string](#string) | | | | auto_share_push_token_flag | [bool](#bool) | | | | device_push_token | [bytes](#bytes) | | | | device_push_server | [bytes](#bytes) | | | @@ -276,7 +247,6 @@ | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | display_name | [string](#string) | | | -| avatar_cid | [string](#string) | | | @@ -288,7 +258,6 @@ AppMessage is the app layer format | type | [AppMessage.Type](#berty.messenger.v1.AppMessage.Type) | | | | payload | [bytes](#bytes) | | | | sent_date | [int64](#int64) | | | -| medias | [Media](#berty.messenger.v1.Media) | repeated | | | target_cid | [string](#string) | | | @@ -303,14 +272,6 @@ AppMessage is the app layer format | ----- | ---- | ----- | ----------- | | link | [string](#string) | | TODO: optimize message size | - - -### AppMessage.ReplyOptions - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| options | [ReplyOption](#berty.messenger.v1.ReplyOption) | repeated | | - ### AppMessage.SetGroupInfo @@ -318,7 +279,6 @@ AppMessage is the app layer format | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | display_name | [string](#string) | | | -| avatar_cid | [string](#string) | | TODO: optimize message size | @@ -327,7 +287,6 @@ AppMessage is the app layer format | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | display_name | [string](#string) | | | -| avatar_cid | [string](#string) | | TODO: optimize message size | @@ -337,27 +296,6 @@ AppMessage is the app layer format | ----- | ---- | ----- | ----------- | | body | [string](#string) | | | - - -### AppMessage.UserReaction - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| state | [bool](#bool) | | | -| emoji | [string](#string) | | | - - - -### AudioPreview - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| volume_intensities | [uint32](#uint32) | repeated | | -| duration_ms | [uint32](#uint32) | | | -| format | [string](#string) | | | -| bitrate | [uint32](#uint32) | | | -| sampling_rate | [uint32](#uint32) | | | - ### BannerQuote @@ -456,7 +394,6 @@ to test more false-positive guesses. | conversation | [Conversation](#berty.messenger.v1.Conversation) | | | | state | [Contact.State](#berty.messenger.v1.Contact.State) | | | | display_name | [string](#string) | | | -| avatar_cid | [string](#string) | | | | created_date | [int64](#int64) | | | | sent_date | [int64](#int64) | | specific to outgoing requests | | devices | [Device](#berty.messenger.v1.Device) | repeated | | @@ -522,10 +459,7 @@ to test more false-positive guesses. | account_member_public_key | [string](#string) | | | | local_device_public_key | [string](#string) | | | | created_date | [int64](#int64) | | | -| reply_options_cid | [string](#string) | | | -| reply_options | [Interaction](#berty.messenger.v1.Interaction) | | | | replication_info | [ConversationReplicationInfo](#berty.messenger.v1.ConversationReplicationInfo) | repeated | | -| avatar_cid | [string](#string) | | | | info_date | [int64](#int64) | | info_date is used when SetGroupInfo is called | | shared_push_token_identifier | [string](#string) | | | | local_member_public_key | [string](#string) | | | @@ -835,7 +769,6 @@ to test more false-positive guesses. | type | [AppMessage.Type](#berty.messenger.v1.AppMessage.Type) | | | | payload | [bytes](#bytes) | | | | conversation_public_key | [string](#string) | | | -| media_cids | [string](#string) | repeated | | | target_cid | [string](#string) | | | | metadata | [bool](#bool) | | | @@ -857,41 +790,8 @@ to test more false-positive guesses. | sent_date | [int64](#int64) | | | | acknowledged | [bool](#bool) | | | | target_cid | [string](#string) | | | -| medias | [Media](#berty.messenger.v1.Media) | repeated | | -| reactions | [Interaction.ReactionView](#berty.messenger.v1.Interaction.ReactionView) | repeated | specific to client model | | out_of_store_message | [bool](#bool) | | | - - -### Interaction.ReactionView - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| emoji | [string](#string) | | | -| own_state | [bool](#bool) | | | -| count | [uint64](#uint64) | | | - - - -### InteractionReactionsForEmoji - - - -### InteractionReactionsForEmoji.Reply - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| reactions | [Reaction](#berty.messenger.v1.Reaction) | repeated | | - - - -### InteractionReactionsForEmoji.Request - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| interaction_cid | [string](#string) | | | -| emoji | [string](#string) | | | - ### ListMemberDevices @@ -937,112 +837,6 @@ to test more false-positive guesses. | account_link | [string](#string) | | | | auto_share_push_token_flag | [bool](#bool) | | | - - -### Media - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| cid | [string](#string) | | | -| mime_type | [string](#string) | | | -| filename | [string](#string) | | | -| display_name | [string](#string) | | | -| metadata_bytes | [bytes](#bytes) | | | -| interaction_cid | [string](#string) | | these should not be sent on the bertyprotocol layer | -| state | [Media.State](#berty.messenger.v1.Media.State) | | | - - - -### MediaGetRelated - - - -### MediaGetRelated.Reply - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| media | [Media](#berty.messenger.v1.Media) | | | -| end | [bool](#bool) | | | - - - -### MediaGetRelated.Request - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| cid | [string](#string) | | | -| mime_types | [string](#string) | repeated | bool previous = 2; // TODO: gets previous media instead of next | -| file_names | [string](#string) | repeated | | - - - -### MediaMetadata - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| items | [MediaMetadataItem](#berty.messenger.v1.MediaMetadataItem) | repeated | | - - - -### MediaMetadataItem - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| metadata_type | [MediaMetadataType](#berty.messenger.v1.MediaMetadataType) | | | -| payload | [bytes](#bytes) | | | - - - -### MediaMetadataKV - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| key | [string](#string) | | | -| value | [string](#string) | | | - - - -### MediaPrepare - - - -### MediaPrepare.Reply - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| cid | [string](#string) | | | - - - -### MediaPrepare.Request - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| block | [bytes](#bytes) | | | -| info | [Media](#berty.messenger.v1.Media) | | | -| uri | [string](#string) | | | - - - -### MediaRetrieve - - - -### MediaRetrieve.Reply - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| block | [bytes](#bytes) | | | -| info | [Media](#berty.messenger.v1.Media) | | | - - - -### MediaRetrieve.Request - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| cid | [string](#string) | | | - ### Member @@ -1052,7 +846,6 @@ Composite primary key | ----- | ---- | ----- | ----------- | | public_key | [string](#string) | | | | display_name | [string](#string) | | | -| avatar_cid | [string](#string) | | | | conversation_public_key | [string](#string) | | | | is_me | [bool](#bool) | | | | is_creator | [bool](#bool) | | | @@ -1106,7 +899,6 @@ Composite primary key | ref_cid | [string](#string) | | ref_cid Reference CID for used for pagination defaulting to oldest/newest depending on sorting. When specified this CID won't be included in the results. | | conversation_pk | [string](#string) | | conversation_pk Filter by conversation, otherwise X latest message of each conversation are returned | | oldest_to_newest | [bool](#bool) | | oldest_to_newest Default sort of results is latest to oldest message | -| exclude_medias | [bool](#bool) | | exclude_medias Medias are included by default | | no_bulk | [bool](#bool) | | no_bulk should interactions be via atomic update in the stream | @@ -1215,19 +1007,6 @@ Composite primary key | ----- | ---- | ----- | ----------- | | conversation_pk | [string](#string) | | | - - -### Reaction - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| target_cid | [string](#string) | | | -| member_public_key | [string](#string) | | | -| emoji | [string](#string) | | | -| is_mine | [bool](#bool) | | | -| state | [bool](#bool) | | | -| state_date | [int64](#int64) | | | - ### ReplicationServiceRegisterGroup @@ -1261,15 +1040,6 @@ Composite primary key | ----- | ---- | ----- | ----------- | | enabled | [bool](#bool) | | | - - -### ReplyOption - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| display | [string](#string) | | | -| payload | [string](#string) | | | - ### SendContactRequest @@ -1288,23 +1058,6 @@ Composite primary key | metadata | [bytes](#bytes) | | | | own_metadata | [bytes](#bytes) | | | - - -### SendReplyOptions - - - -### SendReplyOptions.Reply - - - -### SendReplyOptions.Request - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| group_pk | [bytes](#bytes) | | | -| options | [AppMessage.ReplyOptions](#berty.messenger.v1.AppMessage.ReplyOptions) | | | - ### ServiceToken @@ -1393,7 +1146,6 @@ Composite primary key | ----- | ---- | ----- | ----------- | | conversation_pk | [string](#string) | | | | interactions | [Interaction](#berty.messenger.v1.Interaction) | repeated | | -| medias | [Media](#berty.messenger.v1.Media) | repeated | | @@ -1432,14 +1184,6 @@ Composite primary key ### StreamEvent.ListEnded - - -### StreamEvent.MediaUpdated - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| media | [Media](#berty.messenger.v1.Media) | | | - ### StreamEvent.MemberUpdated @@ -1552,9 +1296,7 @@ status events | devices | [int64](#int64) | | | | service_tokens | [int64](#int64) | | | | conversation_replication_info | [int64](#int64) | | | -| reactions | [int64](#int64) | | | | metadata_events | [int64](#int64) | | | -| medias | [int64](#int64) | | | | shared_push_tokens | [int64](#int64) | | older, more recent | @@ -1629,12 +1371,10 @@ status events | ---- | ------ | ----------- | | Undefined | 0 | | | TypeUserMessage | 1 | | -| TypeUserReaction | 2 | | | TypeGroupInvitation | 3 | | | TypeSetGroupInfo | 4 | | | TypeSetUserInfo | 5 | | | TypeAcknowledge | 6 | | -| TypeReplyOptions | 7 | | @@ -1671,31 +1411,6 @@ status events | ContactType | 2 | | | MultiMemberType | 3 | | - - -### Media.State - -| Name | Number | Description | -| ---- | ------ | ----------- | -| StateUnknown | 0 | | -| StateNeverDownloaded | 1 | specific to media received | -| StatePartiallyDownloaded | 2 | | -| StateDownloaded | 3 | | -| StateInCache | 4 | | -| StateInvalidCrypto | 5 | | -| StatePrepared | 100 | specific to media sent | -| StateAttached | 101 | | - - - -### MediaMetadataType - -| Name | Number | Description | -| ---- | ------ | ----------- | -| MetadataUnknown | 0 | | -| MetadataKeyValue | 1 | | -| MetadataAudioPreview | 2 | | - ### StreamEvent.Notified.Type @@ -1737,7 +1452,6 @@ status events | TypeMemberUpdated | 8 | | | TypeDeviceUpdated | 9 | | | TypeNotified | 10 | | -| TypeMediaUpdated | 11 | | | TypeConversationPartialLoad | 12 | | | TypePeerStatusConnected | 13 | | | TypePeerStatusReconnecting | 14 | | @@ -1762,7 +1476,6 @@ Today, most of the Berty Messenger logic is implemented directly in the applicat | DevStreamLogs | [DevStreamLogs.Request](#berty.messenger.v1.DevStreamLogs.Request) | [DevStreamLogs.Reply](#berty.messenger.v1.DevStreamLogs.Reply) stream | DevStreamLogs streams logs from the ring-buffer. | | ParseDeepLink | [ParseDeepLink.Request](#berty.messenger.v1.ParseDeepLink.Request) | [ParseDeepLink.Reply](#berty.messenger.v1.ParseDeepLink.Reply) | ParseDeepLink parses a link in the form of berty://xxx or https://berty.tech/id# and returns a structure that can be used to display information. This action is read-only. | | SendContactRequest | [SendContactRequest.Request](#berty.messenger.v1.SendContactRequest.Request) | [SendContactRequest.Reply](#berty.messenger.v1.SendContactRequest.Reply) | SendContactRequest takes the payload received from ParseDeepLink and send a contact request using the Berty Protocol. | -| SendReplyOptions | [SendReplyOptions.Request](#berty.messenger.v1.SendReplyOptions.Request) | [SendReplyOptions.Reply](#berty.messenger.v1.SendReplyOptions.Reply) | SendReplyOptions sends a list of prefilled response options to a group. | | SystemInfo | [SystemInfo.Request](#berty.messenger.v1.SystemInfo.Request) | [SystemInfo.Reply](#berty.messenger.v1.SystemInfo.Reply) | SystemInfo returns runtime information. | | EchoTest | [EchoTest.Request](#berty.messenger.v1.EchoTest.Request) | [EchoTest.Reply](#berty.messenger.v1.EchoTest.Reply) stream | Use to test stream. | | EchoDuplexTest | [EchoDuplexTest.Request](#berty.messenger.v1.EchoDuplexTest.Request) stream | [EchoDuplexTest.Reply](#berty.messenger.v1.EchoDuplexTest.Reply) stream | Use to test duplex stream. | @@ -1785,9 +1498,6 @@ Today, most of the Berty Messenger logic is implemented directly in the applicat | ReplicationSetAutoEnable | [ReplicationSetAutoEnable.Request](#berty.messenger.v1.ReplicationSetAutoEnable.Request) | [ReplicationSetAutoEnable.Reply](#berty.messenger.v1.ReplicationSetAutoEnable.Reply) | ReplicationSetAutoEnable Sets whether new groups should be replicated automatically or not | | BannerQuote | [BannerQuote.Request](#berty.messenger.v1.BannerQuote.Request) | [BannerQuote.Reply](#berty.messenger.v1.BannerQuote.Reply) | BannerQuote returns the quote of the day. | | InstanceExportData | [InstanceExportData.Request](#berty.messenger.v1.InstanceExportData.Request) | [InstanceExportData.Reply](#berty.messenger.v1.InstanceExportData.Reply) stream | InstanceExportData exports instance data | -| MediaPrepare | [MediaPrepare.Request](#berty.messenger.v1.MediaPrepare.Request) stream | [MediaPrepare.Reply](#berty.messenger.v1.MediaPrepare.Reply) | MediaPrepare allows to upload a file and returns a cid to attach to messages | -| MediaRetrieve | [MediaRetrieve.Request](#berty.messenger.v1.MediaRetrieve.Request) | [MediaRetrieve.Reply](#berty.messenger.v1.MediaRetrieve.Reply) stream | MediaRetrieve allows to download a file attached to a message | -| MediaGetRelated | [MediaGetRelated.Request](#berty.messenger.v1.MediaGetRelated.Request) | [MediaGetRelated.Reply](#berty.messenger.v1.MediaGetRelated.Reply) | MediaGetRelated Gets previous/next media to be played after current | | MessageSearch | [MessageSearch.Request](#berty.messenger.v1.MessageSearch.Request) | [MessageSearch.Reply](#berty.messenger.v1.MessageSearch.Reply) | MessageSearch | | ListMemberDevices | [ListMemberDevices.Request](#berty.messenger.v1.ListMemberDevices.Request) | [ListMemberDevices.Reply](#berty.messenger.v1.ListMemberDevices.Reply) stream | ListMemberDevices Lists devices for a member | | TyberHostSearch | [TyberHostSearch.Request](#berty.messenger.v1.TyberHostSearch.Request) | [TyberHostSearch.Reply](#berty.messenger.v1.TyberHostSearch.Reply) stream | TyberHostSearch | @@ -1796,7 +1506,6 @@ Today, most of the Berty Messenger logic is implemented directly in the applicat | PushShareTokenForConversation | [PushShareTokenForConversation.Request](#berty.messenger.v1.PushShareTokenForConversation.Request) | [PushShareTokenForConversation.Reply](#berty.messenger.v1.PushShareTokenForConversation.Reply) | PushShareTokenForConversation Share a push token for a conversation | | PushTokenSharedForConversation | [PushTokenSharedForConversation.Request](#berty.messenger.v1.PushTokenSharedForConversation.Request) | [PushTokenSharedForConversation.Reply](#berty.messenger.v1.PushTokenSharedForConversation.Reply) stream | PushTokenSharedForConversation | | PushReceive | [PushReceive.Request](#berty.messenger.v1.PushReceive.Request) | [PushReceive.Reply](#berty.messenger.v1.PushReceive.Reply) | PushReceive handles a push payload, decrypts it if possible, adds it to the local store | -| InteractionReactionsForEmoji | [InteractionReactionsForEmoji.Request](#berty.messenger.v1.InteractionReactionsForEmoji.Request) | [InteractionReactionsForEmoji.Reply](#berty.messenger.v1.InteractionReactionsForEmoji.Reply) | InteractionReactionsForEmoji returns a list of reactions on an interaction for a specific emoji | diff --git a/docs/apis/messengertypes.swagger.json b/docs/apis/messengertypes.swagger.json index 37adca3dd2..df190a59af 100644 --- a/docs/apis/messengertypes.swagger.json +++ b/docs/apis/messengertypes.swagger.json @@ -745,39 +745,6 @@ ] } }, - "/berty.messenger.v1/MessengerService/InteractionReactionsForEmoji": { - "post": { - "summary": "InteractionReactionsForEmoji returns a list of reactions on an interaction for a specific emoji", - "operationId": "MessengerService_InteractionReactionsForEmoji", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1InteractionReactionsForEmojiReply" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/runtimeError" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1InteractionReactionsForEmojiRequest" - } - } - ], - "tags": [ - "MessengerService" - ] - } - }, "/berty.messenger.v1/MessengerService/ListMemberDevices": { "post": { "summary": "ListMemberDevices Lists devices for a member", @@ -820,115 +787,6 @@ ] } }, - "/berty.messenger.v1/MessengerService/MediaGetRelated": { - "post": { - "summary": "MediaGetRelated Gets previous/next media to be played after current", - "operationId": "MessengerService_MediaGetRelated", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1MediaGetRelatedReply" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/runtimeError" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1MediaGetRelatedRequest" - } - } - ], - "tags": [ - "MessengerService" - ] - } - }, - "/berty.messenger.v1/MessengerService/MediaPrepare": { - "post": { - "summary": "MediaPrepare allows to upload a file and returns a cid to attach to messages", - "operationId": "MessengerService_MediaPrepare", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1MediaPrepareReply" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/runtimeError" - } - } - }, - "parameters": [ - { - "name": "body", - "description": " (streaming inputs)", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1MediaPrepareRequest" - } - } - ], - "tags": [ - "MessengerService" - ] - } - }, - "/berty.messenger.v1/MessengerService/MediaRetrieve": { - "post": { - "summary": "MediaRetrieve allows to download a file attached to a message", - "operationId": "MessengerService_MediaRetrieve", - "responses": { - "200": { - "description": "A successful response.(streaming responses)", - "schema": { - "type": "object", - "properties": { - "result": { - "$ref": "#/definitions/v1MediaRetrieveReply" - }, - "error": { - "$ref": "#/definitions/runtimeStreamError" - } - }, - "title": "Stream result of v1MediaRetrieveReply" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/runtimeError" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1MediaRetrieveRequest" - } - } - ], - "tags": [ - "MessengerService" - ] - } - }, "/berty.messenger.v1/MessengerService/MessageSearch": { "post": { "summary": "MessageSearch", @@ -1235,39 +1093,6 @@ ] } }, - "/berty.messenger.v1/MessengerService/SendReplyOptions": { - "post": { - "summary": "SendReplyOptions sends a list of prefilled response options to a group.", - "operationId": "MessengerService_SendReplyOptions", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1SendReplyOptionsReply" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/runtimeError" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1SendReplyOptionsRequest" - } - } - ], - "tags": [ - "MessengerService" - ] - } - }, "/berty.messenger.v1/MessengerService/ServicesTokenList": { "post": { "summary": "ServicesTokenList Retrieves the list of service server tokens", @@ -1453,17 +1278,6 @@ } }, "definitions": { - "AppMessageReplyOptions": { - "type": "object", - "properties": { - "options": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ReplyOption" - } - } - } - }, "BertyLinkBertyMessageRef": { "type": "object", "properties": { @@ -1544,20 +1358,16 @@ ], "default": "UnknownKind" }, - "InteractionReactionView": { - "type": "object", - "properties": { - "emoji": { - "type": "string" - }, - "own_state": { - "type": "boolean" - }, - "count": { - "type": "string", - "format": "uint64" - } - } + "ContactState": { + "type": "string", + "enum": [ + "Undefined", + "IncomingRequest", + "OutgoingRequestEnqueued", + "OutgoingRequestSent", + "Accepted" + ], + "default": "Undefined" }, "OrbitDBReplicationStatus": { "type": "object", @@ -1615,18 +1425,10 @@ "type": "string", "format": "int64" }, - "reactions": { - "type": "string", - "format": "int64" - }, "metadata_events": { "type": "string", "format": "int64" }, - "medias": { - "type": "string", - "format": "int64" - }, "shared_push_tokens": { "type": "string", "format": "int64" @@ -1775,9 +1577,6 @@ "replicate_new_groups_automatically": { "type": "boolean" }, - "avatar_cid": { - "type": "string" - }, "auto_share_push_token_flag": { "type": "boolean" }, @@ -2046,9 +1845,6 @@ "properties": { "display_name": { "type": "string" - }, - "avatar_cid": { - "type": "string" } } }, @@ -2057,12 +1853,10 @@ "enum": [ "Undefined", "TypeUserMessage", - "TypeUserReaction", "TypeGroupInvitation", "TypeSetGroupInfo", "TypeSetUserInfo", - "TypeAcknowledge", - "TypeReplyOptions" + "TypeAcknowledge" ], "default": "Undefined" }, @@ -2145,14 +1939,11 @@ "$ref": "#/definitions/v1Conversation" }, "state": { - "$ref": "#/definitions/v1ContactState" + "$ref": "#/definitions/ContactState" }, "display_name": { "type": "string" }, - "avatar_cid": { - "type": "string" - }, "created_date": { "type": "string", "format": "int64" @@ -2201,17 +1992,6 @@ } } }, - "v1ContactState": { - "type": "string", - "enum": [ - "Undefined", - "IncomingRequest", - "OutgoingRequestEnqueued", - "OutgoingRequestSent", - "Accepted" - ], - "default": "Undefined" - }, "v1Conversation": { "type": "object", "properties": { @@ -2264,21 +2044,12 @@ "type": "string", "format": "int64" }, - "reply_options_cid": { - "type": "string" - }, - "reply_options": { - "$ref": "#/definitions/v1Interaction" - }, "replication_info": { "type": "array", "items": { "$ref": "#/definitions/v1ConversationReplicationInfo" } }, - "avatar_cid": { - "type": "string" - }, "info_date": { "type": "string", "format": "int64", @@ -2638,12 +2409,6 @@ "conversation_public_key": { "type": "string" }, - "media_cids": { - "type": "array", - "items": { - "type": "string" - } - }, "target_cid": { "type": "string" }, @@ -2693,45 +2458,11 @@ "target_cid": { "type": "string" }, - "medias": { - "type": "array", - "items": { - "$ref": "#/definitions/v1Media" - } - }, - "reactions": { - "type": "array", - "items": { - "$ref": "#/definitions/InteractionReactionView" - } - }, "out_of_store_message": { "type": "boolean" } } }, - "v1InteractionReactionsForEmojiReply": { - "type": "object", - "properties": { - "reactions": { - "type": "array", - "items": { - "$ref": "#/definitions/v1Reaction" - } - } - } - }, - "v1InteractionReactionsForEmojiRequest": { - "type": "object", - "properties": { - "interaction_cid": { - "type": "string" - }, - "emoji": { - "type": "string" - } - } - }, "v1ListMemberDevicesReply": { "type": "object", "properties": { @@ -2751,124 +2482,6 @@ } } }, - "v1Media": { - "type": "object", - "properties": { - "cid": { - "type": "string" - }, - "mime_type": { - "type": "string" - }, - "filename": { - "type": "string" - }, - "display_name": { - "type": "string" - }, - "metadata_bytes": { - "type": "string", - "format": "byte" - }, - "interaction_cid": { - "type": "string", - "title": "these should not be sent on the bertyprotocol layer" - }, - "state": { - "$ref": "#/definitions/v1MediaState" - } - } - }, - "v1MediaGetRelatedReply": { - "type": "object", - "properties": { - "media": { - "$ref": "#/definitions/v1Media" - }, - "end": { - "type": "boolean" - } - } - }, - "v1MediaGetRelatedRequest": { - "type": "object", - "properties": { - "cid": { - "type": "string" - }, - "mime_types": { - "type": "array", - "items": { - "type": "string" - }, - "title": "bool previous = 2; // TODO: gets previous media instead of next" - }, - "file_names": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1MediaPrepareReply": { - "type": "object", - "properties": { - "cid": { - "type": "string" - } - } - }, - "v1MediaPrepareRequest": { - "type": "object", - "properties": { - "block": { - "type": "string", - "format": "byte" - }, - "info": { - "$ref": "#/definitions/v1Media" - }, - "uri": { - "type": "string" - } - } - }, - "v1MediaRetrieveReply": { - "type": "object", - "properties": { - "block": { - "type": "string", - "format": "byte" - }, - "info": { - "$ref": "#/definitions/v1Media" - } - } - }, - "v1MediaRetrieveRequest": { - "type": "object", - "properties": { - "cid": { - "type": "string" - } - } - }, - "v1MediaState": { - "type": "string", - "enum": [ - "StateUnknown", - "StateNeverDownloaded", - "StatePartiallyDownloaded", - "StateDownloaded", - "StateInCache", - "StateInvalidCrypto", - "StatePrepared", - "StateAttached" - ], - "default": "StateUnknown", - "title": "- StateNeverDownloaded: specific to media received\n - StatePrepared: specific to media sent" - }, "v1Member": { "type": "object", "properties": { @@ -2878,9 +2491,6 @@ "display_name": { "type": "string" }, - "avatar_cid": { - "type": "string" - }, "conversation_public_key": { "type": "string" }, @@ -2995,10 +2605,6 @@ "type": "boolean", "title": "oldest_to_newest Default sort of results is latest to oldest message" }, - "exclude_medias": { - "type": "boolean", - "title": "exclude_medias Medias are included by default" - }, "no_bulk": { "type": "boolean", "title": "no_bulk should interactions be via atomic update in the stream" @@ -3087,30 +2693,6 @@ } } }, - "v1Reaction": { - "type": "object", - "properties": { - "target_cid": { - "type": "string" - }, - "member_public_key": { - "type": "string" - }, - "emoji": { - "type": "string" - }, - "is_mine": { - "type": "boolean" - }, - "state": { - "type": "boolean" - }, - "state_date": { - "type": "string", - "format": "int64" - } - } - }, "v1ReplicationSetAutoEnableReply": { "type": "object" }, @@ -3122,17 +2704,6 @@ } } }, - "v1ReplyOption": { - "type": "object", - "properties": { - "display": { - "type": "string" - }, - "payload": { - "type": "string" - } - } - }, "v1SendContactRequestReply": { "type": "object" }, @@ -3152,21 +2723,6 @@ } } }, - "v1SendReplyOptionsReply": { - "type": "object" - }, - "v1SendReplyOptionsRequest": { - "type": "object", - "properties": { - "group_pk": { - "type": "string", - "format": "byte" - }, - "options": { - "$ref": "#/definitions/AppMessageReplyOptions" - } - } - }, "v1ServiceTokenSupportedService": { "type": "object", "properties": { @@ -3265,7 +2821,6 @@ "TypeMemberUpdated", "TypeDeviceUpdated", "TypeNotified", - "TypeMediaUpdated", "TypeConversationPartialLoad", "TypePeerStatusConnected", "TypePeerStatusReconnecting", diff --git a/docs/apis/protocoltypes.md b/docs/apis/protocoltypes.md index fb9aa50e5b..1a770133fc 100644 --- a/docs/apis/protocoltypes.md +++ b/docs/apis/protocoltypes.md @@ -29,12 +29,6 @@ - [AppMetadataSend](#berty.protocol.v1.AppMetadataSend) - [AppMetadataSend.Reply](#berty.protocol.v1.AppMetadataSend.Reply) - [AppMetadataSend.Request](#berty.protocol.v1.AppMetadataSend.Request) - - [AttachmentPrepare](#berty.protocol.v1.AttachmentPrepare) - - [AttachmentPrepare.Reply](#berty.protocol.v1.AttachmentPrepare.Reply) - - [AttachmentPrepare.Request](#berty.protocol.v1.AttachmentPrepare.Request) - - [AttachmentRetrieve](#berty.protocol.v1.AttachmentRetrieve) - - [AttachmentRetrieve.Reply](#berty.protocol.v1.AttachmentRetrieve.Reply) - - [AttachmentRetrieve.Request](#berty.protocol.v1.AttachmentRetrieve.Request) - [AuthExchangeResponse](#berty.protocol.v1.AuthExchangeResponse) - [AuthExchangeResponse.ServicesEntry](#berty.protocol.v1.AuthExchangeResponse.ServicesEntry) - [AuthServiceCompleteFlow](#berty.protocol.v1.AuthServiceCompleteFlow) @@ -420,7 +414,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 | -| attachment_cids | [bytes](#bytes) | repeated | attachment_cids is a list of attachment cids | @@ -452,48 +445,6 @@ AppMetadata is an app defined message, accessible to future group members | ----- | ---- | ----- | ----------- | | group_pk | [bytes](#bytes) | | group_pk is the identifier of the group | | payload | [bytes](#bytes) | | payload is the payload to send | -| attachment_cids | [bytes](#bytes) | repeated | attachment_cids is a list of attachment cids | - - - -### AttachmentPrepare - - - -### AttachmentPrepare.Reply - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| attachment_cid | [bytes](#bytes) | | attachment_cid is the cid of the (encrypted) file | - - - -### AttachmentPrepare.Request - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| block | [bytes](#bytes) | | block is a plaintext block to append | -| disable_encryption | [bool](#bool) | | disable_encryption tells the protocol to store the file as plain text | - - - -### AttachmentRetrieve - - - -### AttachmentRetrieve.Reply - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| block | [bytes](#bytes) | | block is a plaintext block to append | - - - -### AttachmentRetrieve.Request - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| attachment_cid | [bytes](#bytes) | | attachment_cid is the cid of the (encrypted) file | @@ -852,7 +803,6 @@ EventContext adds context (its id, its parents and its attachments) to an event | id | [bytes](#bytes) | | id is the CID of the underlying OrbitDB event | | parent_ids | [bytes](#bytes) | repeated | id are the the CIDs of the underlying parents of the OrbitDB event | | group_pk | [bytes](#bytes) | | group_pk receiving the event | -| attachment_cids | [bytes](#bytes) | repeated | attachment_cids is a list of attachment that can be retrieved | @@ -970,7 +920,6 @@ GroupEnvelope is a publicly exposed structure containing a group metadata event | ----- | ---- | ----- | ----------- | | nonce | [bytes](#bytes) | | nonce is used to encrypt the message | | event | [bytes](#bytes) | | event is encrypted using a symmetric key shared among group members | -| encrypted_attachment_cids | [bytes](#bytes) | repeated | encrypted_attachment_cids is a list of attachment CIDs encrypted specifically for replication services | @@ -1154,7 +1103,6 @@ MessageEnvelope is a publicly exposed structure containing a group secure messag | message_headers | [bytes](#bytes) | | message_headers is an encrypted serialization using a symmetric key of a MessageHeaders message | | message | [bytes](#bytes) | | message is an encrypted message, only readable by group members who previously received the appropriate chain key | | nonce | [bytes](#bytes) | | nonce is a nonce for message headers | -| encrypted_attachment_cids | [bytes](#bytes) | repeated | encrypted_attachment_cids is a list of attachment CIDs encrypted specifically for replication services | @@ -1411,10 +1359,6 @@ Progress define a generic object that can be used to display a progress bar for ### ProtocolMetadata -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| attachments_secrets | [bytes](#bytes) | repeated | attachments_secrets is a list of secret keys used retrieve attachments | - ### PushDeviceServerRegistered @@ -1932,8 +1876,6 @@ Each Berty Protocol Instance is considered as a Berty device and is associated w | ServicesTokenList | [ServicesTokenList.Request](#berty.protocol.v1.ServicesTokenList.Request) | [ServicesTokenList.Reply](#berty.protocol.v1.ServicesTokenList.Reply) stream | ServicesTokenList Retrieves the list of services tokens | | ReplicationServiceRegisterGroup | [ReplicationServiceRegisterGroup.Request](#berty.protocol.v1.ReplicationServiceRegisterGroup.Request) | [ReplicationServiceRegisterGroup.Reply](#berty.protocol.v1.ReplicationServiceRegisterGroup.Reply) | ReplicationServiceRegisterGroup Asks a replication service to distribute a group contents | | PeerList | [PeerList.Request](#berty.protocol.v1.PeerList.Request) | [PeerList.Reply](#berty.protocol.v1.PeerList.Reply) | PeerList returns a list of P2P peers | -| AttachmentPrepare | [AttachmentPrepare.Request](#berty.protocol.v1.AttachmentPrepare.Request) stream | [AttachmentPrepare.Reply](#berty.protocol.v1.AttachmentPrepare.Reply) | AttachmentPrepare ... | -| AttachmentRetrieve | [AttachmentRetrieve.Request](#berty.protocol.v1.AttachmentRetrieve.Request) | [AttachmentRetrieve.Reply](#berty.protocol.v1.AttachmentRetrieve.Reply) stream | AttachmentRetrieve returns an attachment data | | PushReceive | [PushReceive.Request](#berty.protocol.v1.PushReceive.Request) | [PushReceive.Reply](#berty.protocol.v1.PushReceive.Reply) | PushReceive handles a push payload, decrypts it if possible | | PushSend | [PushSend.Request](#berty.protocol.v1.PushSend.Request) | [PushSend.Reply](#berty.protocol.v1.PushSend.Reply) | PushSend sends a push payload to a specified list of group members | | PushShareToken | [PushShareToken.Request](#berty.protocol.v1.PushShareToken.Request) | [PushShareToken.Reply](#berty.protocol.v1.PushShareToken.Reply) | PushShareToken sends push tokens of own devices to a group | diff --git a/docs/apis/protocoltypes.swagger.json b/docs/apis/protocoltypes.swagger.json index 2d719dce19..1d4264d9c4 100644 --- a/docs/apis/protocoltypes.swagger.json +++ b/docs/apis/protocoltypes.swagger.json @@ -110,82 +110,6 @@ ] } }, - "/berty.protocol.v1/ProtocolService/AttachmentPrepare": { - "post": { - "summary": "AttachmentPrepare ...", - "operationId": "ProtocolService_AttachmentPrepare", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1AttachmentPrepareReply" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/runtimeError" - } - } - }, - "parameters": [ - { - "name": "body", - "description": " (streaming inputs)", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1AttachmentPrepareRequest" - } - } - ], - "tags": [ - "ProtocolService" - ] - } - }, - "/berty.protocol.v1/ProtocolService/AttachmentRetrieve": { - "post": { - "summary": "AttachmentRetrieve returns an attachment data", - "operationId": "ProtocolService_AttachmentRetrieve", - "responses": { - "200": { - "description": "A successful response.(streaming responses)", - "schema": { - "type": "object", - "properties": { - "result": { - "$ref": "#/definitions/v1AttachmentRetrieveReply" - }, - "error": { - "$ref": "#/definitions/runtimeStreamError" - } - }, - "title": "Stream result of v1AttachmentRetrieveReply" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/runtimeError" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1AttachmentRetrieveRequest" - } - } - ], - "tags": [ - "ProtocolService" - ] - } - }, "/berty.protocol.v1/ProtocolService/AuthServiceCompleteFlow": { "post": { "summary": "AuthServiceCompleteFlow Completes an authentication flow", @@ -1811,14 +1735,6 @@ "type": "string", "format": "byte", "title": "payload is the payload to send" - }, - "attachment_cids": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - }, - "title": "attachment_cids is a list of attachment cids" } } }, @@ -1843,58 +1759,6 @@ "type": "string", "format": "byte", "title": "payload is the payload to send" - }, - "attachment_cids": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - }, - "title": "attachment_cids is a list of attachment cids" - } - } - }, - "v1AttachmentPrepareReply": { - "type": "object", - "properties": { - "attachment_cid": { - "type": "string", - "format": "byte", - "title": "attachment_cid is the cid of the (encrypted) file" - } - } - }, - "v1AttachmentPrepareRequest": { - "type": "object", - "properties": { - "block": { - "type": "string", - "format": "byte", - "title": "block is a plaintext block to append" - }, - "disable_encryption": { - "type": "boolean", - "title": "disable_encryption tells the protocol to store the file as plain text" - } - } - }, - "v1AttachmentRetrieveReply": { - "type": "object", - "properties": { - "block": { - "type": "string", - "format": "byte", - "title": "block is a plaintext block to append" - } - } - }, - "v1AttachmentRetrieveRequest": { - "type": "object", - "properties": { - "attachment_cid": { - "type": "string", - "format": "byte", - "title": "attachment_cid is the cid of the (encrypted) file" } } }, @@ -2249,14 +2113,6 @@ "type": "string", "format": "byte", "title": "group_pk receiving the event" - }, - "attachment_cids": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - }, - "title": "attachment_cids is a list of attachment that can be retrieved" } }, "title": "EventContext adds context (its id, its parents and its attachments) to an event" @@ -2818,17 +2674,7 @@ "type": "object" }, "v1ProtocolMetadata": { - "type": "object", - "properties": { - "attachments_secrets": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - }, - "title": "attachments_secrets is a list of secret keys used retrieve attachments" - } - } + "type": "object" }, "v1PushReceiveReply": { "type": "object", diff --git a/docs/gen.sum b/docs/gen.sum index b622d0497e..2c2f7fa5b8 100644 --- a/docs/gen.sum +++ b/docs/gen.sum @@ -8,10 +8,10 @@ e0a1655de0bd86e03bac131c96a7dcd0a616409d ../api/accounttypes.yaml 32a7fc91108297910b332969720c09576e9f938e ../api/bertyverifiablecreds.proto c487da32080977a2ec757252b6187633327b5e07 ../api/bertyverifiablecreds.yaml c9a201bb6dc2e1ef5b6fd17f5195b551d17bef05 ../api/errcode.proto -038786285fbde081c2458fb39723f3d8f5648330 ../api/messengertypes.proto -0bf65c534c7bd4dd9453bfcc828a7be7b2d9dc2f ../api/messengertypes.yaml -8a16aed5c26c8c37bb8184d49d192fdce7f26574 ../api/protocoltypes.proto -082e4ffa1c0c8b0e1349e997b57abdaf0fcf2d86 ../api/protocoltypes.yaml -429ad083ef1963a77adc439239118d0db65c9d37 ../api/pushtypes.proto +18f4402787527160b0aacf5524e44cf8c3ac16ad ../api/messengertypes.proto +b1a4d391237e859dff4988e16fae4595058d22cb ../api/messengertypes.yaml +4b02b0a87caabb590c2c6fee507d0987e5bf5d70 ../api/protocoltypes.proto +ed9abd8ee68a37459884723b91cd83aecadb8c04 ../api/protocoltypes.yaml +e4a9d6765ed04780b20d6e4cbfa10162e36c5e48 ../api/pushtypes.proto 00284c7d54f219f2d66852350c00cbff87a14620 ../api/pushtypes.yaml 3b24f8f94b17cce89e535ea22432b75769bce542 Makefile diff --git a/go.mod b/go.mod index 5a956c0367..409b921283 100644 --- a/go.mod +++ b/go.mod @@ -47,7 +47,6 @@ require ( github.com/ipfs/go-datastore v0.5.1 github.com/ipfs/go-ipfs v0.12.2 github.com/ipfs/go-ipfs-config v0.19.0 - github.com/ipfs/go-ipfs-files v0.0.9 github.com/ipfs/go-ipfs-keystore v0.0.2 github.com/ipfs/go-ipld-cbor v0.0.6 github.com/ipfs/go-log/v2 v2.4.0 diff --git a/go/cmd/berty/mini/view_group.go b/go/cmd/berty/mini/view_group.go index 7ff93a6782..d245e9a120 100644 --- a/go/cmd/berty/mini/view_group.go +++ b/go/cmd/berty/mini/view_group.go @@ -208,9 +208,6 @@ func (v *groupView) loop(ctx context.Context) { } v.acks.Store(am.TargetCID, true) - case messengertypes.AppMessage_TypeReplyOptions: - // TODO: - case messengertypes.AppMessage_TypeUserMessage: payload := amp.(*messengertypes.AppMessage_UserMessage) v.messages.Prepend(&historyMessage{ @@ -319,33 +316,6 @@ func (v *groupView) loop(ctx context.Context) { receivedAt: receivedAt, }) v.addBadge() - - case messengertypes.AppMessage_TypeReplyOptions: - var payload messengertypes.AppMessage_ReplyOptions - err := proto.Unmarshal(am.GetPayload(), &payload) - if err != nil { - v.logger.Error("failed to unmarshal ReplyOptions", zap.Error(err)) - continue - } - - receivedAt := time.Unix(0, am.GetSentDate()*1000000) - - v.messages.Append(&historyMessage{ - messageType: messageTypeMessage, - payload: []byte("Response options offered:"), - sender: evt.Headers.DevicePK, - receivedAt: receivedAt, - }) - - for i, o := range payload.Options { - v.messages.Append(&historyMessage{ - messageType: messageTypeMessage, - payload: []byte(fmt.Sprintf(" - %d: %s ==> %s", i, o.Display, o.Payload)), - sender: evt.Headers.DevicePK, - receivedAt: receivedAt, - }) - v.addBadge() - } } } }() diff --git a/go/cmd/berty/mini/view_group_outgoing.go b/go/cmd/berty/mini/view_group_outgoing.go index 5424264a54..e73ef13fb4 100644 --- a/go/cmd/berty/mini/view_group_outgoing.go +++ b/go/cmd/berty/mini/view_group_outgoing.go @@ -6,7 +6,6 @@ import ( "crypto/ed25519" crand "crypto/rand" "encoding/base64" - "encoding/json" "fmt" "io" "os" @@ -197,11 +196,6 @@ func commandList() []*command { help: "Registers current group for replication using specified token", cmd: replGroup, }, - { - title: "reply-options", - help: `Sends a list of quick responses from JSON: [{"display": "Text offering a *yes* option", "payload": "yes"}]`, - cmd: sendReplyOptions, - }, { title: "export", help: `Saves an export of the current instance to the specified path`, @@ -226,22 +220,6 @@ func commandList() []*command { } } -func sendReplyOptions(ctx context.Context, v *groupView, cmd string) error { - options := []*messengertypes.ReplyOption{} - if err := json.Unmarshal([]byte(cmd), &options); err != nil { - return err - } - - _, err := v.v.messenger.SendReplyOptions(ctx, &messengertypes.SendReplyOptions_Request{ - GroupPK: v.g.PublicKey, - Options: &messengertypes.AppMessage_ReplyOptions{ - Options: options, - }, - }) - - return err -} - func credentialVerificationInit(ctx context.Context, v *groupView, service string) error { // TODO: move this to bertyprotocol // FIXME: use a non volatile identity diff --git a/go/cmd/welcomebot/main.go b/go/cmd/welcomebot/main.go index 7c2d0f18eb..908dbb0fd9 100644 --- a/go/cmd/welcomebot/main.go +++ b/go/cmd/welcomebot/main.go @@ -354,7 +354,7 @@ func (bot *Bot) handleUserMessageInteractionUpdated(ctx context.Context, _ *mess } // auto-reply to user's messages answer := getRandomReply() - if err := bot.interactUserMessage(ctx, answer, interaction.ConversationPublicKey, defaultReplyOption()); err != nil { + if err := bot.interactUserMessage(ctx, answer, interaction.ConversationPublicKey); err != nil { return fmt.Errorf("interact user message failed: %w", err) } } @@ -373,11 +373,7 @@ func doStep0(ctx context.Context, conv *Conversation, bot *Bot, receivedMessage body := `Okay, perfect! 🤙 Would you like me to invite you to a group chat to test multimember conversations? Type 'yes' to receive it! 💌` - options := []*messengertypes.ReplyOption{ - {Payload: "yes", Display: "Sure, go for it!"}, - {Payload: "no", Display: "Show me all you can do instead!"}, - } - if err := bot.interactUserMessage(ctx, body, interaction.ConversationPublicKey, options); err != nil { + if err := bot.interactUserMessage(ctx, body, interaction.ConversationPublicKey); err != nil { return false, fmt.Errorf("interact user message failed: %w", err) } return true, nil @@ -396,7 +392,7 @@ func doStep1(ctx context.Context, conv *Conversation, bot *Bot, receivedMessage body := `Okay, I'm inviting you! 🤝 I'll also invite some staff members to join the group! I’m cool, but humans are sometimes cooler than me… 🤖 ❤️` - if err := bot.interactUserMessage(ctx, body, interaction.ConversationPublicKey, nil); err != nil { + if err := bot.interactUserMessage(ctx, body, interaction.ConversationPublicKey); err != nil { return false, fmt.Errorf("interact user message failed: %w", err) } @@ -426,7 +422,7 @@ I’m cool, but humans are sometimes cooler than me… 🤖 ❤️` body = `Okay, done! 👏 👍 Welcome and thanks for joining our community. You're part of the revolution now! 🔥 Type /help when you need info about available test commands! 📖` - if err := bot.interactUserMessage(ctx, body, interaction.ConversationPublicKey, defaultReplyOption()); err != nil { + if err := bot.interactUserMessage(ctx, body, interaction.ConversationPublicKey); err != nil { return false, fmt.Errorf("interact user message failed: %w", err) } bot.logger.Info("scenario finished") @@ -440,7 +436,6 @@ func doStep2(ctx context.Context, _ *Conversation, bot *Bot, receivedMessage *me unlock() msg := receivedMessage.GetBody() if msg[0] == '/' { - options := defaultReplyOption() switch strings.ToLower(msg[1:]) { case "help": body := `In this conversation, you can type all these commands : @@ -449,7 +444,7 @@ func doStep2(ctx context.Context, _ *Conversation, bot *Bot, receivedMessage *me /demo share /demo contact "Here is the QR code of manfred, just add him!" /demo version` - if err := bot.interactUserMessage(ctx, body, interaction.ConversationPublicKey, options); err != nil { + if err := bot.interactUserMessage(ctx, body, interaction.ConversationPublicKey); err != nil { return false, fmt.Errorf("interact user message failed: %w", err) } case "demo version": @@ -459,12 +454,12 @@ func doStep2(ctx context.Context, _ *Conversation, bot *Bot, receivedMessage *me } else { body = "berty " + bertyversion.Version + " https://github.com/berty/berty/commits/" + bertyversion.VcsRef + "\n" + runtime.Version() } - if err := bot.interactUserMessage(ctx, body, interaction.ConversationPublicKey, options); err != nil { + if err := bot.interactUserMessage(ctx, body, interaction.ConversationPublicKey); err != nil { return false, fmt.Errorf("interact user message failed: %w", err) } default: body := fmt.Sprintf("Sorry but the command %q is not yet known.", msg) - if err := bot.interactUserMessage(ctx, body, interaction.ConversationPublicKey, options); err != nil { + if err := bot.interactUserMessage(ctx, body, interaction.ConversationPublicKey); err != nil { return false, fmt.Errorf("interact user message failed: %w", err) } } @@ -532,7 +527,7 @@ For the moment i can't send a group invitation so i share the link of the conver userName, conversation.GetLink(), ) - if err := bot.interactUserMessage(ctx, body, bot.store.StaffConvPK, nil); err != nil { + if err := bot.interactUserMessage(ctx, body, bot.store.StaffConvPK); err != nil { return fmt.Errorf("interact user message failed: %w", err) } @@ -565,11 +560,7 @@ For the moment i can't send a group invitation so i share the link of the conver I’m here to help you with the onboarding process. Let's test out some features together! Just type 'yes' to let me know you copy that.` - options := []*messengertypes.ReplyOption{ - {Payload: "yes", Display: "Sure, go for it!"}, - {Payload: "no", Display: "Show me all you can do instead!"}, - } - if err := bot.interactUserMessage(ctx, body, conversation.GetPublicKey(), options); err != nil { + if err := bot.interactUserMessage(ctx, body, conversation.GetPublicKey()); err != nil { return fmt.Errorf("interact user message failed: %w", err) } return nil @@ -580,7 +571,7 @@ Just type 'yes' to let me know you copy that.` // internal stuff -func (bot *Bot) interactUserMessage(ctx context.Context, body string, conversationPK string, replyOption []*messengertypes.ReplyOption) error { +func (bot *Bot) interactUserMessage(ctx context.Context, body string, conversationPK string) error { time.Sleep(3 * time.Second) userMessage, err := proto.Marshal(&messengertypes.AppMessage_UserMessage{Body: body}) if err != nil { @@ -595,25 +586,6 @@ func (bot *Bot) interactUserMessage(ctx context.Context, body string, conversati return fmt.Errorf("interact user message failed: %w", err) } - // send reply options - { - convPKBytes, err := base64.RawURLEncoding.DecodeString(conversationPK) - if err != nil { - return fmt.Errorf("conversation convPK failed: %w", err) - } - if replyOption != nil { - _, err := bot.client.SendReplyOptions(ctx, &messengertypes.SendReplyOptions_Request{ - GroupPK: convPKBytes, - Options: &messengertypes.AppMessage_ReplyOptions{ - Options: replyOption, - }, - }) - if err != nil { - return fmt.Errorf("interact reply options failed: %w", err) - } - } - } - return nil } @@ -671,13 +643,6 @@ func safeDefaultDisplayName() string { return fmt.Sprintf("%s (Welcome Bot)", name) } -func defaultReplyOption() []*messengertypes.ReplyOption { - return []*messengertypes.ReplyOption{ - {Payload: "/help", Display: "Display Welcome Bot commands"}, - {Payload: "/demo version", Display: "What is the demo version?"}, - } -} - func getRandomReply() string { available := []string{ "Welcome to Berty v1!", diff --git a/go/gen.sum b/go/gen.sum index fb605473ea..f2d547ee56 100644 --- a/go/gen.sum +++ b/go/gen.sum @@ -7,7 +7,7 @@ c9a201bb6dc2e1ef5b6fd17f5195b551d17bef05 ../api/errcode.proto c314cc3d08e8849bd0693039e42da117c39efef5 ../api/go-internal/handshake.proto 9b4665f0290b8e94e5ef4b80572a9304f587c2c7 ../api/go-internal/records.proto 851d354abf878a3afd1e1759511b7b3ce297330f ../api/go-internal/testutil.proto -038786285fbde081c2458fb39723f3d8f5648330 ../api/messengertypes.proto -8a16aed5c26c8c37bb8184d49d192fdce7f26574 ../api/protocoltypes.proto -429ad083ef1963a77adc439239118d0db65c9d37 ../api/pushtypes.proto +18f4402787527160b0aacf5524e44cf8c3ac16ad ../api/messengertypes.proto +4b02b0a87caabb590c2c6fee507d0987e5bf5d70 ../api/protocoltypes.proto +e4a9d6765ed04780b20d6e4cbfa10162e36c5e48 ../api/pushtypes.proto a0c9fafea6663cd3d17d9869d0393fc1a942083a Makefile diff --git a/go/internal/cryptoutil/attachment_crypto.go b/go/internal/cryptoutil/attachment_crypto.go deleted file mode 100644 index cc08d03f91..0000000000 --- a/go/internal/cryptoutil/attachment_crypto.go +++ /dev/null @@ -1,181 +0,0 @@ -package cryptoutil - -import ( - "bytes" - "crypto/cipher" - "fmt" - "io" - "math/big" - - libp2pcrypto "github.com/libp2p/go-libp2p-core/crypto" - "go.uber.org/zap" - "golang.org/x/crypto/chacha20poly1305" - "golang.org/x/crypto/hkdf" - "golang.org/x/crypto/nacl/secretbox" - "golang.org/x/crypto/sha3" - - "berty.tech/berty/v2/go/internal/streamutil" - "berty.tech/berty/v2/go/pkg/errcode" - "berty.tech/berty/v2/go/pkg/protocoltypes" -) - -// ⚠⚠⚠ FIXME: Needs thorough security review ⚠⚠⚠ - -const ( - attachmentCipherblockSize = 64 * 1024 - attachmentNonceIV = 0 - attachmentKeyV0Prefix = "/libp2psk+xchacha20poly1305_64_0/" // TODO: replace when multikey rolls out -) - -// - DATA ENCRYPTION - -type attachmentCipher struct { - nonce *big.Int - nonceBuf [chacha20poly1305.NonceSizeX]byte - aead cipher.AEAD -} - -func attachmentNewCipher(sk libp2pcrypto.PrivKey) (*attachmentCipher, error) { - key, err := SeedFromEd25519PrivateKey(sk) - if err != nil { - return nil, errcode.ErrInvalidInput.Wrap(err) - } - if len(key) < chacha20poly1305.KeySize { - return nil, errcode.ErrInvalidInput.Wrap(fmt.Errorf("bad key size, got %d, expected to be >= %d", len(key), chacha20poly1305.KeySize)) - } - - aead, err := chacha20poly1305.NewX(key[:chacha20poly1305.KeySize]) - if err != nil { - return nil, errcode.ErrCryptoCipherInit.Wrap(err) - } - - ac := attachmentCipher{ - aead: aead, - nonce: big.NewInt(attachmentNonceIV), - } - - return &ac, nil -} - -var bigOne = big.NewInt(1) - -func AttachmentSealer(plaintext io.Reader, l *zap.Logger) (libp2pcrypto.PrivKey, *io.PipeReader, error) { - sk, _, err := libp2pcrypto.GenerateKeyPair(libp2pcrypto.Ed25519, 0) - if err != nil { - return nil, nil, errcode.ErrCryptoKeyGeneration.Wrap(err) - } - - ac, err := attachmentNewCipher(sk) - if err != nil { - return nil, nil, errcode.ErrCryptoCipherInit.Wrap(err) - } - - return sk, streamutil.FuncBlockTransformer(make([]byte, attachmentCipherblockSize-ac.aead.Overhead()), plaintext, l, func(pt []byte) ([]byte, error) { - bigIntFillBytes(ac.nonce, ac.nonceBuf[:]) - - ct := ac.aead.Seal([]byte(nil), ac.nonceBuf[:], pt, []byte(nil)) - - ac.nonce.Add(ac.nonce, bigOne) - - return ct, nil - }), nil -} - -func AttachmentOpener(ciphertext io.Reader, sk libp2pcrypto.PrivKey, l *zap.Logger) (*io.PipeReader, error) { - ac, err := attachmentNewCipher(sk) - if err != nil { - return nil, errcode.ErrCryptoCipherInit.Wrap(err) - } - - return streamutil.FuncBlockTransformer(make([]byte, attachmentCipherblockSize), ciphertext, l, func(ct []byte) ([]byte, error) { - bigIntFillBytes(ac.nonce, ac.nonceBuf[:]) - - pt, err := ac.aead.Open([]byte(nil), ac.nonceBuf[:], ct, []byte(nil)) - if err != nil { - return nil, errcode.ErrCryptoDecrypt.Wrap(err) - } - - ac.nonce.Add(ac.nonce, bigOne) - - return pt, nil - }), nil -} - -// - KEY SERIALIZATION - -func attachmentKeyMarshal(sk libp2pcrypto.PrivKey) ([]byte, error) { - skBytes, err := libp2pcrypto.MarshalPrivateKey(sk) - if err != nil { - return nil, errcode.ErrSerialization.Wrap(err) - } - - return append([]byte(attachmentKeyV0Prefix), skBytes...), nil -} - -func attachmentKeyUnmarshal(s []byte) (libp2pcrypto.PrivKey, error) { - if len(s) <= len(attachmentKeyV0Prefix) || !bytes.Equal(s[:len(attachmentKeyV0Prefix)], []byte(attachmentKeyV0Prefix)) { - return nil, errcode.ErrInvalidInput.Wrap(fmt.Errorf("invalid secret prefix")) - } - skBytes := s[len(attachmentKeyV0Prefix):] - - sk, err := libp2pcrypto.UnmarshalPrivateKey(skBytes) - if err != nil { - return nil, errcode.ErrDeserialization.Wrap(err) - } - - return sk, nil -} - -// - CID ENCRYPTION - -func attachmentCIDEncryptionKey(source *[KeySize]byte) (*[KeySize]byte, error) { - hkdf := hkdf.New(sha3.New256, source[:], nil, []byte("cid encryption v0")) - - var key [KeySize]byte - if _, err := io.ReadFull(hkdf, key[:]); err != nil { - return nil, errcode.ErrStreamRead.Wrap(err) - } - - return &key, nil -} - -func attachmentCIDEncrypt(sk *[KeySize]byte, cid []byte) ([]byte, error) { - nonce, err := GenerateNonce() - if err != nil { - return nil, errcode.ErrCryptoNonceGeneration.Wrap(err) - } - - return append(nonce[:], secretbox.Seal(nil, cid, nonce, sk)...), nil -} - -func attachmentCIDDecrypt(sk *[KeySize]byte, eCID []byte) ([]byte, error) { - if len(eCID) <= NonceSize { - return nil, errcode.ErrInvalidInput.Wrap(fmt.Errorf("encrypted cid too small, got %v, expected to be > %v", len(eCID), NonceSize)) - } - - var nonce [NonceSize]byte - _ = copy(nonce[:], eCID[:NonceSize]) - - cid, ok := secretbox.Open(nil, eCID[NonceSize:], &nonce, sk) - if !ok { - return nil, errcode.ErrCryptoDecrypt - } - - return cid, nil -} - -func AttachmentCIDSliceEncrypt(g *protocoltypes.Group, cids [][]byte) ([][]byte, error) { - sk, err := attachmentCIDEncryptionKey(GetSharedSecret(g)) - if err != nil { - return nil, errcode.ErrCryptoKeyDerivation.Wrap(err) - } - return mapBufArray(cids, func(cid []byte) ([]byte, error) { return attachmentCIDEncrypt(sk, cid) }) -} - -func AttachmentCIDSliceDecrypt(g *protocoltypes.Group, eCIDs [][]byte) ([][]byte, error) { - sk, err := attachmentCIDEncryptionKey(GetSharedSecret(g)) - if err != nil { - return nil, errcode.ErrCryptoKeyDerivation.Wrap(err) - } - return mapBufArray(eCIDs, func(eCID []byte) ([]byte, error) { return attachmentCIDDecrypt(sk, eCID) }) -} diff --git a/go/internal/cryptoutil/attachment_utils.go b/go/internal/cryptoutil/attachment_utils.go deleted file mode 100644 index 87f36aaf79..0000000000 --- a/go/internal/cryptoutil/attachment_utils.go +++ /dev/null @@ -1,36 +0,0 @@ -package cryptoutil - -import ( - "math/big" - - "berty.tech/berty/v2/go/pkg/errcode" -) - -// shim for go1.14 -func bigIntFillBytes(bi *big.Int, buf []byte) { - // Clear whole buffer. (This gets optimized into a memclr.) - for i := range buf { - buf[i] = 0 - } - - bytes := bi.Bytes() - max := len(bytes) - if len(buf) < max { - max = len(buf) - } - for i := 0; i < max; i++ { - buf[i] = bytes[i] - } -} - -func mapBufArray(in [][]byte, transform func([]byte) ([]byte, error)) ([][]byte, error) { - var err error - out := make([][]byte, len(in)) - for i, elem := range in { - out[i], err = transform(elem) - if err != nil { - return nil, errcode.ErrMap.Wrap(err) - } - } - return out, nil -} diff --git a/go/internal/cryptoutil/keystore_device.go b/go/internal/cryptoutil/keystore_device.go index 44f3dbd4eb..6734024e52 100644 --- a/go/internal/cryptoutil/keystore_device.go +++ b/go/internal/cryptoutil/keystore_device.go @@ -11,12 +11,10 @@ import ( "sync" "github.com/aead/ecdh" - ipfscid "github.com/ipfs/go-cid" keystore "github.com/ipfs/go-ipfs-keystore" "github.com/libp2p/go-libp2p-core/crypto" "go.uber.org/zap" - "berty.tech/berty/v2/go/internal/logutil" "berty.tech/berty/v2/go/pkg/errcode" "berty.tech/berty/v2/go/pkg/protocoltypes" ) @@ -28,12 +26,6 @@ type DeviceKeystore interface { ContactGroupPrivKey(pk crypto.PubKey) (crypto.PrivKey, error) MemberDeviceForGroup(g *protocoltypes.Group) (*OwnMemberDevice, error) RestoreAccountKeys(accountKey crypto.PrivKey, accountProofKey crypto.PrivKey) error - AttachmentPrivKey(cid []byte) (crypto.PrivKey, error) - AttachmentPrivKeyPut(cid []byte, sk crypto.PrivKey) error - AttachmentSecret(cid []byte) ([]byte, error) - AttachmentSecretPut(cid []byte, secret []byte) error - AttachmentSecretSlice(cids [][]byte) ([][]byte, error) - AttachmentSecretSlicePut(cids, secrets [][]byte) error } type deviceKeystore struct { @@ -256,97 +248,6 @@ func (a *deviceKeystore) RestoreAccountKeys(sk crypto.PrivKey, proofSK crypto.Pr return nil } -func (a *deviceKeystore) AttachmentPrivKey(cidBytes []byte) (crypto.PrivKey, error) { - id, err := attachmentKeyIDFromCID(cidBytes) - if err != nil { - return nil, err - } - - a.mu.Lock() - defer a.mu.Unlock() - - key, err := a.ks.Get(id) - if err != nil { - return nil, errcode.ErrKeystoreGet.Wrap(err) - } - - return key, nil -} - -func (a *deviceKeystore) AttachmentPrivKeyPut(cidBytes []byte, sk crypto.PrivKey) error { - id, err := attachmentKeyIDFromCID(cidBytes) - if err != nil { - return err - } - - a.mu.Lock() - defer a.mu.Unlock() - - existing, err := a.ks.Get(id) - if err == nil && existing.Equals(sk) { - return nil // we already have the same key, do nothing instead of returning an error - } - - err = a.ks.Put(id, sk) - if err != nil { - return errcode.ErrKeystorePut.Wrap(err) - } - - return nil -} - -func attachmentKeyIDFromCID(cidBytes []byte) (string, error) { - cid, err := ipfscid.Cast(cidBytes) - if err != nil { - return "", errcode.ErrDeserialization.Wrap(err) - } - return attachmentKeyV0Prefix + cid.String(), nil -} - -func (a *deviceKeystore) AttachmentSecret(cidBytes []byte) ([]byte, error) { - key, err := a.AttachmentPrivKey(cidBytes) - if err != nil { - return nil, errcode.ErrKeystoreGet.Wrap(err) - } - s, err := attachmentKeyMarshal(key) - if err != nil { - return nil, errcode.ErrSerialization.Wrap(err) - } - return s, nil -} - -func (a *deviceKeystore) AttachmentSecretPut(cidBytes []byte, s []byte) error { - sk, err := attachmentKeyUnmarshal(s) - if err != nil { - a.logger.Error("unable to unmarshal attachment secret", logutil.PrivateBinary("secret", s), logutil.PrivateBinary("cid-bytes", cidBytes), zap.Error(err)) - return errcode.ErrDeserialization.Wrap(err) - } - - err = a.AttachmentPrivKeyPut(cidBytes, sk) - if err != nil { - return errcode.ErrKeystorePut.Wrap(err) - } - return nil -} - -func (a *deviceKeystore) AttachmentSecretSlice(cids [][]byte) ([][]byte, error) { - return mapBufArray(cids, a.AttachmentSecret) -} - -func (a *deviceKeystore) AttachmentSecretSlicePut(cids, secrets [][]byte) error { - if len(cids) != len(secrets) { - return errcode.ErrInvalidInput.Wrap(fmt.Errorf("length mismatch (%d cids for %d secrets)", len(cids), len(secrets))) - } - - for i, cid := range cids { - err := a.AttachmentSecretPut(cid, secrets[i]) - if err != nil { - return errcode.ErrForEach.Wrap(err) - } - } - return nil -} - // OwnMemberDevice is own local Device part of a group type OwnMemberDevice struct { member crypto.PrivKey diff --git a/go/internal/cryptoutil/keystore_message.go b/go/internal/cryptoutil/keystore_message.go index 4a1d5ff4e8..fac095a1db 100644 --- a/go/internal/cryptoutil/keystore_message.go +++ b/go/internal/cryptoutil/keystore_message.go @@ -398,56 +398,46 @@ func (m *MessageKeystore) OpenEnvelopePayload( g *protocoltypes.Group, ownPK crypto.PubKey, id cid.Cid, -) (*protocoltypes.EncryptedMessage, [][]byte, error) { +) (*protocoltypes.EncryptedMessage, error) { gPK, err := g.GetPubKey() if err != nil { - return nil, nil, errcode.ErrDeserialization.Wrap(err) + return nil, errcode.ErrDeserialization.Wrap(err) } msgBytes, decryptInfo, err := m.OpenPayload(ctx, id, gPK, env.Message, headers) if err != nil { - return nil, nil, errcode.ErrCryptoDecryptPayload.Wrap(err) + return nil, errcode.ErrCryptoDecryptPayload.Wrap(err) } if err := m.PostDecryptActions(ctx, decryptInfo, g, ownPK, headers); err != nil { - return nil, nil, errcode.TODO.Wrap(err) + return nil, errcode.TODO.Wrap(err) } var msg protocoltypes.EncryptedMessage err = msg.Unmarshal(msgBytes) if err != nil { - return nil, nil, errcode.ErrDeserialization.Wrap(err) - } - - attachmentsCIDs, err := AttachmentCIDSliceDecrypt(g, env.GetEncryptedAttachmentCIDs()) - if err != nil { - return nil, nil, errcode.ErrCryptoDecrypt.Wrap(err) + return nil, errcode.ErrDeserialization.Wrap(err) } - return &msg, attachmentsCIDs, nil + return &msg, nil } -func (m *MessageKeystore) OpenEnvelope( - ctx context.Context, - g *protocoltypes.Group, - ownPK crypto.PubKey, - data []byte, id cid.Cid, -) (*protocoltypes.MessageHeaders, *protocoltypes.EncryptedMessage, [][]byte, error) { +func (m *MessageKeystore) OpenEnvelope(ctx context.Context, g *protocoltypes.Group, ownPK crypto.PubKey, data []byte, id cid.Cid) (*protocoltypes.MessageHeaders, *protocoltypes.EncryptedMessage, error) { if m == nil || g == nil { - return nil, nil, nil, errcode.ErrInvalidInput + return nil, nil, errcode.ErrInvalidInput } env, headers, err := OpenEnvelopeHeaders(data, g) if err != nil { - return nil, nil, nil, errcode.ErrCryptoDecrypt.Wrap(err) + return nil, nil, errcode.ErrCryptoDecrypt.Wrap(err) } - msg, attachmentsCIDs, err := m.OpenEnvelopePayload(ctx, env, headers, g, ownPK, id) + msg, err := m.OpenEnvelopePayload(ctx, env, headers, g, ownPK, id) if err != nil { - return nil, nil, nil, errcode.TODO.Wrap(err) + return nil, nil, errcode.TODO.Wrap(err) } - return headers, msg, attachmentsCIDs, nil + return headers, msg, nil } func (m *MessageKeystore) OpenPayload(ctx context.Context, id cid.Cid, groupPK crypto.PubKey, payload []byte, headers *protocoltypes.MessageHeaders) ([]byte, *DecryptInfo, error) { @@ -560,7 +550,7 @@ func (m *MessageKeystore) putDeviceChainKey(ctx context.Context, groupPK, device return nil } -func (m *MessageKeystore) SealEnvelope(ctx context.Context, g *protocoltypes.Group, deviceSK crypto.PrivKey, payload []byte, attachmentsCIDs [][]byte) ([]byte, error) { +func (m *MessageKeystore) SealEnvelope(ctx context.Context, g *protocoltypes.Group, deviceSK crypto.PrivKey, payload []byte) ([]byte, error) { if m == nil { return nil, errcode.ErrInvalidInput } @@ -582,7 +572,7 @@ func (m *MessageKeystore) SealEnvelope(ctx context.Context, g *protocoltypes.Gro return nil, errcode.ErrInternal.Wrap(fmt.Errorf("unable to get device chainkey: %w", err)) } - env, err := SealEnvelope(payload, ds, deviceSK, g, attachmentsCIDs) + env, err := SealEnvelope(payload, ds, deviceSK, g) if err != nil { return nil, errcode.ErrCryptoEncrypt.Wrap(fmt.Errorf("unable to seal envelope: %w", err)) } diff --git a/go/internal/cryptoutil/keystore_message_utils.go b/go/internal/cryptoutil/keystore_message_utils.go index c8330954ef..615752c6a9 100644 --- a/go/internal/cryptoutil/keystore_message_utils.go +++ b/go/internal/cryptoutil/keystore_message_utils.go @@ -37,7 +37,7 @@ func SealPayload(payload []byte, ds *protocoltypes.DeviceSecret, deviceSK crypto return secretbox.Seal(nil, payload, uint64AsNonce(ds.Counter+1), &msgKey), sig, nil } -func SealEnvelope(payload []byte, ds *protocoltypes.DeviceSecret, deviceSK crypto.PrivKey, g *protocoltypes.Group, attachmentsCIDs [][]byte) ([]byte, error) { +func SealEnvelope(payload []byte, ds *protocoltypes.DeviceSecret, deviceSK crypto.PrivKey, g *protocoltypes.Group) ([]byte, error) { encryptedPayload, sig, err := SealPayload(payload, ds, deviceSK, g) if err != nil { return nil, errcode.ErrCryptoEncrypt.Wrap(err) @@ -66,16 +66,10 @@ func SealEnvelope(payload []byte, ds *protocoltypes.DeviceSecret, deviceSK crypt encryptedHeaders := secretbox.Seal(nil, headers, nonce, GetSharedSecret(g)) - encryptedAttachmentsCIDs, err := AttachmentCIDSliceEncrypt(g, attachmentsCIDs) - if err != nil { - return nil, errcode.ErrCryptoEncrypt.Wrap(err) - } - env, err := proto.Marshal(&protocoltypes.MessageEnvelope{ - MessageHeaders: encryptedHeaders, - Message: encryptedPayload, - Nonce: nonce[:], - EncryptedAttachmentCIDs: encryptedAttachmentsCIDs, + MessageHeaders: encryptedHeaders, + Message: encryptedPayload, + Nonce: nonce[:], }) if err != nil { return nil, errcode.ErrSerialization.Wrap(err) diff --git a/go/internal/cryptoutil/keystore_message_utils_test.go b/go/internal/cryptoutil/keystore_message_utils_test.go index 4f9b9c68ce..fc1d5075ce 100644 --- a/go/internal/cryptoutil/keystore_message_utils_test.go +++ b/go/internal/cryptoutil/keystore_message_utils_test.go @@ -303,10 +303,10 @@ func Test_EncryptMessageEnvelope(t *testing.T) { err = mkh2.RegisterChainKey(ctx, g, omd1.PrivateDevice().GetPublic(), ds1, false) assert.NoError(t, err) - env1, err := cryptoutil.SealEnvelope(payloadRef1, ds1, omd1.PrivateDevice(), g, nil) + env1, err := cryptoutil.SealEnvelope(payloadRef1, ds1, omd1.PrivateDevice(), g) assert.NoError(t, err) - headers, payloadClr1, _, err := mkh2.OpenEnvelope(ctx, g, omd2.PrivateDevice().GetPublic(), env1, cid.Undef) + headers, payloadClr1, err := mkh2.OpenEnvelope(ctx, g, omd2.PrivateDevice().GetPublic(), env1, cid.Undef) assert.NoError(t, err) devRaw, err := omd1.PrivateDevice().GetPublic().Raw() @@ -364,7 +364,7 @@ func Test_EncryptMessageEnvelopeAndDerive(t *testing.T) { for i := 0; i < 1000; i++ { payloadRef, err := (&protocoltypes.EncryptedMessage{Plaintext: []byte("Test payload 1")}).Marshal() assert.NoError(t, err) - envEncrypted, err := mkh1.SealEnvelope(ctx, g, omd1.PrivateDevice(), payloadRef, nil) + envEncrypted, err := mkh1.SealEnvelope(ctx, g, omd1.PrivateDevice(), payloadRef) assert.NoError(t, err) ds, err := mkh1.GetDeviceChainKey(ctx, gPK, gc1.DevicePubKey()) @@ -373,7 +373,7 @@ func Test_EncryptMessageEnvelopeAndDerive(t *testing.T) { } assert.Equal(t, ds.Counter, initialCounter+uint64(i+1)) - headers, payloadClr, _, err := mkh2.OpenEnvelope(ctx, g, omd2.PrivateDevice().GetPublic(), envEncrypted, cid.Undef) + headers, payloadClr, err := mkh2.OpenEnvelope(ctx, g, omd2.PrivateDevice().GetPublic(), envEncrypted, cid.Undef) if !assert.NoError(t, err) { t.Fatalf("failed at i = %d", i) } diff --git a/go/internal/messengerdb/db.go b/go/internal/messengerdb/db.go index f6fbe6b7e6..afc231177e 100644 --- a/go/internal/messengerdb/db.go +++ b/go/internal/messengerdb/db.go @@ -114,8 +114,6 @@ func getDBModels() []interface{} { &messengertypes.Member{}, &messengertypes.Device{}, &messengertypes.ConversationReplicationInfo{}, - &messengertypes.Media{}, - &messengertypes.Reaction{}, &messengertypes.MetadataEvent{}, &messengertypes.SharedPushToken{}, } @@ -316,9 +314,6 @@ func (d *DBWrapper) UpdateConversation(c messengertypes.Conversation) (bool, err if c.SharedPushTokenIdentifier != "" { columns = append(columns, "shared_push_token_identifier") } - if c.AvatarCID != "" { - columns = append(columns, "avatar_cid") - } if c.InfoDate != 0 { columns = append(columns, "info_date") } @@ -360,13 +355,6 @@ func (d *DBWrapper) UpdateConversationReadState(pk string, newUnread bool, event updates["unread_count"] = gorm.Expr("unread_count + 1") } - replyOptionsCID, err := d.GetReplyOptionsCIDForConversation(pk) - if err != nil { - return err - } - - updates["reply_options_cid"] = replyOptionsCID - // db update tx := d.db.Model(&messengertypes.Conversation{}).Where(&messengertypes.Conversation{PublicKey: pk}).Updates(updates) @@ -400,7 +388,7 @@ func (d *DBWrapper) FirstOrCreateAccount(pk, link string) error { return nil } -func (d *DBWrapper) UpdateAccount(pk, url, displayName, avatarCID string) (*messengertypes.Account, error) { +func (d *DBWrapper) UpdateAccount(pk, url, displayName string) (*messengertypes.Account, error) { if pk == "" { return nil, errcode.ErrInvalidInput.Wrap(fmt.Errorf("an account public key is required")) } @@ -414,9 +402,6 @@ func (d *DBWrapper) UpdateAccount(pk, url, displayName, avatarCID string) (*mess if displayName != "" { values["display_name"] = displayName } - if avatarCID != "" { - values["avatar_cid"] = avatarCID - } tx := d.db.Model(&messengertypes.Account{}).Where(&messengertypes.Account{PublicKey: pk}).Updates(values).First(&acc) if tx.Error != nil { @@ -480,7 +465,6 @@ func (d *DBWrapper) GetConversationByPK(publicKey string) (*messengertypes.Conve conversation := &messengertypes.Conversation{} if err := d.db. - Joins("ReplyOptions", d.db.Select("cid").Where("cid = conversations.reply_options_cid").Model(&messengertypes.Interaction{})). Preload("ReplicationInfo"). First( &conversation, @@ -513,7 +497,7 @@ func (d *DBWrapper) GetMemberByPK(publicKey string, convPK string) (*messengerty func (d *DBWrapper) GetAllConversations() ([]*messengertypes.Conversation, error) { convs := []*messengertypes.Conversation(nil) - return convs, d.db.Joins("ReplyOptions", d.db.Select("cid").Where("cid = conversations.reply_options_cid").Model(&messengertypes.Interaction{})).Preload("ReplicationInfo").Find(&convs).Error + return convs, d.db.Preload("ReplicationInfo").Find(&convs).Error } func (d *DBWrapper) GetAllMembers() ([]*messengertypes.Member, error) { @@ -540,7 +524,7 @@ func (d *DBWrapper) GetAllInteractions() ([]*messengertypes.Interaction, error) return interactions, d.db.Preload(clause.Associations).Find(&interactions).Error } -func (d *DBWrapper) GetPaginatedInteractions(opts *messengertypes.PaginatedInteractionsOptions) ([]*messengertypes.Interaction, []*messengertypes.Media, error) { +func (d *DBWrapper) GetPaginatedInteractions(opts *messengertypes.PaginatedInteractionsOptions) ([]*messengertypes.Interaction, error) { if opts == nil { opts = &messengertypes.PaginatedInteractionsOptions{} } @@ -551,24 +535,23 @@ func (d *DBWrapper) GetPaginatedInteractions(opts *messengertypes.PaginatedInter var conversationPks, cids []string interactions := []*messengertypes.Interaction(nil) - medias := []*messengertypes.Media(nil) previousInteraction := (*messengertypes.Interaction)(nil) if opts.ConversationPK != "" { conversationPks = []string{opts.ConversationPK} } else if err := d.db.Model(&messengertypes.Conversation{}).Pluck("public_key", &conversationPks).Error; err != nil { - return nil, nil, errcode.ErrDBRead.Wrap(fmt.Errorf("unable to list conversation ids: %w", err)) + return nil, errcode.ErrDBRead.Wrap(fmt.Errorf("unable to list conversation ids: %w", err)) } if opts.RefCID != "" { var err error previousInteraction, err = d.GetInteractionByCID(opts.RefCID) if err != nil { - return nil, nil, errcode.ErrDBRead.Wrap(fmt.Errorf("unable to retrieve specified interaction: %w", err)) + return nil, errcode.ErrDBRead.Wrap(fmt.Errorf("unable to retrieve specified interaction: %w", err)) } if opts.ConversationPK != "" && previousInteraction.ConversationPublicKey != opts.ConversationPK { - return nil, nil, errcode.ErrInvalidInput.Wrap(fmt.Errorf("specified interaction cid and conversation pk doesn't match")) + return nil, errcode.ErrInvalidInput.Wrap(fmt.Errorf("specified interaction cid and conversation pk doesn't match")) } conversationPks = []string{previousInteraction.ConversationPublicKey} @@ -599,14 +582,14 @@ func (d *DBWrapper) GetPaginatedInteractions(opts *messengertypes.PaginatedInter Order(order). Pluck("cid", &cidsForConv). Error; err != nil { - return nil, nil, errcode.ErrDBRead.Wrap(fmt.Errorf("unable to list latest cids for conversation: %w", err)) + return nil, errcode.ErrDBRead.Wrap(fmt.Errorf("unable to list latest cids for conversation: %w", err)) } cids = append(cids, cidsForConv...) } if len(cids) == 0 { - return nil, nil, nil + return nil, nil } if err := d.db. @@ -614,31 +597,10 @@ func (d *DBWrapper) GetPaginatedInteractions(opts *messengertypes.PaginatedInter Order(order). Find(&interactions, cids). Error; err != nil { - return nil, nil, errcode.ErrDBRead.Wrap(fmt.Errorf("unable to fetch interactions: %w", err)) - } - - if !opts.ExcludeMedias { - if err := d.db. - Preload(clause.Associations). - Model(&messengertypes.Media{}). - Where("media.interaction_cid IN (?)", cids). - Find(&medias). - Error; err != nil { - return nil, nil, errcode.ErrDBRead.Wrap(fmt.Errorf("unable to fetch medias: %w", err)) - } - } - - // TODO: find a way to do this in one SQL call instead of parsing and do a db call for each interaction - for _, interaction := range interactions { - var err error - // add reactions to interaction - interaction.Reactions, err = d.BuildReactionsView(interaction.CID) - if err != nil { - return nil, nil, errcode.ErrDBRead.Wrap(err) - } + return nil, errcode.ErrDBRead.Wrap(fmt.Errorf("unable to fetch interactions: %w", err)) } - return interactions, medias, nil + return interactions, nil } func (d *DBWrapper) GetInteractionByCID(cid string) (*messengertypes.Interaction, error) { @@ -865,15 +827,9 @@ func (d *DBWrapper) GetDBInfo() (*messengertypes.SystemInfo_DB, error) { infos.ConversationReplicationInfo, err = d.dbModelRowsCount(messengertypes.ConversationReplicationInfo{}) errs = multierr.Append(errs, err) - infos.Reactions, err = d.dbModelRowsCount(messengertypes.Reaction{}) - errs = multierr.Append(errs, err) - infos.MetadataEvents, err = d.dbModelRowsCount(messengertypes.MetadataEvent{}) errs = multierr.Append(errs, err) - infos.Medias, err = d.dbModelRowsCount(messengertypes.Media{}) - errs = multierr.Append(errs, err) - infos.SharedPushTokens, err = d.dbModelRowsCount(messengertypes.SharedPushToken{}) errs = multierr.Append(errs, err) @@ -998,35 +954,6 @@ func (d *DBWrapper) AddInteraction(rawInte messengertypes.Interaction) (*messeng return i, isNew, nil } -func (d *DBWrapper) GetReplyOptionsCIDForConversation(pk string) (string, error) { - if pk == "" { - return "", errcode.ErrInvalidInput.Wrap(fmt.Errorf("a conversation public key is required")) - } - - cid := "" - - if err := d.db.Model(&messengertypes.Interaction{}). - Raw(`SELECT cid - FROM interactions - WHERE conversation_public_key = ? - AND ROWID > - IFNULL (( - SELECT MAX(ROWID) - FROM interactions - WHERE conversation_public_key = ? - AND is_mine = true - ), 0) - AND is_mine = false - AND type = ? - ORDER BY ROWID DESC - LIMIT 1 - `, pk, pk, messengertypes.AppMessage_TypeReplyOptions).Scan(&cid).Error; err != nil { - return "", err - } - - return cid, nil -} - func (d *DBWrapper) AttributeBacklogInteractions(devicePK, groupPK, memberPK string) ([]*messengertypes.Interaction, error) { if devicePK == "" { return nil, errcode.ErrInvalidInput.Wrap(fmt.Errorf("missing device public key")) @@ -1094,7 +1021,6 @@ func (d *DBWrapper) AddMember(memberPK, groupPK, displayName, avatarCID string, member := &messengertypes.Member{ PublicKey: memberPK, ConversationPublicKey: groupPK, - AvatarCID: avatarCID, IsCreator: isCreator, IsMe: isMe, DisplayName: displayName, @@ -1310,141 +1236,6 @@ func (d *DBWrapper) SaveConversationReplicationInfo(c messengertypes.Conversatio return nil } -func (d *DBWrapper) AddMedias(medias []*messengertypes.Media) ([]bool, error) { - if len(medias) == 0 { - return []bool{}, nil - } - - for _, m := range medias { - if err := messengerutil.EnsureValidBase64CID(m.GetCID()); err != nil { - return nil, errcode.ErrInvalidInput.Wrap(err) - } - } - - var dbMedias []*messengertypes.Media - cids := make([]string, len(medias)) - for i, m := range medias { - cids[i] = m.GetCID() - } - if err := d.db.Model(&messengertypes.Media{}).Where("cid IN ?", cids).Find(&dbMedias).Error; err != nil { - return nil, errcode.ErrDBRead.Wrap(err) - } - - willAdd := make([]bool, len(medias)) - for i, m := range medias { - found := false - for _, n := range dbMedias { - if m.GetCID() == n.GetCID() { - found = true - break - } - } - if !found { - willAdd[i] = true - } - } - - if err := d.db.Clauses(clause.OnConflict{DoNothing: true}).Create(medias).Error; err != nil { - return nil, errcode.ErrDBWrite.Wrap(err) - } - - d.logStep(fmt.Sprintf("Maybe added %d/%d medias to db", len(willAdd), len(medias)), tyber.WithJSONDetail("InputMedias", medias), tyber.WithJSONDetail("Added", willAdd)) - return willAdd, nil -} - -// atomic -func (d *DBWrapper) GetMedias(cids []string) ([]*messengertypes.Media, error) { - if len(cids) == 0 { - return nil, nil - } - for _, c := range cids { - if err := messengerutil.EnsureValidBase64CID(c); err != nil { - return nil, errcode.ErrInvalidInput.Wrap(err) - } - } - - var dbMedias []*messengertypes.Media - err := d.db.Model(&messengertypes.Media{}).Where("cid IN ?", cids).Find(&dbMedias).Error - if err != nil { - return nil, errcode.ErrDBRead.Wrap(err) - } - - medias := make([]*messengertypes.Media, len(cids)) - for i, cid := range cids { - medias[i] = &messengertypes.Media{CID: cid} - for _, dbMedia := range dbMedias { - if dbMedia.GetCID() == cid { - medias[i] = dbMedia - } - } - } - return medias, nil -} - -func (d *DBWrapper) GetAllMedias() ([]*messengertypes.Media, error) { - var medias []*messengertypes.Media - err := d.db.Find(&medias).Error - if err != nil { - return nil, errcode.ErrDBRead.Wrap(err) - } - return medias, nil -} - -type NextMediaOpts struct { - FileNames []string - MimeTypes []string -} - -func (d *DBWrapper) GetNextMedia(lastCID string, opts NextMediaOpts) (*messengertypes.Media, error) { - cid := "" - media := &messengertypes.Media{} - - query := ` - SELECT media.cid - FROM interactions - JOIN media ON media.interaction_cid = interactions.cid - JOIN ( - SELECT conversation_public_key, sent_date - FROM interactions - WHERE cid = ( - SELECT interaction_cid FROM media WHERE cid = ? - ) - ) as ctx_ref - WHERE interactions.conversation_public_key = ctx_ref.conversation_public_key - AND interactions.sent_date > ctx_ref.sent_date` - - queryArgs := []interface{}{lastCID} - - if len(opts.MimeTypes) > 0 { - query += ` - AND media.mime_type IN ?` - queryArgs = append(queryArgs, opts.MimeTypes) - } - - if len(opts.FileNames) > 0 { - query += ` - AND media.filename IN ?` - queryArgs = append(queryArgs, opts.FileNames) - } - - query += ` - LIMIT 1` - - if err := d.db.Model(&messengertypes.Media{}).Raw(query, queryArgs...).Scan(&cid).Error; err != nil { - return nil, err - } - - if cid == "" { - return nil, errcode.ErrNotFound - } - - if err := d.db.Model(&messengertypes.Media{}).First(&media, &messengertypes.Media{CID: cid}).Error; err != nil { - return nil, errcode.ErrDBRead.Wrap(err) - } - - return media, nil -} - func (d *DBWrapper) InteractionIndexText(interactionCID string, text string) error { if d.disableFTS { d.log.Info("full text search is not enabled") @@ -1582,25 +1373,9 @@ func (d *DBWrapper) GetAugmentedInteraction(cid string) (*messengertypes.Interac return nil, errcode.ErrDBRead.Wrap(err) } - inte.Reactions, err = d.BuildReactionsView(cid) - if err != nil { - return nil, errcode.ErrDBRead.Wrap(err) - } - return inte, nil } -func (d *DBWrapper) BuildReactionsView(cid string) ([]*messengertypes.Interaction_ReactionView, error) { - views := ([]*messengertypes.Interaction_ReactionView)(nil) - if err := d.db.Raw( - "SELECT count(*) AS count, emoji, MAX(is_mine) > 0 AS own_state FROM reactions WHERE target_cid = ? AND state = true GROUP BY emoji ORDER BY MIN(state_date) ASC", - cid, - ).Scan(&views).Error; err != nil { - return nil, errcode.ErrDBRead.Wrap(err) - } - return views, nil -} - func (d *DBWrapper) wasMetadataEventHandled(id ipfscid.Cid) (bool, error) { c := int64(0) @@ -1706,53 +1481,6 @@ func (d *DBWrapper) KeepDatabaseLocalState() *messengertypes.LocalDatabaseState return keepDatabaseLocalState(d.db, d.log) } -func (d *DBWrapper) GetCurrentReactionsByValueAndMember(memberPublicKey string, targetCID string, emoji string) ([]*messengertypes.Reaction, error) { - existingReactions := ([]*messengertypes.Reaction)(nil) - if err := d.db.Where(&messengertypes.Reaction{ - MemberPublicKey: memberPublicKey, - TargetCID: targetCID, - Emoji: emoji, - }).Find(&existingReactions).Error; err != nil { - return nil, errcode.ErrDBRead.Wrap(err) - } - - return existingReactions, nil -} - -func (d *DBWrapper) CreateOrUpdateReaction(reaction *messengertypes.Reaction) (bool, error) { - updated := false - - if err := d.TX(d.ctx, func(tx *DBWrapper) error { - existingReactions, err := tx.GetCurrentReactionsByValueAndMember(reaction.MemberPublicKey, reaction.TargetCID, reaction.Emoji) - if err != nil { - return err - } - - if len(existingReactions) != 0 { - for _, r := range existingReactions { - if reaction.StateDate > r.StateDate { - if err := tx.db.Select("state", "state_date").Updates(&reaction).Error; err != nil { - return errcode.ErrDBWrite.Wrap(err) - } - updated = true - } - } - } else { - if err := tx.db.Create(&reaction).Error; err != nil { - return errcode.ErrDBWrite.Wrap(err) - } - - updated = true - } - - return nil - }); err != nil { - return false, err - } - - return updated, nil -} - func (d *DBWrapper) MarkMemberAsConversationCreator(memberPK, conversationPK string) error { member, err := d.GetMemberByPK(memberPK, conversationPK) if err != nil { @@ -1821,17 +1549,6 @@ func (d *DBWrapper) GetPushTokenSharedForConversation(pk string) ([]*messengerty return tokens, nil } -func (d *DBWrapper) GetInteractionReactionsForEmoji(cid string, emoji string) ([]*messengertypes.Reaction, error) { - var reactions []*messengertypes.Reaction - if err := d.db. - Where("target_cid = ? AND state = ? AND emoji = ?", cid, true, emoji). - Find(&reactions). - Error; err != nil { - return nil, errcode.ErrDBRead.Wrap(err) - } - return reactions, nil -} - func (d *DBWrapper) MuteConversation(pk string, until int64) error { return d.db.Model(&messengertypes.Conversation{}).Where(&messengertypes.Conversation{PublicKey: pk}).Update("muted_until", until).Error } diff --git a/go/internal/messengerdb/db_test.go b/go/internal/messengerdb/db_test.go index acc3e11b9f..4e7a13fe1e 100644 --- a/go/internal/messengerdb/db_test.go +++ b/go/internal/messengerdb/db_test.go @@ -812,36 +812,36 @@ func Test_dbWrapper_updateAccount(t *testing.T) { db, _, dispose := GetInMemoryTestDB(t) defer dispose() - acc, err := db.UpdateAccount("", "https://url1/", "DisplayName1", "") + acc, err := db.UpdateAccount("", "https://url1/", "DisplayName1") require.Error(t, err) require.True(t, errcode.Is(err, errcode.ErrInvalidInput)) require.Nil(t, acc) - acc, err = db.UpdateAccount("pk_1", "https://url1/", "DisplayName1", "") + acc, err = db.UpdateAccount("pk_1", "https://url1/", "DisplayName1") require.Error(t, err) require.Nil(t, acc) db.db.Create(&messengertypes.Account{PublicKey: "pk_1"}) - acc, err = db.UpdateAccount("pk_1", "", "", "") + acc, err = db.UpdateAccount("pk_1", "", "") require.NoError(t, err) require.NotNil(t, acc) require.Equal(t, "", acc.Link) require.Equal(t, "", acc.DisplayName) - acc, err = db.UpdateAccount("pk_1", "https://url1/", "DisplayName1", "") + acc, err = db.UpdateAccount("pk_1", "https://url1/", "DisplayName1") require.NoError(t, err) require.NotNil(t, acc) require.Equal(t, "https://url1/", acc.Link) require.Equal(t, "DisplayName1", acc.DisplayName) - acc, err = db.UpdateAccount("pk_1", "https://url2/", "", "") + acc, err = db.UpdateAccount("pk_1", "https://url2/", "") require.NoError(t, err) require.NotNil(t, acc) require.Equal(t, "https://url2/", acc.Link) require.Equal(t, "DisplayName1", acc.DisplayName) - acc, err = db.UpdateAccount("pk_1", "", "DisplayName2", "") + acc, err = db.UpdateAccount("pk_1", "", "DisplayName2") require.NoError(t, err) require.NotNil(t, acc) require.Equal(t, "https://url2/", acc.Link) @@ -957,29 +957,12 @@ func Test_dbWrapper_getConversationByPK(t *testing.T) { require.Equal(t, "conversation_1", conversation.PublicKey) require.NotEmpty(t, conversation.ReplicationInfo) require.Equal(t, "cid_1", conversation.ReplicationInfo[0].CID) - require.Nil(t, conversation.ReplyOptions) - - require.NoError(t, db.db.Create(&messengertypes.Interaction{ - CID: "cid_2", - ConversationPublicKey: "conversation_1", - }).Error) - require.NoError(t, db.db.Updates(&messengertypes.Conversation{PublicKey: "conversation_1", ReplyOptionsCID: "cid_2"}).Error) - - conversation, err = db.GetConversationByPK("conversation_1") - require.NoError(t, err) - require.NotNil(t, conversation) - require.Equal(t, "conversation_1", conversation.PublicKey) - require.NotNil(t, conversation.ReplyOptions) - require.Equal(t, "cid_2", conversation.ReplyOptionsCID) - require.Equal(t, "cid_2", conversation.ReplyOptions.CID) db.db.Create(&messengertypes.Conversation{PublicKey: "conversation_2"}) conversation, err = db.GetConversationByPK("conversation_2") require.NoError(t, err) require.NotNil(t, conversation) require.Equal(t, "conversation_2", conversation.PublicKey) - require.Nil(t, conversation.ReplyOptions) - require.Empty(t, conversation.ReplyOptionsCID) } func Test_dbWrapper_getDBInfo(t *testing.T) { @@ -1022,19 +1005,11 @@ func Test_dbWrapper_getDBInfo(t *testing.T) { db.db.Create(&messengertypes.ConversationReplicationInfo{CID: fmt.Sprintf("%d", i)}) } - for i := 0; i < 9; i++ { - db.db.Create(&messengertypes.Reaction{Emoji: fmt.Sprintf("%d", i)}) - } - for i := 0; i < 10; i++ { db.db.Create(&messengertypes.MetadataEvent{CID: fmt.Sprintf("%d", i)}) } for i := 0; i < 11; i++ { - db.db.Create(&messengertypes.Media{CID: fmt.Sprintf("%d", i)}) - } - - for i := 0; i < 12; i++ { db.db.Create(&messengertypes.SharedPushToken{ ConversationPublicKey: fmt.Sprintf("%d", i), MemberPublicKey: fmt.Sprintf("%d", i), @@ -1053,16 +1028,14 @@ func Test_dbWrapper_getDBInfo(t *testing.T) { require.Equal(t, int64(6), info.Devices) require.Equal(t, int64(7), info.ServiceTokens) require.Equal(t, int64(8), info.ConversationReplicationInfo) - require.Equal(t, int64(9), info.Reactions) require.Equal(t, int64(10), info.MetadataEvents) - require.Equal(t, int64(11), info.Medias) - require.Equal(t, int64(12), info.SharedPushTokens) + require.Equal(t, int64(11), info.SharedPushTokens) // Ensure all tables are in the debug data tables := []string(nil) err = db.db.Raw("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' AND name NOT LIKE '%_fts%'").Scan(&tables).Error require.NoError(t, err) - expectedTablesCount := 12 + expectedTablesCount := 10 require.Equal(t, expectedTablesCount, len(tables), fmt.Sprintf("expected %d tables in DB, got tables %s", expectedTablesCount, strings.Join(tables, ", "))) } @@ -1376,169 +1349,7 @@ func Test_dbWrapper_addServiceToken(t *testing.T) { require.Error(t, db.db.Model(&messengertypes.ServiceToken{}).Where(&messengertypes.ServiceToken{TokenID: tok2.TokenID(), ServiceType: "srv2"}).First(&tok).Error) } -func Test_dbWrapper_getReplyOptionsCIDForConversation(t *testing.T) { - db, _, dispose := GetInMemoryTestDB(t) - defer dispose() - - cid, err := db.GetReplyOptionsCIDForConversation("") - require.Error(t, err) - require.Equal(t, "", cid) - - cid, err = db.GetReplyOptionsCIDForConversation("unknown_conversation") - require.NoError(t, err) - require.Equal(t, "", cid) - - db.db.Create(&messengertypes.Interaction{CID: "cid_1", Type: messengertypes.AppMessage_TypeReplyOptions, ConversationPublicKey: "conv_1", IsMine: false}) - - cid, err = db.GetReplyOptionsCIDForConversation("conv_1") - require.NoError(t, err) - require.Equal(t, "cid_1", cid) - - db.db.Create(&messengertypes.Interaction{CID: "cid_2", Type: messengertypes.AppMessage_TypeUserMessage, ConversationPublicKey: "conv_1", IsMine: false}) - - cid, err = db.GetReplyOptionsCIDForConversation("conv_1") - require.NoError(t, err) - require.Equal(t, "cid_1", cid) - - db.db.Create(&messengertypes.Interaction{CID: "cid_3", Type: messengertypes.AppMessage_TypeReplyOptions, ConversationPublicKey: "conv_1", IsMine: false}) - - cid, err = db.GetReplyOptionsCIDForConversation("conv_1") - require.NoError(t, err) - require.Equal(t, "cid_3", cid) - - db.db.Create(&messengertypes.Interaction{CID: "cid_4", Type: messengertypes.AppMessage_TypeUserMessage, ConversationPublicKey: "conv_1", IsMine: true}) - - cid, err = db.GetReplyOptionsCIDForConversation("conv_1") - require.NoError(t, err) - require.Equal(t, "", cid) -} - -func Test_dbWrapper_addMedias_none(t *testing.T) { - db, _, dispose := GetInMemoryTestDB(t) - defer dispose() - - added, err := db.AddMedias([]*messengertypes.Media{}) - require.NoError(t, err) - require.Equal(t, []bool{}, added) - - var medias []*messengertypes.Media - require.NoError(t, db.db.Find(&medias).Error) - require.Empty(t, medias) -} - -func Test_dbWrapper_addMedias_one(t *testing.T) { - db, _, dispose := GetInMemoryTestDB(t) - defer dispose() - - media := messengertypes.Media{ - CID: "EiBnLu1b0PFzPcVd_QPPfhzIs0kmzAH2g0VUfiAqvIXMLg", InteractionCID: "testInteractionCID", - MimeType: "testMimeType", Filename: "testFilename", DisplayName: "testDisplayName", - State: messengertypes.Media_StateDownloaded, - } - - added, err := db.AddMedias([]*messengertypes.Media{&media}) - require.NoError(t, err) - require.Equal(t, []bool{true}, added) - - var medias []*messengertypes.Media - require.NoError(t, db.db.Find(&medias).Error) - - require.Equal(t, 1, len(medias)) - require.Equal(t, &media, medias[0]) -} - -func Test_dbWrapper_addMedias_mix(t *testing.T) { - db, _, dispose := GetInMemoryTestDB(t) - defer dispose() - - testMedias := []*messengertypes.Media{ - {CID: "EiBnLu1b0PFzPcVd_QPPfhzIs0kmzAH2g0VUfiAqvIXMLg"}, - {CID: "EiBnLu1b0PFzPcVd_QPPfhzIs1kmzAH2g0VUfiAqvIXMLg", MimeType: "testMimeType1", Filename: "testFilename1"}, - { - CID: "EiBnLu1b0PFzPcVd_QPPfhzIs2kmzAH2g0VUfiAqvIXMLg", InteractionCID: "testInteractionCID", MimeType: "testMimeType2", - Filename: "testFilename2", DisplayName: "testDisplayName", State: messengertypes.Media_StateDownloaded, - }, - } - - added, err := db.AddMedias(testMedias) - require.NoError(t, err) - require.Equal(t, []bool{true, true, true}, added) - added, err = db.AddMedias(testMedias) - require.NoError(t, err) - require.Equal(t, []bool{false, false, false}, added) - - var medias []*messengertypes.Media - require.NoError(t, db.db.Find(&medias).Error) - require.Equal(t, testMedias, medias) -} - -func Test_dbWrapper_getMedias_none(t *testing.T) { - db, _, dispose := GetInMemoryTestDB(t) - defer dispose() - - medias, err := db.GetMedias(nil) - require.NoError(t, err) - require.Empty(t, medias) - - medias, err = db.GetMedias([]string{}) - require.NoError(t, err) - require.Empty(t, medias) - - testMedia := messengertypes.Media{CID: "EiBnLu1b0PFzPcVd_QPPfhzIs0kmzAH2g0VUfiAqvIXMLg"} - medias, err = db.GetMedias([]string{testMedia.CID}) - require.NoError(t, err) - require.Equal(t, 1, len(medias)) - require.Equal(t, &testMedia, medias[0]) -} - -func Test_dbWrapper_getMedias_one(t *testing.T) { - db, _, dispose := GetInMemoryTestDB(t) - defer dispose() - - testMedia := messengertypes.Media{ - CID: "EiBnLu1b0PFzPcVd_QPPfhzIs0kmzAH2g0VUfiAqvIXMLg", InteractionCID: "testInteractionCID", - MimeType: "testMimeType", Filename: "testFilename", DisplayName: "testDisplayName", - State: messengertypes.Media_StateDownloaded, - } - - added, err := db.AddMedias([]*messengertypes.Media{&testMedia}) - require.NoError(t, err) - require.Equal(t, []bool{true}, added) - - medias, err := db.GetMedias([]string{testMedia.CID}) - require.NoError(t, err) - require.Equal(t, 1, len(medias)) - require.Equal(t, &testMedia, medias[0]) -} - -func Test_dbWrapper_getMedias_mix(t *testing.T) { - db, _, dispose := GetInMemoryTestDB(t) - defer dispose() - - testMedias := []*messengertypes.Media{ - {CID: "EiBnLu1b0PFzPcVd_QPPfhzIs0kmzAH2g0VUfiAqvIXMLg"}, - {CID: "EiBnLu1b0PFzPcVd_QPPfhzIs1kmzAH2g0VUfiAqvIXMLg", MimeType: "testMimeType1", Filename: "testFilename1"}, - { - CID: "EiBnLu1b0PFzPcVd_QPPfhzIs2kmzAH2g0VUfiAqvIXMLg", InteractionCID: "testInteractionCID", MimeType: "testMimeType2", - Filename: "testFilename2", DisplayName: "testDisplayName", State: messengertypes.Media_StateDownloaded, - }, - } - - added, err := db.AddMedias(testMedias) - require.NoError(t, err) - require.Equal(t, []bool{true, true, true}, added) - - cids := make([]string, len(testMedias)) - for i, m := range testMedias { - cids[i] = m.GetCID() - } - - medias, err := db.GetMedias(cids) - require.NoError(t, err) - require.Equal(t, testMedias, medias) -} - -func Test_dbWrapper_getLatestInteractionAndMediaPerConversation(t *testing.T) { +func Test_dbWrapper_getLatestInteractionPerConversation(t *testing.T) { db, _, dispose := GetInMemoryTestDB(t) defer dispose() @@ -1554,36 +1365,24 @@ func Test_dbWrapper_getLatestInteractionAndMediaPerConversation(t *testing.T) { SentDate: int64(i*100 + j), }).Error require.NoError(t, err) - - if j >= 8 { - err := db.db.Create(&messengertypes.Media{ - CID: fmt.Sprintf("c%d_i%d_m", i, j), - InteractionCID: fmt.Sprintf("c%d_i%d", i, j), - }).Error - require.NoError(t, err) - } } } - interactions, medias, err := db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{Amount: 5}) + interactions, err := db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{Amount: 5}) require.NoError(t, err) require.Len(t, interactions, 40) - require.Len(t, medias, 3) - interactions, medias, err = db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{RefCID: "c9_i9", Amount: 5}) + interactions, err = db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{RefCID: "c9_i9", Amount: 5}) require.NoError(t, err) require.Len(t, interactions, 5) - require.Len(t, medias, 1) - interactions, medias, err = db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{RefCID: "c9_i7", Amount: 5, OldestToNewest: true}) + interactions, err = db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{RefCID: "c9_i7", Amount: 5, OldestToNewest: true}) require.NoError(t, err) require.Len(t, interactions, 2) - require.Len(t, medias, 2) - interactions, medias, err = db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{ConversationPK: "c8", RefCID: "c9_i9", Amount: 5}) + interactions, err = db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{ConversationPK: "c8", RefCID: "c9_i9", Amount: 5}) require.Error(t, err) require.Len(t, interactions, 0) - require.Len(t, medias, 0) } func Test_dbWrapper_getLatestInteractionAndMediaPerConversation_sorting(t *testing.T) { @@ -1603,10 +1402,9 @@ func Test_dbWrapper_getLatestInteractionAndMediaPerConversation_sorting(t *testi require.NoError(t, err) } - interactions, medias, err := db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{ConversationPK: "c1", Amount: 5}) + interactions, err := db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{ConversationPK: "c1", Amount: 5}) require.NoError(t, err) require.Len(t, interactions, 5) - require.Len(t, medias, 0) require.Equal(t, "c1_i99", interactions[0].CID) require.Equal(t, "c1_i98", interactions[1].CID) @@ -1614,10 +1412,9 @@ func Test_dbWrapper_getLatestInteractionAndMediaPerConversation_sorting(t *testi require.Equal(t, "c1_i96", interactions[3].CID) require.Equal(t, "c1_i95", interactions[4].CID) - interactions, medias, err = db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{ConversationPK: "c1", Amount: 5, RefCID: "c1_i95"}) + interactions, err = db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{ConversationPK: "c1", Amount: 5, RefCID: "c1_i95"}) require.NoError(t, err) require.Len(t, interactions, 5) - require.Len(t, medias, 0) require.Equal(t, "c1_i94", interactions[0].CID) require.Equal(t, "c1_i93", interactions[1].CID) @@ -1625,19 +1422,17 @@ func Test_dbWrapper_getLatestInteractionAndMediaPerConversation_sorting(t *testi require.Equal(t, "c1_i91", interactions[3].CID) require.Equal(t, "c1_i90", interactions[4].CID) - interactions, medias, err = db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{ConversationPK: "c1", Amount: 5, RefCID: "c1_i03"}) + interactions, err = db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{ConversationPK: "c1", Amount: 5, RefCID: "c1_i03"}) require.NoError(t, err) require.Len(t, interactions, 3) - require.Len(t, medias, 0) require.Equal(t, "c1_i02", interactions[0].CID) require.Equal(t, "c1_i01", interactions[1].CID) require.Equal(t, "c1_i00", interactions[2].CID) - interactions, medias, err = db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{ConversationPK: "c1", Amount: 5, OldestToNewest: true}) + interactions, err = db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{ConversationPK: "c1", Amount: 5, OldestToNewest: true}) require.NoError(t, err) require.Len(t, interactions, 5) - require.Len(t, medias, 0) require.Equal(t, "c1_i00", interactions[0].CID) require.Equal(t, "c1_i01", interactions[1].CID) @@ -1645,10 +1440,9 @@ func Test_dbWrapper_getLatestInteractionAndMediaPerConversation_sorting(t *testi require.Equal(t, "c1_i03", interactions[3].CID) require.Equal(t, "c1_i04", interactions[4].CID) - interactions, medias, err = db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{ConversationPK: "c1", Amount: 5, RefCID: "c1_i04", OldestToNewest: true}) + interactions, err = db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{ConversationPK: "c1", Amount: 5, RefCID: "c1_i04", OldestToNewest: true}) require.NoError(t, err) require.Len(t, interactions, 5) - require.Len(t, medias, 0) require.Equal(t, "c1_i05", interactions[0].CID) require.Equal(t, "c1_i06", interactions[1].CID) @@ -1656,10 +1450,9 @@ func Test_dbWrapper_getLatestInteractionAndMediaPerConversation_sorting(t *testi require.Equal(t, "c1_i08", interactions[3].CID) require.Equal(t, "c1_i09", interactions[4].CID) - interactions, medias, err = db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{ConversationPK: "c1", Amount: 5, RefCID: "c1_i96", OldestToNewest: true}) + interactions, err = db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{ConversationPK: "c1", Amount: 5, RefCID: "c1_i96", OldestToNewest: true}) require.NoError(t, err) require.Len(t, interactions, 3) - require.Len(t, medias, 0) require.Equal(t, "c1_i97", interactions[0].CID) require.Equal(t, "c1_i98", interactions[1].CID) @@ -1984,61 +1777,3 @@ func Test_dbWrapper_GetPushTokenSharedForConversation(t *testing.T) { require.NoError(t, err) require.Len(t, tokens, 2) } - -func Test_dbWrapper_GetInteractionReactionsForEmoji(t *testing.T) { - db, _, dispose := GetInMemoryTestDB(t) - defer dispose() - - targetCID := "test_cid" - mpks := []string{"test_mpk_1", "test_mpk_2", "test_mpk_3", "test_mpk_4"} - date := int64(42) - emoji := "😼" - - created, err := db.CreateOrUpdateReaction(&messengertypes.Reaction{ - TargetCID: targetCID, - MemberPublicKey: mpks[0], - Emoji: emoji, - StateDate: date, - State: true, - IsMine: true, - }) - require.NoError(t, err) - require.True(t, created) - - created, err = db.CreateOrUpdateReaction(&messengertypes.Reaction{ - TargetCID: targetCID, - MemberPublicKey: mpks[1], - Emoji: emoji, - StateDate: date, - State: true, - }) - require.NoError(t, err) - require.NoError(t, err) - require.True(t, created) - - created, err = db.CreateOrUpdateReaction(&messengertypes.Reaction{ - TargetCID: targetCID, - MemberPublicKey: mpks[2], - Emoji: emoji, - StateDate: date, - State: false, - }) - require.NoError(t, err) - require.NoError(t, err) - require.True(t, created) - - created, err = db.CreateOrUpdateReaction(&messengertypes.Reaction{ - TargetCID: targetCID, - MemberPublicKey: mpks[3], - Emoji: "😿", - StateDate: date, - State: true, - }) - require.NoError(t, err) - require.NoError(t, err) - require.True(t, created) - - infos, err := db.GetInteractionReactionsForEmoji(targetCID, emoji) - require.NoError(t, err) - require.Len(t, infos, 2) -} diff --git a/go/internal/messengerpayloads/handlers.go b/go/internal/messengerpayloads/handlers.go index 14fae2cd7c..313a547612 100644 --- a/go/internal/messengerpayloads/handlers.go +++ b/go/internal/messengerpayloads/handlers.go @@ -104,8 +104,6 @@ func (h *EventHandler) bindHandlers() { mt.AppMessage_TypeGroupInvitation: {h.handleAppMessageGroupInvitation, true}, mt.AppMessage_TypeUserMessage: {h.handleAppMessageUserMessage, true}, mt.AppMessage_TypeSetUserInfo: {h.handleAppMessageSetUserInfo, false}, - mt.AppMessage_TypeReplyOptions: {h.handleAppMessageReplyOptions, false}, - mt.AppMessage_TypeUserReaction: {h.handleAppMessageUserReaction, false}, mt.AppMessage_TypeSetGroupInfo: {h.handleAppMessageSetGroupInfo, false}, } } @@ -173,7 +171,6 @@ func (h *EventHandler) HandleAppMessage(gpk string, gme *protocoltypes.GroupMess muts := []tyber.StepMutator{ tyber.WithDetail("Type", am.GetType().String()), tyber.WithCIDDetail("CID", gme.GetEventContext().GetID()), - tyber.WithDetail("MediasCount", strconv.Itoa(len(am.GetMedias()))), tyber.WithDetail("TargetCID", am.GetTargetCID()), tyber.WithDetail("LocalMemberPK", messengerutil.B64EncodeBytes(memPK)), tyber.WithDetail("LocalDevicePK", messengerutil.B64EncodeBytes(devPK)), @@ -193,16 +190,9 @@ func (h *EventHandler) HandleAppMessage(gpk string, gme *protocoltypes.GroupMess } tyber.LogStep(h.ctx, h.logger, "Generated interaction", tyber.WithJSONDetail("Interaction", i)) - medias := i.GetMedias() - var mediasAdded []bool - // start a transaction var isNew bool if err := h.db.TX(h.ctx, func(tx *messengerdb.DBWrapper) error { - if mediasAdded, err = tx.AddMedias(medias); err != nil { - return logError("Failed to add medias", err) - } - interactionFetchRelations(tx, i, h.logger) h.logger.Debug("Will handle app message", zap.Any("interaction", i), zap.Any("payload", amPayload)) @@ -236,14 +226,6 @@ func (h *EventHandler) HandleAppMessage(gpk string, gme *protocoltypes.GroupMess } } - for i, media := range medias { - if mediasAdded[i] { - if err := h.dispatcher.StreamEvent(mt.StreamEvent_TypeMediaUpdated, &mt.StreamEvent_MediaUpdated{Media: media}, true); err != nil { - h.logger.Error("Unable to dispatch notification for media", tyber.FormatStepLogFields(h.ctx, tyber.ZapFieldsToDetails(logutil.PrivateString("cid", media.CID), zap.Error(err)))...) - } - } - } - return nil } @@ -810,7 +792,6 @@ func (h *EventHandler) groupMemberDeviceAdded(gme *protocoltypes.GroupMetadataEv } if userInfo != nil { member.DisplayName = userInfo.GetDisplayName() - member.AvatarCID = userInfo.GetAvatarCID() } member, isNew, err := h.db.UpsertMember(mpk, gpk, *member) @@ -897,7 +878,6 @@ func (h *EventHandler) handleAppMessageGroupInvitation(tx *messengerdb.DBWrapper func (h *EventHandler) handleAppMessageUserMessage(tx *messengerdb.DBWrapper, i *mt.Interaction, amPayload proto.Message) (*mt.Interaction, bool, error) { // NOTE: it's ok to have an empty payload here since a user message can be only medias - i, isNew, err := tx.AddInteraction(*i) if err != nil { return nil, isNew, err @@ -978,8 +958,7 @@ func (h *EventHandler) handleAppMessageSetUserInfo(tx *messengerdb.DBWrapper, i h.logger.Debug("interesting contact SetUserInfo") c.DisplayName = payload.GetDisplayName() - c.AvatarCID = payload.GetAvatarCID() - err = tx.UpdateContact(cpk, mt.Contact{DisplayName: c.GetDisplayName(), AvatarCID: c.GetAvatarCID(), InfoDate: i.GetSentDate()}) + err = tx.UpdateContact(cpk, mt.Contact{DisplayName: c.GetDisplayName(), InfoDate: i.GetSentDate()}) if err != nil { return nil, false, err } @@ -1023,7 +1002,7 @@ func (h *EventHandler) handleAppMessageSetUserInfo(tx *messengerdb.DBWrapper, i member, isNew, err := tx.UpsertMember( i.MemberPublicKey, i.ConversationPublicKey, - mt.Member{DisplayName: payload.GetDisplayName(), AvatarCID: payload.GetAvatarCID(), InfoDate: i.GetSentDate()}, + mt.Member{DisplayName: payload.GetDisplayName(), InfoDate: i.GetSentDate()}, ) if err != nil { return nil, false, err @@ -1039,43 +1018,6 @@ func (h *EventHandler) handleAppMessageSetUserInfo(tx *messengerdb.DBWrapper, i return i, false, nil } -func (h *EventHandler) handleAppMessageUserReaction(tx *messengerdb.DBWrapper, i *mt.Interaction, amPayload proto.Message) (*mt.Interaction, bool, error) { - if len(i.GetPayload()) == 0 { - return nil, false, ErrNilPayload - } - - return i, false, h.handleReaction(tx, i, amPayload) -} - -func (h *EventHandler) handleReaction(tx *messengerdb.DBWrapper, i *mt.Interaction, amPayload proto.Message) error { - if len(i.MemberPublicKey) == 0 { - return errcode.ErrInvalidInput.Wrap(errors.New("empty member public key")) - } - if len(i.TargetCID) == 0 { - return errcode.ErrInvalidInput.Wrap(errors.New("empty target cid")) - } - - updated, err := tx.CreateOrUpdateReaction(&mt.Reaction{ - TargetCID: i.TargetCID, - MemberPublicKey: i.MemberPublicKey, - Emoji: amPayload.(interface{ GetEmoji() string }).GetEmoji(), - IsMine: i.IsMine, - State: amPayload.(interface{ GetState() bool }).GetState(), - StateDate: i.GetSentDate(), - }) - if err != nil { - return errcode.ErrDBRead.Wrap(err) - } - - if updated { - if err := messengerutil.StreamInteraction(h.dispatcher, tx, i.TargetCID, false); err != nil { - h.logger.Debug("failed to stream updated target interaction after AddReaction", zap.Error(err)) - } - } - - return nil -} - func interactionFromAppMessage(h *EventHandler, gpk string, gme *protocoltypes.GroupMessageEvent, am *mt.AppMessage) (*mt.Interaction, error) { amt := am.GetType() cid, err := ipfscid.Cast(gme.GetEventContext().GetID()) @@ -1115,16 +1057,10 @@ func interactionFromAppMessage(h *EventHandler, gpk string, gme *protocoltypes.G ConversationPublicKey: gpk, SentDate: am.GetSentDate(), DevicePublicKey: dpk, - Medias: am.GetMedias(), MemberPublicKey: mpk, TargetCID: am.GetTargetCID(), } - for _, media := range i.Medias { - media.InteractionCID = i.CID - media.State = mt.Media_StateNeverDownloaded - } - return &i, nil } @@ -1221,23 +1157,6 @@ func interactionConsumeAck(tx *messengerdb.DBWrapper, i *mt.Interaction, dispatc return nil } -func (h *EventHandler) handleAppMessageReplyOptions(tx *messengerdb.DBWrapper, i *mt.Interaction, _ proto.Message) (*mt.Interaction, bool, error) { - if len(i.GetPayload()) == 0 { - return nil, false, ErrNilPayload - } - - i, isNew, err := tx.AddInteraction(*i) - if err != nil { - return nil, isNew, err - } - - if err := messengerutil.StreamInteraction(h.dispatcher, tx, i.CID, isNew); err != nil { - return nil, isNew, err - } - - return i, isNew, nil -} - func indexMessage(tx *messengerdb.DBWrapper, id string, am *mt.AppMessage) error { if len(id) == 0 { return nil @@ -1281,12 +1200,9 @@ func (h *EventHandler) handleAppMessageSetGroupInfo(tx *messengerdb.DBWrapper, i if payload.GetDisplayName() != "" { c.DisplayName = payload.GetDisplayName() } - if payload.GetAvatarCid() != "" { - c.AvatarCID = payload.GetAvatarCid() - } c.InfoDate = i.GetSentDate() - _, err = tx.UpdateConversation(mt.Conversation{DisplayName: c.GetDisplayName(), AvatarCID: c.GetAvatarCID(), InfoDate: c.GetInfoDate(), PublicKey: c.GetPublicKey()}) + _, err = tx.UpdateConversation(mt.Conversation{DisplayName: c.GetDisplayName(), InfoDate: c.GetInfoDate(), PublicKey: c.GetPublicKey()}) if err != nil { return nil, false, err } @@ -1323,7 +1239,7 @@ func interactionFromOutOfStoreAppMessage(h *EventHandler, gPKBytes []byte, outOf dpk := messengerutil.B64EncodeBytes(outOfStoreMessage.DevicePK) - h.logger.Debug("received app message", logutil.PrivateString("type", amt.String()), zap.Int("numMedias", len(am.GetMedias()))) + h.logger.Debug("received app message", logutil.PrivateString("type", amt.String())) mpk := "" dev, err := h.db.GetDeviceByPK(dpk) @@ -1342,15 +1258,9 @@ func interactionFromOutOfStoreAppMessage(h *EventHandler, gPKBytes []byte, outOf SentDate: am.GetSentDate(), DevicePublicKey: dpk, MemberPublicKey: mpk, - Medias: am.GetMedias(), OutOfStoreMessage: true, } - for _, media := range i.Medias { - media.InteractionCID = i.CID - media.State = mt.Media_StateNeverDownloaded - } - return &i, nil } diff --git a/go/localization/locales/en-US/localization.json b/go/localization/locales/en-US/localization.json index 2acd4e873f..782ed5f91c 100644 --- a/go/localization/locales/en-US/localization.json +++ b/go/localization/locales/en-US/localization.json @@ -60,9 +60,6 @@ }, "memberDetailsChanged": { "body": "Member detail updated" - }, - "replyOptionsOffered": { - "body": "Reply options offered" } } } diff --git a/go/pkg/bertyaccount/service_account.go b/go/pkg/bertyaccount/service_account.go index 7b64ed6523..be7dcf59a7 100644 --- a/go/pkg/bertyaccount/service_account.go +++ b/go/pkg/bertyaccount/service_account.go @@ -766,7 +766,6 @@ func (s *service) importAccount(ctx context.Context, req *accounttypes.ImportAcc AccountID: meta.AccountID, AccountName: a.Account.DisplayName, PublicKey: a.Account.PublicKey, - AvatarCID: a.Account.AvatarCID, }) if err != nil { return nil, errcode.ErrBertyAccountUpdateFailed.Wrap(err) diff --git a/go/pkg/bertymessenger/api.go b/go/pkg/bertymessenger/api.go index 029d907cce..ef2104ca68 100644 --- a/go/pkg/bertymessenger/api.go +++ b/go/pkg/bertymessenger/api.go @@ -3,14 +3,12 @@ package bertymessenger import ( "bufio" "context" - "errors" "fmt" "io" "io/ioutil" "math" mrand "math/rand" "net" - "net/url" "os" "strings" "time" @@ -30,7 +28,6 @@ import ( "berty.tech/berty/v2/go/internal/logutil" "berty.tech/berty/v2/go/internal/messengerdb" "berty.tech/berty/v2/go/internal/messengerutil" - "berty.tech/berty/v2/go/internal/streamutil" "berty.tech/berty/v2/go/internal/sysutil" "berty.tech/berty/v2/go/pkg/authtypes" "berty.tech/berty/v2/go/pkg/banner" @@ -401,24 +398,6 @@ func (svc *service) streamEverything(sub messengertypes.MessengerService_EventSt } } - // send medias - { - medias, err := svc.db.GetAllMedias() - if err != nil { - return err - } - svc.logger.Info("sending existing medias", zap.Int("count", len(medias))) - for _, media := range medias { - mu, err := proto.Marshal(&messengertypes.StreamEvent_MediaUpdated{Media: media}) - if err != nil { - return err - } - if err := sub.Send(&messengertypes.EventStream_Reply{Event: &messengertypes.StreamEvent{Type: messengertypes.StreamEvent_TypeMediaUpdated, Payload: mu, IsNew: false}}); err != nil { - return err - } - } - } - return nil } @@ -495,7 +474,7 @@ func (svc *service) streamShallow(sub messengertypes.MessengerService_EventStrea // send interactions if includeInteractionsAndMedias > 0 { - interactions, medias, err := svc.db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{Amount: includeInteractionsAndMedias}) + interactions, err := svc.db.GetPaginatedInteractions(&messengertypes.PaginatedInteractionsOptions{Amount: includeInteractionsAndMedias}) if err != nil { return err } @@ -509,17 +488,6 @@ func (svc *service) streamShallow(sub messengertypes.MessengerService_EventStrea return err } } - - svc.logger.Info("sending existing medias", zap.Int("count", len(medias))) - for _, media := range medias { - mu, err := proto.Marshal(&messengertypes.StreamEvent_MediaUpdated{Media: media}) - if err != nil { - return err - } - if err := sub.Send(&messengertypes.EventStream_Reply{Event: &messengertypes.StreamEvent{Type: messengertypes.StreamEvent_TypeMediaUpdated, Payload: mu, IsNew: false}}); err != nil { - return err - } - } } return nil @@ -656,7 +624,7 @@ func (svc *service) ConversationCreate(ctx context.Context, req *messengertypes. // Try to put group name in group metadata { err := func() error { - am, err := messengertypes.AppMessage_TypeSetGroupInfo.MarshalPayload(0, "", nil, &messengertypes.AppMessage_SetGroupInfo{DisplayName: dn}) + am, err := messengertypes.AppMessage_TypeSetGroupInfo.MarshalPayload(0, "", &messengertypes.AppMessage_SetGroupInfo{DisplayName: dn}) if err != nil { return err } @@ -679,7 +647,7 @@ func (svc *service) ConversationCreate(ctx context.Context, req *messengertypes. } for _, contactPK := range req.GetContactsToInvite() { - am, err := messengertypes.AppMessage_TypeGroupInvitation.MarshalPayload(messengerutil.TimestampMs(time.Now()), "", nil, &messengertypes.AppMessage_GroupInvitation{Link: conv.GetLink()}) + am, err := messengertypes.AppMessage_TypeGroupInvitation.MarshalPayload(messengerutil.TimestampMs(time.Now()), "", &messengertypes.AppMessage_GroupInvitation{Link: conv.GetLink()}) if err != nil { return nil, err } @@ -793,15 +761,6 @@ func (svc *service) AccountUpdate(ctx context.Context, req *messengertypes.Accou svc.handlerMutex.Lock() defer svc.handlerMutex.Unlock() - avatarCID := req.GetAvatarCID() - if avatarCID != "" { - if err := messengerutil.EnsureValidBase64CID(avatarCID); err != nil { - err = fmt.Errorf("couldn't ensure the avatar cid is a valid ipfs cid: %s", err) - svc.logger.Error("AccountUpdate: bad avatar cid", zap.Error(err)) - return nil, errcode.ErrInvalidInput.Wrap(err) - } - } - if err := svc.db.TX(ctx, func(tx *messengerdb.DBWrapper) error { acc, err := tx.GetAccount() if err != nil { @@ -814,15 +773,12 @@ func (svc *service) AccountUpdate(ctx context.Context, req *messengertypes.Accou if dn != "" && dn != acc.GetDisplayName() { updated = true } - if avatarCID != "" && avatarCID != acc.GetAvatarCID() { - updated = true - } if !updated { svc.logger.Debug("AccountUpdate: nothing to do") return nil } - svc.logger.Debug("AccountUpdate: updating account", logutil.PrivateString("display_name", dn), logutil.PrivateString("avatar_cid", avatarCID)) + svc.logger.Debug("AccountUpdate: updating account", logutil.PrivateString("display_name", dn)) ret, err := svc.internalInstanceShareableBertyID(ctx, &messengertypes.InstanceShareableBertyID_Request{DisplayName: dn}) if err != nil { @@ -830,7 +786,7 @@ func (svc *service) AccountUpdate(ctx context.Context, req *messengertypes.Accou return err } - acc, err = tx.UpdateAccount(acc.PublicKey, ret.GetWebURL(), dn, avatarCID) + acc, err = tx.UpdateAccount(acc.PublicKey, ret.GetWebURL(), dn) if err != nil { svc.logger.Error("AccountUpdate: updating account in db", zap.Error(err)) return err @@ -984,34 +940,21 @@ func (svc *service) Interact(ctx context.Context, req *messengertypes.Interact_R } tyber.LogStep(ctx, svc.logger, "Unmarshaled payload", tyber.WithJSONDetail("AppMessagePayload", payload)) - medias, err := svc.db.GetMedias(req.GetMediaCids()) - if err != nil { - return nil, errcode.ErrDBRead.Wrap(err) - } - - fp, err := req.GetType().MarshalPayload(messengerutil.TimestampMs(time.Now()), req.GetTargetCID(), medias, payload) + fp, err := req.GetType().MarshalPayload(messengerutil.TimestampMs(time.Now()), req.GetTargetCID(), payload) if err != nil { return nil, errcode.ErrInternal.Wrap(err) } - cids := make([][]byte, len(req.GetMediaCids())) - for i, mediaCID := range req.GetMediaCids() { - cids[i], err = messengerutil.B64DecodeBytes(mediaCID) - if err != nil { - return nil, errcode.ErrDeserialization.Wrap(err) - } - } - var cidBytes []byte if req.GetMetadata() { - reply, err := svc.protocolClient.AppMetadataSend(ctx, &protocoltypes.AppMetadataSend_Request{GroupPK: gpkb, Payload: fp, AttachmentCIDs: cids}) + reply, err := svc.protocolClient.AppMetadataSend(ctx, &protocoltypes.AppMetadataSend_Request{GroupPK: gpkb, Payload: fp}) if err != nil { return nil, errcode.ErrProtocolSend.Wrap(err) } cidBytes = reply.GetCID() } else { - reply, err := svc.protocolClient.AppMessageSend(ctx, &protocoltypes.AppMessageSend_Request{GroupPK: gpkb, Payload: fp, AttachmentCIDs: cids}) + reply, err := svc.protocolClient.AppMessageSend(ctx, &protocoltypes.AppMessageSend_Request{GroupPK: gpkb, Payload: fp}) if err != nil { return nil, errcode.ErrProtocolSend.Wrap(err) } @@ -1327,20 +1270,6 @@ func (svc *service) BannerQuote(ctx context.Context, req *messengertypes.BannerQ return &ret, nil } -func (svc *service) SendReplyOptions(ctx context.Context, req *messengertypes.SendReplyOptions_Request) (*messengertypes.SendReplyOptions_Reply, error) { - payload, err := messengertypes.AppMessage_TypeReplyOptions.MarshalPayload(messengerutil.TimestampMs(time.Now()), "", nil, req.Options) - if err != nil { - return nil, err - } - - _, err = svc.protocolClient.AppMessageSend(ctx, &protocoltypes.AppMessageSend_Request{ - GroupPK: req.GroupPK, - Payload: payload, - }) - - return &messengertypes.SendReplyOptions_Reply{}, err -} - func (svc *service) ReplicationSetAutoEnable(ctx context.Context, req *messengertypes.ReplicationSetAutoEnable_Request) (*messengertypes.ReplicationSetAutoEnable_Reply, error) { config, err := svc.protocolClient.InstanceGetConfiguration(svc.ctx, &protocoltypes.InstanceGetConfiguration_Request{}) if err != nil { @@ -1421,131 +1350,12 @@ func (svc *service) InstanceExportData(_ *messengertypes.InstanceExportData_Requ } } -func (svc *service) MediaPrepare(srv messengertypes.MessengerService_MediaPrepareServer) (err error) { - ctx, _, endSection := tyber.Section(srv.Context(), svc.logger, "Preparing media") - defer func() { endSection(err, "") }() - - // read header - header, err := srv.Recv() - if err != nil { - return errcode.ErrStreamHeaderRead.Wrap(err) - } - if len(header.GetBlock()) > 0 { - return errcode.ErrInvalidInput.Wrap(fmt.Errorf("expected empty block, got %v bytes", len(header.GetBlock()))) - } - if header.GetInfo() == nil { - return errcode.ErrInvalidInput.Wrap(errors.New("nil info")) - } - - var file io.ReadCloser - if header.GetUri() != "" { - // open uri file - path := header.GetUri() - u, err := url.Parse(header.GetUri()) - if err == nil && u.Scheme == "file" { - path = u.Path - } - file, err = os.Open(path) - if err != nil { - return errcode.ErrInvalidInput.Wrap(err) - } - } else { - // open requests reader - file = streamutil.FuncReader(func() ([]byte, error) { - req, err := srv.Recv() - return req.GetBlock(), err - }, svc.logger) - } - defer file.Close() - - // upload media and get cid in return - cidBytes, err := svc.attachmentPrepare(ctx, file) - if err != nil { - return errcode.ErrAttachmentPrepare.Wrap(err) - } - cid := messengerutil.B64EncodeBytes(cidBytes) - - svc.handlerMutex.Lock() - defer svc.handlerMutex.Unlock() - - return svc.db.TX(ctx, func(tx *messengerdb.DBWrapper) error { - // add to db - media := *header.Info - media.CID = cid - media.State = messengertypes.Media_StatePrepared - added, err := tx.AddMedias([]*messengertypes.Media{&media}) - if err != nil { - return errcode.ErrDBWrite.Wrap(err) - } - - // dispatch event if new - if added[0] { - if err := svc.dispatcher.StreamEvent(messengertypes.StreamEvent_TypeMediaUpdated, &messengertypes.StreamEvent_MediaUpdated{Media: &media}, true); err != nil { - svc.logger.Error("unable to dispatch notification for media", logutil.PrivateString("cid", media.CID), zap.Error(err)) - } - } - - // reply - if err := srv.SendAndClose(&messengertypes.MediaPrepare_Reply{Cid: cid}); err != nil { - return errcode.ErrStreamSendAndClose.Wrap(err) - } - - // success - return nil - }) -} - -func (svc *service) MediaRetrieve(req *messengertypes.MediaRetrieve_Request, srv messengertypes.MessengerService_MediaRetrieveServer) (err error) { - ctx, _, endSection := tyber.Section(srv.Context(), svc.logger, "Retrieving media") - defer func() { endSection(err, "") }() - - var attachment *io.PipeReader - if err := func() error { - svc.handlerMutex.Lock() - defer svc.handlerMutex.Unlock() - - // prepare header - medias, err := svc.db.GetMedias([]string{req.GetCid()}) - if err != nil { - return errcode.ErrInvalidInput.Wrap(err) - } - if len(medias) == 0 { - return errcode.ErrInternal.Wrap(err) - } - media := medias[0] - - // send header - if err := srv.Send(&messengertypes.MediaRetrieve_Reply{Info: media}); err != nil { - return errcode.ErrStreamHeaderWrite.Wrap(err) - } - - // open download - if attachment, err = svc.attachmentRetrieve(ctx, req.GetCid()); err != nil { - return errcode.ErrAttachmentRetrieve.Wrap(err) - } - return nil - }(); err != nil { - return err - } - defer attachment.Close() - - // stream to client - if err := streamutil.FuncSink(make([]byte, 64*1024), attachment, func(b []byte) error { - return srv.Send(&messengertypes.MediaRetrieve_Reply{Block: b}) - }); err != nil { - return errcode.ErrStreamSink.Wrap(err) - } - - // success - return nil -} - func (svc *service) ConversationLoad(ctx context.Context, request *messengertypes.ConversationLoad_Request) (*messengertypes.ConversationLoad_Reply, error) { if request.Options.ConversationPK == "" && request.Options.RefCID == "" { return nil, errcode.ErrInvalidInput.Wrap(fmt.Errorf("no conversation pk or ref cid specified")) } - interactions, medias, err := svc.db.GetPaginatedInteractions(request.Options) + interactions, err := svc.db.GetPaginatedInteractions(request.Options) if err != nil { return nil, err } @@ -1555,14 +1365,9 @@ func (svc *service) ConversationLoad(ctx context.Context, request *messengertype } if !request.Options.NoBulk { - if medias == nil { - medias = []*messengertypes.Media{} - } - if err := svc.dispatcher.StreamEvent(messengertypes.StreamEvent_TypeConversationPartialLoad, &messengertypes.StreamEvent_ConversationPartialLoad{ ConversationPK: interactions[0].ConversationPublicKey, Interactions: interactions, - Medias: medias, }, false); err != nil { svc.logger.Error("unable to bulk send conversation events", zap.Error(err)) return nil, errcode.ErrInternal.Wrap(err) @@ -1574,13 +1379,6 @@ func (svc *service) ConversationLoad(ctx context.Context, request *messengertype return nil, err } } - - svc.logger.Info("sending found medias", zap.Int("count", len(medias))) - for _, media := range medias { - if err := svc.dispatcher.StreamEvent(messengertypes.StreamEvent_TypeMediaUpdated, &messengertypes.StreamEvent_MediaUpdated{Media: media}, false); err != nil { - return nil, err - } - } } return &messengertypes.ConversationLoad_Reply{}, nil @@ -1665,22 +1463,6 @@ func (svc *service) AccountPushConfigure(ctx context.Context, request *messenger return &messengertypes.AccountPushConfigure_Reply{}, nil } -func (svc *service) MediaGetRelated(ctx context.Context, request *messengertypes.MediaGetRelated_Request) (*messengertypes.MediaGetRelated_Reply, error) { - media, err := svc.db.GetNextMedia(request.CID, messengerdb.NextMediaOpts{ - FileNames: request.FileNames, - MimeTypes: request.MimeTypes, - }) - if err != nil || media == nil { - if err != nil { - svc.logger.Error("unable to retrieve next audio message", zap.Error(err)) - } - - return &messengertypes.MediaGetRelated_Reply{End: true}, nil - } - - return &messengertypes.MediaGetRelated_Reply{Media: media}, nil -} - func (svc *service) MessageSearch(ctx context.Context, request *messengertypes.MessageSearch_Request) (*messengertypes.MessageSearch_Reply, error) { results, err := svc.db.InteractionsSearch(request.Query, &messengerdb.SearchOptions{ BeforeDate: int(request.BeforeDate), @@ -1949,13 +1731,3 @@ func (svc *service) PushTokenSharedForConversation(request *messengertypes.PushT return nil } - -func (svc *service) InteractionReactionsForEmoji(ctx context.Context, request *messengertypes.InteractionReactionsForEmoji_Request) (*messengertypes.InteractionReactionsForEmoji_Reply, error) { - reactions, err := svc.db.GetInteractionReactionsForEmoji(request.InteractionCID, request.Emoji) - if err != nil { - return nil, errcode.ErrDBRead.Wrap(err) - } - return &messengertypes.InteractionReactionsForEmoji_Reply{ - Reactions: reactions, - }, nil -} diff --git a/go/pkg/bertymessenger/service.go b/go/pkg/bertymessenger/service.go index 28f4fd441c..65aa7cfc6f 100644 --- a/go/pkg/bertymessenger/service.go +++ b/go/pkg/bertymessenger/service.go @@ -27,7 +27,6 @@ import ( "berty.tech/berty/v2/go/internal/messengerpayloads" "berty.tech/berty/v2/go/internal/messengerutil" "berty.tech/berty/v2/go/internal/notification" - "berty.tech/berty/v2/go/internal/streamutil" "berty.tech/berty/v2/go/pkg/bertyprotocol" "berty.tech/berty/v2/go/pkg/bertypush" "berty.tech/berty/v2/go/pkg/bertyversion" @@ -355,49 +354,6 @@ func New(client protocoltypes.ProtocolServiceClient, opts *Opts) (_ Service, err return &svc, nil } -func (svc *service) attachmentPrepare(ctx context.Context, attachment io.Reader) ([]byte, error) { - stream, err := svc.protocolClient.AttachmentPrepare(ctx) - if err != nil { - return nil, errcode.ErrAttachmentPrepare.Wrap(err) - } - - // send header - if err := stream.Send(&protocoltypes.AttachmentPrepare_Request{}); err != nil { - return nil, errcode.ErrStreamHeaderWrite.Wrap(err) - } - - // send body - if err := streamutil.FuncSink(make([]byte, 64*1024), attachment, func(b []byte) error { - return stream.Send(&protocoltypes.AttachmentPrepare_Request{Block: b}) - }); err != nil { - return nil, errcode.ErrStreamSink.Wrap(err) - } - - // signal end of data and pass cid - reply, err := stream.CloseAndRecv() - if err != nil { - return nil, errcode.ErrStreamCloseAndRecv.Wrap(err) - } - return reply.GetAttachmentCID(), nil -} - -func (svc *service) attachmentRetrieve(ctx context.Context, cid string) (*io.PipeReader, error) { - cidBytes, err := messengerutil.B64DecodeBytes(cid) - if err != nil { - return nil, errcode.ErrDeserialization.Wrap(err) - } - - stream, err := svc.protocolClient.AttachmentRetrieve(ctx, &protocoltypes.AttachmentRetrieve_Request{AttachmentCID: cidBytes}) - if err != nil { - return nil, errcode.ErrAttachmentRetrieve.Wrap(err) - } - - return streamutil.FuncReader(func() ([]byte, error) { - reply, err := stream.Recv() - return reply.GetBlock(), err - }, svc.logger), nil -} - func (svc *service) sendAccountUserInfo(ctx context.Context, groupPK string) (err error) { ctx, _, endSection := tyber.Section(ctx, svc.logger, fmt.Sprintf("Sending account info to group %s", groupPK)) defer func() { @@ -416,47 +372,16 @@ func (svc *service) sendAccountUserInfo(ctx context.Context, groupPK string) (er return errcode.ErrDBRead.Wrap(err) } - var avatarCID string - var attachmentCIDs [][]byte - var medias []*mt.Media - if acc.GetAvatarCID() != "" { - // TODO: add AttachmentRecrypt to bertyprotocol - avatar, err := svc.attachmentRetrieve(ctx, acc.GetAvatarCID()) - if err != nil { - return errcode.ErrAttachmentRetrieve.Wrap(err) - } - avatarCIDBytes, err := svc.attachmentPrepare(ctx, avatar) - if err != nil { - return errcode.ErrAttachmentPrepare.Wrap(err) - } - avatarCID = messengerutil.B64EncodeBytes(avatarCIDBytes) - attachmentCIDs = [][]byte{avatarCIDBytes} - - if medias, err = svc.db.GetMedias([]string{acc.GetAvatarCID()}); err != nil { - return errcode.ErrDBRead.Wrap(err) - } - if len(medias) < 1 { - return errcode.ErrInternal - } - medias[0].CID = avatarCID - - svc.logger.Debug("Re-encrypted avatar", tyber.FormatStepLogFields(ctx, []tyber.Detail{ - {Name: "OldAvatarCID", Description: acc.GetAvatarCID()}, - {Name: "NewAvatarCID", Description: avatarCID}, - })...) - } - am, err := mt.AppMessage_TypeSetUserInfo.MarshalPayload( messengerutil.TimestampMs(time.Now()), "", - medias, - &mt.AppMessage_SetUserInfo{DisplayName: acc.GetDisplayName(), AvatarCID: avatarCID}, + &mt.AppMessage_SetUserInfo{DisplayName: acc.GetDisplayName()}, ) if err != nil { return errcode.ErrSerialization.Wrap(err) } - sendReply, err := svc.protocolClient.AppMetadataSend(ctx, &protocoltypes.AppMetadataSend_Request{GroupPK: pk, Payload: am, AttachmentCIDs: attachmentCIDs}) + sendReply, err := svc.protocolClient.AppMetadataSend(ctx, &protocoltypes.AppMetadataSend_Request{GroupPK: pk, Payload: am}) if err != nil { return errcode.ErrProtocolSend.Wrap(err) } @@ -510,7 +435,7 @@ func (svc *service) SendAck(cid, conversationPK string) error { // TODO: Don't send ack if message is already acked to prevent spam in multimember groups // Maybe wait a few seconds before checking since we're likely to receive the message before any ack - amp, err := mt.AppMessage_TypeAcknowledge.MarshalPayload(0, cid, nil, &mt.AppMessage_Acknowledge{}) + amp, err := mt.AppMessage_TypeAcknowledge.MarshalPayload(0, cid, &mt.AppMessage_Acknowledge{}) if err != nil { return logError("Failed to marshal acknowledge", err) } diff --git a/go/pkg/bertymessenger/service_test.go b/go/pkg/bertymessenger/service_test.go index 3dd87829f0..89dcc59465 100644 --- a/go/pkg/bertymessenger/service_test.go +++ b/go/pkg/bertymessenger/service_test.go @@ -23,7 +23,6 @@ import ( "berty.tech/berty/v2/go/internal/messengerutil" "berty.tech/berty/v2/go/internal/testutil" "berty.tech/berty/v2/go/pkg/messengertypes" - "berty.tech/berty/v2/go/pkg/protocoltypes" ) func TestServiceStream(t *testing.T) { @@ -1376,55 +1375,19 @@ func TestAccountUpdate(t *testing.T) { logger.Info("Starting test") - testBlock := []byte("hello world!") - - stream, err := user.protocolClient.AttachmentPrepare(ctx) - require.NoError(t, err) - require.NoError(t, stream.Send(&protocoltypes.AttachmentPrepare_Request{})) // send header - const split = 5 - require.NoError(t, stream.Send(&protocoltypes.AttachmentPrepare_Request{Block: testBlock[0:split]})) // send block - require.NoError(t, stream.Send(&protocoltypes.AttachmentPrepare_Request{Block: testBlock[split:]})) // send block - reply, err := stream.CloseAndRecv() - require.NoError(t, err) - - userAvatarCID := messengerutil.B64EncodeBytes(reply.GetAttachmentCID()) - logger.Info("starting update") const testName = "user" - _, err = user.client.AccountUpdate(ctx, &messengertypes.AccountUpdate_Request{DisplayName: testName, AvatarCID: userAvatarCID}) + _, err := user.client.AccountUpdate(ctx, &messengertypes.AccountUpdate_Request{DisplayName: testName}) require.NoError(t, err) logger.Info("waiting for propagation") time.Sleep(4 * time.Second) logger.Info("done waiting for propagation") logger.Info("checking friends") - cids := []string(nil) for _, friend := range friends { logger.Info("checking node", zap.String("name", friend.account.GetDisplayName())) userInFriend := friend.GetContact(t, userPK) require.Equal(t, testName, userInFriend.GetDisplayName()) - avatarCIDInFriend := userInFriend.GetAvatarCID() - require.NotEqual(t, userAvatarCID, avatarCIDInFriend) - for _, existingCID := range cids { - require.NotEqual(t, existingCID, avatarCIDInFriend) - } - cids = append(cids, userInFriend.GetAvatarCID()) - - // check attachment - cidBytes, err := messengerutil.B64DecodeBytes(avatarCIDInFriend) - require.NoError(t, err) - stream, err := friend.protocolClient.AttachmentRetrieve(ctx, &protocoltypes.AttachmentRetrieve_Request{AttachmentCID: cidBytes}) - require.NoError(t, err) - data := []byte(nil) - for { - rsp, err := stream.Recv() - if err == io.EOF { - break - } - require.NoError(t, err) - data = append(data, rsp.GetBlock()...) - } - require.Equal(t, testBlock, data) } logger.Error("test done") @@ -1481,22 +1444,9 @@ func TestFlappyAccountUpdateGroup(t *testing.T) { logger.Info("Starting test") - testBlock := []byte("hello world!") - - stream, err := user.client.MediaPrepare(ctx) - require.NoError(t, err) - require.NoError(t, stream.Send(&messengertypes.MediaPrepare_Request{Info: &messengertypes.Media{}})) // send header - const split = 5 - require.NoError(t, stream.Send(&messengertypes.MediaPrepare_Request{Block: testBlock[0:split]})) // send block - require.NoError(t, stream.Send(&messengertypes.MediaPrepare_Request{Block: testBlock[split:]})) // send block - reply, err := stream.CloseAndRecv() - require.NoError(t, err) - - userAvatarCID := reply.GetCid() - logger.Info("starting update") const testName = "user" - _, err = user.client.AccountUpdate(ctx, &messengertypes.AccountUpdate_Request{DisplayName: testName, AvatarCID: userAvatarCID}) + _, err = user.client.AccountUpdate(ctx, &messengertypes.AccountUpdate_Request{DisplayName: testName}) require.NoError(t, err) logger.Info("waiting for propagation") @@ -1504,34 +1454,11 @@ func TestFlappyAccountUpdateGroup(t *testing.T) { logger.Info("done waiting for propagation") logger.Info("checking friends") - cids := []string(nil) for _, friend := range friends { logger.Info("checking node", zap.String("name", friend.account.GetDisplayName())) userInFriend, ok := friend.members[conv.GetAccountMemberPublicKey()] require.True(t, ok) require.Equal(t, testName, userInFriend.GetDisplayName()) - avatarCIDInFriend := userInFriend.GetAvatarCID() - require.NotEqual(t, userAvatarCID, avatarCIDInFriend) - for _, existingCID := range cids { - require.Equal(t, existingCID, avatarCIDInFriend) - } - cids = append(cids, userInFriend.GetAvatarCID()) - - // check attachment - cidBytes, err := messengerutil.B64DecodeBytes(avatarCIDInFriend) - require.NoError(t, err) - stream, err := friend.protocolClient.AttachmentRetrieve(ctx, &protocoltypes.AttachmentRetrieve_Request{AttachmentCID: cidBytes}) - require.NoError(t, err) - data := []byte(nil) - for { - rsp, err := stream.Recv() - if err == io.EOF { - break - } - require.NoError(t, err) - data = append(data, rsp.GetBlock()...) - } - require.Equal(t, testBlock, data) } logger.Error("test done") @@ -1547,30 +1474,14 @@ func TestSendBlob(t *testing.T) { logger.Info("starting test") - testData := []byte("hello world!") - - stream, err := user.protocolClient.AttachmentPrepare(ctx) - require.NoError(t, err) - require.NoError(t, stream.Send(&protocoltypes.AttachmentPrepare_Request{})) // send header - const split = 5 - require.NoError(t, stream.Send(&protocoltypes.AttachmentPrepare_Request{Block: testData[0:split]})) // send block - require.NoError(t, stream.Send(&protocoltypes.AttachmentPrepare_Request{Block: testData[split:]})) // send block - reply, err := stream.CloseAndRecv() - require.NoError(t, err) - logger.Info("starting send") friendAsContact := user.GetContact(t, friend.GetAccount().GetPublicKey()) - testCID := reply.GetAttachmentCID() - - b64CID := messengerutil.B64EncodeBytes(testCID) - payload, err := proto.Marshal(&messengertypes.AppMessage_UserMessage{Body: "Hello"}) require.NoError(t, err) _, err = user.client.Interact(ctx, &messengertypes.Interact_Request{ ConversationPublicKey: friendAsContact.GetConversationPublicKey(), - MediaCids: []string{b64CID}, Payload: payload, Type: messengertypes.AppMessage_TypeUserMessage, }) @@ -1592,31 +1503,6 @@ func TestSendBlob(t *testing.T) { fmt.Println("inte", inte) require.NotNil(t, inte) - - fmt.Println("medias", inte.GetMedias()) - - require.NotEmpty(t, inte.GetMedias()) - media := inte.GetMedias()[0] - require.NotNil(t, media) - cid := media.GetCID() - require.NotEmpty(t, cid) - require.Equal(t, messengerutil.B64EncodeBytes(testCID), cid) - - // check attachment - cidBytes, err := messengerutil.B64DecodeBytes(cid) - require.NoError(t, err) - retStream, err := friend.protocolClient.AttachmentRetrieve(ctx, &protocoltypes.AttachmentRetrieve_Request{AttachmentCID: cidBytes}) - require.NoError(t, err) - data := []byte(nil) - for { - rsp, err := retStream.Recv() - if err == io.EOF { - break - } - require.NoError(t, err) - data = append(data, rsp.GetBlock()...) - } - require.Equal(t, testData, data) } func TestSendMedia(t *testing.T) { @@ -1627,31 +1513,12 @@ func TestSendMedia(t *testing.T) { user := nodes[0] friend := nodes[1] - logger.Info("starting test") - - testData := []byte("hello world!") - testMedia := messengertypes.Media{MimeType: "meme/quality", Filename: "mes super vacances.webm", DisplayName: "Clique"} - - stream, err := user.client.MediaPrepare(ctx) - require.NoError(t, err) - require.NoError(t, stream.Send(&messengertypes.MediaPrepare_Request{Info: &testMedia})) // send header - const split = 5 - require.NoError(t, stream.Send(&messengertypes.MediaPrepare_Request{Block: testData[0:split]})) // send block - require.NoError(t, stream.Send(&messengertypes.MediaPrepare_Request{Block: testData[split:]})) // send block - reply, err := stream.CloseAndRecv() - require.NoError(t, err) - - logger.Info("starting send") - friendAsContact := user.GetContact(t, friend.GetAccount().GetPublicKey()) - b64CID := reply.GetCid() - payload, err := proto.Marshal(&messengertypes.AppMessage_UserMessage{Body: "Hello"}) require.NoError(t, err) _, err = user.client.Interact(ctx, &messengertypes.Interact_Request{ ConversationPublicKey: friendAsContact.GetConversationPublicKey(), - MediaCids: []string{b64CID}, Payload: payload, Type: messengertypes.AppMessage_TypeUserMessage, }) @@ -1673,47 +1540,6 @@ func TestSendMedia(t *testing.T) { fmt.Println("inte", inte) require.NotNil(t, inte) - - fmt.Println("medias", inte.GetMedias()) - - require.NotEmpty(t, inte.GetMedias()) - media := inte.GetMedias()[0] - require.NotNil(t, media) - cid := media.GetCID() - require.NotEmpty(t, cid) - require.Equal(t, b64CID, cid) - - // check media - require.NoError(t, err) - retStream, err := friend.client.MediaRetrieve(ctx, &messengertypes.MediaRetrieve_Request{Cid: b64CID}) - require.NoError(t, err) - - // define expected result - expectedMedia := testMedia - expectedMedia.CID = cid - expectedMedia.InteractionCID = inte.GetCID() - expectedMedia.State = messengertypes.Media_StateNeverDownloaded // FIXME: should be Media_StateInCache - - // get and check header - header, err := retStream.Recv() - require.NoError(t, err) - require.Equal(t, &expectedMedia, header.GetInfo()) - - // check blocks - data := []byte(nil) - for { - rsp, err := retStream.Recv() - if err == io.EOF { - break - } - require.NoError(t, err) - data = append(data, rsp.GetBlock()...) - } - require.Equal(t, testData, data) - - // check that the media was sent on the event stream - clientMedia := friend.GetMedia(t, cid) - require.Equal(t, &expectedMedia, clientMedia) } func Test_exportMessengerData(t *testing.T) { @@ -1755,117 +1581,6 @@ func Test_exportMessengerData(t *testing.T) { require.Equal(t, true, state.ReplicateFlag) } -func TestUserReaction(t *testing.T) { - testutil.FilterStabilityAndSpeed(t, testutil.Stable, testutil.Slow) - - ctx, nodes, logger, clean := Testing1To1ProcessWholeStream(t) - defer clean() - user := nodes[0] - userPK := user.GetAccount().GetPublicKey() - friend := nodes[1] - - logger.Info("starting test") - - // send message - convPK := friend.GetContact(t, userPK).GetConversationPublicKey() - require.NotNil(t, convPK) - payload, err := proto.Marshal(&messengertypes.AppMessage_UserMessage{Body: "Hello"}) - require.NoError(t, err) - interactReply, err := user.client.Interact(ctx, &messengertypes.Interact_Request{ - Type: messengertypes.AppMessage_TypeUserMessage, - Payload: payload, - ConversationPublicKey: convPK, - }) - require.NoError(t, err) - require.NotEmpty(t, interactReply.GetCID()) - - // react - payload, err = proto.Marshal(&messengertypes.AppMessage_UserReaction{Emoji: "❤️", State: true}) - require.NoError(t, err) - _, err = friend.client.Interact(ctx, &messengertypes.Interact_Request{ - Type: messengertypes.AppMessage_TypeUserReaction, - Payload: payload, - ConversationPublicKey: convPK, - TargetCID: interactReply.GetCID(), - }) - require.NoError(t, err) - time.Sleep(1 * time.Second) - - interaction := user.GetInteraction(t, interactReply.GetCID()) - require.NotNil(t, interaction) - require.Equal(t, []*messengertypes.Interaction_ReactionView{ - {Emoji: "❤️", OwnState: false, Count: 1}, - }, interaction.Reactions) - - interaction = friend.GetInteraction(t, interactReply.GetCID()) - require.NotNil(t, interaction) - require.Equal(t, []*messengertypes.Interaction_ReactionView{ - {Emoji: "❤️", OwnState: true, Count: 1}, - }, interaction.Reactions) - - // react with other user - payload, err = proto.Marshal(&messengertypes.AppMessage_UserReaction{Emoji: "❤️", State: true}) - require.NoError(t, err) - _, err = user.client.Interact(ctx, &messengertypes.Interact_Request{ - Type: messengertypes.AppMessage_TypeUserReaction, - Payload: payload, - ConversationPublicKey: convPK, - TargetCID: interactReply.GetCID(), - }) - require.NoError(t, err) - time.Sleep(1 * time.Second) - - for _, user := range nodes { - interaction = user.GetInteraction(t, interactReply.GetCID()) - require.NotNil(t, interaction) - require.Equal(t, []*messengertypes.Interaction_ReactionView{ - {Emoji: "❤️", OwnState: true, Count: 2}, - }, interaction.Reactions) - } - - // remove first reaction - payload, err = proto.Marshal(&messengertypes.AppMessage_UserReaction{Emoji: "❤️", State: false}) - require.NoError(t, err) - _, err = friend.client.Interact(ctx, &messengertypes.Interact_Request{ - Type: messengertypes.AppMessage_TypeUserReaction, - Payload: payload, - ConversationPublicKey: convPK, - TargetCID: interactReply.GetCID(), - }) - require.NoError(t, err) - time.Sleep(1 * time.Second) - - interaction = user.GetInteraction(t, interactReply.GetCID()) - require.NotNil(t, interaction) - require.Equal(t, []*messengertypes.Interaction_ReactionView{ - {Emoji: "❤️", OwnState: true, Count: 1}, - }, interaction.Reactions) - - interaction = friend.GetInteraction(t, interactReply.GetCID()) - require.NotNil(t, interaction) - require.Equal(t, []*messengertypes.Interaction_ReactionView{ - {Emoji: "❤️", OwnState: false, Count: 1}, - }, interaction.Reactions) - - // remove second reaction - payload, err = proto.Marshal(&messengertypes.AppMessage_UserReaction{Emoji: "❤️", State: false}) - require.NoError(t, err) - _, err = user.client.Interact(ctx, &messengertypes.Interact_Request{ - Type: messengertypes.AppMessage_TypeUserReaction, - Payload: payload, - ConversationPublicKey: convPK, - TargetCID: interactReply.GetCID(), - }) - require.NoError(t, err) - time.Sleep(1 * time.Second) - - for _, user := range nodes { - interaction = user.GetInteraction(t, interactReply.GetCID()) - require.NotNil(t, interaction) - require.Equal(t, []*messengertypes.Interaction_ReactionView(nil), interaction.Reactions) - } -} - func TestReply(t *testing.T) { testutil.FilterStabilityAndSpeed(t, testutil.Stable, testutil.Slow) diff --git a/go/pkg/bertymessenger/testing.go b/go/pkg/bertymessenger/testing.go index e6e0dfc879..9debacf012 100644 --- a/go/pkg/bertymessenger/testing.go +++ b/go/pkg/bertymessenger/testing.go @@ -193,7 +193,6 @@ type TestingAccount struct { contacts map[string]*messengertypes.Contact members map[string]*messengertypes.Member interactions map[string]*messengertypes.Interaction - medias map[string]*messengertypes.Media } type RecvEvent struct { @@ -215,7 +214,6 @@ func NewTestingAccount(ctx context.Context, t *testing.T, client messengertypes. contacts: make(map[string]*messengertypes.Contact), members: make(map[string]*messengertypes.Member), interactions: make(map[string]*messengertypes.Interaction), - medias: make(map[string]*messengertypes.Media), } } @@ -283,7 +281,7 @@ func (a *TestingAccount) processEvent(t *testing.T, event *messengertypes.Stream require.NoError(t, err) contact := payload.(*messengertypes.StreamEvent_ContactUpdated).Contact a.contacts[contact.GetPublicKey()] = contact - t.Log("contact updated in", a.account.GetDisplayName(), ", name:", contact.GetDisplayName(), ", mpk:", contact.GetPublicKey(), ", acid: ", contact.GetAvatarCID()) + t.Log("contact updated in", a.account.GetDisplayName(), ", name:", contact.GetDisplayName(), ", mpk:", contact.GetPublicKey()) case messengertypes.StreamEvent_TypeConversationUpdated: payload, err := event.UnmarshalPayload() require.NoError(t, err) @@ -300,11 +298,6 @@ func (a *TestingAccount) processEvent(t *testing.T, event *messengertypes.Stream require.NoError(t, err) inte := payload.(*messengertypes.StreamEvent_InteractionUpdated).Interaction a.interactions[inte.GetCID()] = inte - case messengertypes.StreamEvent_TypeMediaUpdated: - payload, err := event.UnmarshalPayload() - require.NoError(t, err) - media := payload.(*messengertypes.StreamEvent_MediaUpdated).Media - a.medias[media.GetCID()] = media } } @@ -427,14 +420,6 @@ func (a *TestingAccount) GetAllConversations() map[string]*messengertypes.Conver return newMap } -func (a *TestingAccount) GetMedia(t *testing.T, cid string) *messengertypes.Media { - a.processMutex.Lock() - defer a.processMutex.Unlock() - media, ok := a.medias[cid] - require.True(t, ok) - return media -} - func (a *TestingAccount) TryNextEvent(t *testing.T, timeout time.Duration) *messengertypes.StreamEvent { t.Helper() a.openStream(t) diff --git a/go/pkg/bertyprotocol/account_export_test.go b/go/pkg/bertyprotocol/account_export_test.go index df73991d67..77dd23742d 100644 --- a/go/pkg/bertyprotocol/account_export_test.go +++ b/go/pkg/bertyprotocol/account_export_test.go @@ -157,12 +157,12 @@ func TestFlappyRestoreAccount(t *testing.T) { testPayload3 := []byte("testMessage3") testPayload4 := []byte("testMessage4") - op, err := serviceA.accountGroup.messageStore.AddMessage(ctx, testPayload1, nil) + op, err := serviceA.accountGroup.messageStore.AddMessage(ctx, testPayload1) require.NoError(t, err) expectedMessages[op.GetEntry().GetHash()] = testPayload1 - op, err = serviceA.accountGroup.messageStore.AddMessage(ctx, testPayload2, nil) + op, err = serviceA.accountGroup.messageStore.AddMessage(ctx, testPayload2) require.NoError(t, err) expectedMessages[op.GetEntry().GetHash()] = testPayload2 @@ -173,12 +173,12 @@ func TestFlappyRestoreAccount(t *testing.T) { _, err = nodeA.Client.ActivateGroup(ctx, &protocoltypes.ActivateGroup_Request{GroupPK: g.PublicKey}) require.NoError(t, err) - op, err = serviceA.openedGroups[string(g.PublicKey)].messageStore.AddMessage(ctx, testPayload3, nil) + op, err = serviceA.openedGroups[string(g.PublicKey)].messageStore.AddMessage(ctx, testPayload3) require.NoError(t, err) expectedMessages[op.GetEntry().GetHash()] = testPayload3 - op, err = serviceA.openedGroups[string(g.PublicKey)].messageStore.AddMessage(ctx, testPayload4, nil) + op, err = serviceA.openedGroups[string(g.PublicKey)].messageStore.AddMessage(ctx, testPayload4) require.NoError(t, err) expectedMessages[op.GetEntry().GetHash()] = testPayload4 diff --git a/go/pkg/bertyprotocol/api_app.go b/go/pkg/bertyprotocol/api_app.go index 8b9ef2bad2..57b0d4ecf3 100644 --- a/go/pkg/bertyprotocol/api_app.go +++ b/go/pkg/bertyprotocol/api_app.go @@ -22,7 +22,7 @@ func (s *service) AppMetadataSend(ctx context.Context, req *protocoltypes.AppMet } tyberLogGroupContext(ctx, s.logger, gc) - op, err := gc.MetadataStore().SendAppMetadata(ctx, req.Payload, req.GetAttachmentCIDs()) + op, err := gc.MetadataStore().SendAppMetadata(ctx, req.Payload) if err != nil { return nil, errcode.ErrOrbitDBAppend.Wrap(err) } @@ -40,7 +40,7 @@ func (s *service) AppMessageSend(ctx context.Context, req *protocoltypes.AppMess } tyberLogGroupContext(ctx, s.logger, gc) - op, err := gc.MessageStore().AddMessage(ctx, req.Payload, req.GetAttachmentCIDs()) + op, err := gc.MessageStore().AddMessage(ctx, req.Payload) if err != nil { return nil, errcode.ErrOrbitDBAppend.Wrap(err) } diff --git a/go/pkg/bertyprotocol/api_attachment.go b/go/pkg/bertyprotocol/api_attachment.go deleted file mode 100644 index 3737ac5d2a..0000000000 --- a/go/pkg/bertyprotocol/api_attachment.go +++ /dev/null @@ -1,147 +0,0 @@ -package bertyprotocol - -import ( - "errors" - "fmt" - "strconv" - - ipfscid "github.com/ipfs/go-cid" - ipfsfiles "github.com/ipfs/go-ipfs-files" - ipfsoptions "github.com/ipfs/interface-go-ipfs-core/options" - ipfspath "github.com/ipfs/interface-go-ipfs-core/path" - - "berty.tech/berty/v2/go/internal/cryptoutil" - "berty.tech/berty/v2/go/internal/streamutil" - "berty.tech/berty/v2/go/pkg/errcode" - "berty.tech/berty/v2/go/pkg/protocoltypes" - "berty.tech/berty/v2/go/pkg/tyber" -) - -func (s *service) AttachmentPrepare(stream protocoltypes.ProtocolService_AttachmentPrepareServer) (err error) { - tyberCtx, _, endSection := tyber.Section(stream.Context(), s.logger, "Preparing attachment") - defer func() { endSection(err, "") }() - - // read header - headerMsg, err := stream.Recv() - if err != nil { - return errcode.ErrStreamHeaderRead.Wrap(err) - } - if len(headerMsg.GetBlock()) > 0 { - return errcode.ErrInvalidInput.Wrap(errors.New("unexpected non-empty block")) - } - if headerMsg.GetDisableEncryption() { - return errcode.ErrNotImplemented.Wrap(errors.New("disable_encryption not implemented")) - } - tyber.LogStep(tyberCtx, s.logger, "AttachmentPrepare header received", tyber.WithJSONDetail("Header", headerMsg)) - - // open requests reader - plaintext := streamutil.FuncReader(func() ([]byte, error) { - msg, err := stream.Recv() - return msg.GetBlock(), err - }, s.logger) - defer plaintext.Close() - - // open stream cipher - sk, ciphertext, err := cryptoutil.AttachmentSealer(plaintext, s.logger) - if err != nil { - return errcode.ErrCryptoCipherInit.Wrap(err) - } - defer ciphertext.Close() - - // sink ciphertext to ipfs - ipfsFile := ipfsfiles.NewReaderFile(ciphertext) - defer ipfsFile.Close() - ipfsPath, err := s.ipfsCoreAPI.Unixfs().Add(stream.Context(), ipfsFile, attachmentForcePin) - if err != nil { - return errcode.ErrIPFSAdd.Wrap(err) - } - cid := ipfsPath.Cid() - - // log file info - { - sz, err := ipfsFile.Size() - if err != nil { - sz = -1 - } - tyber.LogStep(tyberCtx, s.logger, "Sinked ciphertext to ipfs", - tyber.WithDetail("CID", cid.String()), - tyber.WithDetail("IPFSPath", ipfsPath.String()), - tyber.WithDetail("CiphertextSize", strconv.FormatInt(sz, 10)), - ) - } - - // store associated private key - cidBytes := cid.Bytes() - if err = s.deviceKeystore.AttachmentPrivKeyPut(cidBytes, sk); err != nil { - return errcode.ErrKeystorePut.Wrap(err) - } - - // return cid to client - if err = stream.SendAndClose(&protocoltypes.AttachmentPrepare_Reply{AttachmentCID: cidBytes}); err != nil { - return errcode.ErrStreamSendAndClose.Wrap(err) - } - - // success - return nil -} - -func (s *service) AttachmentRetrieve(req *protocoltypes.AttachmentRetrieve_Request, stream protocoltypes.ProtocolService_AttachmentRetrieveServer) (err error) { - tyberCtx, _, endSection := tyber.Section(stream.Context(), s.logger, "Retrieving attachment") - defer func() { - if err != nil { - endSection(err, "") - } - }() - - // deserialize cid. We could do it later but it's better to fail fast - cid, err := ipfscid.Cast(req.GetAttachmentCID()) - if err != nil { - return errcode.ErrDeserialization.Wrap(err) - } - - // get associated private key - sk, err := s.deviceKeystore.AttachmentPrivKey(req.GetAttachmentCID()) - if err != nil { - return errcode.ErrKeystoreGet.Wrap(err) - } - - // open ciphertext reader - ipfsNode, err := s.ipfsCoreAPI.Unixfs().Get(stream.Context(), ipfspath.IpfsPath(cid)) - if err != nil { - return errcode.ErrIPFSGet.Wrap(err) - } - defer ipfsNode.Close() - if sz, err := ipfsNode.Size(); err == nil { - tyber.LogStep(tyberCtx, s.logger, fmt.Sprintf("Found attachment's ciphertext of %.2f MB", float64(sz)/1000/1000)) - } - ciphertext := ipfsfiles.ToFile(ipfsNode) - defer ciphertext.Close() - - // open stream cipher - plaintext, err := cryptoutil.AttachmentOpener(ciphertext, sk, s.logger) - if err != nil { - return errcode.ErrCryptoCipherInit.Wrap(err) - } - defer plaintext.Close() - - // sink plaintext to client - plaintextSize := 0 - if err := streamutil.FuncSink(make([]byte, 64*1024), plaintext, func(block []byte) error { - plaintextSize += len(block) - return stream.Send(&protocoltypes.AttachmentRetrieve_Reply{Block: block}) - }); err != nil { - return errcode.ErrStreamSink.Wrap(err) - } - - // success - endSection(nil, fmt.Sprintf("Decrypted attachment of %.2f MB", float64(plaintextSize)/1000/1000)) - return nil -} - -func attachmentForcePin(settings *ipfsoptions.UnixfsAddSettings) error { - if settings == nil { - return errcode.ErrInvalidInput.Wrap(errors.New("nil ipfs settings")) - } - settings.Pin = true - return nil -} diff --git a/go/pkg/bertyprotocol/api_debug.go b/go/pkg/bertyprotocol/api_debug.go index 3670777607..27d65fc05b 100644 --- a/go/pkg/bertyprotocol/api_debug.go +++ b/go/pkg/bertyprotocol/api_debug.go @@ -118,9 +118,9 @@ func (s *service) DebugInspectGroupStore(req *protocoltypes.DebugInspectGroupSto if op, err := operation.ParseOperation(e); err != nil { s.logger.Error("unable to parse operation", zap.Error(err)) - } else if meta, event, _, err := openGroupEnvelope(cg.group, op.GetValue(), s.deviceKeystore); err != nil { + } else if meta, event, err := openGroupEnvelope(cg.group, op.GetValue()); err != nil { s.logger.Error("unable to open group envelope", zap.Error(err)) - } else if metaEvent, err := newGroupMetadataEventFromEntry(log, e, meta, event, cg.group, nil); err != nil { + } else if metaEvent, err := newGroupMetadataEventFromEntry(log, e, meta, event, cg.group); err != nil { s.logger.Error("unable to get group metadata event from entry", zap.Error(err)) } else { payload = metaEvent.Event diff --git a/go/pkg/bertyprotocol/api_push_test.go b/go/pkg/bertyprotocol/api_push_test.go index b45e9bfdba..f5af613d10 100644 --- a/go/pkg/bertyprotocol/api_push_test.go +++ b/go/pkg/bertyprotocol/api_push_test.go @@ -87,7 +87,7 @@ func Test_sealPushMessage_decryptOutOfStoreMessageEnv(t *testing.T) { testPayload := []byte("test payload") - envBytes, err := cryptoutil.SealEnvelope(testPayload, otherDS, otherMD.PrivateDevice(), g, nil) + envBytes, err := cryptoutil.SealEnvelope(testPayload, otherDS, otherMD.PrivateDevice(), g) require.NoError(t, err) env, headers, err := cryptoutil.OpenEnvelopeHeaders(envBytes, g) @@ -152,7 +152,7 @@ func TestService_PushReceive(t *testing.T) { testPayload := []byte("test payload") devicePushToken := "token_test" - envBytes, err := cryptoutil.SealEnvelope(testPayload, otherDS, otherMD.PrivateDevice(), g, nil) + envBytes, err := cryptoutil.SealEnvelope(testPayload, otherDS, otherMD.PrivateDevice(), g) require.NoError(t, err) env, headers, err := cryptoutil.OpenEnvelopeHeaders(envBytes, g) diff --git a/go/pkg/bertyprotocol/events.go b/go/pkg/bertyprotocol/events.go index 5fd10d00e6..e9a85a0dfc 100644 --- a/go/pkg/bertyprotocol/events.go +++ b/go/pkg/bertyprotocol/events.go @@ -44,17 +44,16 @@ var eventTypesMapper = map[protocoltypes.EventType]struct { protocoltypes.EventTypePushMemberTokenUpdate: {Message: &protocoltypes.PushMemberTokenUpdate{}, SigChecker: sigCheckerDeviceSigned}, } -func newEventContext(eventID cid.Cid, parentIDs []cid.Cid, g *protocoltypes.Group, attachmentsCIDs [][]byte) *protocoltypes.EventContext { +func newEventContext(eventID cid.Cid, parentIDs []cid.Cid, g *protocoltypes.Group) *protocoltypes.EventContext { parentIDsBytes := make([][]byte, len(parentIDs)) for i, parentID := range parentIDs { parentIDsBytes[i] = parentID.Bytes() } return &protocoltypes.EventContext{ - ID: eventID.Bytes(), - ParentIDs: parentIDsBytes, - GroupPK: g.PublicKey, - AttachmentCIDs: attachmentsCIDs, + ID: eventID.Bytes(), + ParentIDs: parentIDsBytes, + GroupPK: g.PublicKey, } } @@ -89,7 +88,7 @@ func getParentsForCID(log ipfslog.Log, c cid.Cid) []cid.Cid { return ret } -func newGroupMetadataEventFromEntry(_ ipfslog.Log, e ipfslog.Entry, metadata *protocoltypes.GroupMetadata, event proto.Message, g *protocoltypes.Group, attachmentsCIDs [][]byte) (*protocoltypes.GroupMetadataEvent, error) { +func newGroupMetadataEventFromEntry(_ ipfslog.Log, e ipfslog.Entry, metadata *protocoltypes.GroupMetadata, event proto.Message, g *protocoltypes.Group) (*protocoltypes.GroupMetadataEvent, error) { // TODO: if parent is a merge node we should return the next nodes of it eventBytes, err := proto.Marshal(event) @@ -99,7 +98,7 @@ func newGroupMetadataEventFromEntry(_ ipfslog.Log, e ipfslog.Entry, metadata *pr // TODO(gfanton): getParentsCID use a lot of ressources, disable it until we need it // evtCtx := newEventContext(e.GetHash(), getParentsForCID(log, e.GetHash()), g, attachmentsCIDs) - evtCtx := newEventContext(e.GetHash(), []cid.Cid{}, g, attachmentsCIDs) + evtCtx := newEventContext(e.GetHash(), []cid.Cid{}, g) gme := protocoltypes.GroupMetadataEvent{ EventContext: evtCtx, @@ -110,56 +109,47 @@ func newGroupMetadataEventFromEntry(_ ipfslog.Log, e ipfslog.Entry, metadata *pr return &gme, nil } -func openGroupEnvelope(g *protocoltypes.Group, envelopeBytes []byte, devKS cryptoutil.DeviceKeystore) (*protocoltypes.GroupMetadata, proto.Message, [][]byte, error) { +func openGroupEnvelope(g *protocoltypes.Group, envelopeBytes []byte) (*protocoltypes.GroupMetadata, proto.Message, error) { env := &protocoltypes.GroupEnvelope{} if err := env.Unmarshal(envelopeBytes); err != nil { - return nil, nil, nil, errcode.ErrInvalidInput.Wrap(err) + return nil, nil, errcode.ErrInvalidInput.Wrap(err) } nonce, err := cryptoutil.NonceSliceToArray(env.Nonce) if err != nil { - return nil, nil, nil, errcode.ErrSerialization.Wrap(err) + return nil, nil, errcode.ErrSerialization.Wrap(err) } data, ok := secretbox.Open(nil, env.Event, nonce, cryptoutil.GetSharedSecret(g)) if !ok { - return nil, nil, nil, errcode.ErrGroupMemberLogEventOpen + return nil, nil, errcode.ErrGroupMemberLogEventOpen } metadataEvent := &protocoltypes.GroupMetadata{} err = metadataEvent.Unmarshal(data) if err != nil { - return nil, nil, nil, errcode.TODO.Wrap(err) + return nil, nil, errcode.TODO.Wrap(err) } et, ok := eventTypesMapper[metadataEvent.EventType] if !ok { - return nil, nil, nil, errcode.ErrInvalidInput.Wrap(fmt.Errorf("event type not found")) + return nil, nil, errcode.ErrInvalidInput.Wrap(fmt.Errorf("event type not found")) } payload := proto.Clone(et.Message) if err := proto.Unmarshal(metadataEvent.Payload, payload); err != nil { - return nil, nil, nil, errcode.ErrDeserialization.Wrap(err) + return nil, nil, errcode.ErrDeserialization.Wrap(err) } if err := et.SigChecker(g, metadataEvent, payload); err != nil { - return nil, nil, nil, errcode.ErrCryptoSignatureVerification.Wrap(err) + return nil, nil, errcode.ErrCryptoSignatureVerification.Wrap(err) } - attachmentsCIDs, err := cryptoutil.AttachmentCIDSliceDecrypt(g, env.GetEncryptedAttachmentCIDs()) - if err != nil { - return nil, nil, nil, errcode.ErrCryptoDecrypt.Wrap(err) - } - - if err := devKS.AttachmentSecretSlicePut(attachmentsCIDs, metadataEvent.GetProtocolMetadata().GetAttachmentsSecrets()); err != nil { - return nil, nil, nil, errcode.TODO.Wrap(err) - } - - return metadataEvent, payload, attachmentsCIDs, nil + return metadataEvent, payload, nil } -func sealGroupEnvelope(g *protocoltypes.Group, eventType protocoltypes.EventType, payload proto.Marshaler, payloadSig []byte, attachmentsCIDs [][]byte, attachmentsSecrets [][]byte) ([]byte, error) { +func sealGroupEnvelope(g *protocoltypes.Group, eventType protocoltypes.EventType, payload proto.Marshaler, payloadSig []byte) ([]byte, error) { payloadBytes, err := payload.Marshal() if err != nil { return nil, errcode.TODO.Wrap(err) @@ -174,7 +164,7 @@ func sealGroupEnvelope(g *protocoltypes.Group, eventType protocoltypes.EventType EventType: eventType, Payload: payloadBytes, Sig: payloadSig, - ProtocolMetadata: &protocoltypes.ProtocolMetadata{AttachmentsSecrets: attachmentsSecrets}, + ProtocolMetadata: &protocoltypes.ProtocolMetadata{}, } eventClearBytes, err := event.Marshal() @@ -184,15 +174,9 @@ func sealGroupEnvelope(g *protocoltypes.Group, eventType protocoltypes.EventType eventBytes := secretbox.Seal(nil, eventClearBytes, nonce, cryptoutil.GetSharedSecret(g)) - eCIDs, err := cryptoutil.AttachmentCIDSliceEncrypt(g, attachmentsCIDs) - if err != nil { - return nil, errcode.ErrCryptoEncrypt.Wrap(err) - } - env := &protocoltypes.GroupEnvelope{ - Event: eventBytes, - Nonce: nonce[:], - EncryptedAttachmentCIDs: eCIDs, + Event: eventBytes, + Nonce: nonce[:], } return env.Marshal() diff --git a/go/pkg/bertyprotocol/orbitdb_many_adds_berty_test.go b/go/pkg/bertyprotocol/orbitdb_many_adds_berty_test.go index 1cdc9c3cb6..5c12d5234b 100644 --- a/go/pkg/bertyprotocol/orbitdb_many_adds_berty_test.go +++ b/go/pkg/bertyprotocol/orbitdb_many_adds_berty_test.go @@ -90,7 +90,7 @@ func testAddBerty(ctx context.Context, t *testing.T, node ipfsutil.CoreAPIMock, require.NoError(t, err) for i := 0; i < amountToAdd; i++ { - _, err := gc.MessageStore().AddMessage(ctx, []byte(fmt.Sprintf("%d", i)), nil) + _, err := gc.MessageStore().AddMessage(ctx, []byte(fmt.Sprintf("%d", i))) require.NoError(t, err) wg.Done() } diff --git a/go/pkg/bertyprotocol/orbitdb_test.go b/go/pkg/bertyprotocol/orbitdb_test.go index 5b52cf74b6..6b34e8754f 100644 --- a/go/pkg/bertyprotocol/orbitdb_test.go +++ b/go/pkg/bertyprotocol/orbitdb_test.go @@ -131,22 +131,22 @@ func TestDifferentStores(t *testing.T) { require.Equal(t, hex.EncodeToString(rawPK), authorized1[0]) - _, err = g1a.MetadataStore().SendAppMetadata(ctx, []byte("From 1 - 1"), nil) + _, err = g1a.MetadataStore().SendAppMetadata(ctx, []byte("From 1 - 1")) require.NoError(t, err) - _, err = g2a.MetadataStore().SendAppMetadata(ctx, []byte("From 2 - 1"), nil) + _, err = g2a.MetadataStore().SendAppMetadata(ctx, []byte("From 2 - 1")) require.NoError(t, err) - _, err = g1b.MetadataStore().SendAppMetadata(ctx, []byte("From 1 - 2"), nil) + _, err = g1b.MetadataStore().SendAppMetadata(ctx, []byte("From 1 - 2")) require.NoError(t, err) - _, err = g2b.MetadataStore().SendAppMetadata(ctx, []byte("From 2 - 2"), nil) + _, err = g2b.MetadataStore().SendAppMetadata(ctx, []byte("From 2 - 2")) require.NoError(t, err) - _, err = g1b.MetadataStore().SendAppMetadata(ctx, []byte("From 1 - 3"), nil) + _, err = g1b.MetadataStore().SendAppMetadata(ctx, []byte("From 1 - 3")) require.NoError(t, err) - _, err = g2b.MetadataStore().SendAppMetadata(ctx, []byte("From 2 - 3"), nil) + _, err = g2b.MetadataStore().SendAppMetadata(ctx, []byte("From 2 - 3")) require.NoError(t, err) { diff --git a/go/pkg/bertyprotocol/store_message.go b/go/pkg/bertyprotocol/store_message.go index bd6719af86..cedfd5e880 100644 --- a/go/pkg/bertyprotocol/store_message.go +++ b/go/pkg/bertyprotocol/store_message.go @@ -131,23 +131,18 @@ func (m *MessageStore) ProcessMessageQueueForDevicePK(ctx context.Context, devic func (m *MessageStore) processMessage(ctx context.Context, ownPK crypto.PubKey, message *messageItem) (*protocoltypes.GroupMessageEvent, error) { // process message - msg, attachmentsCIDs, err := m.mks.OpenEnvelopePayload(ctx, message.env, message.headers, m.g, ownPK, message.hash) + msg, err := m.mks.OpenEnvelopePayload(ctx, message.env, message.headers, m.g, ownPK, message.hash) if err != nil { return nil, err } - err = m.devKS.AttachmentSecretSlicePut(attachmentsCIDs, msg.GetProtocolMetadata().GetAttachmentsSecrets()) - if err != nil { - m.logger.Error("unable to put attachments keys in keystore", zap.Error(err)) - } - err = m.mks.UpdatePushGroupReferences(ctx, message.headers.DevicePK, message.headers.Counter, m.g) if err != nil { m.logger.Error("unable to update push group references", zap.Error(err)) } entry := message.op.GetEntry() - eventContext := newEventContext(entry.GetHash(), entry.GetNext(), m.g, attachmentsCIDs) + eventContext := newEventContext(entry.GetHash(), entry.GetNext(), m.g) return &protocoltypes.GroupMessageEvent{ EventContext: eventContext, Headers: message.headers, @@ -305,7 +300,7 @@ func (m *MessageStore) ListEvents(ctx context.Context, since, until []byte, reve return out, nil } -func (m *MessageStore) AddMessage(ctx context.Context, payload []byte, attachmentsCIDs [][]byte) (operation.Operation, error) { +func (m *MessageStore) AddMessage(ctx context.Context, payload []byte) (operation.Operation, error) { ctx, newTrace := tyber.ContextWithTraceID(ctx) if newTrace { @@ -313,12 +308,11 @@ func (m *MessageStore) AddMessage(ctx context.Context, payload []byte, attachmen } m.logger.Debug( - fmt.Sprintf("Adding message to store with payload of %d bytes and %d attachment(s)", len(payload), len(attachmentsCIDs)), + fmt.Sprintf("Adding message to store with payload of %d bytes", len(payload)), tyber.FormatStepLogFields( ctx, []tyber.Detail{ {Name: "Payload", Description: string(payload)}, - {Name: "Attachments cIDs", Description: fmt.Sprintf("%q", attachmentsCIDs)}, }, )..., ) @@ -328,28 +322,19 @@ func (m *MessageStore) AddMessage(ctx context.Context, payload []byte, attachmen return nil, errcode.ErrInternal.Wrap(err) } - attachmentsSecrets, err := m.devKS.AttachmentSecretSlice(attachmentsCIDs) - if err != nil { - return nil, errcode.ErrKeystoreGet.Wrap(err) - } - m.logger.Debug( - "Secrets to encrypt message content retrieved successfully", - tyber.FormatStepLogFields(ctx, []tyber.Detail{})..., - ) - - return messageStoreAddMessage(ctx, m.g, md, m, payload, attachmentsCIDs, attachmentsSecrets) + return messageStoreAddMessage(ctx, m.g, md, m, payload) } -func messageStoreAddMessage(ctx context.Context, g *protocoltypes.Group, md *cryptoutil.OwnMemberDevice, m *MessageStore, payload []byte, attachmentsCIDs [][]byte, attachmentsSecrets [][]byte) (operation.Operation, error) { +func messageStoreAddMessage(ctx context.Context, g *protocoltypes.Group, md *cryptoutil.OwnMemberDevice, m *MessageStore, payload []byte) (operation.Operation, error) { msg, err := (&protocoltypes.EncryptedMessage{ Plaintext: payload, - ProtocolMetadata: &protocoltypes.ProtocolMetadata{AttachmentsSecrets: attachmentsSecrets}, + ProtocolMetadata: &protocoltypes.ProtocolMetadata{}, }).Marshal() if err != nil { return nil, errcode.ErrInternal.Wrap(err) } - env, err := m.mks.SealEnvelope(ctx, g, md.PrivateDevice(), msg, attachmentsCIDs) + env, err := m.mks.SealEnvelope(ctx, g, md.PrivateDevice(), msg) if err != nil { return nil, errcode.ErrCryptoEncrypt.Wrap(err) } diff --git a/go/pkg/bertyprotocol/store_message_test.go b/go/pkg/bertyprotocol/store_message_test.go index 352b86527e..adbd051452 100644 --- a/go/pkg/bertyprotocol/store_message_test.go +++ b/go/pkg/bertyprotocol/store_message_test.go @@ -49,7 +49,7 @@ func Test_AddMessage_ListMessages_manually_supplying_secrets(t *testing.T) { err = peers[1].MKS.RegisterChainKey(ctx, peers[0].GC.Group(), dPK0, ds0, false) require.NoError(t, err) - _, err = peers[0].GC.MessageStore().AddMessage(ctx, testMsg1, nil) + _, err = peers[0].GC.MessageStore().AddMessage(ctx, testMsg1) require.NoError(t, err) <-time.After(time.Millisecond * 500) @@ -86,7 +86,7 @@ func Test_AddMessage_ListMessages_manually_supplying_secrets(t *testing.T) { for i := 0; i < entriesCount; i++ { payload := []byte(fmt.Sprintf("test message %d", i)) - _, err = peers[0].GC.MessageStore().AddMessage(ctx, payload, nil) + _, err = peers[0].GC.MessageStore().AddMessage(ctx, payload) require.NoError(t, err) } @@ -151,7 +151,7 @@ func Test_Add_Messages_To_Cache(t *testing.T) { for i := 0; i < entriesCount; i++ { payload := []byte(fmt.Sprintf("test message %d", i)) - _, err = peers[0].GC.MessageStore().AddMessage(ctx, payload, nil) + _, err = peers[0].GC.MessageStore().AddMessage(ctx, payload) require.NoError(t, err) } @@ -212,7 +212,7 @@ func Test_Add_Messages_To_Cache(t *testing.T) { require.True(t, ok) require.Equal(t, 0, size) - _, err = peers[0].GC.MessageStore().AddMessage(ctx, testMsg1, nil) + _, err = peers[0].GC.MessageStore().AddMessage(ctx, testMsg1) require.NoError(t, err) size, ok = peers[1].GC.MessageStore().CacheSizeForDevicePK(dPK0Raw) diff --git a/go/pkg/bertyprotocol/store_metadata.go b/go/pkg/bertyprotocol/store_metadata.go index 10bc1dcfef..2057bc40a5 100644 --- a/go/pkg/bertyprotocol/store_metadata.go +++ b/go/pkg/bertyprotocol/store_metadata.go @@ -83,18 +83,18 @@ func (m *MetadataStore) setLogger(l *zap.Logger) { } } -func openMetadataEntry(log ipfslog.Log, e ipfslog.Entry, g *protocoltypes.Group, devKS cryptoutil.DeviceKeystore) (*protocoltypes.GroupMetadataEvent, proto.Message, error) { +func openMetadataEntry(log ipfslog.Log, e ipfslog.Entry, g *protocoltypes.Group) (*protocoltypes.GroupMetadataEvent, proto.Message, error) { op, err := operation.ParseOperation(e) if err != nil { return nil, nil, err } - meta, event, attachmentsCIDs, err := openGroupEnvelope(g, op.GetValue(), devKS) + meta, event, err := openGroupEnvelope(g, op.GetValue()) if err != nil { return nil, nil, err } - metaEvent, err := newGroupMetadataEventFromEntry(log, e, meta, event, g, attachmentsCIDs) + metaEvent, err := newGroupMetadataEventFromEntry(log, e, meta, event, g) if err != nil { return nil, nil, err } @@ -121,7 +121,7 @@ func (m *MetadataStore) ListEvents(ctx context.Context, since, until []byte, rev entries, reverse, func(entry ipliface.IPFSLogEntry) { - event, _, err := openMetadataEntry(m.OpLog(), entry, m.g, m.devKS) + event, _, err := openMetadataEntry(m.OpLog(), entry, m.g) if err != nil { m.logger.Error("unable to open metadata event", zap.Error(err)) } else { @@ -180,7 +180,7 @@ func MetadataStoreAddDeviceToGroup(ctx context.Context, m *MetadataStore, g *pro m.logger.Info("announcing device on store") - return metadataStoreAddEvent(ctx, m, g, protocoltypes.EventTypeGroupMemberDeviceAdded, event, sig, nil) + return metadataStoreAddEvent(ctx, m, g, protocoltypes.EventTypeGroupMemberDeviceAdded, event, sig) } func (m *MetadataStore) SendSecret(ctx context.Context, memberPK crypto.PubKey) (operation.Operation, error) { @@ -237,7 +237,7 @@ func MetadataStoreSendSecret(ctx context.Context, m *MetadataStore, g *protocolt return nil, errcode.ErrCryptoSignature.Wrap(err) } - return metadataStoreAddEvent(ctx, m, g, protocoltypes.EventTypeGroupDeviceSecretAdded, event, sig, nil) + return metadataStoreAddEvent(ctx, m, g, protocoltypes.EventTypeGroupDeviceSecretAdded, event, sig) } func (m *MetadataStore) ClaimGroupOwnership(ctx context.Context, groupSK crypto.PrivKey) (operation.Operation, error) { @@ -264,7 +264,7 @@ func (m *MetadataStore) ClaimGroupOwnership(ctx context.Context, groupSK crypto. return nil, errcode.ErrCryptoSignature.Wrap(err) } - return metadataStoreAddEvent(ctx, m, m.g, protocoltypes.EventTypeMultiMemberGroupInitialMemberAnnounced, event, sig, nil) + return metadataStoreAddEvent(ctx, m, m.g, protocoltypes.EventTypeMultiMemberGroupInitialMemberAnnounced, event, sig) } func signProto(message proto.Message, sk crypto.PrivKey) ([]byte, error) { @@ -281,7 +281,7 @@ func signProto(message proto.Message, sk crypto.PrivKey) ([]byte, error) { return sig, nil } -func metadataStoreAddEvent(ctx context.Context, m *MetadataStore, g *protocoltypes.Group, eventType protocoltypes.EventType, event proto.Marshaler, sig []byte, attachmentsCIDs [][]byte) (operation.Operation, error) { +func metadataStoreAddEvent(ctx context.Context, m *MetadataStore, g *protocoltypes.Group, eventType protocoltypes.EventType, event proto.Marshaler, sig []byte) (operation.Operation, error) { ctx, newTrace := tyber.ContextWithTraceID(ctx) tyberLogError := tyber.LogError if newTrace { @@ -289,13 +289,7 @@ func metadataStoreAddEvent(ctx context.Context, m *MetadataStore, g *protocoltyp tyberLogError = tyber.LogFatalError } - attachmentsSecrets, err := m.devKS.AttachmentSecretSlice(attachmentsCIDs) - if err != nil { - return nil, tyberLogError(ctx, m.logger, "Failed to get attachments' secrets", errcode.ErrKeystoreGet.Wrap(err)) - } - m.logger.Debug(fmt.Sprintf("Got %d attachment secrets", len(attachmentsSecrets)), tyber.FormatStepLogFields(ctx, []tyber.Detail{})...) - - env, err := sealGroupEnvelope(g, eventType, event, sig, attachmentsCIDs, attachmentsSecrets) + env, err := sealGroupEnvelope(g, eventType, event, sig) if err != nil { return nil, tyberLogError(ctx, m.logger, "Failed to seal group envelope", errcode.ErrCryptoSignature.Wrap(err)) } @@ -510,7 +504,7 @@ func (m *MetadataStore) GroupJoin(ctx context.Context, g *protocoltypes.Group) ( return m.attributeSignAndAddEvent(ctx, &protocoltypes.AccountGroupJoined{ Group: g, - }, protocoltypes.EventTypeAccountGroupJoined, nil) + }, protocoltypes.EventTypeAccountGroupJoined) } // GroupLeave indicates the payload includes that the deviceKeystore has left a group @@ -541,7 +535,7 @@ func (m *MetadataStore) ContactRequestDisable(ctx context.Context) (operation.Op return nil, errcode.ErrGroupInvalidType } - return m.attributeSignAndAddEvent(ctx, &protocoltypes.AccountContactRequestDisabled{}, protocoltypes.EventTypeAccountContactRequestDisabled, nil) + return m.attributeSignAndAddEvent(ctx, &protocoltypes.AccountContactRequestDisabled{}, protocoltypes.EventTypeAccountContactRequestDisabled) } // ContactRequestEnable indicates the payload includes that the deviceKeystore has enabled incoming contact requests @@ -550,7 +544,7 @@ func (m *MetadataStore) ContactRequestEnable(ctx context.Context) (operation.Ope return nil, errcode.ErrGroupInvalidType } - return m.attributeSignAndAddEvent(ctx, &protocoltypes.AccountContactRequestEnabled{}, protocoltypes.EventTypeAccountContactRequestEnabled, nil) + return m.attributeSignAndAddEvent(ctx, &protocoltypes.AccountContactRequestEnabled{}, protocoltypes.EventTypeAccountContactRequestEnabled) } // ContactRequestReferenceReset indicates the payload includes that the deviceKeystore has a new contact request reference @@ -566,7 +560,7 @@ func (m *MetadataStore) ContactRequestReferenceReset(ctx context.Context) (opera return m.attributeSignAndAddEvent(ctx, &protocoltypes.AccountContactRequestReferenceReset{ PublicRendezvousSeed: seed, - }, protocoltypes.EventTypeAccountContactRequestReferenceReset, nil) + }, protocoltypes.EventTypeAccountContactRequestReferenceReset) } // ContactRequestOutgoingEnqueue indicates the payload includes that the deviceKeystore will attempt to send a new contact request @@ -613,7 +607,7 @@ func (m *MetadataStore) ContactRequestOutgoingEnqueue(ctx context.Context, conta Metadata: contact.Metadata, }, OwnMetadata: ownMetadata, - }, protocoltypes.EventTypeAccountContactRequestOutgoingEnqueued, nil) + }, protocoltypes.EventTypeAccountContactRequestOutgoingEnqueued) m.logger.Debug("Enqueued contact request", tyber.FormatStepLogFields(ctx, []tyber.Detail{})...) @@ -696,7 +690,7 @@ func (m *MetadataStore) ContactRequestIncomingReceived(ctx context.Context, cont ContactPK: contact.PK, ContactRendezvousSeed: contact.PublicRendezvousSeed, ContactMetadata: contact.Metadata, - }, protocoltypes.EventTypeAccountContactRequestIncomingReceived, nil) + }, protocoltypes.EventTypeAccountContactRequestIncomingReceived) } // ContactRequestIncomingDiscard indicates the payload includes that the deviceKeystore has ignored a contact request @@ -777,7 +771,7 @@ func (m *MetadataStore) ContactSendAliasKey(ctx context.Context) (operation.Oper return m.attributeSignAndAddEvent(ctx, &protocoltypes.ContactAddAliasKey{ AliasPK: alias, - }, protocoltypes.EventTypeContactAliasKeyAdded, nil) + }, protocoltypes.EventTypeContactAliasKeyAdded) } func (m *MetadataStore) SendAliasProof(ctx context.Context) (operation.Operation, error) { @@ -791,13 +785,13 @@ func (m *MetadataStore) SendAliasProof(ctx context.Context) (operation.Operation return m.attributeSignAndAddEvent(ctx, &protocoltypes.MultiMemberGroupAddAliasResolver{ AliasResolver: resolver, AliasProof: proof, - }, protocoltypes.EventTypeMultiMemberGroupAliasResolverAdded, nil) + }, protocoltypes.EventTypeMultiMemberGroupAliasResolverAdded) } -func (m *MetadataStore) SendAppMetadata(ctx context.Context, message []byte, attachmentsCIDs [][]byte) (operation.Operation, error) { +func (m *MetadataStore) SendAppMetadata(ctx context.Context, message []byte) (operation.Operation, error) { return m.attributeSignAndAddEvent(ctx, &protocoltypes.AppMetadata{ Message: message, - }, protocoltypes.EventTypeGroupMetadataPayloadSent, attachmentsCIDs) + }, protocoltypes.EventTypeGroupMetadataPayloadSent) } func (m *MetadataStore) SendAccountServiceTokenAdded(ctx context.Context, token *protocoltypes.ServiceToken) (operation.Operation, error) { @@ -815,7 +809,7 @@ func (m *MetadataStore) SendAccountServiceTokenAdded(ctx context.Context, token return m.attributeSignAndAddEvent(ctx, &protocoltypes.AccountServiceTokenAdded{ ServiceToken: token, - }, protocoltypes.EventTypeAccountServiceTokenAdded, nil) + }, protocoltypes.EventTypeAccountServiceTokenAdded) } func (m *MetadataStore) SendAccountServiceTokenRemoved(ctx context.Context, tokenID string) (operation.Operation, error) { @@ -835,14 +829,14 @@ func (m *MetadataStore) SendAccountServiceTokenRemoved(ctx context.Context, toke return m.attributeSignAndAddEvent(ctx, &protocoltypes.AccountServiceTokenRemoved{ TokenID: tokenID, - }, protocoltypes.EventTypeAccountServiceTokenRemoved, nil) + }, protocoltypes.EventTypeAccountServiceTokenRemoved) } func (m *MetadataStore) SendGroupReplicating(ctx context.Context, t *protocoltypes.ServiceToken, endpoint string) (operation.Operation, error) { return m.attributeSignAndAddEvent(ctx, &protocoltypes.GroupReplicating{ AuthenticationURL: t.AuthenticationURL, ReplicationServer: endpoint, - }, protocoltypes.EventTypeGroupReplicating, nil) + }, protocoltypes.EventTypeGroupReplicating) } type accountSignableEvent interface { @@ -861,7 +855,7 @@ type accountGroupEvent interface { SetGroupPK([]byte) } -func (m *MetadataStore) attributeSignAndAddEvent(ctx context.Context, evt accountSignableEvent, eventType protocoltypes.EventType, attachmentsCIDs [][]byte) (operation.Operation, error) { +func (m *MetadataStore) attributeSignAndAddEvent(ctx context.Context, evt accountSignableEvent, eventType protocoltypes.EventType) (operation.Operation, error) { md, err := m.devKS.MemberDeviceForGroup(m.g) if err != nil { return nil, errcode.ErrInternal.Wrap(err) @@ -885,7 +879,7 @@ func (m *MetadataStore) attributeSignAndAddEvent(ctx context.Context, evt accoun m.logger.Debug("Signed event", tyber.FormatStepLogFields(ctx, []tyber.Detail{{Name: "Signature", Description: base64.RawURLEncoding.EncodeToString(sig)}})...) - return metadataStoreAddEvent(ctx, m, m.g, eventType, evt, sig, attachmentsCIDs) + return metadataStoreAddEvent(ctx, m, m.g, eventType, evt, sig) } func (m *MetadataStore) contactAction(ctx context.Context, pk crypto.PubKey, event accountContactEvent, evtType protocoltypes.EventType) (operation.Operation, error) { @@ -909,7 +903,7 @@ func (m *MetadataStore) contactAction(ctx context.Context, pk crypto.PubKey, eve event.SetContactPK(pkBytes) - op, err := m.attributeSignAndAddEvent(ctx, event, evtType, nil) + op, err := m.attributeSignAndAddEvent(ctx, event, evtType) if err != nil { return nil, err } @@ -928,7 +922,7 @@ func (m *MetadataStore) groupAction(ctx context.Context, pk crypto.PubKey, event event.SetGroupPK(pkBytes) - return m.attributeSignAndAddEvent(ctx, event, evtType, nil) + return m.attributeSignAndAddEvent(ctx, event, evtType) } func (m *MetadataStore) getContactStatus(pk crypto.PubKey) protocoltypes.ContactState { @@ -1064,7 +1058,7 @@ func constructorFactoryGroupMetadata(s *BertyOrbitDB, logger *zap.Logger) iface. ctx = tyber.ContextWithConstantTraceID(ctx, "msgrcvd-"+entry.GetHash().String()) tyber.LogTraceStart(ctx, store.logger, fmt.Sprintf("Received metadata from %s group %s", shortGroupType, b64GroupPK)) - metaEvent, event, err := openMetadataEntry(store.OpLog(), entry, g, store.devKS) + metaEvent, event, err := openMetadataEntry(store.OpLog(), entry, g) if err != nil { _ = tyber.LogFatalError(ctx, store.logger, "Unable to open metadata event", err, tyber.WithDetail("RawEvent", fmt.Sprint(e)), tyber.ForceReopen) continue @@ -1125,20 +1119,20 @@ func (m *MetadataStore) SendPushToken(ctx context.Context, t *protocoltypes.Push return m.attributeSignAndAddEvent(ctx, &protocoltypes.PushMemberTokenUpdate{ Server: t.Server, Token: t.Token, - }, protocoltypes.EventTypePushMemberTokenUpdate, nil) + }, protocoltypes.EventTypePushMemberTokenUpdate) } func (m *MetadataStore) RegisterDevicePushToken(ctx context.Context, token *protocoltypes.PushServiceReceiver) (operation.Operation, error) { m.logger.Debug("register push token") return m.attributeSignAndAddEvent(ctx, &protocoltypes.PushDeviceTokenRegistered{ Token: token, - }, protocoltypes.EventTypePushDeviceTokenRegistered, nil) + }, protocoltypes.EventTypePushDeviceTokenRegistered) } func (m *MetadataStore) RegisterDevicePushServer(ctx context.Context, server *protocoltypes.PushServer) (operation.Operation, error) { return m.attributeSignAndAddEvent(ctx, &protocoltypes.PushDeviceServerRegistered{ Server: server, - }, protocoltypes.EventTypePushDeviceServerRegistered, nil) + }, protocoltypes.EventTypePushDeviceServerRegistered) } func (m *MetadataStore) getCurrentDevicePushToken() *protocoltypes.PushServiceReceiver { diff --git a/go/pkg/bertyprotocol/store_metadata_index.go b/go/pkg/bertyprotocol/store_metadata_index.go index 811350fb08..3232cb133d 100644 --- a/go/pkg/bertyprotocol/store_metadata_index.go +++ b/go/pkg/bertyprotocol/store_metadata_index.go @@ -88,7 +88,7 @@ func (m *metadataStoreIndex) UpdateIndex(log ipfslog.Log, _ []ipfslog.Entry) err continue } - metaEvent, event, err := openMetadataEntry(log, e, m.g, m.deviceKeystore) + metaEvent, event, err := openMetadataEntry(log, e, m.g) if err != nil { m.logger.Error("unable to open metadata entry", zap.Error(err)) continue diff --git a/go/pkg/bertypush/push_format.go b/go/pkg/bertypush/push_format.go index ddd548dc7a..6c3704e8ec 100644 --- a/go/pkg/bertypush/push_format.go +++ b/go/pkg/bertypush/push_format.go @@ -3,7 +3,6 @@ package bertypush import ( "encoding/json" "fmt" - "strconv" "golang.org/x/text/message" @@ -53,32 +52,6 @@ func FormatDecryptedPush(decrypted *pushtypes.DecryptedPush, printer *message.Pr fmtpush.Body = msg - case decrypted.PushType == pushtypes.DecryptedPush_Reaction: - var emoji string - if err = payload.get("reaction", &emoji); err != nil { - emoji = ":)" - } - - fmtpush.Body = printer.Sprintf("push.reaction.bodyWithDisplayNameAndEmoji", decrypted.MemberDisplayName, emoji) - - case decrypted.PushType == pushtypes.DecryptedPush_Photo, decrypted.PushType == pushtypes.DecryptedPush_Gif, decrypted.PushType == pushtypes.DecryptedPush_VoiceMessage, decrypted.PushType == pushtypes.DecryptedPush_Media: - formatKeys := map[pushtypes.DecryptedPush_PushType]string{ - pushtypes.DecryptedPush_Photo: "push.photo.bodyWithNumberOfMedia", - pushtypes.DecryptedPush_Gif: "push.gif.bodyWithNumberOfMedia", - pushtypes.DecryptedPush_VoiceMessage: "push.voiceMessage.bodyWithNumberOfMedia", - pushtypes.DecryptedPush_Media: "push.media.bodyWithNumberOfMedia", - } - - var mediasCount string - _ = payload.get("medias-count", &mediasCount) - - var c int - if c, err = strconv.Atoi(mediasCount); err != nil { - c = 1 - } - - fmtpush.Body = printer.Sprintf(formatKeys[decrypted.PushType], c) - case decrypted.PushType == pushtypes.DecryptedPush_GroupInvitation: var groupName string if err = payload.get("group-name", &groupName); err != nil { @@ -91,16 +64,12 @@ func FormatDecryptedPush(decrypted *pushtypes.DecryptedPush, printer *message.Pr decrypted.PushType == pushtypes.DecryptedPush_Unknown, decrypted.PushType == pushtypes.DecryptedPush_ConversationNameChanged, decrypted.PushType == pushtypes.DecryptedPush_MemberNameChanged, - decrypted.PushType == pushtypes.DecryptedPush_MemberPictureChanged, - decrypted.PushType == pushtypes.DecryptedPush_MemberDetailsChanged, - decrypted.PushType == pushtypes.DecryptedPush_ReplyOptions: + decrypted.PushType == pushtypes.DecryptedPush_MemberDetailsChanged: placeHolderMessages := map[pushtypes.DecryptedPush_PushType]string{ pushtypes.DecryptedPush_Unknown: "push.unknown.body", pushtypes.DecryptedPush_ConversationNameChanged: "push.conversationNameChanged.body", pushtypes.DecryptedPush_MemberNameChanged: "push.memberNameChanged.body", - pushtypes.DecryptedPush_MemberPictureChanged: "push.memberPictureChanged.body", pushtypes.DecryptedPush_MemberDetailsChanged: "push.memberDetailsChanged.body", - pushtypes.DecryptedPush_ReplyOptions: "push.replyOptionsOffered.body", } fmtpush.Body = printer.Sprintf(placeHolderMessages[decrypted.PushType]) diff --git a/go/pkg/bertypush/push_opener.go b/go/pkg/bertypush/push_opener.go index 27277cfe8f..cefe623158 100644 --- a/go/pkg/bertypush/push_opener.go +++ b/go/pkg/bertypush/push_opener.go @@ -6,7 +6,6 @@ import ( "encoding/json" "fmt" "path" - "strings" "time" "github.com/gogo/protobuf/proto" @@ -87,28 +86,6 @@ func PushEnrich(rawPushData *messengertypes.PushReceivedData, accountData *accou break } - if l := len(rawPushData.Interaction.Medias); l > 0 { - switch { - case !checkAllMediasHaveSameMime(rawPushData.Interaction.Medias): - d.PushType = pushtypes.DecryptedPush_Media - - case strings.HasSuffix(rawPushData.Interaction.Medias[0].MimeType, "gif"): - d.PushType = pushtypes.DecryptedPush_Gif - - case strings.HasPrefix(rawPushData.Interaction.Medias[0].MimeType, "image/") || rawPushData.Interaction.Medias[0].MimeType == "image": - d.PushType = pushtypes.DecryptedPush_Photo - - case strings.HasPrefix(rawPushData.Interaction.Medias[0].MimeType, "audio/") || rawPushData.Interaction.Medias[0].MimeType == "audio": - d.PushType = pushtypes.DecryptedPush_VoiceMessage - - default: - d.PushType = pushtypes.DecryptedPush_Media - } - - payloadAttrs["medias-count"] = fmt.Sprintf("%d", l) - break - } - if m.Body == "" { break } @@ -116,18 +93,6 @@ func PushEnrich(rawPushData *messengertypes.PushReceivedData, accountData *accou d.PushType = pushtypes.DecryptedPush_Message payloadAttrs["message"] = m.Body - case messengertypes.AppMessage_TypeUserReaction: - d.PushType = pushtypes.DecryptedPush_Reaction - r := &messengertypes.AppMessage_UserReaction{} - err := proto.Unmarshal(rawPushData.Interaction.Payload, r) - if err != nil { - logger.Error("unable to unmarshal reaction", logutil.PrivateString("cid", string(rawPushData.ProtocolData.Message.CID)), zap.Error(err)) - break - } - - payloadAttrs["reaction"] = r.Emoji - // IDEA: ignore if reaction's targeted message is not send by the user if possible (i.e. not on iOS) - case messengertypes.AppMessage_TypeGroupInvitation: d.PushType = pushtypes.DecryptedPush_GroupInvitation invitation := &messengertypes.AppMessage_GroupInvitation{} @@ -162,9 +127,6 @@ func PushEnrich(rawPushData *messengertypes.PushReceivedData, accountData *accou case messengertypes.AppMessage_TypeAcknowledge: logger.Debug("received a push notification for an ack, this should not happen", logutil.PrivateString("cid", rawPushData.Interaction.CID)) - case messengertypes.AppMessage_TypeReplyOptions: - d.PushType = pushtypes.DecryptedPush_ReplyOptions - default: logger.Debug("unknown message type", zap.String("message-type", rawPushData.Interaction.Type.String()), logutil.PrivateString("cid", rawPushData.Interaction.CID)) } @@ -303,18 +265,3 @@ func PushDecrypt(ctx context.Context, rootDir string, input []byte, opts *PushDe // only returning the first error return nil, nil, errcode.ErrPushUnableToDecrypt.Wrap(errs[0]) } - -func checkAllMediasHaveSameMime(medias []*messengertypes.Media) bool { - if len(medias) < 2 { - return true - } - - firstType := medias[0].MimeType - for i := range medias { - if firstType != medias[i].MimeType { - return false - } - } - - return true -} diff --git a/go/pkg/bertyreplication/services_replication_test.go b/go/pkg/bertyreplication/services_replication_test.go index 97d5d88b97..ff404ae447 100644 --- a/go/pkg/bertyreplication/services_replication_test.go +++ b/go/pkg/bertyreplication/services_replication_test.go @@ -217,7 +217,7 @@ func TestReplicationService_ReplicateGroupStats_ReplicateGlobalStats(t *testing. require.NoError(t, err) defer gcPeer1.Close() - opMeta, err := gcPeer1.MetadataStore().SendAppMetadata(ctx, []byte("meta_1"), nil) + opMeta, err := gcPeer1.MetadataStore().SendAppMetadata(ctx, []byte("meta_1")) require.NoError(t, err) deadline := time.Now().Add(5 * time.Second) @@ -262,7 +262,7 @@ func TestReplicationService_ReplicateGroupStats_ReplicateGlobalStats(t *testing. previousUpdatedAt = res.Group.UpdatedAt - opMsg, err := gcPeer1.MessageStore().AddMessage(ctx, []byte("hey"), nil) + opMsg, err := gcPeer1.MessageStore().AddMessage(ctx, []byte("hey")) require.NoError(t, err) deadline = time.Now().Add(5 * time.Second) @@ -307,7 +307,7 @@ func TestReplicationService_ReplicateGroupStats_ReplicateGlobalStats(t *testing. previousUpdatedAt = res.Group.UpdatedAt - opMsg2, err := gcPeer1.MessageStore().AddMessage(ctx, []byte("hey 2"), nil) + opMsg2, err := gcPeer1.MessageStore().AddMessage(ctx, []byte("hey 2")) require.NoError(t, err) deadline = time.Now().Add(5 * time.Second) @@ -452,10 +452,10 @@ func TestReplicationService_Flow(t *testing.T) { sub2a, err := g2a.MetadataStore().EventBus().Subscribe(new(protocoltypes.GroupMetadataEvent)) require.NoError(t, err) - _, err = g1a.MetadataStore().SendAppMetadata(ctx, []byte("From 1 - 1"), nil) + _, err = g1a.MetadataStore().SendAppMetadata(ctx, []byte("From 1 - 1")) require.NoError(t, err) - _, err = g2a.MetadataStore().SendAppMetadata(ctx, []byte("From 2 - 1"), nil) + _, err = g2a.MetadataStore().SendAppMetadata(ctx, []byte("From 2 - 1")) require.NoError(t, err) var evt interface{} @@ -529,7 +529,7 @@ func TestReplicationService_Flow(t *testing.T) { }() for i := 0; i < messageAmount; i++ { - _, err = g1a.MetadataStore().SendAppMetadata(ctx, []byte(fmt.Sprintf("From 1 - 2: %d", i)), nil) + _, err = g1a.MetadataStore().SendAppMetadata(ctx, []byte(fmt.Sprintf("From 1 - 2: %d", i))) require.NoError(t, err) } diff --git a/go/pkg/messengertypes/messengertypes.pb.go b/go/pkg/messengertypes/messengertypes.pb.go index 413c82a30f..c4afcef292 100644 --- a/go/pkg/messengertypes/messengertypes.pb.go +++ b/go/pkg/messengertypes/messengertypes.pb.go @@ -30,34 +30,6 @@ var ( // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -type MediaMetadataType int32 - -const ( - MediaMetadataType_MetadataUnknown MediaMetadataType = 0 - MediaMetadataType_MetadataKeyValue MediaMetadataType = 1 - MediaMetadataType_MetadataAudioPreview MediaMetadataType = 2 -) - -var MediaMetadataType_name = map[int32]string{ - 0: "MetadataUnknown", - 1: "MetadataKeyValue", - 2: "MetadataAudioPreview", -} - -var MediaMetadataType_value = map[string]int32{ - "MetadataUnknown": 0, - "MetadataKeyValue": 1, - "MetadataAudioPreview": 2, -} - -func (x MediaMetadataType) String() string { - return proto.EnumName(MediaMetadataType_name, int32(x)) -} - -func (MediaMetadataType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{0} -} - type BertyLink_Kind int32 const ( @@ -97,34 +69,28 @@ type AppMessage_Type int32 const ( AppMessage_Undefined AppMessage_Type = 0 AppMessage_TypeUserMessage AppMessage_Type = 1 - AppMessage_TypeUserReaction AppMessage_Type = 2 AppMessage_TypeGroupInvitation AppMessage_Type = 3 AppMessage_TypeSetGroupInfo AppMessage_Type = 4 AppMessage_TypeSetUserInfo AppMessage_Type = 5 AppMessage_TypeAcknowledge AppMessage_Type = 6 - AppMessage_TypeReplyOptions AppMessage_Type = 7 ) var AppMessage_Type_name = map[int32]string{ 0: "Undefined", 1: "TypeUserMessage", - 2: "TypeUserReaction", 3: "TypeGroupInvitation", 4: "TypeSetGroupInfo", 5: "TypeSetUserInfo", 6: "TypeAcknowledge", - 7: "TypeReplyOptions", } var AppMessage_Type_value = map[string]int32{ "Undefined": 0, "TypeUserMessage": 1, - "TypeUserReaction": 2, "TypeGroupInvitation": 3, "TypeSetGroupInfo": 4, "TypeSetUserInfo": 5, "TypeAcknowledge": 6, - "TypeReplyOptions": 7, } func (x AppMessage_Type) String() string { @@ -132,52 +98,7 @@ func (x AppMessage_Type) String() string { } func (AppMessage_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{17, 0} -} - -type Media_State int32 - -const ( - Media_StateUnknown Media_State = 0 - // specific to media received - Media_StateNeverDownloaded Media_State = 1 - Media_StatePartiallyDownloaded Media_State = 2 - Media_StateDownloaded Media_State = 3 - Media_StateInCache Media_State = 4 - Media_StateInvalidCrypto Media_State = 5 - // specific to media sent - Media_StatePrepared Media_State = 100 - Media_StateAttached Media_State = 101 -) - -var Media_State_name = map[int32]string{ - 0: "StateUnknown", - 1: "StateNeverDownloaded", - 2: "StatePartiallyDownloaded", - 3: "StateDownloaded", - 4: "StateInCache", - 5: "StateInvalidCrypto", - 100: "StatePrepared", - 101: "StateAttached", -} - -var Media_State_value = map[string]int32{ - "StateUnknown": 0, - "StateNeverDownloaded": 1, - "StatePartiallyDownloaded": 2, - "StateDownloaded": 3, - "StateInCache": 4, - "StateInvalidCrypto": 5, - "StatePrepared": 100, - "StateAttached": 101, -} - -func (x Media_State) String() string { - return proto.EnumName(Media_State_name, int32(x)) -} - -func (Media_State) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{25, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{16, 0} } type Contact_State int32 @@ -211,7 +132,7 @@ func (x Contact_State) String() string { } func (Contact_State) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{26, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{23, 0} } type Conversation_Type int32 @@ -242,7 +163,7 @@ func (x Conversation_Type) String() string { } func (Conversation_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{27, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{24, 0} } type StreamEvent_Type int32 @@ -259,7 +180,6 @@ const ( StreamEvent_TypeMemberUpdated StreamEvent_Type = 8 StreamEvent_TypeDeviceUpdated StreamEvent_Type = 9 StreamEvent_TypeNotified StreamEvent_Type = 10 - StreamEvent_TypeMediaUpdated StreamEvent_Type = 11 StreamEvent_TypeConversationPartialLoad StreamEvent_Type = 12 StreamEvent_TypePeerStatusConnected StreamEvent_Type = 13 StreamEvent_TypePeerStatusReconnecting StreamEvent_Type = 14 @@ -279,7 +199,6 @@ var StreamEvent_Type_name = map[int32]string{ 8: "TypeMemberUpdated", 9: "TypeDeviceUpdated", 10: "TypeNotified", - 11: "TypeMediaUpdated", 12: "TypeConversationPartialLoad", 13: "TypePeerStatusConnected", 14: "TypePeerStatusReconnecting", @@ -299,7 +218,6 @@ var StreamEvent_Type_value = map[string]int32{ "TypeMemberUpdated": 8, "TypeDeviceUpdated": 9, "TypeNotified": 10, - "TypeMediaUpdated": 11, "TypeConversationPartialLoad": 12, "TypePeerStatusConnected": 13, "TypePeerStatusReconnecting": 14, @@ -312,7 +230,7 @@ func (x StreamEvent_Type) String() string { } func (StreamEvent_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 0} } type StreamEvent_Notified_Type int32 @@ -349,7 +267,7 @@ func (x StreamEvent_Notified_Type) String() string { } func (StreamEvent_Notified_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 11, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 10, 0} } type StreamEvent_PeerStatusConnected_Transport int32 @@ -380,7 +298,7 @@ func (x StreamEvent_PeerStatusConnected_Transport) String() string { } func (StreamEvent_PeerStatusConnected_Transport) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 12, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 11, 0} } type PaginatedInteractionsOptions struct { @@ -392,8 +310,6 @@ type PaginatedInteractionsOptions struct { ConversationPK string `protobuf:"bytes,3,opt,name=conversation_pk,json=conversationPk,proto3" json:"conversation_pk,omitempty"` // oldest_to_newest Default sort of results is latest to oldest message OldestToNewest bool `protobuf:"varint,4,opt,name=oldest_to_newest,json=oldestToNewest,proto3" json:"oldest_to_newest,omitempty"` - // exclude_medias Medias are included by default - ExcludeMedias bool `protobuf:"varint,5,opt,name=exclude_medias,json=excludeMedias,proto3" json:"exclude_medias,omitempty"` // no_bulk should interactions be via atomic update in the stream NoBulk bool `protobuf:"varint,6,opt,name=no_bulk,json=noBulk,proto3" json:"no_bulk,omitempty"` } @@ -455,13 +371,6 @@ func (m *PaginatedInteractionsOptions) GetOldestToNewest() bool { return false } -func (m *PaginatedInteractionsOptions) GetExcludeMedias() bool { - if m != nil { - return m.ExcludeMedias - } - return false -} - func (m *PaginatedInteractionsOptions) GetNoBulk() bool { if m != nil { return m.NoBulk @@ -2148,116 +2057,6 @@ func (m *SendContactRequest_Reply) XXX_DiscardUnknown() { var xxx_messageInfo_SendContactRequest_Reply proto.InternalMessageInfo -type SendReplyOptions struct{} - -func (m *SendReplyOptions) Reset() { *m = SendReplyOptions{} } -func (m *SendReplyOptions) String() string { return proto.CompactTextString(m) } -func (*SendReplyOptions) ProtoMessage() {} -func (*SendReplyOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{14} -} - -func (m *SendReplyOptions) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SendReplyOptions.Unmarshal(m, b) -} - -func (m *SendReplyOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SendReplyOptions.Marshal(b, m, deterministic) -} - -func (m *SendReplyOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_SendReplyOptions.Merge(m, src) -} - -func (m *SendReplyOptions) XXX_Size() int { - return xxx_messageInfo_SendReplyOptions.Size(m) -} - -func (m *SendReplyOptions) XXX_DiscardUnknown() { - xxx_messageInfo_SendReplyOptions.DiscardUnknown(m) -} - -var xxx_messageInfo_SendReplyOptions proto.InternalMessageInfo - -type SendReplyOptions_Request struct { - GroupPK []byte `protobuf:"bytes,1,opt,name=group_pk,json=groupPk,proto3" json:"group_pk,omitempty"` - Options *AppMessage_ReplyOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` -} - -func (m *SendReplyOptions_Request) Reset() { *m = SendReplyOptions_Request{} } -func (m *SendReplyOptions_Request) String() string { return proto.CompactTextString(m) } -func (*SendReplyOptions_Request) ProtoMessage() {} -func (*SendReplyOptions_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{14, 0} -} - -func (m *SendReplyOptions_Request) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SendReplyOptions_Request.Unmarshal(m, b) -} - -func (m *SendReplyOptions_Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SendReplyOptions_Request.Marshal(b, m, deterministic) -} - -func (m *SendReplyOptions_Request) XXX_Merge(src proto.Message) { - xxx_messageInfo_SendReplyOptions_Request.Merge(m, src) -} - -func (m *SendReplyOptions_Request) XXX_Size() int { - return xxx_messageInfo_SendReplyOptions_Request.Size(m) -} - -func (m *SendReplyOptions_Request) XXX_DiscardUnknown() { - xxx_messageInfo_SendReplyOptions_Request.DiscardUnknown(m) -} - -var xxx_messageInfo_SendReplyOptions_Request proto.InternalMessageInfo - -func (m *SendReplyOptions_Request) GetGroupPK() []byte { - if m != nil { - return m.GroupPK - } - return nil -} - -func (m *SendReplyOptions_Request) GetOptions() *AppMessage_ReplyOptions { - if m != nil { - return m.Options - } - return nil -} - -type SendReplyOptions_Reply struct{} - -func (m *SendReplyOptions_Reply) Reset() { *m = SendReplyOptions_Reply{} } -func (m *SendReplyOptions_Reply) String() string { return proto.CompactTextString(m) } -func (*SendReplyOptions_Reply) ProtoMessage() {} -func (*SendReplyOptions_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{14, 1} -} - -func (m *SendReplyOptions_Reply) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SendReplyOptions_Reply.Unmarshal(m, b) -} - -func (m *SendReplyOptions_Reply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SendReplyOptions_Reply.Marshal(b, m, deterministic) -} - -func (m *SendReplyOptions_Reply) XXX_Merge(src proto.Message) { - xxx_messageInfo_SendReplyOptions_Reply.Merge(m, src) -} - -func (m *SendReplyOptions_Reply) XXX_Size() int { - return xxx_messageInfo_SendReplyOptions_Reply.Size(m) -} - -func (m *SendReplyOptions_Reply) XXX_DiscardUnknown() { - xxx_messageInfo_SendReplyOptions_Reply.DiscardUnknown(m) -} - -var xxx_messageInfo_SendReplyOptions_Reply proto.InternalMessageInfo - type BertyID struct { PublicRendezvousSeed []byte `protobuf:"bytes,1,opt,name=public_rendezvous_seed,json=publicRendezvousSeed,proto3" json:"public_rendezvous_seed,omitempty"` AccountPK []byte `protobuf:"bytes,2,opt,name=account_pk,json=accountPk,proto3" json:"account_pk,omitempty"` @@ -2268,7 +2067,7 @@ func (m *BertyID) Reset() { *m = BertyID{} } func (m *BertyID) String() string { return proto.CompactTextString(m) } func (*BertyID) ProtoMessage() {} func (*BertyID) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{15} + return fileDescriptor_0eab5f5532ffdd8b, []int{14} } func (m *BertyID) XXX_Unmarshal(b []byte) error { @@ -2323,7 +2122,7 @@ func (m *BertyGroup) Reset() { *m = BertyGroup{} } func (m *BertyGroup) String() string { return proto.CompactTextString(m) } func (*BertyGroup) ProtoMessage() {} func (*BertyGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{16} + return fileDescriptor_0eab5f5532ffdd8b, []int{15} } func (m *BertyGroup) XXX_Unmarshal(b []byte) error { @@ -2367,7 +2166,6 @@ type AppMessage struct { Type AppMessage_Type `protobuf:"varint,1,opt,name=type,proto3,enum=berty.messenger.v1.AppMessage_Type" json:"type,omitempty"` Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` SentDate int64 `protobuf:"varint,3,opt,name=sent_date,json=sentDate,proto3" json:"sentDate"` - Medias []*Media `protobuf:"bytes,4,rep,name=medias,proto3" json:"medias,omitempty"` TargetCID string `protobuf:"bytes,5,opt,name=target_cid,json=targetCid,proto3" json:"target_cid,omitempty"` } @@ -2375,7 +2173,7 @@ func (m *AppMessage) Reset() { *m = AppMessage{} } func (m *AppMessage) String() string { return proto.CompactTextString(m) } func (*AppMessage) ProtoMessage() {} func (*AppMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{17} + return fileDescriptor_0eab5f5532ffdd8b, []int{16} } func (m *AppMessage) XXX_Unmarshal(b []byte) error { @@ -2421,13 +2219,6 @@ func (m *AppMessage) GetSentDate() int64 { return 0 } -func (m *AppMessage) GetMedias() []*Media { - if m != nil { - return m.Medias - } - return nil -} - func (m *AppMessage) GetTargetCID() string { if m != nil { return m.TargetCID @@ -2443,7 +2234,7 @@ func (m *AppMessage_UserMessage) Reset() { *m = AppMessage_UserMessage{} func (m *AppMessage_UserMessage) String() string { return proto.CompactTextString(m) } func (*AppMessage_UserMessage) ProtoMessage() {} func (*AppMessage_UserMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{17, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{16, 0} } func (m *AppMessage_UserMessage) XXX_Unmarshal(b []byte) error { @@ -2475,54 +2266,6 @@ func (m *AppMessage_UserMessage) GetBody() string { return "" } -type AppMessage_UserReaction struct { - State bool `protobuf:"varint,1,opt,name=state,proto3" json:"state,omitempty"` - Emoji string `protobuf:"bytes,2,opt,name=emoji,proto3" json:"emoji,omitempty"` -} - -func (m *AppMessage_UserReaction) Reset() { *m = AppMessage_UserReaction{} } -func (m *AppMessage_UserReaction) String() string { return proto.CompactTextString(m) } -func (*AppMessage_UserReaction) ProtoMessage() {} -func (*AppMessage_UserReaction) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{17, 1} -} - -func (m *AppMessage_UserReaction) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AppMessage_UserReaction.Unmarshal(m, b) -} - -func (m *AppMessage_UserReaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AppMessage_UserReaction.Marshal(b, m, deterministic) -} - -func (m *AppMessage_UserReaction) XXX_Merge(src proto.Message) { - xxx_messageInfo_AppMessage_UserReaction.Merge(m, src) -} - -func (m *AppMessage_UserReaction) XXX_Size() int { - return xxx_messageInfo_AppMessage_UserReaction.Size(m) -} - -func (m *AppMessage_UserReaction) XXX_DiscardUnknown() { - xxx_messageInfo_AppMessage_UserReaction.DiscardUnknown(m) -} - -var xxx_messageInfo_AppMessage_UserReaction proto.InternalMessageInfo - -func (m *AppMessage_UserReaction) GetState() bool { - if m != nil { - return m.State - } - return false -} - -func (m *AppMessage_UserReaction) GetEmoji() string { - if m != nil { - return m.Emoji - } - return "" -} - type AppMessage_GroupInvitation struct { Link string `protobuf:"bytes,2,opt,name=link,proto3" json:"link,omitempty"` } @@ -2531,7 +2274,7 @@ func (m *AppMessage_GroupInvitation) Reset() { *m = AppMessage_GroupInvi func (m *AppMessage_GroupInvitation) String() string { return proto.CompactTextString(m) } func (*AppMessage_GroupInvitation) ProtoMessage() {} func (*AppMessage_GroupInvitation) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{17, 2} + return fileDescriptor_0eab5f5532ffdd8b, []int{16, 1} } func (m *AppMessage_GroupInvitation) XXX_Unmarshal(b []byte) error { @@ -2565,14 +2308,13 @@ func (m *AppMessage_GroupInvitation) GetLink() string { type AppMessage_SetGroupInfo struct { DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - AvatarCid string `protobuf:"bytes,2,opt,name=avatar_cid,json=avatarCid,proto3" json:"avatar_cid,omitempty"` } func (m *AppMessage_SetGroupInfo) Reset() { *m = AppMessage_SetGroupInfo{} } func (m *AppMessage_SetGroupInfo) String() string { return proto.CompactTextString(m) } func (*AppMessage_SetGroupInfo) ProtoMessage() {} func (*AppMessage_SetGroupInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{17, 3} + return fileDescriptor_0eab5f5532ffdd8b, []int{16, 2} } func (m *AppMessage_SetGroupInfo) XXX_Unmarshal(b []byte) error { @@ -2604,23 +2346,15 @@ func (m *AppMessage_SetGroupInfo) GetDisplayName() string { return "" } -func (m *AppMessage_SetGroupInfo) GetAvatarCid() string { - if m != nil { - return m.AvatarCid - } - return "" -} - type AppMessage_SetUserInfo struct { DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - AvatarCID string `protobuf:"bytes,2,opt,name=avatar_cid,json=avatarCid,proto3" json:"avatar_cid,omitempty"` } func (m *AppMessage_SetUserInfo) Reset() { *m = AppMessage_SetUserInfo{} } func (m *AppMessage_SetUserInfo) String() string { return proto.CompactTextString(m) } func (*AppMessage_SetUserInfo) ProtoMessage() {} func (*AppMessage_SetUserInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{17, 4} + return fileDescriptor_0eab5f5532ffdd8b, []int{16, 3} } func (m *AppMessage_SetUserInfo) XXX_Unmarshal(b []byte) error { @@ -2652,20 +2386,13 @@ func (m *AppMessage_SetUserInfo) GetDisplayName() string { return "" } -func (m *AppMessage_SetUserInfo) GetAvatarCID() string { - if m != nil { - return m.AvatarCID - } - return "" -} - type AppMessage_Acknowledge struct{} func (m *AppMessage_Acknowledge) Reset() { *m = AppMessage_Acknowledge{} } func (m *AppMessage_Acknowledge) String() string { return proto.CompactTextString(m) } func (*AppMessage_Acknowledge) ProtoMessage() {} func (*AppMessage_Acknowledge) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{17, 5} + return fileDescriptor_0eab5f5532ffdd8b, []int{16, 4} } func (m *AppMessage_Acknowledge) XXX_Unmarshal(b []byte) error { @@ -2690,101 +2417,13 @@ func (m *AppMessage_Acknowledge) XXX_DiscardUnknown() { var xxx_messageInfo_AppMessage_Acknowledge proto.InternalMessageInfo -type AppMessage_ReplyOptions struct { - Options []*ReplyOption `protobuf:"bytes,1,rep,name=options,proto3" json:"options,omitempty"` -} - -func (m *AppMessage_ReplyOptions) Reset() { *m = AppMessage_ReplyOptions{} } -func (m *AppMessage_ReplyOptions) String() string { return proto.CompactTextString(m) } -func (*AppMessage_ReplyOptions) ProtoMessage() {} -func (*AppMessage_ReplyOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{17, 6} -} - -func (m *AppMessage_ReplyOptions) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AppMessage_ReplyOptions.Unmarshal(m, b) -} - -func (m *AppMessage_ReplyOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AppMessage_ReplyOptions.Marshal(b, m, deterministic) -} - -func (m *AppMessage_ReplyOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_AppMessage_ReplyOptions.Merge(m, src) -} - -func (m *AppMessage_ReplyOptions) XXX_Size() int { - return xxx_messageInfo_AppMessage_ReplyOptions.Size(m) -} - -func (m *AppMessage_ReplyOptions) XXX_DiscardUnknown() { - xxx_messageInfo_AppMessage_ReplyOptions.DiscardUnknown(m) -} - -var xxx_messageInfo_AppMessage_ReplyOptions proto.InternalMessageInfo - -func (m *AppMessage_ReplyOptions) GetOptions() []*ReplyOption { - if m != nil { - return m.Options - } - return nil -} - -type ReplyOption struct { - Display string `protobuf:"bytes,1,opt,name=display,proto3" json:"display,omitempty"` - Payload string `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` -} - -func (m *ReplyOption) Reset() { *m = ReplyOption{} } -func (m *ReplyOption) String() string { return proto.CompactTextString(m) } -func (*ReplyOption) ProtoMessage() {} -func (*ReplyOption) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{18} -} - -func (m *ReplyOption) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ReplyOption.Unmarshal(m, b) -} - -func (m *ReplyOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ReplyOption.Marshal(b, m, deterministic) -} - -func (m *ReplyOption) XXX_Merge(src proto.Message) { - xxx_messageInfo_ReplyOption.Merge(m, src) -} - -func (m *ReplyOption) XXX_Size() int { - return xxx_messageInfo_ReplyOption.Size(m) -} - -func (m *ReplyOption) XXX_DiscardUnknown() { - xxx_messageInfo_ReplyOption.DiscardUnknown(m) -} - -var xxx_messageInfo_ReplyOption proto.InternalMessageInfo - -func (m *ReplyOption) GetDisplay() string { - if m != nil { - return m.Display - } - return "" -} - -func (m *ReplyOption) GetPayload() string { - if m != nil { - return m.Payload - } - return "" -} - type SystemInfo struct{} func (m *SystemInfo) Reset() { *m = SystemInfo{} } func (m *SystemInfo) String() string { return proto.CompactTextString(m) } func (*SystemInfo) ProtoMessage() {} func (*SystemInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{19} + return fileDescriptor_0eab5f5532ffdd8b, []int{17} } func (m *SystemInfo) XXX_Unmarshal(b []byte) error { @@ -2815,7 +2454,7 @@ func (m *SystemInfo_Request) Reset() { *m = SystemInfo_Request{} } func (m *SystemInfo_Request) String() string { return proto.CompactTextString(m) } func (*SystemInfo_Request) ProtoMessage() {} func (*SystemInfo_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{19, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{17, 0} } func (m *SystemInfo_Request) XXX_Unmarshal(b []byte) error { @@ -2849,7 +2488,7 @@ func (m *SystemInfo_Reply) Reset() { *m = SystemInfo_Reply{} } func (m *SystemInfo_Reply) String() string { return proto.CompactTextString(m) } func (*SystemInfo_Reply) ProtoMessage() {} func (*SystemInfo_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{19, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{17, 1} } func (m *SystemInfo_Reply) XXX_Unmarshal(b []byte) error { @@ -2899,7 +2538,7 @@ func (m *SystemInfo_Messenger) Reset() { *m = SystemInfo_Messenger{} } func (m *SystemInfo_Messenger) String() string { return proto.CompactTextString(m) } func (*SystemInfo_Messenger) ProtoMessage() {} func (*SystemInfo_Messenger) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{19, 2} + return fileDescriptor_0eab5f5532ffdd8b, []int{17, 2} } func (m *SystemInfo_Messenger) XXX_Unmarshal(b []byte) error { @@ -2961,9 +2600,7 @@ type SystemInfo_DB struct { Devices int64 `protobuf:"varint,6,opt,name=devices,proto3" json:"devices,omitempty"` ServiceTokens int64 `protobuf:"varint,7,opt,name=service_tokens,json=serviceTokens,proto3" json:"service_tokens,omitempty"` ConversationReplicationInfo int64 `protobuf:"varint,8,opt,name=conversation_replication_info,json=conversationReplicationInfo,proto3" json:"conversation_replication_info,omitempty"` - Reactions int64 `protobuf:"varint,9,opt,name=reactions,proto3" json:"reactions,omitempty"` MetadataEvents int64 `protobuf:"varint,10,opt,name=metadata_events,json=metadataEvents,proto3" json:"metadata_events,omitempty"` - Medias int64 `protobuf:"varint,11,opt,name=medias,proto3" json:"medias,omitempty"` SharedPushTokens int64 `protobuf:"varint,12,opt,name=shared_push_tokens,json=sharedPushTokens,proto3" json:"shared_push_tokens,omitempty"` } @@ -2971,7 +2608,7 @@ func (m *SystemInfo_DB) Reset() { *m = SystemInfo_DB{} } func (m *SystemInfo_DB) String() string { return proto.CompactTextString(m) } func (*SystemInfo_DB) ProtoMessage() {} func (*SystemInfo_DB) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{19, 3} + return fileDescriptor_0eab5f5532ffdd8b, []int{17, 3} } func (m *SystemInfo_DB) XXX_Unmarshal(b []byte) error { @@ -3052,13 +2689,6 @@ func (m *SystemInfo_DB) GetConversationReplicationInfo() int64 { return 0 } -func (m *SystemInfo_DB) GetReactions() int64 { - if m != nil { - return m.Reactions - } - return 0 -} - func (m *SystemInfo_DB) GetMetadataEvents() int64 { if m != nil { return m.MetadataEvents @@ -3066,13 +2696,6 @@ func (m *SystemInfo_DB) GetMetadataEvents() int64 { return 0 } -func (m *SystemInfo_DB) GetMedias() int64 { - if m != nil { - return m.Medias - } - return 0 -} - func (m *SystemInfo_DB) GetSharedPushTokens() int64 { if m != nil { return m.SharedPushTokens @@ -3086,7 +2709,7 @@ func (m *ConversationJoin) Reset() { *m = ConversationJoin{} } func (m *ConversationJoin) String() string { return proto.CompactTextString(m) } func (*ConversationJoin) ProtoMessage() {} func (*ConversationJoin) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{20} + return fileDescriptor_0eab5f5532ffdd8b, []int{18} } func (m *ConversationJoin) XXX_Unmarshal(b []byte) error { @@ -3121,7 +2744,7 @@ func (m *ConversationJoin_Request) Reset() { *m = ConversationJoin_Reque func (m *ConversationJoin_Request) String() string { return proto.CompactTextString(m) } func (*ConversationJoin_Request) ProtoMessage() {} func (*ConversationJoin_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{20, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{18, 0} } func (m *ConversationJoin_Request) XXX_Unmarshal(b []byte) error { @@ -3166,7 +2789,7 @@ func (m *ConversationJoin_Reply) Reset() { *m = ConversationJoin_Reply{} func (m *ConversationJoin_Reply) String() string { return proto.CompactTextString(m) } func (*ConversationJoin_Reply) ProtoMessage() {} func (*ConversationJoin_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{20, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{18, 1} } func (m *ConversationJoin_Reply) XXX_Unmarshal(b []byte) error { @@ -3197,7 +2820,6 @@ type Account struct { Link string `protobuf:"bytes,3,opt,name=link,proto3" json:"link,omitempty"` ServiceTokens []*ServiceToken `protobuf:"bytes,5,rep,name=service_tokens,json=serviceTokens,proto3" json:"service_tokens,omitempty" gorm:"foreignKey:AccountPK"` ReplicateNewGroupsAutomatically bool `protobuf:"varint,6,opt,name=replicate_new_groups_automatically,json=replicateNewGroupsAutomatically,proto3" json:"replicate_new_groups_automatically,omitempty" gorm:"default:true"` - AvatarCID string `protobuf:"bytes,7,opt,name=avatar_cid,json=avatarCid,proto3" json:"avatar_cid,omitempty" gorm:"column:avatar_cid"` AutoSharePushTokenFlag bool `protobuf:"varint,8,opt,name=auto_share_push_token_flag,json=autoSharePushTokenFlag,proto3" json:"auto_share_push_token_flag,omitempty"` DevicePushToken []byte `protobuf:"bytes,9,opt,name=device_push_token,json=devicePushToken,proto3" json:"device_push_token,omitempty"` DevicePushServer []byte `protobuf:"bytes,10,opt,name=device_push_server,json=devicePushServer,proto3" json:"device_push_server,omitempty"` @@ -3210,7 +2832,7 @@ func (m *Account) Reset() { *m = Account{} } func (m *Account) String() string { return proto.CompactTextString(m) } func (*Account) ProtoMessage() {} func (*Account) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{21} + return fileDescriptor_0eab5f5532ffdd8b, []int{19} } func (m *Account) XXX_Unmarshal(b []byte) error { @@ -3270,13 +2892,6 @@ func (m *Account) GetReplicateNewGroupsAutomatically() bool { return false } -func (m *Account) GetAvatarCID() string { - if m != nil { - return m.AvatarCID - } - return "" -} - func (m *Account) GetAutoSharePushTokenFlag() bool { if m != nil { return m.AutoSharePushTokenFlag @@ -3331,7 +2946,7 @@ func (m *ServiceToken) Reset() { *m = ServiceToken{} } func (m *ServiceToken) String() string { return proto.CompactTextString(m) } func (*ServiceToken) ProtoMessage() {} func (*ServiceToken) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{22} + return fileDescriptor_0eab5f5532ffdd8b, []int{20} } func (m *ServiceToken) XXX_Unmarshal(b []byte) error { @@ -3402,7 +3017,7 @@ func (m *MetadataEvent) Reset() { *m = MetadataEvent{} } func (m *MetadataEvent) String() string { return proto.CompactTextString(m) } func (*MetadataEvent) ProtoMessage() {} func (*MetadataEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{23} + return fileDescriptor_0eab5f5532ffdd8b, []int{21} } func (m *MetadataEvent) XXX_Unmarshal(b []byte) error { @@ -3456,28 +3071,26 @@ func (m *MetadataEvent) GetPayload() []byte { } type Interaction struct { - CID string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty" gorm:"primaryKey;column:cid"` - Type AppMessage_Type `protobuf:"varint,2,opt,name=type,proto3,enum=berty.messenger.v1.AppMessage_Type" json:"type,omitempty" gorm:"index"` - MemberPublicKey string `protobuf:"bytes,7,opt,name=member_public_key,json=memberPublicKey,proto3" json:"member_public_key,omitempty"` - DevicePublicKey string `protobuf:"bytes,12,opt,name=device_public_key,json=devicePublicKey,proto3" json:"device_public_key,omitempty"` - Member *Member `protobuf:"bytes,8,opt,name=member,proto3" json:"member,omitempty" gorm:"foreignKey:PublicKey;references:MemberPublicKey"` - ConversationPublicKey string `protobuf:"bytes,3,opt,name=conversation_public_key,json=conversationPublicKey,proto3" json:"conversation_public_key,omitempty" gorm:"index"` - Conversation *Conversation `protobuf:"bytes,4,opt,name=conversation,proto3" json:"conversation,omitempty"` - Payload []byte `protobuf:"bytes,5,opt,name=payload,proto3" json:"payload,omitempty"` - IsMine bool `protobuf:"varint,6,opt,name=is_mine,json=isMine,proto3" json:"is_mine,omitempty"` - SentDate int64 `protobuf:"varint,9,opt,name=sent_date,json=sentDate,proto3" json:"sent_date,omitempty" gorm:"index"` - Acknowledged bool `protobuf:"varint,10,opt,name=acknowledged,proto3" json:"acknowledged,omitempty"` - TargetCID string `protobuf:"bytes,13,opt,name=target_cid,json=targetCid,proto3" json:"target_cid,omitempty" gorm:"index;column:target_cid"` - Medias []*Media `protobuf:"bytes,15,rep,name=medias,proto3" json:"medias,omitempty"` - Reactions []*Interaction_ReactionView `protobuf:"bytes,16,rep,name=reactions,proto3" json:"reactions,omitempty" gorm:"-"` - OutOfStoreMessage bool `protobuf:"varint,17,opt,name=out_of_store_message,json=outOfStoreMessage,proto3" json:"out_of_store_message,omitempty"` + CID string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty" gorm:"primaryKey;column:cid"` + Type AppMessage_Type `protobuf:"varint,2,opt,name=type,proto3,enum=berty.messenger.v1.AppMessage_Type" json:"type,omitempty" gorm:"index"` + MemberPublicKey string `protobuf:"bytes,7,opt,name=member_public_key,json=memberPublicKey,proto3" json:"member_public_key,omitempty"` + DevicePublicKey string `protobuf:"bytes,12,opt,name=device_public_key,json=devicePublicKey,proto3" json:"device_public_key,omitempty"` + Member *Member `protobuf:"bytes,8,opt,name=member,proto3" json:"member,omitempty" gorm:"foreignKey:PublicKey;references:MemberPublicKey"` + ConversationPublicKey string `protobuf:"bytes,3,opt,name=conversation_public_key,json=conversationPublicKey,proto3" json:"conversation_public_key,omitempty" gorm:"index"` + Conversation *Conversation `protobuf:"bytes,4,opt,name=conversation,proto3" json:"conversation,omitempty"` + Payload []byte `protobuf:"bytes,5,opt,name=payload,proto3" json:"payload,omitempty"` + IsMine bool `protobuf:"varint,6,opt,name=is_mine,json=isMine,proto3" json:"is_mine,omitempty"` + SentDate int64 `protobuf:"varint,9,opt,name=sent_date,json=sentDate,proto3" json:"sent_date,omitempty" gorm:"index"` + Acknowledged bool `protobuf:"varint,10,opt,name=acknowledged,proto3" json:"acknowledged,omitempty"` + TargetCID string `protobuf:"bytes,13,opt,name=target_cid,json=targetCid,proto3" json:"target_cid,omitempty" gorm:"index;column:target_cid"` + OutOfStoreMessage bool `protobuf:"varint,17,opt,name=out_of_store_message,json=outOfStoreMessage,proto3" json:"out_of_store_message,omitempty"` } func (m *Interaction) Reset() { *m = Interaction{} } func (m *Interaction) String() string { return proto.CompactTextString(m) } func (*Interaction) ProtoMessage() {} func (*Interaction) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{24} + return fileDescriptor_0eab5f5532ffdd8b, []int{22} } func (m *Interaction) XXX_Unmarshal(b []byte) error { @@ -3586,20 +3199,6 @@ func (m *Interaction) GetTargetCID() string { return "" } -func (m *Interaction) GetMedias() []*Media { - if m != nil { - return m.Medias - } - return nil -} - -func (m *Interaction) GetReactions() []*Interaction_ReactionView { - if m != nil { - return m.Reactions - } - return nil -} - func (m *Interaction) GetOutOfStoreMessage() bool { if m != nil { return m.OutOfStoreMessage @@ -3607,190 +3206,44 @@ func (m *Interaction) GetOutOfStoreMessage() bool { return false } -type Interaction_ReactionView struct { - Emoji string `protobuf:"bytes,1,opt,name=emoji,proto3" json:"emoji,omitempty"` - OwnState bool `protobuf:"varint,2,opt,name=own_state,json=ownState,proto3" json:"own_state,omitempty"` - Count uint64 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` +type Contact struct { + PublicKey string `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty" gorm:"primaryKey"` + ConversationPublicKey string `protobuf:"bytes,2,opt,name=conversation_public_key,json=conversationPublicKey,proto3" json:"conversation_public_key,omitempty"` + Conversation *Conversation `protobuf:"bytes,3,opt,name=conversation,proto3" json:"conversation,omitempty"` + State Contact_State `protobuf:"varint,4,opt,name=state,proto3,enum=berty.messenger.v1.Contact_State" json:"state,omitempty"` + DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + CreatedDate int64 `protobuf:"varint,7,opt,name=created_date,json=createdDate,proto3" json:"created_date,omitempty"` + // specific to outgoing requests + SentDate int64 `protobuf:"varint,8,opt,name=sent_date,json=sentDate,proto3" json:"sent_date,omitempty"` + Devices []*Device `protobuf:"bytes,6,rep,name=devices,proto3" json:"devices,omitempty" gorm:"foreignKey:MemberPublicKey"` + InfoDate int64 `protobuf:"varint,10,opt,name=info_date,json=infoDate,proto3" json:"info_date,omitempty"` } -func (m *Interaction_ReactionView) Reset() { *m = Interaction_ReactionView{} } -func (m *Interaction_ReactionView) String() string { return proto.CompactTextString(m) } -func (*Interaction_ReactionView) ProtoMessage() {} -func (*Interaction_ReactionView) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{24, 0} +func (m *Contact) Reset() { *m = Contact{} } +func (m *Contact) String() string { return proto.CompactTextString(m) } +func (*Contact) ProtoMessage() {} +func (*Contact) Descriptor() ([]byte, []int) { + return fileDescriptor_0eab5f5532ffdd8b, []int{23} } -func (m *Interaction_ReactionView) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Interaction_ReactionView.Unmarshal(m, b) +func (m *Contact) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Contact.Unmarshal(m, b) } -func (m *Interaction_ReactionView) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Interaction_ReactionView.Marshal(b, m, deterministic) +func (m *Contact) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Contact.Marshal(b, m, deterministic) } -func (m *Interaction_ReactionView) XXX_Merge(src proto.Message) { - xxx_messageInfo_Interaction_ReactionView.Merge(m, src) +func (m *Contact) XXX_Merge(src proto.Message) { + xxx_messageInfo_Contact.Merge(m, src) } -func (m *Interaction_ReactionView) XXX_Size() int { - return xxx_messageInfo_Interaction_ReactionView.Size(m) +func (m *Contact) XXX_Size() int { + return xxx_messageInfo_Contact.Size(m) } -func (m *Interaction_ReactionView) XXX_DiscardUnknown() { - xxx_messageInfo_Interaction_ReactionView.DiscardUnknown(m) -} - -var xxx_messageInfo_Interaction_ReactionView proto.InternalMessageInfo - -func (m *Interaction_ReactionView) GetEmoji() string { - if m != nil { - return m.Emoji - } - return "" -} - -func (m *Interaction_ReactionView) GetOwnState() bool { - if m != nil { - return m.OwnState - } - return false -} - -func (m *Interaction_ReactionView) GetCount() uint64 { - if m != nil { - return m.Count - } - return 0 -} - -type Media struct { - CID string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty" gorm:"primaryKey;column:cid"` - MimeType string `protobuf:"bytes,2,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"` - Filename string `protobuf:"bytes,3,opt,name=filename,proto3" json:"filename,omitempty"` - DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - MetadataBytes []byte `protobuf:"bytes,6,opt,name=metadata_bytes,json=metadataBytes,proto3" json:"metadata_bytes,omitempty"` - // these should not be sent on the bertyprotocol layer - InteractionCID string `protobuf:"bytes,100,opt,name=interaction_cid,json=interactionCid,proto3" json:"interaction_cid,omitempty" gorm:"index;column:interaction_cid"` - State Media_State `protobuf:"varint,103,opt,name=state,proto3,enum=berty.messenger.v1.Media_State" json:"state,omitempty"` -} - -func (m *Media) Reset() { *m = Media{} } -func (m *Media) String() string { return proto.CompactTextString(m) } -func (*Media) ProtoMessage() {} -func (*Media) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{25} -} - -func (m *Media) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Media.Unmarshal(m, b) -} - -func (m *Media) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Media.Marshal(b, m, deterministic) -} - -func (m *Media) XXX_Merge(src proto.Message) { - xxx_messageInfo_Media.Merge(m, src) -} - -func (m *Media) XXX_Size() int { - return xxx_messageInfo_Media.Size(m) -} - -func (m *Media) XXX_DiscardUnknown() { - xxx_messageInfo_Media.DiscardUnknown(m) -} - -var xxx_messageInfo_Media proto.InternalMessageInfo - -func (m *Media) GetCID() string { - if m != nil { - return m.CID - } - return "" -} - -func (m *Media) GetMimeType() string { - if m != nil { - return m.MimeType - } - return "" -} - -func (m *Media) GetFilename() string { - if m != nil { - return m.Filename - } - return "" -} - -func (m *Media) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *Media) GetMetadataBytes() []byte { - if m != nil { - return m.MetadataBytes - } - return nil -} - -func (m *Media) GetInteractionCID() string { - if m != nil { - return m.InteractionCID - } - return "" -} - -func (m *Media) GetState() Media_State { - if m != nil { - return m.State - } - return Media_StateUnknown -} - -type Contact struct { - PublicKey string `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty" gorm:"primaryKey"` - ConversationPublicKey string `protobuf:"bytes,2,opt,name=conversation_public_key,json=conversationPublicKey,proto3" json:"conversation_public_key,omitempty"` - Conversation *Conversation `protobuf:"bytes,3,opt,name=conversation,proto3" json:"conversation,omitempty"` - State Contact_State `protobuf:"varint,4,opt,name=state,proto3,enum=berty.messenger.v1.Contact_State" json:"state,omitempty"` - DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - AvatarCID string `protobuf:"bytes,9,opt,name=avatar_cid,json=avatarCid,proto3" json:"avatar_cid,omitempty" gorm:"column:avatar_cid"` - CreatedDate int64 `protobuf:"varint,7,opt,name=created_date,json=createdDate,proto3" json:"created_date,omitempty"` - // specific to outgoing requests - SentDate int64 `protobuf:"varint,8,opt,name=sent_date,json=sentDate,proto3" json:"sent_date,omitempty"` - Devices []*Device `protobuf:"bytes,6,rep,name=devices,proto3" json:"devices,omitempty" gorm:"foreignKey:MemberPublicKey"` - InfoDate int64 `protobuf:"varint,10,opt,name=info_date,json=infoDate,proto3" json:"info_date,omitempty"` -} - -func (m *Contact) Reset() { *m = Contact{} } -func (m *Contact) String() string { return proto.CompactTextString(m) } -func (*Contact) ProtoMessage() {} -func (*Contact) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{26} -} - -func (m *Contact) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Contact.Unmarshal(m, b) -} - -func (m *Contact) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Contact.Marshal(b, m, deterministic) -} - -func (m *Contact) XXX_Merge(src proto.Message) { - xxx_messageInfo_Contact.Merge(m, src) -} - -func (m *Contact) XXX_Size() int { - return xxx_messageInfo_Contact.Size(m) -} - -func (m *Contact) XXX_DiscardUnknown() { - xxx_messageInfo_Contact.DiscardUnknown(m) +func (m *Contact) XXX_DiscardUnknown() { + xxx_messageInfo_Contact.DiscardUnknown(m) } var xxx_messageInfo_Contact proto.InternalMessageInfo @@ -3830,13 +3283,6 @@ func (m *Contact) GetDisplayName() string { return "" } -func (m *Contact) GetAvatarCID() string { - if m != nil { - return m.AvatarCID - } - return "" -} - func (m *Contact) GetCreatedDate() int64 { if m != nil { return m.CreatedDate @@ -3883,10 +3329,7 @@ type Conversation struct { AccountMemberPublicKey string `protobuf:"bytes,11,opt,name=account_member_public_key,json=accountMemberPublicKey,proto3" json:"account_member_public_key,omitempty"` LocalDevicePublicKey string `protobuf:"bytes,12,opt,name=local_device_public_key,json=localDevicePublicKey,proto3" json:"local_device_public_key,omitempty"` CreatedDate int64 `protobuf:"varint,13,opt,name=created_date,json=createdDate,proto3" json:"created_date,omitempty"` - ReplyOptionsCID string `protobuf:"bytes,14,opt,name=reply_options_cid,json=replyOptionsCid,proto3" json:"reply_options_cid,omitempty" gorm:"column:reply_options_cid"` - ReplyOptions *Interaction `protobuf:"bytes,15,opt,name=reply_options,json=replyOptions,proto3" json:"reply_options,omitempty"` ReplicationInfo []*ConversationReplicationInfo `protobuf:"bytes,16,rep,name=replication_info,json=replicationInfo,proto3" json:"replication_info,omitempty" gorm:"foreignKey:ConversationPublicKey"` - AvatarCID string `protobuf:"bytes,17,opt,name=avatar_cid,json=avatarCid,proto3" json:"avatar_cid,omitempty" gorm:"column:avatar_cid"` // info_date is used when SetGroupInfo is called InfoDate int64 `protobuf:"varint,18,opt,name=info_date,json=infoDate,proto3" json:"info_date,omitempty"` SharedPushTokenIdentifier string `protobuf:"bytes,19,opt,name=shared_push_token_identifier,json=sharedPushTokenIdentifier,proto3" json:"shared_push_token_identifier,omitempty"` @@ -3898,7 +3341,7 @@ func (m *Conversation) Reset() { *m = Conversation{} } func (m *Conversation) String() string { return proto.CompactTextString(m) } func (*Conversation) ProtoMessage() {} func (*Conversation) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{27} + return fileDescriptor_0eab5f5532ffdd8b, []int{24} } func (m *Conversation) XXX_Unmarshal(b []byte) error { @@ -4014,20 +3457,6 @@ func (m *Conversation) GetCreatedDate() int64 { return 0 } -func (m *Conversation) GetReplyOptionsCID() string { - if m != nil { - return m.ReplyOptionsCID - } - return "" -} - -func (m *Conversation) GetReplyOptions() *Interaction { - if m != nil { - return m.ReplyOptions - } - return nil -} - func (m *Conversation) GetReplicationInfo() []*ConversationReplicationInfo { if m != nil { return m.ReplicationInfo @@ -4035,13 +3464,6 @@ func (m *Conversation) GetReplicationInfo() []*ConversationReplicationInfo { return nil } -func (m *Conversation) GetAvatarCID() string { - if m != nil { - return m.AvatarCID - } - return "" -} - func (m *Conversation) GetInfoDate() int64 { if m != nil { return m.InfoDate @@ -4082,7 +3504,7 @@ func (m *ConversationReplicationInfo) Reset() { *m = ConversationReplica func (m *ConversationReplicationInfo) String() string { return proto.CompactTextString(m) } func (*ConversationReplicationInfo) ProtoMessage() {} func (*ConversationReplicationInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{28} + return fileDescriptor_0eab5f5532ffdd8b, []int{25} } func (m *ConversationReplicationInfo) XXX_Unmarshal(b []byte) error { @@ -4145,7 +3567,6 @@ func (m *ConversationReplicationInfo) GetReplicationServer() string { type Member struct { PublicKey string `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty" gorm:"primaryKey"` DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - AvatarCID string `protobuf:"bytes,6,opt,name=avatar_cid,json=avatarCid,proto3" json:"avatar_cid,omitempty" gorm:"column:avatar_cid"` ConversationPublicKey string `protobuf:"bytes,3,opt,name=conversation_public_key,json=conversationPublicKey,proto3" json:"conversation_public_key,omitempty" gorm:"primaryKey"` IsMe bool `protobuf:"varint,9,opt,name=is_me,json=isMe,proto3" json:"is_me,omitempty"` IsCreator bool `protobuf:"varint,8,opt,name=is_creator,json=isCreator,proto3" json:"is_creator,omitempty"` @@ -4158,7 +3579,7 @@ func (m *Member) Reset() { *m = Member{} } func (m *Member) String() string { return proto.CompactTextString(m) } func (*Member) ProtoMessage() {} func (*Member) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{29} + return fileDescriptor_0eab5f5532ffdd8b, []int{26} } func (m *Member) XXX_Unmarshal(b []byte) error { @@ -4197,13 +3618,6 @@ func (m *Member) GetDisplayName() string { return "" } -func (m *Member) GetAvatarCID() string { - if m != nil { - return m.AvatarCID - } - return "" -} - func (m *Member) GetConversationPublicKey() string { if m != nil { return m.ConversationPublicKey @@ -4255,7 +3669,7 @@ func (m *Device) Reset() { *m = Device{} } func (m *Device) String() string { return proto.CompactTextString(m) } func (*Device) ProtoMessage() {} func (*Device) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{30} + return fileDescriptor_0eab5f5532ffdd8b, []int{27} } func (m *Device) XXX_Unmarshal(b []byte) error { @@ -4305,7 +3719,7 @@ func (m *SharedPushToken) Reset() { *m = SharedPushToken{} } func (m *SharedPushToken) String() string { return proto.CompactTextString(m) } func (*SharedPushToken) ProtoMessage() {} func (*SharedPushToken) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{31} + return fileDescriptor_0eab5f5532ffdd8b, []int{28} } func (m *SharedPushToken) XXX_Unmarshal(b []byte) error { @@ -4366,7 +3780,7 @@ func (m *ContactMetadata) Reset() { *m = ContactMetadata{} } func (m *ContactMetadata) String() string { return proto.CompactTextString(m) } func (*ContactMetadata) ProtoMessage() {} func (*ContactMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{32} + return fileDescriptor_0eab5f5532ffdd8b, []int{29} } func (m *ContactMetadata) XXX_Unmarshal(b []byte) error { @@ -4409,7 +3823,7 @@ func (m *StreamEvent) Reset() { *m = StreamEvent{} } func (m *StreamEvent) String() string { return proto.CompactTextString(m) } func (*StreamEvent) ProtoMessage() {} func (*StreamEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33} + return fileDescriptor_0eab5f5532ffdd8b, []int{30} } func (m *StreamEvent) XXX_Unmarshal(b []byte) error { @@ -4463,7 +3877,7 @@ func (m *StreamEvent_ConversationUpdated) Reset() { *m = StreamEvent_Con func (m *StreamEvent_ConversationUpdated) String() string { return proto.CompactTextString(m) } func (*StreamEvent_ConversationUpdated) ProtoMessage() {} func (*StreamEvent_ConversationUpdated) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 0} } func (m *StreamEvent_ConversationUpdated) XXX_Unmarshal(b []byte) error { @@ -4503,7 +3917,7 @@ func (m *StreamEvent_ConversationDeleted) Reset() { *m = StreamEvent_Con func (m *StreamEvent_ConversationDeleted) String() string { return proto.CompactTextString(m) } func (*StreamEvent_ConversationDeleted) ProtoMessage() {} func (*StreamEvent_ConversationDeleted) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 1} } func (m *StreamEvent_ConversationDeleted) XXX_Unmarshal(b []byte) error { @@ -4543,7 +3957,7 @@ func (m *StreamEvent_InteractionUpdated) Reset() { *m = StreamEvent_Inte func (m *StreamEvent_InteractionUpdated) String() string { return proto.CompactTextString(m) } func (*StreamEvent_InteractionUpdated) ProtoMessage() {} func (*StreamEvent_InteractionUpdated) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 2} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 2} } func (m *StreamEvent_InteractionUpdated) XXX_Unmarshal(b []byte) error { @@ -4584,7 +3998,7 @@ func (m *StreamEvent_InteractionDeleted) Reset() { *m = StreamEvent_Inte func (m *StreamEvent_InteractionDeleted) String() string { return proto.CompactTextString(m) } func (*StreamEvent_InteractionDeleted) ProtoMessage() {} func (*StreamEvent_InteractionDeleted) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 3} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 3} } func (m *StreamEvent_InteractionDeleted) XXX_Unmarshal(b []byte) error { @@ -4631,7 +4045,7 @@ func (m *StreamEvent_ContactUpdated) Reset() { *m = StreamEvent_ContactU func (m *StreamEvent_ContactUpdated) String() string { return proto.CompactTextString(m) } func (*StreamEvent_ContactUpdated) ProtoMessage() {} func (*StreamEvent_ContactUpdated) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 4} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 4} } func (m *StreamEvent_ContactUpdated) XXX_Unmarshal(b []byte) error { @@ -4671,7 +4085,7 @@ func (m *StreamEvent_AccountUpdated) Reset() { *m = StreamEvent_AccountU func (m *StreamEvent_AccountUpdated) String() string { return proto.CompactTextString(m) } func (*StreamEvent_AccountUpdated) ProtoMessage() {} func (*StreamEvent_AccountUpdated) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 5} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 5} } func (m *StreamEvent_AccountUpdated) XXX_Unmarshal(b []byte) error { @@ -4711,7 +4125,7 @@ func (m *StreamEvent_MemberUpdated) Reset() { *m = StreamEvent_MemberUpd func (m *StreamEvent_MemberUpdated) String() string { return proto.CompactTextString(m) } func (*StreamEvent_MemberUpdated) ProtoMessage() {} func (*StreamEvent_MemberUpdated) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 6} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 6} } func (m *StreamEvent_MemberUpdated) XXX_Unmarshal(b []byte) error { @@ -4751,7 +4165,7 @@ func (m *StreamEvent_DeviceUpdated) Reset() { *m = StreamEvent_DeviceUpd func (m *StreamEvent_DeviceUpdated) String() string { return proto.CompactTextString(m) } func (*StreamEvent_DeviceUpdated) ProtoMessage() {} func (*StreamEvent_DeviceUpdated) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 7} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 7} } func (m *StreamEvent_DeviceUpdated) XXX_Unmarshal(b []byte) error { @@ -4789,7 +4203,7 @@ func (m *StreamEvent_ListEnded) Reset() { *m = StreamEvent_ListEnded{} } func (m *StreamEvent_ListEnded) String() string { return proto.CompactTextString(m) } func (*StreamEvent_ListEnded) ProtoMessage() {} func (*StreamEvent_ListEnded) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 8} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 8} } func (m *StreamEvent_ListEnded) XXX_Unmarshal(b []byte) error { @@ -4814,57 +4228,16 @@ func (m *StreamEvent_ListEnded) XXX_DiscardUnknown() { var xxx_messageInfo_StreamEvent_ListEnded proto.InternalMessageInfo -type StreamEvent_MediaUpdated struct { - Media *Media `protobuf:"bytes,1,opt,name=media,proto3" json:"media,omitempty"` -} - -func (m *StreamEvent_MediaUpdated) Reset() { *m = StreamEvent_MediaUpdated{} } -func (m *StreamEvent_MediaUpdated) String() string { return proto.CompactTextString(m) } -func (*StreamEvent_MediaUpdated) ProtoMessage() {} -func (*StreamEvent_MediaUpdated) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 9} -} - -func (m *StreamEvent_MediaUpdated) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_StreamEvent_MediaUpdated.Unmarshal(m, b) -} - -func (m *StreamEvent_MediaUpdated) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_StreamEvent_MediaUpdated.Marshal(b, m, deterministic) -} - -func (m *StreamEvent_MediaUpdated) XXX_Merge(src proto.Message) { - xxx_messageInfo_StreamEvent_MediaUpdated.Merge(m, src) -} - -func (m *StreamEvent_MediaUpdated) XXX_Size() int { - return xxx_messageInfo_StreamEvent_MediaUpdated.Size(m) -} - -func (m *StreamEvent_MediaUpdated) XXX_DiscardUnknown() { - xxx_messageInfo_StreamEvent_MediaUpdated.DiscardUnknown(m) -} - -var xxx_messageInfo_StreamEvent_MediaUpdated proto.InternalMessageInfo - -func (m *StreamEvent_MediaUpdated) GetMedia() *Media { - if m != nil { - return m.Media - } - return nil -} - type StreamEvent_ConversationPartialLoad struct { ConversationPK string `protobuf:"bytes,1,opt,name=conversation_pk,json=conversationPk,proto3" json:"conversation_pk,omitempty"` Interactions []*Interaction `protobuf:"bytes,2,rep,name=interactions,proto3" json:"interactions,omitempty"` - Medias []*Media `protobuf:"bytes,3,rep,name=medias,proto3" json:"medias,omitempty"` } func (m *StreamEvent_ConversationPartialLoad) Reset() { *m = StreamEvent_ConversationPartialLoad{} } func (m *StreamEvent_ConversationPartialLoad) String() string { return proto.CompactTextString(m) } func (*StreamEvent_ConversationPartialLoad) ProtoMessage() {} func (*StreamEvent_ConversationPartialLoad) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 10} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 9} } func (m *StreamEvent_ConversationPartialLoad) XXX_Unmarshal(b []byte) error { @@ -4903,13 +4276,6 @@ func (m *StreamEvent_ConversationPartialLoad) GetInteractions() []*Interaction { return nil } -func (m *StreamEvent_ConversationPartialLoad) GetMedias() []*Media { - if m != nil { - return m.Medias - } - return nil -} - type StreamEvent_Notified struct { Type StreamEvent_Notified_Type `protobuf:"varint,1,opt,name=type,proto3,enum=berty.messenger.v1.StreamEvent_Notified_Type" json:"type,omitempty"` Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` @@ -4921,7 +4287,7 @@ func (m *StreamEvent_Notified) Reset() { *m = StreamEvent_Notified{} } func (m *StreamEvent_Notified) String() string { return proto.CompactTextString(m) } func (*StreamEvent_Notified) ProtoMessage() {} func (*StreamEvent_Notified) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 11} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 10} } func (m *StreamEvent_Notified) XXX_Unmarshal(b []byte) error { @@ -4980,7 +4346,7 @@ func (m *StreamEvent_Notified_Basic) Reset() { *m = StreamEvent_Notified func (m *StreamEvent_Notified_Basic) String() string { return proto.CompactTextString(m) } func (*StreamEvent_Notified_Basic) ProtoMessage() {} func (*StreamEvent_Notified_Basic) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 11, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 10, 0} } func (m *StreamEvent_Notified_Basic) XXX_Unmarshal(b []byte) error { @@ -5015,7 +4381,7 @@ func (m *StreamEvent_Notified_MessageReceived) Reset() { *m = StreamEven func (m *StreamEvent_Notified_MessageReceived) String() string { return proto.CompactTextString(m) } func (*StreamEvent_Notified_MessageReceived) ProtoMessage() {} func (*StreamEvent_Notified_MessageReceived) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 11, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 10, 1} } func (m *StreamEvent_Notified_MessageReceived) XXX_Unmarshal(b []byte) error { @@ -5071,7 +4437,7 @@ func (m *StreamEvent_Notified_ContactRequestSent) Reset() { func (m *StreamEvent_Notified_ContactRequestSent) String() string { return proto.CompactTextString(m) } func (*StreamEvent_Notified_ContactRequestSent) ProtoMessage() {} func (*StreamEvent_Notified_ContactRequestSent) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 11, 2} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 10, 2} } func (m *StreamEvent_Notified_ContactRequestSent) XXX_Unmarshal(b []byte) error { @@ -5116,7 +4482,7 @@ func (m *StreamEvent_Notified_ContactRequestReceived) String() string { } func (*StreamEvent_Notified_ContactRequestReceived) ProtoMessage() {} func (*StreamEvent_Notified_ContactRequestReceived) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 11, 3} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 10, 3} } func (m *StreamEvent_Notified_ContactRequestReceived) XXX_Unmarshal(b []byte) error { @@ -5157,7 +4523,7 @@ func (m *StreamEvent_Notified_GroupInvitation) Reset() { *m = StreamEven func (m *StreamEvent_Notified_GroupInvitation) String() string { return proto.CompactTextString(m) } func (*StreamEvent_Notified_GroupInvitation) ProtoMessage() {} func (*StreamEvent_Notified_GroupInvitation) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 11, 4} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 10, 4} } func (m *StreamEvent_Notified_GroupInvitation) XXX_Unmarshal(b []byte) error { @@ -5206,7 +4572,7 @@ func (m *StreamEvent_PeerStatusConnected) Reset() { *m = StreamEvent_Pee func (m *StreamEvent_PeerStatusConnected) String() string { return proto.CompactTextString(m) } func (*StreamEvent_PeerStatusConnected) ProtoMessage() {} func (*StreamEvent_PeerStatusConnected) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 12} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 11} } func (m *StreamEvent_PeerStatusConnected) XXX_Unmarshal(b []byte) error { @@ -5253,7 +4619,7 @@ func (m *StreamEvent_PeerStatusReconnecting) Reset() { *m = StreamEvent_ func (m *StreamEvent_PeerStatusReconnecting) String() string { return proto.CompactTextString(m) } func (*StreamEvent_PeerStatusReconnecting) ProtoMessage() {} func (*StreamEvent_PeerStatusReconnecting) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 13} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 12} } func (m *StreamEvent_PeerStatusReconnecting) XXX_Unmarshal(b []byte) error { @@ -5293,7 +4659,7 @@ func (m *StreamEvent_PeerStatusDisconnected) Reset() { *m = StreamEvent_ func (m *StreamEvent_PeerStatusDisconnected) String() string { return proto.CompactTextString(m) } func (*StreamEvent_PeerStatusDisconnected) ProtoMessage() {} func (*StreamEvent_PeerStatusDisconnected) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 14} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 13} } func (m *StreamEvent_PeerStatusDisconnected) XXX_Unmarshal(b []byte) error { @@ -5335,7 +4701,7 @@ func (m *StreamEvent_PeerStatusGroupAssociated) Reset() { *m = StreamEve func (m *StreamEvent_PeerStatusGroupAssociated) String() string { return proto.CompactTextString(m) } func (*StreamEvent_PeerStatusGroupAssociated) ProtoMessage() {} func (*StreamEvent_PeerStatusGroupAssociated) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{33, 15} + return fileDescriptor_0eab5f5532ffdd8b, []int{30, 14} } func (m *StreamEvent_PeerStatusGroupAssociated) XXX_Unmarshal(b []byte) error { @@ -5387,7 +4753,7 @@ func (m *ConversationStream) Reset() { *m = ConversationStream{} } func (m *ConversationStream) String() string { return proto.CompactTextString(m) } func (*ConversationStream) ProtoMessage() {} func (*ConversationStream) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{34} + return fileDescriptor_0eab5f5532ffdd8b, []int{31} } func (m *ConversationStream) XXX_Unmarshal(b []byte) error { @@ -5421,7 +4787,7 @@ func (m *ConversationStream_Request) Reset() { *m = ConversationStream_R func (m *ConversationStream_Request) String() string { return proto.CompactTextString(m) } func (*ConversationStream_Request) ProtoMessage() {} func (*ConversationStream_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{34, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{31, 0} } func (m *ConversationStream_Request) XXX_Unmarshal(b []byte) error { @@ -5468,7 +4834,7 @@ func (m *ConversationStream_Reply) Reset() { *m = ConversationStream_Rep func (m *ConversationStream_Reply) String() string { return proto.CompactTextString(m) } func (*ConversationStream_Reply) ProtoMessage() {} func (*ConversationStream_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{34, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{31, 1} } func (m *ConversationStream_Reply) XXX_Unmarshal(b []byte) error { @@ -5506,7 +4872,7 @@ func (m *ConversationCreate) Reset() { *m = ConversationCreate{} } func (m *ConversationCreate) String() string { return proto.CompactTextString(m) } func (*ConversationCreate) ProtoMessage() {} func (*ConversationCreate) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{35} + return fileDescriptor_0eab5f5532ffdd8b, []int{32} } func (m *ConversationCreate) XXX_Unmarshal(b []byte) error { @@ -5540,7 +4906,7 @@ func (m *ConversationCreate_Request) Reset() { *m = ConversationCreate_R func (m *ConversationCreate_Request) String() string { return proto.CompactTextString(m) } func (*ConversationCreate_Request) ProtoMessage() {} func (*ConversationCreate_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{35, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{32, 0} } func (m *ConversationCreate_Request) XXX_Unmarshal(b []byte) error { @@ -5587,7 +4953,7 @@ func (m *ConversationCreate_Reply) Reset() { *m = ConversationCreate_Rep func (m *ConversationCreate_Reply) String() string { return proto.CompactTextString(m) } func (*ConversationCreate_Reply) ProtoMessage() {} func (*ConversationCreate_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{35, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{32, 1} } func (m *ConversationCreate_Reply) XXX_Unmarshal(b []byte) error { @@ -5625,7 +4991,7 @@ func (m *AccountGet) Reset() { *m = AccountGet{} } func (m *AccountGet) String() string { return proto.CompactTextString(m) } func (*AccountGet) ProtoMessage() {} func (*AccountGet) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{36} + return fileDescriptor_0eab5f5532ffdd8b, []int{33} } func (m *AccountGet) XXX_Unmarshal(b []byte) error { @@ -5656,7 +5022,7 @@ func (m *AccountGet_Request) Reset() { *m = AccountGet_Request{} } func (m *AccountGet_Request) String() string { return proto.CompactTextString(m) } func (*AccountGet_Request) ProtoMessage() {} func (*AccountGet_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{36, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{33, 0} } func (m *AccountGet_Request) XXX_Unmarshal(b []byte) error { @@ -5689,7 +5055,7 @@ func (m *AccountGet_Reply) Reset() { *m = AccountGet_Reply{} } func (m *AccountGet_Reply) String() string { return proto.CompactTextString(m) } func (*AccountGet_Reply) ProtoMessage() {} func (*AccountGet_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{36, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{33, 1} } func (m *AccountGet_Reply) XXX_Unmarshal(b []byte) error { @@ -5727,7 +5093,7 @@ func (m *EventStream) Reset() { *m = EventStream{} } func (m *EventStream) String() string { return proto.CompactTextString(m) } func (*EventStream) ProtoMessage() {} func (*EventStream) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{37} + return fileDescriptor_0eab5f5532ffdd8b, []int{34} } func (m *EventStream) XXX_Unmarshal(b []byte) error { @@ -5760,7 +5126,7 @@ func (m *EventStream_Request) Reset() { *m = EventStream_Request{} } func (m *EventStream_Request) String() string { return proto.CompactTextString(m) } func (*EventStream_Request) ProtoMessage() {} func (*EventStream_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{37, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{34, 0} } func (m *EventStream_Request) XXX_Unmarshal(b []byte) error { @@ -5800,7 +5166,7 @@ func (m *EventStream_Reply) Reset() { *m = EventStream_Reply{} } func (m *EventStream_Reply) String() string { return proto.CompactTextString(m) } func (*EventStream_Reply) ProtoMessage() {} func (*EventStream_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{37, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{34, 1} } func (m *EventStream_Reply) XXX_Unmarshal(b []byte) error { @@ -5838,7 +5204,7 @@ func (m *AccountUpdate) Reset() { *m = AccountUpdate{} } func (m *AccountUpdate) String() string { return proto.CompactTextString(m) } func (*AccountUpdate) ProtoMessage() {} func (*AccountUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{38} + return fileDescriptor_0eab5f5532ffdd8b, []int{35} } func (m *AccountUpdate) XXX_Unmarshal(b []byte) error { @@ -5865,14 +5231,13 @@ var xxx_messageInfo_AccountUpdate proto.InternalMessageInfo type AccountUpdate_Request struct { DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - AvatarCID string `protobuf:"bytes,2,opt,name=avatar_cid,json=avatarCid,proto3" json:"avatar_cid,omitempty" gorm:"column:avatar_cid"` } func (m *AccountUpdate_Request) Reset() { *m = AccountUpdate_Request{} } func (m *AccountUpdate_Request) String() string { return proto.CompactTextString(m) } func (*AccountUpdate_Request) ProtoMessage() {} func (*AccountUpdate_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{38, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{35, 0} } func (m *AccountUpdate_Request) XXX_Unmarshal(b []byte) error { @@ -5904,20 +5269,13 @@ func (m *AccountUpdate_Request) GetDisplayName() string { return "" } -func (m *AccountUpdate_Request) GetAvatarCID() string { - if m != nil { - return m.AvatarCID - } - return "" -} - type AccountUpdate_Reply struct{} func (m *AccountUpdate_Reply) Reset() { *m = AccountUpdate_Reply{} } func (m *AccountUpdate_Reply) String() string { return proto.CompactTextString(m) } func (*AccountUpdate_Reply) ProtoMessage() {} func (*AccountUpdate_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{38, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{35, 1} } func (m *AccountUpdate_Reply) XXX_Unmarshal(b []byte) error { @@ -5948,7 +5306,7 @@ func (m *AccountPushConfigure) Reset() { *m = AccountPushConfigure{} } func (m *AccountPushConfigure) String() string { return proto.CompactTextString(m) } func (*AccountPushConfigure) ProtoMessage() {} func (*AccountPushConfigure) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{39} + return fileDescriptor_0eab5f5532ffdd8b, []int{36} } func (m *AccountPushConfigure) XXX_Unmarshal(b []byte) error { @@ -5987,7 +5345,7 @@ func (m *AccountPushConfigure_Request) Reset() { *m = AccountPushConfigu func (m *AccountPushConfigure_Request) String() string { return proto.CompactTextString(m) } func (*AccountPushConfigure_Request) ProtoMessage() {} func (*AccountPushConfigure_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{39, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{36, 0} } func (m *AccountPushConfigure_Request) XXX_Unmarshal(b []byte) error { @@ -6067,7 +5425,7 @@ func (m *AccountPushConfigure_Reply) Reset() { *m = AccountPushConfigure func (m *AccountPushConfigure_Reply) String() string { return proto.CompactTextString(m) } func (*AccountPushConfigure_Reply) ProtoMessage() {} func (*AccountPushConfigure_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{39, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{36, 1} } func (m *AccountPushConfigure_Reply) XXX_Unmarshal(b []byte) error { @@ -6098,7 +5456,7 @@ func (m *ContactRequest) Reset() { *m = ContactRequest{} } func (m *ContactRequest) String() string { return proto.CompactTextString(m) } func (*ContactRequest) ProtoMessage() {} func (*ContactRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{40} + return fileDescriptor_0eab5f5532ffdd8b, []int{37} } func (m *ContactRequest) XXX_Unmarshal(b []byte) error { @@ -6133,7 +5491,7 @@ func (m *ContactRequest_Request) Reset() { *m = ContactRequest_Request{} func (m *ContactRequest_Request) String() string { return proto.CompactTextString(m) } func (*ContactRequest_Request) ProtoMessage() {} func (*ContactRequest_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{40, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{37, 0} } func (m *ContactRequest_Request) XXX_Unmarshal(b []byte) error { @@ -6178,7 +5536,7 @@ func (m *ContactRequest_Reply) Reset() { *m = ContactRequest_Reply{} } func (m *ContactRequest_Reply) String() string { return proto.CompactTextString(m) } func (*ContactRequest_Reply) ProtoMessage() {} func (*ContactRequest_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{40, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{37, 1} } func (m *ContactRequest_Reply) XXX_Unmarshal(b []byte) error { @@ -6209,7 +5567,7 @@ func (m *ContactAccept) Reset() { *m = ContactAccept{} } func (m *ContactAccept) String() string { return proto.CompactTextString(m) } func (*ContactAccept) ProtoMessage() {} func (*ContactAccept) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{41} + return fileDescriptor_0eab5f5532ffdd8b, []int{38} } func (m *ContactAccept) XXX_Unmarshal(b []byte) error { @@ -6242,7 +5600,7 @@ func (m *ContactAccept_Request) Reset() { *m = ContactAccept_Request{} } func (m *ContactAccept_Request) String() string { return proto.CompactTextString(m) } func (*ContactAccept_Request) ProtoMessage() {} func (*ContactAccept_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{41, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{38, 0} } func (m *ContactAccept_Request) XXX_Unmarshal(b []byte) error { @@ -6280,7 +5638,7 @@ func (m *ContactAccept_Reply) Reset() { *m = ContactAccept_Reply{} } func (m *ContactAccept_Reply) String() string { return proto.CompactTextString(m) } func (*ContactAccept_Reply) ProtoMessage() {} func (*ContactAccept_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{41, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{38, 1} } func (m *ContactAccept_Reply) XXX_Unmarshal(b []byte) error { @@ -6311,7 +5669,7 @@ func (m *Interact) Reset() { *m = Interact{} } func (m *Interact) String() string { return proto.CompactTextString(m) } func (*Interact) ProtoMessage() {} func (*Interact) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{42} + return fileDescriptor_0eab5f5532ffdd8b, []int{39} } func (m *Interact) XXX_Unmarshal(b []byte) error { @@ -6340,7 +5698,6 @@ type Interact_Request struct { Type AppMessage_Type `protobuf:"varint,1,opt,name=type,proto3,enum=berty.messenger.v1.AppMessage_Type" json:"type,omitempty"` Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` ConversationPublicKey string `protobuf:"bytes,3,opt,name=conversation_public_key,json=conversationPublicKey,proto3" json:"conversation_public_key,omitempty"` - MediaCids []string `protobuf:"bytes,4,rep,name=media_cids,json=mediaCids,proto3" json:"media_cids,omitempty"` TargetCID string `protobuf:"bytes,5,opt,name=target_cid,json=targetCid,proto3" json:"target_cid,omitempty"` Metadata bool `protobuf:"varint,6,opt,name=metadata,proto3" json:"metadata,omitempty"` } @@ -6349,7 +5706,7 @@ func (m *Interact_Request) Reset() { *m = Interact_Request{} } func (m *Interact_Request) String() string { return proto.CompactTextString(m) } func (*Interact_Request) ProtoMessage() {} func (*Interact_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{42, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{39, 0} } func (m *Interact_Request) XXX_Unmarshal(b []byte) error { @@ -6395,13 +5752,6 @@ func (m *Interact_Request) GetConversationPublicKey() string { return "" } -func (m *Interact_Request) GetMediaCids() []string { - if m != nil { - return m.MediaCids - } - return nil -} - func (m *Interact_Request) GetTargetCID() string { if m != nil { return m.TargetCID @@ -6424,7 +5774,7 @@ func (m *Interact_Reply) Reset() { *m = Interact_Reply{} } func (m *Interact_Reply) String() string { return proto.CompactTextString(m) } func (*Interact_Reply) ProtoMessage() {} func (*Interact_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{42, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{39, 1} } func (m *Interact_Reply) XXX_Unmarshal(b []byte) error { @@ -6462,7 +5812,7 @@ func (m *ReplicationServiceRegisterGroup) Reset() { *m = ReplicationServ func (m *ReplicationServiceRegisterGroup) String() string { return proto.CompactTextString(m) } func (*ReplicationServiceRegisterGroup) ProtoMessage() {} func (*ReplicationServiceRegisterGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{43} + return fileDescriptor_0eab5f5532ffdd8b, []int{40} } func (m *ReplicationServiceRegisterGroup) XXX_Unmarshal(b []byte) error { @@ -6498,7 +5848,7 @@ func (m *ReplicationServiceRegisterGroup_Request) Reset() { func (m *ReplicationServiceRegisterGroup_Request) String() string { return proto.CompactTextString(m) } func (*ReplicationServiceRegisterGroup_Request) ProtoMessage() {} func (*ReplicationServiceRegisterGroup_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{43, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{40, 0} } func (m *ReplicationServiceRegisterGroup_Request) XXX_Unmarshal(b []byte) error { @@ -6543,7 +5893,7 @@ func (m *ReplicationServiceRegisterGroup_Reply) Reset() { *m = Replicati func (m *ReplicationServiceRegisterGroup_Reply) String() string { return proto.CompactTextString(m) } func (*ReplicationServiceRegisterGroup_Reply) ProtoMessage() {} func (*ReplicationServiceRegisterGroup_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{43, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{40, 1} } func (m *ReplicationServiceRegisterGroup_Reply) XXX_Unmarshal(b []byte) error { @@ -6574,7 +5924,7 @@ func (m *ReplicationSetAutoEnable) Reset() { *m = ReplicationSetAutoEnab func (m *ReplicationSetAutoEnable) String() string { return proto.CompactTextString(m) } func (*ReplicationSetAutoEnable) ProtoMessage() {} func (*ReplicationSetAutoEnable) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{44} + return fileDescriptor_0eab5f5532ffdd8b, []int{41} } func (m *ReplicationSetAutoEnable) XXX_Unmarshal(b []byte) error { @@ -6607,7 +5957,7 @@ func (m *ReplicationSetAutoEnable_Request) Reset() { *m = ReplicationSet func (m *ReplicationSetAutoEnable_Request) String() string { return proto.CompactTextString(m) } func (*ReplicationSetAutoEnable_Request) ProtoMessage() {} func (*ReplicationSetAutoEnable_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{44, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{41, 0} } func (m *ReplicationSetAutoEnable_Request) XXX_Unmarshal(b []byte) error { @@ -6645,7 +5995,7 @@ func (m *ReplicationSetAutoEnable_Reply) Reset() { *m = ReplicationSetAu func (m *ReplicationSetAutoEnable_Reply) String() string { return proto.CompactTextString(m) } func (*ReplicationSetAutoEnable_Reply) ProtoMessage() {} func (*ReplicationSetAutoEnable_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{44, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{41, 1} } func (m *ReplicationSetAutoEnable_Reply) XXX_Unmarshal(b []byte) error { @@ -6676,7 +6026,7 @@ func (m *BannerQuote) Reset() { *m = BannerQuote{} } func (m *BannerQuote) String() string { return proto.CompactTextString(m) } func (*BannerQuote) ProtoMessage() {} func (*BannerQuote) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{45} + return fileDescriptor_0eab5f5532ffdd8b, []int{42} } func (m *BannerQuote) XXX_Unmarshal(b []byte) error { @@ -6709,7 +6059,7 @@ func (m *BannerQuote_Request) Reset() { *m = BannerQuote_Request{} } func (m *BannerQuote_Request) String() string { return proto.CompactTextString(m) } func (*BannerQuote_Request) ProtoMessage() {} func (*BannerQuote_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{45, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{42, 0} } func (m *BannerQuote_Request) XXX_Unmarshal(b []byte) error { @@ -6750,7 +6100,7 @@ func (m *BannerQuote_Reply) Reset() { *m = BannerQuote_Reply{} } func (m *BannerQuote_Reply) String() string { return proto.CompactTextString(m) } func (*BannerQuote_Reply) ProtoMessage() {} func (*BannerQuote_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{45, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{42, 1} } func (m *BannerQuote_Reply) XXX_Unmarshal(b []byte) error { @@ -6795,7 +6145,7 @@ func (m *InstanceExportData) Reset() { *m = InstanceExportData{} } func (m *InstanceExportData) String() string { return proto.CompactTextString(m) } func (*InstanceExportData) ProtoMessage() {} func (*InstanceExportData) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{46} + return fileDescriptor_0eab5f5532ffdd8b, []int{43} } func (m *InstanceExportData) XXX_Unmarshal(b []byte) error { @@ -6826,7 +6176,7 @@ func (m *InstanceExportData_Request) Reset() { *m = InstanceExportData_R func (m *InstanceExportData_Request) String() string { return proto.CompactTextString(m) } func (*InstanceExportData_Request) ProtoMessage() {} func (*InstanceExportData_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{46, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{43, 0} } func (m *InstanceExportData_Request) XXX_Unmarshal(b []byte) error { @@ -6859,7 +6209,7 @@ func (m *InstanceExportData_Reply) Reset() { *m = InstanceExportData_Rep func (m *InstanceExportData_Reply) String() string { return proto.CompactTextString(m) } func (*InstanceExportData_Reply) ProtoMessage() {} func (*InstanceExportData_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{46, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{43, 1} } func (m *InstanceExportData_Reply) XXX_Unmarshal(b []byte) error { @@ -6904,7 +6254,7 @@ func (m *LocalDatabaseState) Reset() { *m = LocalDatabaseState{} } func (m *LocalDatabaseState) String() string { return proto.CompactTextString(m) } func (*LocalDatabaseState) ProtoMessage() {} func (*LocalDatabaseState) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{47} + return fileDescriptor_0eab5f5532ffdd8b, []int{44} } func (m *LocalDatabaseState) XXX_Unmarshal(b []byte) error { @@ -6982,7 +6332,7 @@ func (m *LocalConversationState) Reset() { *m = LocalConversationState{} func (m *LocalConversationState) String() string { return proto.CompactTextString(m) } func (*LocalConversationState) ProtoMessage() {} func (*LocalConversationState) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{48} + return fileDescriptor_0eab5f5532ffdd8b, []int{45} } func (m *LocalConversationState) XXX_Unmarshal(b []byte) error { @@ -6997,712 +6347,42 @@ func (m *LocalConversationState) XXX_Merge(src proto.Message) { xxx_messageInfo_LocalConversationState.Merge(m, src) } -func (m *LocalConversationState) XXX_Size() int { - return xxx_messageInfo_LocalConversationState.Size(m) -} - -func (m *LocalConversationState) XXX_DiscardUnknown() { - xxx_messageInfo_LocalConversationState.DiscardUnknown(m) -} - -var xxx_messageInfo_LocalConversationState proto.InternalMessageInfo - -func (m *LocalConversationState) GetPublicKey() string { - if m != nil { - return m.PublicKey - } - return "" -} - -func (m *LocalConversationState) GetUnreadCount() int32 { - if m != nil { - return m.UnreadCount - } - return 0 -} - -func (m *LocalConversationState) GetIsOpen() bool { - if m != nil { - return m.IsOpen - } - return false -} - -func (m *LocalConversationState) GetType() Conversation_Type { - if m != nil { - return m.Type - } - return Conversation_Undefined -} - -type MediaPrepare struct{} - -func (m *MediaPrepare) Reset() { *m = MediaPrepare{} } -func (m *MediaPrepare) String() string { return proto.CompactTextString(m) } -func (*MediaPrepare) ProtoMessage() {} -func (*MediaPrepare) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{49} -} - -func (m *MediaPrepare) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MediaPrepare.Unmarshal(m, b) -} - -func (m *MediaPrepare) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MediaPrepare.Marshal(b, m, deterministic) -} - -func (m *MediaPrepare) XXX_Merge(src proto.Message) { - xxx_messageInfo_MediaPrepare.Merge(m, src) -} - -func (m *MediaPrepare) XXX_Size() int { - return xxx_messageInfo_MediaPrepare.Size(m) -} - -func (m *MediaPrepare) XXX_DiscardUnknown() { - xxx_messageInfo_MediaPrepare.DiscardUnknown(m) -} - -var xxx_messageInfo_MediaPrepare proto.InternalMessageInfo - -type MediaPrepare_Request struct { - Block []byte `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"` - Info *Media `protobuf:"bytes,2,opt,name=info,proto3" json:"info,omitempty"` - Uri string `protobuf:"bytes,3,opt,name=uri,proto3" json:"uri,omitempty"` -} - -func (m *MediaPrepare_Request) Reset() { *m = MediaPrepare_Request{} } -func (m *MediaPrepare_Request) String() string { return proto.CompactTextString(m) } -func (*MediaPrepare_Request) ProtoMessage() {} -func (*MediaPrepare_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{49, 0} -} - -func (m *MediaPrepare_Request) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MediaPrepare_Request.Unmarshal(m, b) -} - -func (m *MediaPrepare_Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MediaPrepare_Request.Marshal(b, m, deterministic) -} - -func (m *MediaPrepare_Request) XXX_Merge(src proto.Message) { - xxx_messageInfo_MediaPrepare_Request.Merge(m, src) -} - -func (m *MediaPrepare_Request) XXX_Size() int { - return xxx_messageInfo_MediaPrepare_Request.Size(m) -} - -func (m *MediaPrepare_Request) XXX_DiscardUnknown() { - xxx_messageInfo_MediaPrepare_Request.DiscardUnknown(m) -} - -var xxx_messageInfo_MediaPrepare_Request proto.InternalMessageInfo - -func (m *MediaPrepare_Request) GetBlock() []byte { - if m != nil { - return m.Block - } - return nil -} - -func (m *MediaPrepare_Request) GetInfo() *Media { - if m != nil { - return m.Info - } - return nil -} - -func (m *MediaPrepare_Request) GetUri() string { - if m != nil { - return m.Uri - } - return "" -} - -type MediaPrepare_Reply struct { - Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` -} - -func (m *MediaPrepare_Reply) Reset() { *m = MediaPrepare_Reply{} } -func (m *MediaPrepare_Reply) String() string { return proto.CompactTextString(m) } -func (*MediaPrepare_Reply) ProtoMessage() {} -func (*MediaPrepare_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{49, 1} -} - -func (m *MediaPrepare_Reply) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MediaPrepare_Reply.Unmarshal(m, b) -} - -func (m *MediaPrepare_Reply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MediaPrepare_Reply.Marshal(b, m, deterministic) -} - -func (m *MediaPrepare_Reply) XXX_Merge(src proto.Message) { - xxx_messageInfo_MediaPrepare_Reply.Merge(m, src) -} - -func (m *MediaPrepare_Reply) XXX_Size() int { - return xxx_messageInfo_MediaPrepare_Reply.Size(m) -} - -func (m *MediaPrepare_Reply) XXX_DiscardUnknown() { - xxx_messageInfo_MediaPrepare_Reply.DiscardUnknown(m) -} - -var xxx_messageInfo_MediaPrepare_Reply proto.InternalMessageInfo - -func (m *MediaPrepare_Reply) GetCid() string { - if m != nil { - return m.Cid - } - return "" -} - -type MediaRetrieve struct{} - -func (m *MediaRetrieve) Reset() { *m = MediaRetrieve{} } -func (m *MediaRetrieve) String() string { return proto.CompactTextString(m) } -func (*MediaRetrieve) ProtoMessage() {} -func (*MediaRetrieve) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{50} -} - -func (m *MediaRetrieve) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MediaRetrieve.Unmarshal(m, b) -} - -func (m *MediaRetrieve) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MediaRetrieve.Marshal(b, m, deterministic) -} - -func (m *MediaRetrieve) XXX_Merge(src proto.Message) { - xxx_messageInfo_MediaRetrieve.Merge(m, src) -} - -func (m *MediaRetrieve) XXX_Size() int { - return xxx_messageInfo_MediaRetrieve.Size(m) -} - -func (m *MediaRetrieve) XXX_DiscardUnknown() { - xxx_messageInfo_MediaRetrieve.DiscardUnknown(m) -} - -var xxx_messageInfo_MediaRetrieve proto.InternalMessageInfo - -type MediaRetrieve_Request struct { - Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` -} - -func (m *MediaRetrieve_Request) Reset() { *m = MediaRetrieve_Request{} } -func (m *MediaRetrieve_Request) String() string { return proto.CompactTextString(m) } -func (*MediaRetrieve_Request) ProtoMessage() {} -func (*MediaRetrieve_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{50, 0} -} - -func (m *MediaRetrieve_Request) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MediaRetrieve_Request.Unmarshal(m, b) -} - -func (m *MediaRetrieve_Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MediaRetrieve_Request.Marshal(b, m, deterministic) -} - -func (m *MediaRetrieve_Request) XXX_Merge(src proto.Message) { - xxx_messageInfo_MediaRetrieve_Request.Merge(m, src) -} - -func (m *MediaRetrieve_Request) XXX_Size() int { - return xxx_messageInfo_MediaRetrieve_Request.Size(m) -} - -func (m *MediaRetrieve_Request) XXX_DiscardUnknown() { - xxx_messageInfo_MediaRetrieve_Request.DiscardUnknown(m) -} - -var xxx_messageInfo_MediaRetrieve_Request proto.InternalMessageInfo - -func (m *MediaRetrieve_Request) GetCid() string { - if m != nil { - return m.Cid - } - return "" -} - -type MediaRetrieve_Reply struct { - Block []byte `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"` - Info *Media `protobuf:"bytes,2,opt,name=info,proto3" json:"info,omitempty"` -} - -func (m *MediaRetrieve_Reply) Reset() { *m = MediaRetrieve_Reply{} } -func (m *MediaRetrieve_Reply) String() string { return proto.CompactTextString(m) } -func (*MediaRetrieve_Reply) ProtoMessage() {} -func (*MediaRetrieve_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{50, 1} -} - -func (m *MediaRetrieve_Reply) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MediaRetrieve_Reply.Unmarshal(m, b) -} - -func (m *MediaRetrieve_Reply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MediaRetrieve_Reply.Marshal(b, m, deterministic) -} - -func (m *MediaRetrieve_Reply) XXX_Merge(src proto.Message) { - xxx_messageInfo_MediaRetrieve_Reply.Merge(m, src) -} - -func (m *MediaRetrieve_Reply) XXX_Size() int { - return xxx_messageInfo_MediaRetrieve_Reply.Size(m) -} - -func (m *MediaRetrieve_Reply) XXX_DiscardUnknown() { - xxx_messageInfo_MediaRetrieve_Reply.DiscardUnknown(m) -} - -var xxx_messageInfo_MediaRetrieve_Reply proto.InternalMessageInfo - -func (m *MediaRetrieve_Reply) GetBlock() []byte { - if m != nil { - return m.Block - } - return nil -} - -func (m *MediaRetrieve_Reply) GetInfo() *Media { - if m != nil { - return m.Info - } - return nil -} - -type MediaGetRelated struct{} - -func (m *MediaGetRelated) Reset() { *m = MediaGetRelated{} } -func (m *MediaGetRelated) String() string { return proto.CompactTextString(m) } -func (*MediaGetRelated) ProtoMessage() {} -func (*MediaGetRelated) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{51} -} - -func (m *MediaGetRelated) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MediaGetRelated.Unmarshal(m, b) -} - -func (m *MediaGetRelated) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MediaGetRelated.Marshal(b, m, deterministic) -} - -func (m *MediaGetRelated) XXX_Merge(src proto.Message) { - xxx_messageInfo_MediaGetRelated.Merge(m, src) -} - -func (m *MediaGetRelated) XXX_Size() int { - return xxx_messageInfo_MediaGetRelated.Size(m) -} - -func (m *MediaGetRelated) XXX_DiscardUnknown() { - xxx_messageInfo_MediaGetRelated.DiscardUnknown(m) -} - -var xxx_messageInfo_MediaGetRelated proto.InternalMessageInfo - -type MediaGetRelated_Request struct { - CID string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` - // bool previous = 2; // TODO: gets previous media instead of next - MimeTypes []string `protobuf:"bytes,3,rep,name=mime_types,json=mimeTypes,proto3" json:"mime_types,omitempty"` - FileNames []string `protobuf:"bytes,4,rep,name=file_names,json=fileNames,proto3" json:"file_names,omitempty"` -} - -func (m *MediaGetRelated_Request) Reset() { *m = MediaGetRelated_Request{} } -func (m *MediaGetRelated_Request) String() string { return proto.CompactTextString(m) } -func (*MediaGetRelated_Request) ProtoMessage() {} -func (*MediaGetRelated_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{51, 0} -} - -func (m *MediaGetRelated_Request) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MediaGetRelated_Request.Unmarshal(m, b) -} - -func (m *MediaGetRelated_Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MediaGetRelated_Request.Marshal(b, m, deterministic) -} - -func (m *MediaGetRelated_Request) XXX_Merge(src proto.Message) { - xxx_messageInfo_MediaGetRelated_Request.Merge(m, src) -} - -func (m *MediaGetRelated_Request) XXX_Size() int { - return xxx_messageInfo_MediaGetRelated_Request.Size(m) -} - -func (m *MediaGetRelated_Request) XXX_DiscardUnknown() { - xxx_messageInfo_MediaGetRelated_Request.DiscardUnknown(m) -} - -var xxx_messageInfo_MediaGetRelated_Request proto.InternalMessageInfo - -func (m *MediaGetRelated_Request) GetCID() string { - if m != nil { - return m.CID - } - return "" -} - -func (m *MediaGetRelated_Request) GetMimeTypes() []string { - if m != nil { - return m.MimeTypes - } - return nil -} - -func (m *MediaGetRelated_Request) GetFileNames() []string { - if m != nil { - return m.FileNames - } - return nil -} - -type MediaGetRelated_Reply struct { - Media *Media `protobuf:"bytes,1,opt,name=media,proto3" json:"media,omitempty"` - End bool `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` -} - -func (m *MediaGetRelated_Reply) Reset() { *m = MediaGetRelated_Reply{} } -func (m *MediaGetRelated_Reply) String() string { return proto.CompactTextString(m) } -func (*MediaGetRelated_Reply) ProtoMessage() {} -func (*MediaGetRelated_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{51, 1} -} - -func (m *MediaGetRelated_Reply) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MediaGetRelated_Reply.Unmarshal(m, b) -} - -func (m *MediaGetRelated_Reply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MediaGetRelated_Reply.Marshal(b, m, deterministic) -} - -func (m *MediaGetRelated_Reply) XXX_Merge(src proto.Message) { - xxx_messageInfo_MediaGetRelated_Reply.Merge(m, src) -} - -func (m *MediaGetRelated_Reply) XXX_Size() int { - return xxx_messageInfo_MediaGetRelated_Reply.Size(m) -} - -func (m *MediaGetRelated_Reply) XXX_DiscardUnknown() { - xxx_messageInfo_MediaGetRelated_Reply.DiscardUnknown(m) -} - -var xxx_messageInfo_MediaGetRelated_Reply proto.InternalMessageInfo - -func (m *MediaGetRelated_Reply) GetMedia() *Media { - if m != nil { - return m.Media - } - return nil -} - -func (m *MediaGetRelated_Reply) GetEnd() bool { - if m != nil { - return m.End - } - return false -} - -type MediaMetadata struct { - Items []*MediaMetadataItem `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` -} - -func (m *MediaMetadata) Reset() { *m = MediaMetadata{} } -func (m *MediaMetadata) String() string { return proto.CompactTextString(m) } -func (*MediaMetadata) ProtoMessage() {} -func (*MediaMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{52} -} - -func (m *MediaMetadata) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MediaMetadata.Unmarshal(m, b) -} - -func (m *MediaMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MediaMetadata.Marshal(b, m, deterministic) -} - -func (m *MediaMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_MediaMetadata.Merge(m, src) -} - -func (m *MediaMetadata) XXX_Size() int { - return xxx_messageInfo_MediaMetadata.Size(m) -} - -func (m *MediaMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_MediaMetadata.DiscardUnknown(m) -} - -var xxx_messageInfo_MediaMetadata proto.InternalMessageInfo - -func (m *MediaMetadata) GetItems() []*MediaMetadataItem { - if m != nil { - return m.Items - } - return nil -} - -type MediaMetadataItem struct { - MetadataType MediaMetadataType `protobuf:"varint,1,opt,name=metadata_type,json=metadataType,proto3,enum=berty.messenger.v1.MediaMetadataType" json:"metadata_type,omitempty"` - Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` -} - -func (m *MediaMetadataItem) Reset() { *m = MediaMetadataItem{} } -func (m *MediaMetadataItem) String() string { return proto.CompactTextString(m) } -func (*MediaMetadataItem) ProtoMessage() {} -func (*MediaMetadataItem) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{53} -} - -func (m *MediaMetadataItem) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MediaMetadataItem.Unmarshal(m, b) -} - -func (m *MediaMetadataItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MediaMetadataItem.Marshal(b, m, deterministic) -} - -func (m *MediaMetadataItem) XXX_Merge(src proto.Message) { - xxx_messageInfo_MediaMetadataItem.Merge(m, src) -} - -func (m *MediaMetadataItem) XXX_Size() int { - return xxx_messageInfo_MediaMetadataItem.Size(m) -} - -func (m *MediaMetadataItem) XXX_DiscardUnknown() { - xxx_messageInfo_MediaMetadataItem.DiscardUnknown(m) -} - -var xxx_messageInfo_MediaMetadataItem proto.InternalMessageInfo - -func (m *MediaMetadataItem) GetMetadataType() MediaMetadataType { - if m != nil { - return m.MetadataType - } - return MediaMetadataType_MetadataUnknown -} - -func (m *MediaMetadataItem) GetPayload() []byte { - if m != nil { - return m.Payload - } - return nil -} - -type MediaMetadataKV struct { - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` -} - -func (m *MediaMetadataKV) Reset() { *m = MediaMetadataKV{} } -func (m *MediaMetadataKV) String() string { return proto.CompactTextString(m) } -func (*MediaMetadataKV) ProtoMessage() {} -func (*MediaMetadataKV) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{54} -} - -func (m *MediaMetadataKV) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MediaMetadataKV.Unmarshal(m, b) -} - -func (m *MediaMetadataKV) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MediaMetadataKV.Marshal(b, m, deterministic) -} - -func (m *MediaMetadataKV) XXX_Merge(src proto.Message) { - xxx_messageInfo_MediaMetadataKV.Merge(m, src) -} - -func (m *MediaMetadataKV) XXX_Size() int { - return xxx_messageInfo_MediaMetadataKV.Size(m) -} - -func (m *MediaMetadataKV) XXX_DiscardUnknown() { - xxx_messageInfo_MediaMetadataKV.DiscardUnknown(m) -} - -var xxx_messageInfo_MediaMetadataKV proto.InternalMessageInfo - -func (m *MediaMetadataKV) GetKey() string { - if m != nil { - return m.Key - } - return "" -} - -func (m *MediaMetadataKV) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -type AudioPreview struct { - VolumeIntensities []uint32 `protobuf:"varint,1,rep,packed,name=volume_intensities,json=volumeIntensities,proto3" json:"volume_intensities,omitempty"` - DurationMs uint32 `protobuf:"varint,2,opt,name=duration_ms,json=durationMs,proto3" json:"duration_ms,omitempty"` - Format string `protobuf:"bytes,3,opt,name=format,proto3" json:"format,omitempty"` - Bitrate uint32 `protobuf:"varint,4,opt,name=bitrate,proto3" json:"bitrate,omitempty"` - SamplingRate uint32 `protobuf:"varint,5,opt,name=sampling_rate,json=samplingRate,proto3" json:"sampling_rate,omitempty"` -} - -func (m *AudioPreview) Reset() { *m = AudioPreview{} } -func (m *AudioPreview) String() string { return proto.CompactTextString(m) } -func (*AudioPreview) ProtoMessage() {} -func (*AudioPreview) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{55} -} - -func (m *AudioPreview) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AudioPreview.Unmarshal(m, b) -} - -func (m *AudioPreview) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AudioPreview.Marshal(b, m, deterministic) -} - -func (m *AudioPreview) XXX_Merge(src proto.Message) { - xxx_messageInfo_AudioPreview.Merge(m, src) -} - -func (m *AudioPreview) XXX_Size() int { - return xxx_messageInfo_AudioPreview.Size(m) -} - -func (m *AudioPreview) XXX_DiscardUnknown() { - xxx_messageInfo_AudioPreview.DiscardUnknown(m) -} - -var xxx_messageInfo_AudioPreview proto.InternalMessageInfo - -func (m *AudioPreview) GetVolumeIntensities() []uint32 { - if m != nil { - return m.VolumeIntensities - } - return nil -} - -func (m *AudioPreview) GetDurationMs() uint32 { - if m != nil { - return m.DurationMs - } - return 0 -} - -func (m *AudioPreview) GetFormat() string { - if m != nil { - return m.Format - } - return "" -} - -func (m *AudioPreview) GetBitrate() uint32 { - if m != nil { - return m.Bitrate - } - return 0 -} - -func (m *AudioPreview) GetSamplingRate() uint32 { - if m != nil { - return m.SamplingRate - } - return 0 -} - -type Reaction struct { - TargetCID string `protobuf:"bytes,2,opt,name=target_cid,json=targetCid,proto3" json:"target_cid,omitempty" gorm:"column:target_cid;primaryKey"` - MemberPublicKey string `protobuf:"bytes,3,opt,name=member_public_key,json=memberPublicKey,proto3" json:"member_public_key,omitempty" gorm:"primaryKey"` - Emoji string `protobuf:"bytes,4,opt,name=emoji,proto3" json:"emoji,omitempty" gorm:"primaryKey"` - IsMine bool `protobuf:"varint,5,opt,name=is_mine,json=isMine,proto3" json:"is_mine,omitempty"` - State bool `protobuf:"varint,6,opt,name=state,proto3" json:"state,omitempty"` - StateDate int64 `protobuf:"varint,7,opt,name=state_date,json=stateDate,proto3" json:"state_date,omitempty"` -} - -func (m *Reaction) Reset() { *m = Reaction{} } -func (m *Reaction) String() string { return proto.CompactTextString(m) } -func (*Reaction) ProtoMessage() {} -func (*Reaction) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{56} -} - -func (m *Reaction) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Reaction.Unmarshal(m, b) -} - -func (m *Reaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Reaction.Marshal(b, m, deterministic) -} - -func (m *Reaction) XXX_Merge(src proto.Message) { - xxx_messageInfo_Reaction.Merge(m, src) -} - -func (m *Reaction) XXX_Size() int { - return xxx_messageInfo_Reaction.Size(m) -} - -func (m *Reaction) XXX_DiscardUnknown() { - xxx_messageInfo_Reaction.DiscardUnknown(m) -} - -var xxx_messageInfo_Reaction proto.InternalMessageInfo - -func (m *Reaction) GetTargetCID() string { - if m != nil { - return m.TargetCID - } - return "" +func (m *LocalConversationState) XXX_Size() int { + return xxx_messageInfo_LocalConversationState.Size(m) } -func (m *Reaction) GetMemberPublicKey() string { - if m != nil { - return m.MemberPublicKey - } - return "" +func (m *LocalConversationState) XXX_DiscardUnknown() { + xxx_messageInfo_LocalConversationState.DiscardUnknown(m) } -func (m *Reaction) GetEmoji() string { +var xxx_messageInfo_LocalConversationState proto.InternalMessageInfo + +func (m *LocalConversationState) GetPublicKey() string { if m != nil { - return m.Emoji + return m.PublicKey } return "" } -func (m *Reaction) GetIsMine() bool { +func (m *LocalConversationState) GetUnreadCount() int32 { if m != nil { - return m.IsMine + return m.UnreadCount } - return false + return 0 } -func (m *Reaction) GetState() bool { +func (m *LocalConversationState) GetIsOpen() bool { if m != nil { - return m.State + return m.IsOpen } return false } -func (m *Reaction) GetStateDate() int64 { +func (m *LocalConversationState) GetType() Conversation_Type { if m != nil { - return m.StateDate + return m.Type } - return 0 + return Conversation_Undefined } type MessageSearch struct{} @@ -7711,7 +6391,7 @@ func (m *MessageSearch) Reset() { *m = MessageSearch{} } func (m *MessageSearch) String() string { return proto.CompactTextString(m) } func (*MessageSearch) ProtoMessage() {} func (*MessageSearch) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{57} + return fileDescriptor_0eab5f5532ffdd8b, []int{46} } func (m *MessageSearch) XXX_Unmarshal(b []byte) error { @@ -7749,7 +6429,7 @@ func (m *MessageSearch_Request) Reset() { *m = MessageSearch_Request{} } func (m *MessageSearch_Request) String() string { return proto.CompactTextString(m) } func (*MessageSearch_Request) ProtoMessage() {} func (*MessageSearch_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{57, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{46, 0} } func (m *MessageSearch_Request) XXX_Unmarshal(b []byte) error { @@ -7824,7 +6504,7 @@ func (m *MessageSearch_Reply) Reset() { *m = MessageSearch_Reply{} } func (m *MessageSearch_Reply) String() string { return proto.CompactTextString(m) } func (*MessageSearch_Reply) ProtoMessage() {} func (*MessageSearch_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{57, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{46, 1} } func (m *MessageSearch_Reply) XXX_Unmarshal(b []byte) error { @@ -7862,7 +6542,7 @@ func (m *TyberHostSearch) Reset() { *m = TyberHostSearch{} } func (m *TyberHostSearch) String() string { return proto.CompactTextString(m) } func (*TyberHostSearch) ProtoMessage() {} func (*TyberHostSearch) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{58} + return fileDescriptor_0eab5f5532ffdd8b, []int{47} } func (m *TyberHostSearch) XXX_Unmarshal(b []byte) error { @@ -7893,7 +6573,7 @@ func (m *TyberHostSearch_Request) Reset() { *m = TyberHostSearch_Request func (m *TyberHostSearch_Request) String() string { return proto.CompactTextString(m) } func (*TyberHostSearch_Request) ProtoMessage() {} func (*TyberHostSearch_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{58, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{47, 0} } func (m *TyberHostSearch_Request) XXX_Unmarshal(b []byte) error { @@ -7928,7 +6608,7 @@ func (m *TyberHostSearch_Reply) Reset() { *m = TyberHostSearch_Reply{} } func (m *TyberHostSearch_Reply) String() string { return proto.CompactTextString(m) } func (*TyberHostSearch_Reply) ProtoMessage() {} func (*TyberHostSearch_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{58, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{47, 1} } func (m *TyberHostSearch_Reply) XXX_Unmarshal(b []byte) error { @@ -7980,7 +6660,7 @@ func (m *TyberHostAttach) Reset() { *m = TyberHostAttach{} } func (m *TyberHostAttach) String() string { return proto.CompactTextString(m) } func (*TyberHostAttach) ProtoMessage() {} func (*TyberHostAttach) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{59} + return fileDescriptor_0eab5f5532ffdd8b, []int{48} } func (m *TyberHostAttach) XXX_Unmarshal(b []byte) error { @@ -8013,7 +6693,7 @@ func (m *TyberHostAttach_Request) Reset() { *m = TyberHostAttach_Request func (m *TyberHostAttach_Request) String() string { return proto.CompactTextString(m) } func (*TyberHostAttach_Request) ProtoMessage() {} func (*TyberHostAttach_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{59, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{48, 0} } func (m *TyberHostAttach_Request) XXX_Unmarshal(b []byte) error { @@ -8053,7 +6733,7 @@ func (m *TyberHostAttach_Reply) Reset() { *m = TyberHostAttach_Reply{} } func (m *TyberHostAttach_Reply) String() string { return proto.CompactTextString(m) } func (*TyberHostAttach_Reply) ProtoMessage() {} func (*TyberHostAttach_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{59, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{48, 1} } func (m *TyberHostAttach_Reply) XXX_Unmarshal(b []byte) error { @@ -8091,7 +6771,7 @@ func (m *PushSetAutoShare) Reset() { *m = PushSetAutoShare{} } func (m *PushSetAutoShare) String() string { return proto.CompactTextString(m) } func (*PushSetAutoShare) ProtoMessage() {} func (*PushSetAutoShare) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{60} + return fileDescriptor_0eab5f5532ffdd8b, []int{49} } func (m *PushSetAutoShare) XXX_Unmarshal(b []byte) error { @@ -8124,7 +6804,7 @@ func (m *PushSetAutoShare_Request) Reset() { *m = PushSetAutoShare_Reque func (m *PushSetAutoShare_Request) String() string { return proto.CompactTextString(m) } func (*PushSetAutoShare_Request) ProtoMessage() {} func (*PushSetAutoShare_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{60, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{49, 0} } func (m *PushSetAutoShare_Request) XXX_Unmarshal(b []byte) error { @@ -8162,7 +6842,7 @@ func (m *PushSetAutoShare_Reply) Reset() { *m = PushSetAutoShare_Reply{} func (m *PushSetAutoShare_Reply) String() string { return proto.CompactTextString(m) } func (*PushSetAutoShare_Reply) ProtoMessage() {} func (*PushSetAutoShare_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{60, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{49, 1} } func (m *PushSetAutoShare_Reply) XXX_Unmarshal(b []byte) error { @@ -8200,7 +6880,7 @@ func (m *PushReceivedData) Reset() { *m = PushReceivedData{} } func (m *PushReceivedData) String() string { return proto.CompactTextString(m) } func (*PushReceivedData) ProtoMessage() {} func (*PushReceivedData) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{61} + return fileDescriptor_0eab5f5532ffdd8b, []int{50} } func (m *PushReceivedData) XXX_Unmarshal(b []byte) error { @@ -8273,7 +6953,7 @@ func (m *PushReceive) Reset() { *m = PushReceive{} } func (m *PushReceive) String() string { return proto.CompactTextString(m) } func (*PushReceive) ProtoMessage() {} func (*PushReceive) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{62} + return fileDescriptor_0eab5f5532ffdd8b, []int{51} } func (m *PushReceive) XXX_Unmarshal(b []byte) error { @@ -8306,7 +6986,7 @@ func (m *PushReceive_Request) Reset() { *m = PushReceive_Request{} } func (m *PushReceive_Request) String() string { return proto.CompactTextString(m) } func (*PushReceive_Request) ProtoMessage() {} func (*PushReceive_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{62, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{51, 0} } func (m *PushReceive_Request) XXX_Unmarshal(b []byte) error { @@ -8346,7 +7026,7 @@ func (m *PushReceive_Reply) Reset() { *m = PushReceive_Reply{} } func (m *PushReceive_Reply) String() string { return proto.CompactTextString(m) } func (*PushReceive_Reply) ProtoMessage() {} func (*PushReceive_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{62, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{51, 1} } func (m *PushReceive_Reply) XXX_Unmarshal(b []byte) error { @@ -8384,7 +7064,7 @@ func (m *ListMemberDevices) Reset() { *m = ListMemberDevices{} } func (m *ListMemberDevices) String() string { return proto.CompactTextString(m) } func (*ListMemberDevices) ProtoMessage() {} func (*ListMemberDevices) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{63} + return fileDescriptor_0eab5f5532ffdd8b, []int{52} } func (m *ListMemberDevices) XXX_Unmarshal(b []byte) error { @@ -8418,7 +7098,7 @@ func (m *ListMemberDevices_Request) Reset() { *m = ListMemberDevices_Req func (m *ListMemberDevices_Request) String() string { return proto.CompactTextString(m) } func (*ListMemberDevices_Request) ProtoMessage() {} func (*ListMemberDevices_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{63, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{52, 0} } func (m *ListMemberDevices_Request) XXX_Unmarshal(b []byte) error { @@ -8465,7 +7145,7 @@ func (m *ListMemberDevices_Reply) Reset() { *m = ListMemberDevices_Reply func (m *ListMemberDevices_Reply) String() string { return proto.CompactTextString(m) } func (*ListMemberDevices_Reply) ProtoMessage() {} func (*ListMemberDevices_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{63, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{52, 1} } func (m *ListMemberDevices_Reply) XXX_Unmarshal(b []byte) error { @@ -8503,7 +7183,7 @@ func (m *PushShareTokenForConversation) Reset() { *m = PushShareTokenFor func (m *PushShareTokenForConversation) String() string { return proto.CompactTextString(m) } func (*PushShareTokenForConversation) ProtoMessage() {} func (*PushShareTokenForConversation) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{64} + return fileDescriptor_0eab5f5532ffdd8b, []int{53} } func (m *PushShareTokenForConversation) XXX_Unmarshal(b []byte) error { @@ -8536,7 +7216,7 @@ func (m *PushShareTokenForConversation_Request) Reset() { *m = PushShare func (m *PushShareTokenForConversation_Request) String() string { return proto.CompactTextString(m) } func (*PushShareTokenForConversation_Request) ProtoMessage() {} func (*PushShareTokenForConversation_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{64, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{53, 0} } func (m *PushShareTokenForConversation_Request) XXX_Unmarshal(b []byte) error { @@ -8574,7 +7254,7 @@ func (m *PushShareTokenForConversation_Reply) Reset() { *m = PushShareTo func (m *PushShareTokenForConversation_Reply) String() string { return proto.CompactTextString(m) } func (*PushShareTokenForConversation_Reply) ProtoMessage() {} func (*PushShareTokenForConversation_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{64, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{53, 1} } func (m *PushShareTokenForConversation_Reply) XXX_Unmarshal(b []byte) error { @@ -8605,7 +7285,7 @@ func (m *PushTokenSharedForConversation) Reset() { *m = PushTokenSharedF func (m *PushTokenSharedForConversation) String() string { return proto.CompactTextString(m) } func (*PushTokenSharedForConversation) ProtoMessage() {} func (*PushTokenSharedForConversation) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{65} + return fileDescriptor_0eab5f5532ffdd8b, []int{54} } func (m *PushTokenSharedForConversation) XXX_Unmarshal(b []byte) error { @@ -8640,7 +7320,7 @@ func (m *PushTokenSharedForConversation_Request) Reset() { func (m *PushTokenSharedForConversation_Request) String() string { return proto.CompactTextString(m) } func (*PushTokenSharedForConversation_Request) ProtoMessage() {} func (*PushTokenSharedForConversation_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{65, 0} + return fileDescriptor_0eab5f5532ffdd8b, []int{54, 0} } func (m *PushTokenSharedForConversation_Request) XXX_Unmarshal(b []byte) error { @@ -8680,7 +7360,7 @@ func (m *PushTokenSharedForConversation_Reply) Reset() { *m = PushTokenS func (m *PushTokenSharedForConversation_Reply) String() string { return proto.CompactTextString(m) } func (*PushTokenSharedForConversation_Reply) ProtoMessage() {} func (*PushTokenSharedForConversation_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{65, 1} + return fileDescriptor_0eab5f5532ffdd8b, []int{54, 1} } func (m *PushTokenSharedForConversation_Reply) XXX_Unmarshal(b []byte) error { @@ -8712,130 +7392,9 @@ func (m *PushTokenSharedForConversation_Reply) GetPushToken() *SharedPushToken { return nil } -type InteractionReactionsForEmoji struct{} - -func (m *InteractionReactionsForEmoji) Reset() { *m = InteractionReactionsForEmoji{} } -func (m *InteractionReactionsForEmoji) String() string { return proto.CompactTextString(m) } -func (*InteractionReactionsForEmoji) ProtoMessage() {} -func (*InteractionReactionsForEmoji) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{66} -} - -func (m *InteractionReactionsForEmoji) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_InteractionReactionsForEmoji.Unmarshal(m, b) -} - -func (m *InteractionReactionsForEmoji) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_InteractionReactionsForEmoji.Marshal(b, m, deterministic) -} - -func (m *InteractionReactionsForEmoji) XXX_Merge(src proto.Message) { - xxx_messageInfo_InteractionReactionsForEmoji.Merge(m, src) -} - -func (m *InteractionReactionsForEmoji) XXX_Size() int { - return xxx_messageInfo_InteractionReactionsForEmoji.Size(m) -} - -func (m *InteractionReactionsForEmoji) XXX_DiscardUnknown() { - xxx_messageInfo_InteractionReactionsForEmoji.DiscardUnknown(m) -} - -var xxx_messageInfo_InteractionReactionsForEmoji proto.InternalMessageInfo - -type InteractionReactionsForEmoji_Request struct { - InteractionCID string `protobuf:"bytes,1,opt,name=interaction_cid,json=interactionCid,proto3" json:"interaction_cid,omitempty"` - Emoji string `protobuf:"bytes,2,opt,name=emoji,proto3" json:"emoji,omitempty"` -} - -func (m *InteractionReactionsForEmoji_Request) Reset() { *m = InteractionReactionsForEmoji_Request{} } -func (m *InteractionReactionsForEmoji_Request) String() string { return proto.CompactTextString(m) } -func (*InteractionReactionsForEmoji_Request) ProtoMessage() {} -func (*InteractionReactionsForEmoji_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{66, 0} -} - -func (m *InteractionReactionsForEmoji_Request) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_InteractionReactionsForEmoji_Request.Unmarshal(m, b) -} - -func (m *InteractionReactionsForEmoji_Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_InteractionReactionsForEmoji_Request.Marshal(b, m, deterministic) -} - -func (m *InteractionReactionsForEmoji_Request) XXX_Merge(src proto.Message) { - xxx_messageInfo_InteractionReactionsForEmoji_Request.Merge(m, src) -} - -func (m *InteractionReactionsForEmoji_Request) XXX_Size() int { - return xxx_messageInfo_InteractionReactionsForEmoji_Request.Size(m) -} - -func (m *InteractionReactionsForEmoji_Request) XXX_DiscardUnknown() { - xxx_messageInfo_InteractionReactionsForEmoji_Request.DiscardUnknown(m) -} - -var xxx_messageInfo_InteractionReactionsForEmoji_Request proto.InternalMessageInfo - -func (m *InteractionReactionsForEmoji_Request) GetInteractionCID() string { - if m != nil { - return m.InteractionCID - } - return "" -} - -func (m *InteractionReactionsForEmoji_Request) GetEmoji() string { - if m != nil { - return m.Emoji - } - return "" -} - -type InteractionReactionsForEmoji_Reply struct { - Reactions []*Reaction `protobuf:"bytes,1,rep,name=reactions,proto3" json:"reactions,omitempty"` -} - -func (m *InteractionReactionsForEmoji_Reply) Reset() { *m = InteractionReactionsForEmoji_Reply{} } -func (m *InteractionReactionsForEmoji_Reply) String() string { return proto.CompactTextString(m) } -func (*InteractionReactionsForEmoji_Reply) ProtoMessage() {} -func (*InteractionReactionsForEmoji_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_0eab5f5532ffdd8b, []int{66, 1} -} - -func (m *InteractionReactionsForEmoji_Reply) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_InteractionReactionsForEmoji_Reply.Unmarshal(m, b) -} - -func (m *InteractionReactionsForEmoji_Reply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_InteractionReactionsForEmoji_Reply.Marshal(b, m, deterministic) -} - -func (m *InteractionReactionsForEmoji_Reply) XXX_Merge(src proto.Message) { - xxx_messageInfo_InteractionReactionsForEmoji_Reply.Merge(m, src) -} - -func (m *InteractionReactionsForEmoji_Reply) XXX_Size() int { - return xxx_messageInfo_InteractionReactionsForEmoji_Reply.Size(m) -} - -func (m *InteractionReactionsForEmoji_Reply) XXX_DiscardUnknown() { - xxx_messageInfo_InteractionReactionsForEmoji_Reply.DiscardUnknown(m) -} - -var xxx_messageInfo_InteractionReactionsForEmoji_Reply proto.InternalMessageInfo - -func (m *InteractionReactionsForEmoji_Reply) GetReactions() []*Reaction { - if m != nil { - return m.Reactions - } - return nil -} - func init() { - proto.RegisterEnum("berty.messenger.v1.MediaMetadataType", MediaMetadataType_name, MediaMetadataType_value) proto.RegisterEnum("berty.messenger.v1.BertyLink_Kind", BertyLink_Kind_name, BertyLink_Kind_value) proto.RegisterEnum("berty.messenger.v1.AppMessage_Type", AppMessage_Type_name, AppMessage_Type_value) - proto.RegisterEnum("berty.messenger.v1.Media_State", Media_State_name, Media_State_value) proto.RegisterEnum("berty.messenger.v1.Contact_State", Contact_State_name, Contact_State_value) proto.RegisterEnum("berty.messenger.v1.Conversation_Type", Conversation_Type_name, Conversation_Type_value) proto.RegisterEnum("berty.messenger.v1.StreamEvent_Type", StreamEvent_Type_name, StreamEvent_Type_value) @@ -8881,20 +7440,14 @@ func init() { proto.RegisterType((*SendContactRequest)(nil), "berty.messenger.v1.SendContactRequest") proto.RegisterType((*SendContactRequest_Request)(nil), "berty.messenger.v1.SendContactRequest.Request") proto.RegisterType((*SendContactRequest_Reply)(nil), "berty.messenger.v1.SendContactRequest.Reply") - proto.RegisterType((*SendReplyOptions)(nil), "berty.messenger.v1.SendReplyOptions") - proto.RegisterType((*SendReplyOptions_Request)(nil), "berty.messenger.v1.SendReplyOptions.Request") - proto.RegisterType((*SendReplyOptions_Reply)(nil), "berty.messenger.v1.SendReplyOptions.Reply") proto.RegisterType((*BertyID)(nil), "berty.messenger.v1.BertyID") proto.RegisterType((*BertyGroup)(nil), "berty.messenger.v1.BertyGroup") proto.RegisterType((*AppMessage)(nil), "berty.messenger.v1.AppMessage") proto.RegisterType((*AppMessage_UserMessage)(nil), "berty.messenger.v1.AppMessage.UserMessage") - proto.RegisterType((*AppMessage_UserReaction)(nil), "berty.messenger.v1.AppMessage.UserReaction") proto.RegisterType((*AppMessage_GroupInvitation)(nil), "berty.messenger.v1.AppMessage.GroupInvitation") proto.RegisterType((*AppMessage_SetGroupInfo)(nil), "berty.messenger.v1.AppMessage.SetGroupInfo") proto.RegisterType((*AppMessage_SetUserInfo)(nil), "berty.messenger.v1.AppMessage.SetUserInfo") proto.RegisterType((*AppMessage_Acknowledge)(nil), "berty.messenger.v1.AppMessage.Acknowledge") - proto.RegisterType((*AppMessage_ReplyOptions)(nil), "berty.messenger.v1.AppMessage.ReplyOptions") - proto.RegisterType((*ReplyOption)(nil), "berty.messenger.v1.ReplyOption") proto.RegisterType((*SystemInfo)(nil), "berty.messenger.v1.SystemInfo") proto.RegisterType((*SystemInfo_Request)(nil), "berty.messenger.v1.SystemInfo.Request") proto.RegisterType((*SystemInfo_Reply)(nil), "berty.messenger.v1.SystemInfo.Reply") @@ -8907,8 +7460,6 @@ func init() { proto.RegisterType((*ServiceToken)(nil), "berty.messenger.v1.ServiceToken") proto.RegisterType((*MetadataEvent)(nil), "berty.messenger.v1.MetadataEvent") proto.RegisterType((*Interaction)(nil), "berty.messenger.v1.Interaction") - proto.RegisterType((*Interaction_ReactionView)(nil), "berty.messenger.v1.Interaction.ReactionView") - proto.RegisterType((*Media)(nil), "berty.messenger.v1.Media") proto.RegisterType((*Contact)(nil), "berty.messenger.v1.Contact") proto.RegisterType((*Conversation)(nil), "berty.messenger.v1.Conversation") proto.RegisterType((*ConversationReplicationInfo)(nil), "berty.messenger.v1.ConversationReplicationInfo") @@ -8926,7 +7477,6 @@ func init() { proto.RegisterType((*StreamEvent_MemberUpdated)(nil), "berty.messenger.v1.StreamEvent.MemberUpdated") proto.RegisterType((*StreamEvent_DeviceUpdated)(nil), "berty.messenger.v1.StreamEvent.DeviceUpdated") proto.RegisterType((*StreamEvent_ListEnded)(nil), "berty.messenger.v1.StreamEvent.ListEnded") - proto.RegisterType((*StreamEvent_MediaUpdated)(nil), "berty.messenger.v1.StreamEvent.MediaUpdated") proto.RegisterType((*StreamEvent_ConversationPartialLoad)(nil), "berty.messenger.v1.StreamEvent.ConversationPartialLoad") proto.RegisterType((*StreamEvent_Notified)(nil), "berty.messenger.v1.StreamEvent.Notified") proto.RegisterType((*StreamEvent_Notified_Basic)(nil), "berty.messenger.v1.StreamEvent.Notified.Basic") @@ -8979,20 +7529,6 @@ func init() { proto.RegisterType((*InstanceExportData_Reply)(nil), "berty.messenger.v1.InstanceExportData.Reply") proto.RegisterType((*LocalDatabaseState)(nil), "berty.messenger.v1.LocalDatabaseState") proto.RegisterType((*LocalConversationState)(nil), "berty.messenger.v1.LocalConversationState") - proto.RegisterType((*MediaPrepare)(nil), "berty.messenger.v1.MediaPrepare") - proto.RegisterType((*MediaPrepare_Request)(nil), "berty.messenger.v1.MediaPrepare.Request") - proto.RegisterType((*MediaPrepare_Reply)(nil), "berty.messenger.v1.MediaPrepare.Reply") - proto.RegisterType((*MediaRetrieve)(nil), "berty.messenger.v1.MediaRetrieve") - proto.RegisterType((*MediaRetrieve_Request)(nil), "berty.messenger.v1.MediaRetrieve.Request") - proto.RegisterType((*MediaRetrieve_Reply)(nil), "berty.messenger.v1.MediaRetrieve.Reply") - proto.RegisterType((*MediaGetRelated)(nil), "berty.messenger.v1.MediaGetRelated") - proto.RegisterType((*MediaGetRelated_Request)(nil), "berty.messenger.v1.MediaGetRelated.Request") - proto.RegisterType((*MediaGetRelated_Reply)(nil), "berty.messenger.v1.MediaGetRelated.Reply") - proto.RegisterType((*MediaMetadata)(nil), "berty.messenger.v1.MediaMetadata") - proto.RegisterType((*MediaMetadataItem)(nil), "berty.messenger.v1.MediaMetadataItem") - proto.RegisterType((*MediaMetadataKV)(nil), "berty.messenger.v1.MediaMetadataKV") - proto.RegisterType((*AudioPreview)(nil), "berty.messenger.v1.AudioPreview") - proto.RegisterType((*Reaction)(nil), "berty.messenger.v1.Reaction") proto.RegisterType((*MessageSearch)(nil), "berty.messenger.v1.MessageSearch") proto.RegisterType((*MessageSearch_Request)(nil), "berty.messenger.v1.MessageSearch.Request") proto.RegisterType((*MessageSearch_Reply)(nil), "berty.messenger.v1.MessageSearch.Reply") @@ -9018,430 +7554,358 @@ func init() { proto.RegisterType((*PushTokenSharedForConversation)(nil), "berty.messenger.v1.PushTokenSharedForConversation") proto.RegisterType((*PushTokenSharedForConversation_Request)(nil), "berty.messenger.v1.PushTokenSharedForConversation.Request") proto.RegisterType((*PushTokenSharedForConversation_Reply)(nil), "berty.messenger.v1.PushTokenSharedForConversation.Reply") - proto.RegisterType((*InteractionReactionsForEmoji)(nil), "berty.messenger.v1.InteractionReactionsForEmoji") - proto.RegisterType((*InteractionReactionsForEmoji_Request)(nil), "berty.messenger.v1.InteractionReactionsForEmoji.Request") - proto.RegisterType((*InteractionReactionsForEmoji_Reply)(nil), "berty.messenger.v1.InteractionReactionsForEmoji.Reply") } func init() { proto.RegisterFile("messengertypes.proto", fileDescriptor_0eab5f5532ffdd8b) } var fileDescriptor_0eab5f5532ffdd8b = []byte{ - // 6631 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3c, 0x5b, 0x6c, 0x1c, 0x47, - 0x72, 0x9e, 0x7d, 0x70, 0x77, 0x6b, 0x77, 0xc9, 0x61, 0x8b, 0xa2, 0x56, 0xa3, 0xc7, 0x5a, 0x23, - 0xcb, 0x96, 0x64, 0x8b, 0xb2, 0x75, 0xb2, 0x6c, 0x49, 0xb9, 0x38, 0x5c, 0x52, 0xb6, 0x69, 0x92, - 0x12, 0x33, 0x94, 0x6c, 0xc7, 0x97, 0xcb, 0x66, 0xb8, 0xd3, 0x5c, 0xce, 0x71, 0x77, 0x66, 0x35, - 0x33, 0x4b, 0x6a, 0x0f, 0x09, 0x82, 0x4b, 0x02, 0x04, 0x48, 0x90, 0x83, 0x81, 0xbb, 0x03, 0xee, - 0x02, 0xe4, 0xff, 0x80, 0x20, 0x77, 0x97, 0x00, 0x97, 0xe4, 0xf7, 0x92, 0x03, 0xf2, 0x17, 0x24, - 0xf9, 0x48, 0x2e, 0x3f, 0xfb, 0x41, 0xff, 0x04, 0xf9, 0xd4, 0x77, 0x0e, 0x09, 0xfa, 0x35, 0xd3, - 0xb3, 0x3b, 0xfb, 0x10, 0x25, 0x23, 0xf9, 0xda, 0xed, 0xea, 0xea, 0xea, 0xea, 0xee, 0xea, 0xea, - 0xaa, 0xea, 0xea, 0x81, 0x85, 0x36, 0xf6, 0x7d, 0xec, 0x34, 0xb1, 0x17, 0xf4, 0x3a, 0xd8, 0x5f, - 0xea, 0x78, 0x6e, 0xe0, 0x22, 0xb4, 0x43, 0xca, 0x4b, 0x61, 0xdd, 0xd2, 0xc1, 0x5b, 0xda, 0x42, - 0xd3, 0x6d, 0xba, 0xb4, 0xfa, 0x3a, 0xf9, 0xc7, 0x30, 0xb5, 0x13, 0xf4, 0xa7, 0xe1, 0xb6, 0xa4, - 0xe6, 0xfa, 0xef, 0xa7, 0xe0, 0xec, 0x96, 0xd9, 0xb4, 0x1d, 0x33, 0xc0, 0xd6, 0x9a, 0x13, 0x60, - 0xcf, 0x6c, 0x04, 0xb6, 0xeb, 0xf8, 0x0f, 0x3a, 0xf4, 0x07, 0x2d, 0xc2, 0x8c, 0xd9, 0x76, 0xbb, - 0x4e, 0x50, 0x51, 0x5e, 0x56, 0x2e, 0x67, 0x0d, 0x5e, 0x42, 0x17, 0x21, 0xe7, 0xe1, 0xdd, 0x7a, - 0xc3, 0xb6, 0x2a, 0xa9, 0x97, 0x95, 0xcb, 0x85, 0x1a, 0x1c, 0xf5, 0xab, 0x33, 0x06, 0xde, 0x5d, - 0x59, 0x5b, 0x35, 0x66, 0x3c, 0xbc, 0xbb, 0x62, 0x5b, 0xe8, 0x2e, 0xcc, 0x35, 0x5c, 0xe7, 0x00, - 0x7b, 0xbe, 0x49, 0xa8, 0xd5, 0x3b, 0xfb, 0x95, 0x34, 0x45, 0x46, 0x47, 0xfd, 0xea, 0xec, 0x8a, - 0x54, 0xb5, 0xb5, 0x6e, 0xcc, 0xca, 0xa8, 0x5b, 0xfb, 0xe8, 0x32, 0xa8, 0x6e, 0xcb, 0xc2, 0x7e, - 0x50, 0x0f, 0xdc, 0xba, 0x83, 0x0f, 0xb1, 0x1f, 0x54, 0x32, 0x2f, 0x2b, 0x97, 0xf3, 0xc6, 0x2c, - 0x83, 0x3f, 0x74, 0xef, 0x53, 0x28, 0xba, 0x04, 0xb3, 0xf8, 0x49, 0xa3, 0xd5, 0xb5, 0x70, 0xbd, - 0x8d, 0x2d, 0xdb, 0xf4, 0x2b, 0x59, 0x8a, 0x57, 0xe6, 0xd0, 0x4d, 0x0a, 0x44, 0xa7, 0x20, 0xe7, - 0xb8, 0xf5, 0x9d, 0x6e, 0x6b, 0xbf, 0x32, 0x43, 0xeb, 0x67, 0x1c, 0xb7, 0xd6, 0x6d, 0xed, 0xeb, - 0xf7, 0x41, 0x95, 0x79, 0x79, 0xd0, 0xc1, 0x8e, 0xf6, 0x16, 0xe4, 0x0c, 0xfc, 0xb8, 0x4b, 0xc8, - 0xbf, 0x0a, 0xf9, 0xa6, 0xe7, 0x76, 0x3b, 0x84, 0x7d, 0x85, 0xb2, 0x5f, 0x3c, 0xea, 0x57, 0x73, - 0x1f, 0x10, 0xd8, 0xd6, 0xba, 0x91, 0xa3, 0x95, 0x5b, 0xfb, 0x5a, 0x0e, 0xb2, 0x06, 0xee, 0xb4, - 0x7a, 0xfa, 0x03, 0x98, 0x97, 0xe9, 0xad, 0xb4, 0x5c, 0x1f, 0x3f, 0x17, 0x41, 0x2f, 0xce, 0xe0, - 0x86, 0x6b, 0x5a, 0xda, 0xa3, 0x88, 0xde, 0x47, 0x90, 0x73, 0xd9, 0x72, 0x51, 0x72, 0xc5, 0x1b, - 0x6f, 0x2e, 0x0d, 0x4b, 0xc5, 0xd2, 0xb8, 0x65, 0x36, 0x04, 0x81, 0xa8, 0xcf, 0xbf, 0x50, 0xe2, - 0x9d, 0x6e, 0x76, 0x03, 0xac, 0xfd, 0xa9, 0xf2, 0xcc, 0xa3, 0x40, 0x55, 0x28, 0xb6, 0xbb, 0x01, - 0xb6, 0xea, 0x5d, 0x27, 0xb0, 0x5b, 0x54, 0x5a, 0xd2, 0x06, 0x50, 0xd0, 0x23, 0x02, 0x21, 0x22, - 0xd6, 0x75, 0x48, 0x99, 0x0a, 0x47, 0xde, 0xe0, 0x25, 0x74, 0x01, 0x4a, 0xe4, 0xb7, 0xbe, 0xeb, - 0x7a, 0xf8, 0x00, 0x7b, 0x7c, 0xf1, 0x29, 0xb1, 0xf7, 0x19, 0x28, 0xe2, 0xf6, 0x5b, 0x0a, 0xe4, - 0xef, 0x35, 0xf6, 0xdc, 0x87, 0xd8, 0x0f, 0xb4, 0x4f, 0x23, 0x26, 0x17, 0x20, 0x6b, 0xe1, 0x96, - 0xd9, 0xa3, 0x1c, 0x66, 0x0c, 0x56, 0x40, 0x08, 0x32, 0xb8, 0xb1, 0xe7, 0x32, 0xc9, 0x35, 0xe8, - 0x7f, 0x74, 0x11, 0xca, 0x81, 0x67, 0x37, 0x9b, 0xd8, 0xab, 0x63, 0xcf, 0x73, 0x3d, 0xce, 0x4c, - 0x89, 0x03, 0xef, 0x11, 0x98, 0x76, 0x86, 0xf7, 0x17, 0x52, 0x50, 0x22, 0x0a, 0xfa, 0x63, 0x98, - 0x25, 0x2c, 0xac, 0x76, 0x3b, 0x2d, 0xfc, 0x84, 0x32, 0x52, 0x8b, 0x18, 0xf9, 0x72, 0xba, 0xfc, - 0x6e, 0x0a, 0x2a, 0x6b, 0x8e, 0x1f, 0x98, 0x4e, 0x03, 0x6f, 0xef, 0x99, 0x1e, 0x36, 0x77, 0x5a, - 0xb8, 0x46, 0xd6, 0x7e, 0x6d, 0x55, 0xdb, 0x89, 0x4d, 0x83, 0x87, 0x7d, 0xcc, 0x36, 0x71, 0xde, - 0x60, 0x05, 0x32, 0xc1, 0x96, 0xed, 0x77, 0x5a, 0x66, 0xaf, 0xee, 0x98, 0x6d, 0xcc, 0x79, 0x2b, - 0x72, 0xd8, 0x7d, 0xb3, 0x8d, 0xd1, 0x79, 0x80, 0x8e, 0xe9, 0xfb, 0x9d, 0x3d, 0xcf, 0xf4, 0xd9, - 0xfa, 0x94, 0x0c, 0x09, 0xa2, 0x7d, 0x47, 0x11, 0xec, 0xbd, 0x05, 0x99, 0x96, 0xed, 0xec, 0x73, - 0x09, 0x3c, 0x97, 0x24, 0x81, 0x94, 0xb1, 0x0d, 0xdb, 0xd9, 0x37, 0x28, 0x2a, 0xba, 0x01, 0x25, - 0x9b, 0xc8, 0xa2, 0x63, 0xb6, 0xea, 0x5d, 0xaf, 0xc5, 0x15, 0xc9, 0xdc, 0x51, 0xbf, 0x5a, 0x5c, - 0xe3, 0xf0, 0x47, 0xc6, 0x86, 0x51, 0x14, 0x48, 0x8f, 0xbc, 0x16, 0xd1, 0x3b, 0x87, 0x78, 0x87, - 0xa2, 0xa7, 0x23, 0xbd, 0xf3, 0x09, 0xde, 0x21, 0x98, 0x33, 0x87, 0x78, 0xe7, 0x91, 0xd7, 0xd2, - 0x7f, 0xa9, 0xc0, 0x89, 0xf8, 0x74, 0x50, 0xa9, 0xd4, 0xb6, 0x46, 0x4b, 0x6f, 0x69, 0x84, 0xf4, - 0x9e, 0x03, 0x60, 0x78, 0xd2, 0x0c, 0x15, 0x28, 0x84, 0xcc, 0xcf, 0xff, 0xd3, 0xf1, 0xef, 0xc2, - 0xa9, 0x55, 0x7c, 0x40, 0x67, 0x40, 0x48, 0x87, 0x10, 0x8a, 0xda, 0xf3, 0x0b, 0x45, 0xb4, 0xeb, - 0xde, 0x81, 0x32, 0xe9, 0x27, 0xf0, 0xb0, 0xd9, 0xde, 0x70, 0x9b, 0xbe, 0x56, 0x08, 0xa9, 0xc7, - 0xe4, 0xb6, 0x65, 0x3b, 0x58, 0xc8, 0x2d, 0xf9, 0xaf, 0xff, 0xb1, 0x02, 0xe5, 0x2d, 0xd3, 0xf3, - 0xf1, 0x2a, 0xc6, 0x1d, 0x32, 0x23, 0xda, 0x57, 0x63, 0x5b, 0x25, 0x9c, 0xc9, 0x02, 0x9f, 0xaa, - 0xb8, 0x1c, 0xa6, 0x86, 0xe4, 0xf0, 0xce, 0xf1, 0x97, 0x41, 0xff, 0x41, 0x01, 0x0a, 0x21, 0x0c, - 0xdd, 0x82, 0xcc, 0xbe, 0xed, 0x58, 0x94, 0xc0, 0xec, 0x0d, 0x7d, 0x2c, 0x81, 0xa5, 0x75, 0xdb, - 0xb1, 0x0c, 0x8a, 0x8f, 0x56, 0x20, 0x4f, 0x51, 0xeb, 0xfc, 0x44, 0x2c, 0xde, 0x38, 0x33, 0xb2, - 0xed, 0xda, 0x2a, 0x93, 0x36, 0x5e, 0x30, 0x72, 0x14, 0x71, 0xcd, 0x42, 0xef, 0x41, 0x91, 0x11, - 0xa1, 0x12, 0x46, 0x57, 0xb8, 0x78, 0xe3, 0xfc, 0x48, 0x3a, 0x54, 0x5a, 0x0d, 0xd8, 0x09, 0xff, - 0xa3, 0xdf, 0x80, 0x79, 0x46, 0x80, 0x20, 0x9b, 0x4d, 0x5c, 0xf7, 0xf0, 0x2e, 0x3d, 0x0d, 0x8b, - 0x37, 0xae, 0x8d, 0x1f, 0x0a, 0xfd, 0xb7, 0xc9, 0x5a, 0x19, 0x78, 0xd7, 0x98, 0xdb, 0x89, 0x03, - 0xd0, 0x3d, 0x28, 0x60, 0xa7, 0xe1, 0xf5, 0x3a, 0x01, 0xb6, 0xa8, 0x2e, 0x2e, 0xde, 0x78, 0x6d, - 0x3c, 0xc9, 0x7b, 0x02, 0xdd, 0x88, 0x5a, 0x6a, 0x3f, 0xcc, 0x40, 0x21, 0xac, 0x38, 0xf6, 0x6c, - 0x2f, 0x40, 0xd6, 0x71, 0x9d, 0x86, 0x10, 0x05, 0x56, 0x18, 0x92, 0xdd, 0xf4, 0xb0, 0x42, 0xd3, - 0x20, 0xdf, 0xd8, 0xc3, 0x8d, 0x7d, 0xbf, 0xdb, 0xa6, 0x83, 0x28, 0x19, 0x61, 0x19, 0xad, 0xc0, - 0xf9, 0x86, 0xeb, 0x04, 0x66, 0x23, 0xa8, 0x77, 0xba, 0x3b, 0x2d, 0xbb, 0x51, 0xf7, 0xb0, 0x63, - 0xe1, 0x6f, 0x1e, 0xb8, 0x5d, 0xbf, 0xee, 0x63, 0x6c, 0x55, 0x80, 0xb6, 0x38, 0xc3, 0xb1, 0xb6, - 0x28, 0x92, 0x11, 0xe2, 0x6c, 0x63, 0x6c, 0xa1, 0x1a, 0x20, 0x41, 0xc4, 0x6c, 0x34, 0x88, 0xad, - 0x44, 0x54, 0x4c, 0x91, 0xaa, 0x98, 0x85, 0xa3, 0x7e, 0x95, 0x1c, 0xaa, 0xa4, 0x76, 0x99, 0x55, - 0x6e, 0xad, 0x1b, 0x6a, 0x23, 0x0e, 0xa1, 0xa6, 0x0f, 0x57, 0x4e, 0x8c, 0x8d, 0x7d, 0xdc, 0xab, - 0x2c, 0xd0, 0xae, 0x67, 0x99, 0x5e, 0xa2, 0xe0, 0x75, 0xdc, 0x23, 0x23, 0x66, 0x98, 0x3e, 0x6e, - 0x78, 0x38, 0xa8, 0x9c, 0xa4, 0x58, 0x45, 0x0a, 0xdb, 0xa6, 0xa0, 0x88, 0x18, 0x43, 0xa9, 0xfb, - 0x76, 0xb3, 0xb2, 0x28, 0x11, 0x63, 0x68, 0xdb, 0x76, 0x13, 0xdd, 0x15, 0xba, 0x8e, 0x58, 0x88, - 0x95, 0x53, 0x74, 0x49, 0xce, 0xf2, 0x25, 0x11, 0xc6, 0x23, 0x59, 0x11, 0x2a, 0x6a, 0x0f, 0x7b, - 0x1d, 0xcc, 0x35, 0x21, 0xf9, 0x8b, 0x5e, 0x81, 0x59, 0xde, 0x8d, 0xdd, 0x74, 0x08, 0xe3, 0x95, - 0x0a, 0xed, 0x84, 0xf1, 0xb7, 0x6d, 0x37, 0x9d, 0xad, 0xee, 0x0e, 0x7a, 0x1d, 0x10, 0xc3, 0x22, - 0x3b, 0x8f, 0x8c, 0x8b, 0xb2, 0x73, 0x9a, 0x62, 0xce, 0xd1, 0x1a, 0xb2, 0xd2, 0xeb, 0xb8, 0xb7, - 0x6d, 0x37, 0xb5, 0xef, 0x29, 0x30, 0x37, 0x20, 0x96, 0xe8, 0x0d, 0x00, 0x31, 0xad, 0xb6, 0xc5, - 0xed, 0x8e, 0xf2, 0x51, 0xbf, 0x5a, 0xe0, 0xb3, 0xb7, 0xb6, 0x6a, 0x14, 0x38, 0xc2, 0x9a, 0x15, - 0xd3, 0xf2, 0xa9, 0x31, 0x36, 0xca, 0x1b, 0x00, 0x62, 0xc3, 0xd8, 0x16, 0x57, 0xac, 0x94, 0x2a, - 0xef, 0x99, 0x50, 0xe5, 0x08, 0x6b, 0x96, 0x6e, 0x43, 0x86, 0x88, 0x22, 0x9a, 0x83, 0xe2, 0x23, - 0x67, 0xdf, 0x71, 0x0f, 0x1d, 0x52, 0x54, 0x5f, 0x42, 0xa7, 0xe0, 0x04, 0x5f, 0xdd, 0x35, 0xe7, - 0xc0, 0x0e, 0xf0, 0xc7, 0x6f, 0xd1, 0x0a, 0x85, 0x60, 0xd2, 0x3e, 0x39, 0x20, 0x85, 0x4e, 0xc0, - 0x5c, 0xb8, 0x09, 0x38, 0x30, 0x8d, 0xe6, 0xa1, 0xcc, 0xfb, 0xe3, 0xa0, 0x8c, 0xfe, 0x97, 0x0a, - 0xa0, 0x6d, 0xec, 0x58, 0x9c, 0xac, 0x50, 0xae, 0xb2, 0x1d, 0x26, 0x2b, 0x1e, 0xe5, 0xb8, 0x8a, - 0x47, 0x83, 0x7c, 0x1b, 0x07, 0xa6, 0x65, 0x06, 0x26, 0xdf, 0x52, 0x61, 0x99, 0xc8, 0x98, 0x7b, - 0xe8, 0xd4, 0xc3, 0x7a, 0x66, 0x05, 0x14, 0xdd, 0x43, 0x67, 0x93, 0x83, 0xa2, 0x13, 0xe1, 0x7b, - 0x0a, 0xa8, 0x84, 0x5f, 0x5a, 0xe2, 0xc6, 0xa5, 0xf6, 0xe4, 0xd9, 0x8f, 0xdd, 0x7b, 0x91, 0x49, - 0xcb, 0x94, 0xe9, 0xeb, 0x49, 0x63, 0x5a, 0xee, 0x74, 0xf8, 0x84, 0x2d, 0xc9, 0x1d, 0x26, 0x58, - 0xb3, 0x9f, 0x2b, 0x20, 0x06, 0x8d, 0x6e, 0xc2, 0xe2, 0x88, 0xed, 0x4d, 0x39, 0x32, 0x16, 0x3a, - 0x49, 0xfb, 0x5a, 0x12, 0x3c, 0x2e, 0x4c, 0xa5, 0x98, 0xe0, 0x6d, 0xad, 0x87, 0x82, 0xb7, 0xb5, - 0x3f, 0x85, 0x26, 0xd2, 0xeb, 0x00, 0x91, 0x12, 0x47, 0x4b, 0x90, 0x65, 0x3a, 0x9f, 0x2d, 0x61, - 0x65, 0xd4, 0xb6, 0x33, 0x18, 0xda, 0x14, 0xc7, 0xb4, 0xfe, 0xe3, 0x19, 0x80, 0x68, 0x86, 0xd0, - 0x3b, 0x90, 0xa1, 0xfb, 0x9a, 0xa9, 0xda, 0x8b, 0x13, 0xe6, 0x93, 0x6e, 0x6f, 0xda, 0x00, 0x55, - 0x20, 0xd7, 0x31, 0x7b, 0x2d, 0xd7, 0xb4, 0xb8, 0x68, 0x88, 0x22, 0xba, 0x02, 0x05, 0x1f, 0x3b, - 0x41, 0xdd, 0x32, 0xb9, 0xf1, 0x9e, 0xae, 0x95, 0xfe, 0xab, 0x5f, 0xcd, 0x13, 0xe0, 0xaa, 0x19, - 0x60, 0x23, 0xfc, 0x87, 0xde, 0x82, 0x19, 0xee, 0x9b, 0x65, 0x5e, 0x4e, 0x5f, 0x2e, 0xde, 0x38, - 0x9d, 0xd4, 0x3f, 0x75, 0xd4, 0x0c, 0x8e, 0x48, 0x66, 0x3c, 0x30, 0xbd, 0x26, 0x0e, 0xa8, 0x97, - 0x99, 0x8d, 0x36, 0xe5, 0x43, 0x0a, 0x25, 0x8e, 0x66, 0x81, 0x21, 0xac, 0xd8, 0x96, 0x76, 0x01, - 0x8a, 0x8f, 0x7c, 0xec, 0x89, 0xd1, 0x22, 0xc8, 0xec, 0xb8, 0x56, 0x4f, 0x18, 0x11, 0xe4, 0xbf, - 0x76, 0x07, 0x4a, 0x04, 0xc5, 0xc0, 0xcc, 0xf9, 0x21, 0x87, 0x88, 0x1f, 0x10, 0xd6, 0xb9, 0x01, - 0x44, 0x0b, 0x04, 0x8a, 0xdb, 0xee, 0x37, 0x6c, 0x3e, 0xa5, 0xac, 0xa0, 0x5d, 0x82, 0x39, 0x3a, - 0xff, 0x74, 0x63, 0x53, 0x87, 0x28, 0xb4, 0x53, 0x52, 0x91, 0x9d, 0xa2, 0x6d, 0x41, 0x69, 0x1b, - 0x07, 0x1c, 0x73, 0xd7, 0x1d, 0x5a, 0x26, 0x65, 0xf8, 0x44, 0x3a, 0x07, 0x60, 0x1e, 0x98, 0x81, - 0xe9, 0x45, 0xce, 0xb4, 0x51, 0x60, 0x10, 0x32, 0xae, 0xdf, 0x82, 0xe2, 0x36, 0x0e, 0x08, 0xdf, - 0xd3, 0x12, 0x7c, 0x63, 0x98, 0x20, 0x97, 0x54, 0x46, 0x94, 0xaa, 0xc8, 0x90, 0x7e, 0x19, 0x8a, - 0xcb, 0x0d, 0xa2, 0xc4, 0x5a, 0xd8, 0x6a, 0x62, 0x6d, 0x0d, 0x4a, 0xf2, 0x56, 0x42, 0xb7, 0x65, - 0xdf, 0x92, 0x2c, 0x5c, 0x35, 0x69, 0xe1, 0xa4, 0x26, 0xe1, 0xe6, 0xd3, 0x7f, 0xac, 0x40, 0x86, - 0x1e, 0x0d, 0x65, 0x28, 0x3c, 0x72, 0x2c, 0xbc, 0x6b, 0x3b, 0x98, 0x68, 0xc9, 0x13, 0x30, 0x47, - 0xc0, 0xd2, 0x6a, 0xa9, 0x0a, 0x5a, 0x00, 0x55, 0x00, 0xc5, 0xfa, 0xa8, 0x29, 0xa2, 0x50, 0x09, - 0x74, 0x60, 0xe6, 0xd5, 0xb4, 0x40, 0x97, 0xe7, 0x5a, 0xcd, 0x08, 0xca, 0xd2, 0x7c, 0xa9, 0x59, - 0x01, 0x94, 0x06, 0xa9, 0xce, 0x88, 0xf6, 0xf2, 0x50, 0xd5, 0x9c, 0xbe, 0x0c, 0x45, 0x09, 0x42, - 0x04, 0x9f, 0xcf, 0x2b, 0x9f, 0x66, 0x51, 0x1c, 0xdc, 0x12, 0x85, 0x70, 0x4b, 0xe8, 0x7f, 0x37, - 0x03, 0xb0, 0xdd, 0xf3, 0x03, 0xdc, 0x26, 0xdd, 0xcb, 0x06, 0xf1, 0xe7, 0xa1, 0xab, 0xf0, 0x1e, - 0xe4, 0xc5, 0xbe, 0xe6, 0xdb, 0xfd, 0x62, 0xc2, 0x76, 0x8f, 0xa8, 0xb0, 0xe9, 0x35, 0xc2, 0x46, - 0xe8, 0x7d, 0x28, 0x84, 0xd3, 0xcf, 0xf5, 0xe3, 0xe5, 0xa4, 0x65, 0x91, 0x48, 0x6c, 0x0a, 0xb8, - 0x11, 0x35, 0xd5, 0xfe, 0x4d, 0x81, 0x42, 0x58, 0x81, 0xde, 0x83, 0x5c, 0xc7, 0x73, 0x1b, 0xd8, - 0x17, 0x61, 0x84, 0x4b, 0xe3, 0xb9, 0xda, 0x62, 0xc8, 0x86, 0x68, 0x45, 0x76, 0xce, 0xa1, 0xe9, - 0x51, 0x95, 0x9d, 0x26, 0x3b, 0x87, 0x16, 0xd0, 0x3b, 0x50, 0x11, 0x04, 0xea, 0xb6, 0x53, 0xf7, - 0xcd, 0x36, 0xae, 0x8b, 0x7e, 0x98, 0xc3, 0x7b, 0x52, 0xd4, 0xaf, 0x39, 0xdb, 0x66, 0x1b, 0x73, - 0xba, 0xe8, 0x36, 0xa4, 0xac, 0x1d, 0x6e, 0x69, 0x5e, 0x98, 0x30, 0xbc, 0xd5, 0x5a, 0x6d, 0xe6, - 0xa8, 0x5f, 0x4d, 0xad, 0xd6, 0x8c, 0x94, 0xb5, 0xa3, 0xfd, 0x75, 0x1a, 0x52, 0xab, 0x35, 0x72, - 0xaa, 0x71, 0x95, 0xcc, 0x86, 0x94, 0x36, 0xc2, 0x32, 0x35, 0x04, 0xd9, 0xa1, 0xea, 0xf3, 0x98, - 0x44, 0x58, 0x46, 0xaf, 0x40, 0x59, 0x0e, 0x46, 0x31, 0x3e, 0xd3, 0x46, 0x1c, 0x88, 0x74, 0xee, - 0xbe, 0xf1, 0x50, 0x0a, 0xe5, 0x34, 0x6d, 0xc4, 0x60, 0x44, 0x50, 0xda, 0xb8, 0xbd, 0x83, 0x3d, - 0x16, 0x93, 0x4a, 0x1b, 0xa2, 0x48, 0x85, 0x0b, 0x1f, 0xd8, 0x0d, 0xec, 0xd3, 0x68, 0x54, 0xda, - 0x10, 0x45, 0x74, 0x09, 0x66, 0x7d, 0xec, 0x91, 0xff, 0xf5, 0xc0, 0xdd, 0xc7, 0x8e, 0x5f, 0xc9, - 0xb1, 0xee, 0x39, 0xf4, 0x21, 0x05, 0xa2, 0x1a, 0x9c, 0x8b, 0x05, 0xd7, 0x3c, 0xdc, 0x69, 0xd9, - 0x0d, 0xf6, 0xdf, 0x76, 0x76, 0xdd, 0x4a, 0x9e, 0xb6, 0x3a, 0x23, 0x23, 0x19, 0x11, 0x0e, 0xd5, - 0x26, 0x67, 0xa1, 0xe0, 0x61, 0xc1, 0x7f, 0x81, 0xe2, 0x47, 0x00, 0xf4, 0x1a, 0xcc, 0x89, 0x43, - 0xbf, 0x8e, 0x0f, 0x30, 0x99, 0x45, 0xa0, 0x38, 0xb3, 0x02, 0x7c, 0x8f, 0x42, 0xd1, 0x62, 0xa8, - 0xdc, 0x8b, 0xb4, 0x3e, 0xd2, 0xe0, 0xc8, 0x27, 0x4e, 0xa8, 0x55, 0xef, 0x74, 0xfd, 0x3d, 0x31, - 0x9a, 0x12, 0xc5, 0x51, 0x59, 0xcd, 0x56, 0xd7, 0xdf, 0x63, 0x03, 0xd2, 0x3f, 0x8b, 0x07, 0x9c, - 0x3e, 0x72, 0x6d, 0xe7, 0x79, 0xdd, 0xc2, 0xf0, 0xfc, 0xff, 0x49, 0x16, 0x72, 0xfc, 0xa0, 0x46, - 0x37, 0x01, 0x24, 0xbb, 0x9a, 0x99, 0x90, 0x27, 0x9f, 0xf6, 0xab, 0xf3, 0x4d, 0xd7, 0x6b, 0xdf, - 0xd1, 0x3b, 0x9e, 0xdd, 0x36, 0xbd, 0xde, 0x3a, 0xee, 0xe9, 0x46, 0xa1, 0x23, 0x5b, 0xda, 0x93, - 0x82, 0x25, 0x82, 0xc3, 0xb4, 0xc4, 0xe1, 0xde, 0xd0, 0x62, 0x66, 0xa9, 0x1a, 0x7d, 0x39, 0x51, - 0xa0, 0xa5, 0x05, 0xae, 0x55, 0x9f, 0xf6, 0xab, 0x67, 0x18, 0x4b, 0xbb, 0xae, 0x87, 0xed, 0xa6, - 0xb3, 0x8e, 0x7b, 0x77, 0x42, 0x6b, 0x43, 0x1f, 0x94, 0x07, 0x0b, 0x74, 0x21, 0x02, 0xb8, 0xee, - 0xe0, 0x43, 0xe6, 0x43, 0xfa, 0x75, 0xb3, 0x1b, 0xb8, 0x6d, 0x33, 0xb0, 0x1b, 0x66, 0xab, 0xd5, - 0x63, 0x91, 0xcf, 0xda, 0xa9, 0xa7, 0xfd, 0xea, 0x09, 0x46, 0xdb, 0xc2, 0xbb, 0x66, 0xb7, 0x15, - 0xdc, 0x09, 0xbc, 0x2e, 0xd6, 0x8d, 0x6a, 0x48, 0xe2, 0x3e, 0x3e, 0xa4, 0xaa, 0xd5, 0x5f, 0x96, - 0xdb, 0xa3, 0x0f, 0x63, 0x87, 0x4b, 0x8e, 0x4e, 0xde, 0x95, 0xd8, 0xe1, 0xf2, 0xb4, 0x5f, 0xad, - 0x30, 0xd2, 0x0d, 0xb7, 0xd5, 0x6d, 0x3b, 0x77, 0x22, 0x7c, 0x5d, 0x3a, 0x78, 0xd0, 0x1d, 0xd0, - 0x08, 0x6b, 0x75, 0x2a, 0x07, 0x92, 0x80, 0xd4, 0x77, 0x5b, 0x66, 0x93, 0x0a, 0x6f, 0xde, 0x58, - 0x24, 0x18, 0x34, 0x8e, 0x11, 0xca, 0xc9, 0xfb, 0x2d, 0xb3, 0x89, 0xae, 0xc2, 0x3c, 0xdb, 0x2d, - 0x52, 0x3b, 0x2a, 0xbf, 0x25, 0x63, 0x8e, 0x55, 0x84, 0xf8, 0x44, 0x08, 0x65, 0x5c, 0x32, 0x69, - 0xd8, 0xe3, 0x9e, 0x9c, 0x1a, 0x21, 0x6f, 0x53, 0xf8, 0x60, 0xb4, 0xb2, 0x38, 0x14, 0xad, 0xbc, - 0x0d, 0xa7, 0xf7, 0x6c, 0x0b, 0x13, 0x55, 0x66, 0x76, 0x3a, 0x75, 0xc7, 0x0d, 0xec, 0x5d, 0xbe, - 0xa5, 0x98, 0x68, 0xe7, 0x8d, 0x45, 0x82, 0xb0, 0xe6, 0x2c, 0x77, 0x3a, 0xf7, 0xe5, 0x5a, 0xc2, - 0x09, 0x6d, 0x4a, 0xf9, 0xe8, 0x78, 0xf8, 0xc0, 0xc6, 0x87, 0x7e, 0xa5, 0x4c, 0xdb, 0xa8, 0xa4, - 0x86, 0xf0, 0xb1, 0xc5, 0xe1, 0xfa, 0x0f, 0x53, 0xc4, 0x96, 0x88, 0x56, 0x78, 0xc0, 0x02, 0x1d, - 0x76, 0x7d, 0xe2, 0x16, 0xe8, 0x5d, 0xc8, 0xb3, 0xe9, 0x0c, 0x6d, 0x80, 0x97, 0x89, 0xa5, 0x4d, - 0x49, 0xd1, 0x45, 0x4a, 0x10, 0xf7, 0x1c, 0x6d, 0xb1, 0x66, 0xa1, 0x0f, 0xa0, 0x14, 0x4a, 0x2d, - 0xb1, 0x19, 0x99, 0x47, 0xf4, 0xca, 0x51, 0xbf, 0x5a, 0x14, 0x2c, 0xf5, 0x3a, 0x38, 0x99, 0x48, - 0xd1, 0x8f, 0x30, 0xd0, 0x2a, 0x20, 0xb3, 0x1b, 0xec, 0x61, 0x27, 0x10, 0xaa, 0xa9, 0xeb, 0xb5, - 0xa8, 0xa6, 0x2c, 0xd4, 0x4e, 0x1e, 0xf5, 0xab, 0xf3, 0xcb, 0xb1, 0xda, 0x47, 0xc6, 0x86, 0x31, - 0x1f, 0x6f, 0xf0, 0xc8, 0x6b, 0x91, 0x6d, 0x8e, 0x9f, 0x74, 0x6c, 0x8f, 0x02, 0xb8, 0x22, 0x95, - 0x20, 0xfa, 0x7f, 0x2b, 0xc4, 0x73, 0x92, 0x54, 0x12, 0xba, 0x0d, 0xe9, 0x46, 0xe8, 0x1f, 0xbe, - 0x76, 0xd4, 0xaf, 0xa6, 0x99, 0x64, 0x9e, 0x1d, 0xe4, 0xf7, 0x2e, 0x17, 0x52, 0x2a, 0x9d, 0xa4, - 0x0d, 0xfa, 0x10, 0x4e, 0xc5, 0x2f, 0x2d, 0x22, 0x5d, 0xc1, 0xe6, 0x51, 0x7d, 0xda, 0xaf, 0x96, - 0x18, 0x1d, 0xdb, 0xb1, 0xf0, 0x13, 0xdd, 0x38, 0x19, 0xbb, 0xba, 0x08, 0x55, 0xc6, 0x06, 0x9c, - 0x88, 0xeb, 0xcf, 0x68, 0x32, 0x93, 0x1d, 0x6b, 0xca, 0x3b, 0xb5, 0x4b, 0xe6, 0x63, 0x1a, 0xf6, - 0xe1, 0x80, 0x19, 0x9e, 0x89, 0x99, 0xe1, 0xfa, 0x2f, 0x72, 0x50, 0x94, 0x82, 0xfa, 0xcf, 0x33, - 0xf8, 0x35, 0xee, 0x24, 0xa4, 0xa6, 0x76, 0x12, 0x12, 0xa6, 0x83, 0xb9, 0x0d, 0x57, 0x61, 0x9e, - 0x9d, 0x75, 0xf2, 0x0c, 0x52, 0x85, 0x61, 0xcc, 0xb1, 0x8a, 0x68, 0xa6, 0xe4, 0xfd, 0x1c, 0xe2, - 0x96, 0x18, 0xae, 0xd8, 0xa2, 0x02, 0xd7, 0x21, 0x87, 0x0d, 0x69, 0x4e, 0x75, 0x44, 0xf1, 0x86, - 0x96, 0xec, 0x49, 0x10, 0x8c, 0xda, 0x9d, 0xa7, 0xfd, 0xea, 0xad, 0x21, 0x1d, 0x1a, 0xd2, 0xba, - 0xeb, 0xe1, 0x5d, 0xec, 0x61, 0xa7, 0x81, 0xfd, 0x3b, 0x9b, 0x71, 0x96, 0x74, 0x83, 0xf7, 0x32, - 0x4e, 0x1e, 0xd2, 0xcf, 0x26, 0x0f, 0xab, 0x50, 0x92, 0x2b, 0xb8, 0x69, 0x93, 0x78, 0x12, 0xc8, - 0x07, 0xa1, 0x11, 0x6b, 0x25, 0xcb, 0x41, 0x36, 0xee, 0x8e, 0x9d, 0x82, 0x9c, 0xed, 0xd7, 0xdb, - 0xb6, 0x83, 0xc5, 0x05, 0x97, 0xed, 0x6f, 0xda, 0x0e, 0x46, 0xd7, 0x64, 0x3f, 0x8d, 0x1e, 0xf3, - 0x09, 0x4c, 0x47, 0xbe, 0x9a, 0x0e, 0x25, 0x33, 0xb2, 0x96, 0x59, 0xd4, 0x2b, 0x6f, 0xc4, 0x60, - 0xe8, 0x7e, 0xcc, 0x39, 0x2b, 0xd3, 0x89, 0xb8, 0x1e, 0x73, 0xce, 0x9e, 0xf6, 0xab, 0xe7, 0xa5, - 0x0e, 0x84, 0xac, 0x45, 0xad, 0x74, 0xc9, 0x7d, 0x93, 0xfc, 0xc3, 0xb9, 0x69, 0xfd, 0xc3, 0x4f, - 0x65, 0xe3, 0x45, 0xa5, 0xad, 0xde, 0x48, 0x6a, 0x25, 0x6d, 0x8d, 0x25, 0xe1, 0x5b, 0x7c, 0x6c, - 0xe3, 0xc3, 0x5a, 0xe9, 0x69, 0xbf, 0x9a, 0x67, 0x2c, 0x5e, 0xd3, 0x65, 0xc3, 0xe7, 0x3a, 0x2c, - 0xb8, 0xdd, 0xa0, 0xee, 0xee, 0xd6, 0xfd, 0xc0, 0xf5, 0xb0, 0x08, 0xa6, 0x56, 0xe6, 0xe9, 0x44, - 0xcc, 0xbb, 0xdd, 0xe0, 0xc1, 0xee, 0x36, 0xa9, 0xe1, 0x1b, 0x41, 0xfb, 0x84, 0x78, 0x4d, 0x11, - 0xe5, 0xc8, 0x87, 0x54, 0x24, 0x1f, 0x12, 0x9d, 0x81, 0x82, 0x7b, 0xe8, 0xd4, 0x99, 0xcf, 0x99, - 0xa2, 0xb4, 0xf2, 0xee, 0xa1, 0xb3, 0x2d, 0xdc, 0x4e, 0xaa, 0xba, 0xa9, 0x50, 0x65, 0x0c, 0x56, - 0xd0, 0x7f, 0x90, 0x81, 0x2c, 0x1d, 0xf5, 0xf3, 0x6c, 0xea, 0x33, 0x50, 0x68, 0xdb, 0x6d, 0xae, - 0xca, 0x99, 0xdd, 0x92, 0x27, 0x00, 0xaa, 0x56, 0x34, 0xc8, 0xef, 0xda, 0x2d, 0x2c, 0x45, 0x29, - 0xc2, 0xf2, 0x90, 0xcd, 0x93, 0x19, 0xb6, 0x79, 0x2e, 0x41, 0x68, 0x0c, 0xd6, 0x77, 0x7a, 0x01, - 0xb7, 0x66, 0x4b, 0x46, 0x59, 0x40, 0x6b, 0x04, 0x88, 0x76, 0x60, 0x4e, 0xb2, 0x8b, 0xa9, 0xcc, - 0x58, 0x74, 0x24, 0xb7, 0x8f, 0xfa, 0xd5, 0x59, 0x69, 0x85, 0xd8, 0xa0, 0x2e, 0x26, 0x08, 0xce, - 0x40, 0x7b, 0xdd, 0x98, 0x95, 0x20, 0x44, 0x84, 0xde, 0x16, 0xee, 0x7c, 0x93, 0x2a, 0xaf, 0xea, - 0x48, 0x09, 0x5a, 0xa2, 0x33, 0xce, 0xfd, 0x7d, 0xfd, 0x6f, 0x14, 0xc8, 0xb2, 0x25, 0x50, 0xa1, - 0x44, 0xff, 0xf0, 0xa0, 0x9e, 0xfa, 0x12, 0xaa, 0xc0, 0x02, 0x85, 0xdc, 0xc7, 0x07, 0xd8, 0x5b, - 0x75, 0x0f, 0x1d, 0xb2, 0xcf, 0xb0, 0xa5, 0x2a, 0xe8, 0x2c, 0x54, 0x68, 0xcd, 0x96, 0xe9, 0x05, - 0x36, 0xb1, 0x8c, 0xa4, 0x5a, 0x1a, 0xde, 0xa3, 0xb5, 0x12, 0x30, 0x1d, 0x92, 0x5f, 0x73, 0x56, - 0xcc, 0xc6, 0x1e, 0x56, 0x33, 0x68, 0x11, 0x10, 0x87, 0x1c, 0x98, 0x2d, 0xdb, 0x5a, 0xf1, 0x7a, - 0x9d, 0x80, 0xb8, 0xac, 0xf3, 0x50, 0x66, 0xc4, 0x3d, 0xdc, 0x21, 0x46, 0xb2, 0x6a, 0x85, 0xa0, - 0xe5, 0x20, 0x20, 0x8d, 0x2d, 0x15, 0xeb, 0xdf, 0xce, 0x42, 0x8e, 0xc7, 0x05, 0x8f, 0x69, 0xd3, - 0xde, 0x9a, 0x70, 0xd4, 0x4d, 0xab, 0xc8, 0xd2, 0xc7, 0x52, 0x64, 0xef, 0x88, 0xf5, 0xca, 0xd0, - 0xf5, 0xba, 0x30, 0xa2, 0x39, 0x19, 0x5f, 0x6c, 0xc5, 0x86, 0xc4, 0x32, 0x3b, 0x2c, 0x96, 0x71, - 0x33, 0xb5, 0xf0, 0x1c, 0x66, 0xea, 0x05, 0x28, 0x35, 0x3c, 0x6c, 0x12, 0x93, 0x90, 0xaa, 0x4f, - 0xe6, 0x8b, 0x15, 0x39, 0x8c, 0xea, 0xcb, 0x33, 0xb2, 0x7a, 0x65, 0x5e, 0x57, 0xa4, 0x4c, 0xbf, - 0x26, 0xfb, 0x79, 0xe9, 0x51, 0xe7, 0xd5, 0x2a, 0x45, 0xa9, 0x5d, 0x7a, 0xda, 0xaf, 0x5e, 0x18, - 0x3a, 0xaf, 0x86, 0x8e, 0xa6, 0xd0, 0x55, 0x3c, 0x03, 0x05, 0xe2, 0xea, 0xb1, 0x9e, 0x99, 0x6f, - 0x96, 0x27, 0x00, 0xd2, 0xb3, 0xee, 0x0a, 0xb9, 0x1e, 0x8e, 0xbf, 0xac, 0x39, 0x0d, 0xb7, 0x6d, - 0x3b, 0x4d, 0xee, 0x5b, 0xa9, 0x0a, 0x3a, 0x03, 0xa7, 0x1e, 0x74, 0x83, 0xa6, 0x1b, 0x01, 0xef, - 0x39, 0x8f, 0xbb, 0xb8, 0x4b, 0xc5, 0xf9, 0x14, 0x9c, 0x18, 0xa8, 0xdc, 0xc6, 0x4e, 0xa0, 0xa6, - 0x51, 0x09, 0xf2, 0xcb, 0x8d, 0x06, 0xee, 0x04, 0xd8, 0x52, 0x33, 0xfa, 0xbf, 0x17, 0xa0, 0x24, - 0xaf, 0xf7, 0x31, 0xa5, 0xf2, 0x76, 0xcc, 0x06, 0xb9, 0x34, 0x49, 0xaa, 0xe4, 0x50, 0x25, 0x3b, - 0x01, 0xdd, 0x0e, 0x76, 0x44, 0x2e, 0x81, 0xed, 0x3f, 0xe8, 0x60, 0x67, 0x1a, 0x4d, 0x26, 0xbc, - 0xb7, 0xac, 0xe4, 0xbd, 0x5d, 0x80, 0x52, 0xd7, 0xf1, 0xb0, 0x69, 0xd5, 0x99, 0x6e, 0x9e, 0xa1, - 0x39, 0x30, 0x45, 0x06, 0x5b, 0xa1, 0xde, 0x64, 0x15, 0x8a, 0x2d, 0xd3, 0x0f, 0xea, 0xdd, 0x8e, - 0x24, 0x1e, 0x40, 0x40, 0x8f, 0x28, 0x84, 0x58, 0xfd, 0x03, 0xb7, 0x4a, 0x64, 0x32, 0xf2, 0xb4, - 0x17, 0x35, 0x76, 0x93, 0x44, 0x06, 0xff, 0x36, 0xe4, 0x38, 0x8c, 0x4a, 0xed, 0x88, 0x60, 0xbe, - 0xb8, 0x0e, 0x10, 0xb8, 0xe8, 0x66, 0x14, 0x67, 0x80, 0xd1, 0x52, 0xc6, 0x04, 0x29, 0x8a, 0x41, - 0xdc, 0x86, 0xd3, 0xc2, 0xa3, 0x18, 0x36, 0xd5, 0x8a, 0x94, 0xc3, 0x45, 0x8e, 0x30, 0x20, 0x83, - 0xe8, 0x6d, 0x38, 0xd5, 0x72, 0x1b, 0x66, 0xab, 0x3e, 0xca, 0x6e, 0x5b, 0xa0, 0xd5, 0xab, 0x03, - 0xc6, 0xdb, 0xe0, 0x6e, 0x2a, 0x0f, 0xef, 0xa6, 0x1d, 0x98, 0x27, 0x4e, 0x68, 0xaf, 0xce, 0xe3, - 0x88, 0x74, 0x07, 0xcf, 0x52, 0xd9, 0xb9, 0x75, 0xd4, 0xaf, 0xce, 0xc9, 0x31, 0x3b, 0xb6, 0x8f, - 0xab, 0xb1, 0x7d, 0x3c, 0xd4, 0x58, 0x37, 0xe6, 0x3c, 0xb9, 0x8d, 0x6d, 0xa1, 0x8f, 0xa1, 0x1c, - 0x43, 0xab, 0xcc, 0xd1, 0xb9, 0xae, 0x4e, 0x30, 0x1f, 0x6a, 0xea, 0x51, 0xbf, 0x1a, 0x8b, 0x8f, - 0x1a, 0x25, 0x99, 0x34, 0xfa, 0x23, 0x05, 0xd4, 0xa1, 0x38, 0x0c, 0x33, 0x4d, 0xae, 0x4f, 0xd4, - 0x8e, 0xf1, 0xd8, 0x4c, 0xed, 0xf5, 0xa7, 0xfd, 0xea, 0x6b, 0x43, 0xba, 0x60, 0x25, 0x49, 0x21, - 0xf3, 0x11, 0xca, 0x91, 0x9d, 0xb8, 0x02, 0x9c, 0x7f, 0x0e, 0x05, 0x18, 0xd3, 0x31, 0x28, 0xae, - 0x63, 0xd0, 0x7b, 0x70, 0x76, 0x28, 0xc2, 0x53, 0xb7, 0x2d, 0xe2, 0xbe, 0xed, 0xda, 0xd8, 0xab, - 0x9c, 0xa0, 0xb2, 0x70, 0x7a, 0x20, 0xd6, 0xb3, 0x16, 0x22, 0x44, 0x72, 0x34, 0x2c, 0x80, 0x0b, - 0x92, 0x1c, 0x0d, 0x8a, 0xdf, 0x80, 0x9b, 0x7e, 0x72, 0xd0, 0x4d, 0xd7, 0x37, 0x92, 0x63, 0xcf, - 0x73, 0x50, 0xe4, 0xde, 0x32, 0xa9, 0x65, 0x37, 0x73, 0x7c, 0x33, 0x51, 0x00, 0x3d, 0xba, 0x37, - 0xbb, 0xad, 0xc0, 0x66, 0x3d, 0x52, 0x60, 0x5a, 0xff, 0xab, 0x14, 0x9c, 0x19, 0xb3, 0x56, 0xcf, - 0x63, 0x9c, 0x1d, 0xf7, 0x0c, 0x4e, 0x74, 0xaf, 0xd2, 0xc9, 0xee, 0xd5, 0x8b, 0xf1, 0xc2, 0xaf, - 0x01, 0x92, 0x65, 0x9b, 0x07, 0x52, 0x98, 0xba, 0x9c, 0x97, 0x6a, 0x58, 0x24, 0x45, 0xff, 0x83, - 0x0c, 0xcc, 0xb0, 0x49, 0xfc, 0xf2, 0x22, 0x6e, 0x71, 0x29, 0x9f, 0x79, 0x0e, 0x29, 0xdf, 0x9c, - 0xe4, 0xe5, 0x8d, 0xe0, 0x77, 0xc4, 0xea, 0x9c, 0x80, 0x2c, 0x71, 0xc5, 0x98, 0xb7, 0x95, 0x37, - 0x32, 0xb6, 0xbf, 0x49, 0x6f, 0x7a, 0x6c, 0xbf, 0x4e, 0x75, 0x9d, 0xeb, 0xf1, 0x08, 0x57, 0xc1, - 0xf6, 0x57, 0x18, 0x20, 0xbe, 0xd1, 0x72, 0x03, 0x1b, 0xed, 0xc5, 0xf8, 0x8e, 0x9d, 0xc8, 0x18, - 0xc9, 0x4e, 0x34, 0x46, 0x92, 0x9d, 0xe7, 0x81, 0x9d, 0x28, 0xbb, 0xd0, 0x09, 0x16, 0x8a, 0xfe, - 0x3b, 0x30, 0xc3, 0xc8, 0x1d, 0x53, 0x08, 0x7e, 0x25, 0x49, 0xcc, 0x47, 0xc5, 0x61, 0x06, 0x05, - 0x5f, 0xff, 0x1f, 0x05, 0xe6, 0xb6, 0xe3, 0xba, 0x87, 0x50, 0x1c, 0x3e, 0xb3, 0x94, 0x51, 0x14, - 0x07, 0xa3, 0x0f, 0xcf, 0xc5, 0xcf, 0x0b, 0x8c, 0x25, 0xbc, 0x0a, 0x59, 0x16, 0xf5, 0xcc, 0x8c, - 0x68, 0xc7, 0xaa, 0xf5, 0x9b, 0x30, 0xc7, 0xf5, 0xdb, 0xa6, 0x74, 0x9f, 0x3f, 0xe1, 0x0a, 0x51, - 0xff, 0xcf, 0x93, 0x50, 0x64, 0x69, 0x5d, 0x2c, 0x9c, 0xf6, 0x6e, 0xec, 0xee, 0xf8, 0x95, 0xc4, - 0xd8, 0x75, 0x84, 0x3e, 0xdd, 0xe5, 0xf1, 0x49, 0x98, 0xb1, 0xfd, 0xba, 0x83, 0x0f, 0xb9, 0xa9, - 0x96, 0xb5, 0xfd, 0xfb, 0xf8, 0x50, 0xfb, 0x1a, 0xcd, 0xa1, 0x08, 0x47, 0xcc, 0x8c, 0x28, 0x6b, - 0x48, 0xfe, 0x95, 0xe3, 0xc8, 0xbf, 0x76, 0x33, 0x4e, 0x7c, 0x15, 0xb7, 0x30, 0x21, 0x7e, 0x6e, - 0x58, 0x34, 0x25, 0x19, 0xd4, 0x3e, 0x01, 0x24, 0x19, 0x01, 0x82, 0xa3, 0x65, 0x28, 0x4a, 0x0e, - 0x28, 0x67, 0x68, 0x92, 0x05, 0x61, 0xc8, 0x6d, 0xb4, 0x66, 0x8c, 0xb0, 0xe0, 0xe6, 0xb4, 0x7c, - 0x98, 0xe4, 0xf8, 0x61, 0xf2, 0x5c, 0x87, 0x85, 0xf6, 0x01, 0xcc, 0x72, 0x29, 0x10, 0xdc, 0x4b, - 0x76, 0xa6, 0x32, 0xbd, 0x9d, 0x49, 0x08, 0xf1, 0xf3, 0x53, 0x22, 0xc4, 0x4d, 0xc4, 0x71, 0x84, - 0x78, 0x23, 0x43, 0xe0, 0x6a, 0x2b, 0x50, 0x66, 0x9a, 0x44, 0xd0, 0xb9, 0x11, 0x86, 0xf5, 0x94, - 0x49, 0x61, 0x3d, 0x11, 0x9a, 0x23, 0x44, 0x98, 0x72, 0x91, 0x88, 0xb0, 0x0d, 0x3b, 0x8e, 0x08, - 0x6b, 0x62, 0x70, 0x4c, 0xad, 0x08, 0x85, 0x0d, 0x9b, 0xb8, 0x3b, 0x16, 0xb6, 0xb4, 0xf7, 0xa0, - 0x44, 0x43, 0x04, 0x82, 0xe0, 0x75, 0xc8, 0xd2, 0x68, 0x13, 0xa7, 0x37, 0x26, 0x2a, 0xc5, 0xf0, - 0xb4, 0x7f, 0x52, 0xe0, 0x54, 0xcc, 0x46, 0x63, 0xf1, 0x81, 0x0d, 0x22, 0xf1, 0x09, 0xe9, 0xf0, - 0xca, 0xd4, 0xe9, 0xf0, 0x2b, 0x03, 0xb7, 0x8d, 0xa9, 0xd1, 0xb7, 0xf1, 0xb2, 0xbc, 0xc5, 0xaf, - 0x23, 0xa3, 0x28, 0x5b, 0x7a, 0xca, 0x28, 0x9b, 0xf6, 0x93, 0x19, 0xc8, 0xb3, 0x6b, 0x0c, 0x2a, - 0xf3, 0xb2, 0x1e, 0xb8, 0x36, 0x49, 0x0f, 0x88, 0x76, 0xb2, 0x42, 0x58, 0x80, 0x6c, 0x60, 0x07, - 0x2d, 0x11, 0x6c, 0x62, 0x85, 0x30, 0x5d, 0x23, 0x13, 0xa5, 0x6b, 0x8c, 0x0e, 0x74, 0x6a, 0x39, - 0xc8, 0xd6, 0x4c, 0xdf, 0x6e, 0x68, 0xff, 0xa2, 0xc0, 0x5c, 0x98, 0x1c, 0xd6, 0xc0, 0xf6, 0xc1, - 0x0b, 0xd9, 0x97, 0x43, 0xca, 0x26, 0x75, 0xac, 0xc3, 0x56, 0xda, 0x62, 0xe9, 0x67, 0xd8, 0x62, - 0xeb, 0x80, 0xe2, 0xd9, 0x5e, 0xc4, 0xd7, 0x3e, 0x2e, 0xb1, 0x07, 0xb0, 0x18, 0x27, 0x16, 0x4e, - 0xd3, 0x31, 0x09, 0x7e, 0x5b, 0x19, 0x4e, 0x84, 0xf9, 0xbf, 0x9c, 0x2e, 0xfd, 0x73, 0x91, 0x65, - 0x52, 0x84, 0x5c, 0x14, 0xb8, 0x2b, 0x43, 0x81, 0x5e, 0x4e, 0x10, 0x29, 0x51, 0x15, 0x91, 0x47, - 0x32, 0x20, 0x2a, 0x6a, 0x0a, 0x69, 0xb0, 0x48, 0x2a, 0x86, 0x27, 0x5c, 0x4d, 0xa3, 0xf3, 0xa0, - 0x0d, 0xd7, 0x85, 0x6d, 0x33, 0xa3, 0x92, 0x53, 0xb2, 0xda, 0xbf, 0x2a, 0x70, 0x62, 0x0b, 0x63, - 0x6f, 0x3b, 0x30, 0x83, 0xae, 0xbf, 0xe2, 0x3a, 0x0e, 0x6e, 0x10, 0x65, 0x72, 0x11, 0x72, 0x1d, - 0x8c, 0xbd, 0x28, 0x71, 0x91, 0xe6, 0x6e, 0x13, 0xcc, 0xb5, 0x55, 0x63, 0x86, 0x54, 0xad, 0x59, - 0xe8, 0x6b, 0x50, 0x08, 0x3c, 0xd3, 0xf1, 0x3b, 0xae, 0x17, 0xf0, 0x10, 0xc8, 0x57, 0x27, 0xed, - 0xb3, 0x84, 0xce, 0x96, 0x1e, 0x0a, 0x22, 0x46, 0x44, 0x4f, 0xbf, 0x0d, 0x85, 0x10, 0x1e, 0x9f, - 0xb0, 0x1c, 0xa4, 0x37, 0x96, 0xef, 0xab, 0x0a, 0xf9, 0xf3, 0xc9, 0xf2, 0x7d, 0x35, 0x45, 0xa6, - 0x70, 0xcb, 0x73, 0x9f, 0xd8, 0x6d, 0x3b, 0xe8, 0xa9, 0x69, 0xed, 0xab, 0xb0, 0x18, 0x75, 0x63, - 0xe0, 0x06, 0xeb, 0xc8, 0x76, 0x9a, 0x53, 0x0d, 0x2b, 0xde, 0x7c, 0xd5, 0xf6, 0x1b, 0xcf, 0x34, - 0x2b, 0xda, 0x77, 0x14, 0x38, 0x1d, 0xb5, 0xa7, 0x53, 0xbe, 0xec, 0xfb, 0x6e, 0xc3, 0x36, 0xa7, - 0x9e, 0xd8, 0x2b, 0x50, 0x10, 0x76, 0x9f, 0x48, 0x06, 0x2d, 0x1d, 0xf5, 0xab, 0x79, 0x1e, 0xa2, - 0x58, 0x37, 0xf2, 0xdc, 0xd6, 0xdb, 0x8f, 0x65, 0x29, 0xa6, 0x47, 0xa7, 0x8d, 0xea, 0x3f, 0x4b, - 0x27, 0x7b, 0x99, 0xf3, 0x50, 0x26, 0xe0, 0xf0, 0x58, 0x61, 0xf1, 0x35, 0x2e, 0x4c, 0x83, 0xa6, - 0x8d, 0x9a, 0x4a, 0xaa, 0xe4, 0xc6, 0x80, 0x9a, 0x16, 0x22, 0x3a, 0x6c, 0x81, 0xa8, 0x99, 0x84, - 0x3a, 0xd1, 0x2e, 0x8b, 0x16, 0x01, 0x49, 0xe2, 0x2b, 0xda, 0xcc, 0x08, 0x78, 0xfc, 0x18, 0x57, - 0x73, 0xe8, 0x24, 0xcc, 0xb3, 0x3d, 0x22, 0x9d, 0xca, 0x6a, 0x5e, 0x80, 0x63, 0xe7, 0xac, 0x5a, - 0x40, 0x2a, 0x94, 0x08, 0x58, 0x68, 0x78, 0x15, 0x44, 0x4a, 0x95, 0x7c, 0x7c, 0xaa, 0x45, 0x54, - 0x85, 0x33, 0x83, 0x43, 0x93, 0x8e, 0x44, 0xb5, 0x24, 0xc6, 0x9e, 0x20, 0xc2, 0x6a, 0x59, 0x6c, - 0xc1, 0x64, 0xc1, 0x53, 0x67, 0x87, 0xeb, 0x65, 0xc9, 0x52, 0xe7, 0xd0, 0x05, 0x38, 0x17, 0xaf, - 0x1f, 0x90, 0x1c, 0x55, 0xd5, 0xbf, 0xaf, 0x50, 0x7d, 0x1b, 0x72, 0xc7, 0xf6, 0x95, 0xf6, 0x95, - 0xd8, 0x3b, 0x89, 0xc8, 0xbe, 0x11, 0x37, 0x33, 0xe4, 0xc4, 0xea, 0x98, 0x4d, 0xe6, 0x95, 0x66, - 0x0c, 0xfa, 0x5f, 0xdb, 0x14, 0x19, 0x5e, 0x2f, 0xc4, 0x5a, 0x1d, 0x62, 0x8d, 0x3a, 0x8a, 0x58, - 0xfb, 0x2c, 0x62, 0x6d, 0xaa, 0x6c, 0x40, 0x11, 0x7e, 0xf4, 0xeb, 0x81, 0x5b, 0xb7, 0x69, 0x62, - 0x32, 0xcf, 0xd0, 0x12, 0xe1, 0x47, 0xff, 0xa1, 0xcb, 0x12, 0x96, 0xb5, 0x57, 0xc5, 0x08, 0xc6, - 0x9b, 0xc4, 0xfa, 0x27, 0x00, 0x5c, 0x80, 0x3e, 0xc0, 0x81, 0x9c, 0xe5, 0xf6, 0xab, 0x82, 0xc0, - 0xf1, 0xec, 0x42, 0xfd, 0xf7, 0xa0, 0x48, 0x75, 0x1a, 0x5f, 0x86, 0x37, 0xa3, 0xb1, 0x5e, 0x82, - 0x59, 0x7f, 0xcf, 0x6c, 0xb5, 0xdc, 0xc3, 0x7a, 0xec, 0x45, 0x62, 0x99, 0x43, 0x97, 0x29, 0x50, - 0x66, 0x20, 0x4b, 0x2f, 0xdd, 0xc7, 0x59, 0x00, 0x92, 0x12, 0x35, 0x18, 0x36, 0x39, 0x4f, 0xca, - 0xb1, 0xbd, 0xa1, 0x1d, 0x3c, 0xd3, 0x7c, 0x7f, 0x98, 0x90, 0x7d, 0x79, 0xac, 0x90, 0x44, 0x94, - 0xbc, 0xf4, 0x1f, 0x29, 0x58, 0x10, 0x39, 0x1e, 0x5d, 0x7f, 0x6f, 0xc5, 0x75, 0x76, 0xed, 0x66, - 0xd7, 0xc3, 0xda, 0xdf, 0xa6, 0x22, 0xd6, 0x06, 0x22, 0x62, 0xca, 0x98, 0x67, 0x76, 0xa9, 0xb1, - 0xcf, 0xec, 0xd2, 0x43, 0xcf, 0xec, 0xc6, 0xe7, 0xbc, 0x64, 0x8e, 0x91, 0xf3, 0x92, 0x4d, 0xce, - 0x79, 0x21, 0x1d, 0xf9, 0x7b, 0xee, 0x61, 0x72, 0x47, 0xec, 0x4e, 0x7b, 0x91, 0x20, 0x24, 0x77, - 0x44, 0x9b, 0xc6, 0x3b, 0xca, 0xb1, 0x8e, 0x48, 0x8d, 0xdc, 0x51, 0x34, 0xb7, 0x9f, 0x86, 0x9e, - 0x91, 0x90, 0xe0, 0x17, 0x95, 0x72, 0x56, 0x83, 0x72, 0xf4, 0xd4, 0x03, 0x77, 0x02, 0xed, 0x72, - 0x44, 0x78, 0x82, 0xc3, 0x19, 0xd2, 0xf8, 0x51, 0x0a, 0xf2, 0x42, 0xb9, 0x6b, 0xbf, 0x94, 0x92, - 0xfe, 0xbf, 0x84, 0x64, 0xee, 0x5b, 0x13, 0x62, 0x13, 0xa3, 0x22, 0x11, 0xe7, 0x00, 0xa8, 0xab, - 0x40, 0xe4, 0x97, 0x65, 0x77, 0x17, 0x8c, 0x02, 0x85, 0xac, 0xd8, 0xd6, 0x33, 0x66, 0x71, 0xc7, - 0xde, 0x21, 0xb0, 0xf5, 0x0e, 0xcb, 0x9a, 0x2e, 0x76, 0xf6, 0x68, 0x07, 0x59, 0xff, 0x9e, 0x02, - 0x55, 0x23, 0x1e, 0x8a, 0x24, 0xbe, 0x1e, 0x6e, 0xda, 0x7e, 0x80, 0x3d, 0xf6, 0x0a, 0xd0, 0x8e, - 0x3d, 0x47, 0x08, 0x93, 0xa4, 0xa4, 0x37, 0xac, 0x3c, 0x49, 0x2a, 0xca, 0x87, 0x3a, 0xae, 0xdf, - 0x1d, 0x2e, 0xe4, 0x87, 0x50, 0x89, 0xb1, 0x15, 0x2c, 0x77, 0x03, 0xf7, 0x9e, 0x63, 0xee, 0xb4, - 0xb0, 0x76, 0x31, 0xe2, 0xa7, 0x02, 0x39, 0x4c, 0x81, 0x16, 0xcf, 0x49, 0x17, 0xc5, 0x88, 0x52, - 0x13, 0x8a, 0x35, 0xd3, 0x71, 0xb0, 0xf7, 0xeb, 0x5d, 0x37, 0xc0, 0xda, 0x85, 0xa8, 0xf1, 0x22, - 0xcc, 0x78, 0xa6, 0x63, 0xb9, 0x6d, 0xde, 0x96, 0x97, 0xb4, 0xb7, 0xc5, 0xbc, 0x2d, 0x40, 0xf6, - 0x31, 0x69, 0x24, 0xb2, 0x12, 0x68, 0x81, 0xbe, 0xf0, 0xee, 0x06, 0x7b, 0xae, 0xc7, 0x87, 0xc2, - 0x4b, 0xfa, 0x26, 0x20, 0xf1, 0x78, 0xf0, 0xde, 0x13, 0x62, 0x30, 0xae, 0x92, 0x45, 0x90, 0x54, - 0xfd, 0x1b, 0x82, 0xee, 0x45, 0x28, 0x63, 0x8a, 0xc1, 0x6e, 0x75, 0x4c, 0xfe, 0x8e, 0xa2, 0x24, - 0x80, 0xa4, 0xa1, 0xfe, 0xf3, 0x14, 0xa0, 0x0d, 0x7a, 0x25, 0x64, 0x06, 0xe6, 0x8e, 0xe9, 0x63, - 0x76, 0x37, 0x39, 0x7e, 0x27, 0x4c, 0x13, 0x03, 0xbe, 0x04, 0xb3, 0x51, 0xde, 0x23, 0xcd, 0x1d, - 0x64, 0x1a, 0xac, 0x1c, 0x42, 0x69, 0xca, 0xe0, 0x2e, 0x9c, 0x66, 0x17, 0x0d, 0xb1, 0x24, 0xde, - 0xba, 0xb8, 0x81, 0x26, 0xde, 0xf0, 0xd5, 0xa4, 0x6d, 0x44, 0x79, 0x8e, 0x1b, 0x08, 0x66, 0x80, - 0x0d, 0x76, 0x6b, 0x21, 0xc3, 0xfd, 0x6d, 0x71, 0x39, 0x2d, 0xee, 0xd4, 0xa4, 0xeb, 0xc4, 0x22, - 0x87, 0xd1, 0x27, 0x86, 0xe3, 0x33, 0x1f, 0x67, 0xc6, 0x65, 0x3e, 0xea, 0x3f, 0x52, 0x60, 0x31, - 0x99, 0xa5, 0x29, 0xa6, 0x32, 0x76, 0x97, 0x99, 0x1a, 0xbe, 0xcb, 0x1c, 0x79, 0x7d, 0x2a, 0xae, - 0x64, 0x33, 0xcf, 0x7c, 0x25, 0xab, 0xff, 0x89, 0xc2, 0x43, 0x2a, 0x3c, 0x99, 0x41, 0xfb, 0xed, - 0x98, 0x65, 0xb5, 0xd3, 0x72, 0x1b, 0xfc, 0x29, 0x90, 0xc1, 0x0a, 0xe8, 0x1a, 0x64, 0xe8, 0xbd, - 0x59, 0x6a, 0x52, 0xc8, 0x85, 0xa2, 0x21, 0x15, 0xd2, 0x5d, 0xcf, 0xe6, 0x3a, 0x8a, 0xfc, 0xd5, - 0x4e, 0x0b, 0xc1, 0x54, 0x25, 0x45, 0xc1, 0xf4, 0xc3, 0x37, 0xa1, 0xcc, 0xda, 0xe2, 0xc0, 0xb3, - 0xf1, 0x01, 0xd6, 0xce, 0x44, 0xdc, 0x0c, 0x61, 0x6b, 0x1b, 0xd2, 0xce, 0x79, 0x6e, 0x46, 0xf5, - 0x7f, 0xa4, 0xc1, 0x0a, 0xcb, 0x36, 0x3f, 0xc0, 0x81, 0x81, 0x5b, 0xc4, 0xfe, 0xd4, 0xf6, 0xa2, - 0xee, 0xc7, 0x84, 0xfd, 0x88, 0x8a, 0x15, 0x09, 0x3c, 0x2c, 0x74, 0x43, 0x54, 0x2c, 0xcf, 0xe0, - 0xf1, 0x49, 0xf5, 0xae, 0xdd, 0xc2, 0x74, 0x87, 0x84, 0x1a, 0x98, 0x40, 0xc8, 0xfe, 0xf0, 0x3f, - 0xca, 0xe4, 0x53, 0x6a, 0x5a, 0xfb, 0x48, 0x8c, 0xe5, 0x59, 0x43, 0x5a, 0x64, 0x5e, 0xb0, 0x63, - 0x71, 0xab, 0x81, 0xfc, 0xd5, 0x37, 0xf8, 0x2c, 0x86, 0x21, 0xe5, 0xbb, 0x90, 0xb5, 0x03, 0xdc, - 0x16, 0x6f, 0x44, 0x2e, 0x8d, 0xa4, 0x29, 0x5a, 0xac, 0x05, 0xb8, 0x6d, 0xb0, 0x36, 0x7a, 0x0f, - 0xe6, 0x87, 0xea, 0xd0, 0x47, 0x10, 0x66, 0x10, 0xd5, 0xa5, 0x93, 0x6e, 0x32, 0x65, 0x2a, 0x7a, - 0xa5, 0xb6, 0x54, 0x1a, 0x7d, 0xe6, 0xe9, 0xb7, 0xf9, 0x8a, 0x88, 0xc6, 0xeb, 0x1f, 0x93, 0xd1, - 0x46, 0xdb, 0x87, 0xfc, 0x25, 0x8b, 0x7f, 0x60, 0xb6, 0xba, 0x42, 0xf9, 0xb0, 0x82, 0xfe, 0x53, - 0x05, 0x4a, 0xcb, 0x5d, 0xcb, 0x76, 0xb9, 0x4d, 0x81, 0xae, 0x01, 0x3a, 0x20, 0xf6, 0x1c, 0x31, - 0x93, 0x02, 0xec, 0xf8, 0x76, 0x60, 0x63, 0x36, 0x21, 0x65, 0x63, 0x9e, 0xd5, 0xac, 0x45, 0x15, - 0xc4, 0x5e, 0xb3, 0xba, 0x2c, 0x7f, 0xb5, 0xde, 0x66, 0x4f, 0x10, 0xca, 0x06, 0x08, 0xd0, 0x26, - 0x4d, 0xaa, 0xdf, 0x75, 0xbd, 0xb6, 0x19, 0x70, 0xd1, 0xe6, 0x25, 0x32, 0x9a, 0x1d, 0x3b, 0xf0, - 0x44, 0xe2, 0x4c, 0xd9, 0x10, 0x45, 0xa2, 0x87, 0x7d, 0xb3, 0xdd, 0x69, 0xd9, 0x4e, 0xb3, 0x4e, - 0xeb, 0xb3, 0xb4, 0xbe, 0x24, 0x80, 0x86, 0x19, 0x60, 0xfd, 0xcf, 0x53, 0x90, 0x0f, 0x5f, 0x40, - 0x6d, 0xc7, 0x0e, 0x67, 0x66, 0xac, 0xde, 0x1c, 0xcc, 0xe2, 0xbb, 0x18, 0x33, 0x56, 0x23, 0xfc, - 0xbb, 0xb1, 0x2b, 0x9b, 0xe8, 0x0c, 0x5f, 0x1e, 0x79, 0x33, 0x39, 0xea, 0xbe, 0x67, 0xe8, 0x9e, - 0xe4, 0x75, 0x91, 0x3f, 0x97, 0x19, 0xd7, 0x8c, 0xa7, 0xd5, 0x49, 0x69, 0x8f, 0xd9, 0x58, 0xda, - 0x63, 0xf8, 0xbe, 0x6b, 0x46, 0x7e, 0xdf, 0x75, 0x0e, 0x80, 0xfe, 0x91, 0xef, 0xd9, 0x0a, 0x14, - 0x42, 0xb3, 0x66, 0xfe, 0x2c, 0x15, 0xbe, 0xc2, 0xdc, 0xc6, 0xa6, 0xd7, 0xd8, 0xd3, 0x7e, 0xae, - 0xc4, 0x34, 0xd6, 0xe3, 0x2e, 0xf6, 0x7a, 0xd1, 0x11, 0x8a, 0x3d, 0x7a, 0x1b, 0xbd, 0x83, 0x89, - 0xfd, 0xcc, 0x68, 0xf2, 0x4f, 0x5c, 0x30, 0xd0, 0x2a, 0xef, 0xd3, 0xdc, 0x0d, 0xb0, 0x27, 0xbd, - 0x94, 0x33, 0x0a, 0x14, 0xb2, 0xca, 0x73, 0xff, 0x5a, 0x76, 0xdb, 0x66, 0xdf, 0x37, 0xc9, 0x1a, - 0xac, 0x20, 0x7f, 0x62, 0x25, 0x3b, 0xf2, 0x13, 0x2b, 0x49, 0x5f, 0x49, 0x99, 0x49, 0xfa, 0x4a, - 0x8a, 0x56, 0x13, 0x0a, 0xe0, 0x36, 0xa1, 0xeb, 0x77, 0x5b, 0xc1, 0xd8, 0x27, 0x5d, 0x72, 0x70, - 0x54, 0xe0, 0xeb, 0xbf, 0x0b, 0x73, 0x0f, 0x7b, 0x3b, 0xd8, 0xfb, 0xd0, 0xf5, 0x03, 0x3e, 0x3b, - 0x92, 0x41, 0x50, 0x17, 0x3d, 0x68, 0x90, 0xdf, 0x73, 0xfd, 0x40, 0x72, 0x91, 0xc2, 0x32, 0x3a, - 0x0b, 0x19, 0xbb, 0x73, 0x70, 0x93, 0x79, 0xa0, 0xb5, 0xfc, 0x51, 0xbf, 0x9a, 0x59, 0xdb, 0x3a, - 0xb8, 0x69, 0x50, 0x28, 0xaf, 0xbd, 0xc5, 0x74, 0x5c, 0x58, 0x7b, 0x8b, 0xd6, 0xde, 0xd2, 0xbf, - 0x2e, 0x75, 0xcf, 0x12, 0xe1, 0xb4, 0xd7, 0xa2, 0xb5, 0x39, 0x0b, 0x05, 0xd3, 0xb2, 0x3c, 0x32, - 0x08, 0x36, 0xb2, 0x82, 0x11, 0x01, 0xb4, 0x0b, 0x82, 0xb9, 0x0a, 0xe4, 0x38, 0x54, 0xbc, 0xea, - 0xe2, 0x45, 0xfd, 0xd7, 0x40, 0x65, 0x2f, 0x01, 0xa8, 0x75, 0x46, 0x0f, 0xdf, 0x67, 0x34, 0xce, - 0xfe, 0x3e, 0xc5, 0x48, 0x88, 0x28, 0x21, 0xb1, 0x75, 0xd0, 0x1a, 0x94, 0xc3, 0x07, 0x50, 0xa1, - 0x79, 0x54, 0x0c, 0x6f, 0xd1, 0xe4, 0x04, 0x70, 0xa9, 0x2d, 0x7f, 0xf4, 0x55, 0x12, 0xd5, 0x94, - 0xd4, 0x40, 0x6c, 0x3b, 0x75, 0x8c, 0xd8, 0xf6, 0x15, 0x50, 0xcd, 0x16, 0x39, 0xf2, 0x7b, 0x75, - 0x8f, 0x73, 0xc9, 0x0f, 0xfb, 0x39, 0x0e, 0x0f, 0x43, 0xc4, 0x17, 0xa1, 0x1c, 0xa6, 0x07, 0x75, - 0xc5, 0xab, 0x7f, 0x9a, 0x08, 0xcc, 0x52, 0x82, 0x08, 0x8c, 0xa8, 0xbd, 0x98, 0x69, 0xcc, 0x30, - 0xd9, 0x46, 0x9c, 0x6f, 0x0c, 0x7c, 0x40, 0x86, 0xa6, 0xd3, 0x31, 0x7f, 0x90, 0x69, 0x4d, 0x2e, - 0xab, 0x45, 0xea, 0x09, 0x32, 0x90, 0xde, 0x85, 0xa2, 0x34, 0x0f, 0x03, 0x2b, 0x20, 0x14, 0xb9, - 0x12, 0xbf, 0x11, 0x58, 0x16, 0xab, 0xfb, 0x2e, 0x64, 0x12, 0xe6, 0x38, 0xfe, 0x21, 0x9c, 0x81, - 0x05, 0x32, 0x68, 0x0b, 0xfd, 0x1f, 0x14, 0x98, 0xdf, 0xb0, 0x7d, 0x9e, 0xe9, 0xc4, 0xe2, 0x5d, - 0xbe, 0xf6, 0x38, 0xea, 0xfd, 0xb9, 0xae, 0x6f, 0xae, 0x40, 0x41, 0x28, 0xc5, 0x58, 0xf4, 0x91, - 0x5f, 0xa7, 0xaf, 0x13, 0x3f, 0x87, 0xfe, 0xdb, 0xd7, 0xee, 0x8a, 0xb1, 0x1c, 0xe3, 0x36, 0x4b, - 0xef, 0xc0, 0x39, 0x2a, 0xc3, 0x44, 0x78, 0x99, 0xd5, 0xe8, 0x7a, 0x32, 0x6b, 0xda, 0xfb, 0x2f, - 0x66, 0x40, 0x91, 0xcc, 0xff, 0x54, 0x81, 0xf3, 0xa1, 0x8d, 0xca, 0x2e, 0xdb, 0xbf, 0xac, 0x3e, - 0xd7, 0xc5, 0xcc, 0xd4, 0x88, 0xa9, 0x1b, 0x3e, 0xfc, 0x89, 0xbf, 0xa1, 0x8c, 0x07, 0x78, 0xe2, - 0x97, 0xff, 0xc4, 0x1e, 0xe6, 0x7f, 0xf5, 0x9f, 0x29, 0x70, 0x56, 0xde, 0x25, 0x22, 0xfb, 0xfb, - 0x7d, 0xd7, 0xbb, 0x47, 0x9f, 0xfc, 0xfe, 0x66, 0x8c, 0xeb, 0xc1, 0xf4, 0x65, 0x89, 0xeb, 0x78, - 0xfa, 0xf2, 0x50, 0x5e, 0x72, 0xf2, 0x83, 0xe2, 0x15, 0x31, 0x96, 0x3b, 0x72, 0x1a, 0x3b, 0x53, - 0xc8, 0x67, 0x93, 0xdf, 0xd8, 0x72, 0x46, 0x23, 0xf4, 0xab, 0x9f, 0x0e, 0x98, 0x4e, 0xd4, 0xdc, - 0x39, 0x41, 0x8c, 0x1a, 0x56, 0x8e, 0xe2, 0xfb, 0x0b, 0xa0, 0x86, 0x46, 0x0e, 0xee, 0x7d, 0x4c, - 0x4c, 0x18, 0x55, 0x41, 0x15, 0x58, 0x10, 0x50, 0xd9, 0x96, 0x51, 0x53, 0x37, 0xbe, 0xfb, 0x0a, - 0x69, 0xc0, 0xbb, 0xe7, 0x6e, 0x34, 0xfa, 0x43, 0x65, 0xf4, 0xe7, 0x86, 0xd0, 0xcd, 0x64, 0x35, - 0x94, 0x8c, 0xbd, 0x24, 0xce, 0x8c, 0x1b, 0xcf, 0xd8, 0x8a, 0xcc, 0x58, 0x37, 0xf1, 0xeb, 0x3e, - 0xe8, 0xfa, 0x48, 0x01, 0x88, 0x23, 0x86, 0x7d, 0x5f, 0x9b, 0xbe, 0x01, 0xe9, 0xf6, 0x5b, 0xca, - 0xc8, 0xcf, 0xea, 0xa0, 0xaf, 0x8c, 0xd8, 0x9a, 0x49, 0xc8, 0x61, 0xff, 0x6f, 0x3d, 0x5b, 0x23, - 0xc2, 0x03, 0x1e, 0xf8, 0xe2, 0x0e, 0xba, 0x32, 0x8a, 0x46, 0x88, 0x12, 0x76, 0xf7, 0xda, 0x34, - 0xa8, 0x9d, 0x56, 0xef, 0x4d, 0x05, 0x35, 0x06, 0x3e, 0xcf, 0x93, 0xdc, 0x4d, 0x0c, 0x65, 0x7c, - 0x37, 0x83, 0xa8, 0x64, 0x2c, 0x5e, 0xd2, 0xa7, 0x2d, 0xd0, 0x52, 0xf2, 0xc3, 0xc8, 0x41, 0xbc, - 0xb0, 0xbb, 0x37, 0xa6, 0xc6, 0x27, 0x7d, 0xb6, 0x86, 0x3f, 0x4f, 0x81, 0x46, 0x52, 0x90, 0xb1, - 0xc2, 0xfe, 0xae, 0x4e, 0x89, 0x4d, 0x7a, 0xfb, 0x4c, 0x7e, 0x0b, 0x8e, 0x5e, 0x9d, 0xf0, 0x86, - 0x59, 0xf4, 0xf0, 0xca, 0x44, 0x3c, 0x42, 0xfb, 0xe3, 0xe8, 0x83, 0x67, 0x28, 0xb1, 0x85, 0xa8, - 0x0d, 0xe9, 0xea, 0x13, 0xb0, 0xd8, 0xd2, 0x7f, 0x63, 0xf0, 0x2b, 0x66, 0xe8, 0xea, 0xa8, 0x76, - 0x11, 0x4e, 0xd8, 0xc7, 0xe5, 0xa9, 0x70, 0x3b, 0xad, 0xde, 0x65, 0xe5, 0x4d, 0x05, 0x05, 0x49, - 0x57, 0x2f, 0xc9, 0x12, 0x30, 0x8c, 0x37, 0x5e, 0x02, 0x12, 0xf1, 0xd9, 0x08, 0xeb, 0xb1, 0x2b, - 0x06, 0x94, 0x28, 0xaf, 0x12, 0x42, 0xd8, 0xcf, 0xa5, 0xc9, 0x88, 0xac, 0x03, 0x2f, 0xe9, 0xda, - 0x66, 0xf2, 0xb0, 0x18, 0xde, 0xf4, 0xc3, 0x0a, 0xf1, 0xb9, 0x60, 0x0f, 0x3e, 0x9e, 0x46, 0x13, - 0x29, 0x10, 0xac, 0xf1, 0x82, 0x9d, 0x80, 0xcd, 0x05, 0x3b, 0xba, 0xfe, 0x49, 0x16, 0xec, 0xa8, - 0x7e, 0xbc, 0x60, 0xc7, 0xf0, 0x08, 0xed, 0xc6, 0xc0, 0xfd, 0x4b, 0xb2, 0xee, 0x89, 0xa1, 0x8c, - 0xd7, 0x3d, 0x83, 0xa8, 0xa4, 0x93, 0x27, 0xc9, 0x37, 0x2a, 0xe8, 0xcd, 0x31, 0x04, 0x62, 0x98, - 0x61, 0x97, 0x4b, 0xcf, 0xd0, 0x82, 0xf4, 0xbc, 0x3b, 0x78, 0xe1, 0x80, 0xae, 0x8e, 0xcb, 0x73, - 0x18, 0xd0, 0x76, 0x97, 0xa7, 0xc2, 0xe5, 0xd3, 0x18, 0xbb, 0x7e, 0x48, 0x9e, 0xc6, 0x18, 0xca, - 0xf8, 0x69, 0x1c, 0x44, 0x25, 0x9d, 0x3c, 0x8c, 0xae, 0x27, 0x92, 0x95, 0x90, 0xa8, 0x1d, 0xaf, - 0x84, 0x24, 0xac, 0x04, 0x59, 0xa6, 0x11, 0xc8, 0x89, 0xb2, 0x4c, 0xb0, 0xa6, 0x97, 0x65, 0x8e, - 0x4d, 0x7a, 0x73, 0x13, 0xbe, 0xd6, 0x89, 0xae, 0x4d, 0xdc, 0x7c, 0x04, 0x2d, 0xec, 0xef, 0xf5, - 0x69, 0xd1, 0x13, 0x86, 0x47, 0x53, 0xc3, 0x26, 0x0e, 0x8f, 0x60, 0x4d, 0x3f, 0x3c, 0x8e, 0x9d, - 0xd0, 0x1b, 0xf1, 0xc2, 0x26, 0xf7, 0x46, 0xb0, 0xa6, 0xef, 0x8d, 0x63, 0xf3, 0xc9, 0xe4, 0xc6, - 0xa2, 0x4f, 0xad, 0x6c, 0xe2, 0x50, 0x85, 0xdd, 0xc5, 0xbe, 0x23, 0x32, 0x88, 0x35, 0xd4, 0xdd, - 0x24, 0x6c, 0xa6, 0x6b, 0x7f, 0x30, 0xf9, 0xc2, 0x07, 0xdd, 0x1d, 0xf5, 0xc9, 0x9a, 0x31, 0x8d, - 0x42, 0x76, 0x6e, 0x1f, 0xaf, 0x31, 0x99, 0x0c, 0x62, 0x2e, 0x8f, 0xba, 0xf5, 0x49, 0x36, 0x97, - 0x47, 0x61, 0x8f, 0x37, 0x97, 0xc7, 0xb4, 0x22, 0x6c, 0x7c, 0x3d, 0x76, 0x63, 0x94, 0x7c, 0xde, - 0x49, 0x08, 0xe3, 0xcf, 0xbb, 0x38, 0x22, 0x21, 0x1f, 0x24, 0xdd, 0x13, 0x25, 0x9f, 0x76, 0xc3, - 0x78, 0xe3, 0x4f, 0xbb, 0x44, 0x7c, 0xb6, 0xee, 0x3b, 0xf1, 0x5b, 0x05, 0x74, 0x79, 0x64, 0x60, - 0x98, 0x63, 0x84, 0x3d, 0xbd, 0x3a, 0x05, 0x26, 0x35, 0x50, 0x88, 0xb1, 0x1d, 0xbb, 0x2c, 0x48, - 0x56, 0xa1, 0x31, 0x94, 0xf1, 0x2a, 0x74, 0x10, 0x95, 0x0d, 0xc5, 0x1e, 0xba, 0x16, 0x40, 0xaf, - 0x8f, 0x6c, 0x1d, 0x21, 0x85, 0x5d, 0x5d, 0x99, 0x0e, 0x99, 0x1f, 0x0a, 0xb1, 0xd8, 0xe6, 0xa8, - 0x11, 0x49, 0x28, 0x93, 0x46, 0x14, 0x47, 0x25, 0x9d, 0x3c, 0x4e, 0x88, 0xa3, 0x24, 0x2b, 0xd4, - 0x21, 0xb4, 0xf1, 0x0a, 0x35, 0x09, 0x9d, 0x4d, 0xe1, 0xfe, 0x50, 0x5c, 0x32, 0x79, 0x0a, 0x07, - 0x90, 0xc6, 0x4f, 0xe1, 0x30, 0x72, 0xb8, 0x5e, 0x03, 0x51, 0xc8, 0x09, 0x9d, 0x31, 0xa4, 0x29, - 0x3b, 0x0b, 0x91, 0xb9, 0xf2, 0x1e, 0x8c, 0x48, 0x26, 0x2b, 0xef, 0x41, 0xac, 0xf1, 0xca, 0x3b, - 0x01, 0x9b, 0xf4, 0xf6, 0x1d, 0x65, 0x42, 0xf0, 0x08, 0xdd, 0x1e, 0x49, 0x6d, 0x54, 0x93, 0x90, - 0x91, 0x77, 0x8e, 0xd3, 0x94, 0x70, 0xf5, 0xfd, 0x89, 0xf1, 0x25, 0x74, 0x67, 0x14, 0xed, 0xd1, - 0x6d, 0x42, 0xbe, 0xde, 0x3d, 0x56, 0x5b, 0x26, 0x09, 0x5f, 0x8f, 0x45, 0x2a, 0x93, 0x35, 0x6b, - 0x3c, 0xa4, 0x3b, 0x46, 0xb3, 0x0e, 0xc5, 0x7e, 0xd1, 0xe7, 0x13, 0x22, 0x54, 0xe8, 0xdd, 0x49, - 0x91, 0xdf, 0xc1, 0x16, 0x21, 0x07, 0xb7, 0x8e, 0xd1, 0xb2, 0xd3, 0xea, 0xd5, 0x6e, 0x7e, 0xfe, - 0xc5, 0xf9, 0x97, 0xfe, 0xf9, 0x8b, 0xf3, 0x2f, 0xfd, 0xe2, 0x8b, 0xf3, 0x2f, 0x7d, 0xf6, 0x2a, - 0x23, 0x12, 0xe0, 0xc6, 0xde, 0x75, 0xfa, 0xf7, 0x7a, 0xd3, 0xbd, 0xde, 0xd9, 0x6f, 0x5e, 0x8f, - 0x7f, 0xaa, 0x7e, 0x67, 0x86, 0x9e, 0xe5, 0x5f, 0xf9, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfc, - 0x9a, 0x4c, 0x91, 0xc3, 0x5e, 0x00, 0x00, + // 5536 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7c, 0x4d, 0x6c, 0x1c, 0xc7, + 0x72, 0xb0, 0x67, 0x7f, 0xb8, 0xbb, 0xb5, 0x4b, 0x72, 0xd8, 0xa2, 0xa8, 0xd5, 0xe8, 0x67, 0xa5, + 0x91, 0x65, 0xfd, 0x3c, 0x8b, 0xb2, 0x69, 0x59, 0xb2, 0xa4, 0xcf, 0x9f, 0xc3, 0x25, 0x65, 0x9b, + 0x7f, 0x12, 0x33, 0x94, 0x9e, 0x5f, 0x6c, 0x18, 0x83, 0xe1, 0x4e, 0x73, 0x39, 0xe1, 0x72, 0x66, + 0x34, 0x33, 0x4b, 0x8a, 0x41, 0x82, 0xe0, 0x05, 0x01, 0x12, 0x04, 0x48, 0x62, 0xc0, 0x31, 0xf0, + 0xde, 0xbb, 0xe5, 0xf6, 0x80, 0x20, 0x41, 0xde, 0x21, 0xc8, 0x31, 0x40, 0xf2, 0x4e, 0x39, 0x25, + 0x39, 0x04, 0xc9, 0x21, 0x04, 0x42, 0xe7, 0xf4, 0x90, 0x93, 0xce, 0xf9, 0x43, 0xff, 0xcd, 0xdf, + 0xce, 0xfe, 0x90, 0x92, 0x91, 0x9c, 0xb8, 0x53, 0x5d, 0x5d, 0x55, 0xdd, 0x5d, 0x55, 0x5d, 0x55, + 0xdd, 0x4d, 0x98, 0xde, 0xc5, 0xbe, 0x8f, 0xed, 0x36, 0xf6, 0x82, 0x03, 0x17, 0xfb, 0xb3, 0xae, + 0xe7, 0x04, 0x0e, 0x42, 0x9b, 0xe4, 0x7b, 0x36, 0x6c, 0x9b, 0xdd, 0x7b, 0x57, 0x99, 0x6e, 0x3b, + 0x6d, 0x87, 0x36, 0xdf, 0x26, 0xbf, 0x18, 0xa6, 0x72, 0x8a, 0xfe, 0x69, 0x39, 0x9d, 0x58, 0x77, + 0xf5, 0x5f, 0x25, 0x38, 0xbf, 0x6e, 0xb4, 0x2d, 0xdb, 0x08, 0xb0, 0xb9, 0x64, 0x07, 0xd8, 0x33, + 0x5a, 0x81, 0xe5, 0xd8, 0xfe, 0x13, 0x97, 0xfe, 0x41, 0x33, 0x30, 0x66, 0xec, 0x3a, 0x5d, 0x3b, + 0xa8, 0x4b, 0x97, 0xa4, 0xeb, 0x45, 0x8d, 0x7f, 0xa1, 0x2b, 0x50, 0xf2, 0xf0, 0x96, 0xde, 0xb2, + 0xcc, 0x7a, 0xee, 0x92, 0x74, 0xbd, 0xd2, 0x84, 0xa3, 0xc3, 0xc6, 0x98, 0x86, 0xb7, 0x16, 0x96, + 0x16, 0xb5, 0x31, 0x0f, 0x6f, 0x2d, 0x58, 0x26, 0x7a, 0x08, 0x93, 0x2d, 0xc7, 0xde, 0xc3, 0x9e, + 0x6f, 0x10, 0x6a, 0xba, 0xbb, 0x53, 0xcf, 0x53, 0x64, 0x74, 0x74, 0xd8, 0x98, 0x58, 0x88, 0x35, + 0xad, 0xaf, 0x68, 0x13, 0x71, 0xd4, 0xf5, 0x1d, 0x74, 0x1d, 0x64, 0xa7, 0x63, 0x62, 0x3f, 0xd0, + 0x03, 0x47, 0xb7, 0xf1, 0x3e, 0xf6, 0x83, 0x7a, 0xe1, 0x92, 0x74, 0xbd, 0xac, 0x4d, 0x30, 0xf8, + 0x53, 0xe7, 0x31, 0x85, 0xa2, 0x33, 0x50, 0xb2, 0x1d, 0x7d, 0xb3, 0xdb, 0xd9, 0xa9, 0x8f, 0x51, + 0x84, 0x31, 0xdb, 0x69, 0x76, 0x3b, 0x3b, 0xcb, 0x85, 0x72, 0x51, 0x1e, 0x53, 0x1f, 0x83, 0x1c, + 0x67, 0xf5, 0xc4, 0xc5, 0xb6, 0xf2, 0x2e, 0x94, 0x34, 0xfc, 0xbc, 0x4b, 0x7a, 0xbf, 0x05, 0xe5, + 0xb6, 0xe7, 0x74, 0x5d, 0x22, 0x9d, 0x44, 0xa5, 0xab, 0x1e, 0x1d, 0x36, 0x4a, 0x9f, 0x10, 0xd8, + 0xfa, 0x8a, 0x56, 0xa2, 0x8d, 0xeb, 0x3b, 0x4a, 0x09, 0x8a, 0x1a, 0x76, 0x3b, 0x07, 0xea, 0x13, + 0x98, 0x8a, 0xd3, 0x5b, 0xe8, 0x38, 0x3e, 0x7e, 0x25, 0x82, 0x5e, 0x52, 0xc0, 0x55, 0xc7, 0x30, + 0x95, 0x67, 0x11, 0xbd, 0x65, 0x28, 0x39, 0x6c, 0x35, 0x28, 0xb9, 0xea, 0xdc, 0x3b, 0xb3, 0xbd, + 0x8b, 0x3e, 0x3b, 0x68, 0x15, 0x35, 0x41, 0x20, 0xe2, 0xf9, 0x27, 0x52, 0x92, 0xe9, 0x5a, 0x37, + 0xc0, 0xca, 0xef, 0x4b, 0xc7, 0x1e, 0x05, 0x6a, 0x40, 0x75, 0xb7, 0x1b, 0x60, 0x53, 0xef, 0xda, + 0x81, 0xd5, 0xa1, 0xca, 0x90, 0xd7, 0x80, 0x82, 0x9e, 0x11, 0x08, 0xd1, 0xa0, 0xae, 0x4d, 0xbe, + 0xe9, 0xda, 0x97, 0x35, 0xfe, 0x85, 0x2e, 0x43, 0x8d, 0xfc, 0xd5, 0xb7, 0x1c, 0x0f, 0xef, 0x61, + 0x8f, 0xaf, 0x2d, 0x25, 0xf6, 0x31, 0x03, 0x45, 0xd2, 0xfe, 0x50, 0x82, 0xf2, 0xa3, 0xd6, 0xb6, + 0xf3, 0x14, 0xfb, 0x81, 0xf2, 0x83, 0x48, 0xc8, 0x69, 0x28, 0x9a, 0xb8, 0x63, 0x1c, 0x50, 0x09, + 0x0b, 0x1a, 0xfb, 0x40, 0x08, 0x0a, 0xb8, 0xb5, 0xed, 0x30, 0xc5, 0xd4, 0xe8, 0x6f, 0x74, 0x05, + 0xc6, 0x03, 0xcf, 0x6a, 0xb7, 0xb1, 0xa7, 0x63, 0xcf, 0x73, 0x3c, 0x2e, 0x4c, 0x8d, 0x03, 0x1f, + 0x11, 0x98, 0x72, 0x8e, 0xf3, 0x0b, 0x29, 0x48, 0x11, 0x05, 0xf5, 0x39, 0x4c, 0x10, 0x11, 0x16, + 0xbb, 0x6e, 0x07, 0xbf, 0xa0, 0x82, 0x34, 0x23, 0x41, 0xbe, 0x1b, 0x96, 0x7f, 0x94, 0x83, 0xfa, + 0x92, 0xed, 0x07, 0x86, 0xdd, 0xc2, 0x1b, 0xdb, 0x86, 0x87, 0x8d, 0xcd, 0x0e, 0x6e, 0x92, 0xb5, + 0x5f, 0x5a, 0x54, 0x36, 0x13, 0xd3, 0xe0, 0x61, 0x1f, 0x33, 0x1b, 0x2d, 0x6b, 0xec, 0x83, 0x4c, + 0xb0, 0x69, 0xf9, 0x6e, 0xc7, 0x38, 0xd0, 0x6d, 0x63, 0x17, 0x73, 0xd9, 0xaa, 0x1c, 0xf6, 0xd8, + 0xd8, 0xc5, 0xe8, 0x22, 0x80, 0x6b, 0xf8, 0xbe, 0xbb, 0xed, 0x19, 0x3e, 0x5b, 0x9f, 0x9a, 0x16, + 0x83, 0x28, 0x5f, 0x4b, 0x42, 0xbc, 0x77, 0xa1, 0xd0, 0xb1, 0xec, 0x1d, 0xae, 0x81, 0x17, 0xb2, + 0x34, 0x90, 0x0a, 0xb6, 0x6a, 0xd9, 0x3b, 0x1a, 0x45, 0x45, 0x73, 0x50, 0xb3, 0x88, 0x2e, 0xda, + 0x46, 0x47, 0xef, 0x7a, 0x1d, 0xee, 0x27, 0x26, 0x8f, 0x0e, 0x1b, 0xd5, 0x25, 0x0e, 0x7f, 0xa6, + 0xad, 0x6a, 0x55, 0x81, 0xf4, 0xcc, 0xeb, 0x10, 0xb7, 0xb2, 0x8f, 0x37, 0x29, 0x7a, 0x3e, 0x72, + 0x2b, 0x9f, 0xe1, 0x4d, 0x82, 0x39, 0xb6, 0x8f, 0x37, 0x9f, 0x79, 0x1d, 0xf5, 0x3f, 0x25, 0x38, + 0x95, 0x9c, 0x0e, 0xaa, 0x95, 0xca, 0x7a, 0x7f, 0xed, 0xad, 0xf5, 0xd1, 0xde, 0x0b, 0x00, 0x0c, + 0x2f, 0x36, 0x43, 0x15, 0x0a, 0x21, 0xf3, 0xf3, 0x7f, 0x74, 0xfc, 0x5b, 0x70, 0x66, 0x11, 0xef, + 0xd1, 0x19, 0x10, 0xda, 0x21, 0x94, 0xa2, 0xf9, 0xea, 0x4a, 0x11, 0x59, 0xdd, 0x3d, 0x18, 0x27, + 0x7c, 0x02, 0x0f, 0x1b, 0xbb, 0xab, 0x4e, 0xdb, 0x57, 0x2a, 0x21, 0xf5, 0x84, 0xde, 0x76, 0x2c, + 0x1b, 0x0b, 0xbd, 0x25, 0xbf, 0xd5, 0xdf, 0x93, 0x60, 0x7c, 0xdd, 0xf0, 0x7c, 0xbc, 0x88, 0xb1, + 0x4b, 0x66, 0x44, 0xf9, 0x30, 0x61, 0x2a, 0xe1, 0x4c, 0x56, 0xf8, 0x54, 0x25, 0xf5, 0x30, 0xd7, + 0xa3, 0x87, 0x0f, 0x4e, 0xbe, 0x0c, 0xea, 0x8f, 0x2b, 0x50, 0x09, 0x61, 0xe8, 0x2e, 0x14, 0x76, + 0x2c, 0xdb, 0xa4, 0x04, 0x26, 0xe6, 0xd4, 0x81, 0x04, 0x66, 0x57, 0x2c, 0xdb, 0xd4, 0x28, 0x3e, + 0x5a, 0x80, 0x32, 0x45, 0xd5, 0xf9, 0x86, 0x57, 0x9d, 0x3b, 0xd7, 0xb7, 0xef, 0xd2, 0x22, 0xd3, + 0x36, 0xfe, 0xa1, 0x95, 0x28, 0xe2, 0x92, 0x89, 0x3e, 0x82, 0x2a, 0x23, 0x42, 0x35, 0x8c, 0xae, + 0x70, 0x75, 0xee, 0x62, 0x5f, 0x3a, 0x54, 0x5b, 0x35, 0xd8, 0x0c, 0x7f, 0xa3, 0x5f, 0x81, 0x29, + 0x46, 0x80, 0x20, 0x1b, 0x6d, 0xac, 0x7b, 0x78, 0xab, 0x5e, 0xa4, 0x64, 0x6e, 0x0d, 0x1e, 0x0a, + 0xfd, 0xb5, 0xc6, 0x7a, 0x69, 0x78, 0x4b, 0x9b, 0xdc, 0x4c, 0x02, 0xd0, 0x23, 0xa8, 0x60, 0xbb, + 0xe5, 0x1d, 0xb8, 0x01, 0x36, 0xa9, 0x2f, 0xae, 0xce, 0x5d, 0x1b, 0x4c, 0xf2, 0x91, 0x40, 0xd7, + 0xa2, 0x9e, 0xca, 0x4f, 0x0b, 0x50, 0x09, 0x1b, 0x4e, 0x3c, 0xdb, 0xd3, 0x50, 0xb4, 0x1d, 0xbb, + 0x25, 0x54, 0x81, 0x7d, 0xf4, 0xe8, 0x6e, 0xbe, 0xd7, 0xa1, 0x29, 0x50, 0x6e, 0x6d, 0xe3, 0xd6, + 0x8e, 0xdf, 0xdd, 0xa5, 0x83, 0xa8, 0x69, 0xe1, 0x37, 0x5a, 0x80, 0x8b, 0x2d, 0xc7, 0x0e, 0x8c, + 0x56, 0xa0, 0xbb, 0xdd, 0xcd, 0x8e, 0xd5, 0xd2, 0x3d, 0x6c, 0x9b, 0xf8, 0xd7, 0xf6, 0x9c, 0xae, + 0xaf, 0xfb, 0x18, 0x9b, 0x75, 0xa0, 0x3d, 0xce, 0x71, 0xac, 0x75, 0x8a, 0xa4, 0x85, 0x38, 0x1b, + 0x18, 0x9b, 0xa8, 0x09, 0x48, 0x10, 0x31, 0x5a, 0x2d, 0x12, 0x0a, 0x11, 0x17, 0x53, 0xa5, 0x2e, + 0x66, 0xfa, 0xe8, 0xb0, 0x41, 0x36, 0x55, 0xd2, 0x3a, 0xcf, 0x1a, 0xd7, 0x57, 0x34, 0xb9, 0x95, + 0x84, 0xd0, 0xc8, 0x86, 0x3b, 0x27, 0x26, 0xc6, 0x0e, 0x3e, 0xa8, 0x4f, 0x53, 0xd6, 0x13, 0xcc, + 0x2f, 0x51, 0xf0, 0x0a, 0x3e, 0x20, 0x23, 0x66, 0x98, 0x3e, 0x6e, 0x79, 0x38, 0xa8, 0x9f, 0xa6, + 0x58, 0x55, 0x0a, 0xdb, 0xa0, 0xa0, 0x88, 0x18, 0x43, 0xd1, 0x7d, 0xab, 0x5d, 0x9f, 0x89, 0x11, + 0x63, 0x68, 0x1b, 0x56, 0x1b, 0x3d, 0x14, 0xbe, 0x8e, 0x04, 0x80, 0xf5, 0x33, 0x74, 0x49, 0xce, + 0xf3, 0x25, 0x11, 0xb1, 0x21, 0x59, 0x11, 0xaa, 0x6a, 0x4f, 0x0f, 0x5c, 0xcc, 0x3d, 0x21, 0xf9, + 0x89, 0xde, 0x84, 0x09, 0xce, 0xc6, 0x6a, 0xdb, 0x44, 0xf0, 0x7a, 0x9d, 0x32, 0x61, 0xf2, 0x6d, + 0x58, 0x6d, 0x7b, 0xbd, 0xbb, 0x89, 0xbe, 0x07, 0x88, 0x61, 0x11, 0xcb, 0x23, 0xe3, 0xa2, 0xe2, + 0x9c, 0xa5, 0x98, 0x93, 0xb4, 0x85, 0xac, 0xf4, 0x0a, 0x3e, 0xd8, 0xb0, 0xda, 0xca, 0x37, 0x12, + 0x4c, 0xa6, 0xd4, 0x12, 0xbd, 0x0d, 0x20, 0xa6, 0xd5, 0x32, 0x79, 0xdc, 0x31, 0x7e, 0x74, 0xd8, + 0xa8, 0xf0, 0xd9, 0x5b, 0x5a, 0xd4, 0x2a, 0x1c, 0x61, 0xc9, 0x4c, 0x78, 0xf9, 0xdc, 0x80, 0x18, + 0xe5, 0x6d, 0x00, 0x61, 0x30, 0x96, 0xc9, 0x1d, 0x2b, 0xa5, 0xca, 0x39, 0x13, 0xaa, 0x1c, 0x61, + 0xc9, 0x54, 0x2d, 0x28, 0x10, 0x55, 0x44, 0x93, 0x50, 0x7d, 0x66, 0xef, 0xd8, 0xce, 0xbe, 0x4d, + 0x3e, 0xe5, 0x37, 0xd0, 0x19, 0x38, 0xc5, 0x57, 0x77, 0xc9, 0xde, 0xb3, 0x02, 0xfc, 0xfd, 0x77, + 0x69, 0x83, 0x44, 0x30, 0x29, 0x4f, 0x0e, 0xc8, 0xa1, 0x53, 0x30, 0x19, 0x1a, 0x01, 0x07, 0xe6, + 0xd1, 0x14, 0x8c, 0x73, 0x7e, 0x1c, 0x54, 0x50, 0xff, 0x54, 0x02, 0xb4, 0x81, 0x6d, 0x93, 0x93, + 0x15, 0xce, 0x35, 0x1e, 0x87, 0xc5, 0x1d, 0x8f, 0x74, 0x52, 0xc7, 0xa3, 0x40, 0x79, 0x17, 0x07, + 0x86, 0x69, 0x04, 0x06, 0x37, 0xa9, 0xf0, 0x9b, 0xe8, 0x98, 0xb3, 0x6f, 0xeb, 0x61, 0x3b, 0x8b, + 0x02, 0xaa, 0xce, 0xbe, 0xbd, 0xc6, 0x41, 0xd1, 0x8e, 0xf0, 0x95, 0x04, 0x82, 0x38, 0xba, 0x03, + 0x33, 0x7d, 0xcc, 0x88, 0x6e, 0xb8, 0xda, 0xb4, 0x9b, 0x65, 0x3f, 0xb1, 0x05, 0xe6, 0x8b, 0x56, + 0x4b, 0x2c, 0xf0, 0xfa, 0x4a, 0xb8, 0xc0, 0xeb, 0x3b, 0x23, 0x58, 0xbc, 0xaa, 0x03, 0x44, 0xce, + 0x12, 0xcd, 0x42, 0x91, 0xf9, 0x56, 0x36, 0x55, 0xf5, 0x7e, 0xea, 0xad, 0x31, 0xb4, 0x11, 0xb6, + 0x43, 0xf5, 0x27, 0x05, 0x80, 0x79, 0xd7, 0xe5, 0x4b, 0x87, 0xee, 0x41, 0x81, 0xda, 0x0f, 0x73, + 0x69, 0x57, 0xb2, 0xd6, 0x22, 0xc2, 0x9e, 0xa5, 0x66, 0x44, 0x3b, 0xa0, 0x3a, 0x94, 0x5c, 0xe3, + 0xa0, 0xe3, 0x18, 0x26, 0x5f, 0x02, 0xf1, 0x89, 0x6e, 0x40, 0xc5, 0xc7, 0x76, 0xa0, 0x9b, 0x06, + 0x0f, 0x92, 0xf3, 0xcd, 0xda, 0x2f, 0x0e, 0x1b, 0x65, 0x02, 0x5c, 0x34, 0x02, 0xac, 0x85, 0xbf, + 0xc8, 0xf4, 0x05, 0x86, 0xd7, 0xc6, 0x01, 0xcd, 0xbc, 0x8a, 0x91, 0x26, 0x3f, 0xa5, 0x50, 0x92, + 0x7c, 0x55, 0x18, 0xc2, 0x82, 0x65, 0x2a, 0x97, 0xa1, 0xfa, 0xcc, 0xc7, 0x9e, 0x10, 0x1d, 0x41, + 0x61, 0xd3, 0x31, 0x0f, 0xc4, 0xce, 0x4b, 0x7e, 0x2b, 0x57, 0x61, 0x92, 0x4e, 0x08, 0xd5, 0x68, + 0x9a, 0x09, 0x84, 0x1b, 0x74, 0x2e, 0xda, 0xa0, 0x95, 0x7b, 0x50, 0xdb, 0xc0, 0x01, 0xc7, 0xdc, + 0x72, 0x7a, 0xe6, 0x4d, 0xea, 0x99, 0xb7, 0xe5, 0x42, 0x39, 0x27, 0xe7, 0x95, 0xbb, 0x50, 0xdd, + 0xc0, 0x01, 0x91, 0xe2, 0x78, 0xfd, 0xc6, 0xa1, 0x3a, 0xdf, 0x22, 0xc6, 0xd7, 0xc1, 0x66, 0x1b, + 0xab, 0x7f, 0x28, 0x41, 0x81, 0xfa, 0xa1, 0x71, 0xa8, 0x3c, 0xb3, 0x4d, 0xbc, 0x65, 0xd9, 0x98, + 0x98, 0xe4, 0x29, 0x98, 0x24, 0xe0, 0xd8, 0x28, 0x65, 0x89, 0xd8, 0x29, 0x01, 0xa6, 0xc6, 0x25, + 0xe7, 0xd1, 0x34, 0xc8, 0xa4, 0x21, 0x3e, 0x12, 0xb9, 0x20, 0x68, 0xc4, 0xc4, 0x94, 0x8b, 0x02, + 0x18, 0x93, 0x41, 0x1e, 0x53, 0x89, 0x68, 0x39, 0xb5, 0x50, 0x2e, 0xc9, 0xa5, 0xe5, 0x42, 0xb9, + 0x20, 0x17, 0xd5, 0xdf, 0x1d, 0x03, 0xd8, 0x38, 0xf0, 0x03, 0xbc, 0x4b, 0xfa, 0xc5, 0x03, 0xa4, + 0xaf, 0xc2, 0xd0, 0xf1, 0x23, 0x28, 0x0b, 0xfd, 0xe3, 0x6a, 0x79, 0x25, 0x43, 0x2d, 0x23, 0x2a, + 0xb3, 0xb4, 0x9b, 0x16, 0x76, 0x42, 0x1f, 0x43, 0x25, 0xd4, 0x2f, 0x1e, 0x7c, 0x5c, 0xcf, 0xd2, + 0xbb, 0x18, 0x89, 0x35, 0x01, 0xd7, 0xa2, 0xae, 0xca, 0x3f, 0x4a, 0x50, 0x09, 0x1b, 0xd0, 0x47, + 0x50, 0x72, 0x3d, 0xa7, 0x85, 0x7d, 0x91, 0x56, 0x5e, 0x1d, 0x2c, 0xd5, 0x3a, 0x43, 0xd6, 0x44, + 0x2f, 0xb2, 0x49, 0xef, 0x1b, 0x9e, 0xed, 0xd7, 0x73, 0x97, 0xf2, 0xd7, 0x2b, 0x1a, 0xfb, 0x40, + 0xf7, 0xa0, 0x2e, 0x08, 0xe8, 0x96, 0xad, 0xfb, 0xc6, 0x2e, 0xd6, 0x05, 0x1f, 0x96, 0x00, 0x9d, + 0x16, 0xed, 0x4b, 0xf6, 0x86, 0xb1, 0x8b, 0x39, 0x5d, 0x74, 0x1f, 0x72, 0xe6, 0x26, 0x8f, 0x3c, + 0x2e, 0x0f, 0x19, 0xde, 0x62, 0xb3, 0x39, 0x76, 0x74, 0xd8, 0xc8, 0x2d, 0x36, 0xb5, 0x9c, 0xb9, + 0xa9, 0xfc, 0x56, 0x1e, 0x72, 0x8b, 0x4d, 0xe2, 0xe5, 0xb8, 0xeb, 0x60, 0x43, 0xca, 0x6b, 0xe1, + 0x37, 0x0d, 0x0c, 0x98, 0x93, 0xf5, 0x79, 0x8e, 0x1a, 0x7e, 0xa3, 0x37, 0x61, 0x3c, 0x5e, 0x7b, + 0x60, 0x72, 0xe6, 0xb5, 0x24, 0x10, 0xa9, 0x3c, 0x9c, 0xe7, 0xa9, 0x35, 0x95, 0x34, 0xaf, 0x25, + 0x60, 0xc4, 0xc6, 0x77, 0xf1, 0xee, 0x26, 0xf6, 0x7c, 0x6a, 0x9b, 0x79, 0x4d, 0x7c, 0x92, 0x16, + 0x13, 0xef, 0x59, 0x2d, 0xec, 0xd3, 0x1a, 0x45, 0x5e, 0x13, 0x9f, 0xe8, 0x2a, 0x4c, 0xf8, 0xd8, + 0x23, 0xbf, 0xf5, 0xc0, 0xd9, 0xc1, 0xb6, 0x5f, 0x2f, 0x31, 0xf6, 0x1c, 0xfa, 0x94, 0x02, 0x51, + 0x13, 0x2e, 0x24, 0x6a, 0x29, 0x1e, 0x76, 0x3b, 0x56, 0x8b, 0xfd, 0xb6, 0xec, 0x2d, 0xa7, 0x5e, + 0xa6, 0xbd, 0xce, 0xc5, 0x91, 0xb4, 0x08, 0x87, 0x5a, 0xdf, 0x35, 0x98, 0x14, 0x6e, 0x5e, 0xc7, + 0x7b, 0x98, 0xcc, 0x13, 0xd0, 0x5e, 0x13, 0x02, 0xfc, 0x88, 0x42, 0xd1, 0xdb, 0x80, 0x7c, 0x92, + 0x5e, 0x98, 0xba, 0xdb, 0xf5, 0xb7, 0x85, 0x5c, 0x35, 0x8a, 0x2b, 0xb3, 0x96, 0xf5, 0xae, 0xbf, + 0xcd, 0x44, 0x5b, 0x2e, 0x94, 0xab, 0x72, 0x4d, 0xfd, 0x3c, 0x59, 0x50, 0x58, 0x76, 0x2c, 0xfb, + 0x55, 0xc3, 0xfe, 0x70, 0xdf, 0xf9, 0xf7, 0x02, 0x94, 0xf8, 0x06, 0x81, 0xee, 0x00, 0xc4, 0xe2, + 0x26, 0x16, 0x22, 0x9c, 0x7e, 0x79, 0xd8, 0x98, 0x6a, 0x3b, 0xde, 0xee, 0x03, 0xd5, 0xf5, 0xac, + 0x5d, 0xc3, 0x3b, 0x58, 0xc1, 0x07, 0xaa, 0x56, 0x71, 0xe3, 0x91, 0xd4, 0xb0, 0x64, 0x58, 0x48, + 0x98, 0x8f, 0x49, 0xb8, 0xdd, 0xb3, 0x38, 0xc5, 0x4b, 0xf9, 0xeb, 0xd5, 0xb9, 0x4b, 0x99, 0x0a, + 0x1a, 0x5b, 0xb0, 0x66, 0xe3, 0xe5, 0x61, 0xe3, 0x1c, 0x13, 0x69, 0xcb, 0xf1, 0xb0, 0xd5, 0xb6, + 0x57, 0xf0, 0xc1, 0x83, 0x70, 0x97, 0x53, 0xd3, 0xeb, 0x6b, 0x82, 0x2a, 0x96, 0x14, 0xeb, 0x36, + 0xde, 0x67, 0x39, 0x82, 0xaf, 0x1b, 0xdd, 0xc0, 0xd9, 0x35, 0x02, 0xab, 0x65, 0x74, 0x3a, 0x07, + 0xac, 0xbe, 0xd5, 0x3c, 0xf3, 0xf2, 0xb0, 0x71, 0x8a, 0xd1, 0x36, 0xf1, 0x96, 0xd1, 0xed, 0x04, + 0x0f, 0x02, 0xaf, 0x8b, 0x55, 0xad, 0x11, 0x92, 0x78, 0x8c, 0xf7, 0xa9, 0x8f, 0xf3, 0xe7, 0xe3, + 0xfd, 0xd1, 0x03, 0x50, 0x08, 0x41, 0x9d, 0xae, 0x61, 0x6c, 0x71, 0xf5, 0xad, 0x8e, 0xd1, 0xa6, + 0x2a, 0x54, 0xd6, 0x66, 0x08, 0x06, 0xcd, 0x2e, 0xc3, 0x35, 0xfe, 0xb8, 0x63, 0xb4, 0xd1, 0x4d, + 0x98, 0x62, 0x3a, 0x1b, 0xeb, 0x57, 0xaf, 0xb0, 0xd8, 0x8e, 0x35, 0x84, 0xf8, 0x44, 0x81, 0xe2, + 0xb8, 0x64, 0xa8, 0xd8, 0xe3, 0xf1, 0xb5, 0x1c, 0x21, 0x6f, 0x50, 0x78, 0xba, 0x86, 0x54, 0xed, + 0xa9, 0x21, 0xdd, 0x87, 0xb3, 0xdb, 0x96, 0x89, 0x89, 0x43, 0x31, 0x5c, 0x57, 0xb7, 0x9d, 0xc0, + 0xda, 0xe2, 0x8a, 0xcd, 0xd4, 0xb2, 0xac, 0xcd, 0x10, 0x84, 0x25, 0x7b, 0xde, 0x75, 0x1f, 0xc7, + 0x5b, 0x89, 0x24, 0xb4, 0x2b, 0x95, 0xc3, 0xf5, 0xf0, 0x9e, 0x85, 0xf7, 0xfd, 0xfa, 0x38, 0xed, + 0x23, 0x93, 0x16, 0x22, 0xc7, 0x3a, 0x87, 0x2f, 0x13, 0xdf, 0x5e, 0x56, 0x7f, 0x9a, 0x23, 0xdb, + 0x5d, 0xb4, 0x3a, 0xa9, 0xa8, 0xa5, 0x37, 0x2c, 0x4d, 0x46, 0x2d, 0x0f, 0xa1, 0xcc, 0x26, 0x35, + 0x2c, 0x8e, 0x5e, 0x22, 0x51, 0x19, 0x25, 0xb5, 0xb4, 0x98, 0xad, 0xaa, 0x25, 0xda, 0x63, 0xc9, + 0x44, 0x9f, 0x40, 0x2d, 0xd4, 0x38, 0x12, 0x67, 0xb0, 0x68, 0xf5, 0xcd, 0xa3, 0xc3, 0x46, 0x55, + 0x88, 0x74, 0xe0, 0xe2, 0x6c, 0x22, 0x55, 0x3f, 0xc2, 0x40, 0x8b, 0x80, 0x8c, 0x6e, 0xb0, 0x8d, + 0xed, 0x40, 0xb8, 0x89, 0xae, 0xd7, 0xa1, 0x5e, 0xab, 0xd2, 0x3c, 0x7d, 0x74, 0xd8, 0x98, 0x9a, + 0x4f, 0xb4, 0x3e, 0xd3, 0x56, 0xb5, 0xa9, 0x64, 0x87, 0x67, 0x5e, 0x87, 0x98, 0x28, 0x7e, 0xe1, + 0x5a, 0x1e, 0x05, 0x70, 0xa7, 0x16, 0x83, 0xa8, 0xff, 0x21, 0x91, 0xa8, 0x36, 0xe6, 0x3c, 0xd0, + 0x7d, 0xc8, 0xb7, 0xc2, 0xd8, 0xfd, 0xda, 0xd1, 0x61, 0x23, 0xbf, 0x40, 0x07, 0x7d, 0x3e, 0x2d, + 0xef, 0xc3, 0x96, 0xd3, 0xe9, 0xee, 0xda, 0x0f, 0x5a, 0x96, 0xa9, 0x6a, 0xa4, 0x0f, 0xfa, 0x14, + 0xce, 0x24, 0xeb, 0xc5, 0x91, 0x9d, 0xb3, 0x79, 0x94, 0x5f, 0x1e, 0x36, 0x6a, 0x8c, 0x8e, 0x65, + 0x9b, 0xf8, 0x85, 0xaa, 0x9d, 0x4e, 0x54, 0x8d, 0x43, 0x73, 0x5f, 0x85, 0x53, 0x49, 0x4f, 0x17, + 0x4d, 0x66, 0x76, 0xd2, 0x43, 0x65, 0xa7, 0xd1, 0xda, 0x54, 0xc2, 0x17, 0x3e, 0x4d, 0x85, 0x6e, + 0x85, 0x44, 0xe8, 0xa6, 0xfe, 0x57, 0x11, 0xaa, 0xb1, 0x82, 0xeb, 0xab, 0x0c, 0x7e, 0x89, 0x07, + 0x96, 0xb9, 0x91, 0x03, 0xcb, 0x8c, 0xe9, 0x60, 0xa1, 0xe6, 0x4d, 0x98, 0x62, 0xfb, 0x4e, 0x7c, + 0x06, 0x4b, 0xd4, 0xad, 0x4d, 0xb2, 0x86, 0x68, 0xa6, 0xe2, 0x56, 0x1d, 0xe2, 0xd6, 0x18, 0xae, + 0x30, 0x54, 0x81, 0x6b, 0xc3, 0x18, 0xeb, 0x4e, 0x3d, 0x45, 0x75, 0x4e, 0xc9, 0x12, 0x72, 0x8d, + 0x62, 0x34, 0x1f, 0xbc, 0x3c, 0x6c, 0xdc, 0xed, 0xf1, 0x7f, 0x21, 0xad, 0x87, 0x1e, 0xde, 0xc2, + 0x1e, 0xb6, 0x5b, 0xd8, 0x7f, 0xb0, 0x96, 0x14, 0x49, 0xd5, 0x38, 0x97, 0x41, 0xfa, 0x90, 0x3f, + 0x9e, 0x3e, 0x2c, 0x42, 0x2d, 0xde, 0xc0, 0xc3, 0x8c, 0x4c, 0x2f, 0x1e, 0xdf, 0xc4, 0xb4, 0x44, + 0xaf, 0xb8, 0x1e, 0x14, 0x93, 0x21, 0xfc, 0x19, 0x28, 0x59, 0xbe, 0xbe, 0x6b, 0xd9, 0x58, 0x1c, + 0x41, 0x58, 0xfe, 0x9a, 0x65, 0x63, 0x74, 0x2b, 0x1e, 0xdb, 0x57, 0x68, 0x6c, 0xdf, 0x2b, 0x74, + 0x14, 0xdf, 0xab, 0x50, 0x33, 0xa2, 0x90, 0x93, 0x55, 0x24, 0xca, 0x5a, 0x02, 0x86, 0x1e, 0x27, + 0x72, 0x80, 0x71, 0x3a, 0x11, 0xb7, 0x13, 0x39, 0xc0, 0xcb, 0xc3, 0xc6, 0xc5, 0x18, 0x03, 0xa1, + 0x6b, 0x51, 0x2f, 0x35, 0x96, 0x25, 0xa0, 0xdb, 0x30, 0xed, 0x74, 0x03, 0xdd, 0xd9, 0xd2, 0xfd, + 0xc0, 0xf1, 0xb0, 0xa8, 0x2d, 0xd5, 0xa7, 0x28, 0xef, 0x29, 0xa7, 0x1b, 0x3c, 0xd9, 0xda, 0x20, + 0x2d, 0x5c, 0xf7, 0x96, 0x0b, 0xe5, 0x49, 0x59, 0x5e, 0x2e, 0x94, 0x65, 0x79, 0x4a, 0xfd, 0xdb, + 0x02, 0x94, 0x78, 0xf6, 0x7a, 0xc2, 0x9d, 0xf9, 0xee, 0x10, 0xa3, 0x1f, 0x75, 0x49, 0xf3, 0x27, + 0x5a, 0xd2, 0x7b, 0x50, 0xf4, 0x03, 0xb2, 0x36, 0x05, 0x6a, 0x76, 0x97, 0xfb, 0x74, 0x27, 0xe3, + 0x9b, 0xdd, 0x20, 0x88, 0x1a, 0xc3, 0xef, 0x09, 0x28, 0x8a, 0xbd, 0x01, 0xc5, 0x65, 0xa8, 0xb5, + 0x3c, 0x6c, 0x90, 0x8d, 0x8d, 0x2e, 0x3f, 0x8b, 0xeb, 0xaa, 0x1c, 0x46, 0xd7, 0xfb, 0x5c, 0x5c, + 0x3d, 0x58, 0x04, 0x17, 0x29, 0xc3, 0x17, 0xf1, 0x98, 0x31, 0xdf, 0xcf, 0xde, 0x16, 0x29, 0x4a, + 0xf3, 0xea, 0xcb, 0xc3, 0xc6, 0xe5, 0x1e, 0x7b, 0xeb, 0x31, 0xad, 0x30, 0xec, 0x3c, 0x07, 0x15, + 0x12, 0x36, 0x32, 0xce, 0x2c, 0x0a, 0x2c, 0x13, 0x00, 0xe1, 0xac, 0x3a, 0x50, 0xa4, 0x83, 0xcd, + 0x48, 0xb7, 0x96, 0xec, 0x96, 0xb3, 0x6b, 0xd9, 0x6d, 0x1e, 0xd7, 0xc9, 0x12, 0x3a, 0x07, 0x67, + 0x9e, 0x74, 0x83, 0xb6, 0x13, 0x01, 0x1f, 0xd9, 0xcf, 0xbb, 0xb8, 0x8b, 0x4d, 0x39, 0x47, 0x72, + 0xb1, 0x54, 0xe3, 0x06, 0xb6, 0x03, 0x39, 0x8f, 0x6a, 0x50, 0x9e, 0x6f, 0xb5, 0xb0, 0x1b, 0x60, + 0x53, 0x2e, 0x2c, 0x17, 0xca, 0x15, 0x19, 0xd4, 0x6f, 0x4b, 0x50, 0x8b, 0xaf, 0xd5, 0x09, 0x35, + 0xea, 0x7e, 0xc2, 0x93, 0x5e, 0x1d, 0xa6, 0x11, 0xf1, 0x24, 0x9d, 0xd9, 0xb1, 0xe3, 0x62, 0x5b, + 0x9c, 0x56, 0x59, 0xfe, 0x13, 0x17, 0xdb, 0x3d, 0xcb, 0x5d, 0xe8, 0x1f, 0x3f, 0x16, 0x63, 0xf1, + 0xe3, 0x65, 0xa8, 0x75, 0x6d, 0x0f, 0x1b, 0xa6, 0x4e, 0x83, 0x03, 0xea, 0x1c, 0x8a, 0x5a, 0x95, + 0xc1, 0x16, 0x68, 0x3c, 0xdb, 0x80, 0x6a, 0xc7, 0xf0, 0x03, 0xbd, 0xeb, 0xc6, 0x94, 0x04, 0x08, + 0xe8, 0x19, 0x85, 0x90, 0x08, 0x26, 0x55, 0xb7, 0x24, 0x93, 0x51, 0xa6, 0x5c, 0xe4, 0x44, 0xad, + 0x92, 0x0c, 0xfe, 0x7d, 0x28, 0x71, 0x18, 0x75, 0x37, 0x7d, 0xca, 0x45, 0xa2, 0xe0, 0x24, 0x70, + 0xd1, 0x9d, 0x28, 0x73, 0x81, 0xfe, 0xba, 0xc6, 0xd4, 0x29, 0xca, 0x6a, 0xee, 0xc3, 0x59, 0x11, + 0x17, 0xf5, 0x6e, 0x38, 0x55, 0x2a, 0xe1, 0x0c, 0x47, 0x48, 0x69, 0x22, 0x7a, 0x1f, 0xce, 0x74, + 0x9c, 0x96, 0xd1, 0xd1, 0xfb, 0xed, 0x3e, 0xd3, 0xb4, 0x79, 0x31, 0xb5, 0x05, 0xa5, 0x6d, 0x6a, + 0xbc, 0xd7, 0xa6, 0x7e, 0x47, 0x02, 0xb9, 0x27, 0x3b, 0x92, 0xe9, 0xa0, 0x6e, 0x0f, 0xf5, 0x0e, + 0xc9, 0x8c, 0xa9, 0xf9, 0xbd, 0x97, 0x87, 0x8d, 0x6b, 0x3d, 0x56, 0xb5, 0x90, 0xe5, 0x90, 0x54, + 0x6d, 0xd2, 0x4b, 0xe5, 0x5b, 0x09, 0x1b, 0x43, 0x49, 0x1b, 0x43, 0x1f, 0xc1, 0xf9, 0x9e, 0x1c, + 0x4b, 0xb7, 0x4c, 0x12, 0x7e, 0x6d, 0x59, 0xd8, 0xab, 0x9f, 0xa2, 0xb3, 0x70, 0x36, 0x95, 0x6d, + 0x2d, 0x85, 0x08, 0xd1, 0x0c, 0xf6, 0x4e, 0xfd, 0x74, 0x6c, 0x06, 0xd3, 0x13, 0x9f, 0x0a, 0xb6, + 0x4f, 0xa7, 0x83, 0x6d, 0x75, 0x35, 0xbb, 0xd4, 0x32, 0x09, 0x55, 0x1e, 0xed, 0x92, 0x56, 0x56, + 0xf5, 0xe4, 0x6a, 0x44, 0x01, 0xb4, 0xea, 0xb9, 0xd6, 0xed, 0x04, 0x16, 0xe3, 0x48, 0x81, 0xf9, + 0xe5, 0x42, 0x79, 0x42, 0x9e, 0x0c, 0xb7, 0x8c, 0x29, 0x19, 0xa9, 0x3f, 0xcb, 0xc1, 0xb9, 0x01, + 0x73, 0xfe, 0x2a, 0x31, 0xd4, 0x49, 0xf7, 0x92, 0xcc, 0x80, 0x29, 0x9f, 0x1d, 0x30, 0xbd, 0x9e, + 0xb8, 0xfa, 0x16, 0xa0, 0xb8, 0x8e, 0xf2, 0x04, 0x89, 0xb9, 0x8e, 0xa9, 0x58, 0x0b, 0xcb, 0x90, + 0xd4, 0xbf, 0xca, 0xc3, 0x18, 0x9b, 0xd6, 0xef, 0x2e, 0xff, 0x5d, 0x1b, 0x16, 0x6d, 0xf5, 0xe1, + 0xd2, 0x67, 0x4e, 0x4f, 0x41, 0x91, 0x84, 0x44, 0x2c, 0xea, 0x29, 0x6b, 0x05, 0xcb, 0x5f, 0xc3, + 0xe8, 0x02, 0x80, 0xe5, 0xeb, 0xd4, 0x5a, 0x1d, 0x8f, 0xe7, 0x9b, 0x15, 0xcb, 0x5f, 0x60, 0x80, + 0xa4, 0xc1, 0x94, 0x52, 0x06, 0xf3, 0x7a, 0x62, 0x38, 0x37, 0xda, 0x54, 0x8b, 0x43, 0x37, 0xd5, + 0xec, 0x20, 0x36, 0x65, 0x51, 0xf1, 0x50, 0x36, 0x63, 0xa7, 0x5d, 0x2e, 0x94, 0xc7, 0xe4, 0x92, + 0xfa, 0xeb, 0x30, 0xc6, 0x88, 0x9e, 0x70, 0x01, 0xff, 0x5f, 0x96, 0x8a, 0xf6, 0xcb, 0x8a, 0xd2, + 0x4a, 0xab, 0xfe, 0xb7, 0x04, 0x93, 0x1b, 0x49, 0x4f, 0x42, 0x28, 0xf6, 0xfa, 0x5e, 0xa9, 0x1f, + 0xc5, 0x74, 0x2e, 0xf0, 0x4a, 0xf2, 0xbc, 0xc6, 0xc8, 0xfe, 0x2d, 0x28, 0xb2, 0x4a, 0x44, 0xa1, + 0x4f, 0x3f, 0xd6, 0xac, 0xde, 0x81, 0x49, 0xee, 0xad, 0xd6, 0x62, 0x27, 0x1f, 0x43, 0x8a, 0xd1, + 0xea, 0x2f, 0xa6, 0xa1, 0xca, 0x0e, 0xc0, 0x59, 0x72, 0xfb, 0x41, 0xa2, 0xfa, 0xff, 0x66, 0x66, + 0x15, 0x28, 0x42, 0x1f, 0xad, 0xfc, 0x7f, 0x1a, 0xc6, 0x2c, 0x5f, 0xb7, 0xf1, 0x3e, 0x0f, 0x39, + 0x8a, 0x96, 0xff, 0x18, 0xef, 0x2b, 0x5f, 0xd0, 0xd3, 0xa6, 0x70, 0xc4, 0x2c, 0x18, 0x30, 0x7b, + 0xac, 0x40, 0x3a, 0x89, 0x15, 0x28, 0x77, 0x92, 0xc4, 0x17, 0x71, 0x07, 0x13, 0xe2, 0x17, 0x7a, + 0x55, 0x33, 0xa6, 0x83, 0xca, 0x67, 0x80, 0x62, 0xc9, 0xae, 0x90, 0x68, 0x1e, 0xaa, 0xb1, 0x22, + 0x28, 0x17, 0xa8, 0x91, 0x25, 0x50, 0xac, 0xb3, 0x16, 0xef, 0xa3, 0xb4, 0x13, 0x84, 0x85, 0x34, + 0x67, 0xe3, 0x1b, 0x41, 0x89, 0x6f, 0x04, 0xaf, 0xe4, 0xe8, 0x95, 0x4f, 0x60, 0x82, 0x6b, 0x81, + 0x90, 0x3e, 0x16, 0x2f, 0x49, 0xa3, 0xc7, 0x4b, 0x84, 0x10, 0xdf, 0x0d, 0x63, 0x84, 0x78, 0xa8, + 0x33, 0x88, 0x10, 0xef, 0xa4, 0x09, 0x5c, 0x65, 0x01, 0xc6, 0x99, 0x3f, 0x11, 0x74, 0xe6, 0xc2, + 0x24, 0x5b, 0x1a, 0x96, 0x64, 0x8b, 0x44, 0x99, 0x10, 0x61, 0xce, 0x25, 0x46, 0x84, 0x19, 0xec, + 0x20, 0x22, 0xac, 0x8b, 0xc6, 0x31, 0x95, 0x2a, 0x54, 0x56, 0x2d, 0x12, 0xbc, 0x9b, 0xd8, 0x54, + 0xfe, 0x58, 0x82, 0x33, 0x89, 0x30, 0xc7, 0xf0, 0x02, 0xcb, 0xe8, 0xac, 0x12, 0x85, 0xcd, 0xb8, + 0xd6, 0x27, 0x8d, 0x7c, 0xad, 0x6f, 0x21, 0x55, 0x46, 0xcf, 0x51, 0x27, 0x3c, 0x54, 0x5d, 0x12, + 0x9d, 0x96, 0x0b, 0xe5, 0xbc, 0x5c, 0x50, 0xfe, 0x7c, 0x0c, 0xca, 0xac, 0xd8, 0x47, 0xb5, 0x30, + 0x6e, 0x99, 0xb7, 0x86, 0x59, 0xa6, 0xe8, 0x17, 0x37, 0xd1, 0x69, 0x28, 0x06, 0x56, 0xd0, 0x11, + 0xc7, 0x8c, 0xec, 0x23, 0x3c, 0x35, 0x2b, 0x44, 0xa7, 0x66, 0xfd, 0x0b, 0x01, 0x4a, 0x09, 0x8a, + 0x4d, 0xc3, 0xb7, 0x5a, 0xca, 0xdf, 0x4b, 0x30, 0x19, 0x1e, 0x6c, 0xb7, 0xb0, 0xb5, 0xf7, 0x5a, + 0x2c, 0xa5, 0xc7, 0xfc, 0x73, 0x27, 0xda, 0x04, 0x63, 0x4a, 0x9f, 0x3f, 0x86, 0xd2, 0xaf, 0x00, + 0x4a, 0x9e, 0x54, 0x93, 0x5c, 0xee, 0xa4, 0xc4, 0x9e, 0xc0, 0x4c, 0x92, 0x58, 0x38, 0x4d, 0x27, + 0x24, 0xf8, 0x07, 0x52, 0xef, 0x59, 0xe6, 0xff, 0xe6, 0x74, 0xa9, 0x5f, 0x89, 0x43, 0xcb, 0x2a, + 0x94, 0xf8, 0x4d, 0x02, 0xf9, 0x0d, 0x12, 0x56, 0xd3, 0xe2, 0x1d, 0xd1, 0x92, 0xe8, 0xb0, 0x32, + 0xa5, 0x2a, 0x72, 0x0e, 0x29, 0x30, 0x43, 0x1a, 0x7a, 0x27, 0x5c, 0xce, 0xa3, 0x8b, 0xa0, 0xf4, + 0xb6, 0x85, 0x7d, 0x0b, 0xfd, 0x4e, 0x40, 0x8b, 0xca, 0x3f, 0x48, 0x70, 0x6a, 0x1d, 0x63, 0x8f, + 0x64, 0xf7, 0x5d, 0x7f, 0xc1, 0xb1, 0x6d, 0xdc, 0x22, 0xfe, 0xe2, 0x0a, 0x94, 0x5c, 0x8c, 0xbd, + 0xe8, 0xd2, 0x05, 0xbd, 0x77, 0x46, 0x30, 0x97, 0x16, 0xb5, 0x31, 0xd2, 0xb4, 0x64, 0xa2, 0x2f, + 0xa0, 0x12, 0x78, 0x86, 0xed, 0xbb, 0x8e, 0x17, 0xf0, 0xe4, 0xfa, 0xc3, 0x61, 0x76, 0x96, 0xc1, + 0x6c, 0xf6, 0xa9, 0x20, 0xa2, 0x45, 0xf4, 0xd4, 0xfb, 0x50, 0x09, 0xe1, 0xc9, 0x09, 0x2b, 0x41, + 0x7e, 0x75, 0xfe, 0xb1, 0x2c, 0x91, 0x1f, 0x9f, 0xcd, 0x3f, 0x96, 0x73, 0x64, 0x0a, 0xd7, 0x3d, + 0xe7, 0x85, 0xb5, 0x6b, 0x05, 0x07, 0x72, 0x5e, 0xf9, 0x10, 0x66, 0x22, 0x36, 0x1a, 0x6e, 0x31, + 0x46, 0x96, 0xdd, 0x1e, 0x69, 0x58, 0xc9, 0xee, 0x8b, 0x96, 0xdf, 0x3a, 0xd6, 0xac, 0x28, 0x5f, + 0x4b, 0x70, 0x36, 0xea, 0x4f, 0xa7, 0x7c, 0xde, 0xf7, 0x9d, 0x96, 0x65, 0x8c, 0x3c, 0xb1, 0x37, + 0xa0, 0x22, 0x22, 0x31, 0x71, 0x91, 0xa5, 0x76, 0x74, 0xd8, 0x28, 0xf3, 0xe4, 0x77, 0x45, 0x2b, + 0xf3, 0xe8, 0x6b, 0x27, 0x71, 0xe5, 0x25, 0xdf, 0xff, 0xca, 0x8b, 0xfa, 0xb3, 0x7c, 0x76, 0x16, + 0x37, 0x05, 0xe3, 0x04, 0x1c, 0x3a, 0x7a, 0x56, 0xbf, 0xe1, 0xca, 0x94, 0x0e, 0x36, 0xe4, 0x5c, + 0x56, 0x23, 0xdf, 0x9e, 0xe5, 0xbc, 0x50, 0xd1, 0xde, 0x98, 0x40, 0x2e, 0x64, 0xb4, 0x89, 0x7e, + 0x45, 0x34, 0x03, 0x28, 0xa6, 0xbe, 0xa2, 0xcf, 0x98, 0x80, 0x27, 0x37, 0x56, 0xb9, 0x84, 0x4e, + 0xc3, 0x14, 0xb3, 0x91, 0xd8, 0x3e, 0x29, 0x97, 0x05, 0x38, 0xb1, 0xf3, 0xc9, 0x15, 0x24, 0x43, + 0x8d, 0x80, 0x85, 0x87, 0x97, 0x01, 0x35, 0xe0, 0x5c, 0x7a, 0x10, 0xb1, 0xfd, 0x4c, 0xae, 0x89, + 0x51, 0x66, 0x28, 0xab, 0x3c, 0x2e, 0x8c, 0x2d, 0x5b, 0xc5, 0xe4, 0x89, 0xde, 0xf6, 0xb8, 0x0e, + 0xc9, 0x93, 0xe8, 0x32, 0x5c, 0x48, 0xb6, 0xa7, 0x74, 0x44, 0x96, 0xd5, 0x42, 0xb9, 0x2a, 0x57, + 0xd5, 0x1f, 0x49, 0xd4, 0xbf, 0x86, 0x32, 0x32, 0x3b, 0x52, 0xde, 0x4b, 0xdc, 0xe9, 0x8c, 0x22, + 0x8c, 0x82, 0xc6, 0x3e, 0xc8, 0x0e, 0xe5, 0x1a, 0x6d, 0x96, 0xd3, 0x15, 0x34, 0xfa, 0x5b, 0x59, + 0x13, 0xb7, 0x0f, 0x5e, 0x4b, 0xbc, 0xd8, 0x23, 0x1a, 0x4d, 0xd8, 0xb0, 0xf2, 0x79, 0x24, 0xda, + 0xf0, 0x60, 0x3a, 0x56, 0xc8, 0xf2, 0xf5, 0xc0, 0xd1, 0x2d, 0x7a, 0x89, 0x8a, 0xdf, 0x1e, 0x10, + 0x85, 0x2c, 0xff, 0xa9, 0xc3, 0x2e, 0x57, 0x29, 0x6f, 0x89, 0x11, 0x0c, 0x0e, 0x4a, 0xd5, 0xcf, + 0x00, 0xb8, 0xc2, 0x7c, 0x82, 0x83, 0xf8, 0x0d, 0x8c, 0xff, 0x2f, 0x08, 0x9c, 0x2c, 0x32, 0x53, + 0x7f, 0x13, 0xaa, 0xd4, 0x87, 0xf1, 0x65, 0x78, 0x27, 0x1a, 0xeb, 0x55, 0x98, 0xf0, 0xb7, 0x8d, + 0x4e, 0xc7, 0xd9, 0xd7, 0x13, 0x8f, 0x23, 0xc6, 0x39, 0x74, 0x9e, 0x02, 0xe3, 0x02, 0x14, 0xe9, + 0x21, 0xd4, 0xa0, 0x1d, 0x3f, 0xe6, 0x34, 0x35, 0x86, 0xad, 0xae, 0xc2, 0x78, 0xc2, 0x14, 0x94, + 0xb9, 0xe3, 0x4c, 0x37, 0xbf, 0x48, 0x13, 0x9e, 0xa1, 0xff, 0x73, 0x0e, 0xa6, 0xc5, 0x71, 0x65, + 0xd7, 0xdf, 0x5e, 0x70, 0xec, 0x2d, 0xab, 0xdd, 0xf5, 0xb0, 0xf2, 0x97, 0xb9, 0x88, 0x6c, 0xaa, + 0x38, 0x24, 0x0d, 0xb8, 0xcd, 0x9f, 0x1b, 0x78, 0x9b, 0x3f, 0xdf, 0x73, 0x9b, 0x7f, 0xf0, 0x21, + 0x6e, 0xe1, 0x04, 0x87, 0xb8, 0xc5, 0xec, 0x43, 0x5c, 0xc2, 0xc8, 0xdf, 0x76, 0xf6, 0xb3, 0x19, + 0xb1, 0xe3, 0x99, 0x19, 0x82, 0x90, 0xcd, 0x88, 0x76, 0x4d, 0x32, 0x2a, 0x31, 0x46, 0xa4, 0x25, + 0xce, 0x28, 0x9a, 0xdb, 0x1f, 0x84, 0x69, 0x85, 0x50, 0xbe, 0xd7, 0x75, 0xf3, 0xa1, 0x09, 0xe3, + 0xd1, 0x8d, 0x52, 0xec, 0x06, 0xca, 0xf5, 0x88, 0xf0, 0x90, 0x6c, 0x2d, 0xa4, 0xf1, 0x4d, 0x0e, + 0xca, 0xc2, 0x0f, 0x2b, 0xff, 0x16, 0xbb, 0x5b, 0xf8, 0x1d, 0xdc, 0x65, 0xbb, 0x3b, 0x24, 0xb1, + 0xef, 0x97, 0xc6, 0x1f, 0xeb, 0x62, 0x5b, 0xe2, 0x3e, 0x23, 0x5b, 0xd0, 0xf0, 0x9b, 0x5d, 0xcc, + 0x52, 0x54, 0x61, 0x7b, 0xfd, 0x93, 0x48, 0xf5, 0x1b, 0x09, 0x1a, 0x5a, 0xb2, 0xd4, 0x46, 0xf2, + 0x21, 0xdc, 0xb6, 0xfc, 0x00, 0x7b, 0xec, 0x4d, 0x81, 0x95, 0x78, 0x53, 0x10, 0x1e, 0xeb, 0xc7, + 0x5e, 0xc4, 0xf0, 0x63, 0xfd, 0xe8, 0x04, 0xff, 0xa4, 0xb9, 0x69, 0xb8, 0x5e, 0x9f, 0x42, 0x3d, + 0x21, 0x56, 0x30, 0xdf, 0x0d, 0x9c, 0x47, 0xb6, 0xb1, 0xd9, 0xc1, 0xca, 0x95, 0x48, 0x9e, 0x3a, + 0x94, 0x30, 0x05, 0x9a, 0xfc, 0x8a, 0xbf, 0xf8, 0x8c, 0x28, 0xb5, 0xa1, 0xda, 0x34, 0x6c, 0x1b, + 0x7b, 0xbf, 0xdc, 0x75, 0x02, 0xac, 0x5c, 0x8e, 0x3a, 0xcf, 0xc0, 0x98, 0x67, 0xd8, 0xa6, 0xb3, + 0xcb, 0xfb, 0xf2, 0x2f, 0xe5, 0x7d, 0x31, 0x6f, 0xd3, 0x50, 0x7c, 0x4e, 0x3a, 0x71, 0xbd, 0x62, + 0x1f, 0xf4, 0x39, 0x58, 0x37, 0xd8, 0x76, 0x3c, 0x3e, 0x14, 0xfe, 0xa5, 0xae, 0x91, 0x04, 0x9e, + 0x3d, 0x45, 0x78, 0xf4, 0x82, 0x84, 0x70, 0x8b, 0x46, 0x60, 0xc4, 0x9d, 0xf1, 0xdb, 0x82, 0xee, + 0x15, 0x18, 0xc7, 0x14, 0x83, 0x55, 0xf0, 0x0d, 0x7e, 0x5b, 0xb4, 0x26, 0x80, 0xa4, 0xa3, 0xfa, + 0xf3, 0x1c, 0xa0, 0x55, 0x5a, 0xfe, 0x37, 0x02, 0x63, 0xd3, 0xf0, 0x31, 0x3b, 0x8d, 0x1a, 0xac, + 0xf0, 0xa3, 0xd4, 0x38, 0xaf, 0xc2, 0x44, 0x74, 0xcb, 0x86, 0xde, 0x79, 0x61, 0x8e, 0x6a, 0x3c, + 0x84, 0xd2, 0xab, 0x2e, 0x5b, 0x70, 0x96, 0x95, 0xd6, 0x13, 0x57, 0xc0, 0x74, 0x71, 0x52, 0x48, + 0x32, 0xd6, 0x9b, 0x59, 0xd6, 0x42, 0x65, 0x4e, 0x6e, 0xe1, 0x46, 0x80, 0x35, 0x56, 0xa7, 0x8f, + 0xc3, 0xfd, 0x0d, 0x71, 0x88, 0x28, 0xce, 0x4f, 0x62, 0x47, 0x47, 0x55, 0x0e, 0xa3, 0x0f, 0x16, + 0x06, 0xdf, 0xd8, 0x19, 0x1b, 0x74, 0x63, 0x47, 0xfd, 0x33, 0x09, 0x66, 0xb2, 0x45, 0x1a, 0x61, + 0x2a, 0x13, 0xe7, 0x56, 0xb9, 0xde, 0x73, 0xab, 0xbe, 0x47, 0x65, 0xe2, 0xf8, 0xad, 0x70, 0xec, + 0xe3, 0x37, 0xf5, 0x27, 0xb9, 0xf0, 0x8e, 0xf4, 0x06, 0x36, 0xbc, 0xd6, 0xb6, 0xf2, 0x73, 0x29, + 0x11, 0xfd, 0x3c, 0xef, 0x62, 0xef, 0x20, 0x52, 0x49, 0xec, 0xd1, 0xf3, 0x8c, 0x4d, 0x4c, 0xb6, + 0x1d, 0x56, 0x35, 0xe6, 0x0f, 0xd0, 0x18, 0x68, 0x91, 0x0f, 0xd5, 0xd8, 0x0a, 0xb0, 0x17, 0xbb, + 0x5f, 0xab, 0x55, 0x28, 0x84, 0x36, 0x4f, 0x43, 0xb1, 0x43, 0x32, 0x09, 0x2a, 0x6f, 0x51, 0x63, + 0x1f, 0xf1, 0xf7, 0x8d, 0xc5, 0xbe, 0xef, 0x1b, 0xb3, 0x9e, 0x28, 0x8e, 0x65, 0x3d, 0x51, 0x54, + 0x9a, 0x42, 0xfd, 0xef, 0x13, 0xba, 0x7e, 0xb7, 0x43, 0xaf, 0x28, 0x8e, 0x54, 0xf9, 0x10, 0xf8, + 0xea, 0x6f, 0xc0, 0xe4, 0xd3, 0x83, 0x4d, 0xec, 0x7d, 0xea, 0x90, 0x3c, 0x90, 0xce, 0x4e, 0xcc, + 0xc0, 0x74, 0xc1, 0x41, 0x81, 0xf2, 0xb6, 0xe3, 0x07, 0xb1, 0xa8, 0x20, 0xfc, 0x46, 0xe7, 0xa1, + 0x60, 0xb9, 0x7b, 0x77, 0x58, 0xcc, 0xd5, 0x2c, 0x1f, 0x1d, 0x36, 0x0a, 0x4b, 0xeb, 0x7b, 0x77, + 0x34, 0x0a, 0xe5, 0xad, 0x77, 0xeb, 0xf9, 0x44, 0xeb, 0x5d, 0xda, 0x7a, 0x57, 0xfd, 0x32, 0xc6, + 0x7e, 0x3e, 0x08, 0x8c, 0xd6, 0xb6, 0x72, 0x2d, 0x5a, 0x9b, 0xf3, 0x50, 0x31, 0x4c, 0xd3, 0x23, + 0x83, 0x60, 0x23, 0xab, 0x68, 0x11, 0x40, 0xb9, 0x2c, 0x84, 0xab, 0x43, 0x89, 0x43, 0xb9, 0x6c, + 0xe2, 0x53, 0xfd, 0x25, 0x90, 0xd9, 0x8d, 0x30, 0xea, 0xed, 0xa8, 0x32, 0x1f, 0xd3, 0xd9, 0xfd, + 0x75, 0x8e, 0x91, 0x10, 0x79, 0x30, 0xf1, 0x1d, 0x68, 0x09, 0xc6, 0xc3, 0xeb, 0xa8, 0xa1, 0xbb, + 0xa9, 0x86, 0x95, 0xdb, 0xf8, 0x15, 0xa0, 0x58, 0x5f, 0x7e, 0x05, 0xb7, 0x26, 0x9a, 0x29, 0xa9, + 0x54, 0xf5, 0x26, 0x77, 0x82, 0xea, 0xcd, 0x0d, 0x90, 0x8d, 0x0e, 0x31, 0xa1, 0x03, 0xdd, 0xe3, + 0x52, 0x72, 0xe3, 0x99, 0xe4, 0xf0, 0xb0, 0x08, 0x72, 0x05, 0xc6, 0xc3, 0xa3, 0xd5, 0xae, 0x78, + 0x93, 0x43, 0xaf, 0x82, 0xb0, 0xe3, 0x54, 0x02, 0x43, 0xb7, 0x68, 0x44, 0x1d, 0x6d, 0x35, 0x0c, + 0x93, 0xc5, 0x45, 0x53, 0xad, 0xd4, 0xf3, 0x4e, 0x93, 0x58, 0x35, 0x0b, 0xa3, 0x58, 0x00, 0xc3, + 0x75, 0xb5, 0x4a, 0x03, 0x28, 0x06, 0x52, 0xbb, 0x50, 0x8d, 0xcd, 0x43, 0x6a, 0x05, 0xc4, 0x9e, + 0x2f, 0x25, 0x6b, 0x5e, 0xf3, 0x62, 0x75, 0x3f, 0x80, 0x42, 0xc6, 0x1c, 0x27, 0x9f, 0xa9, 0xa6, + 0x16, 0x48, 0xa3, 0x3d, 0xd4, 0xbf, 0x91, 0x60, 0x8a, 0xe4, 0xa4, 0x2c, 0xc5, 0x63, 0x19, 0x9d, + 0xaf, 0x3c, 0x8f, 0xb8, 0xbf, 0x52, 0xcd, 0xf1, 0x06, 0x54, 0xc4, 0x59, 0x45, 0x22, 0xbf, 0xe6, + 0x07, 0x39, 0x2b, 0x24, 0x7a, 0xa0, 0xbf, 0x76, 0x94, 0x87, 0x62, 0x2c, 0x27, 0xa8, 0xa0, 0xaa, + 0x2e, 0x5c, 0xa0, 0x3a, 0x4c, 0x94, 0x97, 0x79, 0x61, 0xc7, 0x8b, 0x8b, 0xa6, 0x7c, 0xfc, 0x7a, + 0x06, 0x14, 0xe9, 0xfc, 0x5f, 0x48, 0x70, 0x31, 0xf4, 0xf9, 0xec, 0x80, 0xe7, 0xbb, 0xe2, 0xb9, + 0x22, 0x66, 0xa6, 0x49, 0xb6, 0x8e, 0xf0, 0x02, 0x68, 0xf2, 0x46, 0x7b, 0x32, 0xa5, 0x49, 0x1e, + 0x38, 0x91, 0xfd, 0x85, 0xff, 0x9c, 0xfb, 0x97, 0x06, 0xc8, 0xe1, 0x55, 0x74, 0x1e, 0x78, 0xa1, + 0xdf, 0x96, 0xfa, 0x3f, 0x77, 0x45, 0x77, 0xb2, 0x0d, 0x2d, 0x1b, 0x7b, 0x56, 0x78, 0xc5, 0xb9, + 0x63, 0xf6, 0x22, 0xe3, 0xeb, 0x66, 0xbe, 0x2e, 0x45, 0xb7, 0xfb, 0x0e, 0x31, 0x89, 0x18, 0xf2, + 0xbe, 0x35, 0x7a, 0x07, 0xc2, 0xf6, 0x87, 0x52, 0xdf, 0x67, 0x9d, 0xe8, 0xbd, 0x3e, 0xca, 0x97, + 0x85, 0x1c, 0xf2, 0x7f, 0xf7, 0x78, 0x9d, 0x88, 0x0c, 0x38, 0xf5, 0xe2, 0x13, 0xdd, 0xe8, 0x47, + 0x23, 0x44, 0x09, 0xd9, 0x5d, 0x1b, 0x05, 0xd5, 0xed, 0x1c, 0xbc, 0x23, 0xa1, 0x56, 0xea, 0x79, + 0x68, 0x36, 0x9b, 0x04, 0xca, 0x60, 0x36, 0x69, 0x54, 0x32, 0x16, 0x2f, 0xeb, 0x69, 0x15, 0x9a, + 0xcd, 0xbe, 0xb8, 0x9d, 0xc6, 0x0b, 0xd9, 0xbd, 0x3d, 0x32, 0x3e, 0xe1, 0xf9, 0x79, 0xfc, 0x35, + 0x08, 0x7a, 0x6b, 0xc8, 0x2b, 0x06, 0xc1, 0xe3, 0xcd, 0xa1, 0x78, 0x84, 0xf6, 0xf7, 0xa3, 0x27, + 0xf0, 0x28, 0xb3, 0x87, 0x68, 0x0d, 0xe9, 0xaa, 0x43, 0xb0, 0xd8, 0x62, 0xfc, 0x6a, 0xfa, 0x5d, + 0x3b, 0xba, 0xd9, 0xaf, 0x5f, 0x84, 0x13, 0xf2, 0xb8, 0x3e, 0x12, 0xae, 0xdb, 0x39, 0xb8, 0x2e, + 0xbd, 0x23, 0xa1, 0x20, 0xab, 0xc0, 0x95, 0xbd, 0x26, 0xbd, 0x78, 0x83, 0xd7, 0x24, 0x13, 0x9f, + 0x8d, 0x50, 0x4f, 0x14, 0x72, 0x50, 0xa6, 0x06, 0xc5, 0x10, 0x42, 0x3e, 0x57, 0x87, 0x23, 0x32, + 0x06, 0x5e, 0x56, 0x71, 0x6c, 0xf8, 0xb0, 0x18, 0xde, 0xe8, 0xc3, 0x0a, 0xf1, 0x89, 0x3a, 0x74, + 0x7a, 0x9f, 0x5b, 0xa0, 0xa1, 0x14, 0x08, 0x56, 0xc8, 0xef, 0xe6, 0x88, 0xd8, 0x5c, 0xb1, 0xa3, + 0x22, 0x5b, 0xb6, 0x62, 0x47, 0xed, 0x83, 0x15, 0x3b, 0x81, 0x47, 0x68, 0xb7, 0x52, 0x65, 0xae, + 0x6c, 0x6f, 0x90, 0x40, 0x19, 0xec, 0x0d, 0xd2, 0xa8, 0x84, 0xc9, 0x8b, 0xec, 0xe2, 0x17, 0x7a, + 0x67, 0x00, 0x81, 0x04, 0x66, 0xc8, 0x72, 0xf6, 0x18, 0x3d, 0x08, 0xe7, 0xad, 0x74, 0x6d, 0x08, + 0xdd, 0x1c, 0x74, 0x7a, 0x94, 0xf2, 0x3f, 0xd7, 0x47, 0xc2, 0xe5, 0xd3, 0x98, 0xa8, 0x14, 0x65, + 0x4f, 0x63, 0x02, 0x65, 0xf0, 0x34, 0xa6, 0x51, 0x09, 0x93, 0xa7, 0x51, 0x25, 0x29, 0xdb, 0x09, + 0x89, 0xd6, 0xc1, 0x4e, 0x28, 0x86, 0x95, 0xa1, 0xcb, 0x34, 0x8b, 0x1c, 0xaa, 0xcb, 0x04, 0x6b, + 0x74, 0x5d, 0xe6, 0xd8, 0x84, 0x9b, 0x93, 0xf1, 0xff, 0x5b, 0xd0, 0xad, 0xa1, 0xc6, 0x47, 0xd0, + 0x42, 0x7e, 0xdf, 0x1b, 0x15, 0x3d, 0x63, 0x78, 0xf4, 0x0c, 0x7d, 0xe8, 0xf0, 0x08, 0xd6, 0xe8, + 0xc3, 0xe3, 0xd8, 0x19, 0xdc, 0x48, 0xe4, 0x3f, 0x9c, 0x1b, 0xc1, 0x1a, 0x9d, 0x1b, 0xc7, 0xe6, + 0x93, 0xc9, 0xc3, 0x37, 0x9f, 0x46, 0x76, 0x24, 0x88, 0x0f, 0xd9, 0x25, 0x5e, 0x12, 0xa6, 0xb1, + 0x7a, 0xd8, 0x0d, 0xc3, 0x66, 0xbe, 0xf6, 0xc7, 0xc3, 0x8b, 0x76, 0xe8, 0x61, 0xd6, 0x00, 0x86, + 0x74, 0x0a, 0xc5, 0xb9, 0x7f, 0xb2, 0xce, 0x64, 0x32, 0x48, 0x00, 0xdb, 0xaf, 0x72, 0x97, 0x1d, + 0xc0, 0xf6, 0xc3, 0x1e, 0x1c, 0xc0, 0x0e, 0xe8, 0x45, 0xc4, 0xf8, 0x32, 0x51, 0xf5, 0xcb, 0xde, + 0xef, 0x62, 0x08, 0x83, 0xf7, 0xbb, 0x24, 0x22, 0x21, 0x1f, 0x64, 0xd5, 0xfa, 0xb2, 0x77, 0xbb, + 0x5e, 0xbc, 0xc1, 0xbb, 0x5d, 0x26, 0x7e, 0x18, 0x33, 0x26, 0x2a, 0x43, 0xd9, 0xee, 0x2d, 0x81, + 0x32, 0xd8, 0xbd, 0xa5, 0x51, 0xc9, 0xd0, 0x9e, 0x67, 0x64, 0xa1, 0xd9, 0xae, 0xa1, 0x07, 0x6d, + 0xb0, 0x6b, 0xc8, 0x42, 0x67, 0xe3, 0xda, 0xe9, 0xa9, 0xea, 0xa0, 0x4c, 0x0a, 0x29, 0xa4, 0x90, + 0xdd, 0x8d, 0xd1, 0x90, 0x19, 0x33, 0xab, 0xa7, 0x86, 0x33, 0x84, 0x19, 0x43, 0x1a, 0x91, 0x59, + 0x88, 0xcc, 0xdd, 0x50, 0xba, 0x9e, 0x93, 0xed, 0x86, 0xd2, 0x58, 0x83, 0xdd, 0x50, 0x06, 0x36, + 0xe1, 0xf6, 0xb5, 0x34, 0x24, 0xf5, 0x46, 0xf7, 0xfb, 0x52, 0xeb, 0xd7, 0x25, 0x14, 0xe4, 0xde, + 0x49, 0xba, 0x12, 0xa9, 0x7e, 0x34, 0x34, 0x3b, 0x47, 0x0f, 0xfa, 0xd1, 0xee, 0xdf, 0x27, 0x94, + 0xeb, 0x83, 0x13, 0xf5, 0x65, 0x9a, 0xf0, 0x65, 0xa2, 0xce, 0x93, 0xed, 0x23, 0x92, 0x05, 0xb1, + 0x01, 0x3e, 0xa2, 0xa7, 0x72, 0xd6, 0xbc, 0xf3, 0xd5, 0xb7, 0x17, 0xdf, 0xf8, 0xbb, 0x6f, 0x2f, + 0xbe, 0xf1, 0x4f, 0xdf, 0x5e, 0x7c, 0xe3, 0xf3, 0xb7, 0x58, 0x9f, 0x00, 0xb7, 0xb6, 0x6f, 0xd3, + 0x9f, 0xb7, 0xdb, 0xce, 0x6d, 0x77, 0xa7, 0x7d, 0x3b, 0xf9, 0x2f, 0xed, 0x36, 0xc7, 0xe8, 0x16, + 0xf0, 0xde, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x20, 0x79, 0x83, 0x41, 0xeb, 0x4e, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -9473,8 +7937,6 @@ type MessengerServiceClient interface { ParseDeepLink(ctx context.Context, in *ParseDeepLink_Request, opts ...grpc.CallOption) (*ParseDeepLink_Reply, error) // SendContactRequest takes the payload received from ParseDeepLink and send a contact request using the Berty Protocol. SendContactRequest(ctx context.Context, in *SendContactRequest_Request, opts ...grpc.CallOption) (*SendContactRequest_Reply, error) - // SendReplyOptions sends a list of prefilled response options to a group. - SendReplyOptions(ctx context.Context, in *SendReplyOptions_Request, opts ...grpc.CallOption) (*SendReplyOptions_Reply, error) // SystemInfo returns runtime information. SystemInfo(ctx context.Context, in *SystemInfo_Request, opts ...grpc.CallOption) (*SystemInfo_Reply, error) // Use to test stream. @@ -9505,12 +7967,6 @@ type MessengerServiceClient interface { BannerQuote(ctx context.Context, in *BannerQuote_Request, opts ...grpc.CallOption) (*BannerQuote_Reply, error) // InstanceExportData exports instance data InstanceExportData(ctx context.Context, in *InstanceExportData_Request, opts ...grpc.CallOption) (MessengerService_InstanceExportDataClient, error) - // MediaPrepare allows to upload a file and returns a cid to attach to messages - MediaPrepare(ctx context.Context, opts ...grpc.CallOption) (MessengerService_MediaPrepareClient, error) - // MediaRetrieve allows to download a file attached to a message - MediaRetrieve(ctx context.Context, in *MediaRetrieve_Request, opts ...grpc.CallOption) (MessengerService_MediaRetrieveClient, error) - // MediaGetRelated Gets previous/next media to be played after current - MediaGetRelated(ctx context.Context, in *MediaGetRelated_Request, opts ...grpc.CallOption) (*MediaGetRelated_Reply, error) // MessageSearch MessageSearch(ctx context.Context, in *MessageSearch_Request, opts ...grpc.CallOption) (*MessageSearch_Reply, error) // ListMemberDevices Lists devices for a member @@ -9527,8 +7983,6 @@ type MessengerServiceClient interface { PushTokenSharedForConversation(ctx context.Context, in *PushTokenSharedForConversation_Request, opts ...grpc.CallOption) (MessengerService_PushTokenSharedForConversationClient, error) // PushReceive handles a push payload, decrypts it if possible, adds it to the local store PushReceive(ctx context.Context, in *PushReceive_Request, opts ...grpc.CallOption) (*PushReceive_Reply, error) - // InteractionReactionsForEmoji returns a list of reactions on an interaction for a specific emoji - InteractionReactionsForEmoji(ctx context.Context, in *InteractionReactionsForEmoji_Request, opts ...grpc.CallOption) (*InteractionReactionsForEmoji_Reply, error) } type messengerServiceClient struct { @@ -9616,15 +8070,6 @@ func (c *messengerServiceClient) SendContactRequest(ctx context.Context, in *Sen return out, nil } -func (c *messengerServiceClient) SendReplyOptions(ctx context.Context, in *SendReplyOptions_Request, opts ...grpc.CallOption) (*SendReplyOptions_Reply, error) { - out := new(SendReplyOptions_Reply) - err := c.cc.Invoke(ctx, "/berty.messenger.v1.MessengerService/SendReplyOptions", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *messengerServiceClient) SystemInfo(ctx context.Context, in *SystemInfo_Request, opts ...grpc.CallOption) (*SystemInfo_Reply, error) { out := new(SystemInfo_Reply) err := c.cc.Invoke(ctx, "/berty.messenger.v1.MessengerService/SystemInfo", in, out, opts...) @@ -9960,81 +8405,6 @@ func (x *messengerServiceInstanceExportDataClient) Recv() (*InstanceExportData_R return m, nil } -func (c *messengerServiceClient) MediaPrepare(ctx context.Context, opts ...grpc.CallOption) (MessengerService_MediaPrepareClient, error) { - stream, err := c.cc.NewStream(ctx, &_MessengerService_serviceDesc.Streams[7], "/berty.messenger.v1.MessengerService/MediaPrepare", opts...) - if err != nil { - return nil, err - } - x := &messengerServiceMediaPrepareClient{stream} - return x, nil -} - -type MessengerService_MediaPrepareClient interface { - Send(*MediaPrepare_Request) error - CloseAndRecv() (*MediaPrepare_Reply, error) - grpc.ClientStream -} - -type messengerServiceMediaPrepareClient struct { - grpc.ClientStream -} - -func (x *messengerServiceMediaPrepareClient) Send(m *MediaPrepare_Request) error { - return x.ClientStream.SendMsg(m) -} - -func (x *messengerServiceMediaPrepareClient) CloseAndRecv() (*MediaPrepare_Reply, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(MediaPrepare_Reply) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *messengerServiceClient) MediaRetrieve(ctx context.Context, in *MediaRetrieve_Request, opts ...grpc.CallOption) (MessengerService_MediaRetrieveClient, error) { - stream, err := c.cc.NewStream(ctx, &_MessengerService_serviceDesc.Streams[8], "/berty.messenger.v1.MessengerService/MediaRetrieve", opts...) - if err != nil { - return nil, err - } - x := &messengerServiceMediaRetrieveClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type MessengerService_MediaRetrieveClient interface { - Recv() (*MediaRetrieve_Reply, error) - grpc.ClientStream -} - -type messengerServiceMediaRetrieveClient struct { - grpc.ClientStream -} - -func (x *messengerServiceMediaRetrieveClient) Recv() (*MediaRetrieve_Reply, error) { - m := new(MediaRetrieve_Reply) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *messengerServiceClient) MediaGetRelated(ctx context.Context, in *MediaGetRelated_Request, opts ...grpc.CallOption) (*MediaGetRelated_Reply, error) { - out := new(MediaGetRelated_Reply) - err := c.cc.Invoke(ctx, "/berty.messenger.v1.MessengerService/MediaGetRelated", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *messengerServiceClient) MessageSearch(ctx context.Context, in *MessageSearch_Request, opts ...grpc.CallOption) (*MessageSearch_Reply, error) { out := new(MessageSearch_Reply) err := c.cc.Invoke(ctx, "/berty.messenger.v1.MessengerService/MessageSearch", in, out, opts...) @@ -10045,7 +8415,7 @@ func (c *messengerServiceClient) MessageSearch(ctx context.Context, in *MessageS } func (c *messengerServiceClient) ListMemberDevices(ctx context.Context, in *ListMemberDevices_Request, opts ...grpc.CallOption) (MessengerService_ListMemberDevicesClient, error) { - stream, err := c.cc.NewStream(ctx, &_MessengerService_serviceDesc.Streams[9], "/berty.messenger.v1.MessengerService/ListMemberDevices", opts...) + stream, err := c.cc.NewStream(ctx, &_MessengerService_serviceDesc.Streams[7], "/berty.messenger.v1.MessengerService/ListMemberDevices", opts...) if err != nil { return nil, err } @@ -10077,7 +8447,7 @@ func (x *messengerServiceListMemberDevicesClient) Recv() (*ListMemberDevices_Rep } func (c *messengerServiceClient) TyberHostSearch(ctx context.Context, in *TyberHostSearch_Request, opts ...grpc.CallOption) (MessengerService_TyberHostSearchClient, error) { - stream, err := c.cc.NewStream(ctx, &_MessengerService_serviceDesc.Streams[10], "/berty.messenger.v1.MessengerService/TyberHostSearch", opts...) + stream, err := c.cc.NewStream(ctx, &_MessengerService_serviceDesc.Streams[8], "/berty.messenger.v1.MessengerService/TyberHostSearch", opts...) if err != nil { return nil, err } @@ -10136,7 +8506,7 @@ func (c *messengerServiceClient) PushShareTokenForConversation(ctx context.Conte } func (c *messengerServiceClient) PushTokenSharedForConversation(ctx context.Context, in *PushTokenSharedForConversation_Request, opts ...grpc.CallOption) (MessengerService_PushTokenSharedForConversationClient, error) { - stream, err := c.cc.NewStream(ctx, &_MessengerService_serviceDesc.Streams[11], "/berty.messenger.v1.MessengerService/PushTokenSharedForConversation", opts...) + stream, err := c.cc.NewStream(ctx, &_MessengerService_serviceDesc.Streams[9], "/berty.messenger.v1.MessengerService/PushTokenSharedForConversation", opts...) if err != nil { return nil, err } @@ -10176,15 +8546,6 @@ func (c *messengerServiceClient) PushReceive(ctx context.Context, in *PushReceiv return out, nil } -func (c *messengerServiceClient) InteractionReactionsForEmoji(ctx context.Context, in *InteractionReactionsForEmoji_Request, opts ...grpc.CallOption) (*InteractionReactionsForEmoji_Reply, error) { - out := new(InteractionReactionsForEmoji_Reply) - err := c.cc.Invoke(ctx, "/berty.messenger.v1.MessengerService/InteractionReactionsForEmoji", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - // MessengerServiceServer is the server API for MessengerService service. type MessengerServiceServer interface { // InstanceShareableBertyID returns a Berty ID that can be shared as a string, QR code or deep link. @@ -10202,8 +8563,6 @@ type MessengerServiceServer interface { ParseDeepLink(context.Context, *ParseDeepLink_Request) (*ParseDeepLink_Reply, error) // SendContactRequest takes the payload received from ParseDeepLink and send a contact request using the Berty Protocol. SendContactRequest(context.Context, *SendContactRequest_Request) (*SendContactRequest_Reply, error) - // SendReplyOptions sends a list of prefilled response options to a group. - SendReplyOptions(context.Context, *SendReplyOptions_Request) (*SendReplyOptions_Reply, error) // SystemInfo returns runtime information. SystemInfo(context.Context, *SystemInfo_Request) (*SystemInfo_Reply, error) // Use to test stream. @@ -10234,12 +8593,6 @@ type MessengerServiceServer interface { BannerQuote(context.Context, *BannerQuote_Request) (*BannerQuote_Reply, error) // InstanceExportData exports instance data InstanceExportData(*InstanceExportData_Request, MessengerService_InstanceExportDataServer) error - // MediaPrepare allows to upload a file and returns a cid to attach to messages - MediaPrepare(MessengerService_MediaPrepareServer) error - // MediaRetrieve allows to download a file attached to a message - MediaRetrieve(*MediaRetrieve_Request, MessengerService_MediaRetrieveServer) error - // MediaGetRelated Gets previous/next media to be played after current - MediaGetRelated(context.Context, *MediaGetRelated_Request) (*MediaGetRelated_Reply, error) // MessageSearch MessageSearch(context.Context, *MessageSearch_Request) (*MessageSearch_Reply, error) // ListMemberDevices Lists devices for a member @@ -10256,8 +8609,6 @@ type MessengerServiceServer interface { PushTokenSharedForConversation(*PushTokenSharedForConversation_Request, MessengerService_PushTokenSharedForConversationServer) error // PushReceive handles a push payload, decrypts it if possible, adds it to the local store PushReceive(context.Context, *PushReceive_Request) (*PushReceive_Reply, error) - // InteractionReactionsForEmoji returns a list of reactions on an interaction for a specific emoji - InteractionReactionsForEmoji(context.Context, *InteractionReactionsForEmoji_Request) (*InteractionReactionsForEmoji_Reply, error) } // UnimplementedMessengerServiceServer can be embedded to have forward compatible implementations. @@ -10287,10 +8638,6 @@ func (*UnimplementedMessengerServiceServer) SendContactRequest(ctx context.Conte return nil, status.Errorf(codes.Unimplemented, "method SendContactRequest not implemented") } -func (*UnimplementedMessengerServiceServer) SendReplyOptions(ctx context.Context, req *SendReplyOptions_Request) (*SendReplyOptions_Reply, error) { - return nil, status.Errorf(codes.Unimplemented, "method SendReplyOptions not implemented") -} - func (*UnimplementedMessengerServiceServer) SystemInfo(ctx context.Context, req *SystemInfo_Request) (*SystemInfo_Reply, error) { return nil, status.Errorf(codes.Unimplemented, "method SystemInfo not implemented") } @@ -10379,18 +8726,6 @@ func (*UnimplementedMessengerServiceServer) InstanceExportData(req *InstanceExpo return status.Errorf(codes.Unimplemented, "method InstanceExportData not implemented") } -func (*UnimplementedMessengerServiceServer) MediaPrepare(srv MessengerService_MediaPrepareServer) error { - return status.Errorf(codes.Unimplemented, "method MediaPrepare not implemented") -} - -func (*UnimplementedMessengerServiceServer) MediaRetrieve(req *MediaRetrieve_Request, srv MessengerService_MediaRetrieveServer) error { - return status.Errorf(codes.Unimplemented, "method MediaRetrieve not implemented") -} - -func (*UnimplementedMessengerServiceServer) MediaGetRelated(ctx context.Context, req *MediaGetRelated_Request) (*MediaGetRelated_Reply, error) { - return nil, status.Errorf(codes.Unimplemented, "method MediaGetRelated not implemented") -} - func (*UnimplementedMessengerServiceServer) MessageSearch(ctx context.Context, req *MessageSearch_Request) (*MessageSearch_Reply, error) { return nil, status.Errorf(codes.Unimplemented, "method MessageSearch not implemented") } @@ -10423,10 +8758,6 @@ func (*UnimplementedMessengerServiceServer) PushReceive(ctx context.Context, req return nil, status.Errorf(codes.Unimplemented, "method PushReceive not implemented") } -func (*UnimplementedMessengerServiceServer) InteractionReactionsForEmoji(ctx context.Context, req *InteractionReactionsForEmoji_Request) (*InteractionReactionsForEmoji_Reply, error) { - return nil, status.Errorf(codes.Unimplemented, "method InteractionReactionsForEmoji not implemented") -} - func RegisterMessengerServiceServer(s *grpc.Server, srv MessengerServiceServer) { s.RegisterService(&_MessengerService_serviceDesc, srv) } @@ -10542,24 +8873,6 @@ func _MessengerService_SendContactRequest_Handler(srv interface{}, ctx context.C return interceptor(ctx, in, info, handler) } -func _MessengerService_SendReplyOptions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SendReplyOptions_Request) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MessengerServiceServer).SendReplyOptions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/berty.messenger.v1.MessengerService/SendReplyOptions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MessengerServiceServer).SendReplyOptions(ctx, req.(*SendReplyOptions_Request)) - } - return interceptor(ctx, in, info, handler) -} - func _MessengerService_SystemInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SystemInfo_Request) if err := dec(in); err != nil { @@ -10979,71 +9292,6 @@ func (x *messengerServiceInstanceExportDataServer) Send(m *InstanceExportData_Re return x.ServerStream.SendMsg(m) } -func _MessengerService_MediaPrepare_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(MessengerServiceServer).MediaPrepare(&messengerServiceMediaPrepareServer{stream}) -} - -type MessengerService_MediaPrepareServer interface { - SendAndClose(*MediaPrepare_Reply) error - Recv() (*MediaPrepare_Request, error) - grpc.ServerStream -} - -type messengerServiceMediaPrepareServer struct { - grpc.ServerStream -} - -func (x *messengerServiceMediaPrepareServer) SendAndClose(m *MediaPrepare_Reply) error { - return x.ServerStream.SendMsg(m) -} - -func (x *messengerServiceMediaPrepareServer) Recv() (*MediaPrepare_Request, error) { - m := new(MediaPrepare_Request) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _MessengerService_MediaRetrieve_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(MediaRetrieve_Request) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(MessengerServiceServer).MediaRetrieve(m, &messengerServiceMediaRetrieveServer{stream}) -} - -type MessengerService_MediaRetrieveServer interface { - Send(*MediaRetrieve_Reply) error - grpc.ServerStream -} - -type messengerServiceMediaRetrieveServer struct { - grpc.ServerStream -} - -func (x *messengerServiceMediaRetrieveServer) Send(m *MediaRetrieve_Reply) error { - return x.ServerStream.SendMsg(m) -} - -func _MessengerService_MediaGetRelated_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MediaGetRelated_Request) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MessengerServiceServer).MediaGetRelated(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/berty.messenger.v1.MessengerService/MediaGetRelated", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MessengerServiceServer).MediaGetRelated(ctx, req.(*MediaGetRelated_Request)) - } - return interceptor(ctx, in, info, handler) -} - func _MessengerService_MessageSearch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MessageSearch_Request) if err := dec(in); err != nil { @@ -11197,24 +9445,6 @@ func _MessengerService_PushReceive_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } -func _MessengerService_InteractionReactionsForEmoji_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(InteractionReactionsForEmoji_Request) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MessengerServiceServer).InteractionReactionsForEmoji(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/berty.messenger.v1.MessengerService/InteractionReactionsForEmoji", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MessengerServiceServer).InteractionReactionsForEmoji(ctx, req.(*InteractionReactionsForEmoji_Request)) - } - return interceptor(ctx, in, info, handler) -} - var _MessengerService_serviceDesc = grpc.ServiceDesc{ ServiceName: "berty.messenger.v1.MessengerService", HandlerType: (*MessengerServiceServer)(nil), @@ -11239,10 +9469,6 @@ var _MessengerService_serviceDesc = grpc.ServiceDesc{ MethodName: "SendContactRequest", Handler: _MessengerService_SendContactRequest_Handler, }, - { - MethodName: "SendReplyOptions", - Handler: _MessengerService_SendReplyOptions_Handler, - }, { MethodName: "SystemInfo", Handler: _MessengerService_SystemInfo_Handler, @@ -11307,10 +9533,6 @@ var _MessengerService_serviceDesc = grpc.ServiceDesc{ MethodName: "BannerQuote", Handler: _MessengerService_BannerQuote_Handler, }, - { - MethodName: "MediaGetRelated", - Handler: _MessengerService_MediaGetRelated_Handler, - }, { MethodName: "MessageSearch", Handler: _MessengerService_MessageSearch_Handler, @@ -11331,10 +9553,6 @@ var _MessengerService_serviceDesc = grpc.ServiceDesc{ MethodName: "PushReceive", Handler: _MessengerService_PushReceive_Handler, }, - { - MethodName: "InteractionReactionsForEmoji", - Handler: _MessengerService_InteractionReactionsForEmoji_Handler, - }, }, Streams: []grpc.StreamDesc{ { @@ -11373,16 +9591,6 @@ var _MessengerService_serviceDesc = grpc.ServiceDesc{ Handler: _MessengerService_InstanceExportData_Handler, ServerStreams: true, }, - { - StreamName: "MediaPrepare", - Handler: _MessengerService_MediaPrepare_Handler, - ClientStreams: true, - }, - { - StreamName: "MediaRetrieve", - Handler: _MessengerService_MediaRetrieve_Handler, - ServerStreams: true, - }, { StreamName: "ListMemberDevices", Handler: _MessengerService_ListMemberDevices_Handler, diff --git a/go/pkg/messengertypes/messengertypes.pb.gw.go b/go/pkg/messengertypes/messengertypes.pb.gw.go index 1d199c3b61..8bf0609616 100644 --- a/go/pkg/messengertypes/messengertypes.pb.gw.go +++ b/go/pkg/messengertypes/messengertypes.pb.gw.go @@ -221,38 +221,6 @@ func local_request_MessengerService_SendContactRequest_0(ctx context.Context, ma return msg, metadata, err } -func request_MessengerService_SendReplyOptions_0(ctx context.Context, marshaler runtime.Marshaler, client MessengerServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SendReplyOptions_Request - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.SendReplyOptions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_MessengerService_SendReplyOptions_0(ctx context.Context, marshaler runtime.Marshaler, server MessengerServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SendReplyOptions_Request - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.SendReplyOptions(ctx, &protoReq) - return msg, metadata, err -} - func request_MessengerService_SystemInfo_0(ctx context.Context, marshaler runtime.Marshaler, client MessengerServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq SystemInfo_Request var metadata runtime.ServerMetadata @@ -937,105 +905,6 @@ func request_MessengerService_InstanceExportData_0(ctx context.Context, marshale return stream, metadata, nil } -func request_MessengerService_MediaPrepare_0(ctx context.Context, marshaler runtime.Marshaler, client MessengerServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var metadata runtime.ServerMetadata - stream, err := client.MediaPrepare(ctx) - if err != nil { - grpclog.Infof("Failed to start streaming: %v", err) - return nil, metadata, err - } - dec := marshaler.NewDecoder(req.Body) - for { - var protoReq MediaPrepare_Request - err = dec.Decode(&protoReq) - if err == io.EOF { - break - } - if err != nil { - grpclog.Infof("Failed to decode request: %v", err) - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err = stream.Send(&protoReq); err != nil { - if err == io.EOF { - break - } - grpclog.Infof("Failed to send request: %v", err) - return nil, metadata, err - } - } - - if err := stream.CloseSend(); err != nil { - grpclog.Infof("Failed to terminate client stream: %v", err) - return nil, metadata, err - } - header, err := stream.Header() - if err != nil { - grpclog.Infof("Failed to get header from client: %v", err) - return nil, metadata, err - } - metadata.HeaderMD = header - - msg, err := stream.CloseAndRecv() - metadata.TrailerMD = stream.Trailer() - return msg, metadata, err -} - -func request_MessengerService_MediaRetrieve_0(ctx context.Context, marshaler runtime.Marshaler, client MessengerServiceClient, req *http.Request, pathParams map[string]string) (MessengerService_MediaRetrieveClient, runtime.ServerMetadata, error) { - var protoReq MediaRetrieve_Request - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - stream, err := client.MediaRetrieve(ctx, &protoReq) - if err != nil { - return nil, metadata, err - } - header, err := stream.Header() - if err != nil { - return nil, metadata, err - } - metadata.HeaderMD = header - return stream, metadata, nil -} - -func request_MessengerService_MediaGetRelated_0(ctx context.Context, marshaler runtime.Marshaler, client MessengerServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MediaGetRelated_Request - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.MediaGetRelated(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_MessengerService_MediaGetRelated_0(ctx context.Context, marshaler runtime.Marshaler, server MessengerServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MediaGetRelated_Request - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.MediaGetRelated(ctx, &protoReq) - return msg, metadata, err -} - func request_MessengerService_MessageSearch_0(ctx context.Context, marshaler runtime.Marshaler, client MessengerServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq MessageSearch_Request var metadata runtime.ServerMetadata @@ -1268,38 +1137,6 @@ func local_request_MessengerService_PushReceive_0(ctx context.Context, marshaler return msg, metadata, err } -func request_MessengerService_InteractionReactionsForEmoji_0(ctx context.Context, marshaler runtime.Marshaler, client MessengerServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq InteractionReactionsForEmoji_Request - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.InteractionReactionsForEmoji(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_MessengerService_InteractionReactionsForEmoji_0(ctx context.Context, marshaler runtime.Marshaler, server MessengerServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq InteractionReactionsForEmoji_Request - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.InteractionReactionsForEmoji(ctx, &protoReq) - return msg, metadata, err -} - // RegisterMessengerServiceHandlerServer registers the http handlers for service MessengerService to "mux". // UnaryRPC :call MessengerServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -1422,28 +1259,6 @@ func RegisterMessengerServiceHandlerServer(ctx context.Context, mux *runtime.Ser forward_MessengerService_SendContactRequest_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_MessengerService_SendReplyOptions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_MessengerService_SendReplyOptions_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_MessengerService_SendReplyOptions_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle("POST", pattern_MessengerService_SystemInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1838,42 +1653,6 @@ func RegisterMessengerServiceHandlerServer(ctx context.Context, mux *runtime.Ser return }) - mux.Handle("POST", pattern_MessengerService_MediaPrepare_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") - _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - }) - - mux.Handle("POST", pattern_MessengerService_MediaRetrieve_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") - _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - }) - - mux.Handle("POST", pattern_MessengerService_MediaGetRelated_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_MessengerService_MediaGetRelated_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_MessengerService_MediaGetRelated_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle("POST", pattern_MessengerService_MessageSearch_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2005,28 +1784,6 @@ func RegisterMessengerServiceHandlerServer(ctx context.Context, mux *runtime.Ser forward_MessengerService_PushReceive_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_MessengerService_InteractionReactionsForEmoji_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_MessengerService_InteractionReactionsForEmoji_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_MessengerService_InteractionReactionsForEmoji_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - return nil } @@ -2181,25 +1938,6 @@ func RegisterMessengerServiceHandlerClient(ctx context.Context, mux *runtime.Ser forward_MessengerService_SendContactRequest_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_MessengerService_SendReplyOptions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_MessengerService_SendReplyOptions_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_MessengerService_SendReplyOptions_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle("POST", pattern_MessengerService_SystemInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2618,63 +2356,6 @@ func RegisterMessengerServiceHandlerClient(ctx context.Context, mux *runtime.Ser forward_MessengerService_InstanceExportData_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_MessengerService_MediaPrepare_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_MessengerService_MediaPrepare_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_MessengerService_MediaPrepare_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - - mux.Handle("POST", pattern_MessengerService_MediaRetrieve_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_MessengerService_MediaRetrieve_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_MessengerService_MediaRetrieve_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) - }) - - mux.Handle("POST", pattern_MessengerService_MediaGetRelated_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_MessengerService_MediaGetRelated_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_MessengerService_MediaGetRelated_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle("POST", pattern_MessengerService_MessageSearch_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2827,25 +2508,6 @@ func RegisterMessengerServiceHandlerClient(ctx context.Context, mux *runtime.Ser forward_MessengerService_PushReceive_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_MessengerService_InteractionReactionsForEmoji_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_MessengerService_InteractionReactionsForEmoji_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_MessengerService_InteractionReactionsForEmoji_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - return nil } @@ -2862,8 +2524,6 @@ var ( pattern_MessengerService_SendContactRequest_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.messenger.v1", "MessengerService", "SendContactRequest"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_MessengerService_SendReplyOptions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.messenger.v1", "MessengerService", "SendReplyOptions"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_MessengerService_SystemInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.messenger.v1", "MessengerService", "SystemInfo"}, "", runtime.AssumeColonVerbOpt(true))) pattern_MessengerService_EchoTest_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.messenger.v1", "MessengerService", "EchoTest"}, "", runtime.AssumeColonVerbOpt(true))) @@ -2908,12 +2568,6 @@ var ( pattern_MessengerService_InstanceExportData_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.messenger.v1", "MessengerService", "InstanceExportData"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_MessengerService_MediaPrepare_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.messenger.v1", "MessengerService", "MediaPrepare"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_MessengerService_MediaRetrieve_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.messenger.v1", "MessengerService", "MediaRetrieve"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_MessengerService_MediaGetRelated_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.messenger.v1", "MessengerService", "MediaGetRelated"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_MessengerService_MessageSearch_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.messenger.v1", "MessengerService", "MessageSearch"}, "", runtime.AssumeColonVerbOpt(true))) pattern_MessengerService_ListMemberDevices_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.messenger.v1", "MessengerService", "ListMemberDevices"}, "", runtime.AssumeColonVerbOpt(true))) @@ -2929,8 +2583,6 @@ var ( pattern_MessengerService_PushTokenSharedForConversation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.messenger.v1", "MessengerService", "PushTokenSharedForConversation"}, "", runtime.AssumeColonVerbOpt(true))) pattern_MessengerService_PushReceive_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.messenger.v1", "MessengerService", "PushReceive"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_MessengerService_InteractionReactionsForEmoji_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.messenger.v1", "MessengerService", "InteractionReactionsForEmoji"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( @@ -2946,8 +2598,6 @@ var ( forward_MessengerService_SendContactRequest_0 = runtime.ForwardResponseMessage - forward_MessengerService_SendReplyOptions_0 = runtime.ForwardResponseMessage - forward_MessengerService_SystemInfo_0 = runtime.ForwardResponseMessage forward_MessengerService_EchoTest_0 = runtime.ForwardResponseStream @@ -2992,12 +2642,6 @@ var ( forward_MessengerService_InstanceExportData_0 = runtime.ForwardResponseStream - forward_MessengerService_MediaPrepare_0 = runtime.ForwardResponseMessage - - forward_MessengerService_MediaRetrieve_0 = runtime.ForwardResponseStream - - forward_MessengerService_MediaGetRelated_0 = runtime.ForwardResponseMessage - forward_MessengerService_MessageSearch_0 = runtime.ForwardResponseMessage forward_MessengerService_ListMemberDevices_0 = runtime.ForwardResponseStream @@ -3013,6 +2657,4 @@ var ( forward_MessengerService_PushTokenSharedForConversation_0 = runtime.ForwardResponseStream forward_MessengerService_PushReceive_0 = runtime.ForwardResponseMessage - - forward_MessengerService_InteractionReactionsForEmoji_0 = runtime.ForwardResponseMessage ) diff --git a/go/pkg/messengertypes/types.go b/go/pkg/messengertypes/types.go index 086acd0546..98f42cecd1 100644 --- a/go/pkg/messengertypes/types.go +++ b/go/pkg/messengertypes/types.go @@ -40,27 +40,13 @@ func (x *AppMessage_Type) MarshalJSON() ([]byte, error) { return json.Marshal(AppMessage_Undefined.String()) } -func (x AppMessage_Type) MarshalPayload(sentDate int64, target string, medias []*Media, payload proto.Message) ([]byte, error) { +func (x AppMessage_Type) MarshalPayload(sentDate int64, target string, payload proto.Message) ([]byte, error) { p, err := proto.Marshal(payload) if err != nil { return nil, err } - return proto.Marshal(&AppMessage{Type: x, TargetCID: target, Payload: p, SentDate: sentDate, Medias: mediaSliceFilterForNetwork(medias)}) -} - -func mediaSliceFilterForNetwork(dbMedias []*Media) []*Media { - networkMedias := make([]*Media, len(dbMedias)) - for i, dbMedia := range dbMedias { - networkMedias[i] = &Media{ - CID: dbMedia.GetCID(), - MimeType: dbMedia.GetMimeType(), - Filename: dbMedia.GetFilename(), - DisplayName: dbMedia.GetDisplayName(), - MetadataBytes: dbMedia.GetMetadataBytes(), - } - } - return networkMedias + return proto.Marshal(&AppMessage{Type: x, TargetCID: target, Payload: p, SentDate: sentDate}) } // UnmarshalPayload tries to parse an AppMessage payload in the corresponding type. @@ -73,16 +59,12 @@ func (am AppMessage) UnmarshalPayload() (proto.Message, error) { message = &AppMessage_Acknowledge{} case AppMessage_TypeUserMessage: message = &AppMessage_UserMessage{} - case AppMessage_TypeUserReaction: - message = &AppMessage_UserReaction{} case AppMessage_TypeGroupInvitation: message = &AppMessage_GroupInvitation{} case AppMessage_TypeSetGroupInfo: message = &AppMessage_SetGroupInfo{} case AppMessage_TypeSetUserInfo: message = &AppMessage_SetUserInfo{} - case AppMessage_TypeReplyOptions: - message = &AppMessage_ReplyOptions{} default: return nil, errcode.TODO.Wrap(fmt.Errorf("unsupported AppMessage type: %q", am.GetType())) } @@ -126,8 +108,6 @@ func (event *StreamEvent) UnmarshalPayload() (proto.Message, error) { message = &StreamEvent_MemberUpdated{} case StreamEvent_TypeDeviceUpdated: message = &StreamEvent_DeviceUpdated{} - case StreamEvent_TypeMediaUpdated: - message = &StreamEvent_MediaUpdated{} case StreamEvent_TypeNotified: message = &StreamEvent_Notified{} case StreamEvent_TypeListEnded: diff --git a/go/pkg/protocoltypes/protocoltypes.pb.go b/go/pkg/protocoltypes/protocoltypes.pb.go index 3d6e0502c7..6e6b873d86 100644 --- a/go/pkg/protocoltypes/protocoltypes.pb.go +++ b/go/pkg/protocoltypes/protocoltypes.pb.go @@ -784,12 +784,10 @@ type GroupEnvelope struct { // nonce is used to encrypt the message Nonce []byte `protobuf:"bytes,1,opt,name=nonce,proto3" json:"nonce,omitempty"` // event is encrypted using a symmetric key shared among group members - Event []byte `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` - // encrypted_attachment_cids is a list of attachment CIDs encrypted specifically for replication services - EncryptedAttachmentCIDs [][]byte `protobuf:"bytes,3,rep,name=encrypted_attachment_cids,json=encryptedAttachmentCids,proto3" json:"encrypted_attachment_cids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Event []byte `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *GroupEnvelope) Reset() { *m = GroupEnvelope{} } @@ -844,13 +842,6 @@ func (m *GroupEnvelope) GetEvent() []byte { return nil } -func (m *GroupEnvelope) GetEncryptedAttachmentCIDs() [][]byte { - if m != nil { - return m.EncryptedAttachmentCIDs - } - return nil -} - // MessageHeaders is used in MessageEnvelope and only readable by invited group members type MessageHeaders struct { // counter is the current counter value for the specified device @@ -933,8 +924,6 @@ func (m *MessageHeaders) GetMetadata() map[string]string { } type ProtocolMetadata struct { - // attachments_secrets is a list of secret keys used retrieve attachments - AttachmentsSecrets [][]byte `protobuf:"bytes,1,rep,name=attachments_secrets,json=attachmentsSecrets,proto3" json:"attachments_secrets,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -978,13 +967,6 @@ func (m *ProtocolMetadata) XXX_DiscardUnknown() { var xxx_messageInfo_ProtocolMetadata proto.InternalMessageInfo -func (m *ProtocolMetadata) GetAttachmentsSecrets() [][]byte { - if m != nil { - return m.AttachmentsSecrets - } - return nil -} - // EncryptedMessage is used in MessageEnvelope and only readable by groups members that joined before the message was sent type EncryptedMessage struct { // plaintext is the app layer data @@ -1055,12 +1037,10 @@ type MessageEnvelope struct { // message is an encrypted message, only readable by group members who previously received the appropriate chain key Message []byte `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` // nonce is a nonce for message headers - Nonce []byte `protobuf:"bytes,3,opt,name=nonce,proto3" json:"nonce,omitempty"` - // encrypted_attachment_cids is a list of attachment CIDs encrypted specifically for replication services - EncryptedAttachmentCIDs [][]byte `protobuf:"bytes,4,rep,name=encrypted_attachment_cids,json=encryptedAttachmentCids,proto3" json:"encrypted_attachment_cids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Nonce []byte `protobuf:"bytes,3,opt,name=nonce,proto3" json:"nonce,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *MessageEnvelope) Reset() { *m = MessageEnvelope{} } @@ -1122,13 +1102,6 @@ func (m *MessageEnvelope) GetNonce() []byte { return nil } -func (m *MessageEnvelope) GetEncryptedAttachmentCIDs() [][]byte { - if m != nil { - return m.EncryptedAttachmentCIDs - } - return nil -} - // EventContext adds context (its id, its parents and its attachments) to an event type EventContext struct { // id is the CID of the underlying OrbitDB event @@ -1136,9 +1109,7 @@ type EventContext struct { // id are the the CIDs of the underlying parents of the OrbitDB event ParentIDs [][]byte `protobuf:"bytes,2,rep,name=parent_ids,json=parentIds,proto3" json:"parent_ids,omitempty"` // group_pk receiving the event - GroupPK []byte `protobuf:"bytes,3,opt,name=group_pk,json=groupPk,proto3" json:"group_pk,omitempty"` - // attachment_cids is a list of attachment that can be retrieved - AttachmentCIDs [][]byte `protobuf:"bytes,4,rep,name=attachment_cids,json=attachmentCids,proto3" json:"attachment_cids,omitempty"` + GroupPK []byte `protobuf:"bytes,3,opt,name=group_pk,json=groupPk,proto3" json:"group_pk,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1203,13 +1174,6 @@ func (m *EventContext) GetGroupPK() []byte { return nil } -func (m *EventContext) GetAttachmentCIDs() [][]byte { - if m != nil { - return m.AttachmentCIDs - } - return nil -} - // AppMetadata is an app defined message, accessible to future group members type AppMetadata struct { // device_pk is the device sending the event, signs the message @@ -5555,9 +5519,7 @@ type AppMetadataSend_Request struct { // group_pk is the identifier of the group GroupPK []byte `protobuf:"bytes,1,opt,name=group_pk,json=groupPk,proto3" json:"group_pk,omitempty"` // payload is the payload to send - Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` - // attachment_cids is a list of attachment cids - AttachmentCIDs [][]byte `protobuf:"bytes,3,rep,name=attachment_cids,json=attachmentCids,proto3" json:"attachment_cids,omitempty"` + Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -5615,13 +5577,6 @@ func (m *AppMetadataSend_Request) GetPayload() []byte { return nil } -func (m *AppMetadataSend_Request) GetAttachmentCIDs() [][]byte { - if m != nil { - return m.AttachmentCIDs - } - return nil -} - type AppMetadataSend_Reply struct { CID []byte `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -5722,9 +5677,7 @@ type AppMessageSend_Request struct { // group_pk is the identifier of the group GroupPK []byte `protobuf:"bytes,1,opt,name=group_pk,json=groupPk,proto3" json:"group_pk,omitempty"` // payload is the payload to send - Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` - // attachment_cids is a list of attachment cids - AttachmentCIDs [][]byte `protobuf:"bytes,3,rep,name=attachment_cids,json=attachmentCids,proto3" json:"attachment_cids,omitempty"` + Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -5782,13 +5735,6 @@ func (m *AppMessageSend_Request) GetPayload() []byte { return nil } -func (m *AppMessageSend_Request) GetAttachmentCIDs() [][]byte { - if m != nil { - return m.AttachmentCIDs - } - return nil -} - type AppMessageSend_Reply struct { CID []byte `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -9812,315 +9758,6 @@ func (m *PeerList_Stream) GetID() string { return "" } -type AttachmentPrepare struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AttachmentPrepare) Reset() { *m = AttachmentPrepare{} } -func (m *AttachmentPrepare) String() string { return proto.CompactTextString(m) } -func (*AttachmentPrepare) ProtoMessage() {} -func (*AttachmentPrepare) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{79} -} - -func (m *AttachmentPrepare) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} - -func (m *AttachmentPrepare) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AttachmentPrepare.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} - -func (m *AttachmentPrepare) XXX_Merge(src proto.Message) { - xxx_messageInfo_AttachmentPrepare.Merge(m, src) -} - -func (m *AttachmentPrepare) XXX_Size() int { - return m.Size() -} - -func (m *AttachmentPrepare) XXX_DiscardUnknown() { - xxx_messageInfo_AttachmentPrepare.DiscardUnknown(m) -} - -var xxx_messageInfo_AttachmentPrepare proto.InternalMessageInfo - -type AttachmentPrepare_Request struct { - // block is a plaintext block to append - Block []byte `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"` - // disable_encryption tells the protocol to store the file as plain text - DisableEncryption bool `protobuf:"varint,2,opt,name=disable_encryption,json=disableEncryption,proto3" json:"disable_encryption,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AttachmentPrepare_Request) Reset() { *m = AttachmentPrepare_Request{} } -func (m *AttachmentPrepare_Request) String() string { return proto.CompactTextString(m) } -func (*AttachmentPrepare_Request) ProtoMessage() {} -func (*AttachmentPrepare_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{79, 0} -} - -func (m *AttachmentPrepare_Request) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} - -func (m *AttachmentPrepare_Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AttachmentPrepare_Request.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} - -func (m *AttachmentPrepare_Request) XXX_Merge(src proto.Message) { - xxx_messageInfo_AttachmentPrepare_Request.Merge(m, src) -} - -func (m *AttachmentPrepare_Request) XXX_Size() int { - return m.Size() -} - -func (m *AttachmentPrepare_Request) XXX_DiscardUnknown() { - xxx_messageInfo_AttachmentPrepare_Request.DiscardUnknown(m) -} - -var xxx_messageInfo_AttachmentPrepare_Request proto.InternalMessageInfo - -func (m *AttachmentPrepare_Request) GetBlock() []byte { - if m != nil { - return m.Block - } - return nil -} - -func (m *AttachmentPrepare_Request) GetDisableEncryption() bool { - if m != nil { - return m.DisableEncryption - } - return false -} - -type AttachmentPrepare_Reply struct { - // attachment_cid is the cid of the (encrypted) file - AttachmentCID []byte `protobuf:"bytes,1,opt,name=attachment_cid,json=attachmentCid,proto3" json:"attachment_cid,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AttachmentPrepare_Reply) Reset() { *m = AttachmentPrepare_Reply{} } -func (m *AttachmentPrepare_Reply) String() string { return proto.CompactTextString(m) } -func (*AttachmentPrepare_Reply) ProtoMessage() {} -func (*AttachmentPrepare_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{79, 1} -} - -func (m *AttachmentPrepare_Reply) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} - -func (m *AttachmentPrepare_Reply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AttachmentPrepare_Reply.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} - -func (m *AttachmentPrepare_Reply) XXX_Merge(src proto.Message) { - xxx_messageInfo_AttachmentPrepare_Reply.Merge(m, src) -} - -func (m *AttachmentPrepare_Reply) XXX_Size() int { - return m.Size() -} - -func (m *AttachmentPrepare_Reply) XXX_DiscardUnknown() { - xxx_messageInfo_AttachmentPrepare_Reply.DiscardUnknown(m) -} - -var xxx_messageInfo_AttachmentPrepare_Reply proto.InternalMessageInfo - -func (m *AttachmentPrepare_Reply) GetAttachmentCID() []byte { - if m != nil { - return m.AttachmentCID - } - return nil -} - -type AttachmentRetrieve struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AttachmentRetrieve) Reset() { *m = AttachmentRetrieve{} } -func (m *AttachmentRetrieve) String() string { return proto.CompactTextString(m) } -func (*AttachmentRetrieve) ProtoMessage() {} -func (*AttachmentRetrieve) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{80} -} - -func (m *AttachmentRetrieve) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} - -func (m *AttachmentRetrieve) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AttachmentRetrieve.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} - -func (m *AttachmentRetrieve) XXX_Merge(src proto.Message) { - xxx_messageInfo_AttachmentRetrieve.Merge(m, src) -} - -func (m *AttachmentRetrieve) XXX_Size() int { - return m.Size() -} - -func (m *AttachmentRetrieve) XXX_DiscardUnknown() { - xxx_messageInfo_AttachmentRetrieve.DiscardUnknown(m) -} - -var xxx_messageInfo_AttachmentRetrieve proto.InternalMessageInfo - -type AttachmentRetrieve_Request struct { - // attachment_cid is the cid of the (encrypted) file - AttachmentCID []byte `protobuf:"bytes,1,opt,name=attachment_cid,json=attachmentCid,proto3" json:"attachment_cid,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AttachmentRetrieve_Request) Reset() { *m = AttachmentRetrieve_Request{} } -func (m *AttachmentRetrieve_Request) String() string { return proto.CompactTextString(m) } -func (*AttachmentRetrieve_Request) ProtoMessage() {} -func (*AttachmentRetrieve_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{80, 0} -} - -func (m *AttachmentRetrieve_Request) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} - -func (m *AttachmentRetrieve_Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AttachmentRetrieve_Request.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} - -func (m *AttachmentRetrieve_Request) XXX_Merge(src proto.Message) { - xxx_messageInfo_AttachmentRetrieve_Request.Merge(m, src) -} - -func (m *AttachmentRetrieve_Request) XXX_Size() int { - return m.Size() -} - -func (m *AttachmentRetrieve_Request) XXX_DiscardUnknown() { - xxx_messageInfo_AttachmentRetrieve_Request.DiscardUnknown(m) -} - -var xxx_messageInfo_AttachmentRetrieve_Request proto.InternalMessageInfo - -func (m *AttachmentRetrieve_Request) GetAttachmentCID() []byte { - if m != nil { - return m.AttachmentCID - } - return nil -} - -type AttachmentRetrieve_Reply struct { - // block is a plaintext block to append - Block []byte `protobuf:"bytes,2,opt,name=block,proto3" json:"block,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AttachmentRetrieve_Reply) Reset() { *m = AttachmentRetrieve_Reply{} } -func (m *AttachmentRetrieve_Reply) String() string { return proto.CompactTextString(m) } -func (*AttachmentRetrieve_Reply) ProtoMessage() {} -func (*AttachmentRetrieve_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{80, 1} -} - -func (m *AttachmentRetrieve_Reply) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} - -func (m *AttachmentRetrieve_Reply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AttachmentRetrieve_Reply.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} - -func (m *AttachmentRetrieve_Reply) XXX_Merge(src proto.Message) { - xxx_messageInfo_AttachmentRetrieve_Reply.Merge(m, src) -} - -func (m *AttachmentRetrieve_Reply) XXX_Size() int { - return m.Size() -} - -func (m *AttachmentRetrieve_Reply) XXX_DiscardUnknown() { - xxx_messageInfo_AttachmentRetrieve_Reply.DiscardUnknown(m) -} - -var xxx_messageInfo_AttachmentRetrieve_Reply proto.InternalMessageInfo - -func (m *AttachmentRetrieve_Reply) GetBlock() []byte { - if m != nil { - return m.Block - } - return nil -} - // Progress define a generic object that can be used to display a progress bar for long-running actions. type Progress struct { State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` @@ -10138,7 +9775,7 @@ func (m *Progress) Reset() { *m = Progress{} } func (m *Progress) String() string { return proto.CompactTextString(m) } func (*Progress) ProtoMessage() {} func (*Progress) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{81} + return fileDescriptor_8aa93e54ccb19003, []int{79} } func (m *Progress) XXX_Unmarshal(b []byte) error { @@ -10226,7 +9863,7 @@ func (m *MemberWithDevices) Reset() { *m = MemberWithDevices{} } func (m *MemberWithDevices) String() string { return proto.CompactTextString(m) } func (*MemberWithDevices) ProtoMessage() {} func (*MemberWithDevices) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{82} + return fileDescriptor_8aa93e54ccb19003, []int{80} } func (m *MemberWithDevices) XXX_Unmarshal(b []byte) error { @@ -10291,7 +9928,7 @@ func (m *OutOfStoreMessage) Reset() { *m = OutOfStoreMessage{} } func (m *OutOfStoreMessage) String() string { return proto.CompactTextString(m) } func (*OutOfStoreMessage) ProtoMessage() {} func (*OutOfStoreMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{83} + return fileDescriptor_8aa93e54ccb19003, []int{81} } func (m *OutOfStoreMessage) XXX_Unmarshal(b []byte) error { @@ -10392,7 +10029,7 @@ func (m *PushServiceReceiver) Reset() { *m = PushServiceReceiver{} } func (m *PushServiceReceiver) String() string { return proto.CompactTextString(m) } func (*PushServiceReceiver) ProtoMessage() {} func (*PushServiceReceiver) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{84} + return fileDescriptor_8aa93e54ccb19003, []int{82} } func (m *PushServiceReceiver) XXX_Unmarshal(b []byte) error { @@ -10466,7 +10103,7 @@ func (m *PushServer) Reset() { *m = PushServer{} } func (m *PushServer) String() string { return proto.CompactTextString(m) } func (*PushServer) ProtoMessage() {} func (*PushServer) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{85} + return fileDescriptor_8aa93e54ccb19003, []int{83} } func (m *PushServer) XXX_Unmarshal(b []byte) error { @@ -10527,7 +10164,7 @@ func (m *PushDeviceTokenRegistered) Reset() { *m = PushDeviceTokenRegist func (m *PushDeviceTokenRegistered) String() string { return proto.CompactTextString(m) } func (*PushDeviceTokenRegistered) ProtoMessage() {} func (*PushDeviceTokenRegistered) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{86} + return fileDescriptor_8aa93e54ccb19003, []int{84} } func (m *PushDeviceTokenRegistered) XXX_Unmarshal(b []byte) error { @@ -10588,7 +10225,7 @@ func (m *PushDeviceServerRegistered) Reset() { *m = PushDeviceServerRegi func (m *PushDeviceServerRegistered) String() string { return proto.CompactTextString(m) } func (*PushDeviceServerRegistered) ProtoMessage() {} func (*PushDeviceServerRegistered) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{87} + return fileDescriptor_8aa93e54ccb19003, []int{85} } func (m *PushDeviceServerRegistered) XXX_Unmarshal(b []byte) error { @@ -10650,7 +10287,7 @@ func (m *PushMemberTokenUpdate) Reset() { *m = PushMemberTokenUpdate{} } func (m *PushMemberTokenUpdate) String() string { return proto.CompactTextString(m) } func (*PushMemberTokenUpdate) ProtoMessage() {} func (*PushMemberTokenUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{88} + return fileDescriptor_8aa93e54ccb19003, []int{86} } func (m *PushMemberTokenUpdate) XXX_Unmarshal(b []byte) error { @@ -10715,7 +10352,7 @@ func (m *PushReceive) Reset() { *m = PushReceive{} } func (m *PushReceive) String() string { return proto.CompactTextString(m) } func (*PushReceive) ProtoMessage() {} func (*PushReceive) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{89} + return fileDescriptor_8aa93e54ccb19003, []int{87} } func (m *PushReceive) XXX_Unmarshal(b []byte) error { @@ -10760,7 +10397,7 @@ func (m *PushReceive_Request) Reset() { *m = PushReceive_Request{} } func (m *PushReceive_Request) String() string { return proto.CompactTextString(m) } func (*PushReceive_Request) ProtoMessage() {} func (*PushReceive_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{89, 0} + return fileDescriptor_8aa93e54ccb19003, []int{87, 0} } func (m *PushReceive_Request) XXX_Unmarshal(b []byte) error { @@ -10815,7 +10452,7 @@ func (m *PushReceive_Reply) Reset() { *m = PushReceive_Reply{} } func (m *PushReceive_Reply) String() string { return proto.CompactTextString(m) } func (*PushReceive_Reply) ProtoMessage() {} func (*PushReceive_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{89, 1} + return fileDescriptor_8aa93e54ccb19003, []int{87, 1} } func (m *PushReceive_Reply) XXX_Unmarshal(b []byte) error { @@ -10887,7 +10524,7 @@ func (m *PushSend) Reset() { *m = PushSend{} } func (m *PushSend) String() string { return proto.CompactTextString(m) } func (*PushSend) ProtoMessage() {} func (*PushSend) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{90} + return fileDescriptor_8aa93e54ccb19003, []int{88} } func (m *PushSend) XXX_Unmarshal(b []byte) error { @@ -10934,7 +10571,7 @@ func (m *PushSend_Request) Reset() { *m = PushSend_Request{} } func (m *PushSend_Request) String() string { return proto.CompactTextString(m) } func (*PushSend_Request) ProtoMessage() {} func (*PushSend_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{90, 0} + return fileDescriptor_8aa93e54ccb19003, []int{88, 0} } func (m *PushSend_Request) XXX_Unmarshal(b []byte) error { @@ -11000,7 +10637,7 @@ func (m *PushSend_Reply) Reset() { *m = PushSend_Reply{} } func (m *PushSend_Reply) String() string { return proto.CompactTextString(m) } func (*PushSend_Reply) ProtoMessage() {} func (*PushSend_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{90, 1} + return fileDescriptor_8aa93e54ccb19003, []int{88, 1} } func (m *PushSend_Reply) XXX_Unmarshal(b []byte) error { @@ -11051,7 +10688,7 @@ func (m *PushShareToken) Reset() { *m = PushShareToken{} } func (m *PushShareToken) String() string { return proto.CompactTextString(m) } func (*PushShareToken) ProtoMessage() {} func (*PushShareToken) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{91} + return fileDescriptor_8aa93e54ccb19003, []int{89} } func (m *PushShareToken) XXX_Unmarshal(b []byte) error { @@ -11098,7 +10735,7 @@ func (m *PushShareToken_Request) Reset() { *m = PushShareToken_Request{} func (m *PushShareToken_Request) String() string { return proto.CompactTextString(m) } func (*PushShareToken_Request) ProtoMessage() {} func (*PushShareToken_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{91, 0} + return fileDescriptor_8aa93e54ccb19003, []int{89, 0} } func (m *PushShareToken_Request) XXX_Unmarshal(b []byte) error { @@ -11163,7 +10800,7 @@ func (m *PushShareToken_Reply) Reset() { *m = PushShareToken_Reply{} } func (m *PushShareToken_Reply) String() string { return proto.CompactTextString(m) } func (*PushShareToken_Reply) ProtoMessage() {} func (*PushShareToken_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{91, 1} + return fileDescriptor_8aa93e54ccb19003, []int{89, 1} } func (m *PushShareToken_Reply) XXX_Unmarshal(b []byte) error { @@ -11207,7 +10844,7 @@ func (m *PushSetDeviceToken) Reset() { *m = PushSetDeviceToken{} } func (m *PushSetDeviceToken) String() string { return proto.CompactTextString(m) } func (*PushSetDeviceToken) ProtoMessage() {} func (*PushSetDeviceToken) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{92} + return fileDescriptor_8aa93e54ccb19003, []int{90} } func (m *PushSetDeviceToken) XXX_Unmarshal(b []byte) error { @@ -11252,7 +10889,7 @@ func (m *PushSetDeviceToken_Request) Reset() { *m = PushSetDeviceToken_R func (m *PushSetDeviceToken_Request) String() string { return proto.CompactTextString(m) } func (*PushSetDeviceToken_Request) ProtoMessage() {} func (*PushSetDeviceToken_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{92, 0} + return fileDescriptor_8aa93e54ccb19003, []int{90, 0} } func (m *PushSetDeviceToken_Request) XXX_Unmarshal(b []byte) error { @@ -11303,7 +10940,7 @@ func (m *PushSetDeviceToken_Reply) Reset() { *m = PushSetDeviceToken_Rep func (m *PushSetDeviceToken_Reply) String() string { return proto.CompactTextString(m) } func (*PushSetDeviceToken_Reply) ProtoMessage() {} func (*PushSetDeviceToken_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{92, 1} + return fileDescriptor_8aa93e54ccb19003, []int{90, 1} } func (m *PushSetDeviceToken_Reply) XXX_Unmarshal(b []byte) error { @@ -11347,7 +10984,7 @@ func (m *PushSetServer) Reset() { *m = PushSetServer{} } func (m *PushSetServer) String() string { return proto.CompactTextString(m) } func (*PushSetServer) ProtoMessage() {} func (*PushSetServer) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{93} + return fileDescriptor_8aa93e54ccb19003, []int{91} } func (m *PushSetServer) XXX_Unmarshal(b []byte) error { @@ -11392,7 +11029,7 @@ func (m *PushSetServer_Request) Reset() { *m = PushSetServer_Request{} } func (m *PushSetServer_Request) String() string { return proto.CompactTextString(m) } func (*PushSetServer_Request) ProtoMessage() {} func (*PushSetServer_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{93, 0} + return fileDescriptor_8aa93e54ccb19003, []int{91, 0} } func (m *PushSetServer_Request) XXX_Unmarshal(b []byte) error { @@ -11443,7 +11080,7 @@ func (m *PushSetServer_Reply) Reset() { *m = PushSetServer_Reply{} } func (m *PushSetServer_Reply) String() string { return proto.CompactTextString(m) } func (*PushSetServer_Reply) ProtoMessage() {} func (*PushSetServer_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{93, 1} + return fileDescriptor_8aa93e54ccb19003, []int{91, 1} } func (m *PushSetServer_Reply) XXX_Unmarshal(b []byte) error { @@ -11489,7 +11126,7 @@ func (m *FirstLastCounters) Reset() { *m = FirstLastCounters{} } func (m *FirstLastCounters) String() string { return proto.CompactTextString(m) } func (*FirstLastCounters) ProtoMessage() {} func (*FirstLastCounters) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{94} + return fileDescriptor_8aa93e54ccb19003, []int{92} } func (m *FirstLastCounters) XXX_Unmarshal(b []byte) error { @@ -11552,7 +11189,7 @@ func (m *OrbitDBMessageHeads) Reset() { *m = OrbitDBMessageHeads{} } func (m *OrbitDBMessageHeads) String() string { return proto.CompactTextString(m) } func (*OrbitDBMessageHeads) ProtoMessage() {} func (*OrbitDBMessageHeads) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{95} + return fileDescriptor_8aa93e54ccb19003, []int{93} } func (m *OrbitDBMessageHeads) XXX_Unmarshal(b []byte) error { @@ -11614,7 +11251,7 @@ func (m *OrbitDBMessageHeads_Box) Reset() { *m = OrbitDBMessageHeads_Box func (m *OrbitDBMessageHeads_Box) String() string { return proto.CompactTextString(m) } func (*OrbitDBMessageHeads_Box) ProtoMessage() {} func (*OrbitDBMessageHeads_Box) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{95, 0} + return fileDescriptor_8aa93e54ccb19003, []int{93, 0} } func (m *OrbitDBMessageHeads_Box) XXX_Unmarshal(b []byte) error { @@ -11686,7 +11323,7 @@ func (m *RefreshContactRequest) Reset() { *m = RefreshContactRequest{} } func (m *RefreshContactRequest) String() string { return proto.CompactTextString(m) } func (*RefreshContactRequest) ProtoMessage() {} func (*RefreshContactRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{96} + return fileDescriptor_8aa93e54ccb19003, []int{94} } func (m *RefreshContactRequest) XXX_Unmarshal(b []byte) error { @@ -11734,7 +11371,7 @@ func (m *RefreshContactRequest_Peer) Reset() { *m = RefreshContactReques func (m *RefreshContactRequest_Peer) String() string { return proto.CompactTextString(m) } func (*RefreshContactRequest_Peer) ProtoMessage() {} func (*RefreshContactRequest_Peer) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{96, 0} + return fileDescriptor_8aa93e54ccb19003, []int{94, 0} } func (m *RefreshContactRequest_Peer) XXX_Unmarshal(b []byte) error { @@ -11795,7 +11432,7 @@ func (m *RefreshContactRequest_Request) Reset() { *m = RefreshContactReq func (m *RefreshContactRequest_Request) String() string { return proto.CompactTextString(m) } func (*RefreshContactRequest_Request) ProtoMessage() {} func (*RefreshContactRequest_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{96, 1} + return fileDescriptor_8aa93e54ccb19003, []int{94, 1} } func (m *RefreshContactRequest_Request) XXX_Unmarshal(b []byte) error { @@ -11855,7 +11492,7 @@ func (m *RefreshContactRequest_Reply) Reset() { *m = RefreshContactReque func (m *RefreshContactRequest_Reply) String() string { return proto.CompactTextString(m) } func (*RefreshContactRequest_Reply) ProtoMessage() {} func (*RefreshContactRequest_Reply) Descriptor() ([]byte, []int) { - return fileDescriptor_8aa93e54ccb19003, []int{96, 2} + return fileDescriptor_8aa93e54ccb19003, []int{94, 2} } func (m *RefreshContactRequest_Reply) XXX_Unmarshal(b []byte) error { @@ -12069,12 +11706,6 @@ func init() { proto.RegisterType((*PeerList_Peer)(nil), "berty.protocol.v1.PeerList.Peer") proto.RegisterType((*PeerList_Route)(nil), "berty.protocol.v1.PeerList.Route") proto.RegisterType((*PeerList_Stream)(nil), "berty.protocol.v1.PeerList.Stream") - proto.RegisterType((*AttachmentPrepare)(nil), "berty.protocol.v1.AttachmentPrepare") - proto.RegisterType((*AttachmentPrepare_Request)(nil), "berty.protocol.v1.AttachmentPrepare.Request") - proto.RegisterType((*AttachmentPrepare_Reply)(nil), "berty.protocol.v1.AttachmentPrepare.Reply") - proto.RegisterType((*AttachmentRetrieve)(nil), "berty.protocol.v1.AttachmentRetrieve") - proto.RegisterType((*AttachmentRetrieve_Request)(nil), "berty.protocol.v1.AttachmentRetrieve.Request") - proto.RegisterType((*AttachmentRetrieve_Reply)(nil), "berty.protocol.v1.AttachmentRetrieve.Reply") proto.RegisterType((*Progress)(nil), "berty.protocol.v1.Progress") proto.RegisterType((*MemberWithDevices)(nil), "berty.protocol.v1.MemberWithDevices") proto.RegisterType((*OutOfStoreMessage)(nil), "berty.protocol.v1.OutOfStoreMessage") @@ -12110,405 +11741,393 @@ func init() { func init() { proto.RegisterFile("protocoltypes.proto", fileDescriptor_8aa93e54ccb19003) } var fileDescriptor_8aa93e54ccb19003 = []byte{ - // 6360 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7c, 0x5b, 0x6c, 0x24, 0xd9, - 0x59, 0xf0, 0x56, 0xb7, 0xed, 0xee, 0xfe, 0xba, 0xdd, 0x2e, 0x9f, 0xf1, 0xcc, 0xf4, 0xf4, 0xce, - 0x8c, 0x67, 0x6b, 0x76, 0x76, 0x2e, 0x3b, 0xeb, 0xd9, 0x38, 0x97, 0xd9, 0x6b, 0x36, 0xbe, 0xed, - 0xfc, 0xce, 0xdc, 0x7a, 0xcb, 0xe3, 0x7f, 0x73, 0x81, 0x34, 0xe5, 0xaa, 0xe3, 0x76, 0xad, 0xab, - 0xab, 0x2a, 0x55, 0xd5, 0x9e, 0x31, 0x4a, 0x16, 0x29, 0x22, 0x17, 0x92, 0x10, 0x04, 0x49, 0xb8, - 0x89, 0x07, 0xc4, 0x03, 0x52, 0xa4, 0x10, 0x10, 0x42, 0x48, 0xf0, 0x02, 0x82, 0x07, 0xc2, 0x45, - 0x22, 0x42, 0xbc, 0x21, 0x99, 0xe0, 0x07, 0x24, 0x22, 0xc4, 0x4d, 0x02, 0x09, 0x44, 0x24, 0x74, - 0x6e, 0x55, 0xa7, 0xba, 0xab, 0xda, 0xdd, 0x9e, 0xd9, 0x07, 0xc4, 0x93, 0xfb, 0x7c, 0xe7, 0xbb, - 0x9d, 0xef, 0x7c, 0xe7, 0xd4, 0x77, 0xbe, 0xf3, 0x1d, 0xc3, 0x09, 0x3f, 0xf0, 0x22, 0xcf, 0xf4, - 0x9c, 0x68, 0xdf, 0xc7, 0xe1, 0x02, 0x6d, 0xa1, 0xd9, 0x2d, 0x1c, 0x44, 0xfb, 0x0b, 0xa2, 0x6b, - 0x61, 0xef, 0x7d, 0xcd, 0xb9, 0x8e, 0xd7, 0xf1, 0x28, 0xe0, 0x06, 0xf9, 0xc5, 0xfa, 0x9a, 0x33, - 0x7e, 0x2f, 0xdc, 0x91, 0x28, 0xb5, 0x3f, 0x57, 0xa0, 0xb4, 0x64, 0x9a, 0x5e, 0xcf, 0x8d, 0xd0, - 0x02, 0x4c, 0x76, 0x02, 0xaf, 0xe7, 0x37, 0x94, 0x0b, 0xca, 0x95, 0xea, 0x62, 0x63, 0x61, 0x80, - 0xeb, 0xc2, 0x2d, 0xd2, 0xaf, 0x33, 0x34, 0xb4, 0x00, 0x27, 0x0c, 0x46, 0xda, 0xf6, 0x03, 0x7b, - 0xcf, 0x88, 0x70, 0x7b, 0x17, 0xef, 0x37, 0x0a, 0x17, 0x94, 0x2b, 0x35, 0x7d, 0x96, 0x77, 0xb5, - 0x58, 0xcf, 0x6d, 0xbc, 0x8f, 0xae, 0xc1, 0xac, 0xe1, 0xd8, 0x46, 0x98, 0xc2, 0x2e, 0x52, 0xec, - 0x19, 0xda, 0x21, 0xe1, 0x7e, 0x00, 0x4e, 0xf9, 0xbd, 0x2d, 0xc7, 0x36, 0xdb, 0x01, 0x76, 0x2d, - 0xfc, 0xe3, 0x7b, 0x5e, 0x2f, 0x6c, 0x87, 0x18, 0x5b, 0x8d, 0x09, 0x4a, 0x30, 0xc7, 0x7a, 0xf5, - 0xb8, 0x73, 0x03, 0x63, 0x4b, 0xfb, 0x37, 0x05, 0x26, 0xa9, 0x8a, 0xe8, 0x1c, 0x00, 0xa7, 0x27, - 0x42, 0x14, 0x4a, 0x53, 0x61, 0x10, 0xc2, 0xfe, 0x14, 0x4c, 0x85, 0xd8, 0x0c, 0x70, 0xc4, 0xb5, - 0xe5, 0x2d, 0x42, 0xc6, 0x7e, 0xb5, 0x43, 0xbb, 0xc3, 0x75, 0xab, 0x30, 0xc8, 0x86, 0xdd, 0x41, - 0xaf, 0x02, 0xd0, 0xa1, 0xb7, 0x89, 0x09, 0xa9, 0x26, 0xf5, 0xc5, 0xb3, 0x79, 0x66, 0x7a, 0xb0, - 0xef, 0x63, 0xbd, 0xd2, 0x11, 0x3f, 0xd1, 0x19, 0x28, 0x87, 0x76, 0xc7, 0x6d, 0xfb, 0xbd, 0xad, - 0xc6, 0x24, 0xe5, 0x5c, 0x22, 0xed, 0x56, 0x6f, 0x8b, 0x74, 0x39, 0xb6, 0xbb, 0x4b, 0x75, 0x9d, - 0x62, 0x5d, 0xa4, 0x4d, 0x34, 0xbd, 0x00, 0x35, 0xd1, 0x45, 0x75, 0x2a, 0xd1, 0x6e, 0xe0, 0xdd, - 0x1b, 0x76, 0x47, 0xfb, 0x77, 0x05, 0x54, 0x2a, 0xf0, 0xff, 0x61, 0xc3, 0x0a, 0xd7, 0x1e, 0xf9, - 0x5e, 0x10, 0x1d, 0x35, 0x7e, 0x59, 0x97, 0x42, 0x5a, 0x97, 0x35, 0x38, 0xd1, 0xc5, 0x91, 0x61, - 0x19, 0x91, 0xd1, 0xde, 0x21, 0x1c, 0xdb, 0xa6, 0x6d, 0x85, 0x8d, 0xe2, 0x85, 0xe2, 0x95, 0xda, - 0xf2, 0xc9, 0xc3, 0x83, 0xf9, 0xd9, 0xbb, 0xbc, 0x9b, 0xca, 0x5b, 0x59, 0x5f, 0x0d, 0xf5, 0xd9, - 0x6e, 0x0a, 0x64, 0x5b, 0x21, 0x63, 0x13, 0x86, 0x46, 0x07, 0x87, 0x32, 0x9b, 0x09, 0x99, 0x0d, - 0xeb, 0x4e, 0xb1, 0x91, 0x41, 0x84, 0x8d, 0x6c, 0x99, 0xc9, 0x94, 0x65, 0xb4, 0x3f, 0x53, 0x60, - 0x9a, 0x8e, 0x5b, 0xe8, 0x43, 0xa6, 0x07, 0xef, 0x61, 0x37, 0x62, 0xd3, 0xa3, 0xe4, 0x4e, 0xcf, - 0x1a, 0x41, 0x62, 0xd3, 0x83, 0xc5, 0x4f, 0xd4, 0x80, 0x92, 0x6f, 0xec, 0x3b, 0x9e, 0x61, 0x09, - 0x8b, 0xf0, 0x26, 0x52, 0xa1, 0x98, 0x78, 0x03, 0xf9, 0x89, 0x5a, 0x30, 0x2b, 0xf8, 0xb5, 0xc5, - 0xd0, 0xa9, 0x3b, 0x54, 0x17, 0x2f, 0x66, 0xc8, 0x6b, 0xf1, 0xdf, 0x42, 0x51, 0x5d, 0xf5, 0xfb, - 0x20, 0xda, 0x37, 0xc4, 0x60, 0xd6, 0xdc, 0x3d, 0xec, 0x78, 0x3e, 0x46, 0x73, 0x30, 0xe9, 0x7a, - 0xae, 0x89, 0xf9, 0xe4, 0xb1, 0x06, 0x81, 0x52, 0x95, 0xb9, 0x8e, 0xac, 0x81, 0xde, 0x86, 0x33, - 0xd8, 0x35, 0x83, 0x7d, 0x3f, 0xc2, 0x56, 0xdb, 0x88, 0x22, 0xc3, 0xdc, 0xe9, 0x12, 0x3b, 0x48, - 0x33, 0xf7, 0xf4, 0xe1, 0xc1, 0xfc, 0xe9, 0x35, 0x81, 0xb4, 0x14, 0xe3, 0x50, 0xc3, 0x9f, 0xc6, - 0x19, 0x1d, 0xb6, 0x15, 0x6a, 0xff, 0xaa, 0x40, 0x9d, 0xcf, 0x13, 0x99, 0x13, 0x1c, 0x84, 0xc4, - 0x4e, 0x74, 0x61, 0xe3, 0x80, 0x6a, 0x36, 0xa1, 0x8b, 0x26, 0xba, 0x0a, 0x15, 0x0b, 0xef, 0xd9, - 0x26, 0x6e, 0xfb, 0xbb, 0x4c, 0xbf, 0xe5, 0xda, 0xe1, 0xc1, 0x7c, 0x79, 0x95, 0x02, 0x5b, 0xb7, - 0xf5, 0x32, 0xeb, 0x6e, 0xed, 0x66, 0x98, 0xf4, 0x36, 0x94, 0x25, 0x4b, 0x16, 0xaf, 0x54, 0x17, - 0x6f, 0x64, 0x58, 0x32, 0xad, 0xcb, 0x82, 0x30, 0xdf, 0x9a, 0x1b, 0x05, 0xfb, 0x7a, 0xcc, 0xa0, - 0xf9, 0x2a, 0x4c, 0xa7, 0xba, 0x88, 0x3c, 0xb1, 0x0e, 0x2a, 0x3a, 0xf9, 0x49, 0x0c, 0xb9, 0x67, - 0x38, 0x3d, 0x4c, 0x15, 0xad, 0xe8, 0xac, 0xf1, 0x4a, 0xe1, 0x25, 0x45, 0x5b, 0x01, 0xb5, 0x7f, - 0xc2, 0xd0, 0x0d, 0x38, 0x91, 0x98, 0x95, 0x6c, 0x44, 0x64, 0x47, 0x08, 0x1b, 0x0a, 0x31, 0xad, - 0x8e, 0xa4, 0xae, 0x0d, 0xd6, 0xa3, 0x7d, 0x4e, 0x01, 0x35, 0xb6, 0x36, 0xd7, 0x1a, 0x9d, 0x85, - 0x8a, 0xef, 0x18, 0xb6, 0x1b, 0xe1, 0x47, 0x51, 0xbc, 0x26, 0x05, 0x20, 0xdb, 0xa9, 0x0a, 0x8f, - 0xe3, 0x54, 0x7f, 0xac, 0xc0, 0x0c, 0x97, 0x1d, 0xbb, 0xd5, 0x65, 0x98, 0xe1, 0xab, 0x8c, 0x2e, - 0x4b, 0x1c, 0x84, 0x5c, 0x93, 0x7a, 0x77, 0x60, 0x9e, 0x39, 0x44, 0xac, 0x07, 0xde, 0x4c, 0x3c, - 0xb3, 0x28, 0x7b, 0xe6, 0x50, 0x1f, 0x9c, 0x78, 0x0c, 0x1f, 0xfc, 0x3d, 0x05, 0x6a, 0x74, 0xc5, - 0xae, 0x78, 0xcc, 0x50, 0xa7, 0xa0, 0x60, 0x5b, 0x4c, 0xeb, 0xe5, 0xa9, 0xc3, 0x83, 0xf9, 0xc2, - 0xfa, 0xaa, 0x5e, 0xb0, 0x2d, 0x74, 0x1d, 0xc0, 0x37, 0x02, 0x22, 0x93, 0x88, 0x2c, 0x50, 0x91, - 0xd3, 0x87, 0x07, 0xf3, 0x95, 0x16, 0x85, 0x12, 0x21, 0x15, 0x86, 0xb0, 0x6e, 0x85, 0xe8, 0x39, - 0x28, 0xb3, 0xbd, 0xdc, 0xdf, 0x65, 0x03, 0x59, 0xae, 0x1e, 0x1e, 0xcc, 0x97, 0xe8, 0x22, 0x6c, - 0xdd, 0xd6, 0x4b, 0xb4, 0xb3, 0xb5, 0x8b, 0x5e, 0x85, 0x99, 0xec, 0xd1, 0xa0, 0xc3, 0x83, 0xf9, - 0x7a, 0xdf, 0x20, 0xea, 0x46, 0x5a, 0x77, 0x1d, 0xaa, 0x4b, 0x7e, 0xb2, 0x41, 0xa5, 0x56, 0x88, - 0x32, 0x74, 0x85, 0xe4, 0x9a, 0x5f, 0xeb, 0x00, 0x22, 0x96, 0x30, 0xcc, 0x68, 0xc9, 0xb2, 0x96, - 0xc8, 0x77, 0x93, 0xec, 0xe8, 0x63, 0xb0, 0x7e, 0x0e, 0xca, 0xfc, 0x3b, 0x2c, 0x96, 0x29, 0x1d, - 0x39, 0x65, 0x45, 0x46, 0xce, 0xbe, 0xc5, 0xbb, 0xda, 0x57, 0x14, 0x98, 0xa3, 0xe6, 0x58, 0xb2, - 0xac, 0xbb, 0xb8, 0xbb, 0x85, 0x03, 0xc6, 0x8c, 0xc8, 0xea, 0xd2, 0x76, 0x9f, 0x2c, 0x86, 0x44, - 0x64, 0xb1, 0xee, 0xd6, 0xee, 0x38, 0x7b, 0xc2, 0x39, 0x00, 0xce, 0x55, 0xfa, 0xf6, 0x32, 0x08, - 0xf9, 0xcc, 0xad, 0x41, 0x8d, 0x11, 0xb1, 0x25, 0x86, 0x9e, 0x86, 0x8a, 0xb9, 0x63, 0xd8, 0xae, - 0xf4, 0x81, 0x2b, 0x53, 0x00, 0xb1, 0x86, 0xb4, 0x49, 0x15, 0x52, 0x9b, 0x94, 0xf6, 0x75, 0x69, - 0x50, 0x29, 0x7e, 0x63, 0x18, 0xf0, 0x43, 0x50, 0xb7, 0x70, 0x18, 0xb5, 0x13, 0x23, 0xb0, 0x91, - 0xa9, 0x87, 0x07, 0xf3, 0xb5, 0x55, 0x1c, 0x46, 0xb1, 0x21, 0x6a, 0x56, 0xd2, 0xda, 0x95, 0x3f, - 0x31, 0xc5, 0xd4, 0x27, 0x46, 0xfb, 0xa6, 0x02, 0x17, 0xee, 0xf6, 0x9c, 0xc8, 0x66, 0xb8, 0x42, - 0x41, 0x3a, 0x25, 0x3a, 0x0e, 0x3d, 0x67, 0xaf, 0x7f, 0x7f, 0x1d, 0xae, 0xe1, 0x25, 0xa8, 0xb3, - 0x29, 0x0e, 0x38, 0x31, 0x77, 0xa2, 0x69, 0x23, 0xc5, 0x71, 0x1e, 0xaa, 0x22, 0x22, 0xf3, 0xbc, - 0x6d, 0xae, 0x14, 0xf0, 0x58, 0xcc, 0xf3, 0xb6, 0xb5, 0x2f, 0x2a, 0x70, 0x26, 0xa5, 0x97, 0xe1, - 0x46, 0x4b, 0x56, 0xd7, 0x76, 0x75, 0xcf, 0xc1, 0xe3, 0x28, 0xf4, 0x06, 0xcc, 0x76, 0x08, 0x31, - 0xc6, 0x03, 0x56, 0x3b, 0x71, 0x78, 0x30, 0x3f, 0x73, 0x8b, 0x75, 0xc6, 0x86, 0x9b, 0xe9, 0xa4, - 0x00, 0xbb, 0xda, 0x1a, 0x34, 0x24, 0x45, 0xd6, 0x5d, 0x3b, 0xb2, 0x0d, 0x87, 0x35, 0xc6, 0xf0, - 0x47, 0xcd, 0x80, 0x0b, 0xb1, 0x71, 0x2d, 0xcb, 0x8e, 0x6c, 0xcf, 0x35, 0x9c, 0x74, 0x14, 0x39, - 0xce, 0xb0, 0x10, 0x4c, 0xd0, 0xa0, 0x94, 0x59, 0x97, 0xfe, 0xd6, 0x2c, 0xb8, 0xc8, 0xc2, 0x64, - 0xdc, 0xf5, 0xf6, 0xf0, 0x7b, 0x25, 0xc5, 0x03, 0xc4, 0xe3, 0x76, 0x2a, 0xec, 0xa3, 0x9e, 0xed, - 0x8e, 0xc7, 0x34, 0x8e, 0xf6, 0x0b, 0x23, 0x45, 0xfb, 0x1a, 0x06, 0x55, 0x16, 0x78, 0x07, 0x6f, - 0x47, 0x63, 0x6e, 0x3a, 0xf1, 0x76, 0x5b, 0xc8, 0xdf, 0x6e, 0xb5, 0x8f, 0xc2, 0x39, 0x2e, 0x86, - 0x6f, 0x72, 0x3a, 0xfe, 0x74, 0x0f, 0x87, 0xd1, 0xaa, 0x1d, 0x1a, 0x5b, 0xce, 0x58, 0x43, 0xd4, - 0xd6, 0xe1, 0x6c, 0x26, 0xaf, 0x35, 0x77, 0x6c, 0x56, 0x5f, 0x50, 0xe0, 0x62, 0x26, 0x2f, 0x1d, - 0x6f, 0xe3, 0x00, 0xbb, 0x26, 0xd6, 0x71, 0x38, 0xde, 0x2e, 0x92, 0x7f, 0xc4, 0x29, 0x0c, 0x39, - 0xe2, 0xfc, 0xb5, 0x92, 0x63, 0xa0, 0x35, 0xf7, 0xd3, 0x3d, 0xdc, 0x1b, 0xcf, 0x07, 0x46, 0x9c, - 0x14, 0xf4, 0x3a, 0xd9, 0x4e, 0xa9, 0x30, 0xba, 0x47, 0x64, 0x07, 0x24, 0x1b, 0x3b, 0x46, 0x80, - 0x89, 0x61, 0x85, 0x5e, 0x82, 0x06, 0x3d, 0x03, 0x35, 0xef, 0xa1, 0x9b, 0x8e, 0x94, 0x6b, 0x7a, - 0xd5, 0x7b, 0xe8, 0xc6, 0xa1, 0x4a, 0x04, 0x67, 0x32, 0x47, 0xb5, 0x41, 0xc2, 0xdb, 0x31, 0x46, - 0x74, 0x1d, 0x80, 0x4b, 0x4d, 0xc6, 0x44, 0x63, 0x00, 0xce, 0xb6, 0x75, 0x5b, 0xaf, 0x70, 0x84, - 0xd6, 0xae, 0xf6, 0x37, 0x79, 0xc6, 0xd4, 0xb1, 0x89, 0xed, 0xbd, 0xf1, 0x8c, 0x39, 0x96, 0x68, - 0xf4, 0x21, 0x38, 0x2d, 0xb0, 0xfb, 0xa7, 0x9f, 0x6d, 0xc3, 0x27, 0x4d, 0xa1, 0x51, 0xdf, 0xb6, - 0xa1, 0x0a, 0xba, 0x3e, 0x7b, 0xce, 0x70, 0x78, 0x6c, 0xd3, 0x7d, 0x38, 0x9f, 0xb7, 0x94, 0x4c, - 0x23, 0xb0, 0xde, 0xc3, 0xd1, 0x69, 0xbf, 0x9a, 0x67, 0xd8, 0x25, 0xd3, 0xc4, 0x24, 0xc6, 0x7b, - 0xef, 0x0c, 0x3b, 0x62, 0x5c, 0xa7, 0xf9, 0x70, 0x32, 0xad, 0xe1, 0xb2, 0xe3, 0x99, 0xbb, 0xef, - 0xa5, 0x51, 0x02, 0x38, 0x9d, 0x96, 0xb8, 0xe9, 0x6e, 0xbd, 0xd7, 0x32, 0xbf, 0xa2, 0x40, 0x83, - 0x0b, 0xdd, 0xc0, 0x01, 0x61, 0xf1, 0xc0, 0xdb, 0xc5, 0xee, 0x92, 0x35, 0xe6, 0xf4, 0xaf, 0xc2, - 0x74, 0xc8, 0xe8, 0xdb, 0x11, 0x61, 0xc0, 0xbf, 0x1a, 0xf3, 0x59, 0xfb, 0x80, 0x24, 0x47, 0xaf, - 0x85, 0x52, 0x4b, 0xf3, 0xa0, 0x99, 0xa1, 0x0c, 0xfb, 0x50, 0x8e, 0xbb, 0x71, 0x51, 0x35, 0xda, - 0x36, 0xdb, 0x2d, 0x2b, 0x6c, 0x92, 0x29, 0xbb, 0xf5, 0x55, 0xbd, 0x44, 0x3b, 0xd7, 0x2d, 0xed, - 0xb7, 0x45, 0x6e, 0x44, 0xc7, 0xbe, 0x63, 0x9b, 0x46, 0x64, 0xbb, 0x9d, 0xf1, 0x86, 0x8d, 0x8c, - 0x5e, 0xb4, 0x83, 0xdd, 0x88, 0x12, 0x7b, 0x6e, 0xbb, 0x17, 0x38, 0x5c, 0x22, 0x4d, 0x62, 0x2c, - 0xa5, 0x7a, 0x37, 0xf5, 0x3b, 0xfa, 0x6c, 0x9a, 0x60, 0x33, 0x70, 0xd0, 0x0b, 0x80, 0x02, 0x21, - 0xdf, 0x73, 0xdb, 0xc4, 0x24, 0x38, 0xa0, 0xce, 0x59, 0xd1, 0x67, 0xa5, 0x9e, 0x0d, 0xda, 0xa1, - 0xdd, 0x05, 0xb4, 0xee, 0x86, 0x91, 0xe1, 0x9a, 0x98, 0x65, 0x73, 0x56, 0xc9, 0x99, 0xb6, 0x02, - 0x25, 0xbe, 0x86, 0x9a, 0xd7, 0x61, 0x92, 0x8c, 0x67, 0x1f, 0x5d, 0x84, 0x69, 0x4c, 0x31, 0xb0, - 0xd5, 0xa6, 0x3b, 0x01, 0x8b, 0x83, 0x6b, 0x02, 0x48, 0x08, 0xb5, 0x7f, 0x9a, 0x82, 0x86, 0xe0, - 0x77, 0x0b, 0x13, 0xdf, 0xdb, 0xb6, 0x3b, 0xbd, 0x80, 0x4a, 0x94, 0xb9, 0xfe, 0x70, 0x52, 0xb0, - 0xbd, 0x0e, 0x10, 0x27, 0xf6, 0x84, 0x85, 0xa8, 0x8b, 0xf1, 0xc9, 0x23, 0x2e, 0x26, 0xd2, 0x7b, - 0x63, 0x85, 0xf8, 0xaf, 0x81, 0x2a, 0x18, 0xf7, 0xad, 0x51, 0x76, 0x98, 0x92, 0xe2, 0x8b, 0xd6, - 0x6d, 0xbd, 0x6e, 0xc8, 0xed, 0x5d, 0x74, 0x11, 0x4a, 0x3e, 0xc6, 0x01, 0x99, 0xf3, 0x09, 0x3a, - 0x03, 0x70, 0x78, 0x30, 0x3f, 0xd5, 0xc2, 0x38, 0x58, 0x5f, 0xd5, 0xa7, 0x48, 0xd7, 0xba, 0x45, - 0xce, 0xd8, 0x8e, 0x1d, 0x46, 0xd8, 0x25, 0x27, 0xdb, 0xc9, 0x0b, 0xc5, 0x2b, 0x15, 0x3d, 0x01, - 0xa0, 0x8f, 0x43, 0x75, 0xcb, 0xc1, 0x6d, 0xcc, 0x02, 0x00, 0x9a, 0x6b, 0xab, 0x2f, 0xbe, 0x94, - 0xe1, 0xc4, 0x79, 0x06, 0x5b, 0xd8, 0xc0, 0x11, 0x71, 0xa2, 0x8d, 0xc8, 0x88, 0xb0, 0x0e, 0x5b, - 0x0e, 0x16, 0xc1, 0xc4, 0x16, 0xa8, 0x0f, 0xed, 0x6d, 0xbb, 0xed, 0x2f, 0xfa, 0x31, 0xff, 0xd2, - 0x63, 0xf2, 0xaf, 0x13, 0x8e, 0xad, 0x45, 0x5f, 0xc8, 0xf8, 0x24, 0xd4, 0xba, 0x96, 0x1b, 0xc6, - 0xfc, 0xcb, 0x8f, 0xc9, 0xbf, 0x4a, 0xb8, 0x09, 0xe6, 0x3f, 0x0a, 0xd3, 0x01, 0x76, 0x8c, 0xfd, - 0x98, 0x7b, 0xe5, 0x31, 0xb9, 0xd7, 0x28, 0x3b, 0xc1, 0x5e, 0x87, 0x59, 0xe1, 0x26, 0xbd, 0x70, - 0x87, 0xef, 0x22, 0x40, 0x77, 0x91, 0xe7, 0xb2, 0xd2, 0x1b, 0xbd, 0x70, 0x87, 0x6f, 0x12, 0xfc, - 0x63, 0x1c, 0xe8, 0x33, 0xdc, 0x91, 0x7a, 0xe1, 0x0e, 0x5d, 0xe9, 0xe8, 0x36, 0x20, 0x99, 0x27, - 0x5f, 0x58, 0x55, 0xca, 0xf4, 0xdc, 0x10, 0xa6, 0x38, 0xd0, 0xd5, 0x84, 0x17, 0x5f, 0x76, 0xb7, - 0xa0, 0x26, 0xab, 0x8f, 0xaa, 0x50, 0xda, 0x74, 0x77, 0x5d, 0xef, 0xa1, 0xab, 0x3e, 0x45, 0x1a, - 0x7c, 0x20, 0xaa, 0x82, 0x6a, 0x50, 0x16, 0xe1, 0xa8, 0x5a, 0x40, 0x33, 0x50, 0xdd, 0x74, 0x8d, - 0x3d, 0xc3, 0x76, 0x08, 0x44, 0x2d, 0x6a, 0x9f, 0x85, 0xd3, 0x39, 0x31, 0xa2, 0xbc, 0xdc, 0xde, - 0x16, 0xab, 0x2d, 0x3f, 0x0e, 0x54, 0xf2, 0xe3, 0x40, 0x72, 0x96, 0x14, 0xf3, 0x44, 0xd6, 0x5c, - 0x59, 0x17, 0x4d, 0xed, 0x79, 0x38, 0x99, 0x19, 0x3a, 0xcb, 0xc2, 0x4b, 0x5c, 0xb8, 0xf6, 0x63, - 0x30, 0x97, 0x15, 0x1b, 0xcb, 0xb8, 0xaf, 0x3f, 0x96, 0xa2, 0xda, 0x0e, 0x9c, 0xed, 0xb7, 0x46, - 0x88, 0xb3, 0x4d, 0xf2, 0x98, 0x92, 0xbe, 0xac, 0xc4, 0x99, 0x91, 0x24, 0x7a, 0xb4, 0x9a, 0xbb, - 0xb1, 0x00, 0x39, 0x8e, 0x55, 0x9e, 0x40, 0x1c, 0x5b, 0x18, 0x88, 0x63, 0x13, 0xc3, 0x7e, 0xac, - 0xdf, 0xb0, 0x2c, 0xf2, 0x69, 0xde, 0x4c, 0xb4, 0x49, 0x7f, 0xc9, 0x95, 0xe1, 0x5f, 0xf2, 0x84, - 0xf3, 0xc7, 0x33, 0xe6, 0x97, 0xc4, 0x73, 0x4f, 0x80, 0x75, 0x0b, 0x6a, 0x72, 0x30, 0xf4, 0x04, - 0x38, 0xea, 0x50, 0x4f, 0x07, 0x3b, 0x4f, 0x80, 0xe7, 0x5b, 0x70, 0x42, 0x24, 0xc0, 0x78, 0xf6, - 0x8b, 0xce, 0xf3, 0xfb, 0x12, 0xc6, 0x72, 0x0c, 0xa8, 0xe4, 0xc7, 0x80, 0x09, 0xcb, 0x07, 0x70, - 0xaa, 0x3f, 0xfd, 0xb2, 0x12, 0x60, 0x23, 0x4a, 0xb9, 0xe7, 0x0d, 0xe1, 0x9e, 0x23, 0xb2, 0xd7, - 0x3e, 0x01, 0x73, 0xfd, 0x5c, 0xc9, 0x39, 0xbd, 0xf9, 0x72, 0xa2, 0xe9, 0x98, 0x77, 0x6e, 0x89, - 0xc6, 0x1b, 0x70, 0xb2, 0x9f, 0xf7, 0x1d, 0x6c, 0xec, 0xe1, 0xc7, 0x32, 0x83, 0x09, 0x97, 0x06, - 0xb2, 0x50, 0x72, 0xc2, 0x88, 0x78, 0x9a, 0xe3, 0x85, 0x8f, 0x27, 0xe4, 0x8b, 0x0a, 0x9c, 0x1f, - 0xcc, 0x75, 0xf1, 0x9c, 0x12, 0xcd, 0x03, 0x35, 0x7f, 0x64, 0x6c, 0xf6, 0xe9, 0x1c, 0x50, 0x61, - 0x58, 0x0e, 0x28, 0xd1, 0xe4, 0x6b, 0x19, 0x59, 0xb7, 0x75, 0x77, 0xcf, 0x8e, 0xe8, 0xc7, 0x8c, - 0x3b, 0xc0, 0x31, 0x86, 0x7a, 0x53, 0x38, 0xca, 0x98, 0xb3, 0xab, 0xfd, 0xa1, 0x02, 0x33, 0x52, - 0xbe, 0x98, 0xba, 0xf5, 0x97, 0x94, 0xf1, 0x8d, 0x91, 0x7f, 0x97, 0x95, 0x91, 0xcd, 0x2e, 0x8e, - 0x9a, 0xcd, 0x6e, 0x6a, 0x62, 0x5c, 0x67, 0xa0, 0x68, 0xc6, 0x29, 0xf8, 0xd2, 0xe1, 0xc1, 0x7c, - 0x71, 0x65, 0x7d, 0x55, 0x27, 0x30, 0xed, 0x0f, 0x14, 0xa8, 0xd3, 0x21, 0xd0, 0x64, 0xf5, 0xff, - 0xc6, 0x11, 0x7c, 0x47, 0x01, 0x94, 0xba, 0x57, 0xa4, 0x97, 0x0f, 0xe4, 0x04, 0xc4, 0x2e, 0x17, - 0x4d, 0x2f, 0xb9, 0xc0, 0xc9, 0x3e, 0x01, 0xc9, 0xb7, 0x15, 0x7a, 0x0d, 0xcb, 0x77, 0x17, 0xaf, - 0x49, 0xd7, 0x5c, 0xec, 0x08, 0x75, 0x21, 0xcf, 0x29, 0xe2, 0x8b, 0x9d, 0x98, 0x22, 0xb9, 0xfd, - 0x2b, 0x4a, 0xb7, 0x7f, 0xda, 0x6f, 0x29, 0x30, 0xcb, 0x29, 0xd8, 0x5d, 0xcf, 0x13, 0xd4, 0xf7, - 0x55, 0x28, 0x89, 0x6b, 0x22, 0xa6, 0xee, 0x33, 0x47, 0xde, 0xca, 0xe9, 0x82, 0x42, 0xbe, 0xc3, - 0x28, 0xa6, 0xef, 0x30, 0xfe, 0x23, 0x51, 0x99, 0x0d, 0xed, 0x8e, 0x1d, 0x46, 0xcd, 0xef, 0x1f, - 0xc3, 0x51, 0x9e, 0x83, 0x72, 0x68, 0xbb, 0x26, 0x16, 0x27, 0x41, 0x8e, 0xb7, 0x41, 0x60, 0xe4, - 0x24, 0x48, 0x3b, 0xd7, 0x2d, 0xf4, 0x34, 0x54, 0x18, 0x9e, 0xeb, 0x3d, 0xa4, 0xda, 0x94, 0x75, - 0x46, 0x78, 0xcf, 0x7b, 0x48, 0x98, 0xf4, 0xdc, 0xc8, 0x76, 0xc4, 0xd1, 0x82, 0x33, 0xd9, 0x24, - 0x30, 0xc2, 0x84, 0x76, 0x32, 0x26, 0x0c, 0x8f, 0x30, 0x99, 0x64, 0x4c, 0x28, 0x80, 0x30, 0xb9, - 0x48, 0xe2, 0xe7, 0x3d, 0x1c, 0x84, 0xb8, 0xed, 0x05, 0x16, 0x0e, 0xe8, 0xe9, 0xa2, 0x4c, 0xa2, - 0x60, 0x0a, 0xbc, 0x4f, 0x60, 0xc9, 0x65, 0x3d, 0xb7, 0xd9, 0xff, 0x95, 0x71, 0xff, 0xb7, 0x02, - 0x15, 0xbe, 0xbf, 0x6e, 0x7b, 0xcd, 0xf6, 0xf8, 0xe3, 0x1d, 0x2b, 0xed, 0xd1, 0xfc, 0x69, 0xe5, - 0x98, 0x5b, 0xf0, 0x18, 0xdf, 0x91, 0xf4, 0xc1, 0xb7, 0x38, 0x34, 0x7d, 0xfc, 0x0e, 0x4c, 0x2f, - 0x99, 0x11, 0xad, 0x6e, 0xa1, 0xd2, 0x9a, 0xad, 0xf1, 0x2d, 0x70, 0x0e, 0xc0, 0xf1, 0x4c, 0xc3, - 0x69, 0x7b, 0xae, 0xb3, 0xcf, 0x83, 0xfe, 0x0a, 0x85, 0xdc, 0x77, 0x9d, 0xfd, 0xe4, 0xab, 0x76, - 0x17, 0x66, 0x56, 0xb1, 0x91, 0x92, 0xf6, 0x38, 0x9f, 0xeb, 0xaf, 0x4e, 0xf2, 0xa5, 0xca, 0x6f, - 0xcb, 0x22, 0x23, 0xea, 0x85, 0xc7, 0xe1, 0xf8, 0x8b, 0x45, 0x31, 0x27, 0xaf, 0xc3, 0x84, 0x54, - 0xa1, 0x71, 0x35, 0x6f, 0x4a, 0x64, 0x81, 0x0b, 0xb4, 0x5c, 0x83, 0x92, 0x65, 0xd7, 0x40, 0x34, - 0xff, 0x44, 0x81, 0xe9, 0x16, 0xc6, 0xc1, 0x8a, 0xe7, 0xba, 0xd8, 0x8c, 0xb0, 0x25, 0xe7, 0x0b, - 0x94, 0xdc, 0x7c, 0xc1, 0x18, 0xd9, 0x8b, 0x7b, 0x00, 0x51, 0x60, 0xb8, 0xa1, 0xef, 0x05, 0x11, - 0xfb, 0xe8, 0xd4, 0x17, 0x17, 0x46, 0x53, 0x5e, 0x90, 0xe9, 0x12, 0x07, 0x74, 0x0a, 0xa6, 0xba, - 0x86, 0x65, 0x05, 0xec, 0x42, 0xb9, 0xa2, 0xf3, 0x56, 0xf3, 0x26, 0xa8, 0x44, 0x49, 0x1d, 0x9b, - 0x6c, 0x28, 0xb6, 0xdb, 0x19, 0x69, 0x2c, 0x82, 0x90, 0x44, 0x69, 0x63, 0x19, 0x41, 0xdb, 0x82, - 0x09, 0x5a, 0x03, 0x33, 0x03, 0x55, 0xf2, 0x37, 0x39, 0xf6, 0x36, 0x60, 0x8e, 0x00, 0xfa, 0xb9, - 0xaa, 0x0a, 0x3a, 0x09, 0xb3, 0xa2, 0x27, 0xb6, 0xb8, 0x5a, 0x90, 0x09, 0x64, 0xfd, 0xd5, 0xa2, - 0xb6, 0x06, 0x95, 0xd8, 0x0c, 0xa8, 0x0e, 0xf0, 0xc0, 0x8f, 0x12, 0x39, 0x00, 0x53, 0x0f, 0xfc, - 0xe8, 0xce, 0xd2, 0x3d, 0x55, 0xe1, 0xbf, 0xdf, 0x5e, 0xba, 0xa7, 0x16, 0x90, 0x0a, 0xb5, 0x07, - 0x7e, 0xd4, 0x0a, 0xbc, 0x47, 0x76, 0xd7, 0x8e, 0xf6, 0xd5, 0xa2, 0xf6, 0x5d, 0x85, 0xb8, 0xf7, - 0x56, 0xaf, 0x43, 0x76, 0x4e, 0x6a, 0xe9, 0x50, 0x8e, 0xd1, 0xbf, 0xa5, 0x8c, 0x19, 0xa4, 0xa3, - 0x8f, 0xa6, 0x6a, 0xba, 0x0a, 0x47, 0xd7, 0x74, 0xb1, 0x6d, 0x27, 0xb3, 0xc4, 0x2b, 0xbd, 0x49, - 0x15, 0x8f, 0xc8, 0xcd, 0x7e, 0xb9, 0x08, 0xa7, 0xe8, 0x50, 0xd6, 0xdd, 0xd0, 0xc7, 0x26, 0x1b, - 0xcd, 0x46, 0xe4, 0x05, 0xb8, 0xf9, 0x85, 0x63, 0x7c, 0x11, 0x36, 0xa0, 0xec, 0x78, 0x1d, 0x79, - 0x18, 0xcf, 0x67, 0x0c, 0x63, 0x40, 0xe0, 0x1d, 0xaf, 0x43, 0x47, 0x45, 0x99, 0xf2, 0x86, 0x5e, - 0x72, 0xd8, 0x8f, 0xe6, 0xdf, 0x2b, 0x47, 0x47, 0x4c, 0xe8, 0x06, 0x54, 0x79, 0xe1, 0x85, 0x99, - 0x54, 0x5e, 0xd4, 0x0f, 0x0f, 0xe6, 0x81, 0x55, 0x5e, 0xd0, 0x50, 0x8c, 0xd7, 0x66, 0xd0, 0xaa, - 0xae, 0x3b, 0x52, 0x8d, 0x99, 0x54, 0xb1, 0x55, 0x1c, 0xa1, 0x62, 0x2b, 0x2e, 0x35, 0x8b, 0x41, - 0xe9, 0x25, 0x3c, 0x71, 0x54, 0x55, 0x85, 0x08, 0x2b, 0xa7, 0xd2, 0x37, 0xf0, 0x3e, 0x00, 0x35, - 0xcd, 0xb1, 0x37, 0x4c, 0xf9, 0x74, 0xc8, 0x57, 0x1c, 0x2b, 0x10, 0xe2, 0xb9, 0x69, 0xb6, 0xe4, - 0x42, 0xbd, 0xc4, 0xd6, 0x5c, 0xa8, 0xfd, 0x5a, 0x01, 0xe6, 0x96, 0x7a, 0xd1, 0xce, 0xda, 0x23, - 0x73, 0xc7, 0x70, 0x3b, 0x58, 0xc7, 0xa1, 0xef, 0xb9, 0x21, 0x46, 0xcf, 0x40, 0xcd, 0x30, 0x4d, - 0x1c, 0x86, 0x3c, 0x49, 0xc6, 0xaa, 0x96, 0xaa, 0x0c, 0xc6, 0x12, 0x5f, 0x73, 0x30, 0x19, 0x9a, - 0x9e, 0x1f, 0x57, 0x2f, 0xd1, 0x06, 0xdd, 0x18, 0x83, 0xc0, 0x13, 0xa9, 0x65, 0xd6, 0x40, 0xcf, - 0xc3, 0x2c, 0xfd, 0xd1, 0xb6, 0x70, 0x68, 0x06, 0xb6, 0x4f, 0xce, 0x36, 0x2c, 0x81, 0xaa, 0xab, - 0xb4, 0x63, 0x35, 0x81, 0xa3, 0xb7, 0xa0, 0xcc, 0x33, 0xf6, 0x2c, 0x7b, 0x5a, 0x5d, 0xfc, 0x60, - 0xc6, 0x74, 0x64, 0xa9, 0x2d, 0xf2, 0xfe, 0x21, 0x2f, 0xc6, 0x12, 0x6c, 0x9a, 0xaf, 0xc2, 0x74, - 0xaa, 0x6b, 0xac, 0x62, 0xac, 0xdf, 0x51, 0xa0, 0x41, 0xe7, 0x85, 0x88, 0xe4, 0x6c, 0x36, 0x70, - 0x44, 0xad, 0xd0, 0xfc, 0x9a, 0x22, 0xa7, 0x76, 0x26, 0x13, 0x6b, 0x55, 0x17, 0x2f, 0x8f, 0xa8, - 0xb5, 0xce, 0xa8, 0x9e, 0x4c, 0xa2, 0x3f, 0xf9, 0x68, 0x7e, 0x06, 0xd4, 0xfe, 0x34, 0x12, 0x3a, - 0x05, 0x85, 0xd8, 0x85, 0x68, 0xd9, 0x52, 0xeb, 0xb6, 0x5e, 0xf0, 0x8f, 0x79, 0x0f, 0x8c, 0x9a, - 0xd2, 0x41, 0x82, 0x05, 0xd7, 0x71, 0x5b, 0x73, 0xe0, 0xac, 0x7c, 0xbf, 0xb2, 0xd1, 0xf3, 0xd9, - 0x75, 0x00, 0x07, 0x12, 0x07, 0x8b, 0x2f, 0x73, 0xc4, 0x77, 0xb8, 0xa2, 0x57, 0xc5, 0x55, 0x0d, - 0x5b, 0x53, 0xaa, 0x40, 0xc1, 0xae, 0xe5, 0x7b, 0x36, 0xff, 0xdc, 0x56, 0xf4, 0x19, 0x0e, 0x5f, - 0xe3, 0x60, 0xed, 0x07, 0x0a, 0xd4, 0x64, 0x71, 0x64, 0x36, 0x65, 0xc7, 0x7d, 0x92, 0x16, 0x46, - 0x9f, 0x02, 0x14, 0x8a, 0xe1, 0xb4, 0x63, 0x4f, 0x2d, 0xe6, 0x16, 0x0c, 0x0e, 0xb3, 0x83, 0x3e, - 0x1b, 0xf6, 0x41, 0x42, 0x74, 0x1e, 0x00, 0x3f, 0xf2, 0x6d, 0x96, 0xce, 0xa6, 0xab, 0xa4, 0xa8, - 0x4b, 0x10, 0xed, 0xa7, 0x14, 0x38, 0x2d, 0xb9, 0xe2, 0x8a, 0xd7, 0xf5, 0x1d, 0x1c, 0xe1, 0x37, - 0x1d, 0xef, 0x61, 0xf3, 0xf5, 0xc4, 0x1b, 0x17, 0xa1, 0x66, 0x1a, 0x8e, 0xb3, 0x65, 0x98, 0xbb, - 0x74, 0x98, 0xec, 0xd3, 0x3b, 0x73, 0x78, 0x30, 0x5f, 0x5d, 0xe1, 0x70, 0x32, 0xc0, 0xaa, 0x40, - 0x22, 0xce, 0x23, 0x6f, 0x20, 0xf1, 0xe5, 0x96, 0x32, 0xe4, 0x72, 0xeb, 0x77, 0x15, 0x38, 0x21, - 0xe9, 0xb2, 0xee, 0xda, 0x11, 0xd5, 0xe3, 0x6e, 0x6a, 0xf3, 0x22, 0x36, 0x94, 0x74, 0x60, 0xa5, - 0x5e, 0xbd, 0x68, 0x87, 0xc8, 0x2f, 0x91, 0x4e, 0x62, 0xd6, 0xa6, 0xb4, 0xec, 0x8b, 0x34, 0x18, - 0x49, 0xd6, 0x6f, 0x4b, 0xfa, 0x02, 0x24, 0x7c, 0xe8, 0x17, 0x80, 0xf0, 0x20, 0x30, 0xf2, 0xe1, - 0x0b, 0xb1, 0xd9, 0x0b, 0x70, 0x3c, 0xa9, 0x65, 0xf6, 0xe1, 0xdb, 0xa0, 0x50, 0x82, 0x57, 0x61, - 0x08, 0x9b, 0x81, 0xa3, 0x7d, 0x59, 0x81, 0x59, 0x61, 0x71, 0x3a, 0x2a, 0x7a, 0x0a, 0x92, 0xbe, - 0xe2, 0xef, 0x8c, 0x69, 0x0a, 0xf4, 0x32, 0x94, 0xb8, 0xbe, 0xa3, 0x5e, 0x4c, 0x0a, 0x7c, 0xed, - 0xdd, 0x3e, 0x5d, 0x56, 0x3c, 0x0b, 0xa7, 0xec, 0xa1, 0xa4, 0xed, 0x81, 0x2e, 0x41, 0xdd, 0xf4, - 0x2c, 0xdc, 0x36, 0x77, 0x0c, 0xc7, 0xc1, 0x6e, 0x47, 0xec, 0x5a, 0xd3, 0x04, 0xba, 0x22, 0x80, - 0x29, 0xd5, 0x8b, 0x43, 0x66, 0xf1, 0xf3, 0x0a, 0xcc, 0xeb, 0xe9, 0x3b, 0x40, 0x7a, 0xe7, 0xd1, - 0xb1, 0xc3, 0x88, 0xe7, 0xa4, 0x9a, 0x1f, 0x4f, 0xcd, 0xe8, 0x48, 0x16, 0x19, 0xb1, 0xb4, 0x23, - 0xd9, 0xb2, 0xde, 0x85, 0x0b, 0x59, 0x6a, 0x30, 0x08, 0x3f, 0x47, 0x3c, 0x46, 0xe2, 0x72, 0x5e, - 0x4c, 0xe9, 0x29, 0x28, 0x78, 0x6c, 0x1b, 0x2c, 0xb3, 0x6d, 0xf0, 0xfe, 0x6d, 0xbd, 0xe0, 0xed, - 0x6a, 0xdf, 0x01, 0x80, 0x8d, 0xfd, 0x30, 0xc2, 0x5d, 0x7a, 0x44, 0x94, 0xbc, 0xe1, 0x07, 0x71, - 0x0c, 0xf2, 0x06, 0x94, 0xfc, 0xc0, 0x23, 0x9f, 0x41, 0x2e, 0xf6, 0x52, 0xd6, 0x34, 0xc7, 0x4c, - 0x16, 0x5a, 0x0c, 0x59, 0x17, 0x54, 0xe8, 0x35, 0x28, 0xfa, 0x8b, 0xfe, 0x90, 0x54, 0x86, 0x4c, - 0xbc, 0xd8, 0x62, 0x5e, 0xde, 0x5a, 0x6c, 0xe9, 0x84, 0x0c, 0xdd, 0x81, 0x92, 0x17, 0x6c, 0xd9, - 0x91, 0xb5, 0xc5, 0xcb, 0x60, 0x8e, 0x10, 0x7f, 0x9f, 0x20, 0xaf, 0x2e, 0x33, 0xcb, 0xf3, 0x86, - 0x2e, 0x58, 0x90, 0x6d, 0xf2, 0xa1, 0x11, 0xb8, 0x22, 0xfa, 0x67, 0x8d, 0xe6, 0x3f, 0x2a, 0x20, - 0x50, 0xd1, 0x56, 0x72, 0x5d, 0x1a, 0xef, 0xf5, 0x6c, 0xdc, 0x37, 0x47, 0x12, 0xbc, 0x20, 0x4f, - 0x28, 0x3d, 0x89, 0xe8, 0x33, 0x9c, 0x61, 0x7c, 0x61, 0xf1, 0x59, 0x98, 0x1d, 0xc0, 0x22, 0xee, - 0xef, 0x07, 0x5e, 0x27, 0x10, 0x86, 0x2e, 0xea, 0x71, 0x9b, 0x26, 0x75, 0x8c, 0x47, 0x76, 0xb7, - 0xd7, 0xa5, 0x66, 0x2c, 0xea, 0xa2, 0x49, 0xa8, 0xb6, 0x7a, 0xdb, 0xdb, 0x38, 0xe0, 0x35, 0x2c, - 0x45, 0x3d, 0x6e, 0x93, 0xb3, 0x0e, 0x2b, 0x4f, 0xe2, 0x7b, 0x2a, 0x6f, 0x35, 0x17, 0x80, 0x98, - 0x17, 0x5d, 0x86, 0x99, 0xf8, 0x70, 0xd1, 0x26, 0x01, 0x92, 0x90, 0x5b, 0x8f, 0xc1, 0x24, 0x7e, - 0x0a, 0x9b, 0x5f, 0x9a, 0x82, 0x12, 0x9f, 0x55, 0xa2, 0xc9, 0x1e, 0x0e, 0x42, 0xb2, 0x51, 0xb3, - 0x2f, 0x8d, 0x68, 0xa2, 0xd3, 0x50, 0xda, 0x33, 0xc3, 0x76, 0x80, 0xb7, 0xf9, 0xda, 0x9c, 0xda, - 0x33, 0x43, 0x1d, 0x6f, 0x93, 0x50, 0xb1, 0xe7, 0x47, 0x76, 0x17, 0xb7, 0xbb, 0x21, 0xd3, 0x91, - 0x85, 0x8a, 0x9b, 0x14, 0x78, 0x77, 0x43, 0x2f, 0xb3, 0xee, 0xbb, 0x21, 0x7a, 0x05, 0xd4, 0x5e, - 0x88, 0x83, 0xb6, 0xe9, 0xf7, 0xda, 0x82, 0x02, 0x28, 0xc5, 0xec, 0xe1, 0xc1, 0xfc, 0xf4, 0x66, - 0x88, 0x83, 0x95, 0xd6, 0xe6, 0x03, 0x46, 0x36, 0x4d, 0x50, 0x57, 0xfc, 0xde, 0x03, 0x46, 0xfb, - 0x11, 0x40, 0x21, 0x9d, 0x8d, 0x14, 0x75, 0x95, 0x52, 0xd3, 0x72, 0x47, 0x36, 0x57, 0x09, 0xfd, - 0x0c, 0x43, 0x4f, 0x38, 0x9c, 0x03, 0x08, 0x23, 0x23, 0x60, 0xb5, 0xd4, 0x8d, 0x1a, 0xb5, 0x45, - 0x85, 0x43, 0x96, 0xe8, 0xf3, 0x8e, 0xc0, 0x21, 0x47, 0xa2, 0xb6, 0xd9, 0x0b, 0x1a, 0xd3, 0xb4, - 0xc4, 0xb5, 0xc2, 0x20, 0x2b, 0xbd, 0x00, 0x5d, 0x84, 0x69, 0xb7, 0xd7, 0x6d, 0x77, 0xbc, 0xc0, - 0xeb, 0x45, 0xb6, 0x8b, 0x1b, 0x75, 0xca, 0xa0, 0xe6, 0xf6, 0xba, 0xb7, 0x04, 0x8c, 0x4c, 0x89, - 0xeb, 0x6d, 0xdb, 0x0e, 0x6e, 0xcc, 0xb0, 0x29, 0x61, 0x2d, 0xf4, 0x02, 0x9c, 0x88, 0x3c, 0xaf, - 0xdd, 0x35, 0xdc, 0xfd, 0xb6, 0xe7, 0x63, 0xb7, 0x4d, 0xa0, 0x61, 0x43, 0xa5, 0x09, 0x07, 0x35, - 0xf2, 0xbc, 0xbb, 0x86, 0xbb, 0x7f, 0xdf, 0xc7, 0xee, 0x9b, 0x04, 0x4e, 0x0e, 0x98, 0x44, 0x96, - 0xe9, 0xf7, 0x1a, 0xb3, 0x74, 0x80, 0xf4, 0x80, 0x79, 0xaf, 0x47, 0x46, 0xa7, 0x4f, 0xb9, 0x3d, - 0x32, 0x28, 0xa2, 0x6f, 0xc7, 0x6b, 0x8b, 0xd9, 0x42, 0x74, 0x4e, 0x2a, 0x1d, 0xef, 0xff, 0xf3, - 0xf9, 0xba, 0x0a, 0xaa, 0xe7, 0xe3, 0x80, 0x96, 0x67, 0xb4, 0x99, 0x29, 0x1a, 0x27, 0x58, 0xb4, - 0x11, 0xc3, 0x99, 0xc9, 0xd0, 0xd3, 0x50, 0xd9, 0xf1, 0xc2, 0xa8, 0xed, 0x1a, 0x5d, 0xdc, 0x98, - 0xa3, 0x38, 0x65, 0x02, 0xb8, 0x67, 0x74, 0x31, 0x42, 0x30, 0x61, 0x04, 0xe6, 0x4e, 0xe3, 0x24, - 0x85, 0xd3, 0xdf, 0x92, 0xa9, 0xba, 0xc6, 0xa3, 0xc6, 0x29, 0xd9, 0x54, 0x77, 0x8d, 0x47, 0xe4, - 0xa3, 0xe6, 0xdb, 0x56, 0xe3, 0x34, 0x55, 0x9d, 0x2d, 0x77, 0x72, 0xac, 0xf1, 0x6d, 0x0b, 0x9d, - 0x85, 0x09, 0x9f, 0xf4, 0x35, 0x68, 0x5f, 0xf9, 0xf0, 0x60, 0x7e, 0xa2, 0x45, 0x3a, 0x29, 0x94, - 0xad, 0x11, 0xdb, 0x0b, 0xec, 0x68, 0xbf, 0x71, 0x46, 0xac, 0x11, 0xd6, 0xa6, 0x5f, 0x4a, 0xdb, - 0x6a, 0x34, 0x13, 0xa6, 0x9b, 0x84, 0x69, 0xcf, 0xb6, 0xd0, 0x3c, 0x54, 0x1f, 0x7a, 0xc1, 0x2e, - 0x19, 0xa8, 0x65, 0x07, 0x8d, 0xa7, 0xa9, 0xa6, 0xc0, 0x41, 0xab, 0x76, 0x40, 0x96, 0x02, 0xf7, - 0x1d, 0xe2, 0x53, 0x74, 0x98, 0x67, 0x29, 0x52, 0x9d, 0x81, 0x37, 0x39, 0x54, 0xfb, 0x97, 0x49, - 0x28, 0x93, 0x45, 0xd1, 0xff, 0xf1, 0x7c, 0x43, 0xec, 0x96, 0x1f, 0x82, 0x49, 0xb1, 0x94, 0x8a, - 0x39, 0x89, 0x66, 0x41, 0x4f, 0x7f, 0xe8, 0x0c, 0xbd, 0xf9, 0xed, 0x02, 0x4c, 0x90, 0xb6, 0x54, - 0x68, 0x5f, 0x49, 0x15, 0xda, 0xbf, 0x0c, 0x53, 0xc4, 0x89, 0x30, 0x3b, 0xea, 0x65, 0x6f, 0xa4, - 0x31, 0x67, 0x9d, 0x60, 0xea, 0x9c, 0x80, 0x38, 0x1d, 0x3d, 0x73, 0x88, 0x30, 0x83, 0xb7, 0xd0, - 0x1b, 0x50, 0xde, 0xc6, 0x46, 0xd4, 0x0b, 0x30, 0xdb, 0x0f, 0xeb, 0xd9, 0x6f, 0x1e, 0x04, 0xd3, - 0x37, 0x19, 0xae, 0x1e, 0x13, 0x11, 0xbb, 0x76, 0x6d, 0xb7, 0xed, 0x18, 0x11, 0x76, 0x4d, 0xf6, - 0x56, 0xa8, 0xa8, 0x43, 0xd7, 0x76, 0xef, 0x30, 0x08, 0x71, 0x1c, 0x3b, 0x6c, 0xd3, 0xbc, 0x18, - 0xe6, 0x29, 0xca, 0xb2, 0x1d, 0xd2, 0xac, 0x1c, 0x46, 0xaf, 0x40, 0xc5, 0xb2, 0x03, 0x6c, 0xd2, - 0xa8, 0xaf, 0x94, 0x7b, 0x0c, 0x5d, 0x15, 0x38, 0x7a, 0x82, 0xde, 0xfc, 0x2b, 0xf2, 0x79, 0x22, - 0xa3, 0x4b, 0x8b, 0x50, 0xfa, 0x44, 0x34, 0xa0, 0x64, 0x58, 0x16, 0xdd, 0x52, 0xd9, 0x9e, 0x24, - 0x9a, 0x69, 0xe1, 0xc5, 0xb1, 0x84, 0x13, 0xae, 0x62, 0xc8, 0x6c, 0x63, 0x15, 0x4d, 0xf4, 0x1a, - 0x94, 0xc2, 0x28, 0xc0, 0x46, 0x57, 0x1c, 0xe4, 0xb4, 0x61, 0x06, 0xdd, 0xa0, 0xa8, 0xba, 0x20, - 0x69, 0x5e, 0x80, 0x29, 0x06, 0xca, 0x73, 0x02, 0x2d, 0x80, 0x12, 0x9f, 0x05, 0x84, 0xa0, 0xce, - 0x53, 0x39, 0x1c, 0xa2, 0x3e, 0x85, 0x54, 0xa8, 0x2d, 0x13, 0x71, 0x02, 0xa2, 0xa0, 0x3a, 0xc0, - 0xf2, 0x9d, 0x35, 0xd1, 0xa6, 0xb9, 0x9d, 0x3b, 0x9e, 0x69, 0x38, 0x02, 0x52, 0xa4, 0x59, 0x21, - 0x2f, 0x10, 0xed, 0x09, 0x34, 0x03, 0xd5, 0xb7, 0x7a, 0xb6, 0x29, 0x00, 0x93, 0xda, 0xaf, 0x2b, - 0x30, 0x9b, 0xdc, 0xf0, 0xb4, 0x02, 0xec, 0x1b, 0x01, 0x6e, 0xde, 0x4b, 0xa2, 0x92, 0x39, 0x98, - 0xa4, 0xb7, 0xcc, 0xe2, 0xd1, 0x14, 0x6d, 0xa0, 0x17, 0x00, 0x59, 0xac, 0x06, 0xa2, 0xcd, 0x1f, - 0x99, 0x10, 0x4b, 0xb3, 0x0c, 0xea, 0x2c, 0xef, 0x59, 0x8b, 0x3b, 0x9a, 0x4b, 0x62, 0x01, 0xbd, - 0x04, 0xf5, 0xf4, 0x55, 0x13, 0x3f, 0xbd, 0xd1, 0x0f, 0x40, 0xea, 0xa6, 0x49, 0x9f, 0x4e, 0x5d, - 0x34, 0x69, 0x8f, 0x00, 0x25, 0xfd, 0x3a, 0x8e, 0x02, 0x1b, 0xef, 0xe1, 0xe6, 0x4a, 0xa2, 0xe8, - 0xb1, 0x59, 0x37, 0xcf, 0x09, 0xed, 0xe2, 0xb1, 0x16, 0xa4, 0xb1, 0x6a, 0xbf, 0xa2, 0x40, 0xb9, - 0x25, 0xbe, 0xd5, 0x73, 0x30, 0x19, 0x46, 0x46, 0x24, 0x4e, 0x78, 0xac, 0x41, 0xa0, 0x96, 0x67, - 0xbb, 0x1d, 0x71, 0xda, 0xa6, 0x8d, 0xd4, 0x37, 0x9f, 0x38, 0x61, 0x41, 0xfa, 0xe6, 0x9f, 0x85, - 0x8a, 0xc9, 0x4f, 0x3a, 0xec, 0x03, 0x3e, 0xa1, 0x27, 0x00, 0x76, 0xde, 0x8b, 0x0c, 0x87, 0x2e, - 0xba, 0x09, 0x9d, 0x35, 0xa8, 0x14, 0xec, 0x18, 0xec, 0x41, 0xe3, 0x84, 0xce, 0x1a, 0x9a, 0x0b, - 0xb3, 0x2c, 0x93, 0xfe, 0xb6, 0x1d, 0xed, 0xb0, 0x04, 0x4d, 0x38, 0xce, 0x7b, 0x92, 0x05, 0xa8, - 0xb2, 0x64, 0x4e, 0xd8, 0xf6, 0x77, 0x53, 0x8f, 0x7c, 0x44, 0xb6, 0x27, 0xd4, 0x81, 0x63, 0xb4, - 0x76, 0x43, 0xed, 0x40, 0x81, 0xd9, 0xfb, 0xbd, 0xe8, 0xfe, 0x36, 0xcd, 0xab, 0x89, 0x87, 0x58, - 0x43, 0x72, 0x59, 0x63, 0xe4, 0x83, 0xa5, 0x47, 0x26, 0xc4, 0x60, 0x53, 0xc9, 0x4b, 0x38, 0xfe, - 0xbc, 0x6d, 0x22, 0x79, 0xde, 0x36, 0x07, 0x93, 0xdb, 0x8e, 0xd1, 0x09, 0xa9, 0x8d, 0x4a, 0x3a, - 0x6b, 0xd0, 0xd4, 0x4c, 0xfc, 0x66, 0x2a, 0x9d, 0x98, 0x52, 0xe3, 0x8e, 0x16, 0xbf, 0xf8, 0x8c, - 0x9f, 0x5d, 0x95, 0xa4, 0x67, 0x57, 0xda, 0x5f, 0x28, 0x70, 0x22, 0xa3, 0x56, 0x0a, 0x2d, 0x03, - 0xb0, 0x73, 0x82, 0x94, 0x69, 0x8f, 0xb7, 0xd4, 0x5e, 0xb8, 0xd3, 0x57, 0x63, 0x45, 0xcf, 0x0f, - 0x2c, 0x9d, 0x19, 0x89, 0x9f, 0xc4, 0x16, 0x5b, 0x3d, 0xd7, 0x72, 0x70, 0x52, 0x66, 0x49, 0x6d, - 0xb1, 0x4c, 0x81, 0xeb, 0xab, 0x24, 0xbe, 0xa3, 0xbf, 0xac, 0xe4, 0xcc, 0xcf, 0x6f, 0x26, 0xd9, - 0x99, 0xff, 0x45, 0x98, 0x0b, 0xb0, 0x69, 0xfb, 0x36, 0x71, 0x72, 0xe9, 0x3d, 0x2a, 0x33, 0x0c, - 0x8a, 0xfb, 0x5a, 0xe2, 0x61, 0xaa, 0x76, 0x0f, 0x20, 0x29, 0xc9, 0x62, 0xcf, 0x71, 0xc9, 0x2f, - 0xf9, 0x15, 0x2b, 0x83, 0xdc, 0xc6, 0xfb, 0x72, 0x1e, 0x83, 0xec, 0xa5, 0xdc, 0x9f, 0x45, 0x1e, - 0x63, 0xc9, 0xb2, 0x02, 0xed, 0x27, 0x15, 0x38, 0x43, 0x18, 0xb2, 0xe9, 0xe3, 0xe5, 0xa6, 0xec, - 0x68, 0x85, 0x2d, 0xf4, 0x5a, 0x3a, 0x69, 0x34, 0x6a, 0x1d, 0x1a, 0x1f, 0xdd, 0xe8, 0xae, 0xa2, - 0xbd, 0x0b, 0xcd, 0x44, 0x0b, 0x5e, 0x81, 0x96, 0xa8, 0xf1, 0x41, 0x98, 0xe2, 0xa5, 0x6b, 0xca, - 0x28, 0xa5, 0x6b, 0x1c, 0x79, 0x1c, 0xf9, 0x3f, 0xa3, 0xc0, 0x49, 0xc2, 0x81, 0xad, 0x28, 0x6a, - 0x86, 0x4d, 0xdf, 0x22, 0x9b, 0xc1, 0x31, 0x65, 0xc7, 0xf3, 0x5d, 0x90, 0xe7, 0x7b, 0x8c, 0x1b, - 0xb1, 0x7f, 0x56, 0xa0, 0x4a, 0xf8, 0x72, 0xa3, 0x36, 0x2f, 0x26, 0x7b, 0xa3, 0x94, 0xa4, 0x55, - 0x52, 0x49, 0xda, 0xe6, 0xef, 0xc7, 0x27, 0xc1, 0x0f, 0x27, 0x57, 0xcb, 0x4c, 0xef, 0x67, 0x33, - 0xf4, 0x1e, 0x58, 0xf8, 0xc9, 0x1b, 0x46, 0xb2, 0xa3, 0x39, 0x98, 0x84, 0xd3, 0x8f, 0xc4, 0x3d, - 0x52, 0x02, 0x40, 0x57, 0x40, 0xe5, 0x87, 0xe7, 0xc4, 0x67, 0x99, 0x63, 0xd7, 0xd9, 0xb9, 0x39, - 0x7e, 0x48, 0x7d, 0x15, 0x54, 0xc3, 0x09, 0xb0, 0x61, 0xed, 0xb7, 0x03, 0xfe, 0x66, 0x80, 0x7a, - 0x77, 0x59, 0x9f, 0xe1, 0x70, 0xf1, 0x94, 0x40, 0xfb, 0x2f, 0xb2, 0x33, 0x53, 0x4b, 0xba, 0x56, - 0xf3, 0x97, 0xa4, 0xd4, 0xe5, 0x90, 0xdd, 0x28, 0x4b, 0x91, 0x42, 0xa6, 0x22, 0xeb, 0x30, 0xcd, - 0x30, 0xd9, 0x56, 0x29, 0x72, 0x62, 0xcf, 0x66, 0x5e, 0xd7, 0xf7, 0x6d, 0xc0, 0x7a, 0xad, 0xc3, - 0xae, 0xa4, 0x29, 0x65, 0x53, 0x17, 0x46, 0x1e, 0xe0, 0xa9, 0x1c, 0x97, 0xa7, 0xf6, 0x5d, 0x05, - 0xea, 0x74, 0xf0, 0x3b, 0x46, 0xc0, 0x96, 0x61, 0xf3, 0xdb, 0xc7, 0xb8, 0xe3, 0x48, 0xbc, 0xb5, - 0x30, 0x8e, 0xb7, 0x2e, 0x43, 0x99, 0xcf, 0x4e, 0xc0, 0x4f, 0xee, 0xa3, 0x2e, 0xf5, 0x98, 0x2e, - 0x49, 0x94, 0x38, 0x80, 0x18, 0x66, 0x24, 0x6d, 0x2a, 0x72, 0xd2, 0x4d, 0x96, 0xa6, 0x3c, 0xae, - 0xb4, 0x4f, 0xc0, 0x34, 0x97, 0xc6, 0xc6, 0xd4, 0xfc, 0x48, 0x22, 0xe8, 0x78, 0x6b, 0x37, 0xe1, - 0xfd, 0x3a, 0xcc, 0xbe, 0x69, 0x07, 0x61, 0x74, 0xc7, 0x08, 0xa3, 0x15, 0xf6, 0xe9, 0xa2, 0x31, - 0xc3, 0x36, 0x01, 0xf2, 0xd7, 0xdd, 0xac, 0x41, 0x4e, 0x56, 0x8e, 0x11, 0x46, 0xfc, 0x35, 0x25, - 0xfd, 0xad, 0xfd, 0xad, 0x02, 0x27, 0x78, 0xa6, 0x41, 0xaa, 0x00, 0x61, 0x67, 0x57, 0x6c, 0x38, - 0xd8, 0x6a, 0x6f, 0x79, 0x8f, 0xc4, 0xe2, 0x62, 0x90, 0x65, 0xef, 0x11, 0xd9, 0xb5, 0x03, 0xe3, - 0x61, 0x3b, 0xf0, 0x58, 0x99, 0x15, 0x5f, 0x58, 0xd5, 0xc0, 0x78, 0xa8, 0x73, 0x50, 0xf3, 0xf3, - 0x0a, 0x14, 0x09, 0xaa, 0x14, 0x33, 0x2b, 0xe9, 0x98, 0x79, 0x0e, 0x26, 0xe9, 0x7f, 0x15, 0x10, - 0xfb, 0x0f, 0x6d, 0x8c, 0xb1, 0xff, 0xf4, 0x17, 0x93, 0xd7, 0x32, 0xef, 0x45, 0xff, 0x53, 0x81, - 0x93, 0x3a, 0xde, 0x0e, 0x70, 0xb8, 0x93, 0x2e, 0xb9, 0x6c, 0x7e, 0xe0, 0x88, 0x23, 0xd2, 0x1c, - 0x4c, 0xb2, 0xab, 0xdd, 0x02, 0x4b, 0xee, 0xb0, 0x9b, 0xdd, 0xb7, 0x8e, 0x59, 0xfb, 0x48, 0x0c, - 0x11, 0xd9, 0x5d, 0xec, 0xf5, 0x22, 0x91, 0x74, 0xe1, 0xcd, 0xa4, 0x8c, 0xf8, 0x1e, 0x54, 0xe9, - 0xf1, 0xad, 0xbd, 0xed, 0xf5, 0x5c, 0x8b, 0x2f, 0xd5, 0x17, 0x32, 0x3c, 0x22, 0x73, 0x40, 0xec, - 0x00, 0x08, 0x94, 0xc3, 0x9b, 0x84, 0xc1, 0x35, 0x1b, 0x92, 0x3b, 0x4e, 0x74, 0x8a, 0x97, 0x44, - 0xb1, 0xdb, 0x61, 0x0b, 0x6f, 0xdb, 0x2e, 0xb6, 0xd4, 0xa7, 0xd0, 0x1c, 0xaf, 0x66, 0x21, 0x70, - 0x5e, 0xbd, 0xaf, 0x2a, 0x29, 0x28, 0x17, 0xc3, 0xae, 0x86, 0x63, 0xa8, 0x54, 0x75, 0xa7, 0x16, - 0xaf, 0xfd, 0x65, 0x19, 0x2a, 0xc9, 0x75, 0xde, 0x29, 0x40, 0x71, 0x43, 0x96, 0x75, 0x11, 0xe6, - 0x63, 0xf8, 0xad, 0x64, 0x6f, 0x61, 0x73, 0x4b, 0x1f, 0xb4, 0xa8, 0xca, 0x20, 0x92, 0xfc, 0xc6, - 0x97, 0x21, 0x15, 0xd0, 0x3c, 0x3c, 0x1d, 0x23, 0x0d, 0x3e, 0xa2, 0x54, 0x31, 0x3a, 0x07, 0x67, - 0x32, 0x11, 0xee, 0xe0, 0xed, 0x48, 0xdd, 0x46, 0xd7, 0xe0, 0xb9, 0xfe, 0xee, 0xec, 0xc7, 0x8a, - 0x6a, 0x07, 0x5d, 0x85, 0x4b, 0xc3, 0x71, 0x45, 0x59, 0xf9, 0x0e, 0x7a, 0x11, 0xae, 0x0f, 0x47, - 0x4d, 0xbf, 0x35, 0x54, 0x6d, 0xb4, 0x08, 0x0b, 0xc3, 0x29, 0xee, 0xf7, 0xa2, 0x0e, 0x89, 0xee, - 0xc5, 0xe3, 0x40, 0xf5, 0x1d, 0xb4, 0x00, 0xd7, 0x46, 0xa3, 0xd9, 0xc0, 0x6e, 0xa4, 0xee, 0x1e, - 0x2d, 0x63, 0xdd, 0x35, 0xbd, 0xae, 0xed, 0x76, 0xc4, 0x87, 0x4e, 0x75, 0xd0, 0xfb, 0xe1, 0xc6, - 0x68, 0x34, 0xf1, 0x53, 0x34, 0xb5, 0x3b, 0xba, 0x20, 0xf1, 0x86, 0x4c, 0x75, 0x91, 0x06, 0xe7, - 0x73, 0x68, 0xf8, 0x6b, 0x2e, 0xd5, 0x43, 0xcf, 0xc2, 0x85, 0x1c, 0x9c, 0xf8, 0xfd, 0x95, 0xea, - 0x23, 0x0d, 0xce, 0xc5, 0x58, 0x7d, 0xd5, 0xc5, 0xcc, 0x6d, 0xfe, 0x54, 0x41, 0x2f, 0xc2, 0xf3, - 0x31, 0xce, 0xd0, 0x3a, 0x59, 0x46, 0xf1, 0x1b, 0x05, 0xf4, 0x01, 0xc9, 0x10, 0x83, 0x95, 0xa6, - 0xd2, 0x1b, 0xe6, 0x25, 0xd7, 0xf5, 0x7a, 0xae, 0x89, 0x2d, 0xf5, 0x3b, 0x05, 0xb4, 0x00, 0x57, - 0xf3, 0xe5, 0xa4, 0x2a, 0x65, 0xb1, 0xa5, 0xfe, 0x66, 0x01, 0x3d, 0x07, 0xcf, 0xf4, 0x8f, 0x70, - 0xe0, 0xb1, 0x97, 0xfa, 0xb3, 0x45, 0x74, 0x05, 0x2e, 0x0e, 0xc3, 0xe3, 0xef, 0xb0, 0xd4, 0x9f, - 0x2b, 0xa2, 0xf3, 0xd2, 0x02, 0xe8, 0x7f, 0x3f, 0xa5, 0x7e, 0xbd, 0x88, 0x2e, 0x4a, 0x76, 0xcf, - 0x8c, 0x2b, 0xd5, 0x6f, 0x14, 0xd1, 0x65, 0xd0, 0x52, 0x48, 0x99, 0x31, 0xb8, 0xfa, 0xcd, 0xb4, - 0x5e, 0xf9, 0x61, 0xb2, 0xfa, 0xf3, 0xc5, 0xd4, 0x48, 0x53, 0xf5, 0x83, 0xfc, 0x90, 0x44, 0x7d, - 0xf6, 0x1f, 0x4a, 0xd7, 0xbe, 0x2a, 0xae, 0x8d, 0x33, 0x2a, 0x1d, 0xd0, 0x25, 0x78, 0x26, 0xaf, - 0xaf, 0x6f, 0xbf, 0xc9, 0x43, 0xe3, 0x9f, 0x3b, 0x55, 0x21, 0xce, 0x95, 0x8f, 0xc4, 0x54, 0x53, - 0x0b, 0xd7, 0xfe, 0x48, 0x89, 0x0b, 0xeb, 0xd9, 0xdb, 0x92, 0x33, 0x71, 0x0d, 0x3f, 0x6d, 0xcb, - 0x62, 0xfb, 0xba, 0x1e, 0x78, 0xdc, 0xfb, 0x55, 0x85, 0xec, 0xa0, 0x72, 0x57, 0xbc, 0xe0, 0x0a, - 0xe8, 0x24, 0xcc, 0xca, 0x3d, 0x6c, 0xc6, 0x8b, 0xe8, 0x74, 0x5c, 0x29, 0xcf, 0x09, 0xd8, 0x04, - 0x4f, 0xf4, 0x0b, 0x49, 0x96, 0xe1, 0x64, 0x3f, 0x8d, 0x58, 0x47, 0x53, 0xd7, 0x6e, 0x41, 0x25, - 0x4e, 0x41, 0xa1, 0x3a, 0x00, 0x4f, 0xf9, 0xac, 0xda, 0x81, 0xfa, 0x14, 0x69, 0xaf, 0xbb, 0x5b, - 0xe4, 0xc3, 0x41, 0xda, 0x0a, 0x9a, 0x81, 0xea, 0xfd, 0x5e, 0x14, 0x03, 0x0a, 0xa8, 0x02, 0x93, - 0xcb, 0x36, 0xf9, 0x59, 0x5c, 0xfc, 0xe1, 0x65, 0x98, 0x11, 0xff, 0xbd, 0x44, 0x5c, 0x49, 0x07, - 0x59, 0x6f, 0xde, 0xd0, 0x0b, 0x43, 0xde, 0x1e, 0x25, 0x68, 0x0b, 0xe2, 0xa3, 0xfc, 0xfc, 0xa8, - 0xe8, 0xbe, 0xb3, 0xff, 0xa2, 0x82, 0x3e, 0xa7, 0xe4, 0x3f, 0x8c, 0x43, 0xef, 0x1f, 0xe7, 0xd9, - 0x93, 0x50, 0xe0, 0x7d, 0xe3, 0x11, 0x91, 0xcf, 0xf6, 0x4f, 0xe4, 0x3e, 0x16, 0x42, 0x8b, 0x19, - 0xdc, 0x72, 0x70, 0x63, 0x0d, 0x5e, 0x1c, 0x8b, 0x86, 0x28, 0xb0, 0x9f, 0xf3, 0x5c, 0x08, 0x1d, - 0xcd, 0x8a, 0x63, 0xc6, 0xc2, 0x17, 0xc6, 0xa0, 0x20, 0xa2, 0xf7, 0xb2, 0x1f, 0x1f, 0xa1, 0x1b, - 0x47, 0xf2, 0x61, 0x88, 0xb1, 0xe0, 0x17, 0x46, 0x27, 0x20, 0x72, 0xbf, 0xa6, 0x0c, 0x7f, 0x93, - 0x84, 0x6e, 0x8e, 0x60, 0x45, 0x99, 0x20, 0x56, 0xe4, 0x83, 0xe3, 0x13, 0x12, 0x85, 0xfc, 0xac, - 0x87, 0x4b, 0xe8, 0xe8, 0x51, 0x11, 0xb4, 0xa1, 0xde, 0x9f, 0x89, 0x9e, 0x69, 0x7a, 0xf6, 0x51, - 0x1d, 0xc1, 0xf4, 0x0c, 0x71, 0x0c, 0xd3, 0xc7, 0x04, 0x79, 0xde, 0x46, 0xb6, 0x9e, 0xd1, 0xbc, - 0x8d, 0x60, 0x8e, 0xe7, 0x6d, 0x9c, 0x82, 0x88, 0xfe, 0x54, 0xfa, 0x71, 0x13, 0xba, 0x9c, 0x4f, - 0x4f, 0x11, 0x62, 0x41, 0x97, 0x8e, 0x46, 0x24, 0xfc, 0xad, 0xfe, 0xa7, 0x4e, 0xe8, 0x6a, 0x3e, - 0x21, 0x47, 0x89, 0x65, 0x5c, 0x1e, 0x05, 0x95, 0x48, 0x09, 0x33, 0x1f, 0x3f, 0xa1, 0x21, 0xc6, - 0x90, 0xf1, 0x62, 0x79, 0xd7, 0x47, 0xc6, 0x27, 0x42, 0x3f, 0x93, 0xf7, 0x3c, 0x0a, 0x65, 0xed, - 0x78, 0xd9, 0xa8, 0xb1, 0xe8, 0x1b, 0xe3, 0x90, 0x70, 0x5f, 0xcd, 0x7a, 0x46, 0x85, 0x46, 0x61, - 0x44, 0x10, 0x87, 0xfa, 0x6a, 0x0e, 0x01, 0xf7, 0xd5, 0xcc, 0x27, 0x56, 0x99, 0xbe, 0x9a, 0x89, - 0x39, 0xd4, 0x57, 0xf3, 0x28, 0x88, 0xe8, 0x6f, 0x29, 0x23, 0xbe, 0xc4, 0x42, 0x1f, 0x19, 0x81, - 0x73, 0x26, 0x65, 0xac, 0xdb, 0x87, 0x1f, 0x83, 0x03, 0xd1, 0xf5, 0x1b, 0x47, 0xbe, 0xe7, 0x42, - 0x2f, 0x8f, 0x22, 0x22, 0x45, 0x12, 0x6b, 0x77, 0xf3, 0x38, 0xa4, 0x44, 0xad, 0x5f, 0x1e, 0xe1, - 0x71, 0x17, 0x7a, 0x75, 0x04, 0xee, 0xfd, 0x44, 0xb1, 0x6a, 0x2f, 0x1f, 0x8f, 0x98, 0x28, 0xd7, - 0x19, 0x78, 0xe7, 0x85, 0xae, 0x65, 0x55, 0x2c, 0xa6, 0x71, 0x62, 0xc9, 0x57, 0x46, 0xc2, 0xe5, - 0x9b, 0x52, 0xfa, 0x35, 0x56, 0xe6, 0xa6, 0x94, 0x46, 0x19, 0xba, 0x29, 0x0d, 0xa0, 0x12, 0x29, - 0xef, 0x64, 0xbc, 0xe6, 0x41, 0xd7, 0x8f, 0x7a, 0xd8, 0xc4, 0xae, 0x87, 0x87, 0x6c, 0xb2, 0x83, - 0xaf, 0xb0, 0x5e, 0x54, 0x50, 0x67, 0xf0, 0x01, 0x0d, 0x7a, 0x3e, 0x9f, 0x38, 0x46, 0x8a, 0x25, - 0x3d, 0x7b, 0x04, 0xb2, 0x10, 0xb4, 0x29, 0xbd, 0x58, 0x41, 0xb9, 0x44, 0xb4, 0xde, 0x46, 0xb0, - 0xd6, 0x8e, 0xc0, 0x22, 0xb6, 0x32, 0xfa, 0x9e, 0x82, 0xa0, 0xcc, 0xc9, 0x94, 0x31, 0x62, 0xf6, - 0xcf, 0x8d, 0x80, 0xc9, 0xbd, 0xab, 0xef, 0x05, 0x48, 0xa6, 0x77, 0xf5, 0xe1, 0x0c, 0xf5, 0xae, - 0x41, 0x5c, 0x22, 0xc8, 0xcb, 0x78, 0x1a, 0x92, 0x3f, 0xef, 0xa9, 0x27, 0x11, 0x42, 0xd8, 0xb5, - 0x11, 0xb1, 0x59, 0xc8, 0x6e, 0x0f, 0x14, 0xff, 0xe7, 0x8c, 0x2c, 0x85, 0x73, 0xc4, 0xc8, 0xfa, - 0x71, 0x99, 0xa8, 0x77, 0xf3, 0x8a, 0xf3, 0x33, 0xbf, 0x79, 0xd9, 0xa8, 0x43, 0xbf, 0x79, 0xb9, - 0x24, 0x4c, 0xfe, 0xc7, 0xe4, 0x82, 0x74, 0x74, 0x29, 0x8f, 0x41, 0x7a, 0xea, 0x2e, 0x1e, 0x85, - 0x46, 0x66, 0xed, 0x73, 0x43, 0x6a, 0xaa, 0x33, 0xcf, 0x3d, 0x79, 0xc8, 0x43, 0xcf, 0x3d, 0x43, - 0x88, 0x88, 0x12, 0x1f, 0x93, 0xab, 0xfd, 0xd0, 0x11, 0x85, 0x74, 0xc3, 0x86, 0x97, 0x42, 0xe3, - 0x11, 0x52, 0x46, 0x55, 0x6c, 0x66, 0x84, 0x94, 0x81, 0x37, 0x34, 0x42, 0xca, 0xc6, 0xe7, 0xc7, - 0xb8, 0x9c, 0xb2, 0xe0, 0xcc, 0x63, 0x5c, 0x0e, 0xee, 0xd0, 0x63, 0x5c, 0x3e, 0x0d, 0x5f, 0x8a, - 0x03, 0x25, 0xb5, 0x99, 0x4b, 0x71, 0x00, 0x6b, 0xe8, 0x52, 0xcc, 0xc2, 0x66, 0xfe, 0xf9, 0x0b, - 0x47, 0xd7, 0xad, 0xa2, 0x57, 0x32, 0xd3, 0xcf, 0x43, 0x69, 0x62, 0x6d, 0x5e, 0x3a, 0x16, 0x2d, - 0x31, 0x85, 0x9e, 0xd4, 0x45, 0xa1, 0xa1, 0x55, 0x44, 0x42, 0xd4, 0xf0, 0xfa, 0x25, 0x61, 0xde, - 0x81, 0xc2, 0x93, 0x4c, 0xf3, 0x0e, 0x60, 0x0d, 0x35, 0x6f, 0x16, 0xb6, 0xef, 0xec, 0x5f, 0x51, - 0x50, 0x90, 0x55, 0x41, 0x92, 0x79, 0x24, 0x1c, 0x44, 0x1b, 0x7a, 0x24, 0xcc, 0x44, 0x67, 0x53, - 0xfa, 0xc9, 0xd4, 0x95, 0x2c, 0xca, 0xbb, 0xb5, 0xe2, 0xfd, 0x43, 0x3f, 0xa8, 0x69, 0x3c, 0x31, - 0x2b, 0xfc, 0xf6, 0x33, 0x7b, 0x56, 0x78, 0xe7, 0xf0, 0x59, 0x49, 0x90, 0x78, 0x74, 0x93, 0xbe, - 0x54, 0xcc, 0x8c, 0x6e, 0xd2, 0x28, 0x43, 0xa3, 0x9b, 0x01, 0x54, 0x7e, 0x3a, 0x1f, 0xbc, 0xf0, - 0xcb, 0x9c, 0x8a, 0x41, 0xb4, 0xa1, 0x53, 0x91, 0x89, 0xce, 0x63, 0x84, 0xd4, 0xa5, 0x5f, 0x66, - 0x8c, 0x90, 0xc2, 0x18, 0x1a, 0x23, 0xf4, 0x63, 0xf2, 0xc3, 0x4d, 0xe6, 0x45, 0x50, 0xe6, 0xe1, - 0x26, 0xfb, 0xca, 0x68, 0xd8, 0xe1, 0x26, 0x8f, 0xc2, 0x77, 0xf6, 0x97, 0x6f, 0x7e, 0xef, 0xef, - 0xce, 0x3f, 0xf5, 0xdd, 0xc3, 0xf3, 0xca, 0xf7, 0x0e, 0xcf, 0x2b, 0xdf, 0x3f, 0x3c, 0xaf, 0x7c, - 0xe2, 0x12, 0x63, 0x10, 0x61, 0x73, 0xe7, 0x06, 0xfd, 0x79, 0xa3, 0xe3, 0xdd, 0xf0, 0x77, 0x3b, - 0x37, 0x52, 0xff, 0xec, 0x7e, 0x6b, 0x8a, 0x36, 0xdf, 0xff, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, - 0xd8, 0x91, 0xd1, 0x4f, 0x04, 0x5f, 0x00, 0x00, + // 6161 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7c, 0x5b, 0x6c, 0x1c, 0xc9, + 0x75, 0xe8, 0xf6, 0x0c, 0xc9, 0x99, 0x39, 0x33, 0x24, 0x9b, 0x25, 0x4a, 0x1a, 0xcd, 0x4a, 0xa2, + 0xb6, 0xb5, 0xd2, 0x4a, 0x5a, 0x2d, 0xb5, 0xa6, 0x1f, 0xf2, 0xbe, 0xbc, 0xe6, 0x6b, 0x75, 0xb9, + 0xa2, 0xa4, 0xd9, 0xa6, 0x78, 0xfd, 0xba, 0xd7, 0x93, 0x66, 0x77, 0x71, 0xd8, 0xcb, 0x9e, 0xee, + 0x76, 0x3f, 0x28, 0x31, 0xb0, 0x37, 0x80, 0x11, 0x3f, 0x62, 0x3b, 0x0e, 0x12, 0xdb, 0x89, 0x13, + 0xe4, 0x23, 0xc8, 0x9f, 0x01, 0xc7, 0x09, 0x82, 0x20, 0x1f, 0xf9, 0xcc, 0x4f, 0x9c, 0x07, 0x10, + 0x23, 0xc8, 0x5f, 0x00, 0xc6, 0xe1, 0x47, 0x80, 0x18, 0x41, 0x5e, 0x40, 0x02, 0x24, 0x48, 0x80, + 0xa0, 0x5e, 0xdd, 0xd5, 0xc3, 0xee, 0xe1, 0x0c, 0xa5, 0x45, 0x3e, 0xf2, 0xc5, 0xa9, 0xd3, 0xe7, + 0x55, 0xa7, 0x4e, 0x55, 0x9d, 0x3a, 0x75, 0x8a, 0x70, 0xca, 0x0f, 0xbc, 0xc8, 0x33, 0x3d, 0x27, + 0xda, 0xf7, 0x71, 0x38, 0x4f, 0x5b, 0x68, 0x66, 0x0b, 0x07, 0xd1, 0xfe, 0xbc, 0xf8, 0x34, 0xbf, + 0xf7, 0x81, 0xd6, 0x6c, 0xd7, 0xeb, 0x7a, 0x14, 0x70, 0x8b, 0xfc, 0x62, 0xdf, 0x5a, 0xd3, 0x7e, + 0x1c, 0xee, 0x48, 0x94, 0xda, 0x9f, 0x2a, 0x50, 0x59, 0x34, 0x4d, 0x2f, 0x76, 0x23, 0x34, 0x0f, + 0xe3, 0xdd, 0xc0, 0x8b, 0xfd, 0xa6, 0x72, 0x49, 0xb9, 0x56, 0x5f, 0x68, 0xce, 0x1f, 0xe1, 0x3a, + 0x7f, 0x87, 0x7c, 0xd7, 0x19, 0x1a, 0x9a, 0x87, 0x53, 0x06, 0x23, 0xed, 0xf8, 0x81, 0xbd, 0x67, + 0x44, 0xb8, 0xb3, 0x8b, 0xf7, 0x9b, 0xa5, 0x4b, 0xca, 0xb5, 0x86, 0x3e, 0xc3, 0x3f, 0xb5, 0xd9, + 0x97, 0xbb, 0x78, 0x1f, 0xdd, 0x80, 0x19, 0xc3, 0xb1, 0x8d, 0x30, 0x83, 0x5d, 0xa6, 0xd8, 0xd3, + 0xf4, 0x83, 0x84, 0xfb, 0x21, 0x38, 0xe3, 0xc7, 0x5b, 0x8e, 0x6d, 0x76, 0x02, 0xec, 0x5a, 0xf8, + 0xa7, 0xf7, 0xbc, 0x38, 0xec, 0x84, 0x18, 0x5b, 0xcd, 0x31, 0x4a, 0x30, 0xcb, 0xbe, 0xea, 0xc9, + 0xc7, 0x0d, 0x8c, 0x2d, 0xed, 0x5f, 0x14, 0x18, 0xa7, 0x2a, 0xa2, 0x0b, 0x00, 0x9c, 0x9e, 0x08, + 0x51, 0x28, 0x4d, 0x8d, 0x41, 0x08, 0xfb, 0x33, 0x30, 0x11, 0x62, 0x33, 0xc0, 0x11, 0xd7, 0x96, + 0xb7, 0x08, 0x19, 0xfb, 0xd5, 0x09, 0xed, 0x2e, 0xd7, 0xad, 0xc6, 0x20, 0x1b, 0x76, 0x17, 0xbd, + 0x06, 0x40, 0xbb, 0xde, 0x21, 0x26, 0xa4, 0x9a, 0x4c, 0x2d, 0x9c, 0x2f, 0x32, 0xd3, 0xc3, 0x7d, + 0x1f, 0xeb, 0xb5, 0xae, 0xf8, 0x89, 0xce, 0x41, 0x35, 0xb4, 0xbb, 0x6e, 0xc7, 0x8f, 0xb7, 0x9a, + 0xe3, 0x94, 0x73, 0x85, 0xb4, 0xdb, 0xf1, 0x16, 0xf9, 0xe4, 0xd8, 0xee, 0x2e, 0xd5, 0x75, 0x82, + 0x7d, 0x22, 0x6d, 0xa2, 0xe9, 0x25, 0x68, 0x88, 0x4f, 0x54, 0xa7, 0x0a, 0xfd, 0x0c, 0xfc, 0xf3, + 0x86, 0xdd, 0xd5, 0xfe, 0x55, 0x01, 0x95, 0x0a, 0xfc, 0x3f, 0xd8, 0xb0, 0xc2, 0xd5, 0xc7, 0xbe, + 0x17, 0x44, 0xc7, 0xf5, 0x5f, 0xd6, 0xa5, 0x94, 0xd5, 0x65, 0x15, 0x4e, 0xf5, 0x70, 0x64, 0x58, + 0x46, 0x64, 0x74, 0x76, 0x08, 0xc7, 0x8e, 0x69, 0x5b, 0x61, 0xb3, 0x7c, 0xa9, 0x7c, 0xad, 0xb1, + 0x74, 0xfa, 0xf0, 0x60, 0x6e, 0xe6, 0x1e, 0xff, 0x4c, 0xe5, 0x2d, 0xaf, 0xad, 0x84, 0xfa, 0x4c, + 0x2f, 0x03, 0xb2, 0xad, 0x90, 0xb1, 0x09, 0x43, 0xa3, 0x8b, 0x43, 0x99, 0xcd, 0x98, 0xcc, 0x86, + 0x7d, 0xce, 0xb0, 0x91, 0x41, 0x84, 0x8d, 0x6c, 0x99, 0xf1, 0x8c, 0x65, 0xb4, 0x3f, 0x51, 0x60, + 0x92, 0xf6, 0x5b, 0xe8, 0x43, 0x86, 0x07, 0xef, 0x61, 0x37, 0x62, 0xc3, 0xa3, 0x14, 0x0e, 0xcf, + 0x2a, 0x41, 0x62, 0xc3, 0x83, 0xc5, 0x4f, 0xd4, 0x84, 0x8a, 0x6f, 0xec, 0x3b, 0x9e, 0x61, 0x09, + 0x8b, 0xf0, 0x26, 0x52, 0xa1, 0x9c, 0x7a, 0x03, 0xf9, 0x89, 0xda, 0x30, 0x23, 0xf8, 0x75, 0x44, + 0xd7, 0xa9, 0x3b, 0xd4, 0x17, 0x2e, 0xe7, 0xc8, 0x6b, 0xf3, 0xdf, 0x42, 0x51, 0x5d, 0xf5, 0xfb, + 0x20, 0xda, 0x22, 0xef, 0xcb, 0xaa, 0xbb, 0x87, 0x1d, 0xcf, 0xc7, 0x68, 0x16, 0xc6, 0x5d, 0xcf, + 0x35, 0x31, 0x1f, 0x3b, 0xd6, 0x20, 0x50, 0xaa, 0x31, 0x57, 0x91, 0x35, 0xde, 0x1e, 0xab, 0x96, + 0xd5, 0x31, 0xed, 0x9f, 0x15, 0x98, 0xe2, 0x36, 0x25, 0xf6, 0xc3, 0x41, 0x48, 0xfa, 0x44, 0x27, + 0x21, 0x0e, 0x28, 0x9b, 0x31, 0x5d, 0x34, 0xd1, 0x75, 0xa8, 0x59, 0x78, 0xcf, 0x36, 0x71, 0xc7, + 0xdf, 0x65, 0xcc, 0x96, 0x1a, 0x87, 0x07, 0x73, 0xd5, 0x15, 0x0a, 0x6c, 0xdf, 0xd5, 0xab, 0xec, + 0x73, 0x7b, 0x37, 0xa7, 0xfb, 0x77, 0xa1, 0x2a, 0xf5, 0xba, 0x7c, 0xad, 0xbe, 0x70, 0x2b, 0xa7, + 0xd7, 0x59, 0x5d, 0xe6, 0x45, 0x57, 0x57, 0xdd, 0x28, 0xd8, 0xd7, 0x13, 0x06, 0xad, 0xd7, 0x60, + 0x32, 0xf3, 0x89, 0xc8, 0x13, 0x3e, 0x5b, 0xd3, 0xc9, 0x4f, 0xd2, 0xeb, 0x3d, 0xc3, 0x89, 0x31, + 0x55, 0xb4, 0xa6, 0xb3, 0xc6, 0xab, 0xa5, 0x8f, 0x2a, 0x5a, 0x13, 0xd4, 0x7e, 0xe3, 0xbe, 0x3d, + 0x56, 0x55, 0xd4, 0x92, 0xf6, 0x45, 0x05, 0xd4, 0x55, 0xd7, 0x0c, 0xf6, 0xfd, 0x08, 0x5b, 0x5c, + 0x15, 0x74, 0x1e, 0x6a, 0xbe, 0x63, 0xd8, 0x6e, 0x84, 0x1f, 0x47, 0xc9, 0xa4, 0x10, 0x80, 0xfc, + 0x51, 0x2d, 0x3d, 0xc9, 0xa8, 0xfa, 0x30, 0xcd, 0x45, 0x27, 0xe3, 0xfa, 0x02, 0x4c, 0x73, 0x2f, + 0xa7, 0xd3, 0x02, 0x07, 0x21, 0x57, 0x64, 0xaa, 0x77, 0x64, 0xec, 0x38, 0x44, 0xf8, 0x23, 0x6f, + 0xa6, 0xae, 0x51, 0x96, 0x5c, 0xe3, 0xed, 0xb1, 0xea, 0x98, 0x3a, 0x4e, 0xba, 0xdd, 0xa0, 0xee, + 0xbd, 0xec, 0xb1, 0x4e, 0x9d, 0x81, 0x92, 0x6d, 0x31, 0x11, 0x4b, 0x13, 0x87, 0x07, 0x73, 0xa5, + 0xb5, 0x15, 0xbd, 0x64, 0x5b, 0xe8, 0x26, 0x80, 0x6f, 0x04, 0x64, 0xb2, 0x90, 0x69, 0x59, 0xa2, + 0xd3, 0x72, 0xf2, 0xf0, 0x60, 0xae, 0xd6, 0xa6, 0x50, 0x32, 0x1d, 0x6b, 0x0c, 0x61, 0xcd, 0x0a, + 0xd1, 0x55, 0xa8, 0xb2, 0x85, 0xcf, 0xdf, 0x65, 0x52, 0x97, 0xea, 0x87, 0x07, 0x73, 0x15, 0xea, + 0xb2, 0xed, 0xbb, 0x7a, 0x85, 0x7e, 0x6c, 0xef, 0x72, 0x25, 0x74, 0xa8, 0x2f, 0xfa, 0xe9, 0xb4, + 0xcc, 0xf8, 0x9a, 0x32, 0xd0, 0xd7, 0x0a, 0x3b, 0xad, 0x75, 0x01, 0x91, 0x2e, 0x19, 0x66, 0xb4, + 0x68, 0x59, 0x8b, 0x64, 0xb7, 0x20, 0xeb, 0xd8, 0x08, 0xac, 0xaf, 0x42, 0x95, 0xef, 0x3e, 0xc2, + 0xe1, 0x69, 0x17, 0x28, 0x2b, 0xd2, 0x05, 0xb6, 0x03, 0xed, 0x6a, 0x5f, 0x57, 0x60, 0x96, 0xf6, + 0x6b, 0xd1, 0xb2, 0xee, 0xe1, 0xde, 0x16, 0x0e, 0x18, 0x33, 0x22, 0xab, 0x47, 0xdb, 0x7d, 0xb2, + 0x18, 0x12, 0x91, 0xc5, 0x3e, 0xb7, 0x77, 0x47, 0x99, 0x5d, 0x17, 0x00, 0x38, 0x57, 0x69, 0xc7, + 0x61, 0x10, 0xb2, 0xb8, 0xaf, 0x42, 0x83, 0x11, 0x6d, 0xb0, 0x0d, 0xea, 0x59, 0xa8, 0x99, 0x3b, + 0x86, 0xed, 0x4a, 0xcb, 0x7a, 0x95, 0x02, 0x88, 0x35, 0xa4, 0xe9, 0x5e, 0xca, 0x4c, 0x77, 0xed, + 0x5b, 0x52, 0xa7, 0x32, 0xfc, 0x46, 0x30, 0xe0, 0x47, 0x60, 0xca, 0xc2, 0x61, 0xd4, 0x49, 0x8d, + 0xc0, 0x7a, 0xa6, 0x1e, 0x1e, 0xcc, 0x35, 0x56, 0x70, 0x18, 0x25, 0x86, 0x68, 0x58, 0x69, 0x6b, + 0x57, 0x5e, 0x58, 0xcb, 0x99, 0x85, 0x55, 0xfb, 0x8e, 0x02, 0x97, 0xee, 0xc5, 0x4e, 0x64, 0x33, + 0x5c, 0xa1, 0x20, 0x1d, 0x12, 0x1d, 0x87, 0x9e, 0xb3, 0xd7, 0xbf, 0x52, 0x0d, 0xd6, 0xf0, 0x0a, + 0x4c, 0xb1, 0x21, 0x0e, 0x38, 0x31, 0x77, 0xa2, 0x49, 0x23, 0xc3, 0x71, 0x0e, 0xea, 0x22, 0x0e, + 0xf1, 0xbc, 0x6d, 0xae, 0x14, 0xf0, 0x08, 0xc4, 0xf3, 0xb6, 0xb5, 0xaf, 0x28, 0x70, 0x2e, 0xa3, + 0x97, 0xe1, 0x46, 0x8b, 0x56, 0xcf, 0x76, 0x75, 0xcf, 0xc1, 0xa3, 0x28, 0xf4, 0x26, 0xcc, 0x74, + 0x09, 0x31, 0xc6, 0x47, 0xac, 0x76, 0xea, 0xf0, 0x60, 0x6e, 0xfa, 0x0e, 0xfb, 0x98, 0x18, 0x6e, + 0xba, 0x9b, 0x01, 0xec, 0x6a, 0xab, 0xd0, 0x94, 0x14, 0x59, 0x73, 0xed, 0xc8, 0x36, 0x1c, 0xd6, + 0x18, 0xc1, 0x1f, 0x35, 0x03, 0x2e, 0x25, 0xc6, 0xb5, 0x2c, 0x3b, 0xb2, 0x3d, 0xd7, 0x70, 0xb2, + 0xb1, 0xd3, 0x28, 0xdd, 0x42, 0x30, 0x46, 0x43, 0x31, 0x66, 0x5d, 0xfa, 0x5b, 0xb3, 0xe0, 0x32, + 0x0b, 0x0e, 0x71, 0xcf, 0xdb, 0xc3, 0xef, 0x97, 0x14, 0x0f, 0x10, 0x8f, 0x56, 0xa9, 0xb0, 0xb7, + 0x3d, 0xdb, 0x1d, 0x8d, 0x69, 0x12, 0xe3, 0x96, 0x86, 0x8a, 0x71, 0x35, 0x0c, 0xaa, 0x2c, 0x70, + 0x1d, 0x6f, 0x47, 0x23, 0x2e, 0x3a, 0xc9, 0xba, 0x59, 0x2a, 0x5e, 0x37, 0xb5, 0xb7, 0xe1, 0x02, + 0x17, 0xc3, 0x17, 0x39, 0x1d, 0x7f, 0x2e, 0xc6, 0x61, 0xb4, 0x62, 0x87, 0xc6, 0x96, 0x33, 0x52, + 0x17, 0xb5, 0x35, 0x38, 0x9f, 0xcb, 0x6b, 0xd5, 0x1d, 0x99, 0xd5, 0x97, 0x15, 0xb8, 0x9c, 0xcb, + 0x4b, 0xc7, 0xdb, 0x38, 0xc0, 0xae, 0x89, 0x75, 0x1c, 0x8e, 0xb6, 0x8a, 0x14, 0x07, 0xf6, 0xa5, + 0x01, 0x81, 0xfd, 0x5f, 0x2a, 0x05, 0x06, 0x5a, 0x75, 0x3f, 0x17, 0xe3, 0x78, 0x34, 0x1f, 0x18, + 0x72, 0x50, 0xd0, 0x1b, 0x64, 0x39, 0xa5, 0xc2, 0xe8, 0x1a, 0x91, 0x1f, 0x05, 0x6c, 0xec, 0x18, + 0x01, 0x26, 0x86, 0x15, 0x7a, 0x09, 0x1a, 0xf4, 0x1c, 0x34, 0xbc, 0x47, 0x6e, 0x36, 0x3e, 0x6c, + 0xe8, 0x75, 0xef, 0x91, 0x9b, 0xc4, 0x07, 0x11, 0x9c, 0xcb, 0xed, 0xd5, 0x06, 0x76, 0x47, 0x32, + 0xea, 0x4d, 0x00, 0x2e, 0x35, 0xed, 0x13, 0xdd, 0xcc, 0x39, 0xdb, 0xf6, 0x5d, 0xbd, 0xc6, 0x11, + 0xda, 0xbb, 0xda, 0x5f, 0x15, 0x19, 0x53, 0xc7, 0x26, 0xb6, 0xf7, 0x46, 0x33, 0xe6, 0x48, 0xa2, + 0xd1, 0x47, 0xe0, 0xac, 0xc0, 0xee, 0x1f, 0x7e, 0xb6, 0x0c, 0x9f, 0x36, 0x85, 0x46, 0x7d, 0xcb, + 0x86, 0x2a, 0xe8, 0xfa, 0xec, 0x39, 0xcd, 0xe1, 0x89, 0x4d, 0xf7, 0xe1, 0x62, 0xd1, 0x54, 0x32, + 0x8d, 0xc0, 0x7a, 0x1f, 0x7b, 0xa7, 0xfd, 0x46, 0x91, 0x61, 0x17, 0x4d, 0x13, 0x93, 0x38, 0xf4, + 0xfd, 0x33, 0xec, 0x90, 0x01, 0x9a, 0xe6, 0xc3, 0xe9, 0xac, 0x86, 0x4b, 0x8e, 0x67, 0xee, 0xbe, + 0x9f, 0x46, 0x09, 0xe0, 0x6c, 0x56, 0xe2, 0xa6, 0xbb, 0xf5, 0x7e, 0xcb, 0xfc, 0xba, 0x02, 0x4d, + 0x2e, 0x74, 0x03, 0x07, 0x84, 0xc5, 0x43, 0x6f, 0x17, 0xbb, 0x8b, 0xd6, 0x88, 0xc3, 0xbf, 0x02, + 0x93, 0x21, 0xa3, 0xef, 0x44, 0x84, 0x01, 0xdf, 0x35, 0xe6, 0xf2, 0xd6, 0x01, 0x49, 0x8e, 0xde, + 0x08, 0xa5, 0x96, 0xe6, 0x41, 0x2b, 0x47, 0x19, 0xb6, 0x51, 0x8e, 0xba, 0x70, 0x51, 0x35, 0x3a, + 0x36, 0x5b, 0x2d, 0x6b, 0x6c, 0x90, 0x29, 0xbb, 0xb5, 0x15, 0xbd, 0x42, 0x3f, 0xae, 0x59, 0xda, + 0xef, 0x8a, 0x8c, 0x80, 0x8e, 0x7d, 0xc7, 0x36, 0x8d, 0xc8, 0x76, 0xbb, 0xa3, 0x75, 0x1b, 0x19, + 0x71, 0xb4, 0x83, 0xdd, 0x88, 0x12, 0x7b, 0x6e, 0x27, 0x0e, 0x1c, 0x2e, 0x91, 0x1e, 0xdd, 0x17, + 0x33, 0x5f, 0x37, 0xf5, 0x75, 0x7d, 0x26, 0x4b, 0xb0, 0x19, 0x38, 0xe8, 0x25, 0x40, 0x81, 0x90, + 0xef, 0xb9, 0x1d, 0x62, 0x12, 0x1c, 0x50, 0xe7, 0xac, 0xe9, 0x33, 0xd2, 0x97, 0x0d, 0xfa, 0x41, + 0xbb, 0x07, 0x68, 0xcd, 0x0d, 0x23, 0xc3, 0x35, 0x31, 0xcb, 0x61, 0xac, 0x90, 0xd3, 0x61, 0x0d, + 0x2a, 0x7c, 0x0e, 0xb5, 0x6e, 0xc2, 0x38, 0xe9, 0xcf, 0x3e, 0xba, 0x0c, 0x93, 0x98, 0x62, 0x60, + 0xab, 0x43, 0x57, 0x02, 0x16, 0x07, 0x37, 0x04, 0x90, 0x10, 0x6a, 0xff, 0x30, 0x01, 0x4d, 0xc1, + 0xef, 0x0e, 0x26, 0xbe, 0xb7, 0x6d, 0x77, 0xe3, 0x80, 0x4a, 0x94, 0xb9, 0xfe, 0xd7, 0xb8, 0x60, + 0x7b, 0x13, 0x20, 0x49, 0x67, 0x09, 0x0b, 0x51, 0x17, 0xe3, 0x83, 0x47, 0x5c, 0x4c, 0x24, 0xb5, + 0x46, 0x0a, 0xf1, 0x5f, 0x07, 0x55, 0x30, 0xee, 0x9b, 0xa3, 0xe8, 0xf0, 0x60, 0x6e, 0x4a, 0x8e, + 0x2f, 0xda, 0x77, 0xf5, 0x29, 0x43, 0x6e, 0xef, 0xa2, 0xcb, 0x50, 0xf1, 0x31, 0x0e, 0xc8, 0x98, + 0x8f, 0xd1, 0x11, 0x80, 0xc3, 0x83, 0xb9, 0x89, 0x36, 0xc6, 0xc1, 0xda, 0x8a, 0x3e, 0x41, 0x3e, + 0xad, 0x59, 0xe4, 0x60, 0xeb, 0xd8, 0x61, 0x84, 0x5d, 0x72, 0x9e, 0x1c, 0xbf, 0x54, 0xbe, 0x56, + 0xd3, 0x53, 0x00, 0xfa, 0x14, 0xd4, 0xb7, 0x1c, 0xdc, 0xc1, 0x2c, 0x00, 0xa0, 0x19, 0xa6, 0xa9, + 0x85, 0x8f, 0xe6, 0x38, 0x71, 0x91, 0xc1, 0xe6, 0x37, 0x70, 0x44, 0x9c, 0x68, 0x23, 0x32, 0x22, + 0xac, 0xc3, 0x96, 0x83, 0x45, 0x30, 0xb1, 0x05, 0xea, 0x23, 0x7b, 0xdb, 0xee, 0xf8, 0x0b, 0x7e, + 0xc2, 0xbf, 0xf2, 0x84, 0xfc, 0xa7, 0x08, 0xc7, 0xf6, 0x82, 0x2f, 0x64, 0x7c, 0x06, 0x1a, 0x3d, + 0xcb, 0x0d, 0x13, 0xfe, 0xd5, 0x27, 0xe4, 0x5f, 0x27, 0xdc, 0x04, 0xf3, 0xff, 0x0f, 0x93, 0x01, + 0x76, 0x8c, 0xfd, 0x84, 0x7b, 0xed, 0x09, 0xb9, 0x37, 0x28, 0x3b, 0xc1, 0x5e, 0x87, 0x19, 0xe1, + 0x26, 0x71, 0xb8, 0xc3, 0x57, 0x11, 0xa0, 0xab, 0xc8, 0xd5, 0xbc, 0x9c, 0x42, 0x1c, 0xee, 0xf0, + 0x45, 0x82, 0x6f, 0xc6, 0x81, 0x3e, 0xcd, 0x1d, 0x29, 0x0e, 0x77, 0xe8, 0x4c, 0x47, 0x77, 0x01, + 0xc9, 0x3c, 0xf9, 0xc4, 0xaa, 0x53, 0xa6, 0x17, 0x06, 0x30, 0xc5, 0x81, 0xae, 0xa6, 0xbc, 0xf8, + 0xb4, 0xbb, 0x03, 0x0d, 0x59, 0x7d, 0x54, 0x87, 0xca, 0xa6, 0xbb, 0xeb, 0x7a, 0x8f, 0x5c, 0xf5, + 0x19, 0xd2, 0xe0, 0x1d, 0x51, 0x15, 0xd4, 0x80, 0xaa, 0x08, 0x47, 0xd5, 0x12, 0x9a, 0x86, 0xfa, + 0xa6, 0x6b, 0xec, 0x19, 0xb6, 0x43, 0x20, 0x6a, 0x59, 0xfb, 0x02, 0x9c, 0x2d, 0x88, 0x11, 0xe5, + 0xe9, 0xf6, 0x09, 0x31, 0xdb, 0x8a, 0xe3, 0x40, 0xa5, 0x38, 0x0e, 0x24, 0x67, 0x49, 0x31, 0x4e, + 0x64, 0xce, 0x55, 0x75, 0xd1, 0xd4, 0x5e, 0x84, 0xd3, 0xb9, 0xa1, 0xb3, 0x2c, 0xbc, 0xc2, 0x85, + 0x6b, 0x3f, 0x05, 0xb3, 0x79, 0xb1, 0xb1, 0x8c, 0xfb, 0xc6, 0x13, 0x29, 0xaa, 0xed, 0xc0, 0xf9, + 0x7e, 0x6b, 0x84, 0x38, 0xdf, 0x24, 0x4f, 0x28, 0xe9, 0x6b, 0x4a, 0x92, 0x19, 0x49, 0xa3, 0x47, + 0xab, 0xb5, 0x9b, 0x08, 0x90, 0xe3, 0x58, 0xe5, 0x29, 0xc4, 0xb1, 0xa5, 0x23, 0x71, 0x6c, 0x6a, + 0xd8, 0x4f, 0xf6, 0x1b, 0x96, 0x45, 0x3e, 0xad, 0xdb, 0xa9, 0x36, 0xd9, 0x9d, 0x5c, 0x19, 0xbc, + 0x93, 0xa7, 0x9c, 0x3f, 0x95, 0x33, 0xbe, 0x24, 0x9e, 0x7b, 0x0a, 0xac, 0xdb, 0xd0, 0x90, 0x83, + 0xa1, 0xa7, 0xc0, 0x51, 0x87, 0xa9, 0x6c, 0xb0, 0xf3, 0x14, 0x78, 0xbe, 0x03, 0xa7, 0x44, 0x02, + 0x8c, 0x67, 0xbf, 0xe8, 0x38, 0x7f, 0x20, 0x65, 0x2c, 0xc7, 0x80, 0x4a, 0x71, 0x0c, 0x98, 0xb2, + 0x7c, 0x08, 0x67, 0xfa, 0xd3, 0x2f, 0xcb, 0x01, 0x36, 0xa2, 0x8c, 0x7b, 0xde, 0x12, 0xee, 0x39, + 0x24, 0x7b, 0xed, 0xd3, 0x30, 0xdb, 0xcf, 0x95, 0x9c, 0xd3, 0x5b, 0xaf, 0xa4, 0x9a, 0x8e, 0x78, + 0xd3, 0x94, 0x6a, 0xbc, 0x01, 0xa7, 0xfb, 0x79, 0xaf, 0x63, 0x63, 0x0f, 0x3f, 0x91, 0x19, 0x4c, + 0xb8, 0x72, 0x24, 0x0b, 0x25, 0x27, 0x8c, 0x88, 0xa7, 0x39, 0x5e, 0xf8, 0x64, 0x42, 0xbe, 0xa2, + 0xc0, 0xc5, 0xa3, 0xb9, 0x2e, 0x9e, 0x53, 0xa2, 0x79, 0xa0, 0xd6, 0xff, 0x1b, 0x99, 0x7d, 0x36, + 0x07, 0x54, 0x1a, 0x94, 0x03, 0x4a, 0x35, 0xf9, 0x66, 0x4e, 0xd6, 0x6d, 0xcd, 0xdd, 0xb3, 0x23, + 0xba, 0x99, 0x71, 0x07, 0x38, 0x41, 0x57, 0x6f, 0x0b, 0x47, 0x19, 0x71, 0x74, 0xb5, 0xaf, 0x2a, + 0x30, 0x2d, 0xe5, 0x8b, 0xa9, 0x5b, 0xbf, 0x33, 0xba, 0x2d, 0x0a, 0x2f, 0x70, 0xd8, 0xfd, 0x48, + 0x4b, 0x13, 0xfa, 0x9d, 0x83, 0xb2, 0x99, 0xe4, 0xc4, 0x2b, 0x87, 0x07, 0x73, 0xe5, 0xe5, 0xb5, + 0x15, 0x9d, 0xc0, 0xc8, 0x28, 0x4d, 0x51, 0x55, 0x68, 0xd2, 0xf9, 0x7f, 0x52, 0x93, 0x1f, 0x28, + 0x80, 0x32, 0xb7, 0x5b, 0x34, 0xab, 0x4f, 0x4e, 0x24, 0xec, 0x8a, 0xcb, 0xf4, 0xd2, 0x5b, 0x8c, + 0xfc, 0x13, 0x89, 0x7c, 0x0d, 0xa0, 0x37, 0xb0, 0x7c, 0x29, 0xf0, 0xba, 0x74, 0x81, 0xc3, 0x8e, + 0x34, 0x97, 0x8a, 0x06, 0x29, 0xb9, 0xdd, 0x48, 0x28, 0xd2, 0x4b, 0xa8, 0xb2, 0x74, 0x09, 0xa5, + 0xfd, 0x8e, 0x02, 0x33, 0x9c, 0x82, 0xdd, 0x78, 0x3c, 0x45, 0x7d, 0x5f, 0x83, 0x8a, 0xb8, 0x2c, + 0x61, 0xea, 0x3e, 0x77, 0xec, 0x7d, 0x93, 0x2e, 0x28, 0xe4, 0x3b, 0x85, 0x72, 0xf6, 0x4e, 0xe1, + 0xdf, 0x52, 0x95, 0x59, 0xd7, 0xd6, 0xed, 0x30, 0x6a, 0xfd, 0x58, 0x19, 0x7d, 0xc4, 0xaf, 0x42, + 0x35, 0xb4, 0x5d, 0x13, 0x8b, 0x93, 0x19, 0xc7, 0xdb, 0x20, 0x30, 0x72, 0x32, 0xa3, 0x1f, 0xd7, + 0x2c, 0xf4, 0x2c, 0xd4, 0x18, 0x9e, 0xeb, 0x3d, 0xa2, 0xda, 0x54, 0x75, 0x46, 0x78, 0xdf, 0x7b, + 0x44, 0x98, 0xc4, 0x6e, 0x64, 0x3b, 0x22, 0xd4, 0xe7, 0x4c, 0x36, 0x09, 0x8c, 0x30, 0xa1, 0x1f, + 0x19, 0x13, 0x86, 0x47, 0x98, 0x8c, 0x33, 0x26, 0x14, 0x40, 0x98, 0x5c, 0x26, 0xf1, 0xec, 0x1e, + 0x0e, 0x42, 0xdc, 0xf1, 0x02, 0x0b, 0x07, 0x34, 0xda, 0xaf, 0x92, 0xa8, 0x94, 0x02, 0x1f, 0x10, + 0x58, 0x7a, 0x65, 0xcc, 0x6d, 0xf6, 0xbf, 0xa5, 0xdf, 0xff, 0xa9, 0x40, 0x8d, 0xaf, 0x77, 0xdb, + 0x5e, 0xab, 0x33, 0x7a, 0x7f, 0x47, 0x4a, 0x43, 0xb4, 0x7e, 0x5e, 0x39, 0xe1, 0x92, 0x38, 0xc2, + 0xba, 0x9e, 0x3d, 0x88, 0x96, 0x07, 0xa6, 0x73, 0xdf, 0x85, 0xc9, 0x45, 0x33, 0xa2, 0x35, 0x16, + 0x54, 0x5a, 0xab, 0x3d, 0xba, 0x05, 0x2e, 0x00, 0x38, 0x9e, 0x69, 0x38, 0x1d, 0xcf, 0x75, 0xf6, + 0x79, 0x10, 0x5e, 0xa3, 0x90, 0x07, 0xae, 0xb3, 0x9f, 0xee, 0x32, 0xf7, 0x60, 0x7a, 0x05, 0x1b, + 0x19, 0x69, 0x4f, 0xb2, 0x7d, 0x7e, 0x63, 0x9c, 0x4f, 0x55, 0x7e, 0x7b, 0x15, 0x19, 0x51, 0x1c, + 0x9e, 0x84, 0xe3, 0x77, 0xcb, 0x62, 0x4c, 0xde, 0x80, 0x31, 0xa9, 0x4e, 0xe0, 0x7a, 0xd1, 0x90, + 0xc8, 0x02, 0xe7, 0x69, 0xd1, 0x00, 0x25, 0xcb, 0xbf, 0x8a, 0x6f, 0xfd, 0x91, 0x02, 0x93, 0xe4, + 0x6c, 0xbe, 0xec, 0xb9, 0x2e, 0x36, 0x23, 0x6c, 0xc9, 0xe7, 0x77, 0xa5, 0xf0, 0xfc, 0x3e, 0x42, + 0x36, 0xe1, 0x3e, 0x40, 0x14, 0x18, 0x6e, 0xe8, 0x7b, 0x41, 0xc4, 0xca, 0x32, 0xa6, 0x16, 0xe6, + 0x87, 0x53, 0x5e, 0x90, 0xe9, 0x12, 0x07, 0x74, 0x06, 0x26, 0x7a, 0x86, 0x65, 0x05, 0xac, 0x36, + 0xa3, 0xa6, 0xf3, 0x56, 0xeb, 0x36, 0xa8, 0x44, 0x49, 0x1d, 0x9b, 0xac, 0x2b, 0xb6, 0xdb, 0x1d, + 0xaa, 0x2f, 0x82, 0x90, 0x44, 0x4d, 0x23, 0x19, 0x41, 0xdb, 0x82, 0x31, 0x5a, 0x89, 0x31, 0x0d, + 0x75, 0xf2, 0x37, 0x3d, 0x86, 0x36, 0x61, 0x96, 0x00, 0xfa, 0xb9, 0xaa, 0x0a, 0x3a, 0x0d, 0x33, + 0xe2, 0x4b, 0x62, 0x71, 0xb5, 0x24, 0x13, 0xc8, 0xfa, 0xab, 0x65, 0x6d, 0x15, 0x6a, 0x89, 0x19, + 0xd0, 0x14, 0xc0, 0x43, 0x3f, 0x4a, 0xe5, 0x00, 0x4c, 0x3c, 0xf4, 0xa3, 0xf5, 0xc5, 0xfb, 0xaa, + 0xc2, 0x7f, 0x7f, 0x62, 0xf1, 0xbe, 0x5a, 0x42, 0x2a, 0x34, 0x1e, 0xfa, 0x51, 0x3b, 0xf0, 0x1e, + 0xdb, 0x3d, 0x3b, 0xda, 0x57, 0xcb, 0xda, 0x0f, 0x15, 0xe2, 0xde, 0x5b, 0x71, 0x97, 0xac, 0x9c, + 0xd4, 0xd2, 0xa1, 0x1c, 0x33, 0x7f, 0x4f, 0x19, 0x31, 0x68, 0x46, 0x6f, 0x67, 0x2a, 0x8b, 0x4a, + 0xc7, 0x57, 0x16, 0xb1, 0x65, 0x27, 0xb7, 0xd0, 0x28, 0xbb, 0x48, 0x95, 0x8f, 0xc9, 0x95, 0x7e, + 0xad, 0x0c, 0x67, 0x68, 0x57, 0xd6, 0xdc, 0xd0, 0xc7, 0x26, 0xeb, 0xcd, 0x46, 0xe4, 0x05, 0xb8, + 0xf5, 0xe5, 0x13, 0xec, 0x08, 0x1b, 0x50, 0x75, 0xbc, 0xae, 0xdc, 0x8d, 0x17, 0x73, 0xba, 0x71, + 0x44, 0xe0, 0xba, 0xd7, 0xa5, 0xbd, 0xa2, 0x4c, 0x79, 0x43, 0xaf, 0x38, 0xec, 0x47, 0xeb, 0x6f, + 0x95, 0xe3, 0x23, 0x26, 0x74, 0x0b, 0xea, 0xbc, 0xa2, 0xc1, 0x4c, 0x4b, 0x1a, 0xa6, 0x0e, 0x0f, + 0xe6, 0x80, 0x95, 0x34, 0xd0, 0x12, 0x23, 0x5e, 0xf4, 0x40, 0x6b, 0x8b, 0xd6, 0xa5, 0x4a, 0x27, + 0xa9, 0x6e, 0xa8, 0x3c, 0x44, 0xdd, 0x50, 0x52, 0xf0, 0x94, 0x80, 0xb2, 0x53, 0x78, 0xec, 0xb8, + 0x2a, 0x07, 0x11, 0x1f, 0x4e, 0x64, 0x6f, 0xc4, 0x7d, 0x00, 0x6a, 0x9a, 0x13, 0x2f, 0x98, 0xf2, + 0x69, 0x8d, 0xcf, 0xb8, 0xb0, 0xa9, 0x90, 0x89, 0xcd, 0x08, 0xd8, 0x94, 0x0b, 0xf5, 0x0a, 0x9b, + 0x73, 0xa1, 0xf6, 0x9b, 0x25, 0x98, 0x5d, 0x8c, 0xa3, 0x9d, 0xd5, 0xc7, 0xe6, 0x8e, 0xe1, 0x76, + 0xb1, 0x8e, 0x43, 0xdf, 0x73, 0x43, 0x4c, 0x8e, 0xfd, 0x86, 0x69, 0xe2, 0x30, 0xe4, 0x49, 0x2b, + 0x56, 0x8f, 0x53, 0x67, 0x30, 0x96, 0x88, 0x9a, 0x85, 0xf1, 0xd0, 0xf4, 0xfc, 0xa4, 0x2e, 0x87, + 0x36, 0xe8, 0xc2, 0x18, 0x04, 0x9e, 0x48, 0xf5, 0xb2, 0x06, 0x7a, 0x11, 0x66, 0xe8, 0x8f, 0x8e, + 0x85, 0x43, 0x33, 0xb0, 0x7d, 0x72, 0xd6, 0x60, 0x09, 0x4d, 0x5d, 0xa5, 0x1f, 0x56, 0x52, 0x38, + 0x7a, 0x07, 0xaa, 0x3c, 0x83, 0xce, 0xb2, 0x99, 0xf5, 0x85, 0x0f, 0xe7, 0x0c, 0x47, 0x9e, 0xda, + 0x22, 0x0f, 0x1f, 0xf2, 0x32, 0x23, 0xc1, 0xa6, 0xf5, 0x1a, 0x4c, 0x66, 0x3e, 0x8d, 0x54, 0x66, + 0xf4, 0x7b, 0x0a, 0x34, 0xe9, 0xb8, 0x10, 0x91, 0x9c, 0xcd, 0x06, 0x8e, 0xa8, 0x15, 0x5a, 0xdf, + 0x54, 0xe4, 0x54, 0xcb, 0x78, 0x6a, 0xad, 0xfa, 0xc2, 0x0b, 0x43, 0x6a, 0xad, 0x33, 0xaa, 0xa7, + 0x93, 0x78, 0x4f, 0x37, 0xcd, 0xcf, 0x83, 0xda, 0x9f, 0xd6, 0x41, 0x67, 0xa0, 0x94, 0xb8, 0x10, + 0xad, 0x07, 0x6a, 0xdf, 0xd5, 0x4b, 0xfe, 0x09, 0xef, 0x65, 0x51, 0x4b, 0x3a, 0x48, 0xb0, 0xe0, + 0x3a, 0x69, 0x6b, 0x0e, 0x9c, 0x97, 0xef, 0x3b, 0x36, 0x62, 0x9f, 0xa5, 0xe7, 0x39, 0x90, 0x38, + 0x58, 0x72, 0xb9, 0x22, 0xf6, 0xe1, 0x9a, 0x5e, 0x17, 0x57, 0x27, 0x6c, 0x4e, 0xa9, 0x02, 0x05, + 0xbb, 0x96, 0xef, 0xd9, 0x7c, 0xbb, 0xad, 0xe9, 0xd3, 0x1c, 0xbe, 0xca, 0xc1, 0xda, 0x4f, 0x14, + 0x68, 0xc8, 0xe2, 0xc8, 0x68, 0xca, 0x8e, 0xfb, 0x34, 0x2d, 0x8c, 0x3e, 0x0b, 0x28, 0x14, 0xdd, + 0xe9, 0x24, 0x9e, 0x5a, 0x2e, 0x2c, 0x85, 0x1b, 0x64, 0x07, 0x7d, 0x26, 0xec, 0x83, 0x84, 0xe8, + 0x22, 0x00, 0x7e, 0xec, 0xdb, 0x2c, 0xbd, 0x4c, 0x67, 0x49, 0x59, 0x97, 0x20, 0xda, 0xcf, 0x29, + 0x70, 0x56, 0x72, 0xc5, 0x65, 0xaf, 0xe7, 0x3b, 0x38, 0xc2, 0x6f, 0x39, 0xde, 0xa3, 0xd6, 0x1b, + 0xa9, 0x37, 0x2e, 0x40, 0xc3, 0x34, 0x1c, 0x67, 0xcb, 0x30, 0x77, 0x69, 0x37, 0xd9, 0xd6, 0x3b, + 0x7d, 0x78, 0x30, 0x57, 0x5f, 0xe6, 0x70, 0xd2, 0xc1, 0xba, 0x40, 0x22, 0xce, 0x23, 0x2f, 0x20, + 0xc9, 0x65, 0x93, 0x32, 0xe0, 0xb2, 0xe9, 0xf7, 0x15, 0x38, 0x25, 0xe9, 0xb2, 0xe6, 0xda, 0x11, + 0xd5, 0xe3, 0x5e, 0x66, 0xf1, 0x22, 0x36, 0x94, 0x74, 0x60, 0xa5, 0x57, 0x71, 0xb4, 0x43, 0xe4, + 0x57, 0xc8, 0x47, 0x62, 0xd6, 0x96, 0x34, 0xed, 0xcb, 0x34, 0x18, 0x49, 0xe7, 0x6f, 0x5b, 0xda, + 0x01, 0x52, 0x3e, 0x74, 0x07, 0x20, 0x3c, 0x08, 0x8c, 0x6c, 0x7c, 0x21, 0x36, 0xe3, 0x00, 0x27, + 0x83, 0x5a, 0x65, 0x1b, 0xdf, 0x06, 0x85, 0x12, 0xbc, 0x1a, 0x43, 0xd8, 0x0c, 0x1c, 0xed, 0x6b, + 0x0a, 0xcc, 0x08, 0x8b, 0xd3, 0x5e, 0xd1, 0x53, 0x90, 0xb4, 0x8b, 0xbf, 0x3b, 0xa2, 0x29, 0xd0, + 0x2b, 0x50, 0xe1, 0xfa, 0x0e, 0x7b, 0x51, 0x28, 0xf0, 0xb5, 0xf7, 0xfa, 0x74, 0x59, 0xf6, 0x2c, + 0x9c, 0xb1, 0x87, 0x92, 0xb5, 0x07, 0xba, 0x02, 0x53, 0xa6, 0x67, 0xe1, 0x8e, 0xb9, 0x63, 0x38, + 0x0e, 0x76, 0xbb, 0x62, 0xd5, 0x9a, 0x24, 0xd0, 0x65, 0x01, 0xcc, 0xa8, 0x5e, 0x1e, 0x30, 0x8a, + 0x5f, 0x52, 0x60, 0x4e, 0xcf, 0xde, 0xc9, 0xd1, 0x3b, 0x88, 0xae, 0x1d, 0x46, 0x3c, 0x47, 0xd4, + 0xfa, 0x54, 0x66, 0x44, 0x87, 0xb2, 0xc8, 0x90, 0xa5, 0x16, 0xe9, 0x92, 0xf5, 0x1e, 0x5c, 0xca, + 0x53, 0x83, 0x41, 0xf8, 0x39, 0xe2, 0x09, 0x12, 0x89, 0x73, 0x62, 0x48, 0xcf, 0x40, 0xc9, 0x63, + 0xcb, 0x60, 0x95, 0x2d, 0x83, 0x0f, 0xee, 0xea, 0x25, 0x6f, 0x57, 0xfb, 0x01, 0x00, 0x6c, 0xec, + 0x87, 0x11, 0xee, 0xd1, 0x23, 0xa2, 0xe4, 0x0d, 0x3f, 0x49, 0x62, 0x90, 0x37, 0xa1, 0xe2, 0x07, + 0x1e, 0xd9, 0x06, 0xb9, 0xd8, 0x2b, 0x79, 0xc3, 0x9c, 0x30, 0x99, 0x6f, 0x33, 0x64, 0x5d, 0x50, + 0xa1, 0xd7, 0xa1, 0xec, 0x2f, 0xf8, 0x03, 0x52, 0x19, 0x32, 0xf1, 0x42, 0x9b, 0x79, 0x79, 0x7b, + 0xa1, 0xad, 0x13, 0x32, 0xb4, 0x0e, 0x15, 0x2f, 0xd8, 0xb2, 0x23, 0x6b, 0x8b, 0x97, 0xa5, 0x1c, + 0x23, 0xfe, 0x01, 0x41, 0x5e, 0x59, 0x62, 0x96, 0xe7, 0x0d, 0x5d, 0xb0, 0x20, 0xcb, 0xe4, 0x23, + 0x23, 0x70, 0x45, 0xf4, 0xcf, 0x1a, 0xad, 0xbf, 0x57, 0x40, 0xa0, 0xa2, 0xad, 0xf4, 0xfa, 0x32, + 0x59, 0xeb, 0x59, 0xbf, 0x6f, 0x0f, 0x25, 0x78, 0x5e, 0x1e, 0x50, 0x7a, 0x12, 0xd1, 0xa7, 0x39, + 0xc3, 0xe4, 0x02, 0xe1, 0x0b, 0x30, 0x73, 0x04, 0x8b, 0xb8, 0xbf, 0x1f, 0x78, 0xdd, 0x40, 0x18, + 0xba, 0xac, 0x27, 0x6d, 0x9a, 0xd4, 0x31, 0x1e, 0xdb, 0xbd, 0xb8, 0x47, 0xcd, 0x58, 0xd6, 0x45, + 0x93, 0x50, 0x6d, 0xc5, 0xdb, 0xdb, 0x38, 0xe0, 0x35, 0x25, 0x65, 0x3d, 0x69, 0x93, 0xb3, 0x0e, + 0x2b, 0x17, 0xe2, 0x6b, 0x2a, 0x6f, 0xb5, 0xe6, 0x81, 0x98, 0x17, 0xbd, 0x00, 0xd3, 0xc9, 0xe1, + 0xa2, 0x43, 0x02, 0x24, 0x21, 0x77, 0x2a, 0x01, 0x93, 0xf8, 0x29, 0x6c, 0x7d, 0x75, 0x02, 0x2a, + 0x7c, 0x54, 0x89, 0x26, 0x7b, 0x38, 0x08, 0xc9, 0x42, 0xcd, 0x76, 0x1a, 0xd1, 0x44, 0x67, 0xa1, + 0xb2, 0x67, 0x86, 0x9d, 0x00, 0x6f, 0xf3, 0xb9, 0x39, 0xb1, 0x67, 0x86, 0x3a, 0xde, 0x26, 0xa1, + 0x62, 0xec, 0x47, 0x76, 0x0f, 0x77, 0x7a, 0x21, 0xd3, 0x91, 0x85, 0x8a, 0x9b, 0x14, 0x78, 0x6f, + 0x43, 0xaf, 0xb2, 0xcf, 0xf7, 0x42, 0xf4, 0x2a, 0xa8, 0x71, 0x88, 0x83, 0x8e, 0xe9, 0xc7, 0x1d, + 0x41, 0x01, 0x94, 0x62, 0xe6, 0xf0, 0x60, 0x6e, 0x72, 0x33, 0xc4, 0xc1, 0x72, 0x7b, 0xf3, 0x21, + 0x23, 0x9b, 0x24, 0xa8, 0xcb, 0x7e, 0xfc, 0x90, 0xd1, 0x7e, 0x1c, 0x50, 0x48, 0x47, 0x23, 0x43, + 0x5d, 0xa7, 0xd4, 0xb4, 0xfc, 0x90, 0x8d, 0x55, 0x4a, 0x3f, 0xcd, 0xd0, 0x53, 0x0e, 0x17, 0x00, + 0xc2, 0xc8, 0xa0, 0xbb, 0x9c, 0x11, 0x35, 0x1b, 0xd4, 0x16, 0x35, 0x0e, 0x59, 0xa4, 0x8f, 0x0c, + 0x02, 0x87, 0x1c, 0x89, 0x3a, 0x66, 0x1c, 0x34, 0x27, 0x69, 0xc9, 0x69, 0x8d, 0x41, 0x96, 0xe3, + 0x00, 0x5d, 0x86, 0x49, 0x37, 0xee, 0x75, 0xba, 0x5e, 0xe0, 0xc5, 0x91, 0xed, 0xe2, 0xe6, 0x14, + 0x65, 0xd0, 0x70, 0xe3, 0xde, 0x1d, 0x01, 0x23, 0x43, 0xe2, 0x7a, 0xdb, 0xb6, 0x83, 0x9b, 0xd3, + 0x6c, 0x48, 0x58, 0x0b, 0xbd, 0x04, 0xa7, 0x22, 0xcf, 0xeb, 0xf4, 0x0c, 0x77, 0xbf, 0xe3, 0xf9, + 0xd8, 0xed, 0x10, 0x68, 0xd8, 0x54, 0x69, 0xc2, 0x41, 0x8d, 0x3c, 0xef, 0x9e, 0xe1, 0xee, 0x3f, + 0xf0, 0xb1, 0xfb, 0x16, 0x81, 0x93, 0x03, 0x26, 0x91, 0x65, 0xfa, 0x71, 0x73, 0x86, 0x76, 0x90, + 0x1e, 0x30, 0xef, 0xc7, 0xa4, 0x77, 0xfa, 0x84, 0x1b, 0x93, 0x4e, 0x11, 0x7d, 0xbb, 0x5e, 0x47, + 0x8c, 0x16, 0xa2, 0x63, 0x52, 0xeb, 0x7a, 0xff, 0x97, 0x8f, 0xd7, 0x75, 0x50, 0x3d, 0x1f, 0x07, + 0xb4, 0x5c, 0xa2, 0xc3, 0x4c, 0xd1, 0x3c, 0xc5, 0xa2, 0x8d, 0x04, 0xce, 0x4c, 0x86, 0x9e, 0x85, + 0xda, 0x8e, 0x17, 0x46, 0x1d, 0xd7, 0xe8, 0xe1, 0xe6, 0x2c, 0xc5, 0xa9, 0x12, 0xc0, 0x7d, 0xa3, + 0x87, 0x11, 0x82, 0x31, 0x23, 0x30, 0x77, 0x9a, 0xa7, 0x29, 0x9c, 0xfe, 0x96, 0x4c, 0xd5, 0x33, + 0x1e, 0x37, 0xcf, 0xc8, 0xa6, 0xba, 0x67, 0x3c, 0x26, 0x9b, 0x9a, 0x6f, 0x5b, 0xcd, 0xb3, 0x54, + 0x75, 0x36, 0xdd, 0xc9, 0xb1, 0xc6, 0xb7, 0x2d, 0x74, 0x1e, 0xc6, 0x7c, 0xf2, 0xad, 0x49, 0xbf, + 0x55, 0x0f, 0x0f, 0xe6, 0xc6, 0xda, 0xe4, 0x23, 0x85, 0xb2, 0x39, 0x62, 0x7b, 0x81, 0x1d, 0xed, + 0x37, 0xcf, 0x89, 0x39, 0xc2, 0xda, 0x74, 0xa7, 0xb4, 0xad, 0x66, 0x2b, 0x65, 0xba, 0x49, 0x98, + 0xc6, 0xb6, 0x85, 0xe6, 0xa0, 0xfe, 0xc8, 0x0b, 0x76, 0x49, 0x47, 0x2d, 0x3b, 0x68, 0x3e, 0x4b, + 0x35, 0x05, 0x0e, 0x5a, 0xb1, 0x03, 0x32, 0x15, 0xb8, 0xef, 0x10, 0x9f, 0xa2, 0xdd, 0x3c, 0x4f, + 0x91, 0xa6, 0x18, 0x78, 0x93, 0x43, 0xb5, 0x7f, 0x1a, 0x87, 0x2a, 0x99, 0x14, 0xfd, 0x9b, 0xe7, + 0x9b, 0x62, 0xb5, 0xfc, 0x08, 0x8c, 0x8b, 0xa9, 0x54, 0x2e, 0x48, 0x34, 0x0b, 0x7a, 0xfa, 0x43, + 0x67, 0xe8, 0xad, 0xef, 0x97, 0x60, 0x8c, 0xb4, 0xa5, 0x0a, 0xf6, 0x5a, 0xa6, 0x82, 0xfd, 0x15, + 0x98, 0x20, 0x4e, 0x84, 0xd9, 0x51, 0x2f, 0x7f, 0x21, 0x4d, 0x38, 0xeb, 0x04, 0x53, 0xe7, 0x04, + 0xc4, 0xe9, 0xe8, 0x99, 0x43, 0x84, 0x19, 0xbc, 0x85, 0xde, 0x84, 0xea, 0x36, 0x36, 0xa2, 0x38, + 0xc0, 0x6c, 0x3d, 0x9c, 0xca, 0x2f, 0xfc, 0x17, 0x4c, 0xdf, 0x62, 0xb8, 0x7a, 0x42, 0x44, 0xec, + 0xda, 0xb3, 0xdd, 0x8e, 0x63, 0x44, 0xd8, 0x35, 0xd9, 0x8b, 0x95, 0xb2, 0x0e, 0x3d, 0xdb, 0x5d, + 0x67, 0x10, 0xe2, 0x38, 0x76, 0xd8, 0xa1, 0x79, 0x31, 0xcc, 0x53, 0x94, 0x55, 0x3b, 0xa4, 0x59, + 0x39, 0x8c, 0x5e, 0x85, 0x9a, 0x65, 0x07, 0xd8, 0xa4, 0x51, 0x5f, 0xa5, 0xf0, 0x18, 0xba, 0x22, + 0x70, 0xf4, 0x14, 0xbd, 0xf5, 0x17, 0x64, 0x7b, 0x22, 0xbd, 0xcb, 0x8a, 0x50, 0xfa, 0x44, 0x34, + 0xa1, 0x62, 0x58, 0x16, 0x5d, 0x52, 0xd9, 0x9a, 0x24, 0x9a, 0x59, 0xe1, 0xe5, 0x91, 0x84, 0x13, + 0xae, 0xa2, 0xcb, 0x6c, 0x61, 0x15, 0x4d, 0xf4, 0x3a, 0x54, 0xc2, 0x28, 0xc0, 0x46, 0x4f, 0x1c, + 0xe4, 0xb4, 0x41, 0x06, 0xdd, 0xa0, 0xa8, 0xba, 0x20, 0x69, 0x5d, 0x82, 0x09, 0x06, 0x2a, 0x72, + 0x02, 0x2d, 0x80, 0x0a, 0x1f, 0x05, 0x84, 0x60, 0x8a, 0xa7, 0x72, 0x38, 0x44, 0x7d, 0x06, 0xa9, + 0xd0, 0x58, 0x22, 0xe2, 0x04, 0x44, 0x41, 0x53, 0x00, 0x4b, 0xeb, 0xab, 0xa2, 0x4d, 0x73, 0x3b, + 0xeb, 0x9e, 0x69, 0x38, 0x02, 0x52, 0xa6, 0x59, 0x21, 0x2f, 0x10, 0xed, 0x31, 0x34, 0x0d, 0xf5, + 0x77, 0x62, 0xdb, 0x14, 0x80, 0x71, 0xed, 0xd7, 0x15, 0xa8, 0xb6, 0xc5, 0x46, 0x44, 0xce, 0xc0, + 0x91, 0x11, 0x89, 0xe3, 0x0b, 0x6b, 0x10, 0xa8, 0xe5, 0xd9, 0x6e, 0x57, 0x1c, 0x25, 0x69, 0x23, + 0xb3, 0xa1, 0x11, 0x0b, 0x97, 0xa4, 0x0d, 0xed, 0x3c, 0xd4, 0x4c, 0x1e, 0xc6, 0xb3, 0xdd, 0x69, + 0x4c, 0x4f, 0x01, 0xec, 0x30, 0x13, 0x19, 0x0e, 0xf5, 0xa8, 0x31, 0x9d, 0x35, 0xa8, 0x14, 0xec, + 0x18, 0xec, 0xcd, 0xd8, 0x98, 0xce, 0x1a, 0x9a, 0x0b, 0x33, 0x2c, 0x4d, 0xfc, 0x09, 0x3b, 0xda, + 0x61, 0xd9, 0x87, 0x70, 0x94, 0xc7, 0x0b, 0xf3, 0x50, 0x67, 0x99, 0x8a, 0xb0, 0xe3, 0xef, 0x66, + 0x9e, 0x86, 0x88, 0x54, 0x46, 0xa8, 0x03, 0xc7, 0x68, 0xef, 0x86, 0xda, 0x81, 0x02, 0x33, 0x0f, + 0xe2, 0xe8, 0xc1, 0x36, 0x4d, 0x1a, 0x89, 0xa7, 0x36, 0x03, 0x12, 0x35, 0x23, 0x24, 0x3b, 0xa5, + 0x17, 0x0d, 0xc4, 0x60, 0x13, 0xe9, 0x03, 0x26, 0xfe, 0x2a, 0x69, 0x2c, 0x7d, 0x95, 0x34, 0x0b, + 0xe3, 0xdb, 0x8e, 0xd1, 0x0d, 0xa9, 0x8d, 0x2a, 0x3a, 0x6b, 0xd0, 0xbc, 0x83, 0x78, 0x06, 0xd4, + 0xc9, 0x66, 0x5d, 0xd4, 0xe4, 0x43, 0x9b, 0xbf, 0xf4, 0x4a, 0x5e, 0xd6, 0x54, 0xa4, 0x97, 0x35, + 0xda, 0x9f, 0x29, 0x70, 0x2a, 0xa7, 0x30, 0x07, 0x2d, 0x01, 0xb0, 0x20, 0x58, 0x4a, 0x23, 0x27, + 0xeb, 0x45, 0x1c, 0xee, 0xf4, 0x15, 0xf4, 0xd0, 0xe0, 0x98, 0xe5, 0xea, 0x22, 0xf1, 0x93, 0xd8, + 0x62, 0x2b, 0x76, 0x2d, 0x07, 0xa7, 0x35, 0x7d, 0xd4, 0x16, 0x4b, 0x14, 0xb8, 0xb6, 0x42, 0x82, + 0x17, 0xfa, 0xcb, 0x4a, 0x0f, 0xb4, 0xfc, 0xda, 0x8d, 0x1d, 0x68, 0x5f, 0x86, 0xd9, 0x00, 0x9b, + 0xb6, 0x6f, 0x63, 0x37, 0xea, 0x48, 0x4f, 0xfe, 0x98, 0x61, 0x50, 0xf2, 0xad, 0x2d, 0xde, 0xfe, + 0x69, 0xf7, 0x01, 0xd2, 0xfa, 0x1f, 0xf6, 0xe2, 0x91, 0xfc, 0x92, 0x1f, 0x0a, 0x32, 0xc8, 0x5d, + 0xbc, 0x2f, 0x1f, 0xd2, 0xc9, 0x42, 0xc1, 0xfd, 0x59, 0x1c, 0xd2, 0x17, 0x2d, 0x2b, 0xd0, 0x7e, + 0x56, 0x81, 0x73, 0x84, 0x21, 0x1b, 0x3e, 0x5e, 0xdb, 0xc8, 0xce, 0x0d, 0xd8, 0x42, 0xaf, 0x67, + 0x33, 0x22, 0xc3, 0x16, 0x3d, 0xf1, 0xde, 0x0d, 0xef, 0x2a, 0xda, 0x7b, 0xd0, 0x4a, 0xb5, 0xe0, + 0xe5, 0x4e, 0xa9, 0x1a, 0x1f, 0x86, 0x09, 0x5e, 0x27, 0xa5, 0x0c, 0x53, 0x27, 0xc5, 0x91, 0x47, + 0x91, 0xff, 0x0b, 0x0a, 0x9c, 0x26, 0x1c, 0xd8, 0x8c, 0xa2, 0x66, 0xd8, 0xf4, 0x2d, 0xb2, 0x18, + 0x9c, 0x50, 0x76, 0x32, 0xde, 0x25, 0x79, 0xbc, 0x47, 0xb8, 0xee, 0xf9, 0x47, 0x05, 0xea, 0x84, + 0x2f, 0x37, 0x6a, 0xeb, 0x72, 0x7a, 0x6e, 0x92, 0x32, 0x90, 0x4a, 0x26, 0x03, 0xd9, 0xfa, 0x83, + 0xe4, 0x98, 0xf3, 0xb1, 0xf4, 0xde, 0x94, 0xe9, 0xfd, 0x7c, 0x8e, 0xde, 0x47, 0x26, 0x7e, 0xfa, + 0x4c, 0x8d, 0xac, 0x68, 0x0e, 0x26, 0xb1, 0xe2, 0x63, 0x71, 0x49, 0x92, 0x02, 0xd0, 0x35, 0x50, + 0xf9, 0xc9, 0x30, 0xf5, 0x59, 0xe6, 0xd8, 0x53, 0xec, 0x50, 0x98, 0xbc, 0x55, 0xbd, 0x0e, 0xaa, + 0xe1, 0x04, 0xd8, 0xb0, 0xf6, 0x3b, 0x01, 0x2f, 0x50, 0xa7, 0xde, 0x5d, 0xd5, 0xa7, 0x39, 0x5c, + 0xd4, 0xad, 0x6b, 0xff, 0x41, 0x56, 0x66, 0x6a, 0x49, 0xd7, 0x6a, 0xfd, 0xaa, 0x94, 0x97, 0x1b, + 0xb0, 0x1a, 0xe5, 0x29, 0x52, 0xca, 0x55, 0x64, 0x0d, 0x26, 0x19, 0x26, 0x5b, 0x2a, 0x45, 0xc2, + 0xe7, 0xf9, 0xdc, 0xbb, 0xe8, 0xbe, 0x05, 0x58, 0x6f, 0x74, 0xd9, 0x7d, 0x2b, 0xa5, 0x6c, 0xe9, + 0xc2, 0xc8, 0x47, 0x78, 0x2a, 0x27, 0xe5, 0xa9, 0xfd, 0x50, 0x81, 0x29, 0xda, 0xf9, 0x1d, 0x23, + 0x60, 0xd3, 0xb0, 0xf5, 0xfd, 0x13, 0x24, 0xf0, 0x53, 0x6f, 0x2d, 0x8d, 0xe2, 0xad, 0x4b, 0x50, + 0xe5, 0xa3, 0x13, 0xf0, 0x63, 0xe9, 0xb0, 0x53, 0x3d, 0xa1, 0x4b, 0xb3, 0x00, 0x0e, 0x20, 0x86, + 0x19, 0x49, 0x8b, 0x8a, 0x9c, 0x51, 0x92, 0xa5, 0x29, 0x4f, 0x2a, 0xed, 0xd3, 0x30, 0xc9, 0xa5, + 0xb1, 0x3e, 0xb5, 0x3e, 0x9e, 0x0a, 0x3a, 0xd9, 0xdc, 0x4d, 0x79, 0xbf, 0x01, 0x33, 0x6f, 0xd9, + 0x41, 0x18, 0xad, 0x1b, 0x61, 0xb4, 0xcc, 0xb6, 0x2e, 0x1a, 0x33, 0x6c, 0x13, 0x20, 0x7f, 0x94, + 0xcb, 0x1a, 0xe4, 0xd8, 0xe0, 0x18, 0x61, 0xc4, 0x9f, 0xee, 0xd1, 0xdf, 0xda, 0x5f, 0x2b, 0x70, + 0x8a, 0x1f, 0xa3, 0xa5, 0xf2, 0x06, 0x76, 0x30, 0xc3, 0x86, 0x83, 0xad, 0xce, 0x96, 0xf7, 0x58, + 0x4c, 0x2e, 0x06, 0x59, 0xf2, 0x1e, 0x93, 0x55, 0x3b, 0x30, 0x1e, 0x75, 0x02, 0x8f, 0xd5, 0xf4, + 0xf0, 0x89, 0x55, 0x0f, 0x8c, 0x47, 0x3a, 0x07, 0xb5, 0xbe, 0xa4, 0x40, 0x99, 0xa0, 0x4a, 0x01, + 0xa1, 0x92, 0x0d, 0x08, 0x67, 0x61, 0x9c, 0x3e, 0xdc, 0x16, 0xeb, 0x0f, 0x6d, 0x8c, 0xb0, 0xfe, + 0xf4, 0x57, 0x2e, 0x37, 0x72, 0x2f, 0xfd, 0xfe, 0x5d, 0x81, 0xd3, 0x3a, 0xde, 0x0e, 0x70, 0xb8, + 0x93, 0xad, 0xef, 0x6b, 0x7d, 0xe8, 0x98, 0xf8, 0x7f, 0x16, 0xc6, 0xd9, 0xbd, 0x65, 0x89, 0x65, + 0x2e, 0xd8, 0xb5, 0xe5, 0x3b, 0x27, 0x2c, 0xb4, 0x23, 0x86, 0x20, 0x47, 0x64, 0x2f, 0x8e, 0x44, + 0x46, 0x81, 0x37, 0xd3, 0x9a, 0xd5, 0xfb, 0x50, 0xa7, 0x67, 0x93, 0xce, 0xb6, 0x17, 0xbb, 0x16, + 0x9f, 0xaa, 0x2f, 0xe5, 0x78, 0x44, 0x6e, 0x87, 0xd8, 0xe9, 0x06, 0x28, 0x87, 0xb7, 0x08, 0x83, + 0x1b, 0x36, 0xa4, 0x17, 0x78, 0xe8, 0x0c, 0xaf, 0xf7, 0x61, 0x57, 0x9f, 0x16, 0xde, 0xb6, 0x5d, + 0x6c, 0xa9, 0xcf, 0xa0, 0x59, 0x5e, 0xaa, 0x41, 0xe0, 0xbc, 0x54, 0x5c, 0x55, 0x32, 0x50, 0x2e, + 0x86, 0xdd, 0x7b, 0x26, 0x50, 0xa9, 0xc4, 0x4b, 0x2d, 0xdf, 0xf8, 0xf3, 0x2a, 0xd4, 0xd2, 0xbb, + 0xaa, 0x33, 0x80, 0x92, 0x86, 0x2c, 0xeb, 0x32, 0xcc, 0x25, 0xf0, 0x3b, 0xe9, 0xda, 0xc2, 0xc6, + 0x96, 0xbe, 0x9e, 0x50, 0x95, 0xa3, 0x48, 0xf2, 0x83, 0x52, 0x86, 0x54, 0x42, 0x73, 0xf0, 0x6c, + 0x82, 0x74, 0xf4, 0xc5, 0x9e, 0x8a, 0xd1, 0x05, 0x38, 0x97, 0x8b, 0xb0, 0x8e, 0xb7, 0x23, 0x75, + 0x1b, 0xdd, 0x80, 0xab, 0xfd, 0x9f, 0xf3, 0x5f, 0xc6, 0xa9, 0x5d, 0x74, 0x1d, 0xae, 0x0c, 0xc6, + 0x15, 0x35, 0xcc, 0x3b, 0xe8, 0x65, 0xb8, 0x39, 0x18, 0x35, 0xfb, 0xb0, 0x4d, 0xb5, 0xd1, 0x02, + 0xcc, 0x0f, 0xa6, 0x78, 0x10, 0x47, 0x5d, 0x12, 0xdd, 0x8b, 0x97, 0x68, 0xea, 0xbb, 0x68, 0x1e, + 0x6e, 0x0c, 0x47, 0xb3, 0x81, 0xdd, 0x48, 0xdd, 0x3d, 0x5e, 0xc6, 0x9a, 0x6b, 0x7a, 0x3d, 0xdb, + 0xed, 0x8a, 0x8d, 0x4e, 0x75, 0xd0, 0x07, 0xe1, 0xd6, 0x70, 0x34, 0xc9, 0xbb, 0x27, 0xb5, 0x37, + 0xbc, 0x20, 0xf1, 0x60, 0x49, 0x75, 0x91, 0x06, 0x17, 0x0b, 0x68, 0xf8, 0xd3, 0x21, 0xd5, 0x43, + 0xcf, 0xc3, 0xa5, 0x02, 0x9c, 0xe4, 0xb1, 0x8f, 0xea, 0x23, 0x0d, 0x2e, 0x24, 0x58, 0x7d, 0xa5, + 0xac, 0xcc, 0x6d, 0xfe, 0x58, 0x41, 0x2f, 0xc3, 0x8b, 0x09, 0xce, 0xc0, 0xa2, 0x4c, 0x46, 0xf1, + 0x5b, 0x25, 0xf4, 0x21, 0xc9, 0x10, 0x47, 0xcb, 0x1a, 0xa5, 0x07, 0xb3, 0x8b, 0xae, 0xeb, 0xc5, + 0xae, 0x89, 0x2d, 0xf5, 0x07, 0x25, 0x34, 0x0f, 0xd7, 0x8b, 0xe5, 0x64, 0xca, 0x32, 0xb1, 0xa5, + 0xfe, 0x76, 0x09, 0x5d, 0x85, 0xe7, 0xfa, 0x7b, 0x78, 0xe4, 0x65, 0x91, 0xfa, 0x8b, 0x65, 0x74, + 0x0d, 0x2e, 0x0f, 0xc2, 0xe3, 0x8f, 0x7e, 0xd4, 0x5f, 0x2a, 0xa3, 0x8b, 0xd2, 0x04, 0xe8, 0x7f, + 0xac, 0xa3, 0x7e, 0xab, 0x8c, 0x2e, 0x4b, 0x76, 0xcf, 0x8d, 0x2b, 0xd5, 0x6f, 0x97, 0xd1, 0x0b, + 0xa0, 0x65, 0x90, 0x72, 0x63, 0x70, 0xf5, 0x3b, 0x59, 0xbd, 0x8a, 0xc3, 0x64, 0xf5, 0x97, 0xcb, + 0x99, 0x9e, 0x66, 0x8a, 0xe3, 0xf8, 0x21, 0x89, 0xfa, 0xec, 0xdf, 0x55, 0x6e, 0x7c, 0x43, 0xdc, + 0x89, 0xe6, 0x5c, 0xe3, 0xa3, 0x2b, 0xf0, 0x5c, 0xd1, 0xb7, 0xbe, 0xf5, 0xa6, 0x08, 0x8d, 0x6f, + 0x77, 0xaa, 0x42, 0x9c, 0xab, 0x18, 0x89, 0xa9, 0xa6, 0x96, 0x6e, 0xfc, 0xa1, 0x92, 0x54, 0x71, + 0xb3, 0x87, 0x0c, 0xe7, 0x92, 0x82, 0x71, 0xda, 0x96, 0xc5, 0xf6, 0x7d, 0x7a, 0xe8, 0x71, 0xef, + 0x57, 0x15, 0xb2, 0x82, 0xca, 0x9f, 0x92, 0x09, 0x57, 0x42, 0xa7, 0x61, 0x46, 0xfe, 0xc2, 0x46, + 0xbc, 0x8c, 0xce, 0x26, 0x65, 0xd9, 0x9c, 0x80, 0x0d, 0xf0, 0x58, 0xbf, 0x90, 0x74, 0x1a, 0x8e, + 0xf7, 0xd3, 0x88, 0x79, 0x34, 0x71, 0xe3, 0x0e, 0xd4, 0x92, 0xfc, 0x0a, 0x9a, 0x02, 0xe0, 0xf9, + 0x8c, 0x15, 0x3b, 0x50, 0x9f, 0x21, 0xed, 0x35, 0x77, 0x8b, 0x6c, 0x1c, 0xa4, 0xad, 0xa0, 0x69, + 0xa8, 0x3f, 0x88, 0xa3, 0x04, 0x50, 0x42, 0x35, 0x18, 0x5f, 0xb2, 0xc9, 0xcf, 0xf2, 0xc2, 0x77, + 0xaf, 0xc2, 0xb4, 0xf8, 0xff, 0x14, 0xe2, 0xbe, 0x35, 0xc8, 0x7b, 0x60, 0x85, 0x5e, 0x1a, 0xf0, + 0xd0, 0x25, 0x45, 0x9b, 0x17, 0x9b, 0xf2, 0x8b, 0xc3, 0xa2, 0xfb, 0xce, 0xfe, 0xcb, 0x0a, 0xfa, + 0xa2, 0x52, 0xfc, 0x0a, 0x0b, 0x7d, 0x70, 0x94, 0x37, 0x36, 0x42, 0x81, 0x0f, 0x8c, 0x46, 0x44, + 0xb6, 0xed, 0x9f, 0x29, 0x7c, 0x99, 0x82, 0x16, 0x72, 0xb8, 0x15, 0xe0, 0x26, 0x1a, 0xbc, 0x3c, + 0x12, 0x0d, 0x51, 0x60, 0xbf, 0xe0, 0x6d, 0x0a, 0x3a, 0x9e, 0x15, 0xc7, 0x4c, 0x84, 0xcf, 0x8f, + 0x40, 0x41, 0x44, 0xef, 0xe5, 0xbf, 0x74, 0x41, 0xb7, 0x8e, 0xe5, 0xc3, 0x10, 0x13, 0xc1, 0x2f, + 0x0d, 0x4f, 0x40, 0xe4, 0x7e, 0x53, 0x19, 0xfc, 0x00, 0x06, 0xdd, 0x1e, 0xc2, 0x8a, 0x32, 0x41, + 0xa2, 0xc8, 0x87, 0x47, 0x27, 0x24, 0x0a, 0xf9, 0x79, 0xaf, 0x64, 0xd0, 0xf1, 0xbd, 0x22, 0x68, + 0x03, 0xbd, 0x3f, 0x17, 0x3d, 0xd7, 0xf4, 0x6c, 0x53, 0x1d, 0xc2, 0xf4, 0x0c, 0x71, 0x04, 0xd3, + 0x27, 0x04, 0x45, 0xde, 0x46, 0x96, 0x9e, 0xe1, 0xbc, 0x8d, 0x60, 0x8e, 0xe6, 0x6d, 0x9c, 0x82, + 0x88, 0xfe, 0x6c, 0xf6, 0x25, 0x0d, 0x7a, 0xa1, 0x98, 0x9e, 0x22, 0x24, 0x82, 0xae, 0x1c, 0x8f, + 0x48, 0xf8, 0x5b, 0xfd, 0xef, 0x6a, 0xd0, 0xf5, 0x62, 0x42, 0x8e, 0x92, 0xc8, 0x78, 0x61, 0x18, + 0x54, 0x22, 0x25, 0xcc, 0x7d, 0x69, 0x83, 0x06, 0x18, 0x43, 0xc6, 0x4b, 0xe4, 0xdd, 0x1c, 0x1a, + 0x9f, 0x08, 0xfd, 0x7c, 0xd1, 0x5b, 0x1c, 0x94, 0xb7, 0xe2, 0xe5, 0xa3, 0x26, 0xa2, 0x6f, 0x8d, + 0x42, 0xc2, 0x7d, 0x35, 0xef, 0xcd, 0x0e, 0x1a, 0x86, 0x11, 0x41, 0x1c, 0xe8, 0xab, 0x05, 0x04, + 0xdc, 0x57, 0x73, 0xdf, 0xf3, 0xe4, 0xfa, 0x6a, 0x2e, 0xe6, 0x40, 0x5f, 0x2d, 0xa2, 0x20, 0xa2, + 0xbf, 0xa7, 0x0c, 0xf9, 0xec, 0x07, 0x7d, 0x7c, 0x08, 0xce, 0xb9, 0x94, 0x89, 0x6e, 0x1f, 0x7b, + 0x02, 0x0e, 0x44, 0xd7, 0x6f, 0x1f, 0xfb, 0x78, 0x08, 0xbd, 0x32, 0x8c, 0x88, 0x0c, 0x49, 0xa2, + 0xdd, 0xed, 0x93, 0x90, 0x12, 0xb5, 0x7e, 0x6d, 0x88, 0x97, 0x44, 0xe8, 0xb5, 0x21, 0xb8, 0xf7, + 0x13, 0x25, 0xaa, 0xbd, 0x72, 0x32, 0x62, 0xa2, 0x5c, 0xf7, 0xc8, 0xa3, 0x22, 0x74, 0x23, 0xaf, + 0x1c, 0x2f, 0x8b, 0x93, 0x48, 0xbe, 0x36, 0x14, 0x2e, 0x5f, 0x94, 0xb2, 0x4f, 0x86, 0x72, 0x17, + 0xa5, 0x2c, 0xca, 0xc0, 0x45, 0xe9, 0x08, 0x2a, 0x91, 0xf2, 0x6e, 0xce, 0x53, 0x15, 0x74, 0xf3, + 0xb8, 0x57, 0x3b, 0xec, 0xee, 0x73, 0xc0, 0x22, 0x7b, 0xf4, 0x89, 0xd1, 0xcb, 0x0a, 0xea, 0x1e, + 0x7d, 0x1d, 0x82, 0x5e, 0x2c, 0x26, 0x4e, 0x90, 0x12, 0x49, 0xcf, 0x1f, 0x83, 0x2c, 0x04, 0x6d, + 0x4a, 0xcf, 0x31, 0x50, 0x21, 0x11, 0x2d, 0x26, 0x11, 0xac, 0xb5, 0x63, 0xb0, 0x88, 0xad, 0x8c, + 0xbe, 0x77, 0x0e, 0x28, 0x77, 0x30, 0x65, 0x8c, 0x84, 0xfd, 0xd5, 0x21, 0x30, 0xb9, 0x77, 0xf5, + 0x3d, 0x6f, 0xc8, 0xf5, 0xae, 0x3e, 0x9c, 0x81, 0xde, 0x75, 0x14, 0x97, 0x08, 0xf2, 0x72, 0xde, + 0x3d, 0x14, 0x8f, 0x7b, 0xa6, 0xde, 0x5f, 0x08, 0xbb, 0x31, 0x24, 0x36, 0x0b, 0xd9, 0xed, 0x23, + 0x95, 0xed, 0x05, 0x3d, 0xcb, 0xe0, 0x1c, 0xd3, 0xb3, 0x7e, 0x5c, 0x26, 0xea, 0xbd, 0xa2, 0xca, + 0xf3, 0xdc, 0x3d, 0x2f, 0x1f, 0x75, 0xe0, 0x9e, 0x57, 0x48, 0xc2, 0xe4, 0x7f, 0x52, 0xae, 0xb6, + 0x46, 0x57, 0x8a, 0x18, 0x64, 0x87, 0xee, 0xf2, 0x71, 0x68, 0x64, 0xd4, 0xbe, 0x38, 0xa0, 0x60, + 0x38, 0xf7, 0xdc, 0x53, 0x84, 0x3c, 0xf0, 0xdc, 0x33, 0x80, 0x88, 0x28, 0xf1, 0x49, 0xb9, 0x94, + 0x0d, 0x1d, 0x53, 0x25, 0x36, 0xa8, 0x7b, 0x19, 0x34, 0x1e, 0x21, 0xe5, 0x94, 0x7c, 0xe6, 0x46, + 0x48, 0x39, 0x78, 0x03, 0x23, 0xa4, 0x7c, 0x7c, 0x7e, 0x8c, 0x2b, 0xa8, 0x79, 0xcd, 0x3d, 0xc6, + 0x15, 0xe0, 0x0e, 0x3c, 0xc6, 0x15, 0xd3, 0xf0, 0xa9, 0x78, 0xa4, 0x5e, 0x34, 0x77, 0x2a, 0x1e, + 0xc1, 0x1a, 0x38, 0x15, 0xf3, 0xb0, 0x99, 0x7f, 0xfe, 0xca, 0xf1, 0x45, 0x99, 0xe8, 0xd5, 0xdc, + 0xf4, 0xf3, 0x40, 0x9a, 0x44, 0x9b, 0x8f, 0x9e, 0x88, 0x96, 0x98, 0x42, 0x4f, 0x8b, 0x7e, 0xd0, + 0xc0, 0x12, 0x19, 0x21, 0x6a, 0x70, 0x71, 0x0e, 0xe5, 0xf9, 0x99, 0xcc, 0x6d, 0x25, 0x2a, 0xba, + 0xd0, 0xe1, 0xdf, 0x07, 0xee, 0x35, 0x59, 0x3c, 0xa1, 0x30, 0xbf, 0x18, 0xcc, 0x57, 0x98, 0x7f, + 0x1c, 0xac, 0x70, 0x8a, 0xc4, 0x37, 0xfe, 0xec, 0x7d, 0x5b, 0xee, 0xc6, 0x9f, 0x45, 0x19, 0xb8, + 0xf1, 0x1f, 0x41, 0xe5, 0x07, 0xd7, 0xa3, 0x77, 0x61, 0xb9, 0x07, 0xd7, 0xa3, 0x68, 0x03, 0x0f, + 0xae, 0xb9, 0xe8, 0x7c, 0xfb, 0xcc, 0xdc, 0x87, 0xe5, 0x6e, 0x9f, 0x19, 0x8c, 0x81, 0xdb, 0x67, + 0x3f, 0x26, 0x8f, 0xfb, 0x73, 0xef, 0x48, 0x72, 0xe3, 0xfe, 0xfc, 0xdb, 0x94, 0x41, 0x71, 0x7f, + 0x11, 0x85, 0xef, 0xec, 0x2f, 0xdd, 0xfe, 0xd1, 0xdf, 0x5c, 0x7c, 0xe6, 0x87, 0x87, 0x17, 0x95, + 0x1f, 0x1d, 0x5e, 0x54, 0x7e, 0x7c, 0x78, 0x51, 0xf9, 0xf4, 0x15, 0xc6, 0x20, 0xc2, 0xe6, 0xce, + 0x2d, 0xfa, 0xf3, 0x56, 0xd7, 0xbb, 0xe5, 0xef, 0x76, 0x6f, 0x65, 0xfe, 0xd5, 0xf6, 0xd6, 0x04, + 0x6d, 0x7e, 0xf0, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x8a, 0x55, 0xb7, 0xfe, 0x82, 0x5b, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -12592,10 +12211,6 @@ type ProtocolServiceClient interface { ReplicationServiceRegisterGroup(ctx context.Context, in *ReplicationServiceRegisterGroup_Request, opts ...grpc.CallOption) (*ReplicationServiceRegisterGroup_Reply, error) // PeerList returns a list of P2P peers PeerList(ctx context.Context, in *PeerList_Request, opts ...grpc.CallOption) (*PeerList_Reply, error) - // AttachmentPrepare ... - AttachmentPrepare(ctx context.Context, opts ...grpc.CallOption) (ProtocolService_AttachmentPrepareClient, error) - // AttachmentRetrieve returns an attachment data - AttachmentRetrieve(ctx context.Context, in *AttachmentRetrieve_Request, opts ...grpc.CallOption) (ProtocolService_AttachmentRetrieveClient, error) // PushReceive handles a push payload, decrypts it if possible PushReceive(ctx context.Context, in *PushReceive_Request, opts ...grpc.CallOption) (*PushReceive_Reply, error) // PushSend sends a push payload to a specified list of group members @@ -13103,72 +12718,6 @@ func (c *protocolServiceClient) PeerList(ctx context.Context, in *PeerList_Reque return out, nil } -func (c *protocolServiceClient) AttachmentPrepare(ctx context.Context, opts ...grpc.CallOption) (ProtocolService_AttachmentPrepareClient, error) { - stream, err := c.cc.NewStream(ctx, &_ProtocolService_serviceDesc.Streams[7], "/berty.protocol.v1.ProtocolService/AttachmentPrepare", opts...) - if err != nil { - return nil, err - } - x := &protocolServiceAttachmentPrepareClient{stream} - return x, nil -} - -type ProtocolService_AttachmentPrepareClient interface { - Send(*AttachmentPrepare_Request) error - CloseAndRecv() (*AttachmentPrepare_Reply, error) - grpc.ClientStream -} - -type protocolServiceAttachmentPrepareClient struct { - grpc.ClientStream -} - -func (x *protocolServiceAttachmentPrepareClient) Send(m *AttachmentPrepare_Request) error { - return x.ClientStream.SendMsg(m) -} - -func (x *protocolServiceAttachmentPrepareClient) CloseAndRecv() (*AttachmentPrepare_Reply, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(AttachmentPrepare_Reply) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *protocolServiceClient) AttachmentRetrieve(ctx context.Context, in *AttachmentRetrieve_Request, opts ...grpc.CallOption) (ProtocolService_AttachmentRetrieveClient, error) { - stream, err := c.cc.NewStream(ctx, &_ProtocolService_serviceDesc.Streams[8], "/berty.protocol.v1.ProtocolService/AttachmentRetrieve", opts...) - if err != nil { - return nil, err - } - x := &protocolServiceAttachmentRetrieveClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type ProtocolService_AttachmentRetrieveClient interface { - Recv() (*AttachmentRetrieve_Reply, error) - grpc.ClientStream -} - -type protocolServiceAttachmentRetrieveClient struct { - grpc.ClientStream -} - -func (x *protocolServiceAttachmentRetrieveClient) Recv() (*AttachmentRetrieve_Reply, error) { - m := new(AttachmentRetrieve_Reply) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - func (c *protocolServiceClient) PushReceive(ctx context.Context, in *PushReceive_Request, opts ...grpc.CallOption) (*PushReceive_Reply, error) { out := new(PushReceive_Reply) err := c.cc.Invoke(ctx, "/berty.protocol.v1.ProtocolService/PushReceive", in, out, opts...) @@ -13292,10 +12841,6 @@ type ProtocolServiceServer interface { ReplicationServiceRegisterGroup(context.Context, *ReplicationServiceRegisterGroup_Request) (*ReplicationServiceRegisterGroup_Reply, error) // PeerList returns a list of P2P peers PeerList(context.Context, *PeerList_Request) (*PeerList_Reply, error) - // AttachmentPrepare ... - AttachmentPrepare(ProtocolService_AttachmentPrepareServer) error - // AttachmentRetrieve returns an attachment data - AttachmentRetrieve(*AttachmentRetrieve_Request, ProtocolService_AttachmentRetrieveServer) error // PushReceive handles a push payload, decrypts it if possible PushReceive(context.Context, *PushReceive_Request) (*PushReceive_Reply, error) // PushSend sends a push payload to a specified list of group members @@ -13457,14 +13002,6 @@ func (*UnimplementedProtocolServiceServer) PeerList(ctx context.Context, req *Pe return nil, status.Errorf(codes.Unimplemented, "method PeerList not implemented") } -func (*UnimplementedProtocolServiceServer) AttachmentPrepare(srv ProtocolService_AttachmentPrepareServer) error { - return status.Errorf(codes.Unimplemented, "method AttachmentPrepare not implemented") -} - -func (*UnimplementedProtocolServiceServer) AttachmentRetrieve(req *AttachmentRetrieve_Request, srv ProtocolService_AttachmentRetrieveServer) error { - return status.Errorf(codes.Unimplemented, "method AttachmentRetrieve not implemented") -} - func (*UnimplementedProtocolServiceServer) PushReceive(ctx context.Context, req *PushReceive_Request) (*PushReceive_Reply, error) { return nil, status.Errorf(codes.Unimplemented, "method PushReceive not implemented") } @@ -14162,53 +13699,6 @@ func _ProtocolService_PeerList_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } -func _ProtocolService_AttachmentPrepare_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(ProtocolServiceServer).AttachmentPrepare(&protocolServiceAttachmentPrepareServer{stream}) -} - -type ProtocolService_AttachmentPrepareServer interface { - SendAndClose(*AttachmentPrepare_Reply) error - Recv() (*AttachmentPrepare_Request, error) - grpc.ServerStream -} - -type protocolServiceAttachmentPrepareServer struct { - grpc.ServerStream -} - -func (x *protocolServiceAttachmentPrepareServer) SendAndClose(m *AttachmentPrepare_Reply) error { - return x.ServerStream.SendMsg(m) -} - -func (x *protocolServiceAttachmentPrepareServer) Recv() (*AttachmentPrepare_Request, error) { - m := new(AttachmentPrepare_Request) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _ProtocolService_AttachmentRetrieve_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(AttachmentRetrieve_Request) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(ProtocolServiceServer).AttachmentRetrieve(m, &protocolServiceAttachmentRetrieveServer{stream}) -} - -type ProtocolService_AttachmentRetrieveServer interface { - Send(*AttachmentRetrieve_Reply) error - grpc.ServerStream -} - -type protocolServiceAttachmentRetrieveServer struct { - grpc.ServerStream -} - -func (x *protocolServiceAttachmentRetrieveServer) Send(m *AttachmentRetrieve_Reply) error { - return x.ServerStream.SendMsg(m) -} - func _ProtocolService_PushReceive_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(PushReceive_Request) if err := dec(in); err != nil { @@ -14498,16 +13988,6 @@ var _ProtocolService_serviceDesc = grpc.ServiceDesc{ Handler: _ProtocolService_ServicesTokenList_Handler, ServerStreams: true, }, - { - StreamName: "AttachmentPrepare", - Handler: _ProtocolService_AttachmentPrepare_Handler, - ClientStreams: true, - }, - { - StreamName: "AttachmentRetrieve", - Handler: _ProtocolService_AttachmentRetrieve_Handler, - ServerStreams: true, - }, }, Metadata: "protocoltypes.proto", } @@ -14794,15 +14274,6 @@ func (m *GroupEnvelope) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - if len(m.EncryptedAttachmentCIDs) > 0 { - for iNdEx := len(m.EncryptedAttachmentCIDs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.EncryptedAttachmentCIDs[iNdEx]) - copy(dAtA[i:], m.EncryptedAttachmentCIDs[iNdEx]) - i = encodeVarintProtocoltypes(dAtA, i, uint64(len(m.EncryptedAttachmentCIDs[iNdEx]))) - i-- - dAtA[i] = 0x1a - } - } if len(m.Event) > 0 { i -= len(m.Event) copy(dAtA[i:], m.Event) @@ -14909,15 +14380,6 @@ func (m *ProtocolMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - if len(m.AttachmentsSecrets) > 0 { - for iNdEx := len(m.AttachmentsSecrets) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.AttachmentsSecrets[iNdEx]) - copy(dAtA[i:], m.AttachmentsSecrets[iNdEx]) - i = encodeVarintProtocoltypes(dAtA, i, uint64(len(m.AttachmentsSecrets[iNdEx]))) - i-- - dAtA[i] = 0xa - } - } return len(dAtA) - i, nil } @@ -14991,15 +14453,6 @@ func (m *MessageEnvelope) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - if len(m.EncryptedAttachmentCIDs) > 0 { - for iNdEx := len(m.EncryptedAttachmentCIDs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.EncryptedAttachmentCIDs[iNdEx]) - copy(dAtA[i:], m.EncryptedAttachmentCIDs[iNdEx]) - i = encodeVarintProtocoltypes(dAtA, i, uint64(len(m.EncryptedAttachmentCIDs[iNdEx]))) - i-- - dAtA[i] = 0x22 - } - } if len(m.Nonce) > 0 { i -= len(m.Nonce) copy(dAtA[i:], m.Nonce) @@ -15048,15 +14501,6 @@ func (m *EventContext) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - if len(m.AttachmentCIDs) > 0 { - for iNdEx := len(m.AttachmentCIDs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.AttachmentCIDs[iNdEx]) - copy(dAtA[i:], m.AttachmentCIDs[iNdEx]) - i = encodeVarintProtocoltypes(dAtA, i, uint64(len(m.AttachmentCIDs[iNdEx]))) - i-- - dAtA[i] = 0x22 - } - } if len(m.GroupPK) > 0 { i -= len(m.GroupPK) copy(dAtA[i:], m.GroupPK) @@ -17911,15 +17355,6 @@ func (m *AppMetadataSend_Request) MarshalToSizedBuffer(dAtA []byte) (int, error) i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - if len(m.AttachmentCIDs) > 0 { - for iNdEx := len(m.AttachmentCIDs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.AttachmentCIDs[iNdEx]) - copy(dAtA[i:], m.AttachmentCIDs[iNdEx]) - i = encodeVarintProtocoltypes(dAtA, i, uint64(len(m.AttachmentCIDs[iNdEx]))) - i-- - dAtA[i] = 0x1a - } - } if len(m.Payload) > 0 { i -= len(m.Payload) copy(dAtA[i:], m.Payload) @@ -18022,15 +17457,6 @@ func (m *AppMessageSend_Request) MarshalToSizedBuffer(dAtA []byte) (int, error) i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - if len(m.AttachmentCIDs) > 0 { - for iNdEx := len(m.AttachmentCIDs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.AttachmentCIDs[iNdEx]) - copy(dAtA[i:], m.AttachmentCIDs[iNdEx]) - i = encodeVarintProtocoltypes(dAtA, i, uint64(len(m.AttachmentCIDs[iNdEx]))) - i-- - dAtA[i] = 0x1a - } - } if len(m.Payload) > 0 { i -= len(m.Payload) copy(dAtA[i:], m.Payload) @@ -20876,206 +20302,6 @@ func (m *PeerList_Stream) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *AttachmentPrepare) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AttachmentPrepare) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AttachmentPrepare) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - return len(dAtA) - i, nil -} - -func (m *AttachmentPrepare_Request) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AttachmentPrepare_Request) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AttachmentPrepare_Request) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.DisableEncryption { - i-- - if m.DisableEncryption { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x10 - } - if len(m.Block) > 0 { - i -= len(m.Block) - copy(dAtA[i:], m.Block) - i = encodeVarintProtocoltypes(dAtA, i, uint64(len(m.Block))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AttachmentPrepare_Reply) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AttachmentPrepare_Reply) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AttachmentPrepare_Reply) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.AttachmentCID) > 0 { - i -= len(m.AttachmentCID) - copy(dAtA[i:], m.AttachmentCID) - i = encodeVarintProtocoltypes(dAtA, i, uint64(len(m.AttachmentCID))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AttachmentRetrieve) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AttachmentRetrieve) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AttachmentRetrieve) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - return len(dAtA) - i, nil -} - -func (m *AttachmentRetrieve_Request) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AttachmentRetrieve_Request) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AttachmentRetrieve_Request) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.AttachmentCID) > 0 { - i -= len(m.AttachmentCID) - copy(dAtA[i:], m.AttachmentCID) - i = encodeVarintProtocoltypes(dAtA, i, uint64(len(m.AttachmentCID))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AttachmentRetrieve_Reply) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AttachmentRetrieve_Reply) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AttachmentRetrieve_Reply) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Block) > 0 { - i -= len(m.Block) - copy(dAtA[i:], m.Block) - i = encodeVarintProtocoltypes(dAtA, i, uint64(len(m.Block))) - i-- - dAtA[i] = 0x12 - } - return len(dAtA) - i, nil -} - func (m *Progress) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -22478,12 +21704,6 @@ func (m *GroupEnvelope) Size() (n int) { if l > 0 { n += 1 + l + sovProtocoltypes(uint64(l)) } - if len(m.EncryptedAttachmentCIDs) > 0 { - for _, b := range m.EncryptedAttachmentCIDs { - l = len(b) - n += 1 + l + sovProtocoltypes(uint64(l)) - } - } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -22527,12 +21747,6 @@ func (m *ProtocolMetadata) Size() (n int) { } var l int _ = l - if len(m.AttachmentsSecrets) > 0 { - for _, b := range m.AttachmentsSecrets { - l = len(b) - n += 1 + l + sovProtocoltypes(uint64(l)) - } - } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -22577,12 +21791,6 @@ func (m *MessageEnvelope) Size() (n int) { if l > 0 { n += 1 + l + sovProtocoltypes(uint64(l)) } - if len(m.EncryptedAttachmentCIDs) > 0 { - for _, b := range m.EncryptedAttachmentCIDs { - l = len(b) - n += 1 + l + sovProtocoltypes(uint64(l)) - } - } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -22609,12 +21817,6 @@ func (m *EventContext) Size() (n int) { if l > 0 { n += 1 + l + sovProtocoltypes(uint64(l)) } - if len(m.AttachmentCIDs) > 0 { - for _, b := range m.AttachmentCIDs { - l = len(b) - n += 1 + l + sovProtocoltypes(uint64(l)) - } - } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -23939,12 +23141,6 @@ func (m *AppMetadataSend_Request) Size() (n int) { if l > 0 { n += 1 + l + sovProtocoltypes(uint64(l)) } - if len(m.AttachmentCIDs) > 0 { - for _, b := range m.AttachmentCIDs { - l = len(b) - n += 1 + l + sovProtocoltypes(uint64(l)) - } - } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -23993,12 +23189,6 @@ func (m *AppMessageSend_Request) Size() (n int) { if l > 0 { n += 1 + l + sovProtocoltypes(uint64(l)) } - if len(m.AttachmentCIDs) > 0 { - for _, b := range m.AttachmentCIDs { - l = len(b) - n += 1 + l + sovProtocoltypes(uint64(l)) - } - } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -25302,97 +24492,6 @@ func (m *PeerList_Stream) Size() (n int) { return n } -func (m *AttachmentPrepare) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AttachmentPrepare_Request) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Block) - if l > 0 { - n += 1 + l + sovProtocoltypes(uint64(l)) - } - if m.DisableEncryption { - n += 2 - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AttachmentPrepare_Reply) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.AttachmentCID) - if l > 0 { - n += 1 + l + sovProtocoltypes(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AttachmentRetrieve) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AttachmentRetrieve_Request) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.AttachmentCID) - if l > 0 { - n += 1 + l + sovProtocoltypes(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AttachmentRetrieve_Reply) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Block) - if l > 0 { - n += 1 + l + sovProtocoltypes(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - func (m *Progress) Size() (n int) { if m == nil { return 0 @@ -26935,38 +26034,6 @@ func (m *GroupEnvelope) Unmarshal(dAtA []byte) error { m.Event = []byte{} } iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field EncryptedAttachmentCIDs", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthProtocoltypes - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthProtocoltypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.EncryptedAttachmentCIDs = append(m.EncryptedAttachmentCIDs, make([]byte, postIndex-iNdEx)) - copy(m.EncryptedAttachmentCIDs[len(m.EncryptedAttachmentCIDs)-1], dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipProtocoltypes(dAtA[iNdEx:]) @@ -27285,38 +26352,6 @@ func (m *ProtocolMetadata) Unmarshal(dAtA []byte) error { return fmt.Errorf("proto: ProtocolMetadata: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AttachmentsSecrets", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthProtocoltypes - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthProtocoltypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AttachmentsSecrets = append(m.AttachmentsSecrets, make([]byte, postIndex-iNdEx)) - copy(m.AttachmentsSecrets[len(m.AttachmentsSecrets)-1], dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipProtocoltypes(dAtA[iNdEx:]) @@ -27593,38 +26628,6 @@ func (m *MessageEnvelope) Unmarshal(dAtA []byte) error { m.Nonce = []byte{} } iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field EncryptedAttachmentCIDs", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthProtocoltypes - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthProtocoltypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.EncryptedAttachmentCIDs = append(m.EncryptedAttachmentCIDs, make([]byte, postIndex-iNdEx)) - copy(m.EncryptedAttachmentCIDs[len(m.EncryptedAttachmentCIDs)-1], dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipProtocoltypes(dAtA[iNdEx:]) @@ -27777,38 +26780,6 @@ func (m *EventContext) Unmarshal(dAtA []byte) error { m.GroupPK = []byte{} } iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AttachmentCIDs", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthProtocoltypes - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthProtocoltypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AttachmentCIDs = append(m.AttachmentCIDs, make([]byte, postIndex-iNdEx)) - copy(m.AttachmentCIDs[len(m.AttachmentCIDs)-1], dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipProtocoltypes(dAtA[iNdEx:]) @@ -34964,93 +33935,61 @@ func (m *AppMetadataSend_Request) Unmarshal(dAtA []byte) error { m.Payload = []byte{} } iNdEx = postIndex - case 3: + default: + iNdEx = preIndex + skippy, err := skipProtocoltypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthProtocoltypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} + +func (m *AppMetadataSend_Reply) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProtocoltypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Reply: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Reply: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AttachmentCIDs", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthProtocoltypes - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthProtocoltypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AttachmentCIDs = append(m.AttachmentCIDs, make([]byte, postIndex-iNdEx)) - copy(m.AttachmentCIDs[len(m.AttachmentCIDs)-1], dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipProtocoltypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthProtocoltypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} - -func (m *AppMetadataSend_Reply) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Reply: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Reply: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CID", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -35254,38 +34193,6 @@ func (m *AppMessageSend_Request) Unmarshal(dAtA []byte) error { m.Payload = []byte{} } iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AttachmentCIDs", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthProtocoltypes - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthProtocoltypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AttachmentCIDs = append(m.AttachmentCIDs, make([]byte, postIndex-iNdEx)) - copy(m.AttachmentCIDs[len(m.AttachmentCIDs)-1], dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipProtocoltypes(dAtA[iNdEx:]) @@ -42581,474 +41488,6 @@ func (m *PeerList_Stream) Unmarshal(dAtA []byte) error { return nil } -func (m *AttachmentPrepare) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AttachmentPrepare: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AttachmentPrepare: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipProtocoltypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthProtocoltypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} - -func (m *AttachmentPrepare_Request) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Request: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Block", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthProtocoltypes - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthProtocoltypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Block = append(m.Block[:0], dAtA[iNdEx:postIndex]...) - if m.Block == nil { - m.Block = []byte{} - } - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field DisableEncryption", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.DisableEncryption = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipProtocoltypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthProtocoltypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} - -func (m *AttachmentPrepare_Reply) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Reply: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Reply: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AttachmentCID", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthProtocoltypes - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthProtocoltypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AttachmentCID = append(m.AttachmentCID[:0], dAtA[iNdEx:postIndex]...) - if m.AttachmentCID == nil { - m.AttachmentCID = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipProtocoltypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthProtocoltypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} - -func (m *AttachmentRetrieve) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AttachmentRetrieve: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AttachmentRetrieve: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipProtocoltypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthProtocoltypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} - -func (m *AttachmentRetrieve_Request) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Request: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AttachmentCID", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthProtocoltypes - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthProtocoltypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AttachmentCID = append(m.AttachmentCID[:0], dAtA[iNdEx:postIndex]...) - if m.AttachmentCID == nil { - m.AttachmentCID = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipProtocoltypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthProtocoltypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} - -func (m *AttachmentRetrieve_Reply) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Reply: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Reply: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Block", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProtocoltypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthProtocoltypes - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthProtocoltypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Block = append(m.Block[:0], dAtA[iNdEx:postIndex]...) - if m.Block == nil { - m.Block = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipProtocoltypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthProtocoltypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} - func (m *Progress) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/go/pkg/protocoltypes/protocoltypes.pb.gw.go b/go/pkg/protocoltypes/protocoltypes.pb.gw.go index e7b1118dc9..df1af67565 100644 --- a/go/pkg/protocoltypes/protocoltypes.pb.gw.go +++ b/go/pkg/protocoltypes/protocoltypes.pb.gw.go @@ -1131,73 +1131,6 @@ func local_request_ProtocolService_PeerList_0(ctx context.Context, marshaler run return msg, metadata, err } -func request_ProtocolService_AttachmentPrepare_0(ctx context.Context, marshaler runtime.Marshaler, client ProtocolServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var metadata runtime.ServerMetadata - stream, err := client.AttachmentPrepare(ctx) - if err != nil { - grpclog.Infof("Failed to start streaming: %v", err) - return nil, metadata, err - } - dec := marshaler.NewDecoder(req.Body) - for { - var protoReq AttachmentPrepare_Request - err = dec.Decode(&protoReq) - if err == io.EOF { - break - } - if err != nil { - grpclog.Infof("Failed to decode request: %v", err) - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err = stream.Send(&protoReq); err != nil { - if err == io.EOF { - break - } - grpclog.Infof("Failed to send request: %v", err) - return nil, metadata, err - } - } - - if err := stream.CloseSend(); err != nil { - grpclog.Infof("Failed to terminate client stream: %v", err) - return nil, metadata, err - } - header, err := stream.Header() - if err != nil { - grpclog.Infof("Failed to get header from client: %v", err) - return nil, metadata, err - } - metadata.HeaderMD = header - - msg, err := stream.CloseAndRecv() - metadata.TrailerMD = stream.Trailer() - return msg, metadata, err -} - -func request_ProtocolService_AttachmentRetrieve_0(ctx context.Context, marshaler runtime.Marshaler, client ProtocolServiceClient, req *http.Request, pathParams map[string]string) (ProtocolService_AttachmentRetrieveClient, runtime.ServerMetadata, error) { - var protoReq AttachmentRetrieve_Request - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - stream, err := client.AttachmentRetrieve(ctx, &protoReq) - if err != nil { - return nil, metadata, err - } - header, err := stream.Header() - if err != nil { - return nil, metadata, err - } - metadata.HeaderMD = header - return stream, metadata, nil -} - func request_ProtocolService_PushReceive_0(ctx context.Context, marshaler runtime.Marshaler, client ProtocolServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq PushReceive_Request var metadata runtime.ServerMetadata @@ -2082,20 +2015,6 @@ func RegisterProtocolServiceHandlerServer(ctx context.Context, mux *runtime.Serv forward_ProtocolService_PeerList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_ProtocolService_AttachmentPrepare_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") - _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - }) - - mux.Handle("POST", pattern_ProtocolService_AttachmentRetrieve_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") - _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - }) - mux.Handle("POST", pattern_ProtocolService_PushReceive_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2952,44 +2871,6 @@ func RegisterProtocolServiceHandlerClient(ctx context.Context, mux *runtime.Serv forward_ProtocolService_PeerList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_ProtocolService_AttachmentPrepare_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_ProtocolService_AttachmentPrepare_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_ProtocolService_AttachmentPrepare_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - - mux.Handle("POST", pattern_ProtocolService_AttachmentRetrieve_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_ProtocolService_AttachmentRetrieve_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_ProtocolService_AttachmentRetrieve_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) - }) - mux.Handle("POST", pattern_ProtocolService_PushReceive_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -3180,10 +3061,6 @@ var ( pattern_ProtocolService_PeerList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.protocol.v1", "ProtocolService", "PeerList"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_ProtocolService_AttachmentPrepare_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.protocol.v1", "ProtocolService", "AttachmentPrepare"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_ProtocolService_AttachmentRetrieve_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.protocol.v1", "ProtocolService", "AttachmentRetrieve"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_ProtocolService_PushReceive_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.protocol.v1", "ProtocolService", "PushReceive"}, "", runtime.AssumeColonVerbOpt(true))) pattern_ProtocolService_PushSend_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"berty.protocol.v1", "ProtocolService", "PushSend"}, "", runtime.AssumeColonVerbOpt(true))) @@ -3270,10 +3147,6 @@ var ( forward_ProtocolService_PeerList_0 = runtime.ForwardResponseMessage - forward_ProtocolService_AttachmentPrepare_0 = runtime.ForwardResponseMessage - - forward_ProtocolService_AttachmentRetrieve_0 = runtime.ForwardResponseStream - forward_ProtocolService_PushReceive_0 = runtime.ForwardResponseMessage forward_ProtocolService_PushSend_0 = runtime.ForwardResponseMessage diff --git a/go/pkg/pushtypes/pushtypes.pb.go b/go/pkg/pushtypes/pushtypes.pb.go index 326d061335..2542463256 100644 --- a/go/pkg/pushtypes/pushtypes.pb.go +++ b/go/pkg/pushtypes/pushtypes.pb.go @@ -109,49 +109,28 @@ type DecryptedPush_PushType int32 const ( DecryptedPush_Unknown DecryptedPush_PushType = 0 DecryptedPush_Message DecryptedPush_PushType = 1 - DecryptedPush_Reaction DecryptedPush_PushType = 2 - DecryptedPush_Media DecryptedPush_PushType = 3 - DecryptedPush_Photo DecryptedPush_PushType = 4 - DecryptedPush_Gif DecryptedPush_PushType = 5 - DecryptedPush_VoiceMessage DecryptedPush_PushType = 6 DecryptedPush_GroupInvitation DecryptedPush_PushType = 7 DecryptedPush_ConversationNameChanged DecryptedPush_PushType = 8 DecryptedPush_MemberNameChanged DecryptedPush_PushType = 9 - DecryptedPush_MemberPictureChanged DecryptedPush_PushType = 10 DecryptedPush_MemberDetailsChanged DecryptedPush_PushType = 11 - DecryptedPush_ReplyOptions DecryptedPush_PushType = 12 ) var DecryptedPush_PushType_name = map[int32]string{ 0: "Unknown", 1: "Message", - 2: "Reaction", - 3: "Media", - 4: "Photo", - 5: "Gif", - 6: "VoiceMessage", 7: "GroupInvitation", 8: "ConversationNameChanged", 9: "MemberNameChanged", - 10: "MemberPictureChanged", 11: "MemberDetailsChanged", - 12: "ReplyOptions", } var DecryptedPush_PushType_value = map[string]int32{ "Unknown": 0, "Message": 1, - "Reaction": 2, - "Media": 3, - "Photo": 4, - "Gif": 5, - "VoiceMessage": 6, "GroupInvitation": 7, "ConversationNameChanged": 8, "MemberNameChanged": 9, - "MemberPictureChanged": 10, "MemberDetailsChanged": 11, - "ReplyOptions": 12, } func (x DecryptedPush_PushType) String() string { @@ -994,85 +973,83 @@ func init() { func init() { proto.RegisterFile("pushtypes.proto", fileDescriptor_c5d464d796a95f49) } var fileDescriptor_c5d464d796a95f49 = []byte{ - // 1241 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x4f, 0x6f, 0x5b, 0xc5, - 0x16, 0xef, 0x4d, 0xe2, 0xc4, 0x3e, 0xb6, 0xeb, 0x9b, 0x89, 0xd3, 0x3a, 0xae, 0x9a, 0xa4, 0xee, - 0xeb, 0x7b, 0x69, 0x5e, 0x9f, 0xa3, 0x97, 0x4a, 0x20, 0x40, 0x42, 0x8a, 0xeb, 0xb6, 0x84, 0x36, - 0x89, 0xb9, 0x4d, 0x41, 0x42, 0x42, 0xe6, 0xda, 0x73, 0xec, 0x0c, 0xb9, 0x9e, 0x99, 0xde, 0x3f, - 0x4e, 0xcd, 0x8a, 0x25, 0x1f, 0x81, 0x6f, 0xc0, 0x8a, 0xef, 0x81, 0xc4, 0x86, 0x1d, 0xbb, 0x08, - 0x79, 0xcd, 0x0a, 0xb1, 0x46, 0x68, 0x66, 0xee, 0xbd, 0xb6, 0xd3, 0xa6, 0x54, 0xac, 0x32, 0xe7, - 0x77, 0x7e, 0xe7, 0x4f, 0xe6, 0xfc, 0x8e, 0xef, 0x40, 0x49, 0x46, 0xc1, 0x49, 0x38, 0x92, 0x18, - 0xd4, 0xa5, 0x2f, 0x42, 0x41, 0x8a, 0x1d, 0xf4, 0xc3, 0x51, 0x5d, 0xc1, 0xf5, 0xe1, 0xff, 0xab, - 0xe5, 0xbe, 0xe8, 0x0b, 0xed, 0xd9, 0x51, 0x27, 0x43, 0xaa, 0xfd, 0x60, 0xc1, 0x6a, 0x2b, 0x0a, - 0x4e, 0x9e, 0xa1, 0x3f, 0x64, 0x5d, 0x54, 0x7f, 0xd0, 0xdf, 0xe7, 0x3d, 0x51, 0xcd, 0xc1, 0x92, - 0x83, 0x2f, 0x22, 0x0c, 0xc2, 0xea, 0xb7, 0x16, 0x64, 0x1c, 0x94, 0xde, 0x88, 0xdc, 0x04, 0x90, - 0x51, 0xc7, 0x63, 0xdd, 0xf6, 0x29, 0x8e, 0x2a, 0xd6, 0xa6, 0xb5, 0x55, 0x70, 0x72, 0x06, 0x79, - 0x82, 0x23, 0xf2, 0x25, 0xac, 0x06, 0x91, 0x94, 0xc2, 0x0f, 0x91, 0xb6, 0x43, 0x71, 0x8a, 0xbc, - 0xad, 0x3b, 0xaa, 0xcc, 0x6d, 0xce, 0x6f, 0xe5, 0x77, 0xef, 0xd5, 0x67, 0x5a, 0xaa, 0x4f, 0x17, - 0x4e, 0xc2, 0x8e, 0x55, 0xd4, 0xf1, 0x48, 0xa2, 0xb3, 0x12, 0xbc, 0x82, 0x05, 0xb5, 0xef, 0x2c, - 0xb8, 0xf9, 0xc6, 0x30, 0x72, 0x1f, 0x8a, 0xae, 0x94, 0xed, 0x4e, 0xc4, 0xa9, 0x87, 0x6d, 0x46, - 0x75, 0x97, 0xb9, 0x46, 0x69, 0x7c, 0xbe, 0x91, 0xdf, 0x93, 0xb2, 0xa1, 0xf1, 0xfd, 0xa6, 0x93, - 0x77, 0x53, 0x83, 0x92, 0x06, 0xc0, 0xa4, 0xdd, 0xca, 0xdc, 0xa6, 0xb5, 0x75, 0x75, 0xf7, 0xf6, - 0xe5, 0xdd, 0x4e, 0x9a, 0xcc, 0x85, 0xc9, 0xb1, 0xf6, 0x87, 0x05, 0xa5, 0x99, 0xab, 0xe4, 0xb4, - 0xfa, 0x8b, 0x95, 0xde, 0x22, 0x69, 0x42, 0x16, 0xf9, 0x10, 0x3d, 0x21, 0x51, 0xf7, 0x94, 0xdf, - 0xdd, 0xba, 0x50, 0xe1, 0x28, 0x0a, 0x8f, 0x7a, 0xcf, 0x42, 0xe1, 0xe3, 0x01, 0x06, 0x81, 0xdb, - 0xc7, 0x87, 0x31, 0xdf, 0x49, 0x23, 0xc9, 0x87, 0x90, 0x95, 0x3e, 0x13, 0x3e, 0x0b, 0x47, 0x71, - 0x9f, 0xb5, 0xcb, 0xfb, 0x6c, 0xc5, 0x4c, 0x27, 0x8d, 0x21, 0x8f, 0x20, 0xe7, 0x63, 0x17, 0xd9, - 0x10, 0xfd, 0xa0, 0x32, 0xaf, 0xc7, 0xb2, 0x75, 0x79, 0x82, 0x23, 0xe9, 0xbe, 0x88, 0xd0, 0x89, - 0x03, 0x9c, 0x49, 0x68, 0x75, 0x29, 0x96, 0x44, 0xed, 0x1b, 0x0b, 0xd6, 0x2e, 0x6d, 0x9c, 0x94, - 0x21, 0xc3, 0x05, 0xef, 0x62, 0xac, 0x15, 0x63, 0x10, 0x1b, 0xe6, 0x3b, 0xe2, 0xa5, 0xee, 0xbf, - 0xe0, 0xa8, 0x23, 0xf9, 0x00, 0x4a, 0x7d, 0x5f, 0x44, 0xb2, 0xed, 0x63, 0x0f, 0x7d, 0x54, 0x11, - 0x0b, 0xca, 0xdb, 0x20, 0xe3, 0xf3, 0x8d, 0xab, 0x8f, 0x95, 0xcb, 0x49, 0x3c, 0xce, 0xd5, 0xfe, - 0x8c, 0x5d, 0x7b, 0xcf, 0x5c, 0xfc, 0xc3, 0x97, 0x52, 0x04, 0x48, 0x9b, 0x6e, 0xe8, 0xbe, 0x6d, - 0xdd, 0x9a, 0x0b, 0x6b, 0x97, 0xfe, 0xbb, 0xe4, 0x16, 0x14, 0x84, 0x46, 0x8c, 0x96, 0xe3, 0x5c, - 0x79, 0x83, 0x69, 0x0d, 0x28, 0x4a, 0x60, 0x62, 0xdb, 0x2e, 0xa5, 0xbe, 0x4e, 0x9d, 0x73, 0xf2, - 0x31, 0xb6, 0x47, 0xa9, 0x5f, 0xfb, 0x6d, 0x11, 0x8a, 0x4d, 0xec, 0xfa, 0x23, 0x19, 0x22, 0x55, - 0xc5, 0xc8, 0x3d, 0x00, 0xb7, 0xdb, 0x15, 0x11, 0x0f, 0x27, 0xfa, 0x2c, 0x8e, 0xcf, 0x37, 0x72, - 0x7b, 0x06, 0xdd, 0x6f, 0x3a, 0xb9, 0x98, 0xb0, 0x4f, 0x55, 0x89, 0x84, 0xcd, 0xdd, 0x01, 0x26, - 0x25, 0x62, 0xec, 0xd0, 0x1d, 0x20, 0x79, 0x07, 0xae, 0x77, 0x05, 0x57, 0x73, 0x71, 0x43, 0x26, - 0x78, 0x7b, 0x6a, 0x47, 0xe7, 0x35, 0x7b, 0x75, 0xda, 0xdd, 0x4a, 0xf7, 0xf5, 0x7d, 0x58, 0x9b, - 0x89, 0xa3, 0x2c, 0x90, 0x9e, 0x3b, 0x32, 0x75, 0x16, 0x74, 0xe4, 0x4c, 0xe2, 0xa6, 0xf1, 0xeb, - 0x9a, 0xdb, 0xb0, 0x3c, 0xc0, 0x41, 0x07, 0xfd, 0xe9, 0x6a, 0x19, 0x1d, 0x53, 0x32, 0x8e, 0x49, - 0x9d, 0x3a, 0xac, 0xc4, 0xdc, 0x99, 0x0a, 0x8b, 0x9a, 0x1d, 0xa7, 0x99, 0xce, 0xdd, 0x80, 0x9c, - 0x12, 0xa3, 0xd9, 0xc6, 0x25, 0xad, 0xf2, 0x3b, 0x17, 0x44, 0x3a, 0x73, 0xa3, 0x5a, 0xb2, 0x7a, - 0x1f, 0xb3, 0x32, 0x3e, 0x91, 0x06, 0x10, 0xe9, 0x8e, 0x3c, 0xe1, 0xd2, 0xb6, 0x1b, 0x86, 0x7e, - 0xd0, 0xfe, 0x2a, 0x10, 0xbc, 0x92, 0xd5, 0x97, 0x5d, 0x1e, 0x9f, 0x6f, 0xd8, 0x2d, 0xe3, 0xdd, - 0x53, 0xce, 0x8f, 0x9f, 0x1d, 0x1d, 0x3a, 0xb6, 0x9c, 0x46, 0x02, 0xc1, 0xc9, 0x0d, 0xc8, 0x51, - 0x44, 0xd9, 0xf6, 0x18, 0x3f, 0xad, 0xe4, 0x74, 0xb7, 0x59, 0x05, 0x3c, 0x65, 0xfc, 0x94, 0xdc, - 0x05, 0xdb, 0xf5, 0x7c, 0x74, 0xe9, 0xa8, 0x1d, 0xaf, 0x05, 0xad, 0xc0, 0xa6, 0xb5, 0x95, 0x75, - 0x4a, 0x31, 0x1e, 0x0b, 0x89, 0x92, 0xdb, 0x50, 0x4c, 0x46, 0x38, 0x88, 0x42, 0xa4, 0x95, 0xbc, - 0xe6, 0x25, 0x73, 0x3d, 0x50, 0x18, 0xf9, 0x1f, 0x90, 0x99, 0x61, 0x18, 0x66, 0x41, 0x33, 0x97, - 0xa7, 0x3d, 0x86, 0x7e, 0x0b, 0x0a, 0x27, 0x8c, 0x62, 0x5b, 0xfa, 0x38, 0x64, 0x78, 0x56, 0x29, - 0x6a, 0x62, 0x5e, 0x61, 0x2d, 0x03, 0xd5, 0x7e, 0xb7, 0x20, 0x9b, 0xdc, 0x0c, 0xc9, 0xc3, 0xd2, - 0x73, 0x7e, 0xca, 0xc5, 0x19, 0xb7, 0xaf, 0x28, 0x23, 0xde, 0x54, 0xdb, 0x22, 0x05, 0xc8, 0x3a, - 0xe8, 0x76, 0x55, 0x6a, 0x7b, 0x8e, 0xe4, 0x20, 0x73, 0x80, 0x94, 0xb9, 0xf6, 0xbc, 0x3a, 0xb6, - 0x4e, 0x44, 0x28, 0xec, 0x05, 0xb2, 0x04, 0xf3, 0x8f, 0x59, 0xcf, 0xce, 0x10, 0x1b, 0x0a, 0x9f, - 0x0a, 0xd6, 0x4d, 0x16, 0xdd, 0x5e, 0x24, 0x2b, 0x50, 0xd2, 0xfb, 0xb9, 0xcf, 0x87, 0x2c, 0xd4, - 0x0d, 0xda, 0x4b, 0xe4, 0x06, 0x5c, 0x7f, 0x30, 0xd5, 0xb2, 0x9a, 0xea, 0x83, 0x13, 0x97, 0xf7, - 0x91, 0xda, 0x59, 0xb2, 0x0a, 0xcb, 0x07, 0x7a, 0xe6, 0xd3, 0x70, 0x8e, 0x54, 0xa0, 0x6c, 0xe0, - 0x16, 0xeb, 0x86, 0x91, 0x9f, 0x7a, 0x60, 0xe2, 0x69, 0x62, 0xe8, 0x32, 0x2f, 0x48, 0x3c, 0x79, - 0xd5, 0x8e, 0xfe, 0x19, 0x3a, 0x92, 0xaa, 0x4c, 0x60, 0x17, 0x6a, 0xdf, 0xcf, 0x41, 0xe1, 0x91, - 0xf0, 0x07, 0x6e, 0xb2, 0x6d, 0x33, 0x62, 0xb2, 0xfe, 0x99, 0x98, 0xca, 0x90, 0x09, 0x59, 0xe8, - 0x25, 0xcb, 0x67, 0x0c, 0x52, 0x85, 0x6c, 0x10, 0x75, 0x8c, 0xc3, 0xec, 0x59, 0x6a, 0x13, 0x02, - 0x0b, 0x1d, 0x41, 0x47, 0xf1, 0x16, 0xe9, 0xf3, 0xac, 0x9c, 0x32, 0x17, 0xe4, 0x54, 0x86, 0x8c, - 0x99, 0xf8, 0xa2, 0x1e, 0xa4, 0x31, 0x5e, 0x99, 0xf2, 0xd2, 0x2b, 0x53, 0x26, 0xef, 0x5e, 0x58, - 0x7e, 0x46, 0x91, 0x87, 0xac, 0xc7, 0xd0, 0x37, 0x6a, 0x77, 0xae, 0x4d, 0xbb, 0xf7, 0x53, 0xef, - 0xf6, 0x9f, 0x16, 0x94, 0x5f, 0xf7, 0x51, 0x23, 0xd7, 0x80, 0xe8, 0x3b, 0x50, 0xc0, 0x73, 0x4e, - 0xb1, 0xc7, 0x38, 0x52, 0xfb, 0x0a, 0x59, 0x86, 0x62, 0x8a, 0x1f, 0x7c, 0x72, 0x7c, 0x6c, 0x5b, - 0xe4, 0x2e, 0xdc, 0x49, 0xa1, 0x3d, 0x29, 0x3d, 0x54, 0xd6, 0xa1, 0x50, 0x15, 0xba, 0xba, 0x5e, - 0x9c, 0xdc, 0x9e, 0x23, 0xb7, 0x61, 0x23, 0xa5, 0x3e, 0x62, 0x3e, 0x76, 0xdc, 0x00, 0x1f, 0x78, - 0x22, 0xa2, 0x46, 0x4a, 0x8c, 0xf7, 0xed, 0x79, 0xf2, 0x5f, 0xf8, 0x4f, 0x4a, 0xfa, 0x8c, 0x71, - 0x2a, 0xce, 0x82, 0xcb, 0x32, 0x2e, 0x90, 0x2a, 0x5c, 0x4b, 0xc9, 0x1f, 0x45, 0xee, 0x19, 0x32, - 0x65, 0x3e, 0x61, 0xa1, 0x9d, 0x21, 0x35, 0x58, 0x9f, 0x34, 0x36, 0x70, 0xbf, 0x16, 0xbc, 0x89, - 0xc3, 0x54, 0xb7, 0xaa, 0xd8, 0xe2, 0xf6, 0x17, 0xb0, 0xf2, 0x9a, 0x8f, 0x25, 0x59, 0x33, 0x4f, - 0xa2, 0xc4, 0x9e, 0xbe, 0x81, 0x15, 0xf3, 0xa5, 0x49, 0x5c, 0x4f, 0xc5, 0x99, 0x6d, 0x25, 0xd7, - 0x95, 0x80, 0x87, 0x4a, 0x7c, 0x9e, 0x3d, 0xb7, 0xfb, 0x93, 0x05, 0xf9, 0xa9, 0xfc, 0xa4, 0x07, - 0x30, 0x79, 0x5f, 0x91, 0x37, 0x3d, 0x86, 0x52, 0x56, 0x3d, 0x79, 0x82, 0x6d, 0xbf, 0x25, 0x5b, - 0x3d, 0xd2, 0x8e, 0x61, 0x41, 0x3d, 0x3e, 0xc8, 0xbf, 0xdf, 0x14, 0xc3, 0x69, 0x9a, 0xfb, 0x5f, - 0x7f, 0xcb, 0x93, 0xde, 0xa8, 0xb1, 0xf3, 0xe3, 0x78, 0xdd, 0xfa, 0x79, 0xbc, 0x6e, 0xfd, 0x3a, - 0x5e, 0xb7, 0x3e, 0xbf, 0x65, 0x42, 0x42, 0xec, 0x9e, 0xec, 0xe8, 0xe3, 0x4e, 0x5f, 0xec, 0xc8, - 0xd3, 0xfe, 0x4e, 0xfa, 0x0a, 0xed, 0x2c, 0xea, 0x17, 0xe6, 0xfd, 0xbf, 0x02, 0x00, 0x00, 0xff, - 0xff, 0x0d, 0x51, 0x04, 0x6d, 0x99, 0x0a, 0x00, 0x00, + // 1205 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x5d, 0x6f, 0x1b, 0x45, + 0x17, 0xee, 0xfa, 0x2b, 0xeb, 0xe3, 0xb8, 0xde, 0x4c, 0x9c, 0xd6, 0x71, 0xd5, 0x24, 0xdd, 0xbe, + 0x7d, 0x49, 0x43, 0x71, 0x44, 0x2a, 0x81, 0x00, 0x09, 0x29, 0xae, 0x5b, 0x08, 0x6d, 0x3e, 0xd8, + 0xa6, 0x42, 0x42, 0x42, 0x66, 0xed, 0x39, 0x71, 0x96, 0xac, 0x67, 0xa6, 0xfb, 0x91, 0xd4, 0x5c, + 0x71, 0xc9, 0x4f, 0xe0, 0x0f, 0x20, 0x2e, 0x10, 0xff, 0x03, 0x89, 0x1b, 0xee, 0xb8, 0x8b, 0x90, + 0x7f, 0x03, 0xd7, 0x08, 0xcd, 0xcc, 0xee, 0xda, 0x4e, 0x9b, 0x52, 0x71, 0xe5, 0x39, 0xcf, 0x79, + 0xce, 0x87, 0xe7, 0x3c, 0x47, 0x3b, 0x50, 0x13, 0x71, 0x78, 0x1c, 0x8d, 0x04, 0x86, 0x2d, 0x11, + 0xf0, 0x88, 0x93, 0x6a, 0x0f, 0x83, 0x68, 0xd4, 0x92, 0x70, 0xeb, 0xf4, 0xdd, 0x66, 0x7d, 0xc0, + 0x07, 0x5c, 0x79, 0x36, 0xe5, 0x49, 0x93, 0xec, 0x5f, 0x0c, 0x58, 0x3a, 0x88, 0xc3, 0xe3, 0xa7, + 0x18, 0x9c, 0x7a, 0x7d, 0x94, 0x3f, 0x18, 0xec, 0xb0, 0x23, 0xde, 0x2c, 0xc3, 0x9c, 0x83, 0xcf, + 0x63, 0x0c, 0xa3, 0xe6, 0xf7, 0x06, 0x14, 0x1d, 0x14, 0xfe, 0x88, 0xdc, 0x04, 0x10, 0x71, 0xcf, + 0xf7, 0xfa, 0xdd, 0x13, 0x1c, 0x35, 0x8c, 0x35, 0x63, 0x7d, 0xde, 0x29, 0x6b, 0xe4, 0x31, 0x8e, + 0xc8, 0xd7, 0xb0, 0x14, 0xc6, 0x42, 0xf0, 0x20, 0x42, 0xda, 0x8d, 0xf8, 0x09, 0xb2, 0xae, 0xea, + 0xa8, 0x91, 0x5b, 0xcb, 0xaf, 0x57, 0xb6, 0xee, 0xb5, 0x66, 0x5a, 0x6a, 0x4d, 0x17, 0x4e, 0xc3, + 0x0e, 0x65, 0xd4, 0xe1, 0x48, 0xa0, 0xb3, 0x18, 0xbe, 0x84, 0x85, 0xf6, 0x0f, 0x06, 0xdc, 0x7c, + 0x6d, 0x18, 0xb9, 0x0f, 0x55, 0x57, 0x88, 0x6e, 0x2f, 0x66, 0xd4, 0xc7, 0xae, 0x47, 0x55, 0x97, + 0xe5, 0x76, 0x6d, 0x7c, 0xbe, 0x5a, 0xd9, 0x16, 0xa2, 0xad, 0xf0, 0x9d, 0x8e, 0x53, 0x71, 0x33, + 0x83, 0x92, 0x36, 0xc0, 0xa4, 0xdd, 0x46, 0x6e, 0xcd, 0x58, 0xbf, 0xba, 0x75, 0xfb, 0xf2, 0x6e, + 0x27, 0x4d, 0x96, 0xa3, 0xf4, 0x68, 0xff, 0x65, 0x40, 0x6d, 0xe6, 0x2a, 0x19, 0x6d, 0xfe, 0x61, + 0x64, 0xb7, 0x48, 0x3a, 0x60, 0x22, 0x3b, 0x45, 0x9f, 0x0b, 0x54, 0x3d, 0x55, 0xb6, 0xd6, 0x2f, + 0x54, 0xd8, 0x8f, 0xa3, 0xfd, 0xa3, 0xa7, 0x11, 0x0f, 0x70, 0x17, 0xc3, 0xd0, 0x1d, 0xe0, 0xc3, + 0x84, 0xef, 0x64, 0x91, 0xe4, 0x63, 0x30, 0x45, 0xe0, 0xf1, 0xc0, 0x8b, 0x46, 0x49, 0x9f, 0xf6, + 0xe5, 0x7d, 0x1e, 0x24, 0x4c, 0x27, 0x8b, 0x21, 0x8f, 0xa0, 0x1c, 0x60, 0x1f, 0xbd, 0x53, 0x0c, + 0xc2, 0x46, 0x5e, 0x8d, 0x65, 0xfd, 0xf2, 0x04, 0xfb, 0xc2, 0x7d, 0x1e, 0xa3, 0x93, 0x04, 0x38, + 0x93, 0xd0, 0xe6, 0x5c, 0x22, 0x09, 0xfb, 0x3b, 0x03, 0x96, 0x2f, 0x6d, 0x9c, 0xd4, 0xa1, 0xc8, + 0x38, 0xeb, 0x63, 0xa2, 0x15, 0x6d, 0x10, 0x0b, 0xf2, 0x3d, 0xfe, 0x42, 0xf5, 0x3f, 0xef, 0xc8, + 0x23, 0xf9, 0x08, 0x6a, 0x83, 0x80, 0xc7, 0xa2, 0x1b, 0xe0, 0x11, 0x06, 0x28, 0x23, 0x0a, 0xd2, + 0xdb, 0x26, 0xe3, 0xf3, 0xd5, 0xab, 0x9f, 0x48, 0x97, 0x93, 0x7a, 0x9c, 0xab, 0x83, 0x19, 0xdb, + 0xfe, 0x40, 0x5f, 0xfc, 0xc3, 0x17, 0x82, 0x87, 0x48, 0x3b, 0x6e, 0xe4, 0xbe, 0x69, 0x5d, 0xdb, + 0x85, 0xe5, 0x4b, 0xff, 0x2e, 0xb9, 0x05, 0xf3, 0x5c, 0x21, 0x5a, 0xcb, 0x49, 0xae, 0x8a, 0xc6, + 0x94, 0x06, 0x24, 0x25, 0xd4, 0xb1, 0x5d, 0x97, 0xd2, 0x40, 0xa5, 0x2e, 0x3b, 0x95, 0x04, 0xdb, + 0xa6, 0x34, 0xb0, 0x7f, 0x2c, 0x41, 0xb5, 0x83, 0xfd, 0x60, 0x24, 0x22, 0xa4, 0xb2, 0x18, 0xb9, + 0x07, 0xe0, 0xf6, 0xfb, 0x3c, 0x66, 0xd1, 0x44, 0x9f, 0xd5, 0xf1, 0xf9, 0x6a, 0x79, 0x5b, 0xa3, + 0x3b, 0x1d, 0xa7, 0x9c, 0x10, 0x76, 0xa8, 0x2c, 0x91, 0xb2, 0x99, 0x3b, 0xc4, 0xb4, 0x44, 0x82, + 0xed, 0xb9, 0x43, 0x24, 0xef, 0xc1, 0xf5, 0x3e, 0x67, 0x72, 0x2e, 0x6e, 0xe4, 0x71, 0xd6, 0x9d, + 0xda, 0xd1, 0xbc, 0x62, 0x2f, 0x4d, 0xbb, 0x0f, 0xb2, 0x7d, 0xfd, 0x10, 0x96, 0x67, 0xe2, 0xa8, + 0x17, 0x0a, 0xdf, 0x1d, 0xe9, 0x3a, 0x05, 0x15, 0x39, 0x93, 0xb8, 0xa3, 0xfd, 0xaa, 0xe6, 0x06, + 0x2c, 0x0c, 0x71, 0xd8, 0xc3, 0x60, 0xba, 0x5a, 0x51, 0xc5, 0xd4, 0xb4, 0x63, 0x52, 0xa7, 0x05, + 0x8b, 0x09, 0x77, 0xa6, 0x42, 0x49, 0xb1, 0x93, 0x34, 0xd3, 0xb9, 0xdb, 0x50, 0x96, 0x62, 0xd4, + 0xdb, 0x38, 0xa7, 0x54, 0x7e, 0xe7, 0x82, 0x48, 0x67, 0x6e, 0x54, 0x49, 0x56, 0xed, 0xa3, 0x29, + 0x92, 0x13, 0x69, 0x03, 0x11, 0xee, 0xc8, 0xe7, 0x2e, 0xed, 0xba, 0x51, 0x14, 0x84, 0xdd, 0x6f, + 0x42, 0xce, 0x1a, 0xa6, 0xba, 0xec, 0xfa, 0xf8, 0x7c, 0xd5, 0x3a, 0xd0, 0xde, 0x6d, 0xe9, 0xfc, + 0xec, 0xe9, 0xfe, 0x9e, 0x63, 0x89, 0x69, 0x24, 0xe4, 0x8c, 0xdc, 0x80, 0x32, 0x45, 0x14, 0x5d, + 0xdf, 0x63, 0x27, 0x8d, 0xb2, 0xea, 0xd6, 0x94, 0xc0, 0x13, 0x8f, 0x9d, 0x90, 0xbb, 0x60, 0xb9, + 0x7e, 0x80, 0x2e, 0x1d, 0x75, 0x93, 0xb5, 0xa0, 0x0d, 0x58, 0x33, 0xd6, 0x4d, 0xa7, 0x96, 0xe0, + 0x89, 0x90, 0x28, 0xb9, 0x0d, 0xd5, 0x74, 0x84, 0xc3, 0x38, 0x42, 0xda, 0xa8, 0x28, 0x5e, 0x3a, + 0xd7, 0x5d, 0x89, 0x91, 0x77, 0x80, 0xcc, 0x0c, 0x43, 0x33, 0xe7, 0x15, 0x73, 0x61, 0xda, 0xa3, + 0xe9, 0xb7, 0x60, 0xfe, 0xd8, 0xa3, 0xd8, 0x15, 0x01, 0x9e, 0x7a, 0x78, 0xd6, 0xa8, 0x2a, 0x62, + 0x45, 0x62, 0x07, 0x1a, 0xb2, 0x7f, 0x36, 0xc0, 0x4c, 0x6f, 0x86, 0x54, 0x60, 0xee, 0x19, 0x3b, + 0x61, 0xfc, 0x8c, 0x59, 0x57, 0xa4, 0x91, 0x6c, 0xaa, 0x65, 0x90, 0x45, 0xa8, 0xa9, 0x05, 0xdb, + 0x61, 0xa7, 0x5e, 0xa4, 0x2a, 0x58, 0x73, 0xe4, 0x06, 0x5c, 0x7f, 0x30, 0x55, 0x53, 0x8e, 0xe5, + 0xc1, 0xb1, 0xcb, 0x06, 0x48, 0x2d, 0x93, 0x2c, 0xc1, 0xc2, 0xae, 0x1a, 0xda, 0x34, 0x5c, 0x26, + 0x0d, 0xa8, 0x6b, 0xb8, 0x83, 0x91, 0xeb, 0xf9, 0x61, 0xea, 0xa9, 0xd8, 0x05, 0x33, 0x67, 0xe5, + 0xec, 0x82, 0x99, 0xb7, 0xf2, 0x76, 0xc1, 0x2c, 0x58, 0x05, 0xbb, 0x60, 0x16, 0xad, 0xa2, 0x5d, + 0x30, 0x4b, 0x56, 0xc9, 0x2e, 0x98, 0x60, 0x81, 0xfd, 0x53, 0x0e, 0xe6, 0x1f, 0xf1, 0x60, 0xe8, + 0xa6, 0x6b, 0x32, 0xa3, 0x02, 0xe3, 0xbf, 0xa9, 0xa0, 0x0e, 0xc5, 0xc8, 0x8b, 0xfc, 0x74, 0x6b, + 0xb4, 0x41, 0x9a, 0x60, 0x86, 0x71, 0x4f, 0x3b, 0xf4, 0x82, 0x64, 0x36, 0x21, 0x50, 0xe8, 0x71, + 0x3a, 0x4a, 0xe4, 0xaf, 0xce, 0xb3, 0x3a, 0x28, 0x5e, 0xd0, 0x41, 0x1d, 0x8a, 0x7a, 0x54, 0x25, + 0x35, 0x01, 0x6d, 0xbc, 0x34, 0x9e, 0xb9, 0x97, 0xc6, 0x43, 0xde, 0xbf, 0xb0, 0xb5, 0x1e, 0x45, + 0x16, 0x79, 0x47, 0x1e, 0x06, 0x5a, 0xa6, 0xce, 0xb5, 0x69, 0xf7, 0x4e, 0xe6, 0xdd, 0xf8, 0xdb, + 0x80, 0xfa, 0xab, 0xbe, 0x46, 0xe4, 0x1a, 0x10, 0x75, 0x07, 0x12, 0x78, 0xc6, 0x28, 0x1e, 0x79, + 0x0c, 0xa9, 0x75, 0x85, 0x2c, 0x40, 0x35, 0xc3, 0x77, 0x3f, 0x3f, 0x3c, 0xb4, 0x0c, 0x72, 0x17, + 0xee, 0x64, 0xd0, 0xb6, 0x10, 0x3e, 0x4a, 0x6b, 0x8f, 0xcb, 0x0a, 0x7d, 0x55, 0x2f, 0x49, 0x6e, + 0xe5, 0xc8, 0x6d, 0x58, 0xcd, 0xa8, 0x8f, 0xbc, 0x00, 0x7b, 0x6e, 0x88, 0x0f, 0x7c, 0x1e, 0x53, + 0x2d, 0x21, 0x8f, 0x0d, 0xac, 0x3c, 0x79, 0x1b, 0xde, 0xca, 0x48, 0x5f, 0x78, 0x8c, 0xf2, 0xb3, + 0xf0, 0xb2, 0x8c, 0x05, 0xd2, 0x84, 0x6b, 0x19, 0xf9, 0xd3, 0xd8, 0x3d, 0x43, 0x4f, 0x9a, 0x8f, + 0xbd, 0xc8, 0x2a, 0x12, 0x1b, 0x56, 0x26, 0x8d, 0x0d, 0xdd, 0x6f, 0x39, 0xeb, 0xa0, 0x0c, 0x9b, + 0x14, 0x2b, 0x6d, 0x7c, 0x05, 0x8b, 0xaf, 0xf8, 0xca, 0x91, 0x65, 0xfd, 0x96, 0x49, 0xed, 0xe9, + 0x1b, 0x58, 0xd4, 0x9f, 0x88, 0xd4, 0xf5, 0x84, 0x9f, 0x59, 0x46, 0x7a, 0x5d, 0x29, 0xb8, 0x27, + 0xc5, 0xe7, 0x5b, 0xb9, 0xad, 0xdf, 0x0c, 0xa8, 0x4c, 0xe5, 0x27, 0x47, 0x00, 0x93, 0x87, 0x11, + 0x79, 0xdd, 0x2b, 0x26, 0x63, 0xb5, 0xd2, 0xb7, 0xd3, 0xc6, 0x1b, 0xb2, 0xe5, 0xeb, 0xea, 0x10, + 0x0a, 0xf2, 0xd5, 0x40, 0xfe, 0xff, 0xba, 0x18, 0x46, 0xb3, 0xdc, 0xff, 0xfb, 0x57, 0x9e, 0xf0, + 0x47, 0xed, 0xcd, 0x5f, 0xc7, 0x2b, 0xc6, 0xef, 0xe3, 0x15, 0xe3, 0xcf, 0xf1, 0x8a, 0xf1, 0xe5, + 0x2d, 0x1d, 0x12, 0x61, 0xff, 0x78, 0x53, 0x1d, 0x37, 0x07, 0x7c, 0x53, 0x9c, 0x0c, 0x36, 0xb3, + 0xe7, 0x63, 0xaf, 0xa4, 0x9e, 0x86, 0xf7, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0xad, 0x7e, 0x31, + 0x3e, 0x52, 0x0a, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/js/gen.sum b/js/gen.sum index 95f92aceb7..1d3fff6f15 100644 --- a/js/gen.sum +++ b/js/gen.sum @@ -1,4 +1,4 @@ -038786285fbde081c2458fb39723f3d8f5648330 ../api/messengertypes.proto -320f5579e3dacc05f8f2d3bc7316cd307da41952 Makefile -8a16aed5c26c8c37bb8184d49d192fdce7f26574 ../api/protocoltypes.proto +1733a4d048aa4c867fb67268dfbf799fe838b592 Makefile +18f4402787527160b0aacf5524e44cf8c3ac16ad ../api/messengertypes.proto +4b02b0a87caabb590c2c6fee507d0987e5bf5d70 ../api/protocoltypes.proto b79437c2a9f8c95bd1c75eab1972cdb22f831991 ../api/accounttypes.proto diff --git a/js/packages/api/root.pb.d.ts b/js/packages/api/root.pb.d.ts index 18ead0e706..8c97459c9f 100644 --- a/js/packages/api/root.pb.d.ts +++ b/js/packages/api/root.pb.d.ts @@ -1858,17 +1858,10 @@ export namespace berty { enum PushType { Unknown = 0, Message = 1, - Reaction = 2, - Media = 3, - Photo = 4, - Gif = 5, - VoiceMessage = 6, GroupInvitation = 7, ConversationNameChanged = 8, MemberNameChanged = 9, - MemberPictureChanged = 10, - MemberDetailsChanged = 11, - ReplyOptions = 12 + MemberDetailsChanged = 11 } } @@ -1985,10 +1978,6 @@ export namespace berty { public replicationServiceRegisterGroup(request: berty.protocol.v1.ReplicationServiceRegisterGroup.IRequest): Promise; public peerList(request: berty.protocol.v1.PeerList.IRequest, callback: berty.protocol.v1.ProtocolService.PeerListCallback): void; public peerList(request: berty.protocol.v1.PeerList.IRequest): Promise; - public attachmentPrepare(request: berty.protocol.v1.AttachmentPrepare.IRequest, callback: berty.protocol.v1.ProtocolService.AttachmentPrepareCallback): void; - public attachmentPrepare(request: berty.protocol.v1.AttachmentPrepare.IRequest): Promise; - public attachmentRetrieve(request: berty.protocol.v1.AttachmentRetrieve.IRequest, callback: berty.protocol.v1.ProtocolService.AttachmentRetrieveCallback): void; - public attachmentRetrieve(request: berty.protocol.v1.AttachmentRetrieve.IRequest): Promise; public pushReceive(request: berty.protocol.v1.PushReceive.IRequest, callback: berty.protocol.v1.ProtocolService.PushReceiveCallback): void; public pushReceive(request: berty.protocol.v1.PushReceive.IRequest): Promise; public pushSend(request: berty.protocol.v1.PushSend.IRequest, callback: berty.protocol.v1.ProtocolService.PushSendCallback): void; @@ -2077,10 +2066,6 @@ export namespace berty { type PeerListCallback = (error: (Error|null), response?: berty.protocol.v1.PeerList.Reply) => void; - type AttachmentPrepareCallback = (error: (Error|null), response?: berty.protocol.v1.AttachmentPrepare.Reply) => void; - - type AttachmentRetrieveCallback = (error: (Error|null), response?: berty.protocol.v1.AttachmentRetrieve.Reply) => void; - type PushReceiveCallback = (error: (Error|null), response?: berty.protocol.v1.PushReceive.Reply) => void; type PushSendCallback = (error: (Error|null), response?: berty.protocol.v1.PushSend.Reply) => void; @@ -2237,14 +2222,12 @@ export namespace berty { interface IGroupEnvelope { nonce?: (Uint8Array|null); event?: (Uint8Array|null); - encryptedAttachmentCids?: (Uint8Array[]|null); } class GroupEnvelope implements IGroupEnvelope { public nonce: Uint8Array; public event: Uint8Array; - public encryptedAttachmentCids: Uint8Array[]; public static create(properties?: berty.protocol.v1.IGroupEnvelope): berty.protocol.v1.GroupEnvelope; public static encode(message: berty.protocol.v1.IGroupEnvelope, writer?: $protobuf.Writer): $protobuf.Writer; public static encodeDelimited(message: berty.protocol.v1.IGroupEnvelope, writer?: $protobuf.Writer): $protobuf.Writer; @@ -2281,12 +2264,10 @@ export namespace berty { } interface IProtocolMetadata { - attachmentsSecrets?: (Uint8Array[]|null); } class ProtocolMetadata implements IProtocolMetadata { - public attachmentsSecrets: Uint8Array[]; public static create(properties?: berty.protocol.v1.IProtocolMetadata): berty.protocol.v1.ProtocolMetadata; public static encode(message: berty.protocol.v1.IProtocolMetadata, writer?: $protobuf.Writer): $protobuf.Writer; public static encodeDelimited(message: berty.protocol.v1.IProtocolMetadata, writer?: $protobuf.Writer): $protobuf.Writer; @@ -2322,7 +2303,6 @@ export namespace berty { messageHeaders?: (Uint8Array|null); message?: (Uint8Array|null); nonce?: (Uint8Array|null); - encryptedAttachmentCids?: (Uint8Array[]|null); } class MessageEnvelope implements IMessageEnvelope { @@ -2330,7 +2310,6 @@ export namespace berty { public messageHeaders: Uint8Array; public message: Uint8Array; public nonce: Uint8Array; - public encryptedAttachmentCids: Uint8Array[]; public static create(properties?: berty.protocol.v1.IMessageEnvelope): berty.protocol.v1.MessageEnvelope; public static encode(message: berty.protocol.v1.IMessageEnvelope, writer?: $protobuf.Writer): $protobuf.Writer; public static encodeDelimited(message: berty.protocol.v1.IMessageEnvelope, writer?: $protobuf.Writer): $protobuf.Writer; @@ -2346,7 +2325,6 @@ export namespace berty { id?: (Uint8Array|null); parentIds?: (Uint8Array[]|null); groupPk?: (Uint8Array|null); - attachmentCids?: (Uint8Array[]|null); } class EventContext implements IEventContext { @@ -2354,7 +2332,6 @@ export namespace berty { public id: Uint8Array; public parentIds: Uint8Array[]; public groupPk: Uint8Array; - public attachmentCids: Uint8Array[]; public static create(properties?: berty.protocol.v1.IEventContext): berty.protocol.v1.EventContext; public static encode(message: berty.protocol.v1.IEventContext, writer?: $protobuf.Writer): $protobuf.Writer; public static encodeDelimited(message: berty.protocol.v1.IEventContext, writer?: $protobuf.Writer): $protobuf.Writer; @@ -3886,14 +3863,12 @@ export namespace berty { interface IRequest { groupPk?: (Uint8Array|null); payload?: (Uint8Array|null); - attachmentCids?: (Uint8Array[]|null); } class Request implements IRequest { public groupPk: Uint8Array; public payload: Uint8Array; - public attachmentCids: Uint8Array[]; public static create(properties?: berty.protocol.v1.AppMetadataSend.IRequest): berty.protocol.v1.AppMetadataSend.Request; public static encode(message: berty.protocol.v1.AppMetadataSend.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; public static encodeDelimited(message: berty.protocol.v1.AppMetadataSend.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; @@ -3945,14 +3920,12 @@ export namespace berty { interface IRequest { groupPk?: (Uint8Array|null); payload?: (Uint8Array|null); - attachmentCids?: (Uint8Array[]|null); } class Request implements IRequest { public groupPk: Uint8Array; public payload: Uint8Array; - public attachmentCids: Uint8Array[]; public static create(properties?: berty.protocol.v1.AppMessageSend.IRequest): berty.protocol.v1.AppMessageSend.Request; public static encode(message: berty.protocol.v1.AppMessageSend.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; public static encodeDelimited(message: berty.protocol.v1.AppMessageSend.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; @@ -5390,118 +5363,6 @@ export namespace berty { BiDir = 3 } - interface IAttachmentPrepare { - } - - class AttachmentPrepare implements IAttachmentPrepare { - - public static create(properties?: berty.protocol.v1.IAttachmentPrepare): berty.protocol.v1.AttachmentPrepare; - public static encode(message: berty.protocol.v1.IAttachmentPrepare, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.protocol.v1.IAttachmentPrepare, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.protocol.v1.AttachmentPrepare; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.protocol.v1.AttachmentPrepare; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.protocol.v1.AttachmentPrepare; - public static toObject(message: berty.protocol.v1.AttachmentPrepare, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - namespace AttachmentPrepare { - - interface IRequest { - block?: (Uint8Array|null); - disableEncryption?: (boolean|null); - } - - class Request implements IRequest { - - public block: Uint8Array; - public disableEncryption: boolean; - public static create(properties?: berty.protocol.v1.AttachmentPrepare.IRequest): berty.protocol.v1.AttachmentPrepare.Request; - public static encode(message: berty.protocol.v1.AttachmentPrepare.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.protocol.v1.AttachmentPrepare.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.protocol.v1.AttachmentPrepare.Request; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.protocol.v1.AttachmentPrepare.Request; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.protocol.v1.AttachmentPrepare.Request; - public static toObject(message: berty.protocol.v1.AttachmentPrepare.Request, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - interface IReply { - attachmentCid?: (Uint8Array|null); - } - - class Reply implements IReply { - - public attachmentCid: Uint8Array; - public static create(properties?: berty.protocol.v1.AttachmentPrepare.IReply): berty.protocol.v1.AttachmentPrepare.Reply; - public static encode(message: berty.protocol.v1.AttachmentPrepare.IReply, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.protocol.v1.AttachmentPrepare.IReply, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.protocol.v1.AttachmentPrepare.Reply; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.protocol.v1.AttachmentPrepare.Reply; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.protocol.v1.AttachmentPrepare.Reply; - public static toObject(message: berty.protocol.v1.AttachmentPrepare.Reply, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - } - - interface IAttachmentRetrieve { - } - - class AttachmentRetrieve implements IAttachmentRetrieve { - - public static create(properties?: berty.protocol.v1.IAttachmentRetrieve): berty.protocol.v1.AttachmentRetrieve; - public static encode(message: berty.protocol.v1.IAttachmentRetrieve, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.protocol.v1.IAttachmentRetrieve, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.protocol.v1.AttachmentRetrieve; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.protocol.v1.AttachmentRetrieve; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.protocol.v1.AttachmentRetrieve; - public static toObject(message: berty.protocol.v1.AttachmentRetrieve, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - namespace AttachmentRetrieve { - - interface IRequest { - attachmentCid?: (Uint8Array|null); - } - - class Request implements IRequest { - - public attachmentCid: Uint8Array; - public static create(properties?: berty.protocol.v1.AttachmentRetrieve.IRequest): berty.protocol.v1.AttachmentRetrieve.Request; - public static encode(message: berty.protocol.v1.AttachmentRetrieve.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.protocol.v1.AttachmentRetrieve.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.protocol.v1.AttachmentRetrieve.Request; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.protocol.v1.AttachmentRetrieve.Request; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.protocol.v1.AttachmentRetrieve.Request; - public static toObject(message: berty.protocol.v1.AttachmentRetrieve.Request, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - interface IReply { - block?: (Uint8Array|null); - } - - class Reply implements IReply { - - public block: Uint8Array; - public static create(properties?: berty.protocol.v1.AttachmentRetrieve.IReply): berty.protocol.v1.AttachmentRetrieve.Reply; - public static encode(message: berty.protocol.v1.AttachmentRetrieve.IReply, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.protocol.v1.AttachmentRetrieve.IReply, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.protocol.v1.AttachmentRetrieve.Reply; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.protocol.v1.AttachmentRetrieve.Reply; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.protocol.v1.AttachmentRetrieve.Reply; - public static toObject(message: berty.protocol.v1.AttachmentRetrieve.Reply, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - } - interface IProgress { state?: (string|null); doing?: (string|null); @@ -6808,8 +6669,6 @@ export namespace berty { public parseDeepLink(request: berty.messenger.v1.ParseDeepLink.IRequest): Promise; public sendContactRequest(request: berty.messenger.v1.SendContactRequest.IRequest, callback: berty.messenger.v1.MessengerService.SendContactRequestCallback): void; public sendContactRequest(request: berty.messenger.v1.SendContactRequest.IRequest): Promise; - public sendReplyOptions(request: berty.messenger.v1.SendReplyOptions.IRequest, callback: berty.messenger.v1.MessengerService.SendReplyOptionsCallback): void; - public sendReplyOptions(request: berty.messenger.v1.SendReplyOptions.IRequest): Promise; public systemInfo(request: berty.messenger.v1.SystemInfo.IRequest, callback: berty.messenger.v1.MessengerService.SystemInfoCallback): void; public systemInfo(request: berty.messenger.v1.SystemInfo.IRequest): Promise; public echoTest(request: berty.messenger.v1.EchoTest.IRequest, callback: berty.messenger.v1.MessengerService.EchoTestCallback): void; @@ -6854,12 +6713,6 @@ export namespace berty { public bannerQuote(request: berty.messenger.v1.BannerQuote.IRequest): Promise; public instanceExportData(request: berty.messenger.v1.InstanceExportData.IRequest, callback: berty.messenger.v1.MessengerService.InstanceExportDataCallback): void; public instanceExportData(request: berty.messenger.v1.InstanceExportData.IRequest): Promise; - public mediaPrepare(request: berty.messenger.v1.MediaPrepare.IRequest, callback: berty.messenger.v1.MessengerService.MediaPrepareCallback): void; - public mediaPrepare(request: berty.messenger.v1.MediaPrepare.IRequest): Promise; - public mediaRetrieve(request: berty.messenger.v1.MediaRetrieve.IRequest, callback: berty.messenger.v1.MessengerService.MediaRetrieveCallback): void; - public mediaRetrieve(request: berty.messenger.v1.MediaRetrieve.IRequest): Promise; - public mediaGetRelated(request: berty.messenger.v1.MediaGetRelated.IRequest, callback: berty.messenger.v1.MessengerService.MediaGetRelatedCallback): void; - public mediaGetRelated(request: berty.messenger.v1.MediaGetRelated.IRequest): Promise; public messageSearch(request: berty.messenger.v1.MessageSearch.IRequest, callback: berty.messenger.v1.MessengerService.MessageSearchCallback): void; public messageSearch(request: berty.messenger.v1.MessageSearch.IRequest): Promise; public listMemberDevices(request: berty.messenger.v1.ListMemberDevices.IRequest, callback: berty.messenger.v1.MessengerService.ListMemberDevicesCallback): void; @@ -6876,8 +6729,6 @@ export namespace berty { public pushTokenSharedForConversation(request: berty.messenger.v1.PushTokenSharedForConversation.IRequest): Promise; public pushReceive(request: berty.messenger.v1.PushReceive.IRequest, callback: berty.messenger.v1.MessengerService.PushReceiveCallback): void; public pushReceive(request: berty.messenger.v1.PushReceive.IRequest): Promise; - public interactionReactionsForEmoji(request: berty.messenger.v1.InteractionReactionsForEmoji.IRequest, callback: berty.messenger.v1.MessengerService.InteractionReactionsForEmojiCallback): void; - public interactionReactionsForEmoji(request: berty.messenger.v1.InteractionReactionsForEmoji.IRequest): Promise; } namespace MessengerService { @@ -6894,8 +6745,6 @@ export namespace berty { type SendContactRequestCallback = (error: (Error|null), response?: berty.messenger.v1.SendContactRequest.Reply) => void; - type SendReplyOptionsCallback = (error: (Error|null), response?: berty.messenger.v1.SendReplyOptions.Reply) => void; - type SystemInfoCallback = (error: (Error|null), response?: berty.messenger.v1.SystemInfo.Reply) => void; type EchoTestCallback = (error: (Error|null), response?: berty.messenger.v1.EchoTest.Reply) => void; @@ -6940,12 +6789,6 @@ export namespace berty { type InstanceExportDataCallback = (error: (Error|null), response?: berty.messenger.v1.InstanceExportData.Reply) => void; - type MediaPrepareCallback = (error: (Error|null), response?: berty.messenger.v1.MediaPrepare.Reply) => void; - - type MediaRetrieveCallback = (error: (Error|null), response?: berty.messenger.v1.MediaRetrieve.Reply) => void; - - type MediaGetRelatedCallback = (error: (Error|null), response?: berty.messenger.v1.MediaGetRelated.Reply) => void; - type MessageSearchCallback = (error: (Error|null), response?: berty.messenger.v1.MessageSearch.Reply) => void; type ListMemberDevicesCallback = (error: (Error|null), response?: berty.messenger.v1.ListMemberDevices.Reply) => void; @@ -6961,8 +6804,6 @@ export namespace berty { type PushTokenSharedForConversationCallback = (error: (Error|null), response?: berty.messenger.v1.PushTokenSharedForConversation.Reply) => void; type PushReceiveCallback = (error: (Error|null), response?: berty.messenger.v1.PushReceive.Reply) => void; - - type InteractionReactionsForEmojiCallback = (error: (Error|null), response?: berty.messenger.v1.InteractionReactionsForEmoji.Reply) => void; } interface IPaginatedInteractionsOptions { @@ -6970,7 +6811,6 @@ export namespace berty { refCid?: (string|null); conversationPk?: (string|null); oldestToNewest?: (boolean|null); - excludeMedias?: (boolean|null); noBulk?: (boolean|null); } @@ -6980,7 +6820,6 @@ export namespace berty { public refCid: string; public conversationPk: string; public oldestToNewest: boolean; - public excludeMedias: boolean; public noBulk: boolean; public static create(properties?: berty.messenger.v1.IPaginatedInteractionsOptions): berty.messenger.v1.PaginatedInteractionsOptions; public static encode(message: berty.messenger.v1.IPaginatedInteractionsOptions, writer?: $protobuf.Writer): $protobuf.Writer; @@ -7772,61 +7611,6 @@ export namespace berty { } } - interface ISendReplyOptions { - } - - class SendReplyOptions implements ISendReplyOptions { - - public static create(properties?: berty.messenger.v1.ISendReplyOptions): berty.messenger.v1.SendReplyOptions; - public static encode(message: berty.messenger.v1.ISendReplyOptions, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.ISendReplyOptions, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.SendReplyOptions; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.SendReplyOptions; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.SendReplyOptions; - public static toObject(message: berty.messenger.v1.SendReplyOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - namespace SendReplyOptions { - - interface IRequest { - groupPk?: (Uint8Array|null); - options?: (berty.messenger.v1.AppMessage.IReplyOptions|null); - } - - class Request implements IRequest { - - public groupPk: Uint8Array; - public options?: (berty.messenger.v1.AppMessage.IReplyOptions|null); - public static create(properties?: berty.messenger.v1.SendReplyOptions.IRequest): berty.messenger.v1.SendReplyOptions.Request; - public static encode(message: berty.messenger.v1.SendReplyOptions.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.SendReplyOptions.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.SendReplyOptions.Request; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.SendReplyOptions.Request; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.SendReplyOptions.Request; - public static toObject(message: berty.messenger.v1.SendReplyOptions.Request, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - interface IReply { - } - - class Reply implements IReply { - - public static create(properties?: berty.messenger.v1.SendReplyOptions.IReply): berty.messenger.v1.SendReplyOptions.Reply; - public static encode(message: berty.messenger.v1.SendReplyOptions.IReply, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.SendReplyOptions.IReply, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.SendReplyOptions.Reply; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.SendReplyOptions.Reply; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.SendReplyOptions.Reply; - public static toObject(message: berty.messenger.v1.SendReplyOptions.Reply, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - } - interface IBertyID { publicRendezvousSeed?: (Uint8Array|null); accountPk?: (Uint8Array|null); @@ -7873,7 +7657,6 @@ export namespace berty { type?: (berty.messenger.v1.AppMessage.Type|null); payload?: (Uint8Array|null); sentDate?: (Long|null); - medias?: (berty.messenger.v1.IMedia[]|null); targetCid?: (string|null); } @@ -7882,7 +7665,6 @@ export namespace berty { public type: berty.messenger.v1.AppMessage.Type; public payload: Uint8Array; public sentDate: Long; - public medias: berty.messenger.v1.IMedia[]; public targetCid: string; public static create(properties?: berty.messenger.v1.IAppMessage): berty.messenger.v1.AppMessage; public static encode(message: berty.messenger.v1.IAppMessage, writer?: $protobuf.Writer): $protobuf.Writer; @@ -7900,12 +7682,10 @@ export namespace berty { enum Type { Undefined = 0, TypeUserMessage = 1, - TypeUserReaction = 2, TypeGroupInvitation = 3, TypeSetGroupInfo = 4, TypeSetUserInfo = 5, - TypeAcknowledge = 6, - TypeReplyOptions = 7 + TypeAcknowledge = 6 } interface IUserMessage { @@ -7926,26 +7706,6 @@ export namespace berty { public toJSON(): { [k: string]: any }; } - interface IUserReaction { - state?: (boolean|null); - emoji?: (string|null); - } - - class UserReaction implements IUserReaction { - - public state: boolean; - public emoji: string; - public static create(properties?: berty.messenger.v1.AppMessage.IUserReaction): berty.messenger.v1.AppMessage.UserReaction; - public static encode(message: berty.messenger.v1.AppMessage.IUserReaction, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.AppMessage.IUserReaction, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.AppMessage.UserReaction; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.AppMessage.UserReaction; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.AppMessage.UserReaction; - public static toObject(message: berty.messenger.v1.AppMessage.UserReaction, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - interface IGroupInvitation { link?: (string|null); } @@ -7966,13 +7726,11 @@ export namespace berty { interface ISetGroupInfo { displayName?: (string|null); - avatarCid?: (string|null); } class SetGroupInfo implements ISetGroupInfo { public displayName: string; - public avatarCid: string; public static create(properties?: berty.messenger.v1.AppMessage.ISetGroupInfo): berty.messenger.v1.AppMessage.SetGroupInfo; public static encode(message: berty.messenger.v1.AppMessage.ISetGroupInfo, writer?: $protobuf.Writer): $protobuf.Writer; public static encodeDelimited(message: berty.messenger.v1.AppMessage.ISetGroupInfo, writer?: $protobuf.Writer): $protobuf.Writer; @@ -7986,13 +7744,11 @@ export namespace berty { interface ISetUserInfo { displayName?: (string|null); - avatarCid?: (string|null); } class SetUserInfo implements ISetUserInfo { public displayName: string; - public avatarCid: string; public static create(properties?: berty.messenger.v1.AppMessage.ISetUserInfo): berty.messenger.v1.AppMessage.SetUserInfo; public static encode(message: berty.messenger.v1.AppMessage.ISetUserInfo, writer?: $protobuf.Writer): $protobuf.Writer; public static encodeDelimited(message: berty.messenger.v1.AppMessage.ISetUserInfo, writer?: $protobuf.Writer): $protobuf.Writer; @@ -8019,44 +7775,6 @@ export namespace berty { public static toObject(message: berty.messenger.v1.AppMessage.Acknowledge, options?: $protobuf.IConversionOptions): { [k: string]: any }; public toJSON(): { [k: string]: any }; } - - interface IReplyOptions { - options?: (berty.messenger.v1.IReplyOption[]|null); - } - - class ReplyOptions implements IReplyOptions { - - public options: berty.messenger.v1.IReplyOption[]; - public static create(properties?: berty.messenger.v1.AppMessage.IReplyOptions): berty.messenger.v1.AppMessage.ReplyOptions; - public static encode(message: berty.messenger.v1.AppMessage.IReplyOptions, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.AppMessage.IReplyOptions, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.AppMessage.ReplyOptions; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.AppMessage.ReplyOptions; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.AppMessage.ReplyOptions; - public static toObject(message: berty.messenger.v1.AppMessage.ReplyOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - } - - interface IReplyOption { - display?: (string|null); - payload?: (string|null); - } - - class ReplyOption implements IReplyOption { - - public display: string; - public payload: string; - public static create(properties?: berty.messenger.v1.IReplyOption): berty.messenger.v1.ReplyOption; - public static encode(message: berty.messenger.v1.IReplyOption, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.IReplyOption, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.ReplyOption; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.ReplyOption; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.ReplyOption; - public static toObject(message: berty.messenger.v1.ReplyOption, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; } interface ISystemInfo { @@ -8146,9 +7864,7 @@ export namespace berty { devices?: (Long|null); serviceTokens?: (Long|null); conversationReplicationInfo?: (Long|null); - reactions?: (Long|null); metadataEvents?: (Long|null); - medias?: (Long|null); sharedPushTokens?: (Long|null); } @@ -8162,9 +7878,7 @@ export namespace berty { public devices: Long; public serviceTokens: Long; public conversationReplicationInfo: Long; - public reactions: Long; public metadataEvents: Long; - public medias: Long; public sharedPushTokens: Long; public static create(properties?: berty.messenger.v1.SystemInfo.IDB): berty.messenger.v1.SystemInfo.DB; public static encode(message: berty.messenger.v1.SystemInfo.IDB, writer?: $protobuf.Writer): $protobuf.Writer; @@ -8239,7 +7953,6 @@ export namespace berty { link?: (string|null); serviceTokens?: (berty.messenger.v1.IServiceToken[]|null); replicateNewGroupsAutomatically?: (boolean|null); - avatarCid?: (string|null); autoSharePushTokenFlag?: (boolean|null); devicePushToken?: (Uint8Array|null); devicePushServer?: (Uint8Array|null); @@ -8255,7 +7968,6 @@ export namespace berty { public link: string; public serviceTokens: berty.messenger.v1.IServiceToken[]; public replicateNewGroupsAutomatically: boolean; - public avatarCid: string; public autoSharePushTokenFlag: boolean; public devicePushToken: Uint8Array; public devicePushServer: Uint8Array; @@ -8336,8 +8048,6 @@ export namespace berty { sentDate?: (Long|null); acknowledged?: (boolean|null); targetCid?: (string|null); - medias?: (berty.messenger.v1.IMedia[]|null); - reactions?: (berty.messenger.v1.Interaction.IReactionView[]|null); outOfStoreMessage?: (boolean|null); } @@ -8355,8 +8065,6 @@ export namespace berty { public sentDate: Long; public acknowledged: boolean; public targetCid: string; - public medias: berty.messenger.v1.IMedia[]; - public reactions: berty.messenger.v1.Interaction.IReactionView[]; public outOfStoreMessage: boolean; public static create(properties?: berty.messenger.v1.IInteraction): berty.messenger.v1.Interaction; public static encode(message: berty.messenger.v1.IInteraction, writer?: $protobuf.Writer): $protobuf.Writer; @@ -8369,82 +8077,12 @@ export namespace berty { public toJSON(): { [k: string]: any }; } - namespace Interaction { - - interface IReactionView { - emoji?: (string|null); - ownState?: (boolean|null); - count?: (Long|null); - } - - class ReactionView implements IReactionView { - - public emoji: string; - public ownState: boolean; - public count: Long; - public static create(properties?: berty.messenger.v1.Interaction.IReactionView): berty.messenger.v1.Interaction.ReactionView; - public static encode(message: berty.messenger.v1.Interaction.IReactionView, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.Interaction.IReactionView, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.Interaction.ReactionView; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.Interaction.ReactionView; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.Interaction.ReactionView; - public static toObject(message: berty.messenger.v1.Interaction.ReactionView, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - } - - interface IMedia { - cid?: (string|null); - mimeType?: (string|null); - filename?: (string|null); - displayName?: (string|null); - metadataBytes?: (Uint8Array|null); - interactionCid?: (string|null); - state?: (berty.messenger.v1.Media.State|null); - } - - class Media implements IMedia { - - public cid: string; - public mimeType: string; - public filename: string; - public displayName: string; - public metadataBytes: Uint8Array; - public interactionCid: string; - public state: berty.messenger.v1.Media.State; - public static create(properties?: berty.messenger.v1.IMedia): berty.messenger.v1.Media; - public static encode(message: berty.messenger.v1.IMedia, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.IMedia, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.Media; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.Media; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.Media; - public static toObject(message: berty.messenger.v1.Media, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - namespace Media { - - enum State { - StateUnknown = 0, - StateNeverDownloaded = 1, - StatePartiallyDownloaded = 2, - StateDownloaded = 3, - StateInCache = 4, - StateInvalidCrypto = 5, - StatePrepared = 100, - StateAttached = 101 - } - } - interface IContact { publicKey?: (string|null); conversationPublicKey?: (string|null); conversation?: (berty.messenger.v1.IConversation|null); state?: (berty.messenger.v1.Contact.State|null); displayName?: (string|null); - avatarCid?: (string|null); createdDate?: (Long|null); sentDate?: (Long|null); devices?: (berty.messenger.v1.IDevice[]|null); @@ -8458,7 +8096,6 @@ export namespace berty { public conversation?: (berty.messenger.v1.IConversation|null); public state: berty.messenger.v1.Contact.State; public displayName: string; - public avatarCid: string; public createdDate: Long; public sentDate: Long; public devices: berty.messenger.v1.IDevice[]; @@ -8499,10 +8136,7 @@ export namespace berty { accountMemberPublicKey?: (string|null); localDevicePublicKey?: (string|null); createdDate?: (Long|null); - replyOptionsCid?: (string|null); - replyOptions?: (berty.messenger.v1.IInteraction|null); replicationInfo?: (berty.messenger.v1.IConversationReplicationInfo[]|null); - avatarCid?: (string|null); infoDate?: (Long|null); sharedPushTokenIdentifier?: (string|null); localMemberPublicKey?: (string|null); @@ -8524,10 +8158,7 @@ export namespace berty { public accountMemberPublicKey: string; public localDevicePublicKey: string; public createdDate: Long; - public replyOptionsCid: string; - public replyOptions?: (berty.messenger.v1.IInteraction|null); public replicationInfo: berty.messenger.v1.IConversationReplicationInfo[]; - public avatarCid: string; public infoDate: Long; public sharedPushTokenIdentifier: string; public localMemberPublicKey: string; @@ -8582,7 +8213,6 @@ export namespace berty { interface IMember { publicKey?: (string|null); displayName?: (string|null); - avatarCid?: (string|null); conversationPublicKey?: (string|null); isMe?: (boolean|null); isCreator?: (boolean|null); @@ -8595,7 +8225,6 @@ export namespace berty { public publicKey: string; public displayName: string; - public avatarCid: string; public conversationPublicKey: string; public isMe: boolean; public isCreator: boolean; @@ -8711,7 +8340,6 @@ export namespace berty { TypeMemberUpdated = 8, TypeDeviceUpdated = 9, TypeNotified = 10, - TypeMediaUpdated = 11, TypeConversationPartialLoad = 12, TypePeerStatusConnected = 13, TypePeerStatusReconnecting = 14, @@ -8881,35 +8509,15 @@ export namespace berty { public toJSON(): { [k: string]: any }; } - interface IMediaUpdated { - media?: (berty.messenger.v1.IMedia|null); - } - - class MediaUpdated implements IMediaUpdated { - - public media?: (berty.messenger.v1.IMedia|null); - public static create(properties?: berty.messenger.v1.StreamEvent.IMediaUpdated): berty.messenger.v1.StreamEvent.MediaUpdated; - public static encode(message: berty.messenger.v1.StreamEvent.IMediaUpdated, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.StreamEvent.IMediaUpdated, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.StreamEvent.MediaUpdated; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.StreamEvent.MediaUpdated; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.StreamEvent.MediaUpdated; - public static toObject(message: berty.messenger.v1.StreamEvent.MediaUpdated, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - interface IConversationPartialLoad { conversationPk?: (string|null); interactions?: (berty.messenger.v1.IInteraction[]|null); - medias?: (berty.messenger.v1.IMedia[]|null); } class ConversationPartialLoad implements IConversationPartialLoad { public conversationPk: string; public interactions: berty.messenger.v1.IInteraction[]; - public medias: berty.messenger.v1.IMedia[]; public static create(properties?: berty.messenger.v1.StreamEvent.IConversationPartialLoad): berty.messenger.v1.StreamEvent.ConversationPartialLoad; public static encode(message: berty.messenger.v1.StreamEvent.IConversationPartialLoad, writer?: $protobuf.Writer): $protobuf.Writer; public static encodeDelimited(message: berty.messenger.v1.StreamEvent.IConversationPartialLoad, writer?: $protobuf.Writer): $protobuf.Writer; @@ -9382,13 +8990,11 @@ export namespace berty { interface IRequest { displayName?: (string|null); - avatarCid?: (string|null); } class Request implements IRequest { public displayName: string; - public avatarCid: string; public static create(properties?: berty.messenger.v1.AccountUpdate.IRequest): berty.messenger.v1.AccountUpdate.Request; public static encode(message: berty.messenger.v1.AccountUpdate.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; public static encodeDelimited(message: berty.messenger.v1.AccountUpdate.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; @@ -9612,7 +9218,6 @@ export namespace berty { type?: (berty.messenger.v1.AppMessage.Type|null); payload?: (Uint8Array|null); conversationPublicKey?: (string|null); - mediaCids?: (string[]|null); targetCid?: (string|null); metadata?: (boolean|null); } @@ -9622,7 +9227,6 @@ export namespace berty { public type: berty.messenger.v1.AppMessage.Type; public payload: Uint8Array; public conversationPublicKey: string; - public mediaCids: string[]; public targetCid: string; public metadata: boolean; public static create(properties?: berty.messenger.v1.Interact.IRequest): berty.messenger.v1.Interact.Request; @@ -9925,301 +9529,6 @@ export namespace berty { public toJSON(): { [k: string]: any }; } - interface IMediaPrepare { - } - - class MediaPrepare implements IMediaPrepare { - - public static create(properties?: berty.messenger.v1.IMediaPrepare): berty.messenger.v1.MediaPrepare; - public static encode(message: berty.messenger.v1.IMediaPrepare, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.IMediaPrepare, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.MediaPrepare; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.MediaPrepare; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.MediaPrepare; - public static toObject(message: berty.messenger.v1.MediaPrepare, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - namespace MediaPrepare { - - interface IRequest { - block?: (Uint8Array|null); - info?: (berty.messenger.v1.IMedia|null); - uri?: (string|null); - } - - class Request implements IRequest { - - public block: Uint8Array; - public info?: (berty.messenger.v1.IMedia|null); - public uri: string; - public static create(properties?: berty.messenger.v1.MediaPrepare.IRequest): berty.messenger.v1.MediaPrepare.Request; - public static encode(message: berty.messenger.v1.MediaPrepare.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.MediaPrepare.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.MediaPrepare.Request; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.MediaPrepare.Request; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.MediaPrepare.Request; - public static toObject(message: berty.messenger.v1.MediaPrepare.Request, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - interface IReply { - cid?: (string|null); - } - - class Reply implements IReply { - - public cid: string; - public static create(properties?: berty.messenger.v1.MediaPrepare.IReply): berty.messenger.v1.MediaPrepare.Reply; - public static encode(message: berty.messenger.v1.MediaPrepare.IReply, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.MediaPrepare.IReply, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.MediaPrepare.Reply; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.MediaPrepare.Reply; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.MediaPrepare.Reply; - public static toObject(message: berty.messenger.v1.MediaPrepare.Reply, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - } - - interface IMediaRetrieve { - } - - class MediaRetrieve implements IMediaRetrieve { - - public static create(properties?: berty.messenger.v1.IMediaRetrieve): berty.messenger.v1.MediaRetrieve; - public static encode(message: berty.messenger.v1.IMediaRetrieve, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.IMediaRetrieve, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.MediaRetrieve; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.MediaRetrieve; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.MediaRetrieve; - public static toObject(message: berty.messenger.v1.MediaRetrieve, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - namespace MediaRetrieve { - - interface IRequest { - cid?: (string|null); - } - - class Request implements IRequest { - - public cid: string; - public static create(properties?: berty.messenger.v1.MediaRetrieve.IRequest): berty.messenger.v1.MediaRetrieve.Request; - public static encode(message: berty.messenger.v1.MediaRetrieve.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.MediaRetrieve.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.MediaRetrieve.Request; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.MediaRetrieve.Request; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.MediaRetrieve.Request; - public static toObject(message: berty.messenger.v1.MediaRetrieve.Request, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - interface IReply { - block?: (Uint8Array|null); - info?: (berty.messenger.v1.IMedia|null); - } - - class Reply implements IReply { - - public block: Uint8Array; - public info?: (berty.messenger.v1.IMedia|null); - public static create(properties?: berty.messenger.v1.MediaRetrieve.IReply): berty.messenger.v1.MediaRetrieve.Reply; - public static encode(message: berty.messenger.v1.MediaRetrieve.IReply, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.MediaRetrieve.IReply, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.MediaRetrieve.Reply; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.MediaRetrieve.Reply; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.MediaRetrieve.Reply; - public static toObject(message: berty.messenger.v1.MediaRetrieve.Reply, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - } - - interface IMediaGetRelated { - } - - class MediaGetRelated implements IMediaGetRelated { - - public static create(properties?: berty.messenger.v1.IMediaGetRelated): berty.messenger.v1.MediaGetRelated; - public static encode(message: berty.messenger.v1.IMediaGetRelated, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.IMediaGetRelated, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.MediaGetRelated; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.MediaGetRelated; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.MediaGetRelated; - public static toObject(message: berty.messenger.v1.MediaGetRelated, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - namespace MediaGetRelated { - - interface IRequest { - cid?: (string|null); - mimeTypes?: (string[]|null); - fileNames?: (string[]|null); - } - - class Request implements IRequest { - - public cid: string; - public mimeTypes: string[]; - public fileNames: string[]; - public static create(properties?: berty.messenger.v1.MediaGetRelated.IRequest): berty.messenger.v1.MediaGetRelated.Request; - public static encode(message: berty.messenger.v1.MediaGetRelated.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.MediaGetRelated.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.MediaGetRelated.Request; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.MediaGetRelated.Request; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.MediaGetRelated.Request; - public static toObject(message: berty.messenger.v1.MediaGetRelated.Request, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - interface IReply { - media?: (berty.messenger.v1.IMedia|null); - end?: (boolean|null); - } - - class Reply implements IReply { - - public media?: (berty.messenger.v1.IMedia|null); - public end: boolean; - public static create(properties?: berty.messenger.v1.MediaGetRelated.IReply): berty.messenger.v1.MediaGetRelated.Reply; - public static encode(message: berty.messenger.v1.MediaGetRelated.IReply, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.MediaGetRelated.IReply, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.MediaGetRelated.Reply; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.MediaGetRelated.Reply; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.MediaGetRelated.Reply; - public static toObject(message: berty.messenger.v1.MediaGetRelated.Reply, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - } - - enum MediaMetadataType { - MetadataUnknown = 0, - MetadataKeyValue = 1, - MetadataAudioPreview = 2 - } - - interface IMediaMetadata { - items?: (berty.messenger.v1.IMediaMetadataItem[]|null); - } - - class MediaMetadata implements IMediaMetadata { - - public items: berty.messenger.v1.IMediaMetadataItem[]; - public static create(properties?: berty.messenger.v1.IMediaMetadata): berty.messenger.v1.MediaMetadata; - public static encode(message: berty.messenger.v1.IMediaMetadata, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.IMediaMetadata, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.MediaMetadata; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.MediaMetadata; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.MediaMetadata; - public static toObject(message: berty.messenger.v1.MediaMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - interface IMediaMetadataItem { - metadataType?: (berty.messenger.v1.MediaMetadataType|null); - payload?: (Uint8Array|null); - } - - class MediaMetadataItem implements IMediaMetadataItem { - - public metadataType: berty.messenger.v1.MediaMetadataType; - public payload: Uint8Array; - public static create(properties?: berty.messenger.v1.IMediaMetadataItem): berty.messenger.v1.MediaMetadataItem; - public static encode(message: berty.messenger.v1.IMediaMetadataItem, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.IMediaMetadataItem, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.MediaMetadataItem; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.MediaMetadataItem; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.MediaMetadataItem; - public static toObject(message: berty.messenger.v1.MediaMetadataItem, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - interface IMediaMetadataKV { - key?: (string|null); - value?: (string|null); - } - - class MediaMetadataKV implements IMediaMetadataKV { - - public key: string; - public value: string; - public static create(properties?: berty.messenger.v1.IMediaMetadataKV): berty.messenger.v1.MediaMetadataKV; - public static encode(message: berty.messenger.v1.IMediaMetadataKV, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.IMediaMetadataKV, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.MediaMetadataKV; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.MediaMetadataKV; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.MediaMetadataKV; - public static toObject(message: berty.messenger.v1.MediaMetadataKV, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - interface IAudioPreview { - volumeIntensities?: (number[]|null); - durationMs?: (number|null); - format?: (string|null); - bitrate?: (number|null); - samplingRate?: (number|null); - } - - class AudioPreview implements IAudioPreview { - - public volumeIntensities: number[]; - public durationMs: number; - public format: string; - public bitrate: number; - public samplingRate: number; - public static create(properties?: berty.messenger.v1.IAudioPreview): berty.messenger.v1.AudioPreview; - public static encode(message: berty.messenger.v1.IAudioPreview, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.IAudioPreview, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.AudioPreview; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.AudioPreview; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.AudioPreview; - public static toObject(message: berty.messenger.v1.AudioPreview, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - interface IReaction { - targetCid?: (string|null); - memberPublicKey?: (string|null); - emoji?: (string|null); - isMine?: (boolean|null); - state?: (boolean|null); - stateDate?: (Long|null); - } - - class Reaction implements IReaction { - - public targetCid: string; - public memberPublicKey: string; - public emoji: string; - public isMine: boolean; - public state: boolean; - public stateDate: Long; - public static create(properties?: berty.messenger.v1.IReaction): berty.messenger.v1.Reaction; - public static encode(message: berty.messenger.v1.IReaction, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.IReaction, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.Reaction; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.Reaction; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.Reaction; - public static toObject(message: berty.messenger.v1.Reaction, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - interface IMessageSearch { } @@ -10697,63 +10006,6 @@ export namespace berty { public toJSON(): { [k: string]: any }; } } - - interface IInteractionReactionsForEmoji { - } - - class InteractionReactionsForEmoji implements IInteractionReactionsForEmoji { - - public static create(properties?: berty.messenger.v1.IInteractionReactionsForEmoji): berty.messenger.v1.InteractionReactionsForEmoji; - public static encode(message: berty.messenger.v1.IInteractionReactionsForEmoji, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.IInteractionReactionsForEmoji, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.InteractionReactionsForEmoji; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.InteractionReactionsForEmoji; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.InteractionReactionsForEmoji; - public static toObject(message: berty.messenger.v1.InteractionReactionsForEmoji, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - namespace InteractionReactionsForEmoji { - - interface IRequest { - interactionCid?: (string|null); - emoji?: (string|null); - } - - class Request implements IRequest { - - public interactionCid: string; - public emoji: string; - public static create(properties?: berty.messenger.v1.InteractionReactionsForEmoji.IRequest): berty.messenger.v1.InteractionReactionsForEmoji.Request; - public static encode(message: berty.messenger.v1.InteractionReactionsForEmoji.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.InteractionReactionsForEmoji.IRequest, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.InteractionReactionsForEmoji.Request; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.InteractionReactionsForEmoji.Request; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.InteractionReactionsForEmoji.Request; - public static toObject(message: berty.messenger.v1.InteractionReactionsForEmoji.Request, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - - interface IReply { - reactions?: (berty.messenger.v1.IReaction[]|null); - } - - class Reply implements IReply { - - public reactions: berty.messenger.v1.IReaction[]; - public static create(properties?: berty.messenger.v1.InteractionReactionsForEmoji.IReply): berty.messenger.v1.InteractionReactionsForEmoji.Reply; - public static encode(message: berty.messenger.v1.InteractionReactionsForEmoji.IReply, writer?: $protobuf.Writer): $protobuf.Writer; - public static encodeDelimited(message: berty.messenger.v1.InteractionReactionsForEmoji.IReply, writer?: $protobuf.Writer): $protobuf.Writer; - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): berty.messenger.v1.InteractionReactionsForEmoji.Reply; - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): berty.messenger.v1.InteractionReactionsForEmoji.Reply; - public static verify(message: { [k: string]: any }): (string|null); - public static fromObject(object: { [k: string]: any }): berty.messenger.v1.InteractionReactionsForEmoji.Reply; - public static toObject(message: berty.messenger.v1.InteractionReactionsForEmoji.Reply, options?: $protobuf.IConversionOptions): { [k: string]: any }; - public toJSON(): { [k: string]: any }; - } - } } } } diff --git a/js/packages/api/root.pb.js b/js/packages/api/root.pb.js index 60f5244c0d..def49f7c0b 100644 --- a/js/packages/api/root.pb.js +++ b/js/packages/api/root.pb.js @@ -1137,18 +1137,37 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ values: { Unknown: 0, Message: 1, - Reaction: 2, - Media: 3, - Photo: 4, - Gif: 5, - VoiceMessage: 6, GroupInvitation: 7, ConversationNameChanged: 8, MemberNameChanged: 9, - MemberPictureChanged: 10, - MemberDetailsChanged: 11, - ReplyOptions: 12 - } + MemberDetailsChanged: 11 + }, + reserved: [ + [ + 2, + 2 + ], + [ + 3, + 3 + ], + [ + 4, + 4 + ], + [ + 5, + 5 + ], + [ + 6, + 6 + ], + [ + 10, + 10 + ] + ] } } }, @@ -1356,16 +1375,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ requestType: "PeerList.Request", responseType: "PeerList.Reply" }, - AttachmentPrepare: { - requestType: "AttachmentPrepare.Request", - requestStream: true, - responseType: "AttachmentPrepare.Reply" - }, - AttachmentRetrieve: { - requestType: "AttachmentRetrieve.Request", - responseType: "AttachmentRetrieve.Reply", - responseStream: true - }, PushReceive: { requestType: "PushReceive.Request", responseType: "PushReceive.Reply" @@ -1543,16 +1552,14 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ event: { type: "bytes", id: 2 - }, - encryptedAttachmentCids: { - rule: "repeated", - type: "bytes", - id: 3, - options: { - "(gogoproto.customname)": "EncryptedAttachmentCIDs" - } } - } + }, + reserved: [ + [ + 3, + 3 + ] + ] }, MessageHeaders: { fields: { @@ -1579,13 +1586,13 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ } }, ProtocolMetadata: { - fields: { - attachmentsSecrets: { - rule: "repeated", - type: "bytes", - id: 1 - } - } + fields: {}, + reserved: [ + [ + 1, + 1 + ] + ] }, EncryptedMessage: { fields: { @@ -1612,16 +1619,14 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ nonce: { type: "bytes", id: 3 - }, - encryptedAttachmentCids: { - rule: "repeated", - type: "bytes", - id: 4, - options: { - "(gogoproto.customname)": "EncryptedAttachmentCIDs" - } } - } + }, + reserved: [ + [ + 4, + 4 + ] + ] }, EventContext: { fields: { @@ -1646,16 +1651,14 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ options: { "(gogoproto.customname)": "GroupPK" } - }, - attachmentCids: { - rule: "repeated", - type: "bytes", - id: 4, - options: { - "(gogoproto.customname)": "AttachmentCIDs" - } } - } + }, + reserved: [ + [ + 4, + 4 + ] + ] }, AppMetadata: { fields: { @@ -2507,16 +2510,14 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ payload: { type: "bytes", id: 2 - }, - attachmentCids: { - rule: "repeated", - type: "bytes", - id: 3, - options: { - "(gogoproto.customname)": "AttachmentCIDs" - } } - } + }, + reserved: [ + [ + 3, + 3 + ] + ] }, Reply: { fields: { @@ -2546,16 +2547,14 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ payload: { type: "bytes", id: 2 - }, - attachmentCids: { - rule: "repeated", - type: "bytes", - id: 3, - options: { - "(gogoproto.customname)": "AttachmentCIDs" - } } - } + }, + reserved: [ + [ + 3, + 3 + ] + ] }, Reply: { fields: { @@ -3562,58 +3561,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ BiDir: 3 } }, - AttachmentPrepare: { - fields: {}, - nested: { - Request: { - fields: { - block: { - type: "bytes", - id: 1 - }, - disableEncryption: { - type: "bool", - id: 2 - } - } - }, - Reply: { - fields: { - attachmentCid: { - type: "bytes", - id: 1, - options: { - "(gogoproto.customname)": "AttachmentCID" - } - } - } - } - } - }, - AttachmentRetrieve: { - fields: {}, - nested: { - Request: { - fields: { - attachmentCid: { - type: "bytes", - id: 1, - options: { - "(gogoproto.customname)": "AttachmentCID" - } - } - } - }, - Reply: { - fields: { - block: { - type: "bytes", - id: 2 - } - } - } - } - }, Progress: { fields: { state: { @@ -4551,10 +4498,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ requestType: "SendContactRequest.Request", responseType: "SendContactRequest.Reply" }, - SendReplyOptions: { - requestType: "SendReplyOptions.Request", - responseType: "SendReplyOptions.Reply" - }, SystemInfo: { requestType: "SystemInfo.Request", responseType: "SystemInfo.Reply" @@ -4650,20 +4593,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ responseType: "InstanceExportData.Reply", responseStream: true }, - MediaPrepare: { - requestType: "MediaPrepare.Request", - requestStream: true, - responseType: "MediaPrepare.Reply" - }, - MediaRetrieve: { - requestType: "MediaRetrieve.Request", - responseType: "MediaRetrieve.Reply", - responseStream: true - }, - MediaGetRelated: { - requestType: "MediaGetRelated.Request", - responseType: "MediaGetRelated.Reply" - }, MessageSearch: { requestType: "MessageSearch.Request", responseType: "MessageSearch.Reply" @@ -4698,10 +4627,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ PushReceive: { requestType: "PushReceive.Request", responseType: "PushReceive.Reply" - }, - InteractionReactionsForEmoji: { - requestType: "InteractionReactionsForEmoji.Request", - responseType: "InteractionReactionsForEmoji.Reply" } } }, @@ -4729,15 +4654,17 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ type: "bool", id: 4 }, - excludeMedias: { - type: "bool", - id: 5 - }, noBulk: { type: "bool", id: 6 } - } + }, + reserved: [ + [ + 5, + 5 + ] + ] }, ConversationOpen: { fields: {}, @@ -5169,29 +5096,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ } } }, - SendReplyOptions: { - fields: {}, - nested: { - Request: { - fields: { - groupPk: { - type: "bytes", - id: 1, - options: { - "(gogoproto.customname)": "GroupPK" - } - }, - options: { - type: "AppMessage.ReplyOptions", - id: 2 - } - } - }, - Reply: { - fields: {} - } - } - }, BertyID: { fields: { publicRendezvousSeed: { @@ -5240,11 +5144,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ "(gogoproto.jsontag)": "sentDate" } }, - medias: { - rule: "repeated", - type: "Media", - id: 4 - }, targetCid: { type: "string", id: 5, @@ -5253,18 +5152,32 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ } } }, + reserved: [ + [ + 4, + 4 + ] + ], nested: { Type: { values: { Undefined: 0, TypeUserMessage: 1, - TypeUserReaction: 2, TypeGroupInvitation: 3, TypeSetGroupInfo: 4, TypeSetUserInfo: 5, - TypeAcknowledge: 6, - TypeReplyOptions: 7 - } + TypeAcknowledge: 6 + }, + reserved: [ + [ + 2, + 2 + ], + [ + 7, + 7 + ] + ] }, UserMessage: { fields: { @@ -5274,18 +5187,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ } } }, - UserReaction: { - fields: { - state: { - type: "bool", - id: 1 - }, - emoji: { - type: "string", - id: 2 - } - } - }, GroupInvitation: { fields: { link: { @@ -5299,51 +5200,31 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ displayName: { type: "string", id: 1 - }, - avatarCid: { - type: "string", - id: 2 } - } + }, + reserved: [ + [ + 2, + 2 + ] + ] }, SetUserInfo: { fields: { displayName: { type: "string", id: 1 - }, - avatarCid: { - type: "string", - id: 2, - options: { - "(gogoproto.customname)": "AvatarCID" - } } - } + }, + reserved: [ + [ + 2, + 2 + ] + ] }, Acknowledge: { fields: {} - }, - ReplyOptions: { - fields: { - options: { - rule: "repeated", - type: "ReplyOption", - id: 1 - } - } - } - } - }, - ReplyOption: { - fields: { - display: { - type: "string", - id: 1 - }, - payload: { - type: "string", - id: 2 } } }, @@ -5423,23 +5304,21 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ type: "int64", id: 8 }, - reactions: { - type: "int64", - id: 9 - }, metadataEvents: { type: "int64", id: 10 }, - medias: { - type: "int64", - id: 11 - }, sharedPushTokens: { type: "int64", id: 12 } - } + }, + reserved: [ + [ + 11, + 11 + ] + ] } } }, @@ -5495,14 +5374,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ "(gogoproto.moretags)": "gorm:default:true" } }, - avatarCid: { - type: "string", - id: 7, - options: { - "(gogoproto.moretags)": "gorm:column:avatar_cid", - "(gogoproto.customname)": "AvatarCID" - } - }, autoSharePushTokenFlag: { type: "bool", id: 8 @@ -5527,7 +5398,13 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ type: "bool", id: 13 } - } + }, + reserved: [ + [ + 7, + 7 + ] + ] }, ServiceToken: { fields: { @@ -5664,98 +5541,23 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ "(gogoproto.customname)": "TargetCID" } }, - medias: { - rule: "repeated", - type: "Media", - id: 15 - }, - reactions: { - rule: "repeated", - type: "ReactionView", - id: 16, - options: { - "(gogoproto.moretags)": "gorm:-" - } - }, outOfStoreMessage: { type: "bool", id: 17 } }, - nested: { - ReactionView: { - fields: { - emoji: { - type: "string", - id: 1 - }, - ownState: { - type: "bool", - id: 2 - }, - count: { - type: "uint64", - id: 3 - } - } - } - } + reserved: [ + [ + 15, + 15 + ], + [ + 16, + 16 + ] + ] }, - Media: { - fields: { - cid: { - type: "string", - id: 1, - options: { - "(gogoproto.moretags)": "gorm:primaryKey;column:cid", - "(gogoproto.customname)": "CID" - } - }, - mimeType: { - type: "string", - id: 2 - }, - filename: { - type: "string", - id: 3 - }, - displayName: { - type: "string", - id: 4 - }, - metadataBytes: { - type: "bytes", - id: 6 - }, - interactionCid: { - type: "string", - id: 100, - options: { - "(gogoproto.moretags)": "gorm:index;column:interaction_cid", - "(gogoproto.customname)": "InteractionCID" - } - }, - state: { - type: "State", - id: 103 - } - }, - nested: { - State: { - values: { - StateUnknown: 0, - StateNeverDownloaded: 1, - StatePartiallyDownloaded: 2, - StateDownloaded: 3, - StateInCache: 4, - StateInvalidCrypto: 5, - StatePrepared: 100, - StateAttached: 101 - } - } - } - }, - Contact: { + Contact: { fields: { publicKey: { type: "string", @@ -5780,14 +5582,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ type: "string", id: 5 }, - avatarCid: { - type: "string", - id: 9, - options: { - "(gogoproto.moretags)": "gorm:column:avatar_cid", - "(gogoproto.customname)": "AvatarCID" - } - }, createdDate: { type: "int64", id: 7 @@ -5809,6 +5603,12 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ id: 10 } }, + reserved: [ + [ + 9, + 9 + ] + ], nested: { State: { values: { @@ -5879,21 +5679,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ type: "int64", id: 13 }, - replyOptionsCid: { - type: "string", - id: 14, - options: { - "(gogoproto.moretags)": "gorm:column:reply_options_cid", - "(gogoproto.customname)": "ReplyOptionsCID" - } - }, - replyOptions: { - type: "Interaction", - id: 15, - options: { - "(gogoproto.customname)": "ReplyOptions" - } - }, replicationInfo: { rule: "repeated", type: "ConversationReplicationInfo", @@ -5902,14 +5687,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ "(gogoproto.moretags)": "gorm:foreignKey:ConversationPublicKey" } }, - avatarCid: { - type: "string", - id: 17, - options: { - "(gogoproto.moretags)": "gorm:column:avatar_cid", - "(gogoproto.customname)": "AvatarCID" - } - }, infoDate: { type: "int64", id: 18 @@ -5927,6 +5704,20 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ id: 21 } }, + reserved: [ + [ + 14, + 14 + ], + [ + 15, + 15 + ], + [ + 17, + 17 + ] + ], nested: { Type: { values: { @@ -5982,14 +5773,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ type: "string", id: 2 }, - avatarCid: { - type: "string", - id: 6, - options: { - "(gogoproto.moretags)": "gorm:column:avatar_cid", - "(gogoproto.customname)": "AvatarCID" - } - }, conversationPublicKey: { type: "string", id: 3, @@ -6021,7 +5804,13 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ "(gogoproto.moretags)": "gorm:foreignKey:MemberPublicKey;references:PublicKey" } } - } + }, + reserved: [ + [ + 6, + 6 + ] + ] }, Device: { fields: { @@ -6110,13 +5899,18 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ TypeMemberUpdated: 8, TypeDeviceUpdated: 9, TypeNotified: 10, - TypeMediaUpdated: 11, TypeConversationPartialLoad: 12, TypePeerStatusConnected: 13, TypePeerStatusReconnecting: 14, TypePeerStatusDisconnected: 15, TypePeerStatusGroupAssociated: 16 - } + }, + reserved: [ + [ + 11, + 11 + ] + ] }, ConversationUpdated: { fields: { @@ -6192,14 +5986,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ ListEnded: { fields: {} }, - MediaUpdated: { - fields: { - media: { - type: "Media", - id: 1 - } - } - }, ConversationPartialLoad: { fields: { conversationPk: { @@ -6213,13 +5999,14 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ rule: "repeated", type: "Interaction", id: 2 - }, - medias: { - rule: "repeated", - type: "Media", - id: 3 } - } + }, + reserved: [ + [ + 3, + 3 + ] + ] }, Notified: { fields: { @@ -6470,16 +6257,14 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ displayName: { type: "string", id: 1 - }, - avatarCid: { - type: "string", - id: 2, - options: { - "(gogoproto.moretags)": "gorm:column:avatar_cid", - "(gogoproto.customname)": "AvatarCID" - } } - } + }, + reserved: [ + [ + 2, + 2 + ] + ] }, Reply: { fields: {} @@ -6579,11 +6364,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ type: "string", id: 3 }, - mediaCids: { - rule: "repeated", - type: "string", - id: 4 - }, targetCid: { type: "string", id: 5, @@ -6595,7 +6375,13 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ type: "bool", id: 6 } - } + }, + reserved: [ + [ + 4, + 4 + ] + ] }, Reply: { fields: { @@ -6739,207 +6525,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ } } }, - MediaPrepare: { - fields: {}, - nested: { - Request: { - fields: { - block: { - type: "bytes", - id: 1 - }, - info: { - type: "Media", - id: 2 - }, - uri: { - type: "string", - id: 3 - } - } - }, - Reply: { - fields: { - cid: { - type: "string", - id: 1 - } - } - } - } - }, - MediaRetrieve: { - fields: {}, - nested: { - Request: { - fields: { - cid: { - type: "string", - id: 1 - } - } - }, - Reply: { - fields: { - block: { - type: "bytes", - id: 1 - }, - info: { - type: "Media", - id: 2 - } - } - } - } - }, - MediaGetRelated: { - fields: {}, - nested: { - Request: { - fields: { - cid: { - type: "string", - id: 1, - options: { - "(gogoproto.customname)": "CID" - } - }, - mimeTypes: { - rule: "repeated", - type: "string", - id: 3 - }, - fileNames: { - rule: "repeated", - type: "string", - id: 4 - } - }, - reserved: [ - [ - 2, - 2 - ] - ] - }, - Reply: { - fields: { - media: { - type: "Media", - id: 1 - }, - end: { - type: "bool", - id: 2 - } - } - } - } - }, - MediaMetadataType: { - values: { - MetadataUnknown: 0, - MetadataKeyValue: 1, - MetadataAudioPreview: 2 - } - }, - MediaMetadata: { - fields: { - items: { - rule: "repeated", - type: "MediaMetadataItem", - id: 1 - } - } - }, - MediaMetadataItem: { - fields: { - metadataType: { - type: "MediaMetadataType", - id: 1 - }, - payload: { - type: "bytes", - id: 2 - } - } - }, - MediaMetadataKV: { - fields: { - key: { - type: "string", - id: 1 - }, - value: { - type: "string", - id: 2 - } - } - }, - AudioPreview: { - fields: { - volumeIntensities: { - rule: "repeated", - type: "uint32", - id: 1 - }, - durationMs: { - type: "uint32", - id: 2 - }, - format: { - type: "string", - id: 3 - }, - bitrate: { - type: "uint32", - id: 4 - }, - samplingRate: { - type: "uint32", - id: 5 - } - } - }, - Reaction: { - fields: { - targetCid: { - type: "string", - id: 2, - options: { - "(gogoproto.moretags)": "gorm:column:target_cid;primaryKey", - "(gogoproto.customname)": "TargetCID" - } - }, - memberPublicKey: { - type: "string", - id: 3, - options: { - "(gogoproto.moretags)": "gorm:primaryKey" - } - }, - emoji: { - type: "string", - id: 4, - options: { - "(gogoproto.moretags)": "gorm:primaryKey" - } - }, - isMine: { - type: "bool", - id: 5 - }, - state: { - type: "bool", - id: 6 - }, - stateDate: { - type: "int64", - id: 7 - } - } - }, MessageSearch: { fields: {}, nested: { @@ -7177,35 +6762,6 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $ } } } - }, - InteractionReactionsForEmoji: { - fields: {}, - nested: { - Request: { - fields: { - interactionCid: { - type: "string", - id: 1, - options: { - "(gogoproto.customname)": "InteractionCID" - } - }, - emoji: { - type: "string", - id: 2 - } - } - }, - Reply: { - fields: { - reactions: { - rule: "repeated", - type: "Reaction", - id: 1 - } - } - } - } } } } diff --git a/js/packages/components/chat/MessageList.tsx b/js/packages/components/chat/MessageList.tsx index 0cf5f7aa80..22e48b04d9 100644 --- a/js/packages/components/chat/MessageList.tsx +++ b/js/packages/components/chat/MessageList.tsx @@ -134,18 +134,11 @@ export const MessageList: React.FC<{ const conversation = useConversation(id) const messengerClient = useMessengerClient() const members = useConversationMembersDict(id) - const rawMessages = useConversationInteractions(id) - const messages = useMemo( - () => - rawMessages.filter( - message => message.type !== beapi.messenger.AppMessage.Type.TypeReplyOptions, - ), - [rawMessages], - ) + const messages = useConversationInteractions(id) const oldestMessage = useMemo(() => messages[messages.length - 1], [messages]) const [fetchingFrom, setFetchingFrom] = useState(null) - const [fetchedFirst, setFetchedFirst] = useState(rawMessages.length === 0) + const [fetchedFirst, setFetchedFirst] = useState(messages.length === 0) const BeginningOfTimeComponent = conversation?.type === beapi.messenger.Conversation.Type.ContactType ? InfosChat diff --git a/js/packages/components/chat/message/user-message/user-message-box/UserMessageBox.tsx b/js/packages/components/chat/message/user-message/user-message-box/UserMessageBox.tsx index c9da26dc45..e23f39e425 100644 --- a/js/packages/components/chat/message/user-message/user-message-box/UserMessageBox.tsx +++ b/js/packages/components/chat/message/user-message/user-message-box/UserMessageBox.tsx @@ -15,7 +15,7 @@ export const UserMessageBox: React.FC = ({ const isHighlight = highlightCid === inte.cid return ( - + - visualURI?: String -} - -interface PlayerState { - player: PlayerType - metadata: PlayerItemMetadata - next?: { cid: string; mimeType: string } -} - -const INITIAL_PLAYER_METADATA: PlayerItemMetadata = { - id: '', - title: '', - subtitle: '', - duration: '', - waveform: [], - visualURI: '', -} - -const INITIAL_PLAYER_VALUE: PlayerState = { - player: undefined, - metadata: INITIAL_PLAYER_METADATA, -} - -const MusicPlayerContext = createContext<{ - player: PlayerState - load: (cid: string, mimeType: string) => void - unload: () => void - handlePlayPause: () => void - loading: boolean - playing: boolean - currentTime: number -}>({ - player: INITIAL_PLAYER_VALUE, - load: () => {}, - unload: () => {}, - handlePlayPause: () => {}, - loading: false, - playing: false, - currentTime: 0, -}) - -export const MusicPlayerProvider: React.FC = ({ children }) => { - const [player, setPlayer] = useState(INITIAL_PLAYER_VALUE) - const protocolClient = useSelector(selectProtocolClient) - const [loading, setLoading] = useState(false) - const [playing, setPlaying] = useState(false) - - const [refresh, setRefresh] = useState(0) - - const { next } = player - - useEffect(() => { - const intval = setInterval(() => setRefresh(prev => prev + 1), 100) - return () => clearInterval(intval) - }, []) - - useEffect(() => { - if (!next) { - return - } - - if (!next.cid || !protocolClient) { - return - } - - let canceled = false - ;(async () => { - try { - if (canceled) { - return - } - setLoading(true) - setPlayer({ - player: undefined, - metadata: { - id: next.cid, - }, - next, - }) - const src = await getSource(protocolClient, next.cid) - if (canceled) { - return - } - - const player = new Player(`data:${next.mimeType};base64,${src}`) - player.play(err => { - if (!err && !canceled) { - setPlayer({ - player, - metadata: { - id: next.cid, - }, - next: undefined, - }) - setLoading(false) - } - }) - } catch (e) { - if (e instanceof EndError) { - return - } - - console.warn('error while fetching next player item', e) - } - })() - - return () => { - canceled = true - } - }, [next, protocolClient]) - - useEffect(() => { - if (!player.player) { - return - } - if (playing != player.player.isPlaying) { - setPlaying(player.player.isPlaying) - } - }, [playing, player.player, refresh]) - - useEffect(() => { - const p = player.player - if (p) { - return () => p.destroy() - } - }, [player.player]) - - const unload = React.useCallback(() => { - setPlayer(INITIAL_PLAYER_VALUE) - }, []) - - const load = React.useCallback( - (cid: string, mimeType: string) => { - setPlayer({ - ...player, - next: { cid, mimeType }, - }) - }, - [player], - ) - - const handlePlayPause = React.useCallback(() => { - if (!player.player) { - return - } - - player.player.playPause((err, paused) => { - if (!err) { - setPlaying(!paused) - } - }) - }, [player.player]) - - return ( - - {children} - - ) -} diff --git a/js/packages/grpc-bridge/gen-clients.js b/js/packages/grpc-bridge/gen-clients.js index e809715823..38495eca69 100644 --- a/js/packages/grpc-bridge/gen-clients.js +++ b/js/packages/grpc-bridge/gen-clients.js @@ -4,7 +4,7 @@ const uncap = str => str.slice(0, 1).toLowerCase() + str.slice(1) console.log("import beapi from '@berty/api'") -console.log("\nimport { UnaryType, RequestStreamType, ResponseStreamType } from './types'") +console.log("\nimport { UnaryType, ResponseStreamType } from './types'") const services = [ 'berty.protocol.v1.ProtocolService', diff --git a/js/packages/grpc-bridge/welsh-clients.gen.ts b/js/packages/grpc-bridge/welsh-clients.gen.ts index 40b4b0a71c..79838f9e0c 100644 --- a/js/packages/grpc-bridge/welsh-clients.gen.ts +++ b/js/packages/grpc-bridge/welsh-clients.gen.ts @@ -1,6 +1,6 @@ import beapi from '@berty/api' -import { UnaryType, RequestStreamType, ResponseStreamType } from './types' +import { UnaryType, ResponseStreamType } from './types' export type ServiceClientType = S extends beapi.protocol.ProtocolService ? WelshProtocolServiceClient @@ -61,8 +61,6 @@ export interface WelshProtocolServiceClient { beapi.protocol.ProtocolService['replicationServiceRegisterGroup'] > peerList: UnaryType - attachmentPrepare: RequestStreamType - attachmentRetrieve: ResponseStreamType pushReceive: UnaryType pushSend: UnaryType pushShareToken: UnaryType @@ -110,7 +108,6 @@ export interface WelshMessengerServiceClient { devStreamLogs: ResponseStreamType parseDeepLink: UnaryType sendContactRequest: UnaryType - sendReplyOptions: UnaryType systemInfo: UnaryType echoTest: ResponseStreamType echoDuplexTest: never @@ -135,9 +132,6 @@ export interface WelshMessengerServiceClient { replicationSetAutoEnable: UnaryType bannerQuote: UnaryType instanceExportData: ResponseStreamType - mediaPrepare: RequestStreamType - mediaRetrieve: ResponseStreamType - mediaGetRelated: UnaryType messageSearch: UnaryType listMemberDevices: ResponseStreamType tyberHostSearch: ResponseStreamType @@ -150,9 +144,6 @@ export interface WelshMessengerServiceClient { beapi.messenger.MessengerService['pushTokenSharedForConversation'] > pushReceive: UnaryType - interactionReactionsForEmoji: UnaryType< - beapi.messenger.MessengerService['interactionReactionsForEmoji'] - > } export interface WelshBridgeServiceClient { diff --git a/js/packages/hooks/methods/methods.gen.ts b/js/packages/hooks/methods/methods.gen.ts index 20a5fc6976..7787d86d6f 100644 --- a/js/packages/hooks/methods/methods.gen.ts +++ b/js/packages/hooks/methods/methods.gen.ts @@ -40,14 +40,6 @@ export type MessengerMethodsHooks = { called: boolean loading: boolean } - useSendReplyOptions: () => { - error: any - call: (req?: beapi.messenger.SendReplyOptions.IRequest) => void - reply: beapi.messenger.SendReplyOptions.IReply | null - done: boolean - called: boolean - loading: boolean - } useSystemInfo: () => { error: any call: (req?: beapi.messenger.SystemInfo.IRequest) => void @@ -176,14 +168,6 @@ export type MessengerMethodsHooks = { called: boolean loading: boolean } - useMediaGetRelated: () => { - error: any - call: (req?: beapi.messenger.MediaGetRelated.IRequest) => void - reply: beapi.messenger.MediaGetRelated.IReply | null - done: boolean - called: boolean - loading: boolean - } useMessageSearch: () => { error: any call: (req?: beapi.messenger.MessageSearch.IRequest) => void @@ -224,14 +208,6 @@ export type MessengerMethodsHooks = { called: boolean loading: boolean } - useInteractionReactionsForEmoji: () => { - error: any - call: (req?: beapi.messenger.InteractionReactionsForEmoji.IRequest) => void - reply: beapi.messenger.InteractionReactionsForEmoji.IReply | null - done: boolean - called: boolean - loading: boolean - } } export type ProtocolMethodsHooks = { useInstanceGetConfiguration: () => { diff --git a/js/packages/messenger-app/App.tsx b/js/packages/messenger-app/App.tsx index 0f57b39fdc..82945b3996 100644 --- a/js/packages/messenger-app/App.tsx +++ b/js/packages/messenger-app/App.tsx @@ -15,7 +15,6 @@ import RegularOpenSans from '@berty/assets/font/OpenSans-Regular.ttf' import SemiBoldOpenSans from '@berty/assets/font/OpenSans-SemiBold.ttf' import SemiBoldItalicOpenSans from '@berty/assets/font/OpenSans-SemiBoldItalic.ttf' import { ErrorScreen } from '@berty/components/error' -import { MusicPlayerProvider } from '@berty/contexts/musicPlayer.context' import NotificationProvider from '@berty/contexts/notification.context' import { PermissionsProvider } from '@berty/contexts/permissions.context' import { AppDimensionsProvider, StyleProvider } from '@berty/contexts/styles' @@ -119,9 +118,7 @@ const App: React.FC = () => { {Platform.OS !== 'web' ? : null} - - - + diff --git a/js/packages/mock-services/fakeGeneration.ts b/js/packages/mock-services/fakeGeneration.ts index 3804766d88..1352d708c3 100644 --- a/js/packages/mock-services/fakeGeneration.ts +++ b/js/packages/mock-services/fakeGeneration.ts @@ -174,19 +174,6 @@ const genFakeInteractionsMap = ({ memberPublicKey: member.publicKey, sentDate: Long.fromNumber(lastSent.getTime()), acknowledged: faker.datatype.boolean(), - reactions: range(0, faker.datatype.number({ min: 0, max: 5 })) - .map(() => { - const ownState = faker.datatype.boolean() - const ownCount = ownState ? 1 : 0 - return { - emoji: faker.internet.emoji(), - ownState, - count: Long.fromNumber( - faker.datatype.number({ min: 0, max: convMembers.length - 1 }) + ownCount, - ), - } - }) - .filter(reaction => reaction.count.gt(0)), } lastSent = faker.date.recent(1, lastSent) intes[conv.publicKey || ''].push(inte) diff --git a/js/packages/mock-services/gen-mocked-interfaces.js b/js/packages/mock-services/gen-mocked-interfaces.js index c350c74d66..e7fc4f7685 100644 --- a/js/packages/mock-services/gen-mocked-interfaces.js +++ b/js/packages/mock-services/gen-mocked-interfaces.js @@ -1,7 +1,7 @@ import pb from '@berty/api/root.pb' console.log("import beapi from '@berty/api'") -console.log("import { UnaryMock, RequestStreamMock, ResponseStreamMock } from './types'") +console.log("import { UnaryMock, ResponseStreamMock } from './types'") const services = [ 'berty.protocol.v1.ProtocolService', diff --git a/js/packages/mock-services/mockedServicesInterfaces.gen.ts b/js/packages/mock-services/mockedServicesInterfaces.gen.ts index c43ca955e5..2c421e2349 100644 --- a/js/packages/mock-services/mockedServicesInterfaces.gen.ts +++ b/js/packages/mock-services/mockedServicesInterfaces.gen.ts @@ -1,6 +1,6 @@ import beapi from '@berty/api' -import { UnaryMock, RequestStreamMock, ResponseStreamMock } from './types' +import { UnaryMock, ResponseStreamMock } from './types' export interface IProtocolServiceMock { InstanceExportData: ResponseStreamMock< @@ -132,14 +132,6 @@ export interface IProtocolServiceMock { beapi.protocol.ReplicationServiceRegisterGroup.IReply > PeerList: UnaryMock - AttachmentPrepare: RequestStreamMock< - beapi.protocol.AttachmentPrepare.IRequest, - beapi.protocol.AttachmentPrepare.IReply - > - AttachmentRetrieve: ResponseStreamMock< - beapi.protocol.AttachmentRetrieve.IRequest, - beapi.protocol.AttachmentRetrieve.IReply - > PushReceive: UnaryMock PushSend: UnaryMock PushShareToken: UnaryMock< @@ -244,10 +236,6 @@ export interface IMessengerServiceMock { beapi.messenger.SendContactRequest.IRequest, beapi.messenger.SendContactRequest.IReply > - SendReplyOptions: UnaryMock< - beapi.messenger.SendReplyOptions.IRequest, - beapi.messenger.SendReplyOptions.IReply - > SystemInfo: UnaryMock EchoTest: ResponseStreamMock EchoDuplexTest: never @@ -318,18 +306,6 @@ export interface IMessengerServiceMock { beapi.messenger.InstanceExportData.IRequest, beapi.messenger.InstanceExportData.IReply > - MediaPrepare: RequestStreamMock< - beapi.messenger.MediaPrepare.IRequest, - beapi.messenger.MediaPrepare.IReply - > - MediaRetrieve: ResponseStreamMock< - beapi.messenger.MediaRetrieve.IRequest, - beapi.messenger.MediaRetrieve.IReply - > - MediaGetRelated: UnaryMock< - beapi.messenger.MediaGetRelated.IRequest, - beapi.messenger.MediaGetRelated.IReply - > MessageSearch: UnaryMock< beapi.messenger.MessageSearch.IRequest, beapi.messenger.MessageSearch.IReply @@ -359,8 +335,4 @@ export interface IMessengerServiceMock { beapi.messenger.PushTokenSharedForConversation.IReply > PushReceive: UnaryMock - InteractionReactionsForEmoji: UnaryMock< - beapi.messenger.InteractionReactionsForEmoji.IRequest, - beapi.messenger.InteractionReactionsForEmoji.IReply - > } diff --git a/js/packages/mock-services/static/messengerServiceMock.ts b/js/packages/mock-services/static/messengerServiceMock.ts index e30c3fddd4..3742c93226 100644 --- a/js/packages/mock-services/static/messengerServiceMock.ts +++ b/js/packages/mock-services/static/messengerServiceMock.ts @@ -119,9 +119,6 @@ export class MessengerServiceMock implements Partial { if (request.displayName) { this.account.displayName = request.displayName } - if (request.avatarCid) { - this.account.avatarCid = request.avatarCid - } this.emitStreamEvent({ type: beapi.messenger.StreamEvent.Type.TypeAccountUpdated, payload: beapi.messenger.StreamEvent.AccountUpdated.encode({ @@ -154,45 +151,6 @@ export class MessengerServiceMock implements Partial { } Interact = async (request: beapi.messenger.Interact.IRequest) => { - if (request.type === beapi.messenger.AppMessage.Type.TypeUserReaction) { - if (!request.payload) { - throw new Error('no reaction payload') - } - const payload = beapi.messenger.AppMessage.UserReaction.decode(request.payload) - const reactionCID = faker.datatype.uuid() - let target = getGoldenData().interactionsMap[request.conversationPublicKey || ''].find( - inte => inte.cid === request.targetCid, - ) - if (!target) { - return { cid: reactionCID } - } - target = cloneDeep(target) - if (!target.reactions) { - target.reactions = [] - } - target.reactions = target.reactions - .map(reaction => { - if (reaction.emoji !== payload.emoji) { - return reaction - } - if (!reaction.count) { - reaction.count = Long.ZERO - } - reaction.count.add(boolDiff(reaction.ownState || false, payload.state || false)) - reaction.ownState = payload.state - return reaction - }) - .filter(reactions => reactions.count?.isPositive()) - this.emitStreamEvent({ - type: beapi.messenger.StreamEvent.Type.TypeInteractionUpdated, - payload: beapi.messenger.StreamEvent.InteractionUpdated.encode({ - interaction: target, - }).finish(), - }) - this.bumpConversationLastUpdated(request.conversationPublicKey) - return { cid: reactionCID } - } - const cid = faker.datatype.uuid() this.emitStreamEvent({ type: beapi.messenger.StreamEvent.Type.TypeInteractionUpdated, @@ -506,16 +464,5 @@ export class MessengerServiceMock implements Partial { } } -const boolDiff = (a: boolean, b: boolean) => { - if (a === b) { - return 0 - } - if (!a && b) { - return 1 - } - // a && !b - return -1 -} - const firstCaptureGroup = (match: RegExpMatchArray | null) => match && match.length >= 2 ? match[1] : '' diff --git a/js/packages/redux/messengerActions.gen.ts b/js/packages/redux/messengerActions.gen.ts index 46f815c320..e2420158b8 100644 --- a/js/packages/redux/messengerActions.gen.ts +++ b/js/packages/redux/messengerActions.gen.ts @@ -43,10 +43,6 @@ export const messengerActions = { beapi.messenger.StreamEvent.INotified, 'messenger/Notified' >('messenger/Notified'), - [beapi.messenger.StreamEvent.Type.TypeMediaUpdated]: createAction< - beapi.messenger.StreamEvent.IMediaUpdated, - 'messenger/MediaUpdated' - >('messenger/MediaUpdated'), [beapi.messenger.StreamEvent.Type.TypeConversationPartialLoad]: createAction< beapi.messenger.StreamEvent.IConversationPartialLoad, 'messenger/ConversationPartialLoad' diff --git a/js/packages/redux/reducers/messenger.reducer.ts b/js/packages/redux/reducers/messenger.reducer.ts index d9a89ce765..07c4a47eef 100644 --- a/js/packages/redux/reducers/messenger.reducer.ts +++ b/js/packages/redux/reducers/messenger.reducer.ts @@ -70,13 +70,6 @@ const membersBucketsSelectors = membersBucketsAdapter.getSelectors() const { selectById: selectMembersBucket } = membersBucketsAdapter.getSelectors() -// NOTE: media is already plural of medium but is used as singular, hence the 's' -const mediasAdapter = createEntityAdapter({ - selectId: media => media.cid || '', -}) - -const mediasSelectors = mediasAdapter.getSelectors() - // Peer network status export type GroupsDevicesToPeer = { id: string // with groupPK-devicePK format @@ -172,7 +165,6 @@ const getEntitiesInitialState = () => ({ contacts: contactsAdapter.getInitialState(), interactionsBuckets: interactionsBucketsAdapter.getInitialState(), membersBuckets: membersBucketsAdapter.getInitialState(), - medias: mediasAdapter.getInitialState(), groupsDevicesToPeer: groupsDevicesToPeerAdapter.getInitialState(), peersNetworkStatus: peerNetworkStatusAdapter.getInitialState(), }) @@ -342,16 +334,6 @@ const slice = createSlice({ } }, ) - builder.addCase( - messengerActions[beapi.messenger.StreamEvent.Type.TypeMediaUpdated], - (state, { payload }) => { - if (!payload.media) { - console.warn('MediaUpdated action without id', payload) - return - } - mediasAdapter.upsertOne(state.medias, payload.media) - }, - ) builder.addCase( messengerActions[beapi.messenger.StreamEvent.Type.TypeMemberUpdated], (state, { payload }) => { @@ -442,7 +424,6 @@ const slice = createSlice({ changes: { interactions: interactionsAdapter.upsertOne(bucket.interactions, { ...inte, - reactions: inte.reactions, outOfStoreMessage: !!inte?.outOfStoreMessage, }), }, @@ -457,10 +438,6 @@ const slice = createSlice({ return } - if (payload.medias) { - mediasAdapter.upsertMany(state.medias, payload.medias) - } - const interactionsBucket = interactionsBucketsSelectors.selectById( state.interactionsBuckets, payload.conversationPk, @@ -591,14 +568,6 @@ export const selectContactConversation = (state: LocalRootState, contactPk: stri return selectConversation(state, contact.conversationPublicKey) } -export const selectMedia = (state: LocalRootState, cid: string) => { - return mediasSelectors.selectById(selectSlice(state).medias, cid) -} - -export const selectMedias = (state: LocalRootState, cids: string[]) => { - return cids.map(cid => selectMedia(state, cid)) -} - export const selectInteraction = (state: LocalRootState, convPk: string, cid: string) => { const bucket = interactionsBucketsSelectors.selectById( selectSlice(state).interactionsBuckets, diff --git a/js/packages/utils/api/types.gen.ts b/js/packages/utils/api/types.gen.ts index 94c3e2afc7..c7f835fbef 100644 --- a/js/packages/utils/api/types.gen.ts +++ b/js/packages/utils/api/types.gen.ts @@ -22,8 +22,6 @@ export type StreamEventPayloadType = T extends beapi.messenger.StreamEvent.Ty ? beapi.messenger.StreamEvent.IDeviceUpdated : T extends beapi.messenger.StreamEvent.Type.TypeNotified ? beapi.messenger.StreamEvent.INotified - : T extends beapi.messenger.StreamEvent.Type.TypeMediaUpdated - ? beapi.messenger.StreamEvent.IMediaUpdated : T extends beapi.messenger.StreamEvent.Type.TypeConversationPartialLoad ? beapi.messenger.StreamEvent.IConversationPartialLoad : T extends beapi.messenger.StreamEvent.Type.TypePeerStatusConnected @@ -55,8 +53,6 @@ export type AppMessagePayloadType = T extends beapi.messenger.AppMessage.Type ? undefined : T extends beapi.messenger.AppMessage.Type.TypeUserMessage ? beapi.messenger.AppMessage.IUserMessage - : T extends beapi.messenger.AppMessage.Type.TypeUserReaction - ? beapi.messenger.AppMessage.IUserReaction : T extends beapi.messenger.AppMessage.Type.TypeGroupInvitation ? beapi.messenger.AppMessage.IGroupInvitation : T extends beapi.messenger.AppMessage.Type.TypeSetGroupInfo @@ -65,8 +61,6 @@ export type AppMessagePayloadType = T extends beapi.messenger.AppMessage.Type ? beapi.messenger.AppMessage.ISetUserInfo : T extends beapi.messenger.AppMessage.Type.TypeAcknowledge ? beapi.messenger.AppMessage.IAcknowledge - : T extends beapi.messenger.AppMessage.Type.TypeReplyOptions - ? beapi.messenger.AppMessage.IReplyOptions : never export type InteractionUndefined = { @@ -77,10 +71,6 @@ export type InteractionUserMessage = { type: beapi.messenger.AppMessage.Type.TypeUserMessage payload?: beapi.messenger.AppMessage.IUserMessage } & Omit -export type InteractionUserReaction = { - type: beapi.messenger.AppMessage.Type.TypeUserReaction - payload?: beapi.messenger.AppMessage.IUserReaction -} & Omit export type InteractionGroupInvitation = { type: beapi.messenger.AppMessage.Type.TypeGroupInvitation payload?: beapi.messenger.AppMessage.IGroupInvitation @@ -97,17 +87,11 @@ export type InteractionAcknowledge = { type: beapi.messenger.AppMessage.Type.TypeAcknowledge payload?: beapi.messenger.AppMessage.IAcknowledge } & Omit -export type InteractionReplyOptions = { - type: beapi.messenger.AppMessage.Type.TypeReplyOptions - payload?: beapi.messenger.AppMessage.IReplyOptions -} & Omit export type ParsedInteraction = | InteractionUndefined | InteractionUserMessage - | InteractionUserReaction | InteractionGroupInvitation | InteractionSetGroupInfo | InteractionSetUserInfo | InteractionAcknowledge - | InteractionReplyOptions diff --git a/js/packages/utils/protocol/attachments.ts b/js/packages/utils/protocol/attachments.ts deleted file mode 100644 index fb161fdc67..0000000000 --- a/js/packages/utils/protocol/attachments.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Buffer } from 'buffer' - -import { WelshProtocolServiceClient } from '@berty/grpc-bridge/welsh-clients.gen' - -const fetchSource = async ( - protocolClient: WelshProtocolServiceClient, - cid: string, -): Promise => { - const stream = await protocolClient.attachmentRetrieve({ - attachmentCid: Buffer.from(cid, 'base64'), - }) - const data = await new Promise((resolve, reject) => { - let buf = Buffer.from('') - stream.onMessage((msg, err) => { - if (err?.EOF) { - resolve(buf) - return - } - if (err) { - reject(err) - return - } - if (msg?.block) { - buf = Buffer.concat([buf, msg.block]) - } - }) - stream.start() - }) - return data.toString('base64') -} - -let cache: { cid: string; prom: Promise }[] = [] - -export const getSource = async ( - protocolClient: WelshProtocolServiceClient, - cid: string | null | undefined, -): Promise => { - if (!cid) { - throw new Error('cid is null or undefined') - } - if (!cache.find(item => item.cid === cid)) { - if (cache.length >= 20) { - // evict - cache = cache.slice(1) - } - cache.push({ cid, prom: fetchSource(protocolClient, cid) }) - } - const cached = cache.find(item => item.cid === cid) - if (!cached) { - throw new Error('unexpected cache miss') - } - return cached.prom -}