From f46439839a83003280565b2f27d13fae4014ebca Mon Sep 17 00:00:00 2001 From: Iwak <157107911+KuntilBogel@users.noreply.github.com> Date: Sat, 24 May 2025 17:13:33 +0000 Subject: [PATCH] updated --- README.md | 11 +- appstate.go | 54 +- appstate/decode.go | 53 +- appstate/encode.go | 66 +- appstate/keys.go | 9 +- armadillomessage.go | 5 +- broadcast.go | 9 +- client.go | 23 +- client_test.go | 5 +- connectionevents.go | 31 +- download-to-file.go | 64 +- download.go | 80 +- go.mod | 25 +- go.sum | 50 +- internals.go | 270 +- internals_generate.go | 13 +- keepalive.go | 4 +- mediaconn.go | 8 +- mediaretry.go | 3 +- message.go | 274 +- msgsecret.go | 49 +- notification.go | 67 +- pair-code.go | 11 +- pair.go | 50 +- prekeys.go | 14 +- presence.go | 3 +- privacysettings.go | 21 +- proto/waAdv/WAAdv.pb.go | 48 +- proto/waAdv/WAAdv.pb.raw | Bin 1006 -> 0 bytes .../WAArmadilloApplication.pb.go | 196 +- .../WAArmadilloApplication.pb.raw | Bin 8281 -> 0 bytes .../WAArmadilloBackupCommon.pb.go | 20 +- .../WAArmadilloBackupCommon.pb.raw | 5 - .../WAArmadilloBackupMessage.pb.go | 67 +- .../WAArmadilloBackupMessage.pb.raw | Bin 1034 -> 0 bytes .../WAArmadilloBackupMessage.proto | 1 + proto/waArmadilloICDC/WAArmadilloICDC.pb.go | 25 +- proto/waArmadilloICDC/WAArmadilloICDC.pb.raw | 10 - .../WAArmadilloMiTransportAdminMessage.pb.go | 1364 ++++ .../WAArmadilloMiTransportAdminMessage.proto | 105 + .../WAArmadilloTransportEvent.pb.go | 74 +- .../WAArmadilloTransportEvent.pb.raw | Bin 1033 -> 0 bytes .../WAArmadilloTransportEvent.proto | 2 + proto/waArmadilloXMA/WAArmadilloXMA.pb.go | 151 +- proto/waArmadilloXMA/WAArmadilloXMA.pb.raw | Bin 3821 -> 0 bytes proto/waCert/WACert.pb.go | 38 +- proto/waCert/WACert.pb.raw | 23 - .../WAProtobufsChatLockSettings.pb.go | 22 +- .../WAProtobufsChatLockSettings.pb.raw | 7 - proto/waCommon/WACommon.pb.go | 65 +- proto/waCommon/WACommon.pb.raw | Bin 1228 -> 0 bytes proto/waCompanionReg/WACompanionReg.pb.go | 104 +- proto/waCompanionReg/WACompanionReg.pb.raw | Bin 2576 -> 0 bytes .../WAConsumerApplication.pb.go | 182 +- .../WAConsumerApplication.pb.raw | Bin 7094 -> 0 bytes .../WAProtobufsDeviceCapabilities.pb.go | 26 +- .../WAProtobufsDeviceCapabilities.pb.raw | Bin 519 -> 0 bytes proto/waE2E/WAWebProtobufsE2E.pb.go | 5994 +++++++++++++---- proto/waE2E/WAWebProtobufsE2E.pb.raw | Bin 78263 -> 0 bytes proto/waE2E/WAWebProtobufsE2E.proto | 129 +- .../waEphemeral/WAWebProtobufsEphemeral.pb.go | 20 +- .../WAWebProtobufsEphemeral.pb.raw | 5 - proto/waFingerprint/WAFingerprint.pb.go | 32 +- proto/waFingerprint/WAFingerprint.pb.raw | Bin 610 -> 0 bytes .../WAWebProtobufsHistorySync.pb.go | 226 +- .../WAWebProtobufsHistorySync.pb.raw | Bin 7755 -> 0 bytes .../WAWebProtobufsHistorySync.proto | 1 + ...WAWebProtobufLidMigrationSyncPayload.pb.go | 24 +- ...AWebProtobufLidMigrationSyncPayload.pb.raw | 9 - proto/waMediaEntryData/WAMediaEntryData.pb.go | 55 +- .../waMediaEntryData/WAMediaEntryData.pb.raw | 40 - proto/waMediaTransport/WAMediaTransport.pb.go | 171 +- .../waMediaTransport/WAMediaTransport.pb.raw | Bin 4972 -> 0 bytes proto/waMediaTransport/WAMediaTransport.proto | 1 + proto/waMmsRetry/WAMmsRetry.pb.go | 33 +- proto/waMmsRetry/WAMmsRetry.pb.raw | Bin 410 -> 0 bytes proto/waMsgApplication/WAMsgApplication.pb.go | 86 +- .../waMsgApplication/WAMsgApplication.pb.raw | Bin 2963 -> 0 bytes proto/waMsgTransport/WAMsgTransport.pb.go | 69 +- proto/waMsgTransport/WAMsgTransport.pb.raw | Bin 2379 -> 0 bytes proto/waMultiDevice/WAMultiDevice.pb.go | 48 +- proto/waMultiDevice/WAMultiDevice.pb.raw | Bin 1564 -> 0 bytes ...WAWebProtobufsQuickPromotionSurfaces.pb.go | 48 +- ...AWebProtobufsQuickPromotionSurfaces.pb.raw | 33 - .../waReporting/WAWebProtobufsReporting.pb.go | 47 +- .../WAWebProtobufsReporting.pb.raw | 32 - .../WAWebProtobufsRoutingInfo.pb.go | 24 +- .../WAWebProtobufsRoutingInfo.pb.raw | 9 - proto/waServerSync/WAServerSync.pb.go | 70 +- proto/waServerSync/WAServerSync.pb.raw | Bin 1538 -> 0 bytes proto/waSyncAction/WASyncAction.pb.go | 1123 ++- proto/waSyncAction/WASyncAction.pb.raw | Bin 12869 -> 0 bytes proto/waSyncAction/WASyncAction.proto | 18 + .../WAProtobufsUserPassword.pb.go | 36 +- .../WAProtobufsUserPassword.pb.raw | Bin 752 -> 0 bytes .../waVnameCert/WAWebProtobufsVnameCert.pb.go | 68 +- .../WAWebProtobufsVnameCert.pb.raw | Bin 1731 -> 0 bytes proto/waWa6/WAWebProtobufsWa6.pb.go | 245 +- proto/waWa6/WAWebProtobufsWa6.pb.raw | Bin 5900 -> 0 bytes proto/waWeb/WAWebProtobufsWeb.pb.go | 564 +- proto/waWeb/WAWebProtobufsWeb.pb.raw | Bin 20364 -> 0 bytes proto/waWeb/WAWebProtobufsWeb.proto | 2 + proto/waWinUIApi/WAWinUIApi.pb.go | 77 +- proto/waWinUIApi/WAWinUIApi.pb.raw | 62 - receipt.go | 10 +- retry.go | 31 +- send.go | 77 +- sendfb.go | 29 +- store/clientpayload.go | 2 +- store/noop.go | 107 +- store/signal.go | 163 +- store/sqlstore/container.go | 38 +- store/sqlstore/lidmap.go | 31 +- store/sqlstore/store.go | 279 +- store/sqlstore/upgrades/00-latest-schema.sql | 12 +- .../upgrades/09-decryption-buffer.sql | 10 + store/store.go | 123 +- update.go | 5 +- upload.go | 2 +- user.go | 22 +- 120 files changed, 11015 insertions(+), 3134 deletions(-) delete mode 100644 proto/waAdv/WAAdv.pb.raw delete mode 100644 proto/waArmadilloApplication/WAArmadilloApplication.pb.raw delete mode 100644 proto/waArmadilloBackupCommon/WAArmadilloBackupCommon.pb.raw delete mode 100644 proto/waArmadilloBackupMessage/WAArmadilloBackupMessage.pb.raw delete mode 100644 proto/waArmadilloICDC/WAArmadilloICDC.pb.raw create mode 100644 proto/waArmadilloMiTransportAdminMessage/WAArmadilloMiTransportAdminMessage.pb.go create mode 100644 proto/waArmadilloMiTransportAdminMessage/WAArmadilloMiTransportAdminMessage.proto delete mode 100644 proto/waArmadilloTransportEvent/WAArmadilloTransportEvent.pb.raw delete mode 100644 proto/waArmadilloXMA/WAArmadilloXMA.pb.raw delete mode 100644 proto/waCert/WACert.pb.raw delete mode 100644 proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.raw delete mode 100644 proto/waCommon/WACommon.pb.raw delete mode 100644 proto/waCompanionReg/WACompanionReg.pb.raw delete mode 100644 proto/waConsumerApplication/WAConsumerApplication.pb.raw delete mode 100644 proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.raw delete mode 100644 proto/waE2E/WAWebProtobufsE2E.pb.raw delete mode 100644 proto/waEphemeral/WAWebProtobufsEphemeral.pb.raw delete mode 100644 proto/waFingerprint/WAFingerprint.pb.raw delete mode 100644 proto/waHistorySync/WAWebProtobufsHistorySync.pb.raw delete mode 100644 proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.pb.raw delete mode 100644 proto/waMediaEntryData/WAMediaEntryData.pb.raw delete mode 100644 proto/waMediaTransport/WAMediaTransport.pb.raw delete mode 100644 proto/waMmsRetry/WAMmsRetry.pb.raw delete mode 100644 proto/waMsgApplication/WAMsgApplication.pb.raw delete mode 100644 proto/waMsgTransport/WAMsgTransport.pb.raw delete mode 100644 proto/waMultiDevice/WAMultiDevice.pb.raw delete mode 100644 proto/waQuickPromotionSurfaces/WAWebProtobufsQuickPromotionSurfaces.pb.raw delete mode 100644 proto/waReporting/WAWebProtobufsReporting.pb.raw delete mode 100644 proto/waRoutingInfo/WAWebProtobufsRoutingInfo.pb.raw delete mode 100644 proto/waServerSync/WAServerSync.pb.raw delete mode 100644 proto/waSyncAction/WASyncAction.pb.raw delete mode 100644 proto/waUserPassword/WAProtobufsUserPassword.pb.raw delete mode 100644 proto/waVnameCert/WAWebProtobufsVnameCert.pb.raw delete mode 100644 proto/waWa6/WAWebProtobufsWa6.pb.raw delete mode 100644 proto/waWeb/WAWebProtobufsWeb.pb.raw delete mode 100644 proto/waWinUIApi/WAWinUIApi.pb.raw create mode 100644 store/sqlstore/upgrades/09-decryption-buffer.sql diff --git a/README.md b/README.md index c8f787c2..d87a4f39 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,11 @@ # waSocket -[![Go Reference](https://pkg.go.dev/badge/github.com/techwiz37/waSocket.svg)](https://pkg.go.dev/github.com/techwiz37/waSocket) +[![Go Reference](https://pkg.go.dev/badge/github.com/techwiz37/waSocket/.svg)](https://pkg.go.dev/github.com/techwiz37/waSocket/) +> [!NOTE] +> This is just a fork of whatsmeow waSocket is a Go library for the WhatsApp web multidevice API. -This is a fork that use a workaround for slow groupm essage, and some unmerged PR +This is a fork that use a workaround for slow group message, and some unmerged PR + ## Discussion Whatsapp Group: https://chat.whatsapp.com/BDI3NMjO7vW7RlOqgdxtmw @@ -14,8 +17,8 @@ discussions. ## Usage -The [godoc](https://pkg.go.dev/github.com/techwiz37/waSocket) includes docs for all methods and event types. -There's also a [simple example](https://pkg.go.dev/github.com/techwiz37/waSocket#example-package) at the top. +The [godoc](https://pkg.go.dev/github.com/techwiz37/waSocket/) includes docs for all methods and event types. +There's also a [simple example](https://pkg.go.dev/github.com/techwiz37/waSocket/#example-package) at the top. ## Features Most core features are already present: diff --git a/appstate.go b/appstate.go index 2d8e5a2c..6796a466 100644 --- a/appstate.go +++ b/appstate.go @@ -24,19 +24,19 @@ import ( // FetchAppState fetches updates to the given type of app state. If fullSync is true, the current // cached state will be removed and all app state patches will be re-fetched from the server. -func (cli *Client) FetchAppState(name appstate.WAPatchName, fullSync, onlyIfNotSynced bool) error { +func (cli *Client) FetchAppState(ctx context.Context, name appstate.WAPatchName, fullSync, onlyIfNotSynced bool) error { if cli == nil { return ErrClientIsNil } cli.appStateSyncLock.Lock() defer cli.appStateSyncLock.Unlock() if fullSync { - err := cli.Store.AppState.DeleteAppStateVersion(string(name)) + err := cli.Store.AppState.DeleteAppStateVersion(ctx, string(name)) if err != nil { return fmt.Errorf("failed to reset app state %s version: %w", name, err) } } - version, hash, err := cli.Store.AppState.GetAppStateVersion(string(name)) + version, hash, err := cli.Store.AppState.GetAppStateVersion(ctx, string(name)) if err != nil { return fmt.Errorf("failed to get app state %s version: %w", name, err) } @@ -51,17 +51,17 @@ func (cli *Client) FetchAppState(name appstate.WAPatchName, fullSync, onlyIfNotS hasMore := true wantSnapshot := fullSync for hasMore { - patches, err := cli.fetchAppStatePatches(name, state.Version, wantSnapshot) + patches, err := cli.fetchAppStatePatches(ctx, name, state.Version, wantSnapshot) wantSnapshot = false if err != nil { return fmt.Errorf("failed to fetch app state %s patches: %w", name, err) } hasMore = patches.HasMorePatches - mutations, newState, err := cli.appStateProc.DecodePatches(patches, state, true) + mutations, newState, err := cli.appStateProc.DecodePatches(ctx, patches, state, true) if err != nil { if errors.Is(err, appstate.ErrKeyNotFound) { - go cli.requestMissingAppStateKeys(context.TODO(), patches) + go cli.requestMissingAppStateKeys(context.WithoutCancel(ctx), patches) } return fmt.Errorf("failed to decode app state %s patches: %w", name, err) } @@ -71,14 +71,14 @@ func (cli *Client) FetchAppState(name appstate.WAPatchName, fullSync, onlyIfNotS var contacts []store.ContactEntry mutations, contacts = cli.filterContacts(mutations) cli.Log.Debugf("Mass inserting app state snapshot with %d contacts into the store", len(contacts)) - err = cli.Store.Contacts.PutAllContactNames(contacts) + err = cli.Store.Contacts.PutAllContactNames(ctx, contacts) if err != nil { // This is a fairly serious failure, so just abort the whole thing return fmt.Errorf("failed to update contact store with data from snapshot: %v", err) } } for _, mutation := range mutations { - cli.dispatchAppState(mutation, fullSync, cli.EmitAppStateEventsOnFullSync) + cli.dispatchAppState(ctx, mutation, fullSync, cli.EmitAppStateEventsOnFullSync) } } if fullSync { @@ -109,10 +109,10 @@ func (cli *Client) filterContacts(mutations []appstate.Mutation) ([]appstate.Mut return filteredMutations, contacts } -func (cli *Client) dispatchAppState(mutation appstate.Mutation, fullSync bool, emitOnFullSync bool) { +func (cli *Client) dispatchAppState(ctx context.Context, mutation appstate.Mutation, fullSync bool, emitOnFullSync bool) { dispatchEvts := !fullSync || emitOnFullSync - if (mutation.Action != nil && mutation.Action.ContactAction == nil) && mutation.Operation != waServerSync.SyncdMutation_SET { + if mutation.Operation != waServerSync.SyncdMutation_SET { return } @@ -137,25 +137,25 @@ func (cli *Client) dispatchAppState(mutation appstate.Mutation, fullSync bool, e mutedUntil = time.UnixMilli(act.GetMuteEndTimestamp()) } if cli.Store.ChatSettings != nil { - storeUpdateError = cli.Store.ChatSettings.PutMutedUntil(jid, mutedUntil) + storeUpdateError = cli.Store.ChatSettings.PutMutedUntil(ctx, jid, mutedUntil) } case appstate.IndexPin: act := mutation.Action.GetPinAction() eventToDispatch = &events.Pin{JID: jid, Timestamp: ts, Action: act, FromFullSync: fullSync} if cli.Store.ChatSettings != nil { - storeUpdateError = cli.Store.ChatSettings.PutPinned(jid, act.GetPinned()) + storeUpdateError = cli.Store.ChatSettings.PutPinned(ctx, jid, act.GetPinned()) } case appstate.IndexArchive: act := mutation.Action.GetArchiveChatAction() eventToDispatch = &events.Archive{JID: jid, Timestamp: ts, Action: act, FromFullSync: fullSync} if cli.Store.ChatSettings != nil { - storeUpdateError = cli.Store.ChatSettings.PutArchived(jid, act.GetArchived()) + storeUpdateError = cli.Store.ChatSettings.PutArchived(ctx, jid, act.GetArchived()) } case appstate.IndexContact: act := mutation.Action.GetContactAction() eventToDispatch = &events.Contact{JID: jid, Timestamp: ts, Action: act, FromFullSync: fullSync} if cli.Store.Contacts != nil { - storeUpdateError = cli.Store.Contacts.PutContactName(jid, act.GetFirstName(), act.GetFullName()) + storeUpdateError = cli.Store.Contacts.PutContactName(ctx, jid, act.GetFirstName(), act.GetFullName()) } case appstate.IndexClearChat: act := mutation.Action.GetClearChatAction() @@ -209,7 +209,7 @@ func (cli *Client) dispatchAppState(mutation appstate.Mutation, fullSync bool, e FromFullSync: fullSync, } cli.Store.PushName = mutation.Action.GetPushNameSetting().GetName() - err := cli.Store.Save() + err := cli.Store.Save(ctx) if err != nil { cli.Log.Errorf("Failed to save device store after updating push name: %v", err) } @@ -270,11 +270,11 @@ func (cli *Client) dispatchAppState(mutation appstate.Mutation, fullSync bool, e } } -func (cli *Client) downloadExternalAppStateBlob(ref *waServerSync.ExternalBlobReference) ([]byte, error) { - return cli.Download(ref) +func (cli *Client) downloadExternalAppStateBlob(ctx context.Context, ref *waServerSync.ExternalBlobReference) ([]byte, error) { + return cli.Download(ctx, ref) } -func (cli *Client) fetchAppStatePatches(name appstate.WAPatchName, fromVersion uint64, snapshot bool) (*appstate.PatchList, error) { +func (cli *Client) fetchAppStatePatches(ctx context.Context, name appstate.WAPatchName, fromVersion uint64, snapshot bool) (*appstate.PatchList, error) { attrs := waBinary.Attrs{ "name": string(name), "return_snapshot": snapshot, @@ -283,6 +283,7 @@ func (cli *Client) fetchAppStatePatches(name appstate.WAPatchName, fromVersion u attrs["version"] = fromVersion } resp, err := cli.sendIQ(infoQuery{ + Context: ctx, Namespace: "w:sync:app:state", Type: "set", To: types.ServerJID, @@ -297,12 +298,12 @@ func (cli *Client) fetchAppStatePatches(name appstate.WAPatchName, fromVersion u if err != nil { return nil, err } - return appstate.ParsePatchList(resp, cli.downloadExternalAppStateBlob) + return appstate.ParsePatchList(ctx, resp, cli.downloadExternalAppStateBlob) } func (cli *Client) requestMissingAppStateKeys(ctx context.Context, patches *appstate.PatchList) { cli.appStateKeyRequestsLock.Lock() - rawKeyIDs := cli.appStateProc.GetMissingKeyIDs(patches) + rawKeyIDs := cli.appStateProc.GetMissingKeyIDs(ctx, patches) filteredKeyIDs := make([][]byte, 0, len(rawKeyIDs)) now := time.Now() for _, keyID := range rawKeyIDs { @@ -348,17 +349,17 @@ func (cli *Client) requestAppStateKeys(ctx context.Context, rawKeyIDs [][]byte) // // You can use the Build methods in the appstate package to build the parameter for this method, e.g. // -// cli.SendAppState(appstate.BuildMute(targetJID, true, 24 * time.Hour)) -func (cli *Client) SendAppState(patch appstate.PatchInfo) error { +// cli.SendAppState(ctx, appstate.BuildMute(targetJID, true, 24 * time.Hour)) +func (cli *Client) SendAppState(ctx context.Context, patch appstate.PatchInfo) error { if cli == nil { return ErrClientIsNil } - version, hash, err := cli.Store.AppState.GetAppStateVersion(string(patch.Type)) + version, hash, err := cli.Store.AppState.GetAppStateVersion(ctx, string(patch.Type)) if err != nil { return err } // TODO create new key instead of reusing the primary client's keys - latestKeyID, err := cli.Store.AppStateKeys.GetLatestAppStateSyncKeyID() + latestKeyID, err := cli.Store.AppStateKeys.GetLatestAppStateSyncKeyID(ctx) if err != nil { return fmt.Errorf("failed to get latest app state key ID: %w", err) } else if latestKeyID == nil { @@ -367,12 +368,13 @@ func (cli *Client) SendAppState(patch appstate.PatchInfo) error { state := appstate.HashState{Version: version, Hash: hash} - encodedPatch, err := cli.appStateProc.EncodePatch(latestKeyID, state, patch) + encodedPatch, err := cli.appStateProc.EncodePatch(ctx, latestKeyID, state, patch) if err != nil { return err } resp, err := cli.sendIQ(infoQuery{ + Context: ctx, Namespace: "w:sync:app:state", Type: iqSet, To: types.ServerJID, @@ -403,5 +405,5 @@ func (cli *Client) SendAppState(patch appstate.PatchInfo) error { return fmt.Errorf("%w: %s", ErrAppStateUpdate, respCollection.XMLString()) } - return cli.FetchAppState(patch.Type, false, false) + return cli.FetchAppState(ctx, patch.Type, false, false) } diff --git a/appstate/decode.go b/appstate/decode.go index 004d0604..6a30f128 100644 --- a/appstate/decode.go +++ b/appstate/decode.go @@ -8,6 +8,7 @@ package appstate import ( "bytes" + "context" "crypto/sha256" "encoding/json" "fmt" @@ -30,9 +31,9 @@ type PatchList struct { } // DownloadExternalFunc is a function that can download a blob of external app state patches. -type DownloadExternalFunc func(*waServerSync.ExternalBlobReference) ([]byte, error) +type DownloadExternalFunc func(context.Context, *waServerSync.ExternalBlobReference) ([]byte, error) -func parseSnapshotInternal(collection *waBinary.Node, downloadExternal DownloadExternalFunc) (*waServerSync.SyncdSnapshot, error) { +func parseSnapshotInternal(ctx context.Context, collection *waBinary.Node, downloadExternal DownloadExternalFunc) (*waServerSync.SyncdSnapshot, error) { snapshotNode := collection.GetChildByTag("snapshot") rawSnapshot, ok := snapshotNode.Content.([]byte) if snapshotNode.Tag != "snapshot" || !ok { @@ -44,7 +45,7 @@ func parseSnapshotInternal(collection *waBinary.Node, downloadExternal DownloadE return nil, fmt.Errorf("failed to unmarshal snapshot: %w", err) } var rawData []byte - rawData, err = downloadExternal(&snapshot) + rawData, err = downloadExternal(ctx, &snapshot) if err != nil { return nil, fmt.Errorf("failed to download external mutations: %w", err) } @@ -56,7 +57,7 @@ func parseSnapshotInternal(collection *waBinary.Node, downloadExternal DownloadE return &downloaded, nil } -func parsePatchListInternal(collection *waBinary.Node, downloadExternal DownloadExternalFunc) ([]*waServerSync.SyncdPatch, error) { +func parsePatchListInternal(ctx context.Context, collection *waBinary.Node, downloadExternal DownloadExternalFunc) ([]*waServerSync.SyncdPatch, error) { patchesNode := collection.GetChildByTag("patches") patchNodes := patchesNode.GetChildren() patches := make([]*waServerSync.SyncdPatch, 0, len(patchNodes)) @@ -72,7 +73,7 @@ func parsePatchListInternal(collection *waBinary.Node, downloadExternal Download } if patch.GetExternalMutations() != nil && downloadExternal != nil { var rawData []byte - rawData, err = downloadExternal(patch.GetExternalMutations()) + rawData, err = downloadExternal(ctx, patch.GetExternalMutations()) if err != nil { return nil, fmt.Errorf("failed to download external mutations: %w", err) } @@ -91,14 +92,14 @@ func parsePatchListInternal(collection *waBinary.Node, downloadExternal Download } // ParsePatchList will decode an XML node containing app state patches, including downloading any external blobs. -func ParsePatchList(node *waBinary.Node, downloadExternal DownloadExternalFunc) (*PatchList, error) { +func ParsePatchList(ctx context.Context, node *waBinary.Node, downloadExternal DownloadExternalFunc) (*PatchList, error) { collection := node.GetChildByTag("sync", "collection") ag := collection.AttrGetter() - snapshot, err := parseSnapshotInternal(&collection, downloadExternal) + snapshot, err := parseSnapshotInternal(ctx, &collection, downloadExternal) if err != nil { return nil, err } - patches, err := parsePatchListInternal(&collection, downloadExternal) + patches, err := parsePatchListInternal(ctx, &collection, downloadExternal) if err != nil { return nil, err } @@ -117,10 +118,10 @@ type patchOutput struct { Mutations []Mutation } -func (proc *Processor) decodeMutations(mutations []*waServerSync.SyncdMutation, out *patchOutput, validateMACs bool) error { +func (proc *Processor) decodeMutations(ctx context.Context, mutations []*waServerSync.SyncdMutation, out *patchOutput, validateMACs bool) error { for i, mutation := range mutations { keyID := mutation.GetRecord().GetKeyID().GetID() - keys, err := proc.getAppStateKey(keyID) + keys, err := proc.getAppStateKey(ctx, keyID) if err != nil { return fmt.Errorf("failed to get key %X to decode mutation: %w", keyID, err) } @@ -173,23 +174,23 @@ func (proc *Processor) decodeMutations(mutations []*waServerSync.SyncdMutation, return nil } -func (proc *Processor) storeMACs(name WAPatchName, currentState HashState, out *patchOutput) { - err := proc.Store.AppState.PutAppStateVersion(string(name), currentState.Version, currentState.Hash) +func (proc *Processor) storeMACs(ctx context.Context, name WAPatchName, currentState HashState, out *patchOutput) { + err := proc.Store.AppState.PutAppStateVersion(ctx, string(name), currentState.Version, currentState.Hash) if err != nil { proc.Log.Errorf("Failed to update app state version in the database: %v", err) } - err = proc.Store.AppState.DeleteAppStateMutationMACs(string(name), out.RemovedMACs) + err = proc.Store.AppState.DeleteAppStateMutationMACs(ctx, string(name), out.RemovedMACs) if err != nil { proc.Log.Errorf("Failed to remove deleted mutation MACs from the database: %v", err) } - err = proc.Store.AppState.PutAppStateMutationMACs(string(name), currentState.Version, out.AddedMACs) + err = proc.Store.AppState.PutAppStateMutationMACs(ctx, string(name), currentState.Version, out.AddedMACs) if err != nil { proc.Log.Errorf("Failed to insert added mutation MACs to the database: %v", err) } } -func (proc *Processor) validateSnapshotMAC(name WAPatchName, currentState HashState, keyID, expectedSnapshotMAC []byte) (keys ExpandedAppStateKeys, err error) { - keys, err = proc.getAppStateKey(keyID) +func (proc *Processor) validateSnapshotMAC(ctx context.Context, name WAPatchName, currentState HashState, keyID, expectedSnapshotMAC []byte) (keys ExpandedAppStateKeys, err error) { + keys, err = proc.getAppStateKey(ctx, keyID) if err != nil { err = fmt.Errorf("failed to get key %X to verify patch v%d MACs: %w", keyID, currentState.Version, err) return @@ -201,7 +202,7 @@ func (proc *Processor) validateSnapshotMAC(name WAPatchName, currentState HashSt return } -func (proc *Processor) decodeSnapshot(name WAPatchName, ss *waServerSync.SyncdSnapshot, initialState HashState, validateMACs bool, newMutationsInput []Mutation) (newMutations []Mutation, currentState HashState, err error) { +func (proc *Processor) decodeSnapshot(ctx context.Context, name WAPatchName, ss *waServerSync.SyncdSnapshot, initialState HashState, validateMACs bool, newMutationsInput []Mutation) (newMutations []Mutation, currentState HashState, err error) { currentState = initialState currentState.Version = ss.GetVersion().GetVersion() @@ -226,7 +227,7 @@ func (proc *Processor) decodeSnapshot(name WAPatchName, ss *waServerSync.SyncdSn } if validateMACs { - _, err = proc.validateSnapshotMAC(name, currentState, ss.GetKeyID().GetID(), ss.GetMac()) + _, err = proc.validateSnapshotMAC(ctx, name, currentState, ss.GetKeyID().GetID(), ss.GetMac()) if err != nil { return } @@ -234,18 +235,18 @@ func (proc *Processor) decodeSnapshot(name WAPatchName, ss *waServerSync.SyncdSn var out patchOutput out.Mutations = newMutationsInput - err = proc.decodeMutations(encryptedMutations, &out, validateMACs) + err = proc.decodeMutations(ctx, encryptedMutations, &out, validateMACs) if err != nil { err = fmt.Errorf("failed to decode snapshot of v%d: %w", currentState.Version, err) return } - proc.storeMACs(name, currentState, &out) + proc.storeMACs(ctx, name, currentState, &out) newMutations = out.Mutations return } // DecodePatches will decode all the patches in a PatchList into a list of app state mutations. -func (proc *Processor) DecodePatches(list *PatchList, initialState HashState, validateMACs bool) (newMutations []Mutation, currentState HashState, err error) { +func (proc *Processor) DecodePatches(ctx context.Context, list *PatchList, initialState HashState, validateMACs bool) (newMutations []Mutation, currentState HashState, err error) { currentState = initialState var expectedLength int if list.Snapshot != nil { @@ -257,7 +258,7 @@ func (proc *Processor) DecodePatches(list *PatchList, initialState HashState, va newMutations = make([]Mutation, 0, expectedLength) if list.Snapshot != nil { - newMutations, currentState, err = proc.decodeSnapshot(list.Name, list.Snapshot, currentState, validateMACs, newMutations) + newMutations, currentState, err = proc.decodeSnapshot(ctx, list.Name, list.Snapshot, currentState, validateMACs, newMutations) if err != nil { return } @@ -275,7 +276,7 @@ func (proc *Processor) DecodePatches(list *PatchList, initialState HashState, va } } // Previous value not found in current patch, look in the database - return proc.Store.AppState.GetAppStateMutationMAC(string(list.Name), indexMAC) + return proc.Store.AppState.GetAppStateMutationMAC(ctx, string(list.Name), indexMAC) }) if len(warn) > 0 { proc.Log.Warnf("Warnings while updating hash for %s: %+v", list.Name, warn) @@ -287,7 +288,7 @@ func (proc *Processor) DecodePatches(list *PatchList, initialState HashState, va if validateMACs { var keys ExpandedAppStateKeys - keys, err = proc.validateSnapshotMAC(list.Name, currentState, patch.GetKeyID().GetID(), patch.GetSnapshotMac()) + keys, err = proc.validateSnapshotMAC(ctx, list.Name, currentState, patch.GetKeyID().GetID(), patch.GetSnapshotMac()) if err != nil { return } @@ -300,11 +301,11 @@ func (proc *Processor) DecodePatches(list *PatchList, initialState HashState, va var out patchOutput out.Mutations = newMutations - err = proc.decodeMutations(patch.GetMutations(), &out, validateMACs) + err = proc.decodeMutations(ctx, patch.GetMutations(), &out, validateMACs) if err != nil { return } - proc.storeMACs(list.Name, currentState, &out) + proc.storeMACs(ctx, list.Name, currentState, &out) newMutations = out.Mutations } return diff --git a/appstate/encode.go b/appstate/encode.go index ec783150..043c3e46 100644 --- a/appstate/encode.go +++ b/appstate/encode.go @@ -1,6 +1,7 @@ package appstate import ( + "context" "crypto/sha256" "encoding/json" "fmt" @@ -32,8 +33,6 @@ type PatchInfo struct { Timestamp time.Time // Type is the app state type being mutated. Type WAPatchName - // Operation is SET / REMOVE - Operation waServerSync.SyncdMutation_SyncdOperation // Mutations contains the individual mutations to apply to the app state in this patch. Mutations []MutationInfo } @@ -48,8 +47,7 @@ func BuildMute(target types.JID, mute bool, muteDuration time.Duration) PatchInf } return PatchInfo{ - Type: WAPatchRegularHigh, - Operation: waServerSync.SyncdMutation_SET, + Type: WAPatchRegularHigh, Mutations: []MutationInfo{{ Index: []string{IndexMute, target.String()}, Version: 2, @@ -63,37 +61,6 @@ func BuildMute(target types.JID, mute bool, muteDuration time.Duration) PatchInf } } -func BuildAddContact(target types.JID, fullName string) PatchInfo { - return PatchInfo{ - Type: WAPatchCriticalUnblockLow, - Operation: waServerSync.SyncdMutation_SET, - Mutations: []MutationInfo{{ - Index: []string{IndexContact, target.String()}, - Version: 2, - Value: &waSyncAction.SyncActionValue{ - ContactAction: &waSyncAction.ContactAction{ - FullName: &fullName, - SaveOnPrimaryAddressbook: proto.Bool(true), - }, - }, - }}, - } -} - -func BuildRemoveContact(target types.JID) PatchInfo { - return PatchInfo{ - Type: WAPatchCriticalUnblockLow, - Operation: waServerSync.SyncdMutation_REMOVE, - Mutations: []MutationInfo{{ - Index: []string{IndexContact, target.String()}, - Version: 2, - Value: &waSyncAction.SyncActionValue{ - ContactAction: &waSyncAction.ContactAction{}, - }, - }}, - } -} - func newPinMutationInfo(target types.JID, pin bool) MutationInfo { return MutationInfo{ Index: []string{IndexPin, target.String()}, @@ -109,8 +76,7 @@ func newPinMutationInfo(target types.JID, pin bool) MutationInfo { // BuildPin builds an app state patch for pinning or unpinning a chat. func BuildPin(target types.JID, pin bool) PatchInfo { return PatchInfo{ - Type: WAPatchRegularLow, - Operation: waServerSync.SyncdMutation_SET, + Type: WAPatchRegularLow, Mutations: []MutationInfo{ newPinMutationInfo(target, pin), }, @@ -154,7 +120,6 @@ func BuildArchive(target types.JID, archive bool, lastMessageTimestamp time.Time result := PatchInfo{ Type: WAPatchRegularLow, - Operation: waServerSync.SyncdMutation_SET, Mutations: mutations, } @@ -176,8 +141,7 @@ func newLabelChatMutation(target types.JID, labelID string, labeled bool) Mutati // BuildLabelChat builds an app state patch for labeling or un(labeling) a chat. func BuildLabelChat(target types.JID, labelID string, labeled bool) PatchInfo { return PatchInfo{ - Type: WAPatchRegular, - Operation: waServerSync.SyncdMutation_SET, + Type: WAPatchRegular, Mutations: []MutationInfo{ newLabelChatMutation(target, labelID, labeled), }, @@ -199,8 +163,7 @@ func newLabelMessageMutation(target types.JID, labelID, messageID string, labele // BuildLabelMessage builds an app state patch for labeling or un(labeling) a message. func BuildLabelMessage(target types.JID, labelID, messageID string, labeled bool) PatchInfo { return PatchInfo{ - Type: WAPatchRegular, - Operation: waServerSync.SyncdMutation_SET, + Type: WAPatchRegular, Mutations: []MutationInfo{ newLabelMessageMutation(target, labelID, messageID, labeled), }, @@ -224,8 +187,7 @@ func newLabelEditMutation(labelID string, labelName string, labelColor int32, de // BuildLabelEdit builds an app state patch for editing a label. func BuildLabelEdit(labelID string, labelName string, labelColor int32, deleted bool) PatchInfo { return PatchInfo{ - Type: WAPatchRegular, - Operation: waServerSync.SyncdMutation_SET, + Type: WAPatchRegular, Mutations: []MutationInfo{ newLabelEditMutation(labelID, labelName, labelColor, deleted), }, @@ -247,8 +209,7 @@ func newSettingPushNameMutation(pushName string) MutationInfo { // BuildSettingPushName builds an app state patch for setting the push name. func BuildSettingPushName(pushName string) PatchInfo { return PatchInfo{ - Type: WAPatchCriticalBlock, - Operation: waServerSync.SyncdMutation_SET, + Type: WAPatchCriticalBlock, Mutations: []MutationInfo{ newSettingPushNameMutation(pushName), }, @@ -278,16 +239,15 @@ func BuildStar(target, sender types.JID, messageID types.MessageID, fromMe, star senderJID = "0" } return PatchInfo{ - Type: WAPatchRegularHigh, - Operation: waServerSync.SyncdMutation_SET, + Type: WAPatchRegularHigh, Mutations: []MutationInfo{ newStarMutation(targetJID, senderJID, messageID, isFromMe, starred), }, } } -func (proc *Processor) EncodePatch(keyID []byte, state HashState, patchInfo PatchInfo) ([]byte, error) { - keys, err := proc.getAppStateKey(keyID) +func (proc *Processor) EncodePatch(ctx context.Context, keyID []byte, state HashState, patchInfo PatchInfo) ([]byte, error) { + keys, err := proc.getAppStateKey(ctx, keyID) if err != nil { return nil, fmt.Errorf("failed to get app state key details with key ID %x: %w", keyID, err) } @@ -322,11 +282,11 @@ func (proc *Processor) EncodePatch(keyID []byte, state HashState, patchInfo Patc return nil, fmt.Errorf("failed to encrypt mutation: %w", err) } - valueMac := generateContentMAC(patchInfo.Operation, encryptedContent, keyID, keys.ValueMAC) + valueMac := generateContentMAC(waServerSync.SyncdMutation_SET, encryptedContent, keyID, keys.ValueMAC) indexMac := concatAndHMAC(sha256.New, keys.Index, indexBytes) mutations = append(mutations, &waServerSync.SyncdMutation{ - Operation: patchInfo.Operation.Enum(), + Operation: waServerSync.SyncdMutation_SET.Enum(), Record: &waServerSync.SyncdRecord{ Index: &waServerSync.SyncdIndex{Blob: indexMac}, Value: &waServerSync.SyncdValue{Blob: append(encryptedContent, valueMac...)}, @@ -336,7 +296,7 @@ func (proc *Processor) EncodePatch(keyID []byte, state HashState, patchInfo Patc } warn, err := state.updateHash(mutations, func(indexMAC []byte, _ int) ([]byte, error) { - return proc.Store.AppState.GetAppStateMutationMAC(string(patchInfo.Type), indexMAC) + return proc.Store.AppState.GetAppStateMutationMAC(ctx, string(patchInfo.Type), indexMAC) }) if len(warn) > 0 { proc.Log.Warnf("Warnings while updating hash for %s (sending new app state): %+v", patchInfo.Type, warn) diff --git a/appstate/keys.go b/appstate/keys.go index 2ea758d8..7e6e18c2 100644 --- a/appstate/keys.go +++ b/appstate/keys.go @@ -8,6 +8,7 @@ package appstate import ( + "context" "encoding/base64" "sync" @@ -82,7 +83,7 @@ func expandAppStateKeys(keyData []byte) (keys ExpandedAppStateKeys) { return ExpandedAppStateKeys{appStateKeyExpanded[0:32], appStateKeyExpanded[32:64], appStateKeyExpanded[64:96], appStateKeyExpanded[96:128], appStateKeyExpanded[128:160]} } -func (proc *Processor) getAppStateKey(keyID []byte) (keys ExpandedAppStateKeys, err error) { +func (proc *Processor) getAppStateKey(ctx context.Context, keyID []byte) (keys ExpandedAppStateKeys, err error) { keyCacheID := base64.RawStdEncoding.EncodeToString(keyID) var ok bool @@ -92,7 +93,7 @@ func (proc *Processor) getAppStateKey(keyID []byte) (keys ExpandedAppStateKeys, keys, ok = proc.keyCache[keyCacheID] if !ok { var keyData *store.AppStateSyncKey - keyData, err = proc.Store.AppStateKeys.GetAppStateSyncKey(keyID) + keyData, err = proc.Store.AppStateKeys.GetAppStateSyncKey(ctx, keyID) if keyData != nil { keys = expandAppStateKeys(keyData.Data) proc.keyCache[keyCacheID] = keys @@ -103,7 +104,7 @@ func (proc *Processor) getAppStateKey(keyID []byte) (keys ExpandedAppStateKeys, return } -func (proc *Processor) GetMissingKeyIDs(pl *PatchList) [][]byte { +func (proc *Processor) GetMissingKeyIDs(ctx context.Context, pl *PatchList) [][]byte { cache := make(map[string]bool) var missingKeys [][]byte checkMissing := func(keyID []byte) { @@ -113,7 +114,7 @@ func (proc *Processor) GetMissingKeyIDs(pl *PatchList) [][]byte { stringKeyID := base64.RawStdEncoding.EncodeToString(keyID) _, alreadyAdded := cache[stringKeyID] if !alreadyAdded { - keyData, err := proc.Store.AppStateKeys.GetAppStateSyncKey(keyID) + keyData, err := proc.Store.AppStateKeys.GetAppStateSyncKey(ctx, keyID) if err != nil { proc.Log.Warnf("Error fetching key %X while checking if it's missing: %v", keyID, err) } diff --git a/armadillomessage.go b/armadillomessage.go index fb863da1..a963fbb0 100644 --- a/armadillomessage.go +++ b/armadillomessage.go @@ -7,6 +7,7 @@ package waSocket import ( + "context" "fmt" "google.golang.org/protobuf/proto" @@ -19,7 +20,7 @@ import ( "github.com/techwiz37/waSocket/types/events" ) -func (cli *Client) handleDecryptedArmadillo(info *types.MessageInfo, decrypted []byte, retryCount int) bool { +func (cli *Client) handleDecryptedArmadillo(ctx context.Context, info *types.MessageInfo, decrypted []byte, retryCount int) bool { dec, err := decodeArmadillo(decrypted) if err != nil { cli.Log.Warnf("Failed to decode armadillo message from %s: %v", info.SourceString(), err) @@ -32,7 +33,7 @@ func (cli *Client) handleDecryptedArmadillo(info *types.MessageInfo, decrypted [ cli.Log.Warnf("Got sender key distribution message in non-group chat from %s", info.Sender) } else { skdm := dec.Transport.GetProtocol().GetAncillary().GetSkdm() - cli.handleSenderKeyDistributionMessage(info.Chat, info.Sender, skdm.AxolotlSenderKeyDistributionMessage) + cli.handleSenderKeyDistributionMessage(ctx, info.Chat, info.Sender, skdm.AxolotlSenderKeyDistributionMessage) } } if dec.Message != nil { diff --git a/broadcast.go b/broadcast.go index b94a4e6a..0e162ea1 100644 --- a/broadcast.go +++ b/broadcast.go @@ -7,6 +7,7 @@ package waSocket import ( + "context" "errors" "fmt" @@ -14,11 +15,11 @@ import ( "github.com/techwiz37/waSocket/types" ) -func (cli *Client) getBroadcastListParticipants(jid types.JID) ([]types.JID, error) { +func (cli *Client) getBroadcastListParticipants(ctx context.Context, jid types.JID) ([]types.JID, error) { var list []types.JID var err error if jid == types.StatusBroadcastJID { - list, err = cli.getStatusBroadcastRecipients() + list, err = cli.getStatusBroadcastRecipients(ctx) } else { return nil, ErrBroadcastListUnsupported } @@ -43,7 +44,7 @@ func (cli *Client) getBroadcastListParticipants(jid types.JID) ([]types.JID, err return list, nil } -func (cli *Client) getStatusBroadcastRecipients() ([]types.JID, error) { +func (cli *Client) getStatusBroadcastRecipients(ctx context.Context) ([]types.JID, error) { statusPrivacyOptions, err := cli.GetStatusPrivacy() if err != nil { return nil, fmt.Errorf("failed to get status privacy: %w", err) @@ -55,7 +56,7 @@ func (cli *Client) getStatusBroadcastRecipients() ([]types.JID, error) { } // Blacklist or all contacts mode. Find all contacts from database, then filter them appropriately. - contacts, err := cli.Store.Contacts.GetAllContacts() + contacts, err := cli.Store.Contacts.GetAllContacts(ctx) if err != nil { return nil, fmt.Errorf("failed to get contact list from db: %w", err) } diff --git a/client.go b/client.go index 1a2642f7..f9b4f1d9 100644 --- a/client.go +++ b/client.go @@ -20,6 +20,7 @@ import ( "time" "github.com/gorilla/websocket" + "go.mau.fi/util/exhttp" "go.mau.fi/util/random" "golang.org/x/net/proxy" @@ -67,13 +68,16 @@ type Client struct { isLoggedIn atomic.Bool expectedDisconnect atomic.Bool EnableAutoReconnect bool + InitialAutoReconnect bool LastSuccessfulConnect time.Time AutoReconnectErrors int // AutoReconnectHook is called when auto-reconnection fails. If the function returns false, // the client will not attempt to reconnect. The number of retries can be read from AutoReconnectErrors. AutoReconnectHook func(error) bool // If SynchronousAck is set, acks for messages will only be sent after all event handlers return. - SynchronousAck bool + SynchronousAck bool + EnableDecryptedEventBuffer bool + lastDecryptedBufferClear time.Time DisableLoginAutoReconnect bool @@ -421,6 +425,17 @@ func (cli *Client) SetWSDialer(dialer *websocket.Dialer) { // Connect connects the client to the WhatsApp web websocket. After connection, it will either // authenticate if there's data in the device store, or emit a QREvent to set up a new link. func (cli *Client) Connect() error { + err := cli.connect() + if exhttp.IsNetworkError(err) && cli.InitialAutoReconnect && cli.EnableAutoReconnect { + cli.Log.Errorf("Initial connection failed but reconnecting in background") + go cli.dispatchEvent(&events.Disconnected{}) + go cli.autoReconnect() + return nil + } + return err +} + +func (cli *Client) connect() error { if cli == nil { return ErrClientIsNil } @@ -519,7 +534,7 @@ func (cli *Client) autoReconnect() { cli.Log.Debugf("Automatically reconnecting after %v", autoReconnectDelay) cli.AutoReconnectErrors++ time.Sleep(autoReconnectDelay) - err := cli.Connect() + err := cli.connect() if errors.Is(err, ErrAlreadyConnected) { cli.Log.Debugf("Connect() said we're already connected after autoreconnect sleep") return @@ -577,7 +592,7 @@ func (cli *Client) unlockedDisconnect() { // // Note that this will not emit any events. The LoggedOut event is only used for external logouts // (triggered by the user from the main device or by WhatsApp servers). -func (cli *Client) Logout() error { +func (cli *Client) Logout(ctx context.Context) error { if cli == nil { return ErrClientIsNil } else if cli.MessengerConfig != nil { @@ -603,7 +618,7 @@ func (cli *Client) Logout() error { return fmt.Errorf("error sending logout request: %w", err) } cli.Disconnect() - err = cli.Store.Delete() + err = cli.Store.Delete(ctx) if err != nil { return fmt.Errorf("error deleting data from store: %w", err) } diff --git a/client_test.go b/client_test.go index cdd86689..60798a63 100644 --- a/client_test.go +++ b/client_test.go @@ -32,12 +32,13 @@ func Example() { // |------------------------------------------------------------------------------------------------------| dbLog := waLog.Stdout("Database", "DEBUG", true) - container, err := sqlstore.New("sqlite3", "file:examplestore.db?_foreign_keys=on", dbLog) + ctx := context.Background() + container, err := sqlstore.New(ctx, "sqlite3", "file:examplestore.db?_foreign_keys=on", dbLog) if err != nil { panic(err) } // If you want multiple sessions, remember their JIDs and use .GetDevice(jid) or .GetAllDevices() instead. - deviceStore, err := container.GetFirstDevice() + deviceStore, err := container.GetFirstDevice(ctx) if err != nil { panic(err) } diff --git a/connectionevents.go b/connectionevents.go index 60625e07..01d0d6ea 100644 --- a/connectionevents.go +++ b/connectionevents.go @@ -7,6 +7,7 @@ package waSocket import ( + "context" "time" waBinary "github.com/techwiz37/waSocket/binary" @@ -16,6 +17,7 @@ import ( ) func (cli *Client) handleStreamError(node *waBinary.Node) { + ctx := context.TODO() cli.isLoggedIn.Store(false) cli.clearResponseWaiters(node) code, _ := node.Attrs["code"].(string) @@ -31,7 +33,7 @@ func (cli *Client) handleStreamError(node *waBinary.Node) { cli.Log.Infof("Got 515 code, reconnecting...") go func() { cli.Disconnect() - err := cli.Connect() + err := cli.connect() if err != nil { cli.Log.Errorf("Failed to reconnect after 515 code: %v", err) } @@ -40,7 +42,7 @@ func (cli *Client) handleStreamError(node *waBinary.Node) { cli.expectDisconnect() cli.Log.Infof("Got device removed stream error, sending LoggedOut event and deleting session") go cli.dispatchEvent(&events.LoggedOut{OnConnect: false, Reason: events.ConnectFailureLoggedOut}) - err := cli.Store.Delete() + err := cli.Store.Delete(ctx) if err != nil { cli.Log.Warnf("Failed to delete store after device_removed error: %v", err) } @@ -92,6 +94,7 @@ func (cli *Client) handleIB(node *waBinary.Node) { } func (cli *Client) handleConnectFailure(node *waBinary.Node) { + ctx := context.TODO() ag := node.AttrGetter() reason := events.ConnectFailureReason(ag.Int("reason")) message := ag.OptionalString("message") @@ -118,7 +121,7 @@ func (cli *Client) handleConnectFailure(node *waBinary.Node) { if reason.IsLoggedOut() { cli.Log.Infof("Got %s connect failure, sending LoggedOut event and deleting session", reason) go cli.dispatchEvent(&events.LoggedOut{OnConnect: true, Reason: reason}) - err := cli.Store.Delete() + err := cli.Store.Delete(ctx) if err != nil { cli.Log.Warnf("Failed to delete store after %d failure: %v", int(reason), err) } @@ -148,33 +151,36 @@ func (cli *Client) handleConnectFailure(node *waBinary.Node) { } func (cli *Client) handleConnectSuccess(node *waBinary.Node) { + ctx := context.TODO() cli.Log.Infof("Successfully authenticated") cli.LastSuccessfulConnect = time.Now() cli.AutoReconnectErrors = 0 cli.isLoggedIn.Store(true) - if cli.Store.LID.IsEmpty() { - cli.Store.LID = node.AttrGetter().JID("lid") - err := cli.Store.Save() + nodeLID := node.AttrGetter().JID("lid") + if cli.Store.LID.IsEmpty() && !nodeLID.IsEmpty() { + cli.Store.LID = nodeLID + err := cli.Store.Save(ctx) if err != nil { cli.Log.Warnf("Failed to save device after updating LID: %v", err) } else { cli.Log.Infof("Updated LID to %s", cli.Store.LID) } + cli.StoreLIDPNMapping(ctx, cli.Store.GetLID(), cli.Store.GetJID()) } go func() { - if dbCount, err := cli.Store.PreKeys.UploadedPreKeyCount(); err != nil { + if dbCount, err := cli.Store.PreKeys.UploadedPreKeyCount(ctx); err != nil { cli.Log.Errorf("Failed to get number of prekeys in database: %v", err) - } else if serverCount, err := cli.getServerPreKeyCount(); err != nil { + } else if serverCount, err := cli.getServerPreKeyCount(ctx); err != nil { cli.Log.Warnf("Failed to get number of prekeys on server: %v", err) } else { cli.Log.Debugf("Database has %d prekeys, server says we have %d", dbCount, serverCount) if serverCount < MinPreKeyCount || dbCount < MinPreKeyCount { - cli.uploadPreKeys() - sc, _ := cli.getServerPreKeyCount() + cli.uploadPreKeys(ctx) + sc, _ := cli.getServerPreKeyCount(ctx) cli.Log.Debugf("Prekey count after upload: %d", sc) } } - err := cli.SetPassive(false) + err := cli.SetPassive(ctx, false) if err != nil { cli.Log.Warnf("Failed to send post-connect passive IQ: %v", err) } @@ -187,7 +193,7 @@ func (cli *Client) handleConnectSuccess(node *waBinary.Node) { // // This seems to mostly affect whether the device receives certain events. // By default, waSocket will automatically do SetPassive(false) after connecting. -func (cli *Client) SetPassive(passive bool) error { +func (cli *Client) SetPassive(ctx context.Context, passive bool) error { tag := "active" if passive { tag = "passive" @@ -196,6 +202,7 @@ func (cli *Client) SetPassive(passive bool) error { Namespace: "passive", Type: "set", To: types.ServerJID, + Context: ctx, Content: []waBinary.Node{{Tag: tag}}, }) if err != nil { diff --git a/download-to-file.go b/download-to-file.go index ebfff2ef..955cc999 100644 --- a/download-to-file.go +++ b/download-to-file.go @@ -7,6 +7,7 @@ package waSocket import ( + "context" "crypto/hmac" "crypto/sha256" "encoding/base64" @@ -37,7 +38,7 @@ type File interface { // DownloadToFile downloads the attachment from the given protobuf message. // // This is otherwise identical to [Download], but writes the attachment to a file instead of returning it as a byte slice. -func (cli *Client) DownloadToFile(msg DownloadableMessage, file File) error { +func (cli *Client) DownloadToFile(ctx context.Context, msg DownloadableMessage, file File) error { if cli == nil { return ErrClientIsNil } @@ -53,9 +54,9 @@ func (cli *Client) DownloadToFile(msg DownloadableMessage, file File) error { isWebWhatsappNetURL = strings.HasPrefix(url, "https://web.whatsapp.net") } if len(url) > 0 && !isWebWhatsappNetURL { - return cli.downloadAndDecryptToFile(url, msg.GetMediaKey(), mediaType, getSize(msg), msg.GetFileEncSHA256(), msg.GetFileSHA256(), file) + return cli.downloadAndDecryptToFile(ctx, url, msg.GetMediaKey(), mediaType, getSize(msg), msg.GetFileEncSHA256(), msg.GetFileSHA256(), file) } else if len(msg.GetDirectPath()) > 0 { - return cli.DownloadMediaWithPathToFile(msg.GetDirectPath(), msg.GetFileEncSHA256(), msg.GetFileSHA256(), msg.GetMediaKey(), getSize(msg), mediaType, mediaTypeToMMSType[mediaType], file) + return cli.DownloadMediaWithPathToFile(ctx, msg.GetDirectPath(), msg.GetFileEncSHA256(), msg.GetFileSHA256(), msg.GetMediaKey(), getSize(msg), mediaType, mediaTypeToMMSType[mediaType], file) } else { if isWebWhatsappNetURL { cli.Log.Warnf("Got a media message with a web.whatsapp.net URL (%s) and no direct path", url) @@ -64,12 +65,25 @@ func (cli *Client) DownloadToFile(msg DownloadableMessage, file File) error { } } -func (cli *Client) DownloadFBToFile(transport *waMediaTransport.WAMediaTransport_Integral, mediaType MediaType, file File) error { - return cli.DownloadMediaWithPathToFile(transport.GetDirectPath(), transport.GetFileEncSHA256(), transport.GetFileSHA256(), transport.GetMediaKey(), -1, mediaType, mediaTypeToMMSType[mediaType], file) +func (cli *Client) DownloadFBToFile( + ctx context.Context, + transport *waMediaTransport.WAMediaTransport_Integral, + mediaType MediaType, + file File, +) error { + return cli.DownloadMediaWithPathToFile(ctx, transport.GetDirectPath(), transport.GetFileEncSHA256(), transport.GetFileSHA256(), transport.GetMediaKey(), -1, mediaType, mediaTypeToMMSType[mediaType], file) } -func (cli *Client) DownloadMediaWithPathToFile(directPath string, encFileHash, fileHash, mediaKey []byte, fileLength int, mediaType MediaType, mmsType string, file File) error { - mediaConn, err := cli.refreshMediaConn(false) +func (cli *Client) DownloadMediaWithPathToFile( + ctx context.Context, + directPath string, + encFileHash, fileHash, mediaKey []byte, + fileLength int, + mediaType MediaType, + mmsType string, + file File, +) error { + mediaConn, err := cli.refreshMediaConn(ctx, false) if err != nil { return fmt.Errorf("failed to refresh media connections: %w", err) } @@ -79,7 +93,7 @@ func (cli *Client) DownloadMediaWithPathToFile(directPath string, encFileHash, f for i, host := range mediaConn.Hosts { // TODO omit hash for unencrypted media? mediaURL := fmt.Sprintf("https://%s%s&hash=%s&mms-type=%s&__wa-mms=", host.Hostname, directPath, base64.URLEncoding.EncodeToString(encFileHash), mmsType) - err = cli.downloadAndDecryptToFile(mediaURL, mediaKey, mediaType, fileLength, encFileHash, fileHash, file) + err = cli.downloadAndDecryptToFile(ctx, mediaURL, mediaKey, mediaType, fileLength, encFileHash, fileHash, file) if err == nil || errors.Is(err, ErrFileLengthMismatch) || errors.Is(err, ErrInvalidMediaSHA256) || errors.Is(err, ErrMediaDownloadFailedWith403) || errors.Is(err, ErrMediaDownloadFailedWith404) || errors.Is(err, ErrMediaDownloadFailedWith410) { return err @@ -91,10 +105,18 @@ func (cli *Client) DownloadMediaWithPathToFile(directPath string, encFileHash, f return err } -func (cli *Client) downloadAndDecryptToFile(url string, mediaKey []byte, appInfo MediaType, fileLength int, fileEncSHA256, fileSHA256 []byte, file File) error { +func (cli *Client) downloadAndDecryptToFile( + ctx context.Context, + url string, + mediaKey []byte, + appInfo MediaType, + fileLength int, + fileEncSHA256, fileSHA256 []byte, + file File, +) error { iv, cipherKey, macKey, _ := getMediaKeys(mediaKey, appInfo) hasher := sha256.New() - if mac, err := cli.downloadPossiblyEncryptedMediaWithRetriesToFile(url, fileEncSHA256, file); err != nil { + if mac, err := cli.downloadPossiblyEncryptedMediaWithRetriesToFile(ctx, url, fileEncSHA256, file); err != nil { return err } else if mediaKey == nil && fileEncSHA256 == nil && mac == nil { // Unencrypted media, just return the downloaded data @@ -107,7 +129,7 @@ func (cli *Client) downloadAndDecryptToFile(url string, mediaKey []byte, appInfo return fmt.Errorf("failed to decrypt file: %w", err) } else if info, err := file.Stat(); err != nil { return fmt.Errorf("failed to stat file: %w", err) - } else if info.Size() != int64(fileLength) { + } else if fileLength >= 0 && info.Size() != int64(fileLength) { return fmt.Errorf("%w: expected %d, got %d", ErrFileLengthMismatch, fileLength, info.Size()) } else if _, err = file.Seek(0, io.SeekStart); err != nil { return fmt.Errorf("failed to seek to start of file after decrypting: %w", err) @@ -119,12 +141,12 @@ func (cli *Client) downloadAndDecryptToFile(url string, mediaKey []byte, appInfo return nil } -func (cli *Client) downloadPossiblyEncryptedMediaWithRetriesToFile(url string, checksum []byte, file File) (mac []byte, err error) { +func (cli *Client) downloadPossiblyEncryptedMediaWithRetriesToFile(ctx context.Context, url string, checksum []byte, file File) (mac []byte, err error) { for retryNum := 0; retryNum < 5; retryNum++ { if checksum == nil { - _, _, err = cli.downloadMediaToFile(url, file) + _, _, err = cli.downloadMediaToFile(ctx, url, file) } else { - mac, err = cli.downloadEncryptedMediaToFile(url, checksum, file) + mac, err = cli.downloadEncryptedMediaToFile(ctx, url, checksum, file) } if err == nil || !shouldRetryMediaDownload(err) { return @@ -139,13 +161,17 @@ func (cli *Client) downloadPossiblyEncryptedMediaWithRetriesToFile(url string, c if err != nil { return nil, fmt.Errorf("failed to seek to start of file to retry download: %w", err) } - time.Sleep(retryDuration) + select { + case <-ctx.Done(): + return nil, ctx.Err() + case <-time.After(retryDuration): + } } return } -func (cli *Client) downloadMediaToFile(url string, file io.Writer) (int64, []byte, error) { - resp, err := cli.doMediaDownloadRequest(url) +func (cli *Client) downloadMediaToFile(ctx context.Context, url string, file io.Writer) (int64, []byte, error) { + resp, err := cli.doMediaDownloadRequest(ctx, url) if err != nil { return 0, nil, err } @@ -162,8 +188,8 @@ func (cli *Client) downloadMediaToFile(url string, file io.Writer) (int64, []byt return n, hasher.Sum(nil), err } -func (cli *Client) downloadEncryptedMediaToFile(url string, checksum []byte, file File) ([]byte, error) { - size, hash, err := cli.downloadMediaToFile(url, file) +func (cli *Client) downloadEncryptedMediaToFile(ctx context.Context, url string, checksum []byte, file File) ([]byte, error) { + size, hash, err := cli.downloadMediaToFile(ctx, url, file) if err != nil { return nil, err } else if size <= mediaHMACLength { diff --git a/download.go b/download.go index d242ebd8..48b018fd 100644 --- a/download.go +++ b/download.go @@ -7,6 +7,7 @@ package waSocket import ( + "context" "crypto/hmac" "crypto/sha256" "encoding/base64" @@ -129,21 +130,21 @@ var mediaTypeToMMSType = map[MediaType]string{ } // DownloadAny loops through the downloadable parts of the given message and downloads the first non-nil item. -func (cli *Client) DownloadAny(msg *waE2E.Message) (data []byte, err error) { +func (cli *Client) DownloadAny(ctx context.Context, msg *waE2E.Message) (data []byte, err error) { if msg == nil { return nil, ErrNothingDownloadableFound } switch { case msg.ImageMessage != nil: - return cli.Download(msg.ImageMessage) + return cli.Download(ctx, msg.ImageMessage) case msg.VideoMessage != nil: - return cli.Download(msg.VideoMessage) + return cli.Download(ctx, msg.VideoMessage) case msg.AudioMessage != nil: - return cli.Download(msg.AudioMessage) + return cli.Download(ctx, msg.AudioMessage) case msg.DocumentMessage != nil: - return cli.Download(msg.DocumentMessage) + return cli.Download(ctx, msg.DocumentMessage) case msg.StickerMessage != nil: - return cli.Download(msg.StickerMessage) + return cli.Download(ctx, msg.StickerMessage) default: return nil, ErrNothingDownloadableFound } @@ -167,12 +168,12 @@ func getSize(msg DownloadableMessage) int { // var msg *waE2E.Message // ... // thumbnailImageBytes, err := cli.DownloadThumbnail(msg.GetExtendedTextMessage()) -func (cli *Client) DownloadThumbnail(msg DownloadableThumbnail) ([]byte, error) { +func (cli *Client) DownloadThumbnail(ctx context.Context, msg DownloadableThumbnail) ([]byte, error) { mediaType, ok := classToThumbnailMediaType[msg.ProtoReflect().Descriptor().Name()] if !ok { return nil, fmt.Errorf("%w '%s'", ErrUnknownMediaType, string(msg.ProtoReflect().Descriptor().Name())) } else if len(msg.GetThumbnailDirectPath()) > 0 { - return cli.DownloadMediaWithPath(msg.GetThumbnailDirectPath(), msg.GetThumbnailEncSHA256(), msg.GetThumbnailSHA256(), msg.GetMediaKey(), -1, mediaType, mediaTypeToMMSType[mediaType]) + return cli.DownloadMediaWithPath(ctx, msg.GetThumbnailDirectPath(), msg.GetThumbnailEncSHA256(), msg.GetThumbnailSHA256(), msg.GetMediaKey(), -1, mediaType, mediaTypeToMMSType[mediaType]) } else { return nil, ErrNoURLPresent } @@ -200,7 +201,7 @@ func GetMediaType(msg DownloadableMessage) MediaType { // imageData, err := cli.Download(msg.GetImageMessage()) // // You can also use DownloadAny to download the first non-nil sub-message. -func (cli *Client) Download(msg DownloadableMessage) ([]byte, error) { +func (cli *Client) Download(ctx context.Context, msg DownloadableMessage) ([]byte, error) { if cli == nil { return nil, ErrClientIsNil } @@ -216,9 +217,9 @@ func (cli *Client) Download(msg DownloadableMessage) ([]byte, error) { isWebWhatsappNetURL = strings.HasPrefix(url, "https://web.whatsapp.net") } if len(url) > 0 && !isWebWhatsappNetURL { - return cli.downloadAndDecrypt(url, msg.GetMediaKey(), mediaType, getSize(msg), msg.GetFileEncSHA256(), msg.GetFileSHA256()) + return cli.downloadAndDecrypt(ctx, url, msg.GetMediaKey(), mediaType, getSize(msg), msg.GetFileEncSHA256(), msg.GetFileSHA256()) } else if len(msg.GetDirectPath()) > 0 { - return cli.DownloadMediaWithPath(msg.GetDirectPath(), msg.GetFileEncSHA256(), msg.GetFileSHA256(), msg.GetMediaKey(), getSize(msg), mediaType, mediaTypeToMMSType[mediaType]) + return cli.DownloadMediaWithPath(ctx, msg.GetDirectPath(), msg.GetFileEncSHA256(), msg.GetFileSHA256(), msg.GetMediaKey(), getSize(msg), mediaType, mediaTypeToMMSType[mediaType]) } else { if isWebWhatsappNetURL { cli.Log.Warnf("Got a media message with a web.whatsapp.net URL (%s) and no direct path", url) @@ -227,14 +228,25 @@ func (cli *Client) Download(msg DownloadableMessage) ([]byte, error) { } } -func (cli *Client) DownloadFB(transport *waMediaTransport.WAMediaTransport_Integral, mediaType MediaType) ([]byte, error) { - return cli.DownloadMediaWithPath(transport.GetDirectPath(), transport.GetFileEncSHA256(), transport.GetFileSHA256(), transport.GetMediaKey(), -1, mediaType, mediaTypeToMMSType[mediaType]) +func (cli *Client) DownloadFB( + ctx context.Context, + transport *waMediaTransport.WAMediaTransport_Integral, + mediaType MediaType, +) ([]byte, error) { + return cli.DownloadMediaWithPath(ctx, transport.GetDirectPath(), transport.GetFileEncSHA256(), transport.GetFileSHA256(), transport.GetMediaKey(), -1, mediaType, mediaTypeToMMSType[mediaType]) } // DownloadMediaWithPath downloads an attachment by manually specifying the path and encryption details. -func (cli *Client) DownloadMediaWithPath(directPath string, encFileHash, fileHash, mediaKey []byte, fileLength int, mediaType MediaType, mmsType string) (data []byte, err error) { +func (cli *Client) DownloadMediaWithPath( + ctx context.Context, + directPath string, + encFileHash, fileHash, mediaKey []byte, + fileLength int, + mediaType MediaType, + mmsType string, +) (data []byte, err error) { var mediaConn *MediaConn - mediaConn, err = cli.refreshMediaConn(false) + mediaConn, err = cli.refreshMediaConn(ctx, false) if err != nil { return nil, fmt.Errorf("failed to refresh media connections: %w", err) } @@ -244,7 +256,7 @@ func (cli *Client) DownloadMediaWithPath(directPath string, encFileHash, fileHas for i, host := range mediaConn.Hosts { // TODO omit hash for unencrypted media? mediaURL := fmt.Sprintf("https://%s%s&hash=%s&mms-type=%s&__wa-mms=", host.Hostname, directPath, base64.URLEncoding.EncodeToString(encFileHash), mmsType) - data, err = cli.downloadAndDecrypt(mediaURL, mediaKey, mediaType, fileLength, encFileHash, fileHash) + data, err = cli.downloadAndDecrypt(ctx, mediaURL, mediaKey, mediaType, fileLength, encFileHash, fileHash) if err == nil || errors.Is(err, ErrFileLengthMismatch) || errors.Is(err, ErrInvalidMediaSHA256) || errors.Is(err, ErrMediaDownloadFailedWith403) || errors.Is(err, ErrMediaDownloadFailedWith404) || errors.Is(err, ErrMediaDownloadFailedWith410) { return @@ -256,10 +268,18 @@ func (cli *Client) DownloadMediaWithPath(directPath string, encFileHash, fileHas return } -func (cli *Client) downloadAndDecrypt(url string, mediaKey []byte, appInfo MediaType, fileLength int, fileEncSHA256, fileSHA256 []byte) (data []byte, err error) { +func (cli *Client) downloadAndDecrypt( + ctx context.Context, + url string, + mediaKey []byte, + appInfo MediaType, + fileLength int, + fileEncSHA256, + fileSHA256 []byte, +) (data []byte, err error) { iv, cipherKey, macKey, _ := getMediaKeys(mediaKey, appInfo) var ciphertext, mac []byte - if ciphertext, mac, err = cli.downloadPossiblyEncryptedMediaWithRetries(url, fileEncSHA256); err != nil { + if ciphertext, mac, err = cli.downloadPossiblyEncryptedMediaWithRetries(ctx, url, fileEncSHA256); err != nil { } else if mediaKey == nil && fileEncSHA256 == nil && mac == nil { // Unencrypted media, just return the downloaded data @@ -289,12 +309,12 @@ func shouldRetryMediaDownload(err error) bool { (errors.As(err, &httpErr) && retryafter.Should(httpErr.StatusCode, true)) } -func (cli *Client) downloadPossiblyEncryptedMediaWithRetries(url string, checksum []byte) (file, mac []byte, err error) { +func (cli *Client) downloadPossiblyEncryptedMediaWithRetries(ctx context.Context, url string, checksum []byte) (file, mac []byte, err error) { for retryNum := 0; retryNum < 5; retryNum++ { if checksum == nil { - file, err = cli.downloadMedia(url) + file, err = cli.downloadMedia(ctx, url) } else { - file, mac, err = cli.downloadEncryptedMedia(url, checksum) + file, mac, err = cli.downloadEncryptedMedia(ctx, url, checksum) } if err == nil || !shouldRetryMediaDownload(err) { return @@ -305,13 +325,17 @@ func (cli *Client) downloadPossiblyEncryptedMediaWithRetries(url string, checksu retryDuration = retryafter.Parse(httpErr.Response.Header.Get("Retry-After"), retryDuration) } cli.Log.Warnf("Failed to download media due to network error: %v, retrying in %s...", err, retryDuration) - time.Sleep(retryDuration) + select { + case <-ctx.Done(): + return nil, nil, ctx.Err() + case <-time.After(retryDuration): + } } return } -func (cli *Client) doMediaDownloadRequest(url string) (*http.Response, error) { - req, err := http.NewRequest(http.MethodGet, url, nil) +func (cli *Client) doMediaDownloadRequest(ctx context.Context, url string) (*http.Response, error) { + req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) if err != nil { return nil, fmt.Errorf("failed to prepare request: %w", err) } @@ -332,8 +356,8 @@ func (cli *Client) doMediaDownloadRequest(url string) (*http.Response, error) { return resp, nil } -func (cli *Client) downloadMedia(url string) ([]byte, error) { - resp, err := cli.doMediaDownloadRequest(url) +func (cli *Client) downloadMedia(ctx context.Context, url string) ([]byte, error) { + resp, err := cli.doMediaDownloadRequest(ctx, url) if err != nil { return nil, err } @@ -344,8 +368,8 @@ func (cli *Client) downloadMedia(url string) ([]byte, error) { const mediaHMACLength = 10 -func (cli *Client) downloadEncryptedMedia(url string, checksum []byte) (file, mac []byte, err error) { - data, err := cli.downloadMedia(url) +func (cli *Client) downloadEncryptedMedia(ctx context.Context, url string, checksum []byte) (file, mac []byte, err error) { + data, err := cli.downloadMedia(ctx, url) if err != nil { return } else if len(data) <= mediaHMACLength { diff --git a/go.mod b/go.mod index c99ba3c2..974cfad2 100644 --- a/go.mod +++ b/go.mod @@ -2,24 +2,25 @@ module github.com/techwiz37/waSocket go 1.23.0 -toolchain go1.24.1 +toolchain go1.24.3 require ( github.com/google/uuid v1.6.0 github.com/gorilla/websocket v1.5.0 - github.com/rs/zerolog v1.33.0 - go.mau.fi/libsignal v0.1.2 - go.mau.fi/util v0.8.6 - golang.org/x/crypto v0.36.0 - golang.org/x/net v0.37.0 - google.golang.org/protobuf v1.36.5 + github.com/rs/zerolog v1.34.0 + go.mau.fi/libsignal v0.2.0 + go.mau.fi/util v0.8.7 + golang.org/x/crypto v0.38.0 + golang.org/x/net v0.40.0 + google.golang.org/protobuf v1.36.6 ) require ( filippo.io/edwards25519 v1.1.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.19 // indirect - github.com/petermattis/goid v0.0.0-20250303134427-723919f7f203 // indirect - golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect - golang.org/x/sys v0.31.0 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/petermattis/goid v0.0.0-20250508124226-395b08cebbdb // indirect + golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 // indirect + golang.org/x/sys v0.33.0 // indirect + golang.org/x/text v0.25.0 // indirect ) diff --git a/go.sum b/go.sum index 3043c24c..33815dfc 100644 --- a/go.sum +++ b/go.sum @@ -12,39 +12,43 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM= -github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/petermattis/goid v0.0.0-20250303134427-723919f7f203 h1:E7Kmf11E4K7B5hDti2K2NqPb1nlYlGYsu02S1JNd/Bs= -github.com/petermattis/goid v0.0.0-20250303134427-723919f7f203/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-sqlite3 v1.14.28 h1:ThEiQrnbtumT+QMknw63Befp/ce/nUPgBPMlRFEum7A= +github.com/mattn/go-sqlite3 v1.14.28/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/petermattis/goid v0.0.0-20250508124226-395b08cebbdb h1:3PrKuO92dUTMrQ9dx0YNejC6U/Si6jqKmyQ9vWjwqR4= +github.com/petermattis/goid v0.0.0-20250508124226-395b08cebbdb/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= -github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= +github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= +github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -go.mau.fi/libsignal v0.1.2 h1:Vs16DXWxSKyzVtI+EEXLCSy5pVWzzCzp/2eqFGvLyP0= -go.mau.fi/libsignal v0.1.2/go.mod h1:JpnLSSJptn/s1sv7I56uEMywvz8x4YzxeF5OzdPb6PE= -go.mau.fi/util v0.8.6 h1:AEK13rfgtiZJL2YsNK+W4ihhYCuukcRom8WPP/w/L54= -go.mau.fi/util v0.8.6/go.mod h1:uNB3UTXFbkpp7xL1M/WvQks90B/L4gvbLpbS0603KOE= -golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= -golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= -golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= -golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM= -golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= -golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +go.mau.fi/libsignal v0.2.0 h1:oRXj3OHhEJq51BFEM8/50UZblmWiTYH93hsNTPcbk90= +go.mau.fi/libsignal v0.2.0/go.mod h1:tvjoDsMejgT38CXTXwqaYu8itBiY8O2Mb6biWvZBb9k= +go.mau.fi/util v0.8.7 h1:ywKarPxouJQEEijTs4mPlxC7F4AWEKokEpWc+2TYy6c= +go.mau.fi/util v0.8.7/go.mod h1:j6R3cENakc1f8HpQeFl0N15UiSTcNmIfDBNJUbL71RY= +golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= +golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= +golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 h1:y5zboxd6LQAqYIhHnB48p0ByQ/GnQx2BE33L8BOHQkI= +golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6/go.mod h1:U6Lno4MTRCDY+Ba7aCcauB9T60gsv5s4ralQzP72ZoQ= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internals.go b/internals.go index 4a2834fb..7200d11e 100644 --- a/internals.go +++ b/internals.go @@ -1,7 +1,7 @@ // GENERATED BY internals_generate.go; DO NOT EDIT //go:generate go run internals_generate.go -//go:generate goimports -local github.com/techwiz37/waSocket -w internals.go +//go:generate goimports -local github.com/techwiz37/waSocket/ -w internals.go package waSocket @@ -47,16 +47,16 @@ func (int *DangerousInternalClient) FilterContacts(mutations []appstate.Mutation return int.c.filterContacts(mutations) } -func (int *DangerousInternalClient) DispatchAppState(mutation appstate.Mutation, fullSync bool, emitOnFullSync bool) { - int.c.dispatchAppState(mutation, fullSync, emitOnFullSync) +func (int *DangerousInternalClient) DispatchAppState(ctx context.Context, mutation appstate.Mutation, fullSync bool, emitOnFullSync bool) { + int.c.dispatchAppState(ctx, mutation, fullSync, emitOnFullSync) } -func (int *DangerousInternalClient) DownloadExternalAppStateBlob(ref *waServerSync.ExternalBlobReference) ([]byte, error) { - return int.c.downloadExternalAppStateBlob(ref) +func (int *DangerousInternalClient) DownloadExternalAppStateBlob(ctx context.Context, ref *waServerSync.ExternalBlobReference) ([]byte, error) { + return int.c.downloadExternalAppStateBlob(ctx, ref) } -func (int *DangerousInternalClient) FetchAppStatePatches(name appstate.WAPatchName, fromVersion uint64, snapshot bool) (*appstate.PatchList, error) { - return int.c.fetchAppStatePatches(name, fromVersion, snapshot) +func (int *DangerousInternalClient) FetchAppStatePatches(ctx context.Context, name appstate.WAPatchName, fromVersion uint64, snapshot bool) (*appstate.PatchList, error) { + return int.c.fetchAppStatePatches(ctx, name, fromVersion, snapshot) } func (int *DangerousInternalClient) RequestMissingAppStateKeys(ctx context.Context, patches *appstate.PatchList) { @@ -67,16 +67,16 @@ func (int *DangerousInternalClient) RequestAppStateKeys(ctx context.Context, raw int.c.requestAppStateKeys(ctx, rawKeyIDs) } -func (int *DangerousInternalClient) HandleDecryptedArmadillo(info *types.MessageInfo, decrypted []byte, retryCount int) bool { - return int.c.handleDecryptedArmadillo(info, decrypted, retryCount) +func (int *DangerousInternalClient) HandleDecryptedArmadillo(ctx context.Context, info *types.MessageInfo, decrypted []byte, retryCount int) bool { + return int.c.handleDecryptedArmadillo(ctx, info, decrypted, retryCount) } -func (int *DangerousInternalClient) GetBroadcastListParticipants(jid types.JID) ([]types.JID, error) { - return int.c.getBroadcastListParticipants(jid) +func (int *DangerousInternalClient) GetBroadcastListParticipants(ctx context.Context, jid types.JID) ([]types.JID, error) { + return int.c.getBroadcastListParticipants(ctx, jid) } -func (int *DangerousInternalClient) GetStatusBroadcastRecipients() ([]types.JID, error) { - return int.c.getStatusBroadcastRecipients() +func (int *DangerousInternalClient) GetStatusBroadcastRecipients(ctx context.Context) ([]types.JID, error) { + return int.c.getStatusBroadcastRecipients(ctx) } func (int *DangerousInternalClient) HandleCallEvent(node *waBinary.Node) { @@ -159,40 +159,40 @@ func (int *DangerousInternalClient) HandleConnectSuccess(node *waBinary.Node) { int.c.handleConnectSuccess(node) } -func (int *DangerousInternalClient) DownloadAndDecrypt(url string, mediaKey []byte, appInfo MediaType, fileLength int, fileEncSHA256, fileSHA256 []byte) (data []byte, err error) { - return int.c.downloadAndDecrypt(url, mediaKey, appInfo, fileLength, fileEncSHA256, fileSHA256) +func (int *DangerousInternalClient) DownloadAndDecrypt(ctx context.Context, url string, mediaKey []byte, appInfo MediaType, fileLength int, fileEncSHA256, fileSHA256 []byte) (data []byte, err error) { + return int.c.downloadAndDecrypt(ctx, url, mediaKey, appInfo, fileLength, fileEncSHA256, fileSHA256) } -func (int *DangerousInternalClient) DownloadPossiblyEncryptedMediaWithRetries(url string, checksum []byte) (file, mac []byte, err error) { - return int.c.downloadPossiblyEncryptedMediaWithRetries(url, checksum) +func (int *DangerousInternalClient) DownloadPossiblyEncryptedMediaWithRetries(ctx context.Context, url string, checksum []byte) (file, mac []byte, err error) { + return int.c.downloadPossiblyEncryptedMediaWithRetries(ctx, url, checksum) } -func (int *DangerousInternalClient) DoMediaDownloadRequest(url string) (*http.Response, error) { - return int.c.doMediaDownloadRequest(url) +func (int *DangerousInternalClient) DoMediaDownloadRequest(ctx context.Context, url string) (*http.Response, error) { + return int.c.doMediaDownloadRequest(ctx, url) } -func (int *DangerousInternalClient) DownloadMedia(url string) ([]byte, error) { - return int.c.downloadMedia(url) +func (int *DangerousInternalClient) DownloadMedia(ctx context.Context, url string) ([]byte, error) { + return int.c.downloadMedia(ctx, url) } -func (int *DangerousInternalClient) DownloadEncryptedMedia(url string, checksum []byte) (file, mac []byte, err error) { - return int.c.downloadEncryptedMedia(url, checksum) +func (int *DangerousInternalClient) DownloadEncryptedMedia(ctx context.Context, url string, checksum []byte) (file, mac []byte, err error) { + return int.c.downloadEncryptedMedia(ctx, url, checksum) } -func (int *DangerousInternalClient) DownloadAndDecryptToFile(url string, mediaKey []byte, appInfo MediaType, fileLength int, fileEncSHA256, fileSHA256 []byte, file File) error { - return int.c.downloadAndDecryptToFile(url, mediaKey, appInfo, fileLength, fileEncSHA256, fileSHA256, file) +func (int *DangerousInternalClient) DownloadAndDecryptToFile(ctx context.Context, url string, mediaKey []byte, appInfo MediaType, fileLength int, fileEncSHA256, fileSHA256 []byte, file File) error { + return int.c.downloadAndDecryptToFile(ctx, url, mediaKey, appInfo, fileLength, fileEncSHA256, fileSHA256, file) } -func (int *DangerousInternalClient) DownloadPossiblyEncryptedMediaWithRetriesToFile(url string, checksum []byte, file File) (mac []byte, err error) { - return int.c.downloadPossiblyEncryptedMediaWithRetriesToFile(url, checksum, file) +func (int *DangerousInternalClient) DownloadPossiblyEncryptedMediaWithRetriesToFile(ctx context.Context, url string, checksum []byte, file File) (mac []byte, err error) { + return int.c.downloadPossiblyEncryptedMediaWithRetriesToFile(ctx, url, checksum, file) } -func (int *DangerousInternalClient) DownloadMediaToFile(url string, file io.Writer) (int64, []byte, error) { - return int.c.downloadMediaToFile(url, file) +func (int *DangerousInternalClient) DownloadMediaToFile(ctx context.Context, url string, file io.Writer) (int64, []byte, error) { + return int.c.downloadMediaToFile(ctx, url, file) } -func (int *DangerousInternalClient) DownloadEncryptedMediaToFile(url string, checksum []byte, file File) ([]byte, error) { - return int.c.downloadEncryptedMediaToFile(url, checksum, file) +func (int *DangerousInternalClient) DownloadEncryptedMediaToFile(ctx context.Context, url string, checksum []byte, file File) ([]byte, error) { + return int.c.downloadEncryptedMediaToFile(ctx, url, checksum, file) } func (int *DangerousInternalClient) SendGroupIQ(ctx context.Context, iqType infoQueryType, jid types.JID, content waBinary.Node) (*waBinary.Node, error) { @@ -239,16 +239,16 @@ func (int *DangerousInternalClient) SendKeepAlive(ctx context.Context) (isSucces return int.c.sendKeepAlive(ctx) } -func (int *DangerousInternalClient) RefreshMediaConn(force bool) (*MediaConn, error) { - return int.c.refreshMediaConn(force) +func (int *DangerousInternalClient) RefreshMediaConn(ctx context.Context, force bool) (*MediaConn, error) { + return int.c.refreshMediaConn(ctx, force) } -func (int *DangerousInternalClient) QueryMediaConn() (*MediaConn, error) { - return int.c.queryMediaConn() +func (int *DangerousInternalClient) QueryMediaConn(ctx context.Context) (*MediaConn, error) { + return int.c.queryMediaConn(ctx) } -func (int *DangerousInternalClient) HandleMediaRetryNotification(node *waBinary.Node) { - int.c.handleMediaRetryNotification(node) +func (int *DangerousInternalClient) HandleMediaRetryNotification(ctx context.Context, node *waBinary.Node) { + int.c.handleMediaRetryNotification(ctx, node) } func (int *DangerousInternalClient) HandleEncryptedMessage(node *waBinary.Node) { @@ -271,84 +271,88 @@ func (int *DangerousInternalClient) ParseMessageInfo(node *waBinary.Node) (*type return int.c.parseMessageInfo(node) } -func (int *DangerousInternalClient) HandlePlaintextMessage(info *types.MessageInfo, node *waBinary.Node) { - int.c.handlePlaintextMessage(info, node) +func (int *DangerousInternalClient) HandlePlaintextMessage(ctx context.Context, info *types.MessageInfo, node *waBinary.Node) { + int.c.handlePlaintextMessage(ctx, info, node) } -func (int *DangerousInternalClient) MigrateSessionStore(pn, lid types.JID) { - int.c.migrateSessionStore(pn, lid) +func (int *DangerousInternalClient) MigrateSessionStore(ctx context.Context, pn, lid types.JID) { + int.c.migrateSessionStore(ctx, pn, lid) } -func (int *DangerousInternalClient) DecryptMessages(info *types.MessageInfo, node *waBinary.Node) { - int.c.decryptMessages(info, node) +func (int *DangerousInternalClient) DecryptMessages(ctx context.Context, info *types.MessageInfo, node *waBinary.Node) { + int.c.decryptMessages(ctx, info, node) } -func (int *DangerousInternalClient) ClearUntrustedIdentity(target types.JID) { - int.c.clearUntrustedIdentity(target) +func (int *DangerousInternalClient) ClearUntrustedIdentity(ctx context.Context, target types.JID) error { + return int.c.clearUntrustedIdentity(ctx, target) } -func (int *DangerousInternalClient) DecryptDM(child *waBinary.Node, from types.JID, isPreKey bool) ([]byte, error) { - return int.c.decryptDM(child, from, isPreKey) +func (int *DangerousInternalClient) BufferedDecrypt(ctx context.Context, ciphertext []byte, serverTimestamp time.Time, decrypt func(context.Context) ([]byte, error)) (plaintext []byte, ciphertextHash [32]byte, err error) { + return int.c.bufferedDecrypt(ctx, ciphertext, serverTimestamp, decrypt) } -func (int *DangerousInternalClient) DecryptGroupMsg(child *waBinary.Node, from types.JID, chat types.JID) ([]byte, error) { - return int.c.decryptGroupMsg(child, from, chat) +func (int *DangerousInternalClient) DecryptDM(ctx context.Context, child *waBinary.Node, from types.JID, isPreKey bool, serverTS time.Time) ([]byte, *[32]byte, error) { + return int.c.decryptDM(ctx, child, from, isPreKey, serverTS) } -func (int *DangerousInternalClient) HandleSenderKeyDistributionMessage(chat, from types.JID, axolotlSKDM []byte) { - int.c.handleSenderKeyDistributionMessage(chat, from, axolotlSKDM) +func (int *DangerousInternalClient) DecryptGroupMsg(ctx context.Context, child *waBinary.Node, from types.JID, chat types.JID, serverTS time.Time) ([]byte, *[32]byte, error) { + return int.c.decryptGroupMsg(ctx, child, from, chat, serverTS) +} + +func (int *DangerousInternalClient) HandleSenderKeyDistributionMessage(ctx context.Context, chat, from types.JID, axolotlSKDM []byte) { + int.c.handleSenderKeyDistributionMessage(ctx, chat, from, axolotlSKDM) } func (int *DangerousInternalClient) HandleHistorySyncNotificationLoop() { int.c.handleHistorySyncNotificationLoop() } -func (int *DangerousInternalClient) HandleHistorySyncNotification(notif *waE2E.HistorySyncNotification) { - int.c.handleHistorySyncNotification(notif) +func (int *DangerousInternalClient) HandleHistorySyncNotification(ctx context.Context, notif *waE2E.HistorySyncNotification) { + int.c.handleHistorySyncNotification(ctx, notif) } -func (int *DangerousInternalClient) HandleAppStateSyncKeyShare(keys *waE2E.AppStateSyncKeyShare) { - int.c.handleAppStateSyncKeyShare(keys) +func (int *DangerousInternalClient) HandleAppStateSyncKeyShare(ctx context.Context, keys *waE2E.AppStateSyncKeyShare) { + int.c.handleAppStateSyncKeyShare(ctx, keys) } func (int *DangerousInternalClient) HandlePlaceholderResendResponse(msg *waE2E.PeerDataOperationRequestResponseMessage) { int.c.handlePlaceholderResendResponse(msg) } -func (int *DangerousInternalClient) HandleProtocolMessage(info *types.MessageInfo, msg *waE2E.Message) { - int.c.handleProtocolMessage(info, msg) +func (int *DangerousInternalClient) HandleProtocolMessage(ctx context.Context, info *types.MessageInfo, msg *waE2E.Message) { + int.c.handleProtocolMessage(ctx, info, msg) } -func (int *DangerousInternalClient) ProcessProtocolParts(info *types.MessageInfo, msg *waE2E.Message) { - int.c.processProtocolParts(info, msg) +func (int *DangerousInternalClient) ProcessProtocolParts(ctx context.Context, info *types.MessageInfo, msg *waE2E.Message) { + int.c.processProtocolParts(ctx, info, msg) } -func (int *DangerousInternalClient) StoreMessageSecret(info *types.MessageInfo, msg *waE2E.Message) { - int.c.storeMessageSecret(info, msg) +func (int *DangerousInternalClient) StoreMessageSecret(ctx context.Context, info *types.MessageInfo, msg *waE2E.Message) { + int.c.storeMessageSecret(ctx, info, msg) } -func (int *DangerousInternalClient) StoreHistoricalMessageSecrets(conversations []*waHistorySync.Conversation) { - int.c.storeHistoricalMessageSecrets(conversations) +func (int *DangerousInternalClient) StoreHistoricalMessageSecrets(ctx context.Context, conversations []*waHistorySync.Conversation) { + int.c.storeHistoricalMessageSecrets(ctx, conversations) } -func (int *DangerousInternalClient) HandleDecryptedMessage(info *types.MessageInfo, msg *waE2E.Message, retryCount int) { - int.c.handleDecryptedMessage(info, msg, retryCount) +func (int *DangerousInternalClient) HandleDecryptedMessage(ctx context.Context, info *types.MessageInfo, msg *waE2E.Message, retryCount int) { + int.c.handleDecryptedMessage(ctx, info, msg, retryCount) } func (int *DangerousInternalClient) SendProtocolMessageReceipt(id types.MessageID, msgType types.ReceiptType) { int.c.sendProtocolMessageReceipt(id, msgType) } -func (int *DangerousInternalClient) DecryptMsgSecret(msg *events.Message, useCase MsgSecretType, encrypted messageEncryptedSecret, origMsgKey *waCommon.MessageKey) ([]byte, error) { - return int.c.decryptMsgSecret(msg, useCase, encrypted, origMsgKey) +func (int *DangerousInternalClient) DecryptMsgSecret(ctx context.Context, msg *events.Message, useCase MsgSecretType, encrypted messageEncryptedSecret, origMsgKey *waCommon.MessageKey) ([]byte, error) { + return int.c.decryptMsgSecret(ctx, msg, useCase, encrypted, origMsgKey) } -func (int *DangerousInternalClient) EncryptMsgSecret(ownID, chat, origSender types.JID, origMsgID types.MessageID, useCase MsgSecretType, plaintext []byte) (ciphertext, iv []byte, err error) { - return int.c.encryptMsgSecret(ownID, chat, origSender, origMsgID, useCase, plaintext) +func (int *DangerousInternalClient) EncryptMsgSecret(ctx context.Context, ownID, chat, origSender types.JID, origMsgID types.MessageID, useCase MsgSecretType, plaintext []byte) (ciphertext, iv []byte, err error) { + return int.c.encryptMsgSecret(ctx, ownID, chat, origSender, origMsgID, useCase, plaintext) } -func (int *DangerousInternalClient) DecryptBotMessage(messageSecret []byte, msMsg messageEncryptedSecret, messageID types.MessageID, targetSenderJID types.JID, info *types.MessageInfo) ([]byte, error) { - return int.c.decryptBotMessage(messageSecret, msMsg, messageID, targetSenderJID, info) +func (int *DangerousInternalClient) DecryptBotMessage(ctx context.Context, messageSecret []byte, msMsg messageEncryptedSecret, messageID types.MessageID, targetSenderJID types.JID, info *types.MessageInfo) ([]byte, error) { + return int.c.decryptBotMessage(ctx, messageSecret, msMsg, messageID, targetSenderJID, info) } func (int *DangerousInternalClient) SendMexIQ(ctx context.Context, queryID string, variables any) (json.RawMessage, error) { @@ -359,68 +363,68 @@ func (int *DangerousInternalClient) GetNewsletterInfo(input map[string]any, fetc return int.c.getNewsletterInfo(input, fetchViewerMeta) } -func (int *DangerousInternalClient) HandleEncryptNotification(node *waBinary.Node) { - int.c.handleEncryptNotification(node) +func (int *DangerousInternalClient) HandleEncryptNotification(ctx context.Context, node *waBinary.Node) { + int.c.handleEncryptNotification(ctx, node) } -func (int *DangerousInternalClient) HandleAppStateNotification(node *waBinary.Node) { - int.c.handleAppStateNotification(node) +func (int *DangerousInternalClient) HandleAppStateNotification(ctx context.Context, node *waBinary.Node) { + int.c.handleAppStateNotification(ctx, node) } -func (int *DangerousInternalClient) HandlePictureNotification(node *waBinary.Node) { - int.c.handlePictureNotification(node) +func (int *DangerousInternalClient) HandlePictureNotification(ctx context.Context, node *waBinary.Node) { + int.c.handlePictureNotification(ctx, node) } -func (int *DangerousInternalClient) HandleDeviceNotification(node *waBinary.Node) { - int.c.handleDeviceNotification(node) +func (int *DangerousInternalClient) HandleDeviceNotification(ctx context.Context, node *waBinary.Node) { + int.c.handleDeviceNotification(ctx, node) } -func (int *DangerousInternalClient) HandleFBDeviceNotification(node *waBinary.Node) { - int.c.handleFBDeviceNotification(node) +func (int *DangerousInternalClient) HandleFBDeviceNotification(ctx context.Context, node *waBinary.Node) { + int.c.handleFBDeviceNotification(ctx, node) } -func (int *DangerousInternalClient) HandleOwnDevicesNotification(node *waBinary.Node) { - int.c.handleOwnDevicesNotification(node) +func (int *DangerousInternalClient) HandleOwnDevicesNotification(ctx context.Context, node *waBinary.Node) { + int.c.handleOwnDevicesNotification(ctx, node) } -func (int *DangerousInternalClient) HandleBlocklist(node *waBinary.Node) { - int.c.handleBlocklist(node) +func (int *DangerousInternalClient) HandleBlocklist(ctx context.Context, node *waBinary.Node) { + int.c.handleBlocklist(ctx, node) } -func (int *DangerousInternalClient) HandleAccountSyncNotification(node *waBinary.Node) { - int.c.handleAccountSyncNotification(node) +func (int *DangerousInternalClient) HandleAccountSyncNotification(ctx context.Context, node *waBinary.Node) { + int.c.handleAccountSyncNotification(ctx, node) } -func (int *DangerousInternalClient) HandlePrivacyTokenNotification(node *waBinary.Node) { - int.c.handlePrivacyTokenNotification(node) +func (int *DangerousInternalClient) HandlePrivacyTokenNotification(ctx context.Context, node *waBinary.Node) { + int.c.handlePrivacyTokenNotification(ctx, node) } func (int *DangerousInternalClient) ParseNewsletterMessages(node *waBinary.Node) []*types.NewsletterMessage { return int.c.parseNewsletterMessages(node) } -func (int *DangerousInternalClient) HandleNewsletterNotification(node *waBinary.Node) { - int.c.handleNewsletterNotification(node) +func (int *DangerousInternalClient) HandleNewsletterNotification(ctx context.Context, node *waBinary.Node) { + int.c.handleNewsletterNotification(ctx, node) } -func (int *DangerousInternalClient) HandleMexNotification(node *waBinary.Node) { - int.c.handleMexNotification(node) +func (int *DangerousInternalClient) HandleMexNotification(ctx context.Context, node *waBinary.Node) { + int.c.handleMexNotification(ctx, node) } -func (int *DangerousInternalClient) HandleStatusNotification(node *waBinary.Node) { - int.c.handleStatusNotification(node) +func (int *DangerousInternalClient) HandleStatusNotification(ctx context.Context, node *waBinary.Node) { + int.c.handleStatusNotification(ctx, node) } func (int *DangerousInternalClient) HandleNotification(node *waBinary.Node) { int.c.handleNotification(node) } -func (int *DangerousInternalClient) TryHandleCodePairNotification(parentNode *waBinary.Node) { - int.c.tryHandleCodePairNotification(parentNode) +func (int *DangerousInternalClient) TryHandleCodePairNotification(ctx context.Context, parentNode *waBinary.Node) { + int.c.tryHandleCodePairNotification(ctx, parentNode) } -func (int *DangerousInternalClient) HandleCodePairNotification(parentNode *waBinary.Node) error { - return int.c.handleCodePairNotification(parentNode) +func (int *DangerousInternalClient) HandleCodePairNotification(ctx context.Context, parentNode *waBinary.Node) error { + return int.c.handleCodePairNotification(ctx, parentNode) } func (int *DangerousInternalClient) HandleIQ(node *waBinary.Node) { @@ -439,20 +443,20 @@ func (int *DangerousInternalClient) HandlePairSuccess(node *waBinary.Node) { int.c.handlePairSuccess(node) } -func (int *DangerousInternalClient) HandlePair(deviceIdentityBytes []byte, reqID, businessName, platform string, jid, lid types.JID) error { - return int.c.handlePair(deviceIdentityBytes, reqID, businessName, platform, jid, lid) +func (int *DangerousInternalClient) HandlePair(ctx context.Context, deviceIdentityBytes []byte, reqID, businessName, platform string, jid, lid types.JID) error { + return int.c.handlePair(ctx, deviceIdentityBytes, reqID, businessName, platform, jid, lid) } func (int *DangerousInternalClient) SendPairError(id string, code int, text string) { int.c.sendPairError(id, code, text) } -func (int *DangerousInternalClient) GetServerPreKeyCount() (int, error) { - return int.c.getServerPreKeyCount() +func (int *DangerousInternalClient) GetServerPreKeyCount(ctx context.Context) (int, error) { + return int.c.getServerPreKeyCount(ctx) } -func (int *DangerousInternalClient) UploadPreKeys() { - int.c.uploadPreKeys() +func (int *DangerousInternalClient) UploadPreKeys(ctx context.Context) { + int.c.uploadPreKeys(ctx) } func (int *DangerousInternalClient) FetchPreKeys(ctx context.Context, users []types.JID) (map[types.JID]preKeyResp, error) { @@ -471,8 +475,8 @@ func (int *DangerousInternalClient) ParsePrivacySettings(privacyNode *waBinary.N return int.c.parsePrivacySettings(privacyNode, settings) } -func (int *DangerousInternalClient) HandlePrivacySettingsNotification(privacyNode *waBinary.Node) { - int.c.handlePrivacySettingsNotification(privacyNode) +func (int *DangerousInternalClient) HandlePrivacySettingsNotification(ctx context.Context, privacyNode *waBinary.Node) { + int.c.handlePrivacySettingsNotification(ctx, privacyNode) } func (int *DangerousInternalClient) HandleReceipt(node *waBinary.Node) { @@ -543,16 +547,16 @@ func (int *DangerousInternalClient) GetRecentMessage(to types.JID, id types.Mess return int.c.getRecentMessage(to, id) } -func (int *DangerousInternalClient) GetMessageForRetry(receipt *events.Receipt, messageID types.MessageID) (RecentMessage, error) { - return int.c.getMessageForRetry(receipt, messageID) +func (int *DangerousInternalClient) GetMessageForRetry(ctx context.Context, receipt *events.Receipt, messageID types.MessageID) (RecentMessage, error) { + return int.c.getMessageForRetry(ctx, receipt, messageID) } -func (int *DangerousInternalClient) ShouldRecreateSession(retryCount int, jid types.JID) (reason string, recreate bool) { - return int.c.shouldRecreateSession(retryCount, jid) +func (int *DangerousInternalClient) ShouldRecreateSession(ctx context.Context, retryCount int, jid types.JID) (reason string, recreate bool) { + return int.c.shouldRecreateSession(ctx, retryCount, jid) } -func (int *DangerousInternalClient) HandleRetryReceipt(receipt *events.Receipt, node *waBinary.Node) error { - return int.c.handleRetryReceipt(receipt, node) +func (int *DangerousInternalClient) HandleRetryReceipt(ctx context.Context, receipt *events.Receipt, node *waBinary.Node) error { + return int.c.handleRetryReceipt(ctx, receipt, node) } func (int *DangerousInternalClient) CancelDelayedRequestFromPhone(msgID types.MessageID) { @@ -567,8 +571,8 @@ func (int *DangerousInternalClient) ClearDelayedMessageRequests() { int.c.clearDelayedMessageRequests() } -func (int *DangerousInternalClient) SendRetryReceipt(node *waBinary.Node, info *types.MessageInfo, forceIncludeIdentity bool) { - int.c.sendRetryReceipt(node, info, forceIncludeIdentity) +func (int *DangerousInternalClient) SendRetryReceipt(ctx context.Context, node *waBinary.Node, info *types.MessageInfo, forceIncludeIdentity bool) { + int.c.sendRetryReceipt(ctx, node, info, forceIncludeIdentity) } func (int *DangerousInternalClient) SendGroupV3(ctx context.Context, to, ownID types.JID, id types.MessageID, messageApp []byte, msgAttrs messageAttrs, frankingTag []byte, timings *MessageDebugTimings) (string, []byte, error) { @@ -587,12 +591,12 @@ func (int *DangerousInternalClient) EncryptMessageForDevicesV3(ctx context.Conte return int.c.encryptMessageForDevicesV3(ctx, allDevices, ownID, id, payload, skdm, dsm, encAttrs) } -func (int *DangerousInternalClient) EncryptMessageForDeviceAndWrapV3(payload *waMsgTransport.MessageTransport_Payload, skdm *waMsgTransport.MessageTransport_Protocol_Ancillary_SenderKeyDistributionMessage, dsm *waMsgTransport.MessageTransport_Protocol_Integral_DeviceSentMessage, to types.JID, bundle *prekey.Bundle, encAttrs waBinary.Attrs) (*waBinary.Node, error) { - return int.c.encryptMessageForDeviceAndWrapV3(payload, skdm, dsm, to, bundle, encAttrs) +func (int *DangerousInternalClient) EncryptMessageForDeviceAndWrapV3(ctx context.Context, payload *waMsgTransport.MessageTransport_Payload, skdm *waMsgTransport.MessageTransport_Protocol_Ancillary_SenderKeyDistributionMessage, dsm *waMsgTransport.MessageTransport_Protocol_Integral_DeviceSentMessage, to types.JID, bundle *prekey.Bundle, encAttrs waBinary.Attrs) (*waBinary.Node, error) { + return int.c.encryptMessageForDeviceAndWrapV3(ctx, payload, skdm, dsm, to, bundle, encAttrs) } -func (int *DangerousInternalClient) EncryptMessageForDeviceV3(payload *waMsgTransport.MessageTransport_Payload, skdm *waMsgTransport.MessageTransport_Protocol_Ancillary_SenderKeyDistributionMessage, dsm *waMsgTransport.MessageTransport_Protocol_Integral_DeviceSentMessage, to types.JID, bundle *prekey.Bundle, extraAttrs waBinary.Attrs) (*waBinary.Node, error) { - return int.c.encryptMessageForDeviceV3(payload, skdm, dsm, to, bundle, extraAttrs) +func (int *DangerousInternalClient) EncryptMessageForDeviceV3(ctx context.Context, payload *waMsgTransport.MessageTransport_Payload, skdm *waMsgTransport.MessageTransport_Protocol_Ancillary_SenderKeyDistributionMessage, dsm *waMsgTransport.MessageTransport_Protocol_Integral_DeviceSentMessage, to types.JID, bundle *prekey.Bundle, extraAttrs waBinary.Attrs) (*waBinary.Node, error) { + return int.c.encryptMessageForDeviceV3(ctx, payload, skdm, dsm, to, bundle, extraAttrs) } func (int *DangerousInternalClient) SendNewsletter(to types.JID, id types.MessageID, message *waE2E.Message, mediaID string, timings *MessageDebugTimings) ([]byte, error) { @@ -603,16 +607,16 @@ func (int *DangerousInternalClient) SendGroup(ctx context.Context, to types.JID, return int.c.sendGroup(ctx, to, participants, id, message, timings, extraParams) } -func (int *DangerousInternalClient) SendPeerMessage(to types.JID, id types.MessageID, message *waE2E.Message, timings *MessageDebugTimings) ([]byte, error) { - return int.c.sendPeerMessage(to, id, message, timings) +func (int *DangerousInternalClient) SendPeerMessage(ctx context.Context, to types.JID, id types.MessageID, message *waE2E.Message, timings *MessageDebugTimings) ([]byte, error) { + return int.c.sendPeerMessage(ctx, to, id, message, timings) } func (int *DangerousInternalClient) SendDM(ctx context.Context, ownID, to types.JID, id types.MessageID, message *waE2E.Message, timings *MessageDebugTimings, extraParams nodeExtraParams) ([]byte, error) { return int.c.sendDM(ctx, ownID, to, id, message, timings, extraParams) } -func (int *DangerousInternalClient) PreparePeerMessageNode(to types.JID, id types.MessageID, message *waE2E.Message, timings *MessageDebugTimings) (*waBinary.Node, error) { - return int.c.preparePeerMessageNode(to, id, message, timings) +func (int *DangerousInternalClient) PreparePeerMessageNode(ctx context.Context, to types.JID, id types.MessageID, message *waE2E.Message, timings *MessageDebugTimings) (*waBinary.Node, error) { + return int.c.preparePeerMessageNode(ctx, to, id, message, timings) } func (int *DangerousInternalClient) GetMessageContent(baseNode waBinary.Node, message *waE2E.Message, msgAttrs waBinary.Attrs, includeIdentity bool, extraParams nodeExtraParams) []waBinary.Node { @@ -631,12 +635,12 @@ func (int *DangerousInternalClient) EncryptMessageForDevices(ctx context.Context return int.c.encryptMessageForDevices(ctx, allDevices, id, msgPlaintext, dsmPlaintext, encAttrs) } -func (int *DangerousInternalClient) EncryptMessageForDeviceAndWrap(plaintext []byte, wireIdentity, encryptionIdentity types.JID, bundle *prekey.Bundle, encAttrs waBinary.Attrs) (*waBinary.Node, bool, error) { - return int.c.encryptMessageForDeviceAndWrap(plaintext, wireIdentity, encryptionIdentity, bundle, encAttrs) +func (int *DangerousInternalClient) EncryptMessageForDeviceAndWrap(ctx context.Context, plaintext []byte, wireIdentity, encryptionIdentity types.JID, bundle *prekey.Bundle, encAttrs waBinary.Attrs) (*waBinary.Node, bool, error) { + return int.c.encryptMessageForDeviceAndWrap(ctx, plaintext, wireIdentity, encryptionIdentity, bundle, encAttrs) } -func (int *DangerousInternalClient) EncryptMessageForDevice(plaintext []byte, to types.JID, bundle *prekey.Bundle, extraAttrs waBinary.Attrs) (*waBinary.Node, bool, error) { - return int.c.encryptMessageForDevice(plaintext, to, bundle, extraAttrs) +func (int *DangerousInternalClient) EncryptMessageForDevice(ctx context.Context, plaintext []byte, to types.JID, bundle *prekey.Bundle, extraAttrs waBinary.Attrs) (*waBinary.Node, bool, error) { + return int.c.encryptMessageForDevice(ctx, plaintext, to, bundle, extraAttrs) } func (int *DangerousInternalClient) RawUpload(ctx context.Context, dataToUpload io.Reader, uploadSize uint64, fileHash []byte, appInfo MediaType, newsletter bool, resp *UploadResponse) error { @@ -647,16 +651,16 @@ func (int *DangerousInternalClient) ParseBusinessProfile(node *waBinary.Node) (* return int.c.parseBusinessProfile(node) } -func (int *DangerousInternalClient) HandleHistoricalPushNames(names []*waHistorySync.Pushname) { - int.c.handleHistoricalPushNames(names) +func (int *DangerousInternalClient) HandleHistoricalPushNames(ctx context.Context, names []*waHistorySync.Pushname) { + int.c.handleHistoricalPushNames(ctx, names) } -func (int *DangerousInternalClient) UpdatePushName(user types.JID, messageInfo *types.MessageInfo, name string) { - int.c.updatePushName(user, messageInfo, name) +func (int *DangerousInternalClient) UpdatePushName(ctx context.Context, user types.JID, messageInfo *types.MessageInfo, name string) { + int.c.updatePushName(ctx, user, messageInfo, name) } -func (int *DangerousInternalClient) UpdateBusinessName(user types.JID, messageInfo *types.MessageInfo, name string) { - int.c.updateBusinessName(user, messageInfo, name) +func (int *DangerousInternalClient) UpdateBusinessName(ctx context.Context, user types.JID, messageInfo *types.MessageInfo, name string) { + int.c.updateBusinessName(ctx, user, messageInfo, name) } func (int *DangerousInternalClient) GetFBIDDevicesInternal(ctx context.Context, jids []types.JID) (*waBinary.Node, error) { diff --git a/internals_generate.go b/internals_generate.go index b0251585..60bc64fe 100644 --- a/internals_generate.go +++ b/internals_generate.go @@ -22,7 +22,7 @@ import ( const header = `// GENERATED BY internals_generate.go; DO NOT EDIT //go:generate go run internals_generate.go -//go:generate goimports -local github.com/techwiz37/waSocket -w internals.go +//go:generate goimports -local github.com/techwiz37/waSocket/ -w internals.go package waSocket @@ -51,6 +51,9 @@ func getTypeName(expr ast.Expr) string { case *ast.StarExpr: return "*" + getTypeName(e.X) case *ast.ArrayType: + if e.Len != nil { + return fmt.Sprintf("[%s]%s", getTypeName(e.Len), getTypeName(e.Elt)) + } return "[]" + getTypeName(e.Elt) case *ast.MapType: return fmt.Sprintf("map[%s]%s", getTypeName(e.Key), getTypeName(e.Value)) @@ -72,7 +75,11 @@ func getTypeName(expr ast.Expr) string { results = append(results, getTypeName(result.Type)) } } - return fmt.Sprintf("func(%s) %s", strings.Join(params, ", "), strings.Join(results, ", ")) + retVals := strings.Join(results, ", ") + if len(results) > 1 { + retVals = fmt.Sprintf("(%s)", retVals) + } + return fmt.Sprintf("func(%s) %s", strings.Join(params, ", "), retVals) case *ast.SelectorExpr: return fmt.Sprintf("%s.%s", getTypeName(e.X), e.Sel.Name) case *ast.StructType: @@ -80,6 +87,8 @@ func getTypeName(expr ast.Expr) string { return "struct{}" case *ast.Ellipsis: return fmt.Sprintf("...%s", e.Elt) + case *ast.BasicLit: + return e.Value default: panic(fmt.Errorf("unknown type %T", e)) } diff --git a/keepalive.go b/keepalive.go index d142045e..aec26eee 100644 --- a/keepalive.go +++ b/keepalive.go @@ -8,7 +8,7 @@ package waSocket import ( "context" - "math/rand" + "math/rand/v2" "time" "github.com/techwiz37/waSocket/types" @@ -31,7 +31,7 @@ func (cli *Client) keepAliveLoop(ctx context.Context) { lastSuccess := time.Now() var errorCount int for { - interval := rand.Int63n(KeepAliveIntervalMax.Milliseconds()-KeepAliveIntervalMin.Milliseconds()) + KeepAliveIntervalMin.Milliseconds() + interval := rand.Int64N(KeepAliveIntervalMax.Milliseconds()-KeepAliveIntervalMin.Milliseconds()) + KeepAliveIntervalMin.Milliseconds() select { case <-time.After(time.Duration(interval) * time.Millisecond): isSuccess, shouldContinue := cli.sendKeepAlive(ctx) diff --git a/mediaconn.go b/mediaconn.go index fae4578d..ec6d273f 100644 --- a/mediaconn.go +++ b/mediaconn.go @@ -7,6 +7,7 @@ package waSocket import ( + "context" "fmt" "time" @@ -40,7 +41,7 @@ func (mc *MediaConn) Expiry() time.Time { return mc.FetchedAt.Add(time.Duration(mc.TTL) * time.Second) } -func (cli *Client) refreshMediaConn(force bool) (*MediaConn, error) { +func (cli *Client) refreshMediaConn(ctx context.Context, force bool) (*MediaConn, error) { if cli == nil { return nil, ErrClientIsNil } @@ -48,7 +49,7 @@ func (cli *Client) refreshMediaConn(force bool) (*MediaConn, error) { defer cli.mediaConnLock.Unlock() if cli.mediaConnCache == nil || force || time.Now().After(cli.mediaConnCache.Expiry()) { var err error - cli.mediaConnCache, err = cli.queryMediaConn() + cli.mediaConnCache, err = cli.queryMediaConn(ctx) if err != nil { return nil, err } @@ -56,8 +57,9 @@ func (cli *Client) refreshMediaConn(force bool) (*MediaConn, error) { return cli.mediaConnCache, nil } -func (cli *Client) queryMediaConn() (*MediaConn, error) { +func (cli *Client) queryMediaConn(ctx context.Context) (*MediaConn, error) { resp, err := cli.sendIQ(infoQuery{ + Context: ctx, Namespace: "w:m", Type: "set", To: types.ServerJID, diff --git a/mediaretry.go b/mediaretry.go index a76ddcaf..341a45ac 100644 --- a/mediaretry.go +++ b/mediaretry.go @@ -7,6 +7,7 @@ package waSocket import ( + "context" "fmt" "go.mau.fi/util/random" @@ -174,7 +175,7 @@ func parseMediaRetryNotification(node *waBinary.Node) (*events.MediaRetry, error return &evt, nil } -func (cli *Client) handleMediaRetryNotification(node *waBinary.Node) { +func (cli *Client) handleMediaRetryNotification(ctx context.Context, node *waBinary.Node) { evt, err := parseMediaRetryNotification(node) if err != nil { cli.Log.Warnf("Failed to parse media retry notification: %v", err) diff --git a/message.go b/message.go index 41298150..310d957f 100644 --- a/message.go +++ b/message.go @@ -10,6 +10,7 @@ import ( "bytes" "compress/zlib" "context" + "crypto/sha256" "encoding/hex" "errors" "fmt" @@ -17,6 +18,7 @@ import ( "runtime/debug" "time" + "github.com/rs/zerolog" "go.mau.fi/libsignal/groups" "go.mau.fi/libsignal/protocol" "go.mau.fi/libsignal/session" @@ -37,26 +39,27 @@ import ( var pbSerializer = store.SignalProtobufSerializer func (cli *Client) handleEncryptedMessage(node *waBinary.Node) { + ctx := context.TODO() info, err := cli.parseMessageInfo(node) if err != nil { cli.Log.Warnf("Failed to parse message: %v", err) } else { if !info.SenderAlt.IsEmpty() { - cli.StoreLIDPNMapping(context.TODO(), info.SenderAlt, info.Sender) + cli.StoreLIDPNMapping(ctx, info.SenderAlt, info.Sender) } else if !info.RecipientAlt.IsEmpty() { - cli.StoreLIDPNMapping(context.TODO(), info.RecipientAlt, info.Chat) + cli.StoreLIDPNMapping(ctx, info.RecipientAlt, info.Chat) } if info.VerifiedName != nil && len(info.VerifiedName.Details.GetVerifiedName()) > 0 { - go cli.updateBusinessName(info.Sender, info, info.VerifiedName.Details.GetVerifiedName()) + go cli.updateBusinessName(context.WithoutCancel(ctx), info.Sender, info, info.VerifiedName.Details.GetVerifiedName()) } if len(info.PushName) > 0 && info.PushName != "-" { - go cli.updatePushName(info.Sender, info, info.PushName) + go cli.updatePushName(context.WithoutCancel(ctx), info.Sender, info, info.PushName) } defer cli.maybeDeferredAck(node)() if info.Sender.Server == types.NewsletterServer { - cli.handlePlaintextMessage(info, node) + cli.handlePlaintextMessage(ctx, info, node) } else { - cli.decryptMessages(info, node) + cli.decryptMessages(ctx, info, node) } } } @@ -127,6 +130,9 @@ func (cli *Client) parseMessageSource(node *waBinary.Node, requireParticipant bo source.SenderAlt = ag.OptionalJIDOrEmpty("sender_lid") } } + if !source.SenderAlt.IsEmpty() && source.SenderAlt.Device == 0 { + source.SenderAlt.Device = source.Sender.Device + } err = ag.Error() return } @@ -212,7 +218,7 @@ func (cli *Client) parseMessageInfo(node *waBinary.Node) (*types.MessageInfo, er return &info, nil } -func (cli *Client) handlePlaintextMessage(info *types.MessageInfo, node *waBinary.Node) { +func (cli *Client) handlePlaintextMessage(ctx context.Context, info *types.MessageInfo, node *waBinary.Node) { // TODO edits have an additional node plaintext, ok := node.GetOptionalChildByTag("plaintext") if !ok { @@ -231,7 +237,7 @@ func (cli *Client) handlePlaintextMessage(info *types.MessageInfo, node *waBinar cli.Log.Warnf("Error unmarshaling plaintext message from %s: %v", info.SourceString(), err) return } - cli.storeMessageSecret(info, &msg) + cli.storeMessageSecret(ctx, info, &msg) evt := &events.Message{ Info: *info, RawMessage: &msg, @@ -246,14 +252,14 @@ func (cli *Client) handlePlaintextMessage(info *types.MessageInfo, node *waBinar cli.dispatchEvent(evt.UnwrapRaw()) } -func (cli *Client) migrateSessionStore(pn, lid types.JID) { - err := cli.Store.Sessions.MigratePNToLID(context.TODO(), pn, lid) +func (cli *Client) migrateSessionStore(ctx context.Context, pn, lid types.JID) { + err := cli.Store.Sessions.MigratePNToLID(ctx, pn, lid) if err != nil { cli.Log.Errorf("Failed to migrate signal store from %s to %s: %v", pn, lid, err) } } -func (cli *Client) decryptMessages(info *types.MessageInfo, node *waBinary.Node) { +func (cli *Client) decryptMessages(ctx context.Context, info *types.MessageInfo, node *waBinary.Node) { unavailableNode, ok := node.GetOptionalChildByTag("unavailable") if ok && len(node.GetChildrenByTag("enc")) == 0 { uType := events.UnavailableType(unavailableNode.AttrGetter().String("type")) @@ -271,11 +277,11 @@ func (cli *Client) decryptMessages(info *types.MessageInfo, node *waBinary.Node) if info.Sender.Server == types.DefaultUserServer && !info.Sender.IsBot() { if info.SenderAlt.Server == types.HiddenUserServer { senderEncryptionJID = info.SenderAlt - cli.migrateSessionStore(info.Sender, info.SenderAlt) - } else if lid, err := cli.Store.LIDs.GetLIDForPN(context.TODO(), info.Sender); err != nil { + cli.migrateSessionStore(ctx, info.Sender, info.SenderAlt) + } else if lid, err := cli.Store.LIDs.GetLIDForPN(ctx, info.Sender); err != nil { cli.Log.Errorf("Failed to get LID for %s: %v", info.Sender, err) } else if !lid.IsEmpty() { - cli.migrateSessionStore(info.Sender, lid) + cli.migrateSessionStore(ctx, info.Sender, lid) senderEncryptionJID = lid info.SenderAlt = lid } else { @@ -292,12 +298,13 @@ func (cli *Client) decryptMessages(info *types.MessageInfo, node *waBinary.Node) continue } var decrypted []byte + var ciphertextHash *[32]byte var err error if encType == "pkmsg" || encType == "msg" { - decrypted, err = cli.decryptDM(&child, senderEncryptionJID, encType == "pkmsg") + decrypted, ciphertextHash, err = cli.decryptDM(ctx, &child, senderEncryptionJID, encType == "pkmsg", info.Timestamp) containsDirectMsg = true } else if info.IsGroup && encType == "skmsg" { - decrypted, err = cli.decryptGroupMsg(&child, senderEncryptionJID, info.Chat) + decrypted, ciphertextHash, err = cli.decryptGroupMsg(ctx, &child, senderEncryptionJID, info.Chat, info.Timestamp) } else if encType == "msmsg" && info.Sender.IsBot() { targetSenderJID := info.MsgMetaInfo.TargetSender messageSecretSenderJID := targetSenderJID @@ -317,26 +324,28 @@ func (cli *Client) decryptMessages(info *types.MessageInfo, node *waBinary.Node) } var msMsg waE2E.MessageSecretMessage var messageSecret []byte - if messageSecret, err = cli.Store.MsgSecrets.GetMessageSecret(info.Chat, messageSecretSenderJID, info.MsgMetaInfo.TargetID); err != nil { + if messageSecret, err = cli.Store.MsgSecrets.GetMessageSecret(ctx, info.Chat, messageSecretSenderJID, info.MsgMetaInfo.TargetID); err != nil { err = fmt.Errorf("failed to get message secret for %s: %v", info.MsgMetaInfo.TargetID, err) } else if messageSecret == nil { err = fmt.Errorf("message secret for %s not found", info.MsgMetaInfo.TargetID) } else if err = proto.Unmarshal(child.Content.([]byte), &msMsg); err != nil { err = fmt.Errorf("failed to unmarshal MessageSecretMessage protobuf: %v", err) } else { - decrypted, err = cli.decryptBotMessage(messageSecret, &msMsg, decryptMessageID, targetSenderJID, info) + decrypted, err = cli.decryptBotMessage(ctx, messageSecret, &msMsg, decryptMessageID, targetSenderJID, info) } } else { cli.Log.Warnf("Unhandled encrypted message (type %s) from %s", encType, info.SourceString()) continue } - if err != nil { + if errors.Is(err, EventAlreadyProcessed) { + cli.Log.Debugf("Ignoring message %s from %s: %v", info.ID, info.SourceString(), err) + return + } else if err != nil { cli.Log.Warnf("Error decrypting message from %s: %v", info.SourceString(), err) isUnavailable := encType == "skmsg" && !containsDirectMsg && errors.Is(err, signalerror.ErrNoSenderKeyForUser) - // TODO figure out why @bot messages fail to decrypt - if info.Chat.Server != types.BotServer && encType != "msmsg" { - go cli.sendRetryReceipt(node, info, isUnavailable) + if encType != "msmsg" { + go cli.sendRetryReceipt(context.WithoutCancel(ctx), node, info, isUnavailable) } cli.dispatchEvent(&events.UndecryptableMessage{ Info: *info, @@ -356,74 +365,163 @@ func (cli *Client) decryptMessages(info *types.MessageInfo, node *waBinary.Node) cli.Log.Warnf("Error unmarshaling decrypted message from %s: %v", info.SourceString(), err) continue } - cli.handleDecryptedMessage(info, &msg, retryCount) + cli.handleDecryptedMessage(ctx, info, &msg, retryCount) handled = true case 3: - handled = cli.handleDecryptedArmadillo(info, decrypted, retryCount) + handled = cli.handleDecryptedArmadillo(ctx, info, decrypted, retryCount) default: cli.Log.Warnf("Unknown version %d in decrypted message from %s", ag.Int("v"), info.SourceString()) } + if ciphertextHash != nil && cli.EnableDecryptedEventBuffer { + // Use the context passed to decryptMessages + err = cli.Store.EventBuffer.ClearBufferedEventPlaintext(ctx, *ciphertextHash) + if err != nil { + zerolog.Ctx(ctx).Err(err). + Hex("ciphertext_hash", ciphertextHash[:]). + Msg("Failed to clear buffered event plaintext") + } else { + zerolog.Ctx(ctx).Debug(). + Hex("ciphertext_hash", ciphertextHash[:]). + Msg("Deleted event plaintext from buffer") + } + + if time.Since(cli.lastDecryptedBufferClear) > 12*time.Hour { + cli.lastDecryptedBufferClear = time.Now() + go func() { + err := cli.Store.EventBuffer.DeleteOldBufferedHashes(context.WithoutCancel(ctx)) + if err != nil { + zerolog.Ctx(ctx).Err(err).Msg("Failed to delete old buffered hashes") + } + }() + } + } } if handled { go cli.sendMessageReceipt(info) } } -func (cli *Client) clearUntrustedIdentity(target types.JID) { - err := cli.Store.Identities.DeleteIdentity(target.SignalAddress().String()) +func (cli *Client) clearUntrustedIdentity(ctx context.Context, target types.JID) error { + err := cli.Store.Identities.DeleteIdentity(ctx, target.SignalAddress().String()) if err != nil { - cli.Log.Warnf("Failed to delete untrusted identity of %s from store: %v", target, err) + return fmt.Errorf("failed to delete identity: %w", err) } - err = cli.Store.Sessions.DeleteSession(target.SignalAddress().String()) + err = cli.Store.Sessions.DeleteSession(ctx, target.SignalAddress().String()) if err != nil { - cli.Log.Warnf("Failed to delete session with %s (untrusted identity) from store: %v", target, err) + return fmt.Errorf("failed to delete session: %w", err) + } + go cli.dispatchEvent(&events.IdentityChange{JID: target, Timestamp: time.Now(), Implicit: true}) + return nil +} + +var EventAlreadyProcessed = errors.New("event was already processed") + +func (cli *Client) bufferedDecrypt( + ctx context.Context, + ciphertext []byte, + serverTimestamp time.Time, + decrypt func(context.Context) ([]byte, error), +) (plaintext []byte, ciphertextHash [32]byte, err error) { + if !cli.EnableDecryptedEventBuffer { + plaintext, err = decrypt(ctx) + return + } + ciphertextHash = sha256.Sum256(ciphertext) + var buf *store.BufferedEvent + buf, err = cli.Store.EventBuffer.GetBufferedEvent(ctx, ciphertextHash) + if err != nil { + err = fmt.Errorf("failed to get buffered event: %w", err) + return + } else if buf != nil { + if buf.Plaintext == nil { + zerolog.Ctx(ctx).Debug(). + Hex("ciphertext_hash", ciphertextHash[:]). + Time("insertion_time", buf.InsertTime). + Msg("Returning event already processed error") + err = fmt.Errorf("%w at %s", EventAlreadyProcessed, buf.InsertTime.String()) + return + } + zerolog.Ctx(ctx).Debug(). + Hex("ciphertext_hash", ciphertextHash[:]). + Time("insertion_time", buf.InsertTime). + Msg("Returning previously decrypted plaintext") + plaintext = buf.Plaintext + return + } + + err = cli.Store.EventBuffer.DoDecryptionTxn(ctx, func(ctx context.Context) (innerErr error) { + plaintext, innerErr = decrypt(ctx) + if innerErr != nil { + return + } + innerErr = cli.Store.EventBuffer.PutBufferedEvent(ctx, ciphertextHash, plaintext, serverTimestamp) + if innerErr != nil { + innerErr = fmt.Errorf("failed to save decrypted event to buffer: %w", innerErr) + } + return + }) + if err == nil { + zerolog.Ctx(ctx).Debug(). + Hex("ciphertext_hash", ciphertextHash[:]). + Msg("Successfully decrypted and saved event") } - cli.dispatchEvent(&events.IdentityChange{JID: target, Timestamp: time.Now(), Implicit: true}) + return } -func (cli *Client) decryptDM(child *waBinary.Node, from types.JID, isPreKey bool) ([]byte, error) { +func (cli *Client) decryptDM(ctx context.Context, child *waBinary.Node, from types.JID, isPreKey bool, serverTS time.Time) ([]byte, *[32]byte, error) { content, ok := child.Content.([]byte) if !ok { - return nil, fmt.Errorf("message content is not a byte slice") + return nil, nil, fmt.Errorf("message content is not a byte slice") } builder := session.NewBuilderFromSignal(cli.Store, from.SignalAddress(), pbSerializer) cipher := session.NewCipher(builder, from.SignalAddress()) var plaintext []byte + var ciphertextHash [32]byte if isPreKey { preKeyMsg, err := protocol.NewPreKeySignalMessageFromBytes(content, pbSerializer.PreKeySignalMessage, pbSerializer.SignalMessage) if err != nil { - return nil, fmt.Errorf("failed to parse prekey message: %w", err) - } - plaintext, _, err = cipher.DecryptMessageReturnKey(preKeyMsg) - if cli.AutoTrustIdentity && errors.Is(err, signalerror.ErrUntrustedIdentity) { - cli.Log.Warnf("Got %v error while trying to decrypt prekey message from %s, clearing stored identity and retrying", err, from) - cli.clearUntrustedIdentity(from) - plaintext, _, err = cipher.DecryptMessageReturnKey(preKeyMsg) - } + return nil, nil, fmt.Errorf("failed to parse prekey message: %w", err) + } + plaintext, ciphertextHash, err = cli.bufferedDecrypt(ctx, content, serverTS, func(decryptCtx context.Context) ([]byte, error) { + pt, innerErr := cipher.DecryptMessage(decryptCtx, preKeyMsg) + if cli.AutoTrustIdentity && errors.Is(innerErr, signalerror.ErrUntrustedIdentity) { + cli.Log.Warnf("Got %v error while trying to decrypt prekey message from %s, clearing stored identity and retrying", innerErr, from) + if innerErr = cli.clearUntrustedIdentity(decryptCtx, from); innerErr != nil { + innerErr = fmt.Errorf("failed to clear untrusted identity: %w", innerErr) + return nil, innerErr + } + pt, innerErr = cipher.DecryptMessage(decryptCtx, preKeyMsg) + } + return pt, innerErr + }) if err != nil { - return nil, fmt.Errorf("failed to decrypt prekey message: %w", err) + return nil, nil, fmt.Errorf("failed to decrypt prekey message: %w", err) } } else { msg, err := protocol.NewSignalMessageFromBytes(content, pbSerializer.SignalMessage) if err != nil { - return nil, fmt.Errorf("failed to parse normal message: %w", err) + return nil, nil, fmt.Errorf("failed to parse normal message: %w", err) } - plaintext, err = cipher.Decrypt(msg) + plaintext, ciphertextHash, err = cli.bufferedDecrypt(ctx, content, serverTS, func(decryptCtx context.Context) ([]byte, error) { + return cipher.Decrypt(decryptCtx, msg) + }) if err != nil { - return nil, fmt.Errorf("failed to decrypt normal message: %w", err) + return nil, nil, fmt.Errorf("failed to decrypt normal message: %w", err) } } - if child.AttrGetter().Int("v") == 3 { - return plaintext, nil + var err error + plaintext, err = unpadMessage(plaintext, child.AttrGetter().Int("v")) + if err != nil { + return nil, nil, fmt.Errorf("failed to unpad message: %w", err) } - return unpadMessage(plaintext) + return plaintext, &ciphertextHash, nil } -func (cli *Client) decryptGroupMsg(child *waBinary.Node, from types.JID, chat types.JID) ([]byte, error) { +func (cli *Client) decryptGroupMsg(ctx context.Context, child *waBinary.Node, from types.JID, chat types.JID, serverTS time.Time) ([]byte, *[32]byte, error) { content, ok := child.Content.([]byte) if !ok { - return nil, fmt.Errorf("message content is not a byte slice") + return nil, nil, fmt.Errorf("message content is not a byte slice") } senderKeyName := protocol.NewSenderKeyName(chat.String(), from.SignalAddress()) @@ -431,16 +529,19 @@ func (cli *Client) decryptGroupMsg(child *waBinary.Node, from types.JID, chat ty cipher := groups.NewGroupCipher(builder, senderKeyName, cli.Store) msg, err := protocol.NewSenderKeyMessageFromBytes(content, pbSerializer.SenderKeyMessage) if err != nil { - return nil, fmt.Errorf("failed to parse group message: %w", err) + return nil, nil, fmt.Errorf("failed to parse group message: %w", err) } - plaintext, err := cipher.Decrypt(msg) + plaintext, ciphertextHash, err := cli.bufferedDecrypt(ctx, content, serverTS, func(decryptCtx context.Context) ([]byte, error) { + return cipher.Decrypt(decryptCtx, msg) + }) if err != nil { - return nil, fmt.Errorf("failed to decrypt group message: %w", err) + return nil, nil, fmt.Errorf("failed to decrypt group message: %w", err) } - if child.AttrGetter().Int("v") == 3 { - return plaintext, nil + plaintext, err = unpadMessage(plaintext, child.AttrGetter().Int("v")) + if err != nil { + return nil, nil, err } - return unpadMessage(plaintext) + return plaintext, &ciphertextHash, nil } const checkPadding = true @@ -451,14 +552,16 @@ func isValidPadding(plaintext []byte) bool { return bytes.HasSuffix(plaintext, expectedPadding) } -func unpadMessage(plaintext []byte) ([]byte, error) { - if len(plaintext) == 0 { +func unpadMessage(plaintext []byte, version int) ([]byte, error) { + if version == 3 { + return plaintext, nil + } else if len(plaintext) == 0 { return nil, fmt.Errorf("plaintext is empty") - } - if checkPadding && !isValidPadding(plaintext) { + } else if checkPadding && !isValidPadding(plaintext) { return nil, fmt.Errorf("plaintext doesn't have expected padding") + } else { + return plaintext[:len(plaintext)-int(plaintext[len(plaintext)-1])], nil } - return plaintext[:len(plaintext)-int(plaintext[len(plaintext)-1])], nil } func padMessage(plaintext []byte) []byte { @@ -471,7 +574,7 @@ func padMessage(plaintext []byte) []byte { return plaintext } -func (cli *Client) handleSenderKeyDistributionMessage(chat, from types.JID, axolotlSKDM []byte) { +func (cli *Client) handleSenderKeyDistributionMessage(ctx context.Context, chat, from types.JID, axolotlSKDM []byte) { builder := groups.NewGroupSessionBuilder(cli.Store, pbSerializer) senderKeyName := protocol.NewSenderKeyName(chat.String(), from.SignalAddress()) sdkMsg, err := protocol.NewSenderKeyDistributionMessageFromBytes(axolotlSKDM, pbSerializer.SenderKeyDistributionMessage) @@ -479,7 +582,11 @@ func (cli *Client) handleSenderKeyDistributionMessage(chat, from types.JID, axol cli.Log.Errorf("Failed to parse sender key distribution message from %s for %s: %v", from, chat, err) return } - builder.Process(senderKeyName, sdkMsg) + err = builder.Process(ctx, senderKeyName, sdkMsg) + if err != nil { + cli.Log.Errorf("Failed to process sender key distribution message from %s for %s: %v", from, chat, err) + return + } cli.Log.Debugf("Processed sender key distribution message from %s in %s", senderKeyName.Sender().String(), senderKeyName.GroupID()) } @@ -498,14 +605,15 @@ func (cli *Client) handleHistorySyncNotificationLoop() { go cli.handleHistorySyncNotificationLoop() } }() + ctx := context.TODO() for notif := range cli.historySyncNotifications { - cli.handleHistorySyncNotification(notif) + cli.handleHistorySyncNotification(ctx, notif) } } -func (cli *Client) handleHistorySyncNotification(notif *waE2E.HistorySyncNotification) { +func (cli *Client) handleHistorySyncNotification(ctx context.Context, notif *waE2E.HistorySyncNotification) { var historySync waHistorySync.HistorySync - if data, err := cli.Download(notif); err != nil { + if data, err := cli.Download(ctx, notif); err != nil { cli.Log.Errorf("Failed to download history sync data: %v", err) } else if reader, err := zlib.NewReader(bytes.NewReader(data)); err != nil { cli.Log.Errorf("Failed to create zlib reader for history sync data: %v", err) @@ -516,9 +624,9 @@ func (cli *Client) handleHistorySyncNotification(notif *waE2E.HistorySyncNotific } else { cli.Log.Debugf("Received history sync (type %s, chunk %d)", historySync.GetSyncType(), historySync.GetChunkOrder()) if historySync.GetSyncType() == waHistorySync.HistorySync_PUSH_NAME { - go cli.handleHistoricalPushNames(historySync.GetPushnames()) + go cli.handleHistoricalPushNames(context.WithoutCancel(ctx), historySync.GetPushnames()) } else if len(historySync.GetConversations()) > 0 { - go cli.storeHistoricalMessageSecrets(historySync.GetConversations()) + go cli.storeHistoricalMessageSecrets(context.WithoutCancel(ctx), historySync.GetConversations()) } cli.dispatchEvent(&events.HistorySync{ Data: &historySync, @@ -526,7 +634,7 @@ func (cli *Client) handleHistorySyncNotification(notif *waE2E.HistorySyncNotific } } -func (cli *Client) handleAppStateSyncKeyShare(keys *waE2E.AppStateSyncKeyShare) { +func (cli *Client) handleAppStateSyncKeyShare(ctx context.Context, keys *waE2E.AppStateSyncKeyShare) { onlyResyncIfNotSynced := true cli.Log.Debugf("Got %d new app state keys", len(keys.GetKeys())) @@ -541,7 +649,7 @@ func (cli *Client) handleAppStateSyncKeyShare(keys *waE2E.AppStateSyncKeyShare) if isReRequest { onlyResyncIfNotSynced = false } - err = cli.Store.AppStateKeys.PutAppStateSyncKey(key.GetKeyID().GetKeyID(), store.AppStateSyncKey{ + err = cli.Store.AppStateKeys.PutAppStateSyncKey(ctx, key.GetKeyID().GetKeyID(), store.AppStateSyncKey{ Data: key.GetKeyData().GetKeyData(), Fingerprint: marshaledFingerprint, Timestamp: key.GetKeyData().GetTimestamp(), @@ -555,7 +663,7 @@ func (cli *Client) handleAppStateSyncKeyShare(keys *waE2E.AppStateSyncKeyShare) cli.appStateKeyRequestsLock.RUnlock() for _, name := range appstate.AllPatchNames { - err := cli.FetchAppState(name, false, onlyResyncIfNotSynced) + err := cli.FetchAppState(ctx, name, false, onlyResyncIfNotSynced) if err != nil { cli.Log.Errorf("Failed to do initial fetch of app state %s: %v", name, err) } @@ -581,7 +689,7 @@ func (cli *Client) handlePlaceholderResendResponse(msg *waE2E.PeerDataOperationR } } -func (cli *Client) handleProtocolMessage(info *types.MessageInfo, msg *waE2E.Message) { +func (cli *Client) handleProtocolMessage(ctx context.Context, info *types.MessageInfo, msg *waE2E.Message) { protoMsg := msg.GetProtocolMessage() if protoMsg.GetHistorySyncNotification() != nil && info.IsFromMe { @@ -597,7 +705,7 @@ func (cli *Client) handleProtocolMessage(info *types.MessageInfo, msg *waE2E.Mes } if protoMsg.GetAppStateSyncKeyShare() != nil && info.IsFromMe { - go cli.handleAppStateSyncKeyShare(protoMsg.AppStateSyncKeyShare) + go cli.handleAppStateSyncKeyShare(context.WithoutCancel(ctx), protoMsg.AppStateSyncKeyShare) } if info.Category == "peer" { @@ -605,8 +713,8 @@ func (cli *Client) handleProtocolMessage(info *types.MessageInfo, msg *waE2E.Mes } } -func (cli *Client) processProtocolParts(info *types.MessageInfo, msg *waE2E.Message) { - cli.storeMessageSecret(info, msg) +func (cli *Client) processProtocolParts(ctx context.Context, info *types.MessageInfo, msg *waE2E.Message) { + cli.storeMessageSecret(ctx, info, msg) // Hopefully sender key distribution messages and protocol messages can't be inside ephemeral messages if msg.GetDeviceSentMessage().GetMessage() != nil { msg = msg.GetDeviceSentMessage().GetMessage() @@ -619,19 +727,19 @@ func (cli *Client) processProtocolParts(info *types.MessageInfo, msg *waE2E.Mess if encryptionIdentity.Server == types.DefaultUserServer && info.SenderAlt.Server == types.HiddenUserServer { encryptionIdentity = info.SenderAlt } - cli.handleSenderKeyDistributionMessage(info.Chat, encryptionIdentity, msg.SenderKeyDistributionMessage.AxolotlSenderKeyDistributionMessage) + cli.handleSenderKeyDistributionMessage(ctx, info.Chat, encryptionIdentity, msg.SenderKeyDistributionMessage.AxolotlSenderKeyDistributionMessage) } } // N.B. Edits are protocol messages, but they're also wrapped inside EditedMessage, // which is only unwrapped after processProtocolParts, so this won't trigger for edits. if msg.GetProtocolMessage() != nil { - cli.handleProtocolMessage(info, msg) + cli.handleProtocolMessage(ctx, info, msg) } } -func (cli *Client) storeMessageSecret(info *types.MessageInfo, msg *waE2E.Message) { +func (cli *Client) storeMessageSecret(ctx context.Context, info *types.MessageInfo, msg *waE2E.Message) { if msgSecret := msg.GetMessageContextInfo().GetMessageSecret(); len(msgSecret) > 0 { - err := cli.Store.MsgSecrets.PutMessageSecret(info.Chat, info.Sender, info.ID, msgSecret) + err := cli.Store.MsgSecrets.PutMessageSecret(ctx, info.Chat, info.Sender, info.ID, msgSecret) if err != nil { cli.Log.Errorf("Failed to store message secret key for %s: %v", info.ID, err) } else { @@ -640,7 +748,7 @@ func (cli *Client) storeMessageSecret(info *types.MessageInfo, msg *waE2E.Messag } } -func (cli *Client) storeHistoricalMessageSecrets(conversations []*waHistorySync.Conversation) { +func (cli *Client) storeHistoricalMessageSecrets(ctx context.Context, conversations []*waHistorySync.Conversation) { var secrets []store.MessageSecretInsert var privacyTokens []store.PrivacyToken ownID := cli.getOwnID().ToNonAD() @@ -690,7 +798,7 @@ func (cli *Client) storeHistoricalMessageSecrets(conversations []*waHistorySync. } if len(secrets) > 0 { cli.Log.Debugf("Storing %d message secret keys in history sync", len(secrets)) - err := cli.Store.MsgSecrets.PutMessageSecrets(secrets) + err := cli.Store.MsgSecrets.PutMessageSecrets(ctx, secrets) if err != nil { cli.Log.Errorf("Failed to store message secret keys in history sync: %v", err) } else { @@ -699,7 +807,7 @@ func (cli *Client) storeHistoricalMessageSecrets(conversations []*waHistorySync. } if len(privacyTokens) > 0 { cli.Log.Debugf("Storing %d privacy tokens in history sync", len(privacyTokens)) - err := cli.Store.PrivacyTokens.PutPrivacyTokens(privacyTokens...) + err := cli.Store.PrivacyTokens.PutPrivacyTokens(ctx, privacyTokens...) if err != nil { cli.Log.Errorf("Failed to store privacy tokens in history sync: %v", err) } else { @@ -708,8 +816,8 @@ func (cli *Client) storeHistoricalMessageSecrets(conversations []*waHistorySync. } } -func (cli *Client) handleDecryptedMessage(info *types.MessageInfo, msg *waE2E.Message, retryCount int) { - cli.processProtocolParts(info, msg) +func (cli *Client) handleDecryptedMessage(ctx context.Context, info *types.MessageInfo, msg *waE2E.Message, retryCount int) { + cli.processProtocolParts(ctx, info, msg) evt := &events.Message{Info: *info, RawMessage: msg, RetryCount: retryCount} cli.dispatchEvent(evt.UnwrapRaw()) } diff --git a/msgsecret.go b/msgsecret.go index 52ed3b2b..55f6d6fc 100644 --- a/msgsecret.go +++ b/msgsecret.go @@ -12,12 +12,11 @@ import ( "fmt" "time" - "github.com/techwiz37/waSocket/proto/waCommon" - "github.com/techwiz37/waSocket/proto/waE2E" - "go.mau.fi/util/random" "google.golang.org/protobuf/proto" + "github.com/techwiz37/waSocket/proto/waCommon" + "github.com/techwiz37/waSocket/proto/waE2E" "github.com/techwiz37/waSocket/types" "github.com/techwiz37/waSocket/types/events" "github.com/techwiz37/waSocket/util/gcmutil" @@ -56,7 +55,7 @@ func generateMsgSecretKey( secretKey := hkdfutil.SHA256(origMsgSecret, nil, useCaseSecret, 32) var additionalData []byte switch modificationType { - case EncSecretPollVote, EncSecretEventResponse: + case EncSecretPollVote, EncSecretEventResponse, "": additionalData = fmt.Appendf(nil, "%s\x00%s", origMsgID, modificationSenderStr) } @@ -91,7 +90,7 @@ type messageEncryptedSecret interface { GetEncPayload() []byte } -func (cli *Client) decryptMsgSecret(msg *events.Message, useCase MsgSecretType, encrypted messageEncryptedSecret, origMsgKey *waCommon.MessageKey) ([]byte, error) { +func (cli *Client) decryptMsgSecret(ctx context.Context, msg *events.Message, useCase MsgSecretType, encrypted messageEncryptedSecret, origMsgKey *waCommon.MessageKey) ([]byte, error) { if cli == nil { return nil, ErrClientIsNil } @@ -99,18 +98,18 @@ func (cli *Client) decryptMsgSecret(msg *events.Message, useCase MsgSecretType, if err != nil { return nil, err } - baseEncKey, err := cli.Store.MsgSecrets.GetMessageSecret(msg.Info.Chat, origSender, origMsgKey.GetID()) + baseEncKey, err := cli.Store.MsgSecrets.GetMessageSecret(ctx, msg.Info.Chat, origSender, origMsgKey.GetID()) if err != nil { return nil, fmt.Errorf("failed to get original message secret key: %w", err) } if baseEncKey == nil && origMsgKey.GetFromMe() && origSender.Server == types.HiddenUserServer { - origSender, err = cli.Store.LIDs.GetPNForLID(context.TODO(), origSender) + origSender, err = cli.Store.LIDs.GetPNForLID(ctx, origSender) if err != nil { return nil, fmt.Errorf("%w (also failed to get PN for LID: %w)", ErrOriginalMessageSecretNotFound, err) } else if origSender.IsEmpty() { return nil, fmt.Errorf("%w (PN for LID not found)", ErrOriginalMessageSecretNotFound) } - baseEncKey, err = cli.Store.MsgSecrets.GetMessageSecret(msg.Info.Chat, origSender, origMsgKey.GetID()) + baseEncKey, err = cli.Store.MsgSecrets.GetMessageSecret(ctx, msg.Info.Chat, origSender, origMsgKey.GetID()) if err != nil { return nil, fmt.Errorf("failed to get original message secret key with PN: %w", err) } @@ -126,14 +125,14 @@ func (cli *Client) decryptMsgSecret(msg *events.Message, useCase MsgSecretType, return plaintext, nil } -func (cli *Client) encryptMsgSecret(ownID, chat, origSender types.JID, origMsgID types.MessageID, useCase MsgSecretType, plaintext []byte) (ciphertext, iv []byte, err error) { +func (cli *Client) encryptMsgSecret(ctx context.Context, ownID, chat, origSender types.JID, origMsgID types.MessageID, useCase MsgSecretType, plaintext []byte) (ciphertext, iv []byte, err error) { if cli == nil { return nil, nil, ErrClientIsNil } else if ownID.IsEmpty() { return nil, nil, ErrNotLoggedIn } - baseEncKey, err := cli.Store.MsgSecrets.GetMessageSecret(chat, origSender, origMsgID) + baseEncKey, err := cli.Store.MsgSecrets.GetMessageSecret(ctx, chat, origSender, origMsgID) if err != nil { return nil, nil, fmt.Errorf("failed to get original message secret key: %w", err) } else if baseEncKey == nil { @@ -149,7 +148,7 @@ func (cli *Client) encryptMsgSecret(ownID, chat, origSender types.JID, origMsgID return ciphertext, iv, nil } -func (cli *Client) decryptBotMessage(messageSecret []byte, msMsg messageEncryptedSecret, messageID types.MessageID, targetSenderJID types.JID, info *types.MessageInfo) ([]byte, error) { +func (cli *Client) decryptBotMessage(ctx context.Context, messageSecret []byte, msMsg messageEncryptedSecret, messageID types.MessageID, targetSenderJID types.JID, info *types.MessageInfo) ([]byte, error) { newKey, additionalData := generateMsgSecretKey("", info.Sender, messageID, targetSenderJID, applyBotMessageHKDF(messageSecret)) plaintext, err := gcmutil.Decrypt(newKey, msMsg.GetEncIV(), msMsg.GetEncPayload(), additionalData) @@ -170,12 +169,12 @@ func (cli *Client) decryptBotMessage(messageSecret []byte, msMsg messageEncrypte // } // fmt.Printf("Reaction message: %+v\n", reaction) // } -func (cli *Client) DecryptReaction(reaction *events.Message) (*waE2E.ReactionMessage, error) { +func (cli *Client) DecryptReaction(ctx context.Context, reaction *events.Message) (*waE2E.ReactionMessage, error) { encReaction := reaction.Message.GetEncReactionMessage() if encReaction == nil { return nil, ErrNotEncryptedReactionMessage } - plaintext, err := cli.decryptMsgSecret(reaction, EncSecretReaction, encReaction, encReaction.GetTargetMessageKey()) + plaintext, err := cli.decryptMsgSecret(ctx, reaction, EncSecretReaction, encReaction, encReaction.GetTargetMessageKey()) if err != nil { return nil, fmt.Errorf("failed to decrypt reaction: %w", err) } @@ -197,12 +196,12 @@ func (cli *Client) DecryptReaction(reaction *events.Message) (*waE2E.ReactionMes // } // fmt.Printf("Comment message: %+v\n", comment) // } -func (cli *Client) DecryptComment(comment *events.Message) (*waE2E.Message, error) { +func (cli *Client) DecryptComment(ctx context.Context, comment *events.Message) (*waE2E.Message, error) { encComment := comment.Message.GetEncCommentMessage() if encComment == nil { return nil, ErrNotEncryptedCommentMessage } - plaintext, err := cli.decryptMsgSecret(comment, EncSecretComment, encComment, encComment.GetTargetMessageKey()) + plaintext, err := cli.decryptMsgSecret(ctx, comment, EncSecretComment, encComment, encComment.GetTargetMessageKey()) if err != nil { return nil, fmt.Errorf("failed to decrypt comment: %w", err) } @@ -227,12 +226,12 @@ func (cli *Client) DecryptComment(comment *events.Message) (*waE2E.Message, erro // fmt.Printf("- %X\n", hash) // } // } -func (cli *Client) DecryptPollVote(vote *events.Message) (*waE2E.PollVoteMessage, error) { +func (cli *Client) DecryptPollVote(ctx context.Context, vote *events.Message) (*waE2E.PollVoteMessage, error) { pollUpdate := vote.Message.GetPollUpdateMessage() if pollUpdate == nil { return nil, ErrNotPollUpdateMessage } - plaintext, err := cli.decryptMsgSecret(vote, EncSecretPollVote, pollUpdate.GetVote(), pollUpdate.GetPollCreationMessageKey()) + plaintext, err := cli.decryptMsgSecret(ctx, vote, EncSecretPollVote, pollUpdate.GetVote(), pollUpdate.GetPollCreationMessageKey()) if err != nil { return nil, fmt.Errorf("failed to decrypt poll vote: %w", err) } @@ -280,8 +279,8 @@ func HashPollOptions(optionNames []string) [][]byte { // } // resp, err := cli.SendMessage(context.Background(), evt.Info.Chat, pollVoteMsg) // } -func (cli *Client) BuildPollVote(pollInfo *types.MessageInfo, optionNames []string) (*waE2E.Message, error) { - pollUpdate, err := cli.EncryptPollVote(pollInfo, &waE2E.PollVoteMessage{ +func (cli *Client) BuildPollVote(ctx context.Context, pollInfo *types.MessageInfo, optionNames []string) (*waE2E.Message, error) { + pollUpdate, err := cli.EncryptPollVote(ctx, pollInfo, &waE2E.PollVoteMessage{ SelectedOptions: HashPollOptions(optionNames), }) return &waE2E.Message{PollUpdateMessage: pollUpdate}, err @@ -313,12 +312,12 @@ func (cli *Client) BuildPollCreation(name string, optionNames []string, selectab } // EncryptPollVote encrypts a poll vote message. This is a slightly lower-level function, using BuildPollVote is recommended. -func (cli *Client) EncryptPollVote(pollInfo *types.MessageInfo, vote *waE2E.PollVoteMessage) (*waE2E.PollUpdateMessage, error) { +func (cli *Client) EncryptPollVote(ctx context.Context, pollInfo *types.MessageInfo, vote *waE2E.PollVoteMessage) (*waE2E.PollUpdateMessage, error) { plaintext, err := proto.Marshal(vote) if err != nil { return nil, fmt.Errorf("failed to marshal poll vote protobuf: %w", err) } - ciphertext, iv, err := cli.encryptMsgSecret(cli.getOwnID(), pollInfo.Chat, pollInfo.Sender, pollInfo.ID, EncSecretPollVote, plaintext) + ciphertext, iv, err := cli.encryptMsgSecret(ctx, cli.getOwnID(), pollInfo.Chat, pollInfo.Sender, pollInfo.ID, EncSecretPollVote, plaintext) if err != nil { return nil, fmt.Errorf("failed to encrypt poll vote: %w", err) } @@ -332,13 +331,13 @@ func (cli *Client) EncryptPollVote(pollInfo *types.MessageInfo, vote *waE2E.Poll }, nil } -func (cli *Client) EncryptComment(rootMsgInfo *types.MessageInfo, comment *waE2E.Message) (*waE2E.Message, error) { +func (cli *Client) EncryptComment(ctx context.Context, rootMsgInfo *types.MessageInfo, comment *waE2E.Message) (*waE2E.Message, error) { plaintext, err := proto.Marshal(comment) if err != nil { return nil, fmt.Errorf("failed to marshal comment protobuf: %w", err) } // TODO is hardcoding LID here correct? What about polls? - ciphertext, iv, err := cli.encryptMsgSecret(cli.getOwnLID(), rootMsgInfo.Chat, rootMsgInfo.Sender, rootMsgInfo.ID, EncSecretComment, plaintext) + ciphertext, iv, err := cli.encryptMsgSecret(ctx, cli.getOwnLID(), rootMsgInfo.Chat, rootMsgInfo.Sender, rootMsgInfo.ID, EncSecretComment, plaintext) if err != nil { return nil, fmt.Errorf("failed to encrypt comment: %w", err) } @@ -356,14 +355,14 @@ func (cli *Client) EncryptComment(rootMsgInfo *types.MessageInfo, comment *waE2E }, nil } -func (cli *Client) EncryptReaction(rootMsgInfo *types.MessageInfo, reaction *waE2E.ReactionMessage) (*waE2E.EncReactionMessage, error) { +func (cli *Client) EncryptReaction(ctx context.Context, rootMsgInfo *types.MessageInfo, reaction *waE2E.ReactionMessage) (*waE2E.EncReactionMessage, error) { reactionKey := reaction.Key reaction.Key = nil plaintext, err := proto.Marshal(reaction) if err != nil { return nil, fmt.Errorf("failed to marshal reaction protobuf: %w", err) } - ciphertext, iv, err := cli.encryptMsgSecret(cli.getOwnLID(), rootMsgInfo.Chat, rootMsgInfo.Sender, rootMsgInfo.ID, EncSecretReaction, plaintext) + ciphertext, iv, err := cli.encryptMsgSecret(ctx, cli.getOwnLID(), rootMsgInfo.Chat, rootMsgInfo.Sender, rootMsgInfo.ID, EncSecretReaction, plaintext) if err != nil { return nil, fmt.Errorf("failed to encrypt reaction: %w", err) } diff --git a/notification.go b/notification.go index ed5e1da1..3bc7fc53 100644 --- a/notification.go +++ b/notification.go @@ -22,7 +22,7 @@ import ( "github.com/techwiz37/waSocket/types/events" ) -func (cli *Client) handleEncryptNotification(node *waBinary.Node) { +func (cli *Client) handleEncryptNotification(ctx context.Context, node *waBinary.Node) { from := node.AttrGetter().JID("from") if from == types.ServerJID { count := node.GetChildByTag("count") @@ -34,15 +34,15 @@ func (cli *Client) handleEncryptNotification(node *waBinary.Node) { } cli.Log.Infof("Got prekey count from server: %s", node.XMLString()) if otksLeft < MinPreKeyCount { - cli.uploadPreKeys() + cli.uploadPreKeys(ctx) } } else if _, ok := node.GetOptionalChildByTag("identity"); ok { cli.Log.Debugf("Got identity change for %s: %s, deleting all identities/sessions for that number", from, node.XMLString()) - err := cli.Store.Identities.DeleteAllIdentities(from.User) + err := cli.Store.Identities.DeleteAllIdentities(ctx, from.User) if err != nil { cli.Log.Warnf("Failed to delete all identities of %s from store after identity change: %v", from, err) } - err = cli.Store.Sessions.DeleteAllSessions(from.User) + err = cli.Store.Sessions.DeleteAllSessions(ctx, from.User) if err != nil { cli.Log.Warnf("Failed to delete all sessions of %s from store after identity change: %v", from, err) } @@ -53,13 +53,13 @@ func (cli *Client) handleEncryptNotification(node *waBinary.Node) { } } -func (cli *Client) handleAppStateNotification(node *waBinary.Node) { +func (cli *Client) handleAppStateNotification(ctx context.Context, node *waBinary.Node) { for _, collection := range node.GetChildrenByTag("collection") { ag := collection.AttrGetter() name := appstate.WAPatchName(ag.String("name")) version := ag.Uint64("version") cli.Log.Debugf("Got server sync notification that app state %s has updated to version %d", name, version) - err := cli.FetchAppState(name, false, false) + err := cli.FetchAppState(ctx, name, false, false) if errors.Is(err, ErrIQDisconnected) || errors.Is(err, ErrNotConnected) { // There are some app state changes right before a remote logout, so stop syncing if we're disconnected. cli.Log.Debugf("Failed to sync app state after notification: %v, not trying to sync other states", err) @@ -70,7 +70,7 @@ func (cli *Client) handleAppStateNotification(node *waBinary.Node) { } } -func (cli *Client) handlePictureNotification(node *waBinary.Node) { +func (cli *Client) handlePictureNotification(ctx context.Context, node *waBinary.Node) { ts := node.AttrGetter().UnixTime("t") for _, child := range node.GetChildren() { ag := child.AttrGetter() @@ -96,14 +96,14 @@ func (cli *Client) handlePictureNotification(node *waBinary.Node) { } } -func (cli *Client) handleDeviceNotification(node *waBinary.Node) { +func (cli *Client) handleDeviceNotification(ctx context.Context, node *waBinary.Node) { cli.userDevicesCacheLock.Lock() defer cli.userDevicesCacheLock.Unlock() ag := node.AttrGetter() from := ag.JID("from") fromLID := ag.OptionalJID("lid") if fromLID != nil { - cli.StoreLIDPNMapping(context.TODO(), *fromLID, from) + cli.StoreLIDPNMapping(ctx, *fromLID, from) } cached, ok := cli.userDevicesCache[from] if !ok { @@ -167,7 +167,7 @@ func (cli *Client) handleDeviceNotification(node *waBinary.Node) { } } -func (cli *Client) handleFBDeviceNotification(node *waBinary.Node) { +func (cli *Client) handleFBDeviceNotification(ctx context.Context, node *waBinary.Node) { cli.userDevicesCacheLock.Lock() defer cli.userDevicesCacheLock.Unlock() jid := node.AttrGetter().JID("from") @@ -175,7 +175,7 @@ func (cli *Client) handleFBDeviceNotification(node *waBinary.Node) { cli.userDevicesCache[jid] = userDevices } -func (cli *Client) handleOwnDevicesNotification(node *waBinary.Node) { +func (cli *Client) handleOwnDevicesNotification(ctx context.Context, node *waBinary.Node) { cli.userDevicesCacheLock.Lock() defer cli.userDevicesCacheLock.Unlock() ownID := cli.getOwnID().ToNonAD() @@ -207,7 +207,7 @@ func (cli *Client) handleOwnDevicesNotification(node *waBinary.Node) { } } -func (cli *Client) handleBlocklist(node *waBinary.Node) { +func (cli *Client) handleBlocklist(ctx context.Context, node *waBinary.Node) { ag := node.AttrGetter() evt := events.Blocklist{ Action: events.BlocklistAction(ag.OptionalString("action")), @@ -229,27 +229,27 @@ func (cli *Client) handleBlocklist(node *waBinary.Node) { cli.dispatchEvent(&evt) } -func (cli *Client) handleAccountSyncNotification(node *waBinary.Node) { +func (cli *Client) handleAccountSyncNotification(ctx context.Context, node *waBinary.Node) { for _, child := range node.GetChildren() { switch child.Tag { case "privacy": - cli.handlePrivacySettingsNotification(&child) + cli.handlePrivacySettingsNotification(ctx, &child) case "devices": - cli.handleOwnDevicesNotification(&child) + cli.handleOwnDevicesNotification(ctx, &child) case "picture": cli.dispatchEvent(&events.Picture{ Timestamp: node.AttrGetter().UnixTime("t"), JID: cli.getOwnID().ToNonAD(), }) case "blocklist": - cli.handleBlocklist(&child) + cli.handleBlocklist(ctx, &child) default: cli.Log.Debugf("Unhandled account sync item %s", child.Tag) } } } -func (cli *Client) handlePrivacyTokenNotification(node *waBinary.Node) { +func (cli *Client) handlePrivacyTokenNotification(ctx context.Context, node *waBinary.Node) { ownID := cli.getOwnID().ToNonAD() if ownID.IsEmpty() { cli.Log.Debugf("Ignoring privacy token notification, session was deleted") @@ -281,7 +281,7 @@ func (cli *Client) handlePrivacyTokenNotification(node *waBinary.Node) { if !ag.OK() { cli.Log.Warnf("privacy_token notification is missing some fields: %v", ag.Error()) } - err := cli.Store.PrivacyTokens.PutPrivacyTokens(store.PrivacyToken{ + err := cli.Store.PrivacyTokens.PutPrivacyTokens(ctx, store.PrivacyToken{ User: sender, Token: token, Timestamp: timestamp, @@ -338,7 +338,7 @@ func (cli *Client) parseNewsletterMessages(node *waBinary.Node) []*types.Newslet return output } -func (cli *Client) handleNewsletterNotification(node *waBinary.Node) { +func (cli *Client) handleNewsletterNotification(ctx context.Context, node *waBinary.Node) { ag := node.AttrGetter() liveUpdates := node.GetChildByTag("live_updates") cli.dispatchEvent(&events.NewsletterLiveUpdate{ @@ -361,7 +361,7 @@ type newsletterEvent struct { // _on_state_change -> id, is_requestor, state } -func (cli *Client) handleMexNotification(node *waBinary.Node) { +func (cli *Client) handleMexNotification(ctx context.Context, node *waBinary.Node) { for _, child := range node.GetChildren() { if child.Tag != "update" { continue @@ -386,7 +386,7 @@ func (cli *Client) handleMexNotification(node *waBinary.Node) { } } -func (cli *Client) handleStatusNotification(node *waBinary.Node) { +func (cli *Client) handleStatusNotification(ctx context.Context, node *waBinary.Node) { ag := node.AttrGetter() child, found := node.GetOptionalChildByTag("set") if !found { @@ -406,6 +406,7 @@ func (cli *Client) handleStatusNotification(node *waBinary.Node) { } func (cli *Client) handleNotification(node *waBinary.Node) { + ctx := context.TODO() ag := node.AttrGetter() notifType := ag.String("type") if !ag.OK() { @@ -414,15 +415,15 @@ func (cli *Client) handleNotification(node *waBinary.Node) { defer cli.maybeDeferredAck(node)() switch notifType { case "encrypt": - go cli.handleEncryptNotification(node) + go cli.handleEncryptNotification(ctx, node) case "server_sync": - go cli.handleAppStateNotification(node) + go cli.handleAppStateNotification(ctx, node) case "account_sync": - go cli.handleAccountSyncNotification(node) + go cli.handleAccountSyncNotification(ctx, node) case "devices": - cli.handleDeviceNotification(node) + cli.handleDeviceNotification(ctx, node) case "fbid:devices": - cli.handleFBDeviceNotification(node) + cli.handleFBDeviceNotification(ctx, node) case "w:gp2": evt, err := cli.parseGroupNotification(node) if err != nil { @@ -431,19 +432,19 @@ func (cli *Client) handleNotification(node *waBinary.Node) { cli.dispatchEvent(evt) } case "picture": - cli.handlePictureNotification(node) + cli.handlePictureNotification(ctx, node) case "mediaretry": - cli.handleMediaRetryNotification(node) + cli.handleMediaRetryNotification(ctx, node) case "privacy_token": - cli.handlePrivacyTokenNotification(node) + cli.handlePrivacyTokenNotification(ctx, node) case "link_code_companion_reg": - go cli.tryHandleCodePairNotification(node) + go cli.tryHandleCodePairNotification(ctx, node) case "newsletter": - cli.handleNewsletterNotification(node) + cli.handleNewsletterNotification(ctx, node) case "mex": - cli.handleMexNotification(node) + cli.handleMexNotification(ctx, node) case "status": - cli.handleStatusNotification(node) + cli.handleStatusNotification(ctx, node) // Other types: business, disappearing_mode, server, status, pay, psa default: cli.Log.Debugf("Unhandled notification with type %s", notifType) diff --git a/pair-code.go b/pair-code.go index 0f5e13f9..ee7a0673 100644 --- a/pair-code.go +++ b/pair-code.go @@ -7,6 +7,7 @@ package waSocket import ( + "context" "crypto/aes" "crypto/cipher" "crypto/sha256" @@ -86,7 +87,7 @@ func generateCompanionEphemeralKey() (ephemeralKeyPair *keys.KeyPair, ephemeralK // (the server will validate it and return 400 if it's wrong). // // See https://faq.whatsapp.com/1324084875126592 for more info -func (cli *Client) PairPhone(phone string, showPushNotification bool, clientType PairClientType, clientDisplayName string) (string, error) { +func (cli *Client) PairPhone(ctx context.Context, phone string, showPushNotification bool, clientType PairClientType, clientDisplayName string) (string, error) { if cli == nil { return "", ErrClientIsNil } @@ -102,6 +103,7 @@ func (cli *Client) PairPhone(phone string, showPushNotification bool, clientType Namespace: "md", Type: iqSet, To: types.ServerJID, + Context: ctx, Content: []waBinary.Node{{ Tag: "link_code_companion_reg", Attrs: waBinary.Attrs{ @@ -139,14 +141,14 @@ func (cli *Client) PairPhone(phone string, showPushNotification bool, clientType return encodedLinkingCode[0:4] + "-" + encodedLinkingCode[4:], nil } -func (cli *Client) tryHandleCodePairNotification(parentNode *waBinary.Node) { - err := cli.handleCodePairNotification(parentNode) +func (cli *Client) tryHandleCodePairNotification(ctx context.Context, parentNode *waBinary.Node) { + err := cli.handleCodePairNotification(ctx, parentNode) if err != nil { cli.Log.Errorf("Failed to handle code pair notification: %s", err) } } -func (cli *Client) handleCodePairNotification(parentNode *waBinary.Node) error { +func (cli *Client) handleCodePairNotification(ctx context.Context, parentNode *waBinary.Node) error { node, ok := parentNode.GetOptionalChildByTag("link_code_companion_reg") if !ok { return &ElementMissingError{ @@ -225,6 +227,7 @@ func (cli *Client) handleCodePairNotification(parentNode *waBinary.Node) error { Namespace: "md", Type: iqSet, To: types.ServerJID, + Context: ctx, Content: []waBinary.Node{{ Tag: "link_code_companion_reg", Attrs: waBinary.Attrs{ diff --git a/pair.go b/pair.go index 674709b9..ad6bf61d 100644 --- a/pair.go +++ b/pair.go @@ -25,6 +25,13 @@ import ( "github.com/techwiz37/waSocket/util/keys" ) +var ( + AdvPrefixAccountSignature = []byte{6, 0} + AdvPrefixDeviceSignatureGenerate = []byte{6, 1} + AdvHostedPrefixDeviceIdentityAccountSignature = []byte{6, 5} + AdvHostedPrefixDeviceIdentityDeviceSignatureVerification = []byte{6, 6} +) + func (cli *Client) handleIQ(node *waBinary.Node) { children := node.GetChildren() if len(children) != 1 || node.Attrs["from"] != types.ServerJID { @@ -87,7 +94,7 @@ func (cli *Client) handlePairSuccess(node *waBinary.Node) { platform, _ := pairSuccess.GetChildByTag("platform").Attrs["name"].(string) go func() { - err := cli.handlePair(deviceIdentityBytes, id, businessName, platform, jid, lid) + err := cli.handlePair(context.TODO(), deviceIdentityBytes, id, businessName, platform, jid, lid) if err != nil { cli.Log.Errorf("Failed to pair device: %v", err) cli.Disconnect() @@ -99,19 +106,24 @@ func (cli *Client) handlePairSuccess(node *waBinary.Node) { }() } -func (cli *Client) handlePair(deviceIdentityBytes []byte, reqID, businessName, platform string, jid, lid types.JID) error { +func (cli *Client) handlePair(ctx context.Context, deviceIdentityBytes []byte, reqID, businessName, platform string, jid, lid types.JID) error { var deviceIdentityContainer waAdv.ADVSignedDeviceIdentityHMAC err := proto.Unmarshal(deviceIdentityBytes, &deviceIdentityContainer) if err != nil { cli.sendPairError(reqID, 500, "internal-error") return &PairProtoError{"failed to parse device identity container in pair success message", err} } + isHostedAccount := deviceIdentityContainer.AccountType != nil && *deviceIdentityContainer.AccountType == waAdv.ADVEncryptionType_HOSTED h := hmac.New(sha256.New, cli.Store.AdvSecretKey) + if isHostedAccount { + h.Write(AdvHostedPrefixDeviceIdentityAccountSignature) + } h.Write(deviceIdentityContainer.Details) + if !bytes.Equal(h.Sum(nil), deviceIdentityContainer.HMAC) { cli.Log.Warnf("Invalid HMAC from pair success message") - cli.sendPairError(reqID, 401, "not-authorized") + cli.sendPairError(reqID, 401, "hmac-mismatch") return ErrPairInvalidDeviceIdentityHMAC } @@ -122,12 +134,12 @@ func (cli *Client) handlePair(deviceIdentityBytes []byte, reqID, businessName, p return &PairProtoError{"failed to parse signed device identity in pair success message", err} } - if !verifyDeviceIdentityAccountSignature(&deviceIdentity, cli.Store.IdentityKey) { - cli.sendPairError(reqID, 401, "not-authorized") + if !verifyDeviceIdentityAccountSignature(&deviceIdentity, cli.Store.IdentityKey, isHostedAccount) { + cli.sendPairError(reqID, 401, "signature-mismatch") return ErrPairInvalidDeviceSignature } - deviceIdentity.DeviceSignature = generateDeviceSignature(&deviceIdentity, cli.Store.IdentityKey)[:] + deviceIdentity.DeviceSignature = generateDeviceSignature(&deviceIdentity, cli.Store.IdentityKey, isHostedAccount)[:] var deviceIdentityDetails waAdv.ADVDeviceIdentity err = proto.Unmarshal(deviceIdentity.Details, &deviceIdentityDetails) @@ -158,15 +170,15 @@ func (cli *Client) handlePair(deviceIdentityBytes []byte, reqID, businessName, p cli.Store.LID = lid cli.Store.BusinessName = businessName cli.Store.Platform = platform - err = cli.Store.Save() + err = cli.Store.Save(ctx) if err != nil { cli.sendPairError(reqID, 500, "internal-error") return &PairDatabaseError{"failed to save device store", err} } - cli.StoreLIDPNMapping(context.TODO(), lid, jid) - err = cli.Store.Identities.PutIdentity(mainDeviceLID.SignalAddress().String(), mainDeviceIdentity) + cli.StoreLIDPNMapping(ctx, lid, jid) + err = cli.Store.Identities.PutIdentity(ctx, mainDeviceLID.SignalAddress().String(), mainDeviceIdentity) if err != nil { - _ = cli.Store.Delete() + _ = cli.Store.Delete(ctx) cli.sendPairError(reqID, 500, "internal-error") return &PairDatabaseError{"failed to store main device identity", err} } @@ -193,7 +205,7 @@ func (cli *Client) handlePair(deviceIdentityBytes []byte, reqID, businessName, p }}, }) if err != nil { - _ = cli.Store.Delete() + _ = cli.Store.Delete(ctx) return fmt.Errorf("failed to send pairing confirmation: %w", err) } return nil @@ -212,7 +224,7 @@ func concatBytes(data ...[]byte) []byte { return output } -func verifyDeviceIdentityAccountSignature(deviceIdentity *waAdv.ADVSignedDeviceIdentity, ikp *keys.KeyPair) bool { +func verifyDeviceIdentityAccountSignature(deviceIdentity *waAdv.ADVSignedDeviceIdentity, ikp *keys.KeyPair, isHostedAccount bool) bool { if len(deviceIdentity.AccountSignatureKey) != 32 || len(deviceIdentity.AccountSignature) != 64 { return false } @@ -220,12 +232,20 @@ func verifyDeviceIdentityAccountSignature(deviceIdentity *waAdv.ADVSignedDeviceI signatureKey := ecc.NewDjbECPublicKey(*(*[32]byte)(deviceIdentity.AccountSignatureKey)) signature := *(*[64]byte)(deviceIdentity.AccountSignature) - message := concatBytes([]byte{6, 0}, deviceIdentity.Details, ikp.Pub[:]) + prefix := AdvPrefixAccountSignature + if isHostedAccount { + prefix = AdvHostedPrefixDeviceIdentityAccountSignature + } + message := concatBytes(prefix, deviceIdentity.Details, ikp.Pub[:]) return ecc.VerifySignature(signatureKey, message, signature) } -func generateDeviceSignature(deviceIdentity *waAdv.ADVSignedDeviceIdentity, ikp *keys.KeyPair) *[64]byte { - message := concatBytes([]byte{6, 1}, deviceIdentity.Details, ikp.Pub[:], deviceIdentity.AccountSignatureKey) +func generateDeviceSignature(deviceIdentity *waAdv.ADVSignedDeviceIdentity, ikp *keys.KeyPair, isHostedAccount bool) *[64]byte { + prefix := AdvPrefixDeviceSignatureGenerate + if isHostedAccount { + prefix = AdvHostedPrefixDeviceIdentityDeviceSignatureVerification + } + message := concatBytes(prefix, deviceIdentity.Details, ikp.Pub[:], deviceIdentity.AccountSignatureKey) sig := ecc.CalculateSignature(ecc.NewDjbECPrivateKey(*ikp.Priv), message) return &sig } diff --git a/prekeys.go b/prekeys.go index c3d20ad7..ec2a219b 100644 --- a/prekeys.go +++ b/prekeys.go @@ -29,11 +29,12 @@ const ( MinPreKeyCount = 5 ) -func (cli *Client) getServerPreKeyCount() (int, error) { +func (cli *Client) getServerPreKeyCount(ctx context.Context) (int, error) { resp, err := cli.sendIQ(infoQuery{ Namespace: "encrypt", Type: "get", To: types.ServerJID, + Context: ctx, Content: []waBinary.Node{ {Tag: "count"}, }, @@ -47,11 +48,11 @@ func (cli *Client) getServerPreKeyCount() (int, error) { return val, ag.Error() } -func (cli *Client) uploadPreKeys() { +func (cli *Client) uploadPreKeys(ctx context.Context) { cli.uploadPreKeysLock.Lock() defer cli.uploadPreKeysLock.Unlock() if cli.lastPreKeyUpload.Add(10 * time.Minute).After(time.Now()) { - sc, _ := cli.getServerPreKeyCount() + sc, _ := cli.getServerPreKeyCount(ctx) if sc >= WantedPreKeyCount { cli.Log.Debugf("Canceling prekey upload request due to likely race condition") return @@ -59,13 +60,14 @@ func (cli *Client) uploadPreKeys() { } var registrationIDBytes [4]byte binary.BigEndian.PutUint32(registrationIDBytes[:], cli.Store.RegistrationID) - preKeys, err := cli.Store.PreKeys.GetOrGenPreKeys(WantedPreKeyCount) + preKeys, err := cli.Store.PreKeys.GetOrGenPreKeys(ctx, WantedPreKeyCount) if err != nil { cli.Log.Errorf("Failed to get prekeys to upload: %v", err) return } cli.Log.Infof("Uploading %d new prekeys to server", len(preKeys)) _, err = cli.sendIQ(infoQuery{ + Context: ctx, Namespace: "encrypt", Type: "set", To: types.ServerJID, @@ -82,11 +84,13 @@ func (cli *Client) uploadPreKeys() { return } cli.Log.Debugf("Got response to uploading prekeys") - err = cli.Store.PreKeys.MarkPreKeysAsUploaded(preKeys[len(preKeys)-1].KeyID) + err = cli.Store.PreKeys.MarkPreKeysAsUploaded(ctx, preKeys[len(preKeys)-1].KeyID) if err != nil { cli.Log.Warnf("Failed to mark prekeys as uploaded: %v", err) + return } cli.lastPreKeyUpload = time.Now() + return } type preKeyResp struct { diff --git a/presence.go b/presence.go index e828a4ef..a16dbd18 100644 --- a/presence.go +++ b/presence.go @@ -7,6 +7,7 @@ package waSocket import ( + "context" "fmt" waBinary "github.com/techwiz37/waSocket/binary" @@ -87,7 +88,7 @@ func (cli *Client) SendPresence(state types.Presence) error { // // cli.SendPresence(types.PresenceAvailable) func (cli *Client) SubscribePresence(jid types.JID) error { - privacyToken, err := cli.Store.PrivacyTokens.GetPrivacyToken(jid) + privacyToken, err := cli.Store.PrivacyTokens.GetPrivacyToken(context.TODO(), jid) if err != nil { return fmt.Errorf("failed to get privacy token: %w", err) } else if privacyToken == nil { diff --git a/privacysettings.go b/privacysettings.go index 30feffbc..106bf204 100644 --- a/privacysettings.go +++ b/privacysettings.go @@ -7,6 +7,7 @@ package waSocket import ( + "context" "strconv" "time" @@ -16,7 +17,7 @@ import ( ) // TryFetchPrivacySettings will fetch the user's privacy settings, either from the in-memory cache or from the server. -func (cli *Client) TryFetchPrivacySettings(ignoreCache bool) (*types.PrivacySettings, error) { +func (cli *Client) TryFetchPrivacySettings(ctx context.Context, ignoreCache bool) (*types.PrivacySettings, error) { if cli == nil { return nil, ErrClientIsNil } else if val := cli.privacySettingsCache.Load(); val != nil && !ignoreCache { @@ -24,6 +25,7 @@ func (cli *Client) TryFetchPrivacySettings(ignoreCache bool) (*types.PrivacySett } resp, err := cli.sendIQ(infoQuery{ Namespace: "privacy", + Context: ctx, Type: iqGet, To: types.ServerJID, Content: []waBinary.Node{{Tag: "privacy"}}, @@ -43,11 +45,11 @@ func (cli *Client) TryFetchPrivacySettings(ignoreCache bool) (*types.PrivacySett // GetPrivacySettings will get the user's privacy settings. If an error occurs while fetching them, the error will be // logged, but the method will just return an empty struct. -func (cli *Client) GetPrivacySettings() (settings types.PrivacySettings) { +func (cli *Client) GetPrivacySettings(ctx context.Context) (settings types.PrivacySettings) { if cli == nil || cli.MessengerConfig != nil { return } - settingsPtr, err := cli.TryFetchPrivacySettings(false) + settingsPtr, err := cli.TryFetchPrivacySettings(ctx, false) if err != nil { cli.Log.Errorf("Failed to fetch privacy settings: %v", err) } else { @@ -59,8 +61,8 @@ func (cli *Client) GetPrivacySettings() (settings types.PrivacySettings) { // SetPrivacySetting will set the given privacy setting to the given value. // The privacy settings will be fetched from the server after the change and the new settings will be returned. // If an error occurs while fetching the new settings, will return an empty struct. -func (cli *Client) SetPrivacySetting(name types.PrivacySettingType, value types.PrivacySetting) (settings types.PrivacySettings, err error) { - settingsPtr, err := cli.TryFetchPrivacySettings(false) +func (cli *Client) SetPrivacySetting(ctx context.Context, name types.PrivacySettingType, value types.PrivacySetting) (settings types.PrivacySettings, err error) { + settingsPtr, err := cli.TryFetchPrivacySettings(ctx, false) if err != nil { return settings, err } @@ -155,17 +157,14 @@ func (cli *Client) parsePrivacySettings(privacyNode *waBinary.Node, settings *ty return &evt } -func (cli *Client) handlePrivacySettingsNotification(privacyNode *waBinary.Node) { +func (cli *Client) handlePrivacySettingsNotification(ctx context.Context, privacyNode *waBinary.Node) { cli.Log.Debugf("Parsing privacy settings change notification") - settings, err := cli.TryFetchPrivacySettings(false) + settings, err := cli.TryFetchPrivacySettings(ctx, false) if err != nil { cli.Log.Errorf("Failed to fetch privacy settings when handling change: %v", err) return } evt := cli.parsePrivacySettings(privacyNode, settings) - // The data isn't be reliable if the fetch failed, so only cache if it didn't fail - if err == nil { - cli.privacySettingsCache.Store(settings) - } + cli.privacySettingsCache.Store(settings) cli.dispatchEvent(evt) } diff --git a/proto/waAdv/WAAdv.pb.go b/proto/waAdv/WAAdv.pb.go index c0b548ed..0a8fdb30 100644 --- a/proto/waAdv/WAAdv.pb.go +++ b/proto/waAdv/WAAdv.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waAdv/WAAdv.proto @@ -9,11 +9,10 @@ package waAdv import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -421,17 +420,49 @@ func (x *ADVSignedDeviceIdentityHMAC) GetAccountType() ADVEncryptionType { var File_waAdv_WAAdv_proto protoreflect.FileDescriptor -//go:embed WAAdv.pb.raw -var file_waAdv_WAAdv_proto_rawDesc []byte +const file_waAdv_WAAdv_proto_rawDesc = "" + + "\n" + + "\x11waAdv/WAAdv.proto\x12\x05WAAdv\"\xcd\x01\n" + + "\x0fADVKeyIndexList\x12\x14\n" + + "\x05rawID\x18\x01 \x01(\rR\x05rawID\x12\x1c\n" + + "\ttimestamp\x18\x02 \x01(\x04R\ttimestamp\x12\"\n" + + "\fcurrentIndex\x18\x03 \x01(\rR\fcurrentIndex\x12&\n" + + "\fvalidIndexes\x18\x04 \x03(\rB\x02\x10\x01R\fvalidIndexes\x12:\n" + + "\vaccountType\x18\x05 \x01(\x0e2\x18.WAAdv.ADVEncryptionTypeR\vaccountType\"\x8f\x01\n" + + "\x15ADVSignedKeyIndexList\x12\x18\n" + + "\adetails\x18\x01 \x01(\fR\adetails\x12*\n" + + "\x10accountSignature\x18\x02 \x01(\fR\x10accountSignature\x120\n" + + "\x13accountSignatureKey\x18\x03 \x01(\fR\x13accountSignatureKey\"\xd9\x01\n" + + "\x11ADVDeviceIdentity\x12\x14\n" + + "\x05rawID\x18\x01 \x01(\rR\x05rawID\x12\x1c\n" + + "\ttimestamp\x18\x02 \x01(\x04R\ttimestamp\x12\x1a\n" + + "\bkeyIndex\x18\x03 \x01(\rR\bkeyIndex\x12:\n" + + "\vaccountType\x18\x04 \x01(\x0e2\x18.WAAdv.ADVEncryptionTypeR\vaccountType\x128\n" + + "\n" + + "deviceType\x18\x05 \x01(\x0e2\x18.WAAdv.ADVEncryptionTypeR\n" + + "deviceType\"\xbb\x01\n" + + "\x17ADVSignedDeviceIdentity\x12\x18\n" + + "\adetails\x18\x01 \x01(\fR\adetails\x120\n" + + "\x13accountSignatureKey\x18\x02 \x01(\fR\x13accountSignatureKey\x12*\n" + + "\x10accountSignature\x18\x03 \x01(\fR\x10accountSignature\x12(\n" + + "\x0fdeviceSignature\x18\x04 \x01(\fR\x0fdeviceSignature\"\x87\x01\n" + + "\x1bADVSignedDeviceIdentityHMAC\x12\x18\n" + + "\adetails\x18\x01 \x01(\fR\adetails\x12\x12\n" + + "\x04HMAC\x18\x02 \x01(\fR\x04HMAC\x12:\n" + + "\vaccountType\x18\x03 \x01(\x0e2\x18.WAAdv.ADVEncryptionTypeR\vaccountType*)\n" + + "\x11ADVEncryptionType\x12\b\n" + + "\x04E2EE\x10\x00\x12\n" + + "\n" + + "\x06HOSTED\x10\x01B!Z\x1fgithub.com/techwiz37/waSocket/proto/waAdv" var ( file_waAdv_WAAdv_proto_rawDescOnce sync.Once - file_waAdv_WAAdv_proto_rawDescData = file_waAdv_WAAdv_proto_rawDesc + file_waAdv_WAAdv_proto_rawDescData []byte ) func file_waAdv_WAAdv_proto_rawDescGZIP() []byte { file_waAdv_WAAdv_proto_rawDescOnce.Do(func() { - file_waAdv_WAAdv_proto_rawDescData = protoimpl.X.CompressGZIP(file_waAdv_WAAdv_proto_rawDescData) + file_waAdv_WAAdv_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waAdv_WAAdv_proto_rawDesc), len(file_waAdv_WAAdv_proto_rawDesc))) }) return file_waAdv_WAAdv_proto_rawDescData } @@ -467,7 +498,7 @@ func file_waAdv_WAAdv_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waAdv_WAAdv_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waAdv_WAAdv_proto_rawDesc), len(file_waAdv_WAAdv_proto_rawDesc)), NumEnums: 1, NumMessages: 5, NumExtensions: 0, @@ -479,7 +510,6 @@ func file_waAdv_WAAdv_proto_init() { MessageInfos: file_waAdv_WAAdv_proto_msgTypes, }.Build() File_waAdv_WAAdv_proto = out.File - file_waAdv_WAAdv_proto_rawDesc = nil file_waAdv_WAAdv_proto_goTypes = nil file_waAdv_WAAdv_proto_depIdxs = nil } diff --git a/proto/waAdv/WAAdv.pb.raw b/proto/waAdv/WAAdv.pb.raw deleted file mode 100644 index d894e36f1259e56e8eec02f2fd4275593db79075..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1006 zcmbVL%TB^T6m_5|UW>q}u~8GT3xh0L!^*fT(gdQ$q!3NqP1+GBLQC2KA41FIn0J>RD;7w0HRv30J8PeJaJHgg1m z28vWj7BiJZ4q0=3d!-ve$c^udwh`X*sSqezzxwzbcH-FZ79m%*7A>h?2=XDL zD(y3y)}7EH#)tp%_yE!`<2jA}oz!v9q(69uF900DZY8^Cu<8eb{fXN#h0Fb3;$f7j z#U3u4P?WGm6DmS>q-HwI$PL+wx79ZUhfCPkZjCFvTmc3tLX1-){^Jvf=&hRC(wT_J we6DdCB(rRqxit*1Ub|~F&1w!+P9Be2p4K5f?TP7wXTpOH^#;0l)Vg@)-w%Q^uK)l5 diff --git a/proto/waArmadilloApplication/WAArmadilloApplication.pb.go b/proto/waArmadilloApplication/WAArmadilloApplication.pb.go index b8e04f37..1b6a74a2 100644 --- a/proto/waArmadilloApplication/WAArmadilloApplication.pb.go +++ b/proto/waArmadilloApplication/WAArmadilloApplication.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waArmadilloApplication/WAArmadilloApplication.proto @@ -9,14 +9,13 @@ package waArmadilloApplication import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" waArmadilloXMA "github.com/techwiz37/waSocket/proto/waArmadilloXMA" waCommon "github.com/techwiz37/waSocket/proto/waCommon" - - _ "embed" ) const ( @@ -2604,17 +2603,197 @@ func (x *Armadillo_Content_CommonSticker) GetStickerType() Armadillo_Content_Com var File_waArmadilloApplication_WAArmadilloApplication_proto protoreflect.FileDescriptor -//go:embed WAArmadilloApplication.pb.raw -var file_waArmadilloApplication_WAArmadilloApplication_proto_rawDesc []byte +const file_waArmadilloApplication_WAArmadilloApplication_proto_rawDesc = "" + + "\n" + + "3waArmadilloApplication/WAArmadilloApplication.proto\x12\x16WAArmadilloApplication\x1a#waArmadilloXMA/WAArmadilloXMA.proto\x1a\x17waCommon/WACommon.proto\"\x97?\n" + + "\tArmadillo\x12C\n" + + "\apayload\x18\x01 \x01(\v2).WAArmadilloApplication.Armadillo.PayloadR\apayload\x12F\n" + + "\bmetadata\x18\x02 \x01(\v2*.WAArmadilloApplication.Armadillo.MetadataR\bmetadata\x1a\n" + + "\n" + + "\bMetadata\x1a\xd8\x02\n" + + "\aPayload\x12E\n" + + "\acontent\x18\x01 \x01(\v2).WAArmadilloApplication.Armadillo.ContentH\x00R\acontent\x12]\n" + + "\x0fapplicationData\x18\x02 \x01(\v21.WAArmadilloApplication.Armadillo.ApplicationDataH\x00R\x0fapplicationData\x12B\n" + + "\x06signal\x18\x03 \x01(\v2(.WAArmadilloApplication.Armadillo.SignalH\x00R\x06signal\x12X\n" + + "\vsubProtocol\x18\x04 \x01(\v24.WAArmadilloApplication.Armadillo.SubProtocolPayloadH\x00R\vsubProtocolB\t\n" + + "\apayload\x1aU\n" + + "\x12SubProtocolPayload\x12?\n" + + "\vfutureProof\x18\x01 \x01(\x0e2\x1d.WACommon.FutureProofBehaviorR\vfutureProof\x1a\xc2\x05\n" + + "\x06Signal\x12|\n" + + "\x17encryptedBackupsSecrets\x18\x01 \x01(\v2@.WAArmadilloApplication.Armadillo.Signal.EncryptedBackupsSecretsH\x00R\x17encryptedBackupsSecrets\x1a\xaf\x04\n" + + "\x17EncryptedBackupsSecrets\x12\x1a\n" + + "\bbackupID\x18\x01 \x01(\x04R\bbackupID\x12\"\n" + + "\fserverDataID\x18\x02 \x01(\x04R\fserverDataID\x12\\\n" + + "\x05epoch\x18\x03 \x03(\v2F.WAArmadilloApplication.Armadillo.Signal.EncryptedBackupsSecrets.EpochR\x05epoch\x120\n" + + "\x13tempOcmfClientState\x18\x04 \x01(\fR\x13tempOcmfClientState\x12&\n" + + "\x0emailboxRootKey\x18\x05 \x01(\fR\x0emailboxRootKey\x12:\n" + + "\x18obliviousValidationToken\x18\x06 \x01(\fR\x18obliviousValidationToken\x1a\xdf\x01\n" + + "\x05Epoch\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x04R\x02ID\x12\x16\n" + + "\x06anonID\x18\x02 \x01(\fR\x06anonID\x12\x18\n" + + "\arootKey\x18\x03 \x01(\fR\arootKey\x12j\n" + + "\x06status\x18\x04 \x01(\x0e2R.WAArmadilloApplication.Armadillo.Signal.EncryptedBackupsSecrets.Epoch.EpochStatusR\x06status\"(\n" + + "\vEpochStatus\x12\v\n" + + "\aES_OPEN\x10\x01\x12\f\n" + + "\bES_CLOSE\x10\x02B\b\n" + + "\x06signal\x1a\xcf\x14\n" + + "\x0fApplicationData\x12p\n" + + "\fmetadataSync\x18\x01 \x01(\v2J.WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncNotificationH\x00R\fmetadataSync\x12n\n" + + "\raiBotResponse\x18\x02 \x01(\v2F.WAArmadilloApplication.Armadillo.ApplicationData.AIBotResponseMessageH\x00R\raiBotResponse\x12\x97\x01\n" + + "\x1dmessageHistoryDocumentMessage\x18\x03 \x01(\v2O.WAArmadilloApplication.Armadillo.ApplicationData.MessageHistoryDocumentMessageH\x00R\x1dmessageHistoryDocumentMessage\x1aR\n" + + "\x1dMessageHistoryDocumentMessage\x121\n" + + "\bdocument\x18\x01 \x01(\v2\x15.WACommon.SubProtocolR\bdocument\x1a\x86\x01\n" + + "\x14AIBotResponseMessage\x12 \n" + + "\vsummonToken\x18\x01 \x01(\tR\vsummonToken\x12 \n" + + "\vmessageText\x18\x02 \x01(\tR\vmessageText\x12*\n" + + "\x10serializedExtras\x18\x03 \x01(\tR\x10serializedExtras\x1a\xd3\x0e\n" + + "\x12MetadataSyncAction\x12u\n" + + "\n" + + "chatAction\x18e \x01(\v2S.WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatActionH\x00R\n" + + "chatAction\x12~\n" + + "\rmessageAction\x18f \x01(\v2V.WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncMessageActionH\x00R\rmessageAction\x12(\n" + + "\x0factionTimestamp\x18\x01 \x01(\x03R\x0factionTimestamp\x1a\xf1\x01\n" + + "\x11SyncMessageAction\x12\x92\x01\n" + + "\rmessageDelete\x18e \x01(\v2j.WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncMessageAction.ActionMessageDeleteH\x00R\rmessageDelete\x12&\n" + + "\x03key\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x03key\x1a\x15\n" + + "\x13ActionMessageDeleteB\b\n" + + "\x06action\x1a\xbb\a\n" + + "\x0eSyncChatAction\x12\x89\x01\n" + + "\vchatArchive\x18e \x01(\v2e.WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction.ActionChatArchiveH\x00R\vchatArchive\x12\x86\x01\n" + + "\n" + + "chatDelete\x18f \x01(\v2d.WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction.ActionChatDeleteH\x00R\n" + + "chatDelete\x12\x80\x01\n" + + "\bchatRead\x18g \x01(\v2b.WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction.ActionChatReadH\x00R\bchatRead\x12\x16\n" + + "\x06chatID\x18\x01 \x01(\tR\x06chatID\x1a\xa5\x01\n" + + "\x0eActionChatRead\x12\x7f\n" + + "\fmessageRange\x18\x01 \x01(\v2[.WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncActionMessageRangeR\fmessageRange\x12\x12\n" + + "\x04read\x18\x02 \x01(\bR\x04read\x1a\x93\x01\n" + + "\x10ActionChatDelete\x12\x7f\n" + + "\fmessageRange\x18\x01 \x01(\v2[.WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncActionMessageRangeR\fmessageRange\x1a\xb0\x01\n" + + "\x11ActionChatArchive\x12\x7f\n" + + "\fmessageRange\x18\x01 \x01(\v2[.WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncActionMessageRangeR\fmessageRange\x12\x1a\n" + + "\barchived\x18\x02 \x01(\bR\barchivedB\b\n" + + "\x06action\x1aY\n" + + "\x11SyncActionMessage\x12&\n" + + "\x03key\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x03key\x12\x1c\n" + + "\ttimestamp\x18\x02 \x01(\x03R\ttimestamp\x1a\x80\x02\n" + + "\x16SyncActionMessageRange\x122\n" + + "\x14lastMessageTimestamp\x18\x01 \x01(\x03R\x14lastMessageTimestamp\x12>\n" + + "\x1alastSystemMessageTimestamp\x18\x02 \x01(\x03R\x1alastSystemMessageTimestamp\x12r\n" + + "\bmessages\x18\x03 \x03(\v2V.WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncActionMessageR\bmessagesB\f\n" + + "\n" + + "actionType\x1az\n" + + "\x18MetadataSyncNotification\x12^\n" + + "\aactions\x18\x02 \x03(\v2D.WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncActionR\aactionsB\x11\n" + + "\x0fapplicationData\x1a\xa7 \n" + + "\aContent\x12_\n" + + "\rcommonSticker\x18\x01 \x01(\v27.WAArmadilloApplication.Armadillo.Content.CommonStickerH\x00R\rcommonSticker\x12h\n" + + "\x10screenshotAction\x18\x03 \x01(\v2:.WAArmadilloApplication.Armadillo.Content.ScreenshotActionH\x00R\x10screenshotAction\x12`\n" + + "\x16extendedContentMessage\x18\x04 \x01(\v2&.WAArmadilloXMA.ExtendedContentMessageH\x00R\x16extendedContentMessage\x12\\\n" + + "\fravenMessage\x18\x05 \x01(\v26.WAArmadilloApplication.Armadillo.Content.RavenMessageH\x00R\fravenMessage\x12}\n" + + "\x17ravenActionNotifMessage\x18\x06 \x01(\v2A.WAArmadilloApplication.Armadillo.Content.RavenActionNotifMessageH\x00R\x17ravenActionNotifMessage\x12\x92\x01\n" + + "\x1eextendedMessageContentWithSear\x18\a \x01(\v2H.WAArmadilloApplication.Armadillo.Content.ExtendedContentMessageWithSearH\x00R\x1eextendedMessageContentWithSear\x12q\n" + + "\x13imageGalleryMessage\x18\b \x01(\v2=.WAArmadilloApplication.Armadillo.Content.ImageGalleryMessageH\x00R\x13imageGalleryMessage\x12\x86\x01\n" + + "\x1apaymentsTransactionMessage\x18\n" + + " \x01(\v2D.WAArmadilloApplication.Armadillo.Content.PaymentsTransactionMessageH\x00R\x1apaymentsTransactionMessage\x12q\n" + + "\x13bumpExistingMessage\x18\v \x01(\v2=.WAArmadilloApplication.Armadillo.Content.BumpExistingMessageH\x00R\x13bumpExistingMessage\x12h\n" + + "\x10noteReplyMessage\x18\r \x01(\v2:.WAArmadilloApplication.Armadillo.Content.NoteReplyMessageH\x00R\x10noteReplyMessage\x12d\n" + + "\x10ravenMessageMsgr\x18\x0e \x01(\v26.WAArmadilloApplication.Armadillo.Content.RavenMessageH\x00R\x10ravenMessageMsgr\x12\x86\x01\n" + + "\x1anetworkVerificationMessage\x18\x0f \x01(\v2D.WAArmadilloApplication.Armadillo.Content.NetworkVerificationMessageH\x00R\x1anetworkVerificationMessage\x1a\xba\a\n" + + "\x1aPaymentsTransactionMessage\x12$\n" + + "\rtransactionID\x18\x01 \x01(\x04R\rtransactionID\x12\x16\n" + + "\x06amount\x18\x02 \x01(\tR\x06amount\x12\x1a\n" + + "\bcurrency\x18\x03 \x01(\tR\bcurrency\x12x\n" + + "\rpaymentStatus\x18\x04 \x01(\x0e2R.WAArmadilloApplication.Armadillo.Content.PaymentsTransactionMessage.PaymentStatusR\rpaymentStatus\x12^\n" + + "\x16extendedContentMessage\x18\x05 \x01(\v2&.WAArmadilloXMA.ExtendedContentMessageR\x16extendedContentMessage\"\xe7\x04\n" + + "\rPaymentStatus\x12\x13\n" + + "\x0fPAYMENT_UNKNOWN\x10\x00\x12\x12\n" + + "\x0eREQUEST_INITED\x10\x04\x12\x14\n" + + "\x10REQUEST_DECLINED\x10\x05\x12\x1b\n" + + "\x17REQUEST_TRANSFER_INITED\x10\x06\x12\x1e\n" + + "\x1aREQUEST_TRANSFER_COMPLETED\x10\a\x12\x1b\n" + + "\x17REQUEST_TRANSFER_FAILED\x10\b\x12\x14\n" + + "\x10REQUEST_CANCELED\x10\t\x12\x13\n" + + "\x0fREQUEST_EXPIRED\x10\n" + + "\x12\x13\n" + + "\x0fTRANSFER_INITED\x10\v\x12\x14\n" + + "\x10TRANSFER_PENDING\x10\f\x12+\n" + + "'TRANSFER_PENDING_RECIPIENT_VERIFICATION\x10\r\x12\x15\n" + + "\x11TRANSFER_CANCELED\x10\x0e\x12\x16\n" + + "\x12TRANSFER_COMPLETED\x10\x0f\x12;\n" + + "7TRANSFER_NO_RECEIVER_CREDENTIAL_NO_RTS_PENDING_CANCELED\x10\x10\x128\n" + + "4TRANSFER_NO_RECEIVER_CREDENTIAL_NO_RTS_PENDING_OTHER\x10\x11\x12\x15\n" + + "\x11TRANSFER_REFUNDED\x10\x12\x12\x1b\n" + + "\x17TRANSFER_PARTIAL_REFUND\x10\x13\x12\x19\n" + + "\x15TRANSFER_CHARGED_BACK\x10\x14\x12\x14\n" + + "\x10TRANSFER_EXPIRED\x10\x15\x12\x15\n" + + "\x11TRANSFER_DECLINED\x10\x16\x12\x18\n" + + "\x14TRANSFER_UNAVAILABLE\x10\x17\x1a8\n" + + "\x1aNetworkVerificationMessage\x12\x1a\n" + + "\bcodeText\x18\x01 \x01(\tR\bcodeText\x1a\xd4\x02\n" + + "\x10NoteReplyMessage\x129\n" + + "\vtextContent\x18\x04 \x01(\v2\x15.WACommon.MessageTextH\x00R\vtextContent\x12?\n" + + "\x0estickerContent\x18\x05 \x01(\v2\x15.WACommon.SubProtocolH\x00R\x0estickerContent\x12;\n" + + "\fvideoContent\x18\x06 \x01(\v2\x15.WACommon.SubProtocolH\x00R\fvideoContent\x12\x16\n" + + "\x06noteID\x18\x01 \x01(\tR\x06noteID\x121\n" + + "\bnoteText\x18\x02 \x01(\v2\x15.WACommon.MessageTextR\bnoteText\x12(\n" + + "\x0fnoteTimestampMS\x18\x03 \x01(\x03R\x0fnoteTimestampMSB\x12\n" + + "\x10noteReplyContent\x1a=\n" + + "\x13BumpExistingMessage\x12&\n" + + "\x03key\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x03key\x1aD\n" + + "\x13ImageGalleryMessage\x12-\n" + + "\x06images\x18\x01 \x03(\v2\x15.WACommon.SubProtocolR\x06images\x1a\xc3\x01\n" + + "\x10ScreenshotAction\x12q\n" + + "\x0escreenshotType\x18\x01 \x01(\x0e2I.WAArmadilloApplication.Armadillo.Content.ScreenshotAction.ScreenshotTypeR\x0escreenshotType\"<\n" + + "\x0eScreenshotType\x12\x14\n" + + "\x10SCREENSHOT_IMAGE\x10\x01\x12\x14\n" + + "\x10SCREEN_RECORDING\x10\x02\x1a\xf3\x01\n" + + "\x1eExtendedContentMessageWithSear\x12\x16\n" + + "\x06searID\x18\x01 \x01(\tR\x06searID\x12\x18\n" + + "\apayload\x18\x02 \x01(\fR\apayload\x12\x1c\n" + + "\tnativeURL\x18\x03 \x01(\tR\tnativeURL\x12K\n" + + "\x15searAssociatedMessage\x18\x04 \x01(\v2\x15.WACommon.SubProtocolR\x15searAssociatedMessage\x124\n" + + "\x15searSentWithMessageID\x18\x05 \x01(\tR\x15searSentWithMessageID\x1a\x96\x02\n" + + "\x17RavenActionNotifMessage\x12&\n" + + "\x03key\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x03key\x12(\n" + + "\x0factionTimestamp\x18\x02 \x01(\x03R\x0factionTimestamp\x12l\n" + + "\n" + + "actionType\x18\x03 \x01(\x0e2L.WAArmadilloApplication.Armadillo.Content.RavenActionNotifMessage.ActionTypeR\n" + + "actionType\";\n" + + "\n" + + "ActionType\x12\n" + + "\n" + + "\x06PLAYED\x10\x00\x12\x0e\n" + + "\n" + + "SCREENSHOT\x10\x01\x12\x11\n" + + "\rFORCE_DISABLE\x10\x02\x1a\xc8\x02\n" + + "\fRavenMessage\x12;\n" + + "\fimageMessage\x18\x02 \x01(\v2\x15.WACommon.SubProtocolH\x00R\fimageMessage\x12;\n" + + "\fvideoMessage\x18\x03 \x01(\v2\x15.WACommon.SubProtocolH\x00R\fvideoMessage\x12j\n" + + "\rephemeralType\x18\x01 \x01(\x0e2D.WAArmadilloApplication.Armadillo.Content.RavenMessage.EphemeralTypeR\rephemeralType\"B\n" + + "\rEphemeralType\x12\r\n" + + "\tVIEW_ONCE\x10\x00\x12\x10\n" + + "\fALLOW_REPLAY\x10\x01\x12\x10\n" + + "\fKEEP_IN_CHAT\x10\x02B\x0e\n" + + "\fmediaContent\x1a\xb6\x01\n" + + "\rCommonSticker\x12e\n" + + "\vstickerType\x18\x01 \x01(\x0e2C.WAArmadilloApplication.Armadillo.Content.CommonSticker.StickerTypeR\vstickerType\">\n" + + "\vStickerType\x12\x0e\n" + + "\n" + + "SMALL_LIKE\x10\x01\x12\x0f\n" + + "\vMEDIUM_LIKE\x10\x02\x12\x0e\n" + + "\n" + + "LARGE_LIKE\x10\x03B\t\n" + + "\acontentB2Z0github.com/techwiz37/waSocket/proto/waArmadilloApplication" var ( file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescOnce sync.Once - file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescData = file_waArmadilloApplication_WAArmadilloApplication_proto_rawDesc + file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescData []byte ) func file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP() []byte { file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescOnce.Do(func() { - file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescData = protoimpl.X.CompressGZIP(file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescData) + file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waArmadilloApplication_WAArmadilloApplication_proto_rawDesc), len(file_waArmadilloApplication_WAArmadilloApplication_proto_rawDesc))) }) return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescData } @@ -2786,7 +2965,7 @@ func file_waArmadilloApplication_WAArmadilloApplication_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waArmadilloApplication_WAArmadilloApplication_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waArmadilloApplication_WAArmadilloApplication_proto_rawDesc), len(file_waArmadilloApplication_WAArmadilloApplication_proto_rawDesc)), NumEnums: 6, NumMessages: 31, NumExtensions: 0, @@ -2798,7 +2977,6 @@ func file_waArmadilloApplication_WAArmadilloApplication_proto_init() { MessageInfos: file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes, }.Build() File_waArmadilloApplication_WAArmadilloApplication_proto = out.File - file_waArmadilloApplication_WAArmadilloApplication_proto_rawDesc = nil file_waArmadilloApplication_WAArmadilloApplication_proto_goTypes = nil file_waArmadilloApplication_WAArmadilloApplication_proto_depIdxs = nil } diff --git a/proto/waArmadilloApplication/WAArmadilloApplication.pb.raw b/proto/waArmadilloApplication/WAArmadilloApplication.pb.raw deleted file mode 100644 index 7fb517fb9a37701cd15767fb45e35550f26eb6f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8281 zcmc&)OLH4p6^?AjkE4f`YdaPVnMxUI2t%RFh!iu-Ff+8Ib|S2YX~|B)OSGkHTZyC= z-7P1c;xQ|#*g_Ta3n-SbVgWnYuwwxWb}U&_`~l9n_japWk5~>)&C0ru^PO|gJ@>rY z@YQFQ?)0p7r`xsl!Jyk|SzgEP-+ic0o6Zg#+q2ot>8sl3Ltu|8dKd(Ul33e*W)PCD@)p#xz(x5(1Tq zLX;&l7_%KnxZFA84&5-WlPNEmkvaA~xXuT5>lE*J5ns#h|9g(CL1?A~WpBcU$9scX zt9M-JcF^AIp5<|21_^W85_=s|J*(3_vY(r_?d|dN%ypDHVUEqRcOhdRbvt-#L-)|? zcJQsD|7qAyc|Wr(C}yr}|BAtNAtp<~LZCPN#csl~)wlafR|!*%SO!+mh=e%w780gE zWKZys;F*T5I8-WUUX22!8cAD27ax=OyK@KPLTowB;;>@Wo3(wTnvSsqtm2?huGNk7 zLVneMy4v41VSVhavjHT0_f|jex0DHg>te~rfU>@GBb2J`b&gdSKx2+@V0}nhoxJUt z+#T3`mn*M2hqaBf)Jq|l3U^)Wgd@8sJo_XDw|Z)^<9fDpUbI`o9vYw`Q7*0aGG~@N zr^2EnFXpS6aLbo^Dgt{8R@+Kebun8gr1DuIH)jUhw4cXdbDCb*ZSuYpGv&LWfVf6p zG?=0tN>2^`+!NP=J3>?J4M?LC>EILlh_{XBo@2Q}d28mxy!Q7Lu&_<&Eqat}2+%sU zJUPm6lp>z1zl`Q(NG5BOSXug62%u5>Ax7+{kW>dzoR0fbC5k}atI~bmY z0va7$@T}fIT<9W3+UT_QpBUVrqeKANFJr+0ioDCwZ%WlYc{K;f%5x|gB*)O9xcI zvx*7H3{M*7&G1bLTT+^rrqh14q69h*ab_RKV3m|&a!hGYgaseHS}}+dsw3b^QIRB2 zk#fycBkeaaNXbhkMG_hN8HE<%AWf@(!j+wT_sRs0*py&Fk!Hk@F<5d)QcjxC( zA45Pk6R7Nma1%2i-f#1^l1&+lDq3F;^P{!|=0a0;BlZj&EVUAjb;kQXE)_QM+}Fam zp=>wQpYU~MhNzKG1daU!wgtMhDPbf&BdUkuIsKB1CV`OWEFP4syyojq@l|3!?0Bbj zZaJA1A;yFG#h9*P9}lIufFt`6Y;<~9Al$dQUGALw`dAf$yg$DnrAZLvJ`J1l1`Qif zRBE^l$LhQCdHSqDu%6?Q`ge}qj~Q4f!3#Li*^h?3f$<#6j86Z=7a)Gwv*#y4=9O{0kDGkZ4RoCp{4ViW(Q+dQ$ZP_YwILmTN)`9S$)p6Qmw!$Zh~h5$+^aQeLezzk*&Z7&N;^;`)%rqy3VJ zlR%T>%;Q8KOk%UBSgPJnC)k(ai{rCR(E$L(H|k9#Pcr~bvv=U$C5dZ|2Zoux5s}g~ zb`PpWR0<>I27vpzDcH;9^alG3Yz2#j2fBIRC^qwYVK2QI(VMU0tq7Cg`fp-~a5KO; zsOpD!d3wHVq_?$qK%4#W#p|=%Ty$S#e`d9%#@as?AU*C5+1DZNVW3s-OC=|v7LoE! z1c+WGycav-DU1b_r}@+}1qo4y8caw%wjJ*^an@;b+b5Ta#Z2@Nqi^qOm?a3TxZe=+NOah68c?qc>gx^_9DmO6$O z@u8055w_ITkjle8cJt5pfmv1&X*9w1V2coR*R@+6{Fu=8!?FCfG(+vvY1lmpR>v?z zX{CZfS?OV{nSyF!QTz1*`g+R6CsX8kt!P?vP}ZXBGGPo#RMrg_gF+vvTzP(jm?5a@ zfC-xj6`MQn0mxI)3IkZ)FYAxdjb6iVB`~rJw1^v!+^v}fqggD~g{xc8{<;7O!A~iY z9ENxl{vFW~XFUz{H<8VOxABQ(-8cP$iCDNMpYsz)^1&(ZamVV?QPfMiMCKhn2!4(U zVVP0rojfEX>nsUthb7}-vxd}+`0P\n" + + "\x19encryptedTransportMessage\x18\x02 \x01(\fH\x00R\x19encryptedTransportMessage\x12`\n" + + "\x17encryptedTransportEvent\x18\x05 \x01(\v2$.WAArmadilloBackupCommon.SubprotocolH\x00R\x17encryptedTransportEvent\x12\x88\x01\n" + + "+encryptedTransportLocallyTransformedMessage\x18\x06 \x01(\v2$.WAArmadilloBackupCommon.SubprotocolH\x00R+encryptedTransportLocallyTransformedMessage\x12`\n" + + "\x17miTransportAdminMessage\x18\a \x01(\v2$.WAArmadilloBackupCommon.SubprotocolH\x00R\x17miTransportAdminMessage\x12L\n" + + "\bmetadata\x18\x01 \x01(\v20.WAArmadilloBackupMessage.BackupMessage.MetadataR\bmetadata\x1a\xaf\x03\n" + + "\bMetadata\x12\x1a\n" + + "\bsenderID\x18\x01 \x01(\tR\bsenderID\x12\x1c\n" + + "\tmessageID\x18\x02 \x01(\tR\tmessageID\x12 \n" + + "\vtimestampMS\x18\x03 \x01(\x03R\vtimestampMS\x12m\n" + + "\x10frankingMetadata\x18\x04 \x01(\v2A.WAArmadilloBackupMessage.BackupMessage.Metadata.FrankingMetadataR\x10frankingMetadata\x12&\n" + + "\x0epayloadVersion\x18\x05 \x01(\x05R\x0epayloadVersion\x120\n" + + "\x13futureProofBehavior\x18\x06 \x01(\x05R\x13futureProofBehavior\x12$\n" + + "\rthreadTypeTag\x18\a \x01(\x05R\rthreadTypeTag\x1aX\n" + + "\x10FrankingMetadata\x12 \n" + + "\vfrankingTag\x18\x03 \x01(\fR\vfrankingTag\x12\"\n" + + "\freportingTag\x18\x04 \x01(\fR\freportingTagB\t\n" + + "\apayloadB4Z2github.com/techwiz37/waSocket/proto/waArmadilloBackupMessage" var ( file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescOnce sync.Once - file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescData = file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDesc + file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescData []byte ) func file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescGZIP() []byte { file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescOnce.Do(func() { - file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescData = protoimpl.X.CompressGZIP(file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescData) + file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDesc), len(file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDesc))) }) return file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescData } @@ -302,13 +336,14 @@ var file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_goTypes = []any var file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_depIdxs = []int32{ 3, // 0: WAArmadilloBackupMessage.BackupMessage.encryptedTransportEvent:type_name -> WAArmadilloBackupCommon.Subprotocol 3, // 1: WAArmadilloBackupMessage.BackupMessage.encryptedTransportLocallyTransformedMessage:type_name -> WAArmadilloBackupCommon.Subprotocol - 1, // 2: WAArmadilloBackupMessage.BackupMessage.metadata:type_name -> WAArmadilloBackupMessage.BackupMessage.Metadata - 2, // 3: WAArmadilloBackupMessage.BackupMessage.Metadata.frankingMetadata:type_name -> WAArmadilloBackupMessage.BackupMessage.Metadata.FrankingMetadata - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 3, // 2: WAArmadilloBackupMessage.BackupMessage.miTransportAdminMessage:type_name -> WAArmadilloBackupCommon.Subprotocol + 1, // 3: WAArmadilloBackupMessage.BackupMessage.metadata:type_name -> WAArmadilloBackupMessage.BackupMessage.Metadata + 2, // 4: WAArmadilloBackupMessage.BackupMessage.Metadata.frankingMetadata:type_name -> WAArmadilloBackupMessage.BackupMessage.Metadata.FrankingMetadata + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_init() } @@ -320,12 +355,13 @@ func file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_init() { (*BackupMessage_EncryptedTransportMessage)(nil), (*BackupMessage_EncryptedTransportEvent)(nil), (*BackupMessage_EncryptedTransportLocallyTransformedMessage)(nil), + (*BackupMessage_MiTransportAdminMessage)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDesc), len(file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDesc)), NumEnums: 0, NumMessages: 3, NumExtensions: 0, @@ -336,7 +372,6 @@ func file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_init() { MessageInfos: file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_msgTypes, }.Build() File_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto = out.File - file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDesc = nil file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_goTypes = nil file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_depIdxs = nil } diff --git a/proto/waArmadilloBackupMessage/WAArmadilloBackupMessage.pb.raw b/proto/waArmadilloBackupMessage/WAArmadilloBackupMessage.pb.raw deleted file mode 100644 index cea3ec7b4c91d404844e96c81ae7def37b806b2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1034 zcmb7DO;5r=5ET)D0gYJ?*2V)d#+aBCV>I4Oz>jDGiCKvnPmXj8joogu-9q>W{u_UW zf6KNMq!bPu``*l(H*cqKHN=MGXxfe=n%Mmcyf*WF?6LZ5V=-ZPQYb;RWxRfwk-QO{ z3pcAc#>aw(znid?azL(OpSfK*@)R>W5?$XDQYH4Z^;+(v`mjcqmyi$G%l6+5n5(ox z*j+h4GBQgfmY##pc+IYG!WqkC$afA-vm;ufi;gpjEn7lzW=>3Rt~7QPY0`ocX9`VJ zsO91@XW8u%A4V!?qn-58se=BKhtdQlI+T3onoK_4#?oav{U!%c=Hr72$>>eW^dBHK zs3<$+6>_irtmQ*KPiG;*VaE!e_RDsAlX==kY`?LpedB&kh-Re8F>HG{as-+$O!~HP z<4Y*eIh35it`(?2vL`8o)nt7f*g|U2`xWRSiX6d~>Pv=ZXXLRC_OxPLn+Eka*qL`3 zg*1sE>Wf0E(piWcLRGTp_`{T}mO<~P46qC)G7w_jiVQ>r#%dQXmsC>@EupS?D KJ@a!WH}MC{>0)gF diff --git a/proto/waArmadilloBackupMessage/WAArmadilloBackupMessage.proto b/proto/waArmadilloBackupMessage/WAArmadilloBackupMessage.proto index ce51abd2..2484b607 100644 --- a/proto/waArmadilloBackupMessage/WAArmadilloBackupMessage.proto +++ b/proto/waArmadilloBackupMessage/WAArmadilloBackupMessage.proto @@ -24,6 +24,7 @@ message BackupMessage { bytes encryptedTransportMessage = 2; WAArmadilloBackupCommon.Subprotocol encryptedTransportEvent = 5; WAArmadilloBackupCommon.Subprotocol encryptedTransportLocallyTransformedMessage = 6; + WAArmadilloBackupCommon.Subprotocol miTransportAdminMessage = 7; } optional Metadata metadata = 1; diff --git a/proto/waArmadilloICDC/WAArmadilloICDC.pb.go b/proto/waArmadilloICDC/WAArmadilloICDC.pb.go index 2eafb1ae..f51ebcb4 100644 --- a/proto/waArmadilloICDC/WAArmadilloICDC.pb.go +++ b/proto/waArmadilloICDC/WAArmadilloICDC.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waArmadilloICDC/WAArmadilloICDC.proto @@ -9,11 +9,10 @@ package waArmadilloICDC import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -145,17 +144,26 @@ func (x *SignedICDCIdentityList) GetSignature() []byte { var File_waArmadilloICDC_WAArmadilloICDC_proto protoreflect.FileDescriptor -//go:embed WAArmadilloICDC.pb.raw -var file_waArmadilloICDC_WAArmadilloICDC_proto_rawDesc []byte +const file_waArmadilloICDC_WAArmadilloICDC_proto_rawDesc = "" + + "\n" + + "%waArmadilloICDC/WAArmadilloICDC.proto\x12\x0fWAArmadilloICDC\"\x8c\x01\n" + + "\x10ICDCIdentityList\x12\x10\n" + + "\x03seq\x18\x01 \x01(\x05R\x03seq\x12\x1c\n" + + "\ttimestamp\x18\x02 \x01(\x03R\ttimestamp\x12\x18\n" + + "\adevices\x18\x03 \x03(\fR\adevices\x12.\n" + + "\x12signingDeviceIndex\x18\x04 \x01(\x05R\x12signingDeviceIndex\"P\n" + + "\x16SignedICDCIdentityList\x12\x18\n" + + "\adetails\x18\x01 \x01(\fR\adetails\x12\x1c\n" + + "\tsignature\x18\x02 \x01(\fR\tsignatureB+Z)github.com/techwiz37/waSocket/proto/waArmadilloICDC" var ( file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescOnce sync.Once - file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescData = file_waArmadilloICDC_WAArmadilloICDC_proto_rawDesc + file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescData []byte ) func file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescGZIP() []byte { file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescOnce.Do(func() { - file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescData = protoimpl.X.CompressGZIP(file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescData) + file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waArmadilloICDC_WAArmadilloICDC_proto_rawDesc), len(file_waArmadilloICDC_WAArmadilloICDC_proto_rawDesc))) }) return file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescData } @@ -182,7 +190,7 @@ func file_waArmadilloICDC_WAArmadilloICDC_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waArmadilloICDC_WAArmadilloICDC_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waArmadilloICDC_WAArmadilloICDC_proto_rawDesc), len(file_waArmadilloICDC_WAArmadilloICDC_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -193,7 +201,6 @@ func file_waArmadilloICDC_WAArmadilloICDC_proto_init() { MessageInfos: file_waArmadilloICDC_WAArmadilloICDC_proto_msgTypes, }.Build() File_waArmadilloICDC_WAArmadilloICDC_proto = out.File - file_waArmadilloICDC_WAArmadilloICDC_proto_rawDesc = nil file_waArmadilloICDC_WAArmadilloICDC_proto_goTypes = nil file_waArmadilloICDC_WAArmadilloICDC_proto_depIdxs = nil } diff --git a/proto/waArmadilloICDC/WAArmadilloICDC.pb.raw b/proto/waArmadilloICDC/WAArmadilloICDC.pb.raw deleted file mode 100644 index aab49cba..00000000 --- a/proto/waArmadilloICDC/WAArmadilloICDC.pb.raw +++ /dev/null @@ -1,10 +0,0 @@ - -%waArmadilloICDC/WAArmadilloICDC.protoWAArmadilloICDC"Œ -ICDCIdentityList -seq (Rseq - timestamp (R timestamp -devices ( Rdevices. -signingDeviceIndex (RsigningDeviceIndex"P -SignedICDCIdentityList -details ( Rdetails - signature ( R signatureB+Z)go.mau.fi/whatsmeow/proto/waArmadilloICDC \ No newline at end of file diff --git a/proto/waArmadilloMiTransportAdminMessage/WAArmadilloMiTransportAdminMessage.pb.go b/proto/waArmadilloMiTransportAdminMessage/WAArmadilloMiTransportAdminMessage.pb.go new file mode 100644 index 00000000..380148a1 --- /dev/null +++ b/proto/waArmadilloMiTransportAdminMessage/WAArmadilloMiTransportAdminMessage.pb.go @@ -0,0 +1,1364 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v3.21.12 +// source: waArmadilloMiTransportAdminMessage/WAArmadilloMiTransportAdminMessage.proto + +package waArmadilloMiTransportAdminMessage + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type MiTransportAdminMessage_GroupImageChanged_Action int32 + +const ( + MiTransportAdminMessage_GroupImageChanged_CHANGED MiTransportAdminMessage_GroupImageChanged_Action = 1 + MiTransportAdminMessage_GroupImageChanged_REMOVED MiTransportAdminMessage_GroupImageChanged_Action = 2 +) + +// Enum value maps for MiTransportAdminMessage_GroupImageChanged_Action. +var ( + MiTransportAdminMessage_GroupImageChanged_Action_name = map[int32]string{ + 1: "CHANGED", + 2: "REMOVED", + } + MiTransportAdminMessage_GroupImageChanged_Action_value = map[string]int32{ + "CHANGED": 1, + "REMOVED": 2, + } +) + +func (x MiTransportAdminMessage_GroupImageChanged_Action) Enum() *MiTransportAdminMessage_GroupImageChanged_Action { + p := new(MiTransportAdminMessage_GroupImageChanged_Action) + *p = x + return p +} + +func (x MiTransportAdminMessage_GroupImageChanged_Action) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MiTransportAdminMessage_GroupImageChanged_Action) Descriptor() protoreflect.EnumDescriptor { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_enumTypes[0].Descriptor() +} + +func (MiTransportAdminMessage_GroupImageChanged_Action) Type() protoreflect.EnumType { + return &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_enumTypes[0] +} + +func (x MiTransportAdminMessage_GroupImageChanged_Action) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *MiTransportAdminMessage_GroupImageChanged_Action) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = MiTransportAdminMessage_GroupImageChanged_Action(num) + return nil +} + +// Deprecated: Use MiTransportAdminMessage_GroupImageChanged_Action.Descriptor instead. +func (MiTransportAdminMessage_GroupImageChanged_Action) EnumDescriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 0, 0} +} + +type MiTransportAdminMessage_MessagePinned_Action int32 + +const ( + MiTransportAdminMessage_MessagePinned_PINNED MiTransportAdminMessage_MessagePinned_Action = 1 + MiTransportAdminMessage_MessagePinned_UNPINNED MiTransportAdminMessage_MessagePinned_Action = 2 +) + +// Enum value maps for MiTransportAdminMessage_MessagePinned_Action. +var ( + MiTransportAdminMessage_MessagePinned_Action_name = map[int32]string{ + 1: "PINNED", + 2: "UNPINNED", + } + MiTransportAdminMessage_MessagePinned_Action_value = map[string]int32{ + "PINNED": 1, + "UNPINNED": 2, + } +) + +func (x MiTransportAdminMessage_MessagePinned_Action) Enum() *MiTransportAdminMessage_MessagePinned_Action { + p := new(MiTransportAdminMessage_MessagePinned_Action) + *p = x + return p +} + +func (x MiTransportAdminMessage_MessagePinned_Action) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MiTransportAdminMessage_MessagePinned_Action) Descriptor() protoreflect.EnumDescriptor { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_enumTypes[1].Descriptor() +} + +func (MiTransportAdminMessage_MessagePinned_Action) Type() protoreflect.EnumType { + return &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_enumTypes[1] +} + +func (x MiTransportAdminMessage_MessagePinned_Action) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *MiTransportAdminMessage_MessagePinned_Action) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = MiTransportAdminMessage_MessagePinned_Action(num) + return nil +} + +// Deprecated: Use MiTransportAdminMessage_MessagePinned_Action.Descriptor instead. +func (MiTransportAdminMessage_MessagePinned_Action) EnumDescriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 1, 0} +} + +type MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode int32 + +const ( + MiTransportAdminMessage_GroupMembershipAddModeChanged_ALL_MEMBERS MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode = 1 + MiTransportAdminMessage_GroupMembershipAddModeChanged_ADMINS_ONLY MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode = 2 +) + +// Enum value maps for MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode. +var ( + MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode_name = map[int32]string{ + 1: "ALL_MEMBERS", + 2: "ADMINS_ONLY", + } + MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode_value = map[string]int32{ + "ALL_MEMBERS": 1, + "ADMINS_ONLY": 2, + } +) + +func (x MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode) Enum() *MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode { + p := new(MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode) + *p = x + return p +} + +func (x MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode) Descriptor() protoreflect.EnumDescriptor { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_enumTypes[2].Descriptor() +} + +func (MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode) Type() protoreflect.EnumType { + return &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_enumTypes[2] +} + +func (x MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode(num) + return nil +} + +// Deprecated: Use MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode.Descriptor instead. +func (MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode) EnumDescriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 2, 0} +} + +type MiTransportAdminMessage_GroupAdminChanged_Action int32 + +const ( + MiTransportAdminMessage_GroupAdminChanged_ADDED MiTransportAdminMessage_GroupAdminChanged_Action = 1 + MiTransportAdminMessage_GroupAdminChanged_REMOVED MiTransportAdminMessage_GroupAdminChanged_Action = 2 +) + +// Enum value maps for MiTransportAdminMessage_GroupAdminChanged_Action. +var ( + MiTransportAdminMessage_GroupAdminChanged_Action_name = map[int32]string{ + 1: "ADDED", + 2: "REMOVED", + } + MiTransportAdminMessage_GroupAdminChanged_Action_value = map[string]int32{ + "ADDED": 1, + "REMOVED": 2, + } +) + +func (x MiTransportAdminMessage_GroupAdminChanged_Action) Enum() *MiTransportAdminMessage_GroupAdminChanged_Action { + p := new(MiTransportAdminMessage_GroupAdminChanged_Action) + *p = x + return p +} + +func (x MiTransportAdminMessage_GroupAdminChanged_Action) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MiTransportAdminMessage_GroupAdminChanged_Action) Descriptor() protoreflect.EnumDescriptor { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_enumTypes[3].Descriptor() +} + +func (MiTransportAdminMessage_GroupAdminChanged_Action) Type() protoreflect.EnumType { + return &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_enumTypes[3] +} + +func (x MiTransportAdminMessage_GroupAdminChanged_Action) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *MiTransportAdminMessage_GroupAdminChanged_Action) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = MiTransportAdminMessage_GroupAdminChanged_Action(num) + return nil +} + +// Deprecated: Use MiTransportAdminMessage_GroupAdminChanged_Action.Descriptor instead. +func (MiTransportAdminMessage_GroupAdminChanged_Action) EnumDescriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 3, 0} +} + +type MiTransportAdminMessage_GroupParticipantChanged_Action int32 + +const ( + MiTransportAdminMessage_GroupParticipantChanged_ADDED MiTransportAdminMessage_GroupParticipantChanged_Action = 1 + MiTransportAdminMessage_GroupParticipantChanged_REMOVED MiTransportAdminMessage_GroupParticipantChanged_Action = 2 +) + +// Enum value maps for MiTransportAdminMessage_GroupParticipantChanged_Action. +var ( + MiTransportAdminMessage_GroupParticipantChanged_Action_name = map[int32]string{ + 1: "ADDED", + 2: "REMOVED", + } + MiTransportAdminMessage_GroupParticipantChanged_Action_value = map[string]int32{ + "ADDED": 1, + "REMOVED": 2, + } +) + +func (x MiTransportAdminMessage_GroupParticipantChanged_Action) Enum() *MiTransportAdminMessage_GroupParticipantChanged_Action { + p := new(MiTransportAdminMessage_GroupParticipantChanged_Action) + *p = x + return p +} + +func (x MiTransportAdminMessage_GroupParticipantChanged_Action) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MiTransportAdminMessage_GroupParticipantChanged_Action) Descriptor() protoreflect.EnumDescriptor { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_enumTypes[4].Descriptor() +} + +func (MiTransportAdminMessage_GroupParticipantChanged_Action) Type() protoreflect.EnumType { + return &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_enumTypes[4] +} + +func (x MiTransportAdminMessage_GroupParticipantChanged_Action) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *MiTransportAdminMessage_GroupParticipantChanged_Action) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = MiTransportAdminMessage_GroupParticipantChanged_Action(num) + return nil +} + +// Deprecated: Use MiTransportAdminMessage_GroupParticipantChanged_Action.Descriptor instead. +func (MiTransportAdminMessage_GroupParticipantChanged_Action) EnumDescriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 4, 0} +} + +type MiTransportAdminMessage struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Content: + // + // *MiTransportAdminMessage_ChatThemeChanged_ + // *MiTransportAdminMessage_NicknameChanged_ + // *MiTransportAdminMessage_GroupParticipantChanged_ + // *MiTransportAdminMessage_GroupAdminChanged_ + // *MiTransportAdminMessage_GroupNameChanged_ + // *MiTransportAdminMessage_GroupMembershipAddModeChanged_ + // *MiTransportAdminMessage_MessagePinned_ + // *MiTransportAdminMessage_GroupImageChanged_ + // *MiTransportAdminMessage_QuickReactionChanged_ + // *MiTransportAdminMessage_LinkCta_ + // *MiTransportAdminMessage_IconChanged_ + // *MiTransportAdminMessage_DisappearingSettingChanged_ + Content isMiTransportAdminMessage_Content `protobuf_oneof:"content"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MiTransportAdminMessage) Reset() { + *x = MiTransportAdminMessage{} + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MiTransportAdminMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MiTransportAdminMessage) ProtoMessage() {} + +func (x *MiTransportAdminMessage) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MiTransportAdminMessage.ProtoReflect.Descriptor instead. +func (*MiTransportAdminMessage) Descriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0} +} + +func (x *MiTransportAdminMessage) GetContent() isMiTransportAdminMessage_Content { + if x != nil { + return x.Content + } + return nil +} + +func (x *MiTransportAdminMessage) GetChatThemeChanged() *MiTransportAdminMessage_ChatThemeChanged { + if x != nil { + if x, ok := x.Content.(*MiTransportAdminMessage_ChatThemeChanged_); ok { + return x.ChatThemeChanged + } + } + return nil +} + +func (x *MiTransportAdminMessage) GetNicknameChanged() *MiTransportAdminMessage_NicknameChanged { + if x != nil { + if x, ok := x.Content.(*MiTransportAdminMessage_NicknameChanged_); ok { + return x.NicknameChanged + } + } + return nil +} + +func (x *MiTransportAdminMessage) GetGroupParticipantChanged() *MiTransportAdminMessage_GroupParticipantChanged { + if x != nil { + if x, ok := x.Content.(*MiTransportAdminMessage_GroupParticipantChanged_); ok { + return x.GroupParticipantChanged + } + } + return nil +} + +func (x *MiTransportAdminMessage) GetGroupAdminChanged() *MiTransportAdminMessage_GroupAdminChanged { + if x != nil { + if x, ok := x.Content.(*MiTransportAdminMessage_GroupAdminChanged_); ok { + return x.GroupAdminChanged + } + } + return nil +} + +func (x *MiTransportAdminMessage) GetGroupNameChanged() *MiTransportAdminMessage_GroupNameChanged { + if x != nil { + if x, ok := x.Content.(*MiTransportAdminMessage_GroupNameChanged_); ok { + return x.GroupNameChanged + } + } + return nil +} + +func (x *MiTransportAdminMessage) GetGroupMembershipAddModeChanged() *MiTransportAdminMessage_GroupMembershipAddModeChanged { + if x != nil { + if x, ok := x.Content.(*MiTransportAdminMessage_GroupMembershipAddModeChanged_); ok { + return x.GroupMembershipAddModeChanged + } + } + return nil +} + +func (x *MiTransportAdminMessage) GetMessagePinned() *MiTransportAdminMessage_MessagePinned { + if x != nil { + if x, ok := x.Content.(*MiTransportAdminMessage_MessagePinned_); ok { + return x.MessagePinned + } + } + return nil +} + +func (x *MiTransportAdminMessage) GetGroupImageChanged() *MiTransportAdminMessage_GroupImageChanged { + if x != nil { + if x, ok := x.Content.(*MiTransportAdminMessage_GroupImageChanged_); ok { + return x.GroupImageChanged + } + } + return nil +} + +func (x *MiTransportAdminMessage) GetQuickReactionChanged() *MiTransportAdminMessage_QuickReactionChanged { + if x != nil { + if x, ok := x.Content.(*MiTransportAdminMessage_QuickReactionChanged_); ok { + return x.QuickReactionChanged + } + } + return nil +} + +func (x *MiTransportAdminMessage) GetLinkCta() *MiTransportAdminMessage_LinkCta { + if x != nil { + if x, ok := x.Content.(*MiTransportAdminMessage_LinkCta_); ok { + return x.LinkCta + } + } + return nil +} + +func (x *MiTransportAdminMessage) GetIconChanged() *MiTransportAdminMessage_IconChanged { + if x != nil { + if x, ok := x.Content.(*MiTransportAdminMessage_IconChanged_); ok { + return x.IconChanged + } + } + return nil +} + +func (x *MiTransportAdminMessage) GetDisappearingSettingChanged() *MiTransportAdminMessage_DisappearingSettingChanged { + if x != nil { + if x, ok := x.Content.(*MiTransportAdminMessage_DisappearingSettingChanged_); ok { + return x.DisappearingSettingChanged + } + } + return nil +} + +type isMiTransportAdminMessage_Content interface { + isMiTransportAdminMessage_Content() +} + +type MiTransportAdminMessage_ChatThemeChanged_ struct { + ChatThemeChanged *MiTransportAdminMessage_ChatThemeChanged `protobuf:"bytes,1,opt,name=chatThemeChanged,oneof"` +} + +type MiTransportAdminMessage_NicknameChanged_ struct { + NicknameChanged *MiTransportAdminMessage_NicknameChanged `protobuf:"bytes,2,opt,name=nicknameChanged,oneof"` +} + +type MiTransportAdminMessage_GroupParticipantChanged_ struct { + GroupParticipantChanged *MiTransportAdminMessage_GroupParticipantChanged `protobuf:"bytes,3,opt,name=groupParticipantChanged,oneof"` +} + +type MiTransportAdminMessage_GroupAdminChanged_ struct { + GroupAdminChanged *MiTransportAdminMessage_GroupAdminChanged `protobuf:"bytes,4,opt,name=groupAdminChanged,oneof"` +} + +type MiTransportAdminMessage_GroupNameChanged_ struct { + GroupNameChanged *MiTransportAdminMessage_GroupNameChanged `protobuf:"bytes,5,opt,name=groupNameChanged,oneof"` +} + +type MiTransportAdminMessage_GroupMembershipAddModeChanged_ struct { + GroupMembershipAddModeChanged *MiTransportAdminMessage_GroupMembershipAddModeChanged `protobuf:"bytes,6,opt,name=groupMembershipAddModeChanged,oneof"` +} + +type MiTransportAdminMessage_MessagePinned_ struct { + MessagePinned *MiTransportAdminMessage_MessagePinned `protobuf:"bytes,7,opt,name=messagePinned,oneof"` +} + +type MiTransportAdminMessage_GroupImageChanged_ struct { + GroupImageChanged *MiTransportAdminMessage_GroupImageChanged `protobuf:"bytes,8,opt,name=groupImageChanged,oneof"` +} + +type MiTransportAdminMessage_QuickReactionChanged_ struct { + QuickReactionChanged *MiTransportAdminMessage_QuickReactionChanged `protobuf:"bytes,9,opt,name=quickReactionChanged,oneof"` +} + +type MiTransportAdminMessage_LinkCta_ struct { + LinkCta *MiTransportAdminMessage_LinkCta `protobuf:"bytes,10,opt,name=linkCta,oneof"` +} + +type MiTransportAdminMessage_IconChanged_ struct { + IconChanged *MiTransportAdminMessage_IconChanged `protobuf:"bytes,11,opt,name=iconChanged,oneof"` +} + +type MiTransportAdminMessage_DisappearingSettingChanged_ struct { + DisappearingSettingChanged *MiTransportAdminMessage_DisappearingSettingChanged `protobuf:"bytes,12,opt,name=disappearingSettingChanged,oneof"` +} + +func (*MiTransportAdminMessage_ChatThemeChanged_) isMiTransportAdminMessage_Content() {} + +func (*MiTransportAdminMessage_NicknameChanged_) isMiTransportAdminMessage_Content() {} + +func (*MiTransportAdminMessage_GroupParticipantChanged_) isMiTransportAdminMessage_Content() {} + +func (*MiTransportAdminMessage_GroupAdminChanged_) isMiTransportAdminMessage_Content() {} + +func (*MiTransportAdminMessage_GroupNameChanged_) isMiTransportAdminMessage_Content() {} + +func (*MiTransportAdminMessage_GroupMembershipAddModeChanged_) isMiTransportAdminMessage_Content() {} + +func (*MiTransportAdminMessage_MessagePinned_) isMiTransportAdminMessage_Content() {} + +func (*MiTransportAdminMessage_GroupImageChanged_) isMiTransportAdminMessage_Content() {} + +func (*MiTransportAdminMessage_QuickReactionChanged_) isMiTransportAdminMessage_Content() {} + +func (*MiTransportAdminMessage_LinkCta_) isMiTransportAdminMessage_Content() {} + +func (*MiTransportAdminMessage_IconChanged_) isMiTransportAdminMessage_Content() {} + +func (*MiTransportAdminMessage_DisappearingSettingChanged_) isMiTransportAdminMessage_Content() {} + +type MiTransportAdminMessage_GroupImageChanged struct { + state protoimpl.MessageState `protogen:"open.v1"` + Action *MiTransportAdminMessage_GroupImageChanged_Action `protobuf:"varint,1,opt,name=action,enum=WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage_GroupImageChanged_Action" json:"action,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MiTransportAdminMessage_GroupImageChanged) Reset() { + *x = MiTransportAdminMessage_GroupImageChanged{} + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MiTransportAdminMessage_GroupImageChanged) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MiTransportAdminMessage_GroupImageChanged) ProtoMessage() {} + +func (x *MiTransportAdminMessage_GroupImageChanged) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MiTransportAdminMessage_GroupImageChanged.ProtoReflect.Descriptor instead. +func (*MiTransportAdminMessage_GroupImageChanged) Descriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *MiTransportAdminMessage_GroupImageChanged) GetAction() MiTransportAdminMessage_GroupImageChanged_Action { + if x != nil && x.Action != nil { + return *x.Action + } + return MiTransportAdminMessage_GroupImageChanged_CHANGED +} + +type MiTransportAdminMessage_MessagePinned struct { + state protoimpl.MessageState `protogen:"open.v1"` + Action *MiTransportAdminMessage_MessagePinned_Action `protobuf:"varint,1,opt,name=action,enum=WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage_MessagePinned_Action" json:"action,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MiTransportAdminMessage_MessagePinned) Reset() { + *x = MiTransportAdminMessage_MessagePinned{} + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MiTransportAdminMessage_MessagePinned) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MiTransportAdminMessage_MessagePinned) ProtoMessage() {} + +func (x *MiTransportAdminMessage_MessagePinned) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MiTransportAdminMessage_MessagePinned.ProtoReflect.Descriptor instead. +func (*MiTransportAdminMessage_MessagePinned) Descriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *MiTransportAdminMessage_MessagePinned) GetAction() MiTransportAdminMessage_MessagePinned_Action { + if x != nil && x.Action != nil { + return *x.Action + } + return MiTransportAdminMessage_MessagePinned_PINNED +} + +type MiTransportAdminMessage_GroupMembershipAddModeChanged struct { + state protoimpl.MessageState `protogen:"open.v1"` + Mode *MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode `protobuf:"varint,1,opt,name=mode,enum=WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode" json:"mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MiTransportAdminMessage_GroupMembershipAddModeChanged) Reset() { + *x = MiTransportAdminMessage_GroupMembershipAddModeChanged{} + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MiTransportAdminMessage_GroupMembershipAddModeChanged) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MiTransportAdminMessage_GroupMembershipAddModeChanged) ProtoMessage() {} + +func (x *MiTransportAdminMessage_GroupMembershipAddModeChanged) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MiTransportAdminMessage_GroupMembershipAddModeChanged.ProtoReflect.Descriptor instead. +func (*MiTransportAdminMessage_GroupMembershipAddModeChanged) Descriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 2} +} + +func (x *MiTransportAdminMessage_GroupMembershipAddModeChanged) GetMode() MiTransportAdminMessage_GroupMembershipAddModeChanged_Mode { + if x != nil && x.Mode != nil { + return *x.Mode + } + return MiTransportAdminMessage_GroupMembershipAddModeChanged_ALL_MEMBERS +} + +type MiTransportAdminMessage_GroupAdminChanged struct { + state protoimpl.MessageState `protogen:"open.v1"` + TargetUserID []string `protobuf:"bytes,1,rep,name=targetUserID" json:"targetUserID,omitempty"` + Action *MiTransportAdminMessage_GroupAdminChanged_Action `protobuf:"varint,2,opt,name=action,enum=WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage_GroupAdminChanged_Action" json:"action,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MiTransportAdminMessage_GroupAdminChanged) Reset() { + *x = MiTransportAdminMessage_GroupAdminChanged{} + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MiTransportAdminMessage_GroupAdminChanged) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MiTransportAdminMessage_GroupAdminChanged) ProtoMessage() {} + +func (x *MiTransportAdminMessage_GroupAdminChanged) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MiTransportAdminMessage_GroupAdminChanged.ProtoReflect.Descriptor instead. +func (*MiTransportAdminMessage_GroupAdminChanged) Descriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 3} +} + +func (x *MiTransportAdminMessage_GroupAdminChanged) GetTargetUserID() []string { + if x != nil { + return x.TargetUserID + } + return nil +} + +func (x *MiTransportAdminMessage_GroupAdminChanged) GetAction() MiTransportAdminMessage_GroupAdminChanged_Action { + if x != nil && x.Action != nil { + return *x.Action + } + return MiTransportAdminMessage_GroupAdminChanged_ADDED +} + +type MiTransportAdminMessage_GroupParticipantChanged struct { + state protoimpl.MessageState `protogen:"open.v1"` + TargetUserID []string `protobuf:"bytes,1,rep,name=targetUserID" json:"targetUserID,omitempty"` + Action *MiTransportAdminMessage_GroupParticipantChanged_Action `protobuf:"varint,2,opt,name=action,enum=WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage_GroupParticipantChanged_Action" json:"action,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MiTransportAdminMessage_GroupParticipantChanged) Reset() { + *x = MiTransportAdminMessage_GroupParticipantChanged{} + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MiTransportAdminMessage_GroupParticipantChanged) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MiTransportAdminMessage_GroupParticipantChanged) ProtoMessage() {} + +func (x *MiTransportAdminMessage_GroupParticipantChanged) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MiTransportAdminMessage_GroupParticipantChanged.ProtoReflect.Descriptor instead. +func (*MiTransportAdminMessage_GroupParticipantChanged) Descriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 4} +} + +func (x *MiTransportAdminMessage_GroupParticipantChanged) GetTargetUserID() []string { + if x != nil { + return x.TargetUserID + } + return nil +} + +func (x *MiTransportAdminMessage_GroupParticipantChanged) GetAction() MiTransportAdminMessage_GroupParticipantChanged_Action { + if x != nil && x.Action != nil { + return *x.Action + } + return MiTransportAdminMessage_GroupParticipantChanged_ADDED +} + +type MiTransportAdminMessage_DisappearingSettingChanged struct { + state protoimpl.MessageState `protogen:"open.v1"` + DisappearingSettingDurationSeconds *int32 `protobuf:"varint,1,opt,name=disappearingSettingDurationSeconds" json:"disappearingSettingDurationSeconds,omitempty"` + OldDisappearingSettingDurationSeconds *int32 `protobuf:"varint,2,opt,name=oldDisappearingSettingDurationSeconds" json:"oldDisappearingSettingDurationSeconds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MiTransportAdminMessage_DisappearingSettingChanged) Reset() { + *x = MiTransportAdminMessage_DisappearingSettingChanged{} + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MiTransportAdminMessage_DisappearingSettingChanged) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MiTransportAdminMessage_DisappearingSettingChanged) ProtoMessage() {} + +func (x *MiTransportAdminMessage_DisappearingSettingChanged) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MiTransportAdminMessage_DisappearingSettingChanged.ProtoReflect.Descriptor instead. +func (*MiTransportAdminMessage_DisappearingSettingChanged) Descriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 5} +} + +func (x *MiTransportAdminMessage_DisappearingSettingChanged) GetDisappearingSettingDurationSeconds() int32 { + if x != nil && x.DisappearingSettingDurationSeconds != nil { + return *x.DisappearingSettingDurationSeconds + } + return 0 +} + +func (x *MiTransportAdminMessage_DisappearingSettingChanged) GetOldDisappearingSettingDurationSeconds() int32 { + if x != nil && x.OldDisappearingSettingDurationSeconds != nil { + return *x.OldDisappearingSettingDurationSeconds + } + return 0 +} + +type MiTransportAdminMessage_IconChanged struct { + state protoimpl.MessageState `protogen:"open.v1"` + ThreadIcon *string `protobuf:"bytes,1,opt,name=threadIcon" json:"threadIcon,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MiTransportAdminMessage_IconChanged) Reset() { + *x = MiTransportAdminMessage_IconChanged{} + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MiTransportAdminMessage_IconChanged) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MiTransportAdminMessage_IconChanged) ProtoMessage() {} + +func (x *MiTransportAdminMessage_IconChanged) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MiTransportAdminMessage_IconChanged.ProtoReflect.Descriptor instead. +func (*MiTransportAdminMessage_IconChanged) Descriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 6} +} + +func (x *MiTransportAdminMessage_IconChanged) GetThreadIcon() string { + if x != nil && x.ThreadIcon != nil { + return *x.ThreadIcon + } + return "" +} + +type MiTransportAdminMessage_LinkCta struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Content: + // + // *MiTransportAdminMessage_LinkCta_UkOsaAdminText_ + Content isMiTransportAdminMessage_LinkCta_Content `protobuf_oneof:"content"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MiTransportAdminMessage_LinkCta) Reset() { + *x = MiTransportAdminMessage_LinkCta{} + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MiTransportAdminMessage_LinkCta) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MiTransportAdminMessage_LinkCta) ProtoMessage() {} + +func (x *MiTransportAdminMessage_LinkCta) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MiTransportAdminMessage_LinkCta.ProtoReflect.Descriptor instead. +func (*MiTransportAdminMessage_LinkCta) Descriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 7} +} + +func (x *MiTransportAdminMessage_LinkCta) GetContent() isMiTransportAdminMessage_LinkCta_Content { + if x != nil { + return x.Content + } + return nil +} + +func (x *MiTransportAdminMessage_LinkCta) GetUkOsaAdminText() *MiTransportAdminMessage_LinkCta_UkOsaAdminText { + if x != nil { + if x, ok := x.Content.(*MiTransportAdminMessage_LinkCta_UkOsaAdminText_); ok { + return x.UkOsaAdminText + } + } + return nil +} + +type isMiTransportAdminMessage_LinkCta_Content interface { + isMiTransportAdminMessage_LinkCta_Content() +} + +type MiTransportAdminMessage_LinkCta_UkOsaAdminText_ struct { + UkOsaAdminText *MiTransportAdminMessage_LinkCta_UkOsaAdminText `protobuf:"bytes,1,opt,name=ukOsaAdminText,oneof"` +} + +func (*MiTransportAdminMessage_LinkCta_UkOsaAdminText_) isMiTransportAdminMessage_LinkCta_Content() {} + +type MiTransportAdminMessage_QuickReactionChanged struct { + state protoimpl.MessageState `protogen:"open.v1"` + EmojiName *string `protobuf:"bytes,1,opt,name=emojiName" json:"emojiName,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MiTransportAdminMessage_QuickReactionChanged) Reset() { + *x = MiTransportAdminMessage_QuickReactionChanged{} + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MiTransportAdminMessage_QuickReactionChanged) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MiTransportAdminMessage_QuickReactionChanged) ProtoMessage() {} + +func (x *MiTransportAdminMessage_QuickReactionChanged) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MiTransportAdminMessage_QuickReactionChanged.ProtoReflect.Descriptor instead. +func (*MiTransportAdminMessage_QuickReactionChanged) Descriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 8} +} + +func (x *MiTransportAdminMessage_QuickReactionChanged) GetEmojiName() string { + if x != nil && x.EmojiName != nil { + return *x.EmojiName + } + return "" +} + +type MiTransportAdminMessage_GroupNameChanged struct { + state protoimpl.MessageState `protogen:"open.v1"` + GroupName *string `protobuf:"bytes,1,opt,name=groupName" json:"groupName,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MiTransportAdminMessage_GroupNameChanged) Reset() { + *x = MiTransportAdminMessage_GroupNameChanged{} + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MiTransportAdminMessage_GroupNameChanged) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MiTransportAdminMessage_GroupNameChanged) ProtoMessage() {} + +func (x *MiTransportAdminMessage_GroupNameChanged) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MiTransportAdminMessage_GroupNameChanged.ProtoReflect.Descriptor instead. +func (*MiTransportAdminMessage_GroupNameChanged) Descriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 9} +} + +func (x *MiTransportAdminMessage_GroupNameChanged) GetGroupName() string { + if x != nil && x.GroupName != nil { + return *x.GroupName + } + return "" +} + +type MiTransportAdminMessage_NicknameChanged struct { + state protoimpl.MessageState `protogen:"open.v1"` + TargetUserID *string `protobuf:"bytes,1,opt,name=targetUserID" json:"targetUserID,omitempty"` + Nickname *string `protobuf:"bytes,2,opt,name=nickname" json:"nickname,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MiTransportAdminMessage_NicknameChanged) Reset() { + *x = MiTransportAdminMessage_NicknameChanged{} + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MiTransportAdminMessage_NicknameChanged) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MiTransportAdminMessage_NicknameChanged) ProtoMessage() {} + +func (x *MiTransportAdminMessage_NicknameChanged) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MiTransportAdminMessage_NicknameChanged.ProtoReflect.Descriptor instead. +func (*MiTransportAdminMessage_NicknameChanged) Descriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 10} +} + +func (x *MiTransportAdminMessage_NicknameChanged) GetTargetUserID() string { + if x != nil && x.TargetUserID != nil { + return *x.TargetUserID + } + return "" +} + +func (x *MiTransportAdminMessage_NicknameChanged) GetNickname() string { + if x != nil && x.Nickname != nil { + return *x.Nickname + } + return "" +} + +type MiTransportAdminMessage_ChatThemeChanged struct { + state protoimpl.MessageState `protogen:"open.v1"` + ThemeName *string `protobuf:"bytes,1,opt,name=themeName" json:"themeName,omitempty"` + ThemeEmoji *string `protobuf:"bytes,2,opt,name=themeEmoji" json:"themeEmoji,omitempty"` + ThemeType *int32 `protobuf:"varint,3,opt,name=themeType" json:"themeType,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MiTransportAdminMessage_ChatThemeChanged) Reset() { + *x = MiTransportAdminMessage_ChatThemeChanged{} + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MiTransportAdminMessage_ChatThemeChanged) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MiTransportAdminMessage_ChatThemeChanged) ProtoMessage() {} + +func (x *MiTransportAdminMessage_ChatThemeChanged) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MiTransportAdminMessage_ChatThemeChanged.ProtoReflect.Descriptor instead. +func (*MiTransportAdminMessage_ChatThemeChanged) Descriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 11} +} + +func (x *MiTransportAdminMessage_ChatThemeChanged) GetThemeName() string { + if x != nil && x.ThemeName != nil { + return *x.ThemeName + } + return "" +} + +func (x *MiTransportAdminMessage_ChatThemeChanged) GetThemeEmoji() string { + if x != nil && x.ThemeEmoji != nil { + return *x.ThemeEmoji + } + return "" +} + +func (x *MiTransportAdminMessage_ChatThemeChanged) GetThemeType() int32 { + if x != nil && x.ThemeType != nil { + return *x.ThemeType + } + return 0 +} + +type MiTransportAdminMessage_LinkCta_UkOsaAdminText struct { + state protoimpl.MessageState `protogen:"open.v1"` + InitiatorUserID *string `protobuf:"bytes,2,opt,name=initiatorUserID" json:"initiatorUserID,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MiTransportAdminMessage_LinkCta_UkOsaAdminText) Reset() { + *x = MiTransportAdminMessage_LinkCta_UkOsaAdminText{} + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MiTransportAdminMessage_LinkCta_UkOsaAdminText) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MiTransportAdminMessage_LinkCta_UkOsaAdminText) ProtoMessage() {} + +func (x *MiTransportAdminMessage_LinkCta_UkOsaAdminText) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MiTransportAdminMessage_LinkCta_UkOsaAdminText.ProtoReflect.Descriptor instead. +func (*MiTransportAdminMessage_LinkCta_UkOsaAdminText) Descriptor() ([]byte, []int) { + return file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDescGZIP(), []int{0, 7, 0} +} + +func (x *MiTransportAdminMessage_LinkCta_UkOsaAdminText) GetInitiatorUserID() string { + if x != nil && x.InitiatorUserID != nil { + return *x.InitiatorUserID + } + return "" +} + +var File_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto protoreflect.FileDescriptor + +const file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDesc = "" + + "\n" + + "KwaArmadilloMiTransportAdminMessage/WAArmadilloMiTransportAdminMessage.proto\x12\"WAArmadilloMiTransportAdminMessage\"\xc6\x19\n" + + "\x17MiTransportAdminMessage\x12z\n" + + "\x10chatThemeChanged\x18\x01 \x01(\v2L.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.ChatThemeChangedH\x00R\x10chatThemeChanged\x12w\n" + + "\x0fnicknameChanged\x18\x02 \x01(\v2K.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.NicknameChangedH\x00R\x0fnicknameChanged\x12\x8f\x01\n" + + "\x17groupParticipantChanged\x18\x03 \x01(\v2S.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupParticipantChangedH\x00R\x17groupParticipantChanged\x12}\n" + + "\x11groupAdminChanged\x18\x04 \x01(\v2M.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupAdminChangedH\x00R\x11groupAdminChanged\x12z\n" + + "\x10groupNameChanged\x18\x05 \x01(\v2L.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupNameChangedH\x00R\x10groupNameChanged\x12\xa1\x01\n" + + "\x1dgroupMembershipAddModeChanged\x18\x06 \x01(\v2Y.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupMembershipAddModeChangedH\x00R\x1dgroupMembershipAddModeChanged\x12q\n" + + "\rmessagePinned\x18\a \x01(\v2I.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.MessagePinnedH\x00R\rmessagePinned\x12}\n" + + "\x11groupImageChanged\x18\b \x01(\v2M.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupImageChangedH\x00R\x11groupImageChanged\x12\x86\x01\n" + + "\x14quickReactionChanged\x18\t \x01(\v2P.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.QuickReactionChangedH\x00R\x14quickReactionChanged\x12_\n" + + "\alinkCta\x18\n" + + " \x01(\v2C.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.LinkCtaH\x00R\alinkCta\x12k\n" + + "\viconChanged\x18\v \x01(\v2G.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.IconChangedH\x00R\viconChanged\x12\x98\x01\n" + + "\x1adisappearingSettingChanged\x18\f \x01(\v2V.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.DisappearingSettingChangedH\x00R\x1adisappearingSettingChanged\x1a\xa5\x01\n" + + "\x11GroupImageChanged\x12l\n" + + "\x06action\x18\x01 \x01(\x0e2T.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupImageChanged.ActionR\x06action\"\"\n" + + "\x06Action\x12\v\n" + + "\aCHANGED\x10\x01\x12\v\n" + + "\aREMOVED\x10\x02\x1a\x9d\x01\n" + + "\rMessagePinned\x12h\n" + + "\x06action\x18\x01 \x01(\x0e2P.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.MessagePinned.ActionR\x06action\"\"\n" + + "\x06Action\x12\n" + + "\n" + + "\x06PINNED\x10\x01\x12\f\n" + + "\bUNPINNED\x10\x02\x1a\xbd\x01\n" + + "\x1dGroupMembershipAddModeChanged\x12r\n" + + "\x04mode\x18\x01 \x01(\x0e2^.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupMembershipAddModeChanged.ModeR\x04mode\"(\n" + + "\x04Mode\x12\x0f\n" + + "\vALL_MEMBERS\x10\x01\x12\x0f\n" + + "\vADMINS_ONLY\x10\x02\x1a\xc7\x01\n" + + "\x11GroupAdminChanged\x12\"\n" + + "\ftargetUserID\x18\x01 \x03(\tR\ftargetUserID\x12l\n" + + "\x06action\x18\x02 \x01(\x0e2T.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupAdminChanged.ActionR\x06action\" \n" + + "\x06Action\x12\t\n" + + "\x05ADDED\x10\x01\x12\v\n" + + "\aREMOVED\x10\x02\x1a\xd3\x01\n" + + "\x17GroupParticipantChanged\x12\"\n" + + "\ftargetUserID\x18\x01 \x03(\tR\ftargetUserID\x12r\n" + + "\x06action\x18\x02 \x01(\x0e2Z.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupParticipantChanged.ActionR\x06action\" \n" + + "\x06Action\x12\t\n" + + "\x05ADDED\x10\x01\x12\v\n" + + "\aREMOVED\x10\x02\x1a\xc2\x01\n" + + "\x1aDisappearingSettingChanged\x12N\n" + + "\"disappearingSettingDurationSeconds\x18\x01 \x01(\x05R\"disappearingSettingDurationSeconds\x12T\n" + + "%oldDisappearingSettingDurationSeconds\x18\x02 \x01(\x05R%oldDisappearingSettingDurationSeconds\x1a-\n" + + "\vIconChanged\x12\x1e\n" + + "\n" + + "threadIcon\x18\x01 \x01(\tR\n" + + "threadIcon\x1a\xce\x01\n" + + "\aLinkCta\x12|\n" + + "\x0eukOsaAdminText\x18\x01 \x01(\v2R.WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.LinkCta.UkOsaAdminTextH\x00R\x0eukOsaAdminText\x1a:\n" + + "\x0eUkOsaAdminText\x12(\n" + + "\x0finitiatorUserID\x18\x02 \x01(\tR\x0finitiatorUserIDB\t\n" + + "\acontent\x1a4\n" + + "\x14QuickReactionChanged\x12\x1c\n" + + "\temojiName\x18\x01 \x01(\tR\temojiName\x1a0\n" + + "\x10GroupNameChanged\x12\x1c\n" + + "\tgroupName\x18\x01 \x01(\tR\tgroupName\x1aQ\n" + + "\x0fNicknameChanged\x12\"\n" + + "\ftargetUserID\x18\x01 \x01(\tR\ftargetUserID\x12\x1a\n" + + "\bnickname\x18\x02 \x01(\tR\bnickname\x1an\n" + + "\x10ChatThemeChanged\x12\x1c\n" + + "\tthemeName\x18\x01 \x01(\tR\tthemeName\x12\x1e\n" + + "\n" + + "themeEmoji\x18\x02 \x01(\tR\n" + + "themeEmoji\x12\x1c\n" + + "\tthemeType\x18\x03 \x01(\x05R\tthemeTypeB\t\n" + + "\acontentB>Z WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.ChatThemeChanged + 16, // 1: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.nicknameChanged:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.NicknameChanged + 10, // 2: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.groupParticipantChanged:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupParticipantChanged + 9, // 3: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.groupAdminChanged:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupAdminChanged + 15, // 4: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.groupNameChanged:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupNameChanged + 8, // 5: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.groupMembershipAddModeChanged:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupMembershipAddModeChanged + 7, // 6: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.messagePinned:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.MessagePinned + 6, // 7: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.groupImageChanged:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupImageChanged + 14, // 8: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.quickReactionChanged:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.QuickReactionChanged + 13, // 9: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.linkCta:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.LinkCta + 12, // 10: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.iconChanged:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.IconChanged + 11, // 11: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.disappearingSettingChanged:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.DisappearingSettingChanged + 0, // 12: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupImageChanged.action:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupImageChanged.Action + 1, // 13: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.MessagePinned.action:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.MessagePinned.Action + 2, // 14: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupMembershipAddModeChanged.mode:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupMembershipAddModeChanged.Mode + 3, // 15: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupAdminChanged.action:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupAdminChanged.Action + 4, // 16: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupParticipantChanged.action:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.GroupParticipantChanged.Action + 18, // 17: WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.LinkCta.ukOsaAdminText:type_name -> WAArmadilloMiTransportAdminMessage.MiTransportAdminMessage.LinkCta.UkOsaAdminText + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name +} + +func init() { file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_init() } +func file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_init() { + if File_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto != nil { + return + } + file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[0].OneofWrappers = []any{ + (*MiTransportAdminMessage_ChatThemeChanged_)(nil), + (*MiTransportAdminMessage_NicknameChanged_)(nil), + (*MiTransportAdminMessage_GroupParticipantChanged_)(nil), + (*MiTransportAdminMessage_GroupAdminChanged_)(nil), + (*MiTransportAdminMessage_GroupNameChanged_)(nil), + (*MiTransportAdminMessage_GroupMembershipAddModeChanged_)(nil), + (*MiTransportAdminMessage_MessagePinned_)(nil), + (*MiTransportAdminMessage_GroupImageChanged_)(nil), + (*MiTransportAdminMessage_QuickReactionChanged_)(nil), + (*MiTransportAdminMessage_LinkCta_)(nil), + (*MiTransportAdminMessage_IconChanged_)(nil), + (*MiTransportAdminMessage_DisappearingSettingChanged_)(nil), + } + file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes[8].OneofWrappers = []any{ + (*MiTransportAdminMessage_LinkCta_UkOsaAdminText_)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDesc), len(file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_rawDesc)), + NumEnums: 5, + NumMessages: 14, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_goTypes, + DependencyIndexes: file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_depIdxs, + EnumInfos: file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_enumTypes, + MessageInfos: file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_msgTypes, + }.Build() + File_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto = out.File + file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_goTypes = nil + file_waArmadilloMiTransportAdminMessage_WAArmadilloMiTransportAdminMessage_proto_depIdxs = nil +} diff --git a/proto/waArmadilloMiTransportAdminMessage/WAArmadilloMiTransportAdminMessage.proto b/proto/waArmadilloMiTransportAdminMessage/WAArmadilloMiTransportAdminMessage.proto new file mode 100644 index 00000000..9c62cd8e --- /dev/null +++ b/proto/waArmadilloMiTransportAdminMessage/WAArmadilloMiTransportAdminMessage.proto @@ -0,0 +1,105 @@ +syntax = "proto2"; +package WAArmadilloMiTransportAdminMessage; +option go_package = "go.mau.fi/whatsmeow/proto/waArmadilloMiTransportAdminMessage"; + +message MiTransportAdminMessage { + message GroupImageChanged { + enum Action { + CHANGED = 1; + REMOVED = 2; + } + + optional Action action = 1; + } + + message MessagePinned { + enum Action { + PINNED = 1; + UNPINNED = 2; + } + + optional Action action = 1; + } + + message GroupMembershipAddModeChanged { + enum Mode { + ALL_MEMBERS = 1; + ADMINS_ONLY = 2; + } + + optional Mode mode = 1; + } + + message GroupAdminChanged { + enum Action { + ADDED = 1; + REMOVED = 2; + } + + repeated string targetUserID = 1; + optional Action action = 2; + } + + message GroupParticipantChanged { + enum Action { + ADDED = 1; + REMOVED = 2; + } + + repeated string targetUserID = 1; + optional Action action = 2; + } + + message DisappearingSettingChanged { + optional int32 disappearingSettingDurationSeconds = 1; + optional int32 oldDisappearingSettingDurationSeconds = 2; + } + + message IconChanged { + optional string threadIcon = 1; + } + + message LinkCta { + message UkOsaAdminText { + optional string initiatorUserID = 2; + } + + oneof content { + UkOsaAdminText ukOsaAdminText = 1; + } + } + + message QuickReactionChanged { + optional string emojiName = 1; + } + + message GroupNameChanged { + optional string groupName = 1; + } + + message NicknameChanged { + optional string targetUserID = 1; + optional string nickname = 2; + } + + message ChatThemeChanged { + optional string themeName = 1; + optional string themeEmoji = 2; + optional int32 themeType = 3; + } + + oneof content { + ChatThemeChanged chatThemeChanged = 1; + NicknameChanged nicknameChanged = 2; + GroupParticipantChanged groupParticipantChanged = 3; + GroupAdminChanged groupAdminChanged = 4; + GroupNameChanged groupNameChanged = 5; + GroupMembershipAddModeChanged groupMembershipAddModeChanged = 6; + MessagePinned messagePinned = 7; + GroupImageChanged groupImageChanged = 8; + QuickReactionChanged quickReactionChanged = 9; + LinkCta linkCta = 10; + IconChanged iconChanged = 11; + DisappearingSettingChanged disappearingSettingChanged = 12; + } +} diff --git a/proto/waArmadilloTransportEvent/WAArmadilloTransportEvent.pb.go b/proto/waArmadilloTransportEvent/WAArmadilloTransportEvent.pb.go index 160a28d7..2b8c6eef 100644 --- a/proto/waArmadilloTransportEvent/WAArmadilloTransportEvent.pb.go +++ b/proto/waArmadilloTransportEvent/WAArmadilloTransportEvent.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waArmadilloTransportEvent/WAArmadilloTransportEvent.proto @@ -9,11 +9,10 @@ package waArmadilloTransportEvent import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -453,11 +452,13 @@ func (x *TransportEvent_Event_IcdcAlert) GetType() TransportEvent_Event_IcdcAler } type TransportEvent_Event_DeviceChange struct { - state protoimpl.MessageState `protogen:"open.v1"` - Type *TransportEvent_Event_DeviceChange_Type `protobuf:"varint,1,opt,name=type,enum=WAArmadilloTransportEvent.TransportEvent_Event_DeviceChange_Type" json:"type,omitempty"` - DeviceName *string `protobuf:"bytes,2,opt,name=deviceName" json:"deviceName,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Type *TransportEvent_Event_DeviceChange_Type `protobuf:"varint,1,opt,name=type,enum=WAArmadilloTransportEvent.TransportEvent_Event_DeviceChange_Type" json:"type,omitempty"` + DeviceName *string `protobuf:"bytes,2,opt,name=deviceName" json:"deviceName,omitempty"` + DevicePlatform *string `protobuf:"bytes,3,opt,name=devicePlatform" json:"devicePlatform,omitempty"` + DeviceModel *string `protobuf:"bytes,4,opt,name=deviceModel" json:"deviceModel,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TransportEvent_Event_DeviceChange) Reset() { @@ -504,19 +505,65 @@ func (x *TransportEvent_Event_DeviceChange) GetDeviceName() string { return "" } +func (x *TransportEvent_Event_DeviceChange) GetDevicePlatform() string { + if x != nil && x.DevicePlatform != nil { + return *x.DevicePlatform + } + return "" +} + +func (x *TransportEvent_Event_DeviceChange) GetDeviceModel() string { + if x != nil && x.DeviceModel != nil { + return *x.DeviceModel + } + return "" +} + var File_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto protoreflect.FileDescriptor -//go:embed WAArmadilloTransportEvent.pb.raw -var file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDesc []byte +const file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDesc = "" + + "\n" + + "9waArmadilloTransportEvent/WAArmadilloTransportEvent.proto\x12\x19WAArmadilloTransportEvent\"\xc3\a\n" + + "\x0eTransportEvent\x12Y\n" + + "\vplaceholder\x18\x01 \x01(\v25.WAArmadilloTransportEvent.TransportEvent.PlaceholderH\x00R\vplaceholder\x12G\n" + + "\x05event\x18\x02 \x01(\v2/.WAArmadilloTransportEvent.TransportEvent.EventH\x00R\x05event\x1a\xe8\x04\n" + + "\x05Event\x12b\n" + + "\fdeviceChange\x18\x01 \x01(\v2<.WAArmadilloTransportEvent.TransportEvent.Event.DeviceChangeH\x00R\fdeviceChange\x12Y\n" + + "\ticdcAlert\x18\x02 \x01(\v29.WAArmadilloTransportEvent.TransportEvent.Event.IcdcAlertH\x00R\ticdcAlert\x1a\x8c\x01\n" + + "\tIcdcAlert\x12R\n" + + "\x04type\x18\x01 \x01(\x0e2>.WAArmadilloTransportEvent.TransportEvent.Event.IcdcAlert.TypeR\x04type\"+\n" + + "\x04Type\x12\b\n" + + "\x04NONE\x10\x00\x12\f\n" + + "\bDETECTED\x10\x01\x12\v\n" + + "\aCLEARED\x10\x02\x1a\x87\x02\n" + + "\fDeviceChange\x12U\n" + + "\x04type\x18\x01 \x01(\x0e2A.WAArmadilloTransportEvent.TransportEvent.Event.DeviceChange.TypeR\x04type\x12\x1e\n" + + "\n" + + "deviceName\x18\x02 \x01(\tR\n" + + "deviceName\x12&\n" + + "\x0edevicePlatform\x18\x03 \x01(\tR\x0edevicePlatform\x12 \n" + + "\vdeviceModel\x18\x04 \x01(\tR\vdeviceModel\"6\n" + + "\x04Type\x12\b\n" + + "\x04NONE\x10\x00\x12\t\n" + + "\x05ADDED\x10\x01\x12\v\n" + + "\aREMOVED\x10\x02\x12\f\n" + + "\bREPLACED\x10\x03B\a\n" + + "\x05event\x1a\x96\x01\n" + + "\vPlaceholder\x12N\n" + + "\x04type\x18\x01 \x01(\x0e2:.WAArmadilloTransportEvent.TransportEvent.Placeholder.TypeR\x04type\"7\n" + + "\x04Type\x12\x16\n" + + "\x12DECRYPTION_FAILURE\x10\x01\x12\x17\n" + + "\x13UNAVAILABLE_MESSAGE\x10\x02B\t\n" + + "\acontentB5Z3github.com/techwiz37/waSocket/proto/waArmadilloTransportEvent" var ( file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDescOnce sync.Once - file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDescData = file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDesc + file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDescData []byte ) func file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDescGZIP() []byte { file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDescOnce.Do(func() { - file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDescData = protoimpl.X.CompressGZIP(file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDescData) + file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDesc), len(file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDesc))) }) return file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDescData } @@ -565,7 +612,7 @@ func file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDesc), len(file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDesc)), NumEnums: 3, NumMessages: 5, NumExtensions: 0, @@ -577,7 +624,6 @@ func file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_init() { MessageInfos: file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_msgTypes, }.Build() File_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto = out.File - file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_rawDesc = nil file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_goTypes = nil file_waArmadilloTransportEvent_WAArmadilloTransportEvent_proto_depIdxs = nil } diff --git a/proto/waArmadilloTransportEvent/WAArmadilloTransportEvent.pb.raw b/proto/waArmadilloTransportEvent/WAArmadilloTransportEvent.pb.raw deleted file mode 100644 index 40c2cd28cf2b285040cc36cfd43a21bb4fba9dcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1033 zcmbW0-%0{O6vkWAbdMr3L4Ul6@G1y)!LTqQ7_)bAQekyv-ICs+>n?kf z9;~~@Rcn?Iw97Ly=XbvE%sEh;TG$&}-GSq{re}>NW7qS^3mf_BJzjC6j6K(P(c#Jm zxvw2ahiRw{$+2VEtnWHq<{e1K(n&I3P*yUOaK2LiO}^WrA`9I@jLj4uL;|R~J~S}O zar6A_M-*bg5qgAFm%R*ZruD5+k1gb0ZAeyhfx*j!n7kwM!0y`EVct@Danl0jC4kd^ zY1uakwni!OirNzD|ZUfS%eZ0HEIUQY@rk+bYc?CBzi_dNr-C| zf+-Io*-r^lVk=NHqzG@SNMs43&=J7=*9>dOf@zScaFRR!BU*+S*7c=gN~*QiO!3SN zCG`r{c(h%LF9t08E\n" + + "\x04ctas\x18\a \x03(\v2*.WAArmadilloXMA.ExtendedContentMessage.CTAR\x04ctas\x121\n" + + "\bpreviews\x18\b \x03(\v2\x15.WACommon.SubProtocolR\bpreviews\x12\x1c\n" + + "\ttitleText\x18\t \x01(\tR\ttitleText\x12\"\n" + + "\fsubtitleText\x18\n" + + " \x01(\tR\fsubtitleText\x12.\n" + + "\x12maxTitleNumOfLines\x18\v \x01(\rR\x12maxTitleNumOfLines\x124\n" + + "\x15maxSubtitleNumOfLines\x18\f \x01(\rR\x15maxSubtitleNumOfLines\x12/\n" + + "\afavicon\x18\r \x01(\v2\x15.WACommon.SubProtocolR\afavicon\x127\n" + + "\vheaderImage\x18\x0e \x01(\v2\x15.WACommon.SubProtocolR\vheaderImage\x12 \n" + + "\vheaderTitle\x18\x0f \x01(\tR\vheaderTitle\x12c\n" + + "\x10overlayIconGlyph\x18\x10 \x01(\x0e27.WAArmadilloXMA.ExtendedContentMessage.OverlayIconGlyphR\x10overlayIconGlyph\x12\"\n" + + "\foverlayTitle\x18\x11 \x01(\tR\foverlayTitle\x12.\n" + + "\x12overlayDescription\x18\x12 \x01(\tR\x12overlayDescription\x12,\n" + + "\x11sentWithMessageID\x18\x13 \x01(\tR\x11sentWithMessageID\x12 \n" + + "\vmessageText\x18\x14 \x01(\tR\vmessageText\x12&\n" + + "\x0eheaderSubtitle\x18\x15 \x01(\tR\x0eheaderSubtitle\x12\"\n" + + "\fxmaDataclass\x18\x16 \x01(\tR\fxmaDataclass\x12\x1e\n" + + "\n" + + "contentRef\x18\x17 \x01(\tR\n" + + "contentRef\x12\"\n" + + "\fmentionedJID\x18\x18 \x03(\tR\fmentionedJID\x12-\n" + + "\bcommands\x18\x19 \x03(\v2\x11.WACommon.CommandR\bcommands\x12-\n" + + "\bmentions\x18\x1a \x03(\v2\x11.WACommon.MentionR\bmentions\x1a\xf5\x01\n" + + "\x03CTA\x12T\n" + + "\n" + + "buttonType\x18\x01 \x01(\x0e24.WAArmadilloXMA.ExtendedContentMessage.CtaButtonTypeR\n" + + "buttonType\x12\x14\n" + + "\x05title\x18\x02 \x01(\tR\x05title\x12\x1c\n" + + "\tactionURL\x18\x03 \x01(\tR\tactionURL\x12\x1c\n" + + "\tnativeURL\x18\x04 \x01(\tR\tnativeURL\x12\x18\n" + + "\actaType\x18\x05 \x01(\tR\actaType\x12,\n" + + "\x11actionContentBlob\x18\x06 \x01(\tR\x11actionContentBlob\"\xa1\x01\n" + + "\x10OverlayIconGlyph\x12\b\n" + + "\x04INFO\x10\x00\x12\v\n" + + "\aEYE_OFF\x10\x01\x12\f\n" + + "\bNEWS_OFF\x10\x02\x12\v\n" + + "\aWARNING\x10\x03\x12\v\n" + + "\aPRIVATE\x10\x04\x12\b\n" + + "\x04NONE\x10\x05\x12\x0f\n" + + "\vMEDIA_LABEL\x10\x06\x12\x0e\n" + + "\n" + + "POST_COVER\x10\a\x12\x0e\n" + + "\n" + + "POST_LABEL\x10\b\x12\x13\n" + + "\x0fWARNING_SCREENS\x10\t\" \n" + + "\rCtaButtonType\x12\x0f\n" + + "\vOPEN_NATIVE\x10\v\"b\n" + + "\rXmaLayoutType\x12\n" + + "\n" + + "\x06SINGLE\x10\x00\x12\v\n" + + "\aHSCROLL\x10\x01\x12\f\n" + + "\bPORTRAIT\x10\x03\x12\x11\n" + + "\rSTANDARD_DXMA\x10\f\x12\r\n" + + "\tLIST_DXMA\x10\x0f\x12\b\n" + + "\x04GRID\x10\x10\"\xa2\x0e\n" + + "\x13ExtendedContentType\x12\x0f\n" + + "\vUNSUPPORTED\x10\x00\x12\x1a\n" + + "\x16IG_STORY_PHOTO_MENTION\x10\x04\x12\x1e\n" + + "\x1aIG_SINGLE_IMAGE_POST_SHARE\x10\t\x12\x16\n" + + "\x12IG_MULTIPOST_SHARE\x10\n" + + "\x12\x1e\n" + + "\x1aIG_SINGLE_VIDEO_POST_SHARE\x10\v\x12\x18\n" + + "\x14IG_STORY_PHOTO_SHARE\x10\f\x12\x18\n" + + "\x14IG_STORY_VIDEO_SHARE\x10\r\x12\x12\n" + + "\x0eIG_CLIPS_SHARE\x10\x0e\x12\x11\n" + + "\rIG_IGTV_SHARE\x10\x0f\x12\x11\n" + + "\rIG_SHOP_SHARE\x10\x10\x12\x14\n" + + "\x10IG_PROFILE_SHARE\x10\x13\x12\"\n" + + "\x1eIG_STORY_PHOTO_HIGHLIGHT_SHARE\x10\x14\x12\"\n" + + "\x1eIG_STORY_VIDEO_HIGHLIGHT_SHARE\x10\x15\x12\x12\n" + + "\x0eIG_STORY_REPLY\x10\x16\x12\x15\n" + + "\x11IG_STORY_REACTION\x10\x17\x12\x1a\n" + + "\x16IG_STORY_VIDEO_MENTION\x10\x18\x12\x1c\n" + + "\x18IG_STORY_HIGHLIGHT_REPLY\x10\x19\x12\x1f\n" + + "\x1bIG_STORY_HIGHLIGHT_REACTION\x10\x1a\x12\x14\n" + + "\x10IG_EXTERNAL_LINK\x10\x1b\x12\x15\n" + + "\x11IG_RECEIVER_FETCH\x10\x1c\x12\x12\n" + + "\rFB_FEED_SHARE\x10\xe8\a\x12\x13\n" + + "\x0eFB_STORY_REPLY\x10\xe9\a\x12\x13\n" + + "\x0eFB_STORY_SHARE\x10\xea\a\x12\x15\n" + + "\x10FB_STORY_MENTION\x10\xeb\a\x12\x18\n" + + "\x13FB_FEED_VIDEO_SHARE\x10\xec\a\x12\x1c\n" + + "\x17FB_GAMING_CUSTOM_UPDATE\x10\xed\a\x12\x1c\n" + + "\x17FB_PRODUCER_STORY_REPLY\x10\xee\a\x12\r\n" + + "\bFB_EVENT\x10\xef\a\x12\x1f\n" + + "\x1aFB_FEED_POST_PRIVATE_REPLY\x10\xf0\a\x12\r\n" + + "\bFB_SHORT\x10\xf1\a\x12\x1d\n" + + "\x18FB_COMMENT_MENTION_SHARE\x10\xf2\a\x12\x14\n" + + "\x0fFB_POST_MENTION\x10\xf3\a\x12\x1c\n" + + "\x17MSG_EXTERNAL_LINK_SHARE\x10\xd0\x0f\x12\x14\n" + + "\x0fMSG_P2P_PAYMENT\x10\xd1\x0f\x12\x19\n" + + "\x14MSG_LOCATION_SHARING\x10\xd2\x0f\x12\x1c\n" + + "\x17MSG_LOCATION_SHARING_V2\x10\xd3\x0f\x12,\n" + + "'MSG_HIGHLIGHTS_TAB_FRIEND_UPDATES_REPLY\x10\xd4\x0f\x12)\n" + + "$MSG_HIGHLIGHTS_TAB_LOCAL_EVENT_REPLY\x10\xd5\x0f\x12\x17\n" + + "\x12MSG_RECEIVER_FETCH\x10\xd6\x0f\x12\x17\n" + + "\x12MSG_IG_MEDIA_SHARE\x10\xd7\x0f\x12&\n" + + "!MSG_GEN_AI_SEARCH_PLUGIN_RESPONSE\x10\xd8\x0f\x12\x13\n" + + "\x0eMSG_REELS_LIST\x10\xd9\x0f\x12\x10\n" + + "\vMSG_CONTACT\x10\xda\x0f\x12\x1b\n" + + "\x16MSG_THREADS_POST_SHARE\x10\xdb\x0f\x12\r\n" + + "\bMSG_FILE\x10\xdc\x0f\x12\x17\n" + + "\x12MSG_AVATAR_DETAILS\x10\xdd\x0f\x12\x13\n" + + "\x0eMSG_AI_CONTACT\x10\xde\x0f\x12\x17\n" + + "\x12MSG_MEMORIES_SHARE\x10\xdf\x0f\x12\x1b\n" + + "\x16MSG_SHARED_ALBUM_REPLY\x10\xe0\x0f\x12\x15\n" + + "\x10MSG_SHARED_ALBUM\x10\xe1\x0f\x12\x18\n" + + "\x13MSG_OCCAMADILLO_XMA\x10\xe2\x0f\x12\x1c\n" + + "\x17MSG_GEN_AI_SUBSCRIPTION\x10\xe5\x0f\x12\x18\n" + + "\x13MSG_GEN_AI_REMINDER\x10\xe6\x0f\x12(\n" + + "#MSG_GEN_AI_MEMU_ONBOARDING_RESPONSE\x10\xe7\x0f\x12\x13\n" + + "\x0eMSG_NOTE_REPLY\x10\xe8\x0f\x12\x15\n" + + "\x10MSG_NOTE_MENTION\x10\xe9\x0f\x12\x13\n" + + "\x0eRTC_AUDIO_CALL\x10\xb8\x17\x12\x13\n" + + "\x0eRTC_VIDEO_CALL\x10\xb9\x17\x12\x1a\n" + + "\x15RTC_MISSED_AUDIO_CALL\x10\xba\x17\x12\x1a\n" + + "\x15RTC_MISSED_VIDEO_CALL\x10\xbb\x17\x12\x19\n" + + "\x14RTC_GROUP_AUDIO_CALL\x10\xbc\x17\x12\x19\n" + + "\x14RTC_GROUP_VIDEO_CALL\x10\xbd\x17\x12 \n" + + "\x1bRTC_MISSED_GROUP_AUDIO_CALL\x10\xbe\x17\x12 \n" + + "\x1bRTC_MISSED_GROUP_VIDEO_CALL\x10\xbf\x17\x12\x1b\n" + + "\x16RTC_ONGOING_AUDIO_CALL\x10\xc0\x17\x12\x1b\n" + + "\x16RTC_ONGOING_VIDEO_CALL\x10\xc1\x17\x12 \n" + + "\x1bMSG_RECEIVER_FETCH_FALLBACK\x10\xd1\x17\x12\x1a\n" + + "\x15DATACLASS_SENDER_COPY\x10\xa0\x1fB*Z(github.com/techwiz37/waSocket/proto/waArmadilloXMA" var ( file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescOnce sync.Once - file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescData = file_waArmadilloXMA_WAArmadilloXMA_proto_rawDesc + file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescData []byte ) func file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescGZIP() []byte { file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescOnce.Do(func() { - file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescData = protoimpl.X.CompressGZIP(file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescData) + file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waArmadilloXMA_WAArmadilloXMA_proto_rawDesc), len(file_waArmadilloXMA_WAArmadilloXMA_proto_rawDesc))) }) return file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescData } @@ -866,7 +1000,7 @@ func file_waArmadilloXMA_WAArmadilloXMA_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waArmadilloXMA_WAArmadilloXMA_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waArmadilloXMA_WAArmadilloXMA_proto_rawDesc), len(file_waArmadilloXMA_WAArmadilloXMA_proto_rawDesc)), NumEnums: 4, NumMessages: 2, NumExtensions: 0, @@ -878,7 +1012,6 @@ func file_waArmadilloXMA_WAArmadilloXMA_proto_init() { MessageInfos: file_waArmadilloXMA_WAArmadilloXMA_proto_msgTypes, }.Build() File_waArmadilloXMA_WAArmadilloXMA_proto = out.File - file_waArmadilloXMA_WAArmadilloXMA_proto_rawDesc = nil file_waArmadilloXMA_WAArmadilloXMA_proto_goTypes = nil file_waArmadilloXMA_WAArmadilloXMA_proto_depIdxs = nil } diff --git a/proto/waArmadilloXMA/WAArmadilloXMA.pb.raw b/proto/waArmadilloXMA/WAArmadilloXMA.pb.raw deleted file mode 100644 index b2046e3c1898c324ba77f73cc68f42709b8317da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3821 zcma)9S#R4$5U%SaveuTkULRtdG)3qi|tBEXUi ziH@Cr)Am>NKK?=P`v!WXXWF9gon2BiDXWDa414GM=G&RsnURGq9Rymx6KuD4cYD_w z+Uiv;dtBM;_o5yt=dDYXgFx?fI=wE?<3D2J^4;@jksd~2cRSqHdtLY=YJ`J9a3dr- znhgenUaK8M;dWwFCoWE0o?cs6NoCyqEk|70>h1F5d~zM3DCpk^Bk%TJsNM_S<+W$P zI~Vi#09HoKLV;)0$U~?cYc~gBzZ-NybrST8e8ftY&{WJb4fT{{q-XL3nu{@dxYzEt zyEnAR4O{AIpiS~|5M)$3>;zVDySE=Fbw(!j)CrTimi6U%De^2j)rx|FTDUj~Retn@ zlDemH=|`SKQ+xgJRy#Zxs8dqoKVB-Ok@Kh+wWHn83lAf;D64a1Aj@cGu)lRgK$4KN zkrhNb!J#Ka?EMbgvD)2mpiTp`#K$1yDYO85=o=}UahZ`W<3X~D3Om8AcB|J_OThcj z9vrgB(`fo;7;J}qvjg3%mjBNw%On?vjxr@x0mmXw7}7*q2={J<{oUZU3Gvi+Z|~hy zG0@6uPoMC~*oZqnCMZguToT7IE91!7MClWb5e{1Y_FmM6`Vh$+gOJD2>;NYGYCF1_ z3^a_yoTMKIL?JryE|ASJFL_y$n83Kk!`D<7Bx%Gda)FsKf+%S1!cI{aB`aqm7Z8GC ziUq{O9kn7E8H>>900;?&+s{GRD)e`e=WOJ0G}VGN7j(A=>RH+Uv+y9v!V|v$;VDJX z6Ul+PG)iy8m+_Rc^v?vEgjpjVLRhkV~@2 z+5)e%%CZoUUlW^UIAUzxNX`sJSh$i zH#ano;#0!iW;VsAiGrpZ)G#&Q(yG+LXGj?#hq<1wvkl5|Aw9?V6q!RxBI>(3r_^?F zarq)D=a@L2b`uHk9T9S`wHH%{Lobjry`4Ze8OP7s(@a!BkLBPBvm8GLlhbX-5Sl|@0oX4bro#H1u9x6YizgrS`=upG|TO^YVhIT+## zBQey?THS&lFX7DRIB_(ioP{K=xPF{E)+Syg3urdg=2X*VIV-tR$8y6`t1v%m>T+~R zEO?gOkIs!n6X~TSM|#bp+}14LGVLq)ToMPTI)%pL{yO#aIzA5}m)5IrqDGSGPX%b@ zGT5?d+{qi`n*Uq?QJgY|@&8hQmzx`kW*_d?0;E;}q^32Xk9@recQpK_V~FYdZHU6_ z7)>2w%tr8g0s4CieCYtlSbyyl+A{#E5Vn43a-60>IpL_Vv0=W;Vz}Hzr1UhW& zBd!bhOan&Ug#rf|dWD&#Dh7gmeuFyzdZbg^sR zQ$+gXAb(>Gzpudldsv|9le@mB!P{_?+D1|(H%adUg*<{D9K#m3T5*vQ>W2!cAR?$E zkN;5$KtILHE`HdL75E5!KzP((RcWU0QjP0%-?5rC(*_yWVYW;0CyHp5SeaTbbeiko zPZfe;cY?FdY!8|ef2NRgXi-?aI!u7!W*5Ncig;H6iiyNuq%mo*k~Qud)YDAM#b2g( zK|Dj{uTpk{HW<`txDLKfuap@XzGhXMjieyoD57u0m01vftBAf8W~S>}Lo-avV!l|d z-=z;XtVgp7YuR+ ze3$#{P@bx$U%~InjA7Mix}~|$DKJ&AWOU|i;^*(LK6?G~jowNp*k9RcuO8eCqCqF@ O9jwYPuB-VkxBmj6BTIe& diff --git a/proto/waCert/WACert.pb.go b/proto/waCert/WACert.pb.go index d177b1d3..0397a315 100644 --- a/proto/waCert/WACert.pb.go +++ b/proto/waCert/WACert.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waCert/WACert.proto @@ -9,11 +9,10 @@ package waCert import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -333,17 +332,39 @@ func (x *CertChain_NoiseCertificate_Details) GetNotAfter() uint64 { var File_waCert_WACert_proto protoreflect.FileDescriptor -//go:embed WACert.pb.raw -var file_waCert_WACert_proto_rawDesc []byte +const file_waCert_WACert_proto_rawDesc = "" + + "\n" + + "\x13waCert/WACert.proto\x12\x06WACert\"\xcb\x01\n" + + "\x10NoiseCertificate\x12\x18\n" + + "\adetails\x18\x01 \x01(\fR\adetails\x12\x1c\n" + + "\tsignature\x18\x02 \x01(\fR\tsignature\x1a\x7f\n" + + "\aDetails\x12\x16\n" + + "\x06serial\x18\x01 \x01(\rR\x06serial\x12\x16\n" + + "\x06issuer\x18\x02 \x01(\tR\x06issuer\x12\x18\n" + + "\aexpires\x18\x03 \x01(\x04R\aexpires\x12\x18\n" + + "\asubject\x18\x04 \x01(\tR\asubject\x12\x10\n" + + "\x03key\x18\x05 \x01(\fR\x03key\"\xec\x02\n" + + "\tCertChain\x126\n" + + "\x04leaf\x18\x01 \x01(\v2\".WACert.CertChain.NoiseCertificateR\x04leaf\x12F\n" + + "\fintermediate\x18\x02 \x01(\v2\".WACert.CertChain.NoiseCertificateR\fintermediate\x1a\xde\x01\n" + + "\x10NoiseCertificate\x12\x18\n" + + "\adetails\x18\x01 \x01(\fR\adetails\x12\x1c\n" + + "\tsignature\x18\x02 \x01(\fR\tsignature\x1a\x91\x01\n" + + "\aDetails\x12\x16\n" + + "\x06serial\x18\x01 \x01(\rR\x06serial\x12\"\n" + + "\fissuerSerial\x18\x02 \x01(\rR\fissuerSerial\x12\x10\n" + + "\x03key\x18\x03 \x01(\fR\x03key\x12\x1c\n" + + "\tnotBefore\x18\x04 \x01(\x04R\tnotBefore\x12\x1a\n" + + "\bnotAfter\x18\x05 \x01(\x04R\bnotAfterB\"Z github.com/techwiz37/waSocket/proto/waCert" var ( file_waCert_WACert_proto_rawDescOnce sync.Once - file_waCert_WACert_proto_rawDescData = file_waCert_WACert_proto_rawDesc + file_waCert_WACert_proto_rawDescData []byte ) func file_waCert_WACert_proto_rawDescGZIP() []byte { file_waCert_WACert_proto_rawDescOnce.Do(func() { - file_waCert_WACert_proto_rawDescData = protoimpl.X.CompressGZIP(file_waCert_WACert_proto_rawDescData) + file_waCert_WACert_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waCert_WACert_proto_rawDesc), len(file_waCert_WACert_proto_rawDesc))) }) return file_waCert_WACert_proto_rawDescData } @@ -375,7 +396,7 @@ func file_waCert_WACert_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waCert_WACert_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waCert_WACert_proto_rawDesc), len(file_waCert_WACert_proto_rawDesc)), NumEnums: 0, NumMessages: 5, NumExtensions: 0, @@ -386,7 +407,6 @@ func file_waCert_WACert_proto_init() { MessageInfos: file_waCert_WACert_proto_msgTypes, }.Build() File_waCert_WACert_proto = out.File - file_waCert_WACert_proto_rawDesc = nil file_waCert_WACert_proto_goTypes = nil file_waCert_WACert_proto_depIdxs = nil } diff --git a/proto/waCert/WACert.pb.raw b/proto/waCert/WACert.pb.raw deleted file mode 100644 index ae70c93c..00000000 --- a/proto/waCert/WACert.pb.raw +++ /dev/null @@ -1,23 +0,0 @@ - -waCert/WACert.protoWACert"Ë -NoiseCertificate -details ( Rdetails - signature ( R signature -Details -serial ( Rserial -issuer ( Rissuer -expires (Rexpires -subject ( Rsubject -key ( Rkey"ì - CertChain6 -leaf ( 2".WACert.CertChain.NoiseCertificateRleafF - intermediate ( 2".WACert.CertChain.NoiseCertificateR intermediateÞ -NoiseCertificate -details ( Rdetails - signature ( R signature‘ -Details -serial ( Rserial" - issuerSerial ( R issuerSerial -key ( Rkey - notBefore (R notBefore -notAfter (RnotAfterB"Z go.mau.fi/whatsmeow/proto/waCert \ No newline at end of file diff --git a/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.go b/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.go index 85b96800..d573336c 100644 --- a/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.go +++ b/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waChatLockSettings/WAProtobufsChatLockSettings.proto @@ -9,13 +9,12 @@ package waChatLockSettings import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" waUserPassword "github.com/techwiz37/waSocket/proto/waUserPassword" - - _ "embed" ) const ( @@ -79,17 +78,23 @@ func (x *ChatLockSettings) GetSecretCode() *waUserPassword.UserPassword { var File_waChatLockSettings_WAProtobufsChatLockSettings_proto protoreflect.FileDescriptor -//go:embed WAProtobufsChatLockSettings.pb.raw -var file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDesc []byte +const file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDesc = "" + + "\n" + + "4waChatLockSettings/WAProtobufsChatLockSettings.proto\x12\x1bWAProtobufsChatLockSettings\x1a,waUserPassword/WAProtobufsUserPassword.proto\"\x83\x01\n" + + "\x10ChatLockSettings\x12(\n" + + "\x0fhideLockedChats\x18\x01 \x01(\bR\x0fhideLockedChats\x12E\n" + + "\n" + + "secretCode\x18\x02 \x01(\v2%.WAProtobufsUserPassword.UserPasswordR\n" + + "secretCodeB.Z,github.com/techwiz37/waSocket/proto/waChatLockSettings" var ( file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDescOnce sync.Once - file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDescData = file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDesc + file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDescData []byte ) func file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDescGZIP() []byte { file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDescOnce.Do(func() { - file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDescData = protoimpl.X.CompressGZIP(file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDescData) + file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDesc), len(file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDesc))) }) return file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDescData } @@ -117,7 +122,7 @@ func file_waChatLockSettings_WAProtobufsChatLockSettings_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDesc), len(file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -128,7 +133,6 @@ func file_waChatLockSettings_WAProtobufsChatLockSettings_proto_init() { MessageInfos: file_waChatLockSettings_WAProtobufsChatLockSettings_proto_msgTypes, }.Build() File_waChatLockSettings_WAProtobufsChatLockSettings_proto = out.File - file_waChatLockSettings_WAProtobufsChatLockSettings_proto_rawDesc = nil file_waChatLockSettings_WAProtobufsChatLockSettings_proto_goTypes = nil file_waChatLockSettings_WAProtobufsChatLockSettings_proto_depIdxs = nil } diff --git a/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.raw b/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.raw deleted file mode 100644 index 92c0c343..00000000 --- a/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.raw +++ /dev/null @@ -1,7 +0,0 @@ - -4waChatLockSettings/WAProtobufsChatLockSettings.protoWAProtobufsChatLockSettings,waUserPassword/WAProtobufsUserPassword.proto"ƒ -ChatLockSettings( -hideLockedChats (RhideLockedChatsE - -secretCode ( 2%.WAProtobufsUserPassword.UserPasswordR -secretCodeB.Z,go.mau.fi/whatsmeow/proto/waChatLockSettings \ No newline at end of file diff --git a/proto/waCommon/WACommon.pb.go b/proto/waCommon/WACommon.pb.go index 8e3b58af..3383bb23 100644 --- a/proto/waCommon/WACommon.pb.go +++ b/proto/waCommon/WACommon.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waCommon/WACommon.proto @@ -9,11 +9,10 @@ package waCommon import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -653,17 +652,66 @@ func (x *LimitSharing) GetInitiatedByMe() bool { var File_waCommon_WACommon_proto protoreflect.FileDescriptor -//go:embed WACommon.pb.raw -var file_waCommon_WACommon_proto_rawDesc []byte +const file_waCommon_WACommon_proto_rawDesc = "" + + "\n" + + "\x17waCommon/WACommon.proto\x12\bWACommon\"t\n" + + "\n" + + "MessageKey\x12\x1c\n" + + "\tremoteJID\x18\x01 \x01(\tR\tremoteJID\x12\x16\n" + + "\x06fromMe\x18\x02 \x01(\bR\x06fromMe\x12\x0e\n" + + "\x02ID\x18\x03 \x01(\tR\x02ID\x12 \n" + + "\vparticipant\x18\x04 \x01(\tR\vparticipant\"\xe5\x01\n" + + "\aCommand\x12?\n" + + "\vcommandType\x18\x01 \x01(\x0e2\x1d.WACommon.Command.CommandTypeR\vcommandType\x12\x16\n" + + "\x06offset\x18\x02 \x01(\rR\x06offset\x12\x16\n" + + "\x06length\x18\x03 \x01(\rR\x06length\x12(\n" + + "\x0fvalidationToken\x18\x04 \x01(\tR\x0fvalidationToken\"?\n" + + "\vCommandType\x12\f\n" + + "\bEVERYONE\x10\x01\x12\n" + + "\n" + + "\x06SILENT\x10\x02\x12\x06\n" + + "\x02AI\x10\x03\x12\x0e\n" + + "\n" + + "AI_IMAGINE\x10\x04\"\xba\x01\n" + + "\aMention\x12?\n" + + "\vmentionType\x18\x01 \x01(\x0e2\x1d.WACommon.Mention.MentionTypeR\vmentionType\x12\"\n" + + "\fmentionedJID\x18\x02 \x01(\tR\fmentionedJID\x12\x16\n" + + "\x06offset\x18\x03 \x01(\rR\x06offset\x12\x16\n" + + "\x06length\x18\x04 \x01(\rR\x06length\"\x1a\n" + + "\vMentionType\x12\v\n" + + "\aPROFILE\x10\x00\"\xa3\x01\n" + + "\vMessageText\x12\x12\n" + + "\x04text\x18\x01 \x01(\tR\x04text\x12\"\n" + + "\fmentionedJID\x18\x02 \x03(\tR\fmentionedJID\x12-\n" + + "\bcommands\x18\x03 \x03(\v2\x11.WACommon.CommandR\bcommands\x12-\n" + + "\bmentions\x18\x04 \x03(\v2\x11.WACommon.MentionR\bmentions\"A\n" + + "\vSubProtocol\x12\x18\n" + + "\apayload\x18\x01 \x01(\fR\apayload\x12\x18\n" + + "\aversion\x18\x02 \x01(\x05R\aversion\"\xb4\x02\n" + + "\fLimitSharing\x12&\n" + + "\x0esharingLimited\x18\x01 \x01(\bR\x0esharingLimited\x128\n" + + "\atrigger\x18\x02 \x01(\x0e2\x1e.WACommon.LimitSharing.TriggerR\atrigger\x12B\n" + + "\x1climitSharingSettingTimestamp\x18\x03 \x01(\x03R\x1climitSharingSettingTimestamp\x12$\n" + + "\rinitiatedByMe\x18\x04 \x01(\bR\rinitiatedByMe\"X\n" + + "\aTrigger\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\x10\n" + + "\fCHAT_SETTING\x10\x01\x12\x1b\n" + + "\x17BIZ_SUPPORTS_FB_HOSTING\x10\x02\x12\x11\n" + + "\rUNKNOWN_GROUP\x10\x03*F\n" + + "\x13FutureProofBehavior\x12\x0f\n" + + "\vPLACEHOLDER\x10\x00\x12\x12\n" + + "\x0eNO_PLACEHOLDER\x10\x01\x12\n" + + "\n" + + "\x06IGNORE\x10\x02B$Z\"github.com/techwiz37/waSocket/proto/waCommon" var ( file_waCommon_WACommon_proto_rawDescOnce sync.Once - file_waCommon_WACommon_proto_rawDescData = file_waCommon_WACommon_proto_rawDesc + file_waCommon_WACommon_proto_rawDescData []byte ) func file_waCommon_WACommon_proto_rawDescGZIP() []byte { file_waCommon_WACommon_proto_rawDescOnce.Do(func() { - file_waCommon_WACommon_proto_rawDescData = protoimpl.X.CompressGZIP(file_waCommon_WACommon_proto_rawDescData) + file_waCommon_WACommon_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waCommon_WACommon_proto_rawDesc), len(file_waCommon_WACommon_proto_rawDesc))) }) return file_waCommon_WACommon_proto_rawDescData } @@ -704,7 +752,7 @@ func file_waCommon_WACommon_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waCommon_WACommon_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waCommon_WACommon_proto_rawDesc), len(file_waCommon_WACommon_proto_rawDesc)), NumEnums: 4, NumMessages: 6, NumExtensions: 0, @@ -716,7 +764,6 @@ func file_waCommon_WACommon_proto_init() { MessageInfos: file_waCommon_WACommon_proto_msgTypes, }.Build() File_waCommon_WACommon_proto = out.File - file_waCommon_WACommon_proto_rawDesc = nil file_waCommon_WACommon_proto_goTypes = nil file_waCommon_WACommon_proto_depIdxs = nil } diff --git a/proto/waCommon/WACommon.pb.raw b/proto/waCommon/WACommon.pb.raw deleted file mode 100644 index 6fc89f6fc4c3157d48fd309371a2fe909d70b979..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1228 zcmaJ>-A>yu6s9es<+POGNu%1>gd#MdNlPWJb~mMvmW(#3oG=DAl}Ft+S`$}^3+waj z6?V1v*?Y`(5(q!qmCw&-pYNRSB(Qr+j#(J8sC{9khOvklXQ-C@ItLigBq39JMptML zHe(txPQTbEt^HBHmh8 ziDF3qTY{=2M4~bJ4E5{O^j8b2sy2__8aYEF!{w(0;o=QRi%lj8<%-r8&O8~P(`d?P zikgV09y)~W8!`{Zga<70*$*0J6d#9mK`pB;tD*+ftgjZnbRA18A%G3f?puzpmC**2 zOBSqN64`PK` zNI9OHg;e8i7W!+b7wVxpREOB@ing>h{Z~mQ)o%FoCr1d@xj3`EQ1&yNDo;3lgjyzW zB9y2c){l0csEh9)NWil;6QRo^ct#fAL39)9-tzlUuJtvWqZU*bWHo1GtavtX?#j#! zjT0e-n%oPVyZY}kH2OgpaBoK9Aey50&`eTOg=zX$4L^#aPf+D?FrCs^J=r{Zci&j? zLBmf`IESMS?9B@mJ<7Q#><1xDI0+YOV=MT-7<2$zK@{+Sa60a+#8)Y$t>K43{To!X z>Qdcv=ge_09BmD0&^SId{gG$+zU}nHLcf9Cj(s)q&WA%6``)PA8J)VGN|w\n" + + "\x1acompanionEphemeralIdentity\x18\x01 \x01(\fR\x1acompanionEphemeralIdentity\x12C\n" + + "\n" + + "commitment\x18\x02 \x01(\v2#.WACompanionReg.CompanionCommitmentR\n" + + "commitment\"N\n" + + "\x18PrimaryEphemeralIdentity\x12\x1c\n" + + "\tpublicKey\x18\x01 \x01(\fR\tpublicKey\x12\x14\n" + + "\x05nonce\x18\x02 \x01(\fR\x05nonce\"\x92\x01\n" + + "\x0ePairingRequest\x12.\n" + + "\x12companionPublicKey\x18\x01 \x01(\fR\x12companionPublicKey\x122\n" + + "\x14companionIdentityKey\x18\x02 \x01(\fR\x14companionIdentityKey\x12\x1c\n" + + "\tadvSecret\x18\x03 \x01(\fR\tadvSecret\"U\n" + + "\x17EncryptedPairingRequest\x12*\n" + + "\x10encryptedPayload\x18\x01 \x01(\fR\x10encryptedPayload\x12\x0e\n" + + "\x02IV\x18\x02 \x01(\fR\x02IV\"|\n" + + "\x12ClientPairingProps\x120\n" + + "\x13isChatDbLidMigrated\x18\x01 \x01(\bR\x13isChatDbLidMigrated\x124\n" + + "\x15isSyncdPureLidSession\x18\x02 \x01(\bR\x15isSyncdPureLidSessionB*Z(github.com/techwiz37/waSocket/proto/waCompanionReg" var ( file_waCompanionReg_WACompanionReg_proto_rawDescOnce sync.Once - file_waCompanionReg_WACompanionReg_proto_rawDescData = file_waCompanionReg_WACompanionReg_proto_rawDesc + file_waCompanionReg_WACompanionReg_proto_rawDescData []byte ) func file_waCompanionReg_WACompanionReg_proto_rawDescGZIP() []byte { file_waCompanionReg_WACompanionReg_proto_rawDescOnce.Do(func() { - file_waCompanionReg_WACompanionReg_proto_rawDescData = protoimpl.X.CompressGZIP(file_waCompanionReg_WACompanionReg_proto_rawDescData) + file_waCompanionReg_WACompanionReg_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waCompanionReg_WACompanionReg_proto_rawDesc), len(file_waCompanionReg_WACompanionReg_proto_rawDesc))) }) return file_waCompanionReg_WACompanionReg_proto_rawDescData } @@ -874,7 +961,7 @@ func file_waCompanionReg_WACompanionReg_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waCompanionReg_WACompanionReg_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waCompanionReg_WACompanionReg_proto_rawDesc), len(file_waCompanionReg_WACompanionReg_proto_rawDesc)), NumEnums: 1, NumMessages: 10, NumExtensions: 0, @@ -886,7 +973,6 @@ func file_waCompanionReg_WACompanionReg_proto_init() { MessageInfos: file_waCompanionReg_WACompanionReg_proto_msgTypes, }.Build() File_waCompanionReg_WACompanionReg_proto = out.File - file_waCompanionReg_WACompanionReg_proto_rawDesc = nil file_waCompanionReg_WACompanionReg_proto_goTypes = nil file_waCompanionReg_WACompanionReg_proto_depIdxs = nil } diff --git a/proto/waCompanionReg/WACompanionReg.pb.raw b/proto/waCompanionReg/WACompanionReg.pb.raw deleted file mode 100644 index 180f08418199c253fa92511d045475cba802d9b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2576 zcmb7GTW{k;6ehhTIZe{Zv}H|!)ha8k$_i3c@rV$v<20s8>>Vd9EDx0%Pm>Xj?e(Qq zR{RPic;L_NUtz|VG-*N?-e%5sF5jFpbI!oadrR@AzU4B{C3JjpB`%8iD7BxCR?uC>355j?09v@Q+Zuqd~}BN*i3bd-|%m?4h|}-IRU*GSw!z z8SX;GcdY2v3#NmaPo+)nrgnP#lpA9~pDbD9W7rGmyO;&E9XpOWb4St^cUU5i#rRjK zPgodv!Axi=o_ov2(spu&Z=MR?d2B>h{TzMRf%=Lf{u=7H8LO5x3%hK}q9m79vI^jD zVL#V4*?Zc%N%cjVt7IL7UqMYA$Qsi(u@_mrnq@AQh>p|Rx z=b6=+7Y#!i$YUN?V%#Y%YWNd-yD4)V^Uh&*)+zD~aX5E8w5tMP@DAw(c%m@g5romdL17O`LpGZ-Ggc z3^@$F5lfxamYA$69Q|DYcxWeBf}$U=sTIt!2bFK}7f=rA$a8IhrH|)9fRCUQ(SSb! z4vNlGCG$Og4)89vIP3~kw2>-VkcgPP(GN&l!v<6qn-t!K;;?_w*RT5M6AZAU zbco(lQ9%H0ji_z?XS9KLU_(>UCN9IaZm2{?TSC{A+cMG6HZH-I+B#R!j<9N}=EXoa zP*I3ALvEoG#!!>{Euw3!>w$dMRR^e?`0B`g8G%^JUA-ftU0i{ZA`j%Q#(|0mGElnL zgG*G!RVZt^d2Mv`zKUuXK}Bp6=gb$&fi{##!c0SaHCaMdTSE@{| zbrWF`kuR@^#+~eoD16saFEvF)2e=5E!z%+FiVR#5^r^s=u0CvC%Z7%Y2^MBgCWG^? zY?`Wxq{d$bIGT?y)t}HQ4J=2qd1qkJOcdRZZyYwdpy`FEkOu+o0NBY)O9qa(6aQ!6 zEZA~ln*qH|ZcdqqW#cQ@pY!4i-r=X56EDry#0n?L<*bloEzYpVr>f(PW16*K`~w_~ z@*%x)tjzie4Xglg`z&fUl3zX^XKM(O1+zvUBqM!HD-=GG*#p>iJ$FQt$Q6=q8h;d^ zW>_rXU5@bKOv4B_0ng8AJgU?h1fRmeTtBa}sI4eog{;K{Rm;9J=_sI4QX+l{=7Po$ zo~iCAnEAYmKO*-U5Pg7>*_fq%MJ_%>+GR$AuNuDtRvgAlp7~6_O?+~&P;}ZBpW=4f zE2*70Es=GQ=~PmKJVRU+%bv)6Br$6j-4#m!rGa?j(1Q|jHHB!9b; H<^SJ5eK;p> diff --git a/proto/waConsumerApplication/WAConsumerApplication.pb.go b/proto/waConsumerApplication/WAConsumerApplication.pb.go index 55e39da7..d75ae8c1 100644 --- a/proto/waConsumerApplication/WAConsumerApplication.pb.go +++ b/proto/waConsumerApplication/WAConsumerApplication.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waConsumerApplication/WAConsumerApplication.proto @@ -9,13 +9,12 @@ package waConsumerApplication import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" waCommon "github.com/techwiz37/waSocket/proto/waCommon" - - _ "embed" ) const ( @@ -2464,17 +2463,183 @@ func (x *ConsumerApplication_MediaPayload) GetProtocol() *waCommon.SubProtocol { var File_waConsumerApplication_WAConsumerApplication_proto protoreflect.FileDescriptor -//go:embed WAConsumerApplication.pb.raw -var file_waConsumerApplication_WAConsumerApplication_proto_rawDesc []byte +const file_waConsumerApplication_WAConsumerApplication_proto_rawDesc = "" + + "\n" + + "1waConsumerApplication/WAConsumerApplication.proto\x12\x15WAConsumerApplication\x1a\x17waCommon/WACommon.proto\"\x9d6\n" + + "\x13ConsumerApplication\x12L\n" + + "\apayload\x18\x01 \x01(\v22.WAConsumerApplication.ConsumerApplication.PayloadR\apayload\x12O\n" + + "\bmetadata\x18\x02 \x01(\v23.WAConsumerApplication.ConsumerApplication.MetadataR\bmetadata\x1a\xfc\x02\n" + + "\aPayload\x12N\n" + + "\acontent\x18\x01 \x01(\v22.WAConsumerApplication.ConsumerApplication.ContentH\x00R\acontent\x12f\n" + + "\x0fapplicationData\x18\x02 \x01(\v2:.WAConsumerApplication.ConsumerApplication.ApplicationDataH\x00R\x0fapplicationData\x12K\n" + + "\x06signal\x18\x03 \x01(\v21.WAConsumerApplication.ConsumerApplication.SignalH\x00R\x06signal\x12a\n" + + "\vsubProtocol\x18\x04 \x01(\v2=.WAConsumerApplication.ConsumerApplication.SubProtocolPayloadH\x00R\vsubProtocolB\t\n" + + "\apayload\x1aU\n" + + "\x12SubProtocolPayload\x12?\n" + + "\vfutureProof\x18\x01 \x01(\x0e2\x1d.WACommon.FutureProofBehaviorR\vfutureProof\x1a\xae\x01\n" + + "\bMetadata\x12m\n" + + "\x0fspecialTextSize\x18\x01 \x01(\x0e2C.WAConsumerApplication.ConsumerApplication.Metadata.SpecialTextSizeR\x0fspecialTextSize\"3\n" + + "\x0fSpecialTextSize\x12\t\n" + + "\x05SMALL\x10\x01\x12\n" + + "\n" + + "\x06MEDIUM\x10\x02\x12\t\n" + + "\x05LARGE\x10\x03\x1a\b\n" + + "\x06Signal\x1a{\n" + + "\x0fApplicationData\x12R\n" + + "\x06revoke\x18\x01 \x01(\v28.WAConsumerApplication.ConsumerApplication.RevokeMessageH\x00R\x06revokeB\x14\n" + + "\x12applicationContent\x1a\xd1\x0e\n" + + "\aContent\x129\n" + + "\vmessageText\x18\x01 \x01(\v2\x15.WACommon.MessageTextH\x00R\vmessageText\x12]\n" + + "\fimageMessage\x18\x02 \x01(\v27.WAConsumerApplication.ConsumerApplication.ImageMessageH\x00R\fimageMessage\x12c\n" + + "\x0econtactMessage\x18\x03 \x01(\v29.WAConsumerApplication.ConsumerApplication.ContactMessageH\x00R\x0econtactMessage\x12f\n" + + "\x0flocationMessage\x18\x04 \x01(\v2:.WAConsumerApplication.ConsumerApplication.LocationMessageH\x00R\x0flocationMessage\x12r\n" + + "\x13extendedTextMessage\x18\x05 \x01(\v2>.WAConsumerApplication.ConsumerApplication.ExtendedTextMessageH\x00R\x13extendedTextMessage\x12k\n" + + "\x11statusTextMessage\x18\x06 \x01(\v2;.WAConsumerApplication.ConsumerApplication.StatusTextMesageH\x00R\x11statusTextMessage\x12f\n" + + "\x0fdocumentMessage\x18\a \x01(\v2:.WAConsumerApplication.ConsumerApplication.DocumentMessageH\x00R\x0fdocumentMessage\x12]\n" + + "\faudioMessage\x18\b \x01(\v27.WAConsumerApplication.ConsumerApplication.AudioMessageH\x00R\faudioMessage\x12]\n" + + "\fvideoMessage\x18\t \x01(\v27.WAConsumerApplication.ConsumerApplication.VideoMessageH\x00R\fvideoMessage\x12u\n" + + "\x14contactsArrayMessage\x18\n" + + " \x01(\v2?.WAConsumerApplication.ConsumerApplication.ContactsArrayMessageH\x00R\x14contactsArrayMessage\x12r\n" + + "\x13liveLocationMessage\x18\v \x01(\v2>.WAConsumerApplication.ConsumerApplication.LiveLocationMessageH\x00R\x13liveLocationMessage\x12c\n" + + "\x0estickerMessage\x18\f \x01(\v29.WAConsumerApplication.ConsumerApplication.StickerMessageH\x00R\x0estickerMessage\x12o\n" + + "\x12groupInviteMessage\x18\r \x01(\v2=.WAConsumerApplication.ConsumerApplication.GroupInviteMessageH\x00R\x12groupInviteMessage\x12f\n" + + "\x0fviewOnceMessage\x18\x0e \x01(\v2:.WAConsumerApplication.ConsumerApplication.ViewOnceMessageH\x00R\x0fviewOnceMessage\x12f\n" + + "\x0freactionMessage\x18\x10 \x01(\v2:.WAConsumerApplication.ConsumerApplication.ReactionMessageH\x00R\x0freactionMessage\x12r\n" + + "\x13pollCreationMessage\x18\x11 \x01(\v2>.WAConsumerApplication.ConsumerApplication.PollCreationMessageH\x00R\x13pollCreationMessage\x12l\n" + + "\x11pollUpdateMessage\x18\x12 \x01(\v2<.WAConsumerApplication.ConsumerApplication.PollUpdateMessageH\x00R\x11pollUpdateMessage\x12Z\n" + + "\veditMessage\x18\x13 \x01(\v26.WAConsumerApplication.ConsumerApplication.EditMessageH\x00R\veditMessageB\t\n" + + "\acontent\x1a\x88\x01\n" + + "\vEditMessage\x12&\n" + + "\x03key\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x03key\x12/\n" + + "\amessage\x18\x02 \x01(\v2\x15.WACommon.MessageTextR\amessage\x12 \n" + + "\vtimestampMS\x18\x03 \x01(\x03R\vtimestampMS\x1ai\n" + + "\x14PollAddOptionMessage\x12Q\n" + + "\n" + + "pollOption\x18\x01 \x03(\v21.WAConsumerApplication.ConsumerApplication.OptionR\n" + + "pollOption\x1ai\n" + + "\x0fPollVoteMessage\x12(\n" + + "\x0fselectedOptions\x18\x01 \x03(\fR\x0fselectedOptions\x12,\n" + + "\x11senderTimestampMS\x18\x02 \x01(\x03R\x11senderTimestampMS\x1aD\n" + + "\fPollEncValue\x12\x1e\n" + + "\n" + + "encPayload\x18\x01 \x01(\fR\n" + + "encPayload\x12\x14\n" + + "\x05encIV\x18\x02 \x01(\fR\x05encIV\x1a\x85\x02\n" + + "\x11PollUpdateMessage\x12L\n" + + "\x16pollCreationMessageKey\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x16pollCreationMessageKey\x12K\n" + + "\x04vote\x18\x02 \x01(\v27.WAConsumerApplication.ConsumerApplication.PollEncValueR\x04vote\x12U\n" + + "\taddOption\x18\x03 \x01(\v27.WAConsumerApplication.ConsumerApplication.PollEncValueR\taddOption\x1a\xc6\x01\n" + + "\x13PollCreationMessage\x12\x16\n" + + "\x06encKey\x18\x01 \x01(\fR\x06encKey\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12K\n" + + "\aoptions\x18\x03 \x03(\v21.WAConsumerApplication.ConsumerApplication.OptionR\aoptions\x126\n" + + "\x16selectableOptionsCount\x18\x04 \x01(\rR\x16selectableOptionsCount\x1a(\n" + + "\x06Option\x12\x1e\n" + + "\n" + + "optionName\x18\x01 \x01(\tR\n" + + "optionName\x1a\xf9\x01\n" + + "\x0fReactionMessage\x12&\n" + + "\x03key\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x03key\x12\x12\n" + + "\x04text\x18\x02 \x01(\tR\x04text\x12 \n" + + "\vgroupingKey\x18\x03 \x01(\tR\vgroupingKey\x12,\n" + + "\x11senderTimestampMS\x18\x04 \x01(\x03R\x11senderTimestampMS\x12D\n" + + "\x1dreactionMetadataDataclassData\x18\x05 \x01(\tR\x1dreactionMetadataDataclassData\x12\x14\n" + + "\x05style\x18\x06 \x01(\x05R\x05style\x1a7\n" + + "\rRevokeMessage\x12&\n" + + "\x03key\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x03key\x1a\xe2\x01\n" + + "\x0fViewOnceMessage\x12]\n" + + "\fimageMessage\x18\x01 \x01(\v27.WAConsumerApplication.ConsumerApplication.ImageMessageH\x00R\fimageMessage\x12]\n" + + "\fvideoMessage\x18\x02 \x01(\v27.WAConsumerApplication.ConsumerApplication.VideoMessageH\x00R\fvideoMessageB\x11\n" + + "\x0fviewOnceContent\x1a\xf1\x01\n" + + "\x12GroupInviteMessage\x12\x1a\n" + + "\bgroupJID\x18\x01 \x01(\tR\bgroupJID\x12\x1e\n" + + "\n" + + "inviteCode\x18\x02 \x01(\tR\n" + + "inviteCode\x12*\n" + + "\x10inviteExpiration\x18\x03 \x01(\x03R\x10inviteExpiration\x12\x1c\n" + + "\tgroupName\x18\x04 \x01(\tR\tgroupName\x12$\n" + + "\rJPEGThumbnail\x18\x05 \x01(\fR\rJPEGThumbnail\x12/\n" + + "\acaption\x18\x06 \x01(\v2\x15.WACommon.MessageTextR\acaption\x1a\xf9\x02\n" + + "\x13LiveLocationMessage\x12O\n" + + "\blocation\x18\x01 \x01(\v23.WAConsumerApplication.ConsumerApplication.LocationR\blocation\x12*\n" + + "\x10accuracyInMeters\x18\x02 \x01(\rR\x10accuracyInMeters\x12\x1e\n" + + "\n" + + "speedInMps\x18\x03 \x01(\x02R\n" + + "speedInMps\x12L\n" + + "!degreesClockwiseFromMagneticNorth\x18\x04 \x01(\rR!degreesClockwiseFromMagneticNorth\x12/\n" + + "\acaption\x18\x05 \x01(\v2\x15.WACommon.MessageTextR\acaption\x12&\n" + + "\x0esequenceNumber\x18\x06 \x01(\x03R\x0esequenceNumber\x12\x1e\n" + + "\n" + + "timeOffset\x18\a \x01(\rR\n" + + "timeOffset\x1a\x8f\x01\n" + + "\x14ContactsArrayMessage\x12 \n" + + "\vdisplayName\x18\x01 \x01(\tR\vdisplayName\x12U\n" + + "\bcontacts\x18\x02 \x03(\v29.WAConsumerApplication.ConsumerApplication.ContactMessageR\bcontacts\x1aA\n" + + "\x0eContactMessage\x12/\n" + + "\acontact\x18\x01 \x01(\v2\x15.WACommon.SubProtocolR\acontact\x1a\xfc\x02\n" + + "\x10StatusTextMesage\x12R\n" + + "\x04text\x18\x01 \x01(\v2>.WAConsumerApplication.ConsumerApplication.ExtendedTextMessageR\x04text\x12\x1a\n" + + "\btextArgb\x18\x06 \x01(\aR\btextArgb\x12&\n" + + "\x0ebackgroundArgb\x18\a \x01(\aR\x0ebackgroundArgb\x12X\n" + + "\x04font\x18\b \x01(\x0e2D.WAConsumerApplication.ConsumerApplication.StatusTextMesage.FontTypeR\x04font\"v\n" + + "\bFontType\x12\x0e\n" + + "\n" + + "SANS_SERIF\x10\x00\x12\t\n" + + "\x05SERIF\x10\x01\x12\x13\n" + + "\x0fNORICAN_REGULAR\x10\x02\x12\x11\n" + + "\rBRYNDAN_WRITE\x10\x03\x12\x15\n" + + "\x11BEBASNEUE_REGULAR\x10\x04\x12\x10\n" + + "\fOSWALD_HEAVY\x10\x05\x1a\x85\x03\n" + + "\x13ExtendedTextMessage\x12)\n" + + "\x04text\x18\x01 \x01(\v2\x15.WACommon.MessageTextR\x04text\x12 \n" + + "\vmatchedText\x18\x02 \x01(\tR\vmatchedText\x12\"\n" + + "\fcanonicalURL\x18\x03 \x01(\tR\fcanonicalURL\x12 \n" + + "\vdescription\x18\x04 \x01(\tR\vdescription\x12\x14\n" + + "\x05title\x18\x05 \x01(\tR\x05title\x123\n" + + "\tthumbnail\x18\x06 \x01(\v2\x15.WACommon.SubProtocolR\tthumbnail\x12l\n" + + "\vpreviewType\x18\a \x01(\x0e2J.WAConsumerApplication.ConsumerApplication.ExtendedTextMessage.PreviewTypeR\vpreviewType\"\"\n" + + "\vPreviewType\x12\b\n" + + "\x04NONE\x10\x00\x12\t\n" + + "\x05VIDEO\x10\x01\x1a|\n" + + "\x0fLocationMessage\x12O\n" + + "\blocation\x18\x01 \x01(\v23.WAConsumerApplication.ConsumerApplication.LocationR\blocation\x12\x18\n" + + "\aaddress\x18\x02 \x01(\tR\aaddress\x1aA\n" + + "\x0eStickerMessage\x12/\n" + + "\asticker\x18\x01 \x01(\v2\x15.WACommon.SubProtocolR\asticker\x1a`\n" + + "\x0fDocumentMessage\x121\n" + + "\bdocument\x18\x01 \x01(\v2\x15.WACommon.SubProtocolR\bdocument\x12\x1a\n" + + "\bfileName\x18\x02 \x01(\tR\bfileName\x1al\n" + + "\fVideoMessage\x12+\n" + + "\x05video\x18\x01 \x01(\v2\x15.WACommon.SubProtocolR\x05video\x12/\n" + + "\acaption\x18\x02 \x01(\v2\x15.WACommon.MessageTextR\acaption\x1aM\n" + + "\fAudioMessage\x12+\n" + + "\x05audio\x18\x01 \x01(\v2\x15.WACommon.SubProtocolR\x05audio\x12\x10\n" + + "\x03PTT\x18\x02 \x01(\bR\x03PTT\x1al\n" + + "\fImageMessage\x12+\n" + + "\x05image\x18\x01 \x01(\v2\x15.WACommon.SubProtocolR\x05image\x12/\n" + + "\acaption\x18\x02 \x01(\v2\x15.WACommon.MessageTextR\acaption\x1a\xd0\x01\n" + + "\x15InteractiveAnnotation\x12Q\n" + + "\blocation\x18\x02 \x01(\v23.WAConsumerApplication.ConsumerApplication.LocationH\x00R\blocation\x12Z\n" + + "\x0fpolygonVertices\x18\x01 \x03(\v20.WAConsumerApplication.ConsumerApplication.PointR\x0fpolygonVerticesB\b\n" + + "\x06action\x1a#\n" + + "\x05Point\x12\f\n" + + "\x01x\x18\x01 \x01(\x01R\x01x\x12\f\n" + + "\x01y\x18\x02 \x01(\x01R\x01y\x1at\n" + + "\bLocation\x12(\n" + + "\x0fdegreesLatitude\x18\x01 \x01(\x01R\x0fdegreesLatitude\x12*\n" + + "\x10degreesLongitude\x18\x02 \x01(\x01R\x10degreesLongitude\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x1aA\n" + + "\fMediaPayload\x121\n" + + "\bprotocol\x18\x01 \x01(\v2\x15.WACommon.SubProtocolR\bprotocolB1Z/github.com/techwiz37/waSocket/proto/waConsumerApplication" var ( file_waConsumerApplication_WAConsumerApplication_proto_rawDescOnce sync.Once - file_waConsumerApplication_WAConsumerApplication_proto_rawDescData = file_waConsumerApplication_WAConsumerApplication_proto_rawDesc + file_waConsumerApplication_WAConsumerApplication_proto_rawDescData []byte ) func file_waConsumerApplication_WAConsumerApplication_proto_rawDescGZIP() []byte { file_waConsumerApplication_WAConsumerApplication_proto_rawDescOnce.Do(func() { - file_waConsumerApplication_WAConsumerApplication_proto_rawDescData = protoimpl.X.CompressGZIP(file_waConsumerApplication_WAConsumerApplication_proto_rawDescData) + file_waConsumerApplication_WAConsumerApplication_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waConsumerApplication_WAConsumerApplication_proto_rawDesc), len(file_waConsumerApplication_WAConsumerApplication_proto_rawDesc))) }) return file_waConsumerApplication_WAConsumerApplication_proto_rawDescData } @@ -2635,7 +2800,7 @@ func file_waConsumerApplication_WAConsumerApplication_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waConsumerApplication_WAConsumerApplication_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waConsumerApplication_WAConsumerApplication_proto_rawDesc), len(file_waConsumerApplication_WAConsumerApplication_proto_rawDesc)), NumEnums: 3, NumMessages: 33, NumExtensions: 0, @@ -2647,7 +2812,6 @@ func file_waConsumerApplication_WAConsumerApplication_proto_init() { MessageInfos: file_waConsumerApplication_WAConsumerApplication_proto_msgTypes, }.Build() File_waConsumerApplication_WAConsumerApplication_proto = out.File - file_waConsumerApplication_WAConsumerApplication_proto_rawDesc = nil file_waConsumerApplication_WAConsumerApplication_proto_goTypes = nil file_waConsumerApplication_WAConsumerApplication_proto_depIdxs = nil } diff --git a/proto/waConsumerApplication/WAConsumerApplication.pb.raw b/proto/waConsumerApplication/WAConsumerApplication.pb.raw deleted file mode 100644 index 6964bb5b9b14fcd968992b781ab85cc436b0ced9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7094 zcmb_h&2Hn!5nlOEQc1Stwr3&`*;l1rrrI)L zid0C-9woUhkXxQ0uaL*cIeCS=L5>ULkg9HyYEm3~ImnGHc7N4f|5b#icjlqz2GgE$WefaN)@6^Zz(B8cKwO)*w&!zwhw=9kRAObbF*JgSux!&g6K}(T{YMcY9u~M&jJ7*SL-8#3 z&NFCa*03t94vyPLN6iugSUc`^dgsT@B_bcS`O9u|*{Hyp(uDCRXk=8*IIQ{N*1J*X zuI>MyvDyapd3B3PoOqd+emDYM?9J z$57_Ah)aSTdKRW0H@RF{vMM6TP8xv(nE@rEGp9q_izQf*Oo|v?TicEtQg8%+YY#;N zUo8xOp=~F49ga<5JF@AZ?fd2|z6D4&pBB(cWZ5YgWS0w1*5}x_B4ekmn&eu<`i>S+ zkZB$`xo;5K){XGvOV%a3BJMj#0U)OgB=dlcd~Z7Gxwm$h1fq4xs7N+@xd4L9a-hk~ zZ*6gR;#vu}4au#DnO~$4kX06x`1k@N7uIjF_?m_J@H7JP$$*k&OgzUqM7qvvQ}QZe z8K;XV$S)6^Ij~7Q&nH;lB~oOP<1Y(%0C7xVAiqUm_9fKB&`yHVmgMui0H5xBH*(Oy zsKg<6#+YaPr35u?CHny^--ub1Pq!sIS=2<@{9Md9Ens_49;^Ht<&sdHtpf?WTGjR{RV*Ku84TDWh~Q+6p?Bp*Fca}gIHa7i6Yq( ztiyyOtWZSk1Ien6B~+TseuDXlGNON`-G|EkWxn{q=s=xVbzSSibf$uR2SB)1RC`J} z*SSVv+pvn?dlyoyb*^5Fua;nwU{Z#I-OFQ=OvVdPNB8RQ9ec1)U%5qryhlBxUyw@> zb`DiDR%BH87fE(0#5t1jj}mOrx6GB=#4R0am}&1QG%^wK z8+$2UKg6<4suZtJ&*X?Q_t@@;Bkh*Vqsr$5_I+4?b=rM-c0C4$PDT{O{6qpnbH}h;%ocwN+Z!K zFdyF)SZg$NGukT-XBAYS<1_}Cn|0!zid=ZDu(ym)w_E;H4KJs>l5nvFpG zVTu7#^idnam$F{Qsx(EVYfy?lxw;BO*rGOQoof{1uO-;dtKTW44DDdzm@_Sg=_E`C z6{+Aa;-(4_ zMe50%J~xWH=#~_J+y3ZM%D>E$chbh8K%BGLL~x0?a|@N2!ZrW~?f&4+pv!wNnjgpkk$fz%Eok&lc<->?f5W>k&v8J6 zlcG&nKj2^VJ4k%ZduKQ?Vvk_+pnK3B^t7g_)rca>bv2E|cA##VuIJ)p**WJ&QO--zqz#L}@@*B3 zR6MH<=Oju|p&eq1QVC7HuxC&WlNhI_6xwNZlbf%@R-!h+Q5W`8qyp(`8~d*cs53`o zyQgzRuEX!_Ku!C`DzMT&>35Z4FM6HsNwZ}985(gAj3oU352-CEV@>E|+Yl)!ekDIn z_srzSQ5*h%A4jW<-$NrahG9>k5|3f-2T7Ju?!2-cA;TCY@G4K<4F~FahGsv8RXHTN zA6u=_gSILRG$YYXI!=eiG1T>m4{?(NqzAakHRxx{r)OtU$`wwJba=gbAvl|+m=D0o zHN_AA&k{W9VUdE_GsMwL+jTvh#^F!^o4F*#%H!4c-zQIFLz}>0r`*6UXg2cP3*lor z6{>Tq?ftE?w.WAProtobufsDeviceCapabilities.DeviceCapabilities.LIDMigrationR\flidMigration\x1aJ\n" + + "\fLIDMigration\x12:\n" + + "\x18chatDbMigrationTimestamp\x18\x01 \x01(\x04R\x18chatDbMigrationTimestamp\"7\n" + + "\x14ChatLockSupportLevel\x12\b\n" + + "\x04NONE\x10\x00\x12\v\n" + + "\aMINIMAL\x10\x01\x12\b\n" + + "\x04FULL\x10\x02B0Z.github.com/techwiz37/waSocket/proto/waDeviceCapabilities" var ( file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_rawDescOnce sync.Once - file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_rawDescData = file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_rawDesc + file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_rawDescData []byte ) func file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_rawDescGZIP() []byte { file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_rawDescOnce.Do(func() { - file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_rawDescData = protoimpl.X.CompressGZIP(file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_rawDescData) + file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_rawDesc), len(file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_rawDesc))) }) return file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_rawDescData } @@ -221,7 +230,7 @@ func file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_rawDesc), len(file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_rawDesc)), NumEnums: 1, NumMessages: 2, NumExtensions: 0, @@ -233,7 +242,6 @@ func file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_init() { MessageInfos: file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_msgTypes, }.Build() File_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto = out.File - file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_rawDesc = nil file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_goTypes = nil file_waDeviceCapabilities_WAProtobufsDeviceCapabilities_proto_depIdxs = nil } diff --git a/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.raw b/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.raw deleted file mode 100644 index bd88029ae72b18120cc375a9b8794931fb549f37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 519 zcmd|KD9SI%Pby6-#+2170Lcl-;#H*dlZi_R zQ?F1Jmq>C(Vu??Fa&~ZOK|y{|iBD=-YK{b>0;2|>k((Y~L-jBX)N{sSS`bz{gp#;; zaxznVGt-L_OEUBGB$$A9avRx^Zl{l@3*3|-6f>o~xOk9dg{-(FK>l?}f@=uL%uOvW zNz5$(`\n" + + "\rSecretEncType\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\x0e\n" + + "\n" + + "EVENT_EDIT\x10\x01\x12\x10\n" + + "\fMESSAGE_EDIT\x10\x02\"\x91\x03\n" + + "\x12GroupInviteMessage\x12\x1a\n" + + "\bgroupJID\x18\x01 \x01(\tR\bgroupJID\x12\x1e\n" + + "\n" + + "inviteCode\x18\x02 \x01(\tR\n" + + "inviteCode\x12*\n" + + "\x10inviteExpiration\x18\x03 \x01(\x03R\x10inviteExpiration\x12\x1c\n" + + "\tgroupName\x18\x04 \x01(\tR\tgroupName\x12$\n" + + "\rJPEGThumbnail\x18\x05 \x01(\fR\rJPEGThumbnail\x12\x18\n" + + "\acaption\x18\x06 \x01(\tR\acaption\x12@\n" + + "\vcontextInfo\x18\a \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x12M\n" + + "\tgroupType\x18\b \x01(\x0e2/.WAWebProtobufsE2E.GroupInviteMessage.GroupTypeR\tgroupType\"$\n" + + "\tGroupType\x12\v\n" + + "\aDEFAULT\x10\x00\x12\n" + + "\n" + + "\x06PARENT\x10\x01\"\xd2\x04\n" + + "\x1aInteractiveResponseMessage\x12\x87\x01\n" + + "\x19nativeFlowResponseMessage\x18\x02 \x01(\v2G.WAWebProtobufsE2E.InteractiveResponseMessage.NativeFlowResponseMessageH\x00R\x19nativeFlowResponseMessage\x12F\n" + + "\x04body\x18\x01 \x01(\v22.WAWebProtobufsE2E.InteractiveResponseMessage.BodyR\x04body\x12@\n" + + "\vcontextInfo\x18\x0f \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x1a\x96\x01\n" + + "\x04Body\x12\x12\n" + + "\x04text\x18\x01 \x01(\tR\x04text\x12Q\n" + + "\x06format\x18\x02 \x01(\x0e29.WAWebProtobufsE2E.InteractiveResponseMessage.Body.FormatR\x06format\"'\n" + + "\x06Format\x12\v\n" + + "\aDEFAULT\x10\x00\x12\x10\n" + + "\fEXTENSIONS_1\x10\x01\x1ai\n" + + "\x19NativeFlowResponseMessage\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1e\n" + + "\n" + + "paramsJSON\x18\x02 \x01(\tR\n" + + "paramsJSON\x12\x18\n" + + "\aversion\x18\x03 \x01(\x05R\aversionB\x1c\n" + + "\x1ainteractiveResponseMessage\"\xcc\x10\n" + + "\x12InteractiveMessage\x12i\n" + + "\x15shopStorefrontMessage\x18\x04 \x01(\v21.WAWebProtobufsE2E.InteractiveMessage.ShopMessageH\x00R\x15shopStorefrontMessage\x12g\n" + + "\x11collectionMessage\x18\x05 \x01(\v27.WAWebProtobufsE2E.InteractiveMessage.CollectionMessageH\x00R\x11collectionMessage\x12g\n" + + "\x11nativeFlowMessage\x18\x06 \x01(\v27.WAWebProtobufsE2E.InteractiveMessage.NativeFlowMessageH\x00R\x11nativeFlowMessage\x12a\n" + + "\x0fcarouselMessage\x18\a \x01(\v25.WAWebProtobufsE2E.InteractiveMessage.CarouselMessageH\x00R\x0fcarouselMessage\x12D\n" + + "\x06header\x18\x01 \x01(\v2,.WAWebProtobufsE2E.InteractiveMessage.HeaderR\x06header\x12>\n" + + "\x04body\x18\x02 \x01(\v2*.WAWebProtobufsE2E.InteractiveMessage.BodyR\x04body\x12D\n" + + "\x06footer\x18\x03 \x01(\v2,.WAWebProtobufsE2E.InteractiveMessage.FooterR\x06footer\x12@\n" + + "\vcontextInfo\x18\x0f \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x12I\n" + + "\x0eurlTrackingMap\x18\x10 \x01(\v2!.WAWebProtobufsE2E.UrlTrackingMapR\x0eurlTrackingMap\x1a\xd2\x01\n" + + "\vShopMessage\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\tR\x02ID\x12S\n" + + "\asurface\x18\x02 \x01(\x0e29.WAWebProtobufsE2E.InteractiveMessage.ShopMessage.SurfaceR\asurface\x12&\n" + + "\x0emessageVersion\x18\x03 \x01(\x05R\x0emessageVersion\"6\n" + + "\aSurface\x12\x13\n" + + "\x0fUNKNOWN_SURFACE\x10\x00\x12\x06\n" + + "\x02FB\x10\x01\x12\x06\n" + + "\x02IG\x10\x02\x12\x06\n" + + "\x02WA\x10\x03\x1av\n" + + "\x0fCarouselMessage\x12;\n" + + "\x05cards\x18\x01 \x03(\v2%.WAWebProtobufsE2E.InteractiveMessageR\x05cards\x12&\n" + + "\x0emessageVersion\x18\x02 \x01(\x05R\x0emessageVersion\x1a\xa1\x02\n" + + "\x11NativeFlowMessage\x12b\n" + + "\abuttons\x18\x01 \x03(\v2H.WAWebProtobufsE2E.InteractiveMessage.NativeFlowMessage.NativeFlowButtonR\abuttons\x12,\n" + + "\x11messageParamsJSON\x18\x02 \x01(\tR\x11messageParamsJSON\x12&\n" + + "\x0emessageVersion\x18\x03 \x01(\x05R\x0emessageVersion\x1aR\n" + + "\x10NativeFlowButton\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12*\n" + + "\x10buttonParamsJSON\x18\x02 \x01(\tR\x10buttonParamsJSON\x1ac\n" + + "\x11CollectionMessage\x12\x16\n" + + "\x06bizJID\x18\x01 \x01(\tR\x06bizJID\x12\x0e\n" + + "\x02ID\x18\x02 \x01(\tR\x02ID\x12&\n" + + "\x0emessageVersion\x18\x03 \x01(\x05R\x0emessageVersion\x1a\x1c\n" + + "\x06Footer\x12\x12\n" + + "\x04text\x18\x01 \x01(\tR\x04text\x1a\x1a\n" + + "\x04Body\x12\x12\n" + + "\x04text\x18\x01 \x01(\tR\x04text\x1a\x96\x04\n" + + "\x06Header\x12N\n" + + "\x0fdocumentMessage\x18\x03 \x01(\v2\".WAWebProtobufsE2E.DocumentMessageH\x00R\x0fdocumentMessage\x12E\n" + + "\fimageMessage\x18\x04 \x01(\v2\x1f.WAWebProtobufsE2E.ImageMessageH\x00R\fimageMessage\x12&\n" + + "\rJPEGThumbnail\x18\x06 \x01(\fH\x00R\rJPEGThumbnail\x12E\n" + + "\fvideoMessage\x18\a \x01(\v2\x1f.WAWebProtobufsE2E.VideoMessageH\x00R\fvideoMessage\x12N\n" + + "\x0flocationMessage\x18\b \x01(\v2\".WAWebProtobufsE2E.LocationMessageH\x00R\x0flocationMessage\x12K\n" + + "\x0eproductMessage\x18\t \x01(\v2!.WAWebProtobufsE2E.ProductMessageH\x00R\x0eproductMessage\x12\x14\n" + + "\x05title\x18\x01 \x01(\tR\x05title\x12\x1a\n" + + "\bsubtitle\x18\x02 \x01(\tR\bsubtitle\x12.\n" + + "\x12hasMediaAttachment\x18\x05 \x01(\bR\x12hasMediaAttachmentB\a\n" + + "\x05mediaB\x14\n" + + "\x12interactiveMessage\"\xab\x03\n" + + "\x13ListResponseMessage\x12\x14\n" + + "\x05title\x18\x01 \x01(\tR\x05title\x12K\n" + + "\blistType\x18\x02 \x01(\x0e2/.WAWebProtobufsE2E.ListResponseMessage.ListTypeR\blistType\x12f\n" + + "\x11singleSelectReply\x18\x03 \x01(\v28.WAWebProtobufsE2E.ListResponseMessage.SingleSelectReplyR\x11singleSelectReply\x12@\n" + + "\vcontextInfo\x18\x04 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x12 \n" + + "\vdescription\x18\x05 \x01(\tR\vdescription\x1a9\n" + + "\x11SingleSelectReply\x12$\n" + + "\rselectedRowID\x18\x01 \x01(\tR\rselectedRowID\"*\n" + + "\bListType\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\x11\n" + + "\rSINGLE_SELECT\x10\x01\"\xfb\b\n" + + "\vListMessage\x12\x14\n" + + "\x05title\x18\x01 \x01(\tR\x05title\x12 \n" + + "\vdescription\x18\x02 \x01(\tR\vdescription\x12\x1e\n" + + "\n" + + "buttonText\x18\x03 \x01(\tR\n" + + "buttonText\x12C\n" + + "\blistType\x18\x04 \x01(\x0e2'.WAWebProtobufsE2E.ListMessage.ListTypeR\blistType\x12B\n" + + "\bsections\x18\x05 \x03(\v2&.WAWebProtobufsE2E.ListMessage.SectionR\bsections\x12X\n" + + "\x0fproductListInfo\x18\x06 \x01(\v2..WAWebProtobufsE2E.ListMessage.ProductListInfoR\x0fproductListInfo\x12\x1e\n" + + "\n" + + "footerText\x18\a \x01(\tR\n" + + "footerText\x12@\n" + + "\vcontextInfo\x18\b \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x1a\xef\x01\n" + + "\x0fProductListInfo\x12W\n" + + "\x0fproductSections\x18\x01 \x03(\v2-.WAWebProtobufsE2E.ListMessage.ProductSectionR\x0fproductSections\x12W\n" + + "\vheaderImage\x18\x02 \x01(\v25.WAWebProtobufsE2E.ListMessage.ProductListHeaderImageR\vheaderImage\x12*\n" + + "\x10businessOwnerJID\x18\x03 \x01(\tR\x10businessOwnerJID\x1a\\\n" + + "\x16ProductListHeaderImage\x12\x1c\n" + + "\tproductID\x18\x01 \x01(\tR\tproductID\x12$\n" + + "\rJPEGThumbnail\x18\x02 \x01(\fR\rJPEGThumbnail\x1aj\n" + + "\x0eProductSection\x12\x14\n" + + "\x05title\x18\x01 \x01(\tR\x05title\x12B\n" + + "\bproducts\x18\x02 \x03(\v2&.WAWebProtobufsE2E.ListMessage.ProductR\bproducts\x1a'\n" + + "\aProduct\x12\x1c\n" + + "\tproductID\x18\x01 \x01(\tR\tproductID\x1aW\n" + + "\aSection\x12\x14\n" + + "\x05title\x18\x01 \x01(\tR\x05title\x126\n" + + "\x04rows\x18\x02 \x03(\v2\".WAWebProtobufsE2E.ListMessage.RowR\x04rows\x1aS\n" + + "\x03Row\x12\x14\n" + + "\x05title\x18\x01 \x01(\tR\x05title\x12 \n" + + "\vdescription\x18\x02 \x01(\tR\vdescription\x12\x14\n" + + "\x05rowID\x18\x03 \x01(\tR\x05rowID\"<\n" + + "\bListType\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\x11\n" + + "\rSINGLE_SELECT\x10\x01\x12\x10\n" + + "\fPRODUCT_LIST\x10\x02\"\xe4\x05\n" + + "\fOrderMessage\x12\x18\n" + + "\aorderID\x18\x01 \x01(\tR\aorderID\x12\x1c\n" + + "\tthumbnail\x18\x02 \x01(\fR\tthumbnail\x12\x1c\n" + + "\titemCount\x18\x03 \x01(\x05R\titemCount\x12C\n" + + "\x06status\x18\x04 \x01(\x0e2+.WAWebProtobufsE2E.OrderMessage.OrderStatusR\x06status\x12F\n" + + "\asurface\x18\x05 \x01(\x0e2,.WAWebProtobufsE2E.OrderMessage.OrderSurfaceR\asurface\x12\x18\n" + + "\amessage\x18\x06 \x01(\tR\amessage\x12\x1e\n" + + "\n" + + "orderTitle\x18\a \x01(\tR\n" + + "orderTitle\x12\x1c\n" + + "\tsellerJID\x18\b \x01(\tR\tsellerJID\x12\x14\n" + + "\x05token\x18\t \x01(\tR\x05token\x12(\n" + + "\x0ftotalAmount1000\x18\n" + + " \x01(\x03R\x0ftotalAmount1000\x12,\n" + + "\x11totalCurrencyCode\x18\v \x01(\tR\x11totalCurrencyCode\x12@\n" + + "\vcontextInfo\x18\x11 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x12&\n" + + "\x0emessageVersion\x18\f \x01(\x05R\x0emessageVersion\x12J\n" + + "\x15orderRequestMessageID\x18\r \x01(\v2\x14.WACommon.MessageKeyR\x15orderRequestMessageID\x12 \n" + + "\vcatalogType\x18\x0f \x01(\tR\vcatalogType\"\x1b\n" + + "\fOrderSurface\x12\v\n" + + "\aCATALOG\x10\x01\"6\n" + + "\vOrderStatus\x12\v\n" + + "\aINQUIRY\x10\x01\x12\f\n" + + "\bACCEPTED\x10\x02\x12\f\n" + + "\bDECLINED\x10\x03\"\xd1\x01\n" + + "\x14PaymentInviteMessage\x12U\n" + + "\vserviceType\x18\x01 \x01(\x0e23.WAWebProtobufsE2E.PaymentInviteMessage.ServiceTypeR\vserviceType\x12(\n" + + "\x0fexpiryTimestamp\x18\x02 \x01(\x03R\x0fexpiryTimestamp\"8\n" + + "\vServiceType\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\t\n" + + "\x05FBPAY\x10\x01\x12\b\n" + + "\x04NOVI\x10\x02\x12\a\n" + + "\x03UPI\x10\x03\"\xe0\r\n" + + "\x17HighlyStructuredMessage\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\x12 \n" + + "\velementName\x18\x02 \x01(\tR\velementName\x12\x16\n" + + "\x06params\x18\x03 \x03(\tR\x06params\x12\x1e\n" + + "\n" + + "fallbackLg\x18\x04 \x01(\tR\n" + + "fallbackLg\x12\x1e\n" + + "\n" + + "fallbackLc\x18\x05 \x01(\tR\n" + + "fallbackLc\x12p\n" + + "\x11localizableParams\x18\x06 \x03(\v2B.WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameterR\x11localizableParams\x12(\n" + + "\x0fdeterministicLg\x18\a \x01(\tR\x0fdeterministicLg\x12(\n" + + "\x0fdeterministicLc\x18\b \x01(\tR\x0fdeterministicLc\x12D\n" + + "\vhydratedHsm\x18\t \x01(\v2\".WAWebProtobufsE2E.TemplateMessageR\vhydratedHsm\x1a\xa0\n" + + "\n" + + "\x17HSMLocalizableParameter\x12l\n" + + "\bcurrency\x18\x02 \x01(\v2N.WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMCurrencyH\x00R\bcurrency\x12l\n" + + "\bdateTime\x18\x03 \x01(\v2N.WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTimeH\x00R\bdateTime\x12\x18\n" + + "\adefault\x18\x01 \x01(\tR\adefault\x1a\xad\a\n" + + "\vHSMDateTime\x12\x83\x01\n" + + "\tcomponent\x18\x01 \x01(\v2c.WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponentH\x00R\tcomponent\x12\x83\x01\n" + + "\tunixEpoch\x18\x02 \x01(\v2c.WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeUnixEpochH\x00R\tunixEpoch\x1a\xca\x04\n" + + "\x14HSMDateTimeComponent\x12\x8f\x01\n" + + "\tdayOfWeek\x18\x01 \x01(\x0e2q.WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.DayOfWeekTypeR\tdayOfWeek\x12\x12\n" + + "\x04year\x18\x02 \x01(\rR\x04year\x12\x14\n" + + "\x05month\x18\x03 \x01(\rR\x05month\x12\x1e\n" + + "\n" + + "dayOfMonth\x18\x04 \x01(\rR\n" + + "dayOfMonth\x12\x12\n" + + "\x04hour\x18\x05 \x01(\rR\x04hour\x12\x16\n" + + "\x06minute\x18\x06 \x01(\rR\x06minute\x12\x8c\x01\n" + + "\bcalendar\x18\a \x01(\x0e2p.WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.CalendarTypeR\bcalendar\".\n" + + "\fCalendarType\x12\r\n" + + "\tGREGORIAN\x10\x01\x12\x0f\n" + + "\vSOLAR_HIJRI\x10\x02\"k\n" + + "\rDayOfWeekType\x12\n" + + "\n" + + "\x06MONDAY\x10\x01\x12\v\n" + + "\aTUESDAY\x10\x02\x12\r\n" + + "\tWEDNESDAY\x10\x03\x12\f\n" + + "\bTHURSDAY\x10\x04\x12\n" + + "\n" + + "\x06FRIDAY\x10\x05\x12\f\n" + + "\bSATURDAY\x10\x06\x12\n" + + "\n" + + "\x06SUNDAY\x10\a\x1a4\n" + + "\x14HSMDateTimeUnixEpoch\x12\x1c\n" + + "\ttimestamp\x18\x01 \x01(\x03R\ttimestampB\x0f\n" + + "\rdatetimeOneof\x1aQ\n" + + "\vHSMCurrency\x12\"\n" + + "\fcurrencyCode\x18\x01 \x01(\tR\fcurrencyCode\x12\x1e\n" + + "\n" + + "amount1000\x18\x02 \x01(\x03R\n" + + "amount1000B\f\n" + + "\n" + + "paramOneof\"\x94\x19\n" + + "'PeerDataOperationRequestResponseMessage\x12s\n" + + "\x1cpeerDataOperationRequestType\x18\x01 \x01(\x0e2/.WAWebProtobufsE2E.PeerDataOperationRequestTypeR\x1cpeerDataOperationRequestType\x12\x1a\n" + + "\bstanzaID\x18\x02 \x01(\tR\bstanzaID\x12\x8c\x01\n" + + "\x17peerDataOperationResult\x18\x03 \x03(\v2R.WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResultR\x17peerDataOperationResult\x1a\xc8\x16\n" + + "\x17PeerDataOperationResult\x12[\n" + + "\x11mediaUploadResult\x18\x01 \x01(\x0e2-.WAMmsRetry.MediaRetryNotification.ResultTypeR\x11mediaUploadResult\x12I\n" + + "\x0estickerMessage\x18\x02 \x01(\v2!.WAWebProtobufsE2E.StickerMessageR\x0estickerMessage\x12\x98\x01\n" + + "\x13linkPreviewResponse\x18\x03 \x01(\v2f.WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponseR\x13linkPreviewResponse\x12\xbf\x01\n" + + " placeholderMessageResendResponse\x18\x04 \x01(\v2s.WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponseR placeholderMessageResendResponse\x12\xb5\x01\n" + + "\x1fwaffleNonceFetchRequestResponse\x18\x05 \x01(\v2k.WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.WaffleNonceFetchResponseR\x1fwaffleNonceFetchRequestResponse\x12\xd1\x01\n" + + "&fullHistorySyncOnDemandRequestResponse\x18\x06 \x01(\v2y.WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.FullHistorySyncOnDemandRequestResponseR&fullHistorySyncOnDemandRequestResponse\x12\xca\x01\n" + + "&companionMetaNonceFetchRequestResponse\x18\a \x01(\v2r.WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.CompanionMetaNonceFetchResponseR&companionMetaNonceFetchRequestResponse\x12\xc5\x01\n" + + "\"syncdSnapshotFatalRecoveryResponse\x18\b \x01(\v2u.WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.SyncDSnapshotFatalRecoveryResponseR\"syncdSnapshotFatalRecoveryResponse\x1ax\n" + + "\"SyncDSnapshotFatalRecoveryResponse\x12.\n" + + "\x12collectionSnapshot\x18\x01 \x01(\fR\x12collectionSnapshot\x12\"\n" + + "\fisCompressed\x18\x02 \x01(\bR\fisCompressed\x1a7\n" + + "\x1fCompanionMetaNonceFetchResponse\x12\x14\n" + + "\x05nonce\x18\x01 \x01(\tR\x05nonce\x1aN\n" + + "\x18WaffleNonceFetchResponse\x12\x14\n" + + "\x05nonce\x18\x01 \x01(\tR\x05nonce\x12\x1c\n" + + "\twaEntFbid\x18\x02 \x01(\tR\twaEntFbid\x1a\xaa\x02\n" + + "&FullHistorySyncOnDemandRequestResponse\x12c\n" + + "\x0frequestMetadata\x18\x01 \x01(\v29.WAWebProtobufsE2E.FullHistorySyncOnDemandRequestMetadataR\x0frequestMetadata\x12\x9a\x01\n" + + "\fresponseCode\x18\x02 \x01(\x0e2v.WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.FullHistorySyncOnDemandResponseCodeR\fresponseCode\x1aT\n" + + " PlaceholderMessageResendResponse\x120\n" + + "\x13webMessageInfoBytes\x18\x01 \x01(\fR\x13webMessageInfoBytes\x1a\xff\x04\n" + + "\x13LinkPreviewResponse\x12\x10\n" + + "\x03URL\x18\x01 \x01(\tR\x03URL\x12\x14\n" + + "\x05title\x18\x02 \x01(\tR\x05title\x12 \n" + + "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x1c\n" + + "\tthumbData\x18\x04 \x01(\fR\tthumbData\x12\x1c\n" + + "\tmatchText\x18\x06 \x01(\tR\tmatchText\x12 \n" + + "\vpreviewType\x18\a \x01(\tR\vpreviewType\x12\xa9\x01\n" + + "\vhqThumbnail\x18\b \x01(\v2\x86\x01.WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnailR\vhqThumbnail\x1a\x93\x02\n" + + "\x1fLinkPreviewHighQualityThumbnail\x12\x1e\n" + + "\n" + + "directPath\x18\x01 \x01(\tR\n" + + "directPath\x12\x1c\n" + + "\tthumbHash\x18\x02 \x01(\tR\tthumbHash\x12\"\n" + + "\fencThumbHash\x18\x03 \x01(\tR\fencThumbHash\x12\x1a\n" + + "\bmediaKey\x18\x04 \x01(\fR\bmediaKey\x120\n" + + "\x13mediaKeyTimestampMS\x18\x05 \x01(\x03R\x13mediaKeyTimestampMS\x12\x1e\n" + + "\n" + + "thumbWidth\x18\x06 \x01(\x05R\n" + + "thumbWidth\x12 \n" + + "\vthumbHeight\x18\a \x01(\x05R\vthumbHeight\"\xfe\x01\n" + + "#FullHistorySyncOnDemandResponseCode\x12\x13\n" + + "\x0fREQUEST_SUCCESS\x10\x00\x12\x18\n" + + "\x14REQUEST_TIME_EXPIRED\x10\x01\x12\x1c\n" + + "\x18DECLINED_SHARING_HISTORY\x10\x02\x12\x11\n" + + "\rGENERIC_ERROR\x10\x03\x12$\n" + + " ERROR_REQUEST_ON_NON_SMB_PRIMARY\x10\x04\x12%\n" + + "!ERROR_HOSTED_DEVICE_NOT_CONNECTED\x10\x05\x12*\n" + + "&ERROR_HOSTED_DEVICE_LOGIN_TIME_NOT_SET\x10\x06\"\x9a\a\n" + + "\x17HistorySyncNotification\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x01 \x01(\fR\n" + + "fileSHA256\x12\x1e\n" + + "\n" + + "fileLength\x18\x02 \x01(\x04R\n" + + "fileLength\x12\x1a\n" + + "\bmediaKey\x18\x03 \x01(\fR\bmediaKey\x12$\n" + + "\rfileEncSHA256\x18\x04 \x01(\fR\rfileEncSHA256\x12\x1e\n" + + "\n" + + "directPath\x18\x05 \x01(\tR\n" + + "directPath\x12V\n" + + "\bsyncType\x18\x06 \x01(\x0e2:.WAWebProtobufsE2E.HistorySyncNotification.HistorySyncTypeR\bsyncType\x12\x1e\n" + + "\n" + + "chunkOrder\x18\a \x01(\rR\n" + + "chunkOrder\x12,\n" + + "\x11originalMessageID\x18\b \x01(\tR\x11originalMessageID\x12\x1a\n" + + "\bprogress\x18\t \x01(\rR\bprogress\x12B\n" + + "\x1coldestMsgInChunkTimestampSec\x18\n" + + " \x01(\x03R\x1coldestMsgInChunkTimestampSec\x12L\n" + + "!initialHistBootstrapInlinePayload\x18\v \x01(\fR!initialHistBootstrapInlinePayload\x12:\n" + + "\x18peerDataRequestSessionID\x18\f \x01(\tR\x18peerDataRequestSessionID\x12\x91\x01\n" + + "&fullHistorySyncOnDemandRequestMetadata\x18\r \x01(\v29.WAWebProtobufsE2E.FullHistorySyncOnDemandRequestMetadataR&fullHistorySyncOnDemandRequestMetadata\x12\x1c\n" + + "\tencHandle\x18\x0e \x01(\tR\tencHandle\"\x9a\x01\n" + + "\x0fHistorySyncType\x12\x15\n" + + "\x11INITIAL_BOOTSTRAP\x10\x00\x12\x15\n" + + "\x11INITIAL_STATUS_V3\x10\x01\x12\b\n" + + "\x04FULL\x10\x02\x12\n" + + "\n" + + "\x06RECENT\x10\x03\x12\r\n" + + "\tPUSH_NAME\x10\x04\x12\x15\n" + + "\x11NON_BLOCKING_DATA\x10\x05\x12\r\n" + + "\tON_DEMAND\x10\x06\x12\x0e\n" + + "\n" + + "NO_HISTORY\x10\a\"\xb4\x01\n" + + "\x1dRequestWelcomeMessageMetadata\x12g\n" + + "\x0elocalChatState\x18\x01 \x01(\x0e2?.WAWebProtobufsE2E.RequestWelcomeMessageMetadata.LocalChatStateR\x0elocalChatState\"*\n" + + "\x0eLocalChatState\x12\t\n" + + "\x05EMPTY\x10\x00\x12\r\n" + + "\tNON_EMPTY\x10\x01\"\xb4\x16\n" + + "\x0fProtocolMessage\x12&\n" + + "\x03key\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x03key\x12;\n" + + "\x04type\x18\x02 \x01(\x0e2'.WAWebProtobufsE2E.ProtocolMessage.TypeR\x04type\x120\n" + + "\x13ephemeralExpiration\x18\x04 \x01(\rR\x13ephemeralExpiration\x12<\n" + + "\x19ephemeralSettingTimestamp\x18\x05 \x01(\x03R\x19ephemeralSettingTimestamp\x12d\n" + + "\x17historySyncNotification\x18\x06 \x01(\v2*.WAWebProtobufsE2E.HistorySyncNotificationR\x17historySyncNotification\x12[\n" + + "\x14appStateSyncKeyShare\x18\a \x01(\v2'.WAWebProtobufsE2E.AppStateSyncKeyShareR\x14appStateSyncKeyShare\x12a\n" + + "\x16appStateSyncKeyRequest\x18\b \x01(\v2).WAWebProtobufsE2E.AppStateSyncKeyRequestR\x16appStateSyncKeyRequest\x12\x91\x01\n" + + "&initialSecurityNotificationSettingSync\x18\t \x01(\v29.WAWebProtobufsE2E.InitialSecurityNotificationSettingSyncR&initialSecurityNotificationSettingSync\x12\x85\x01\n" + + "\"appStateFatalExceptionNotification\x18\n" + + " \x01(\v25.WAWebProtobufsE2E.AppStateFatalExceptionNotificationR\"appStateFatalExceptionNotification\x12O\n" + + "\x10disappearingMode\x18\v \x01(\v2#.WAWebProtobufsE2E.DisappearingModeR\x10disappearingMode\x12@\n" + + "\reditedMessage\x18\x0e \x01(\v2\x1a.WAWebProtobufsE2E.MessageR\reditedMessage\x12 \n" + + "\vtimestampMS\x18\x0f \x01(\x03R\vtimestampMS\x12|\n" + + "\x1fpeerDataOperationRequestMessage\x18\x10 \x01(\v22.WAWebProtobufsE2E.PeerDataOperationRequestMessageR\x1fpeerDataOperationRequestMessage\x12\x94\x01\n" + + "'peerDataOperationRequestResponseMessage\x18\x11 \x01(\v2:.WAWebProtobufsE2E.PeerDataOperationRequestResponseMessageR'peerDataOperationRequestResponseMessage\x12U\n" + + "\x12botFeedbackMessage\x18\x12 \x01(\v2%.WAWebProtobufsE2E.BotFeedbackMessageR\x12botFeedbackMessage\x12\x1e\n" + + "\n" + + "invokerJID\x18\x13 \x01(\tR\n" + + "invokerJID\x12v\n" + + "\x1drequestWelcomeMessageMetadata\x18\x14 \x01(\v20.WAWebProtobufsE2E.RequestWelcomeMessageMetadataR\x1drequestWelcomeMessageMetadata\x12U\n" + + "\x12mediaNotifyMessage\x18\x15 \x01(\v2%.WAWebProtobufsE2E.MediaNotifyMessageR\x12mediaNotifyMessage\x12\x82\x01\n" + + "!cloudApiThreadControlNotification\x18\x16 \x01(\v24.WAWebProtobufsE2E.CloudAPIThreadControlNotificationR!cloudApiThreadControlNotification\x12y\n" + + "\x1elidMigrationMappingSyncMessage\x18\x17 \x01(\v21.WAWebProtobufsE2E.LIDMigrationMappingSyncMessageR\x1elidMigrationMappingSyncMessage\x12:\n" + + "\flimitSharing\x18\x18 \x01(\v2\x16.WACommon.LimitSharingR\flimitSharing\x12$\n" + + "\raiPsiMetadata\x18\x19 \x01(\fR\raiPsiMetadata\x12F\n" + + "\raiQueryFanout\x18\x1a \x01(\v2 .WAWebProtobufsE2E.AIQueryFanoutR\raiQueryFanout\x12@\n" + + "\vmemberLabel\x18\x1b \x01(\v2\x1e.WAWebProtobufsE2E.MemberLabelR\vmemberLabel\"\x8d\x06\n" + + "\x04Type\x12\n" + + "\n" + + "\x06REVOKE\x10\x00\x12\x15\n" + + "\x11EPHEMERAL_SETTING\x10\x03\x12\x1b\n" + + "\x17EPHEMERAL_SYNC_RESPONSE\x10\x04\x12\x1d\n" + + "\x19HISTORY_SYNC_NOTIFICATION\x10\x05\x12\x1c\n" + + "\x18APP_STATE_SYNC_KEY_SHARE\x10\x06\x12\x1e\n" + + "\x1aAPP_STATE_SYNC_KEY_REQUEST\x10\a\x12\x1f\n" + + "\x1bMSG_FANOUT_BACKFILL_REQUEST\x10\b\x12.\n" + + "*INITIAL_SECURITY_NOTIFICATION_SETTING_SYNC\x10\t\x12*\n" + + "&APP_STATE_FATAL_EXCEPTION_NOTIFICATION\x10\n" + + "\x12\x16\n" + + "\x12SHARE_PHONE_NUMBER\x10\v\x12\x10\n" + + "\fMESSAGE_EDIT\x10\x0e\x12'\n" + + "#PEER_DATA_OPERATION_REQUEST_MESSAGE\x10\x10\x120\n" + + ",PEER_DATA_OPERATION_REQUEST_RESPONSE_MESSAGE\x10\x11\x12\x1b\n" + + "\x17REQUEST_WELCOME_MESSAGE\x10\x12\x12\x18\n" + + "\x14BOT_FEEDBACK_MESSAGE\x10\x13\x12\x18\n" + + "\x14MEDIA_NOTIFY_MESSAGE\x10\x14\x12)\n" + + "%CLOUD_API_THREAD_CONTROL_NOTIFICATION\x10\x15\x12\x1e\n" + + "\x1aLID_MIGRATION_MAPPING_SYNC\x10\x16\x12\x14\n" + + "\x10REMINDER_MESSAGE\x10\x17\x12\x1f\n" + + "\x1bBOT_MEMU_ONBOARDING_MESSAGE\x10\x18\x12\x1a\n" + + "\x16STATUS_MENTION_MESSAGE\x10\x19\x12\x1b\n" + + "\x17STOP_GENERATION_MESSAGE\x10\x1a\x12\x11\n" + + "\rLIMIT_SHARING\x10\x1b\x12\x13\n" + + "\x0fAI_PSI_METADATA\x10\x1c\x12\x13\n" + + "\x0fAI_QUERY_FANOUT\x10\x1d\x12\x1d\n" + + "\x19GROUP_MEMBER_LABEL_CHANGE\x10\x1e\"\x85\x05\n" + + "!CloudAPIThreadControlNotification\x12b\n" + + "\x06status\x18\x01 \x01(\x0e2J.WAWebProtobufsE2E.CloudAPIThreadControlNotification.CloudAPIThreadControlR\x06status\x12D\n" + + "\x1dsenderNotificationTimestampMS\x18\x02 \x01(\x03R\x1dsenderNotificationTimestampMS\x12 \n" + + "\vconsumerLid\x18\x03 \x01(\tR\vconsumerLid\x120\n" + + "\x13consumerPhoneNumber\x18\x04 \x01(\tR\x13consumerPhoneNumber\x12\x8f\x01\n" + + "\x13notificationContent\x18\x05 \x01(\v2].WAWebProtobufsE2E.CloudAPIThreadControlNotification.CloudAPIThreadControlNotificationContentR\x13notificationContent\x1a\x82\x01\n" + + "(CloudAPIThreadControlNotificationContent\x128\n" + + "\x17handoffNotificationText\x18\x01 \x01(\tR\x17handoffNotificationText\x12\x1c\n" + + "\textraJSON\x18\x02 \x01(\tR\textraJSON\"K\n" + + "\x15CloudAPIThreadControl\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\x12\n" + + "\x0eCONTROL_PASSED\x10\x01\x12\x11\n" + + "\rCONTROL_TAKEN\x10\x02\"\x83\v\n" + + "\x12BotFeedbackMessage\x124\n" + + "\n" + + "messageKey\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\n" + + "messageKey\x12I\n" + + "\x04kind\x18\x02 \x01(\x0e25.WAWebProtobufsE2E.BotFeedbackMessage.BotFeedbackKindR\x04kind\x12\x12\n" + + "\x04text\x18\x03 \x01(\tR\x04text\x12\"\n" + + "\fkindNegative\x18\x04 \x01(\x04R\fkindNegative\x12\"\n" + + "\fkindPositive\x18\x05 \x01(\x04R\fkindPositive\x12P\n" + + "\n" + + "kindReport\x18\x06 \x01(\x0e20.WAWebProtobufsE2E.BotFeedbackMessage.ReportKindR\n" + + "kindReport\"\x19\n" + + "\n" + + "ReportKind\x12\v\n" + + "\aGENERIC\x10\x00\"M\n" + + "\x1fBotFeedbackKindMultiplePositive\x12*\n" + + "&BOT_FEEDBACK_MULTIPLE_POSITIVE_GENERIC\x10\x01\"\xcb\x03\n" + + "\x1fBotFeedbackKindMultipleNegative\x12*\n" + + "&BOT_FEEDBACK_MULTIPLE_NEGATIVE_GENERIC\x10\x01\x12*\n" + + "&BOT_FEEDBACK_MULTIPLE_NEGATIVE_HELPFUL\x10\x02\x12.\n" + + "*BOT_FEEDBACK_MULTIPLE_NEGATIVE_INTERESTING\x10\x04\x12+\n" + + "'BOT_FEEDBACK_MULTIPLE_NEGATIVE_ACCURATE\x10\b\x12'\n" + + "#BOT_FEEDBACK_MULTIPLE_NEGATIVE_SAFE\x10\x10\x12(\n" + + "$BOT_FEEDBACK_MULTIPLE_NEGATIVE_OTHER\x10 \x12*\n" + + "&BOT_FEEDBACK_MULTIPLE_NEGATIVE_REFUSED\x10@\x12:\n" + + "5BOT_FEEDBACK_MULTIPLE_NEGATIVE_NOT_VISUALLY_APPEALING\x10\x80\x01\x128\n" + + "3BOT_FEEDBACK_MULTIPLE_NEGATIVE_NOT_RELEVANT_TO_TEXT\x10\x80\x02\"\x85\x04\n" + + "\x0fBotFeedbackKind\x12\x19\n" + + "\x15BOT_FEEDBACK_POSITIVE\x10\x00\x12!\n" + + "\x1dBOT_FEEDBACK_NEGATIVE_GENERIC\x10\x01\x12!\n" + + "\x1dBOT_FEEDBACK_NEGATIVE_HELPFUL\x10\x02\x12%\n" + + "!BOT_FEEDBACK_NEGATIVE_INTERESTING\x10\x03\x12\"\n" + + "\x1eBOT_FEEDBACK_NEGATIVE_ACCURATE\x10\x04\x12\x1e\n" + + "\x1aBOT_FEEDBACK_NEGATIVE_SAFE\x10\x05\x12\x1f\n" + + "\x1bBOT_FEEDBACK_NEGATIVE_OTHER\x10\x06\x12!\n" + + "\x1dBOT_FEEDBACK_NEGATIVE_REFUSED\x10\a\x120\n" + + ",BOT_FEEDBACK_NEGATIVE_NOT_VISUALLY_APPEALING\x10\b\x12.\n" + + "*BOT_FEEDBACK_NEGATIVE_NOT_RELEVANT_TO_TEXT\x10\t\x12&\n" + + "\"BOT_FEEDBACK_NEGATIVE_PERSONALIZED\x10\n" + + "\x12!\n" + + "\x1dBOT_FEEDBACK_NEGATIVE_CLARITY\x10\v\x125\n" + + "1BOT_FEEDBACK_NEGATIVE_DOESNT_LOOK_LIKE_THE_PERSON\x10\f\"\xf3\t\n" + + "\fVideoMessage\x12\x10\n" + + "\x03URL\x18\x01 \x01(\tR\x03URL\x12\x1a\n" + + "\bmimetype\x18\x02 \x01(\tR\bmimetype\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x03 \x01(\fR\n" + + "fileSHA256\x12\x1e\n" + + "\n" + + "fileLength\x18\x04 \x01(\x04R\n" + + "fileLength\x12\x18\n" + + "\aseconds\x18\x05 \x01(\rR\aseconds\x12\x1a\n" + + "\bmediaKey\x18\x06 \x01(\fR\bmediaKey\x12\x18\n" + + "\acaption\x18\a \x01(\tR\acaption\x12 \n" + + "\vgifPlayback\x18\b \x01(\bR\vgifPlayback\x12\x16\n" + + "\x06height\x18\t \x01(\rR\x06height\x12\x14\n" + + "\x05width\x18\n" + + " \x01(\rR\x05width\x12$\n" + + "\rfileEncSHA256\x18\v \x01(\fR\rfileEncSHA256\x12`\n" + + "\x16interactiveAnnotations\x18\f \x03(\v2(.WAWebProtobufsE2E.InteractiveAnnotationR\x16interactiveAnnotations\x12\x1e\n" + + "\n" + + "directPath\x18\r \x01(\tR\n" + + "directPath\x12,\n" + + "\x11mediaKeyTimestamp\x18\x0e \x01(\x03R\x11mediaKeyTimestamp\x12$\n" + + "\rJPEGThumbnail\x18\x10 \x01(\fR\rJPEGThumbnail\x12@\n" + + "\vcontextInfo\x18\x11 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x12*\n" + + "\x10streamingSidecar\x18\x12 \x01(\fR\x10streamingSidecar\x12S\n" + + "\x0egifAttribution\x18\x13 \x01(\x0e2+.WAWebProtobufsE2E.VideoMessage.AttributionR\x0egifAttribution\x12\x1a\n" + + "\bviewOnce\x18\x14 \x01(\bR\bviewOnce\x120\n" + + "\x13thumbnailDirectPath\x18\x15 \x01(\tR\x13thumbnailDirectPath\x12(\n" + + "\x0fthumbnailSHA256\x18\x16 \x01(\fR\x0fthumbnailSHA256\x12.\n" + + "\x12thumbnailEncSHA256\x18\x17 \x01(\fR\x12thumbnailEncSHA256\x12\x1c\n" + + "\tstaticURL\x18\x18 \x01(\tR\tstaticURL\x12J\n" + + "\vannotations\x18\x19 \x03(\v2(.WAWebProtobufsE2E.InteractiveAnnotationR\vannotations\x12.\n" + + "\x12accessibilityLabel\x18\x1a \x01(\tR\x12accessibilityLabel\x12K\n" + + "\x0fprocessedVideos\x18\x1b \x03(\v2!.WAWebProtobufsE2E.ProcessedVideoR\x0fprocessedVideos\x12X\n" + + "'externalShareFullVideoDurationInSeconds\x18\x1c \x01(\rR'externalShareFullVideoDurationInSeconds\"-\n" + + "\vAttribution\x12\b\n" + + "\x04NONE\x10\x00\x12\t\n" + + "\x05GIPHY\x10\x01\x12\t\n" + + "\x05TENOR\x10\x02\"\xcc\x0e\n" + + "\x13ExtendedTextMessage\x12\x12\n" + + "\x04text\x18\x01 \x01(\tR\x04text\x12 \n" + + "\vmatchedText\x18\x02 \x01(\tR\vmatchedText\x12 \n" + + "\vdescription\x18\x05 \x01(\tR\vdescription\x12\x14\n" + + "\x05title\x18\x06 \x01(\tR\x05title\x12\x1a\n" + + "\btextArgb\x18\a \x01(\aR\btextArgb\x12&\n" + + "\x0ebackgroundArgb\x18\b \x01(\aR\x0ebackgroundArgb\x12C\n" + + "\x04font\x18\t \x01(\x0e2/.WAWebProtobufsE2E.ExtendedTextMessage.FontTypeR\x04font\x12T\n" + + "\vpreviewType\x18\n" + + " \x01(\x0e22.WAWebProtobufsE2E.ExtendedTextMessage.PreviewTypeR\vpreviewType\x12$\n" + + "\rJPEGThumbnail\x18\x10 \x01(\fR\rJPEGThumbnail\x12@\n" + + "\vcontextInfo\x18\x11 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x12(\n" + + "\x0fdoNotPlayInline\x18\x12 \x01(\bR\x0fdoNotPlayInline\x120\n" + + "\x13thumbnailDirectPath\x18\x13 \x01(\tR\x13thumbnailDirectPath\x12(\n" + + "\x0fthumbnailSHA256\x18\x14 \x01(\fR\x0fthumbnailSHA256\x12.\n" + + "\x12thumbnailEncSHA256\x18\x15 \x01(\fR\x12thumbnailEncSHA256\x12\x1a\n" + + "\bmediaKey\x18\x16 \x01(\fR\bmediaKey\x12,\n" + + "\x11mediaKeyTimestamp\x18\x17 \x01(\x03R\x11mediaKeyTimestamp\x12(\n" + + "\x0fthumbnailHeight\x18\x18 \x01(\rR\x0fthumbnailHeight\x12&\n" + + "\x0ethumbnailWidth\x18\x19 \x01(\rR\x0ethumbnailWidth\x12l\n" + + "\x13inviteLinkGroupType\x18\x1a \x01(\x0e2:.WAWebProtobufsE2E.ExtendedTextMessage.InviteLinkGroupTypeR\x13inviteLinkGroupType\x12F\n" + + "\x1einviteLinkParentGroupSubjectV2\x18\x1b \x01(\tR\x1einviteLinkParentGroupSubjectV2\x12J\n" + + " inviteLinkParentGroupThumbnailV2\x18\x1c \x01(\fR inviteLinkParentGroupThumbnailV2\x12p\n" + + "\x15inviteLinkGroupTypeV2\x18\x1d \x01(\x0e2:.WAWebProtobufsE2E.ExtendedTextMessage.InviteLinkGroupTypeR\x15inviteLinkGroupTypeV2\x12\x1a\n" + + "\bviewOnce\x18\x1e \x01(\bR\bviewOnce\x12 \n" + + "\vvideoHeight\x18\x1f \x01(\rR\vvideoHeight\x12\x1e\n" + + "\n" + + "videoWidth\x18 \x01(\rR\n" + + "videoWidth\x12W\n" + + "\x12faviconMMSMetadata\x18! \x01(\v2'.WAWebProtobufsE2E.MMSThumbnailMetadataR\x12faviconMMSMetadata\x12X\n" + + "\x13linkPreviewMetadata\x18\" \x01(\v2&.WAWebProtobufsE2E.LinkPreviewMetadataR\x13linkPreviewMetadata\x12X\n" + + "\x13paymentLinkMetadata\x18# \x01(\v2&.WAWebProtobufsE2E.PaymentLinkMetadataR\x13paymentLinkMetadata\"H\n" + + "\x13InviteLinkGroupType\x12\v\n" + + "\aDEFAULT\x10\x00\x12\n" + + "\n" + + "\x06PARENT\x10\x01\x12\a\n" + + "\x03SUB\x10\x02\x12\x0f\n" + + "\vDEFAULT_SUB\x10\x03\"^\n" + + "\vPreviewType\x12\b\n" + + "\x04NONE\x10\x00\x12\t\n" + + "\x05VIDEO\x10\x01\x12\x0f\n" + + "\vPLACEHOLDER\x10\x04\x12\t\n" + + "\x05IMAGE\x10\x05\x12\x11\n" + + "\rPAYMENT_LINKS\x10\x06\x12\v\n" + + "\aPROFILE\x10\a\"\xa4\x01\n" + + "\bFontType\x12\n" + + "\n" + + "\x06SYSTEM\x10\x00\x12\x0f\n" + + "\vSYSTEM_TEXT\x10\x01\x12\r\n" + + "\tFB_SCRIPT\x10\x02\x12\x0f\n" + + "\vSYSTEM_BOLD\x10\x06\x12\x19\n" + + "\x15MORNINGBREEZE_REGULAR\x10\a\x12\x15\n" + + "\x11CALISTOGA_REGULAR\x10\b\x12\x12\n" + + "\x0eEXO2_EXTRABOLD\x10\t\x12\x15\n" + + "\x11COURIERPRIME_BOLD\x10\n" + + "\"\xac\x03\n" + + "\x13PaymentLinkMetadata\x12P\n" + + "\x06button\x18\x01 \x01(\v28.WAWebProtobufsE2E.PaymentLinkMetadata.PaymentLinkButtonR\x06button\x12P\n" + + "\x06header\x18\x02 \x01(\v28.WAWebProtobufsE2E.PaymentLinkMetadata.PaymentLinkHeaderR\x06header\x1a\xb9\x01\n" + + "\x11PaymentLinkHeader\x12n\n" + + "\n" + + "headerType\x18\x01 \x01(\x0e2N.WAWebProtobufsE2E.PaymentLinkMetadata.PaymentLinkHeader.PaymentLinkHeaderTypeR\n" + + "headerType\"4\n" + + "\x15PaymentLinkHeaderType\x12\x10\n" + + "\fLINK_PREVIEW\x10\x00\x12\t\n" + + "\x05ORDER\x10\x01\x1a5\n" + + "\x11PaymentLinkButton\x12 \n" + + "\vdisplayText\x18\x01 \x01(\tR\vdisplayText\"\xd1\x02\n" + + "\x19StatusNotificationMessage\x12D\n" + + "\x12responseMessageKey\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x12responseMessageKey\x12D\n" + + "\x12originalMessageKey\x18\x02 \x01(\v2\x14.WACommon.MessageKeyR\x12originalMessageKey\x12W\n" + + "\x04type\x18\x03 \x01(\x0e2C.WAWebProtobufsE2E.StatusNotificationMessage.StatusNotificationTypeR\x04type\"O\n" + + "\x16StatusNotificationType\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\x14\n" + + "\x10STATUS_ADD_YOURS\x10\x01\x12\x12\n" + + "\x0eSTATUS_RESHARE\x10\x02\"\xb8\x04\n" + + "\x0eInvoiceMessage\x12\x12\n" + + "\x04note\x18\x01 \x01(\tR\x04note\x12\x14\n" + + "\x05token\x18\x02 \x01(\tR\x05token\x12X\n" + + "\x0eattachmentType\x18\x03 \x01(\x0e20.WAWebProtobufsE2E.InvoiceMessage.AttachmentTypeR\x0eattachmentType\x12.\n" + + "\x12attachmentMimetype\x18\x04 \x01(\tR\x12attachmentMimetype\x12.\n" + + "\x12attachmentMediaKey\x18\x05 \x01(\fR\x12attachmentMediaKey\x12@\n" + + "\x1battachmentMediaKeyTimestamp\x18\x06 \x01(\x03R\x1battachmentMediaKeyTimestamp\x122\n" + + "\x14attachmentFileSHA256\x18\a \x01(\fR\x14attachmentFileSHA256\x128\n" + + "\x17attachmentFileEncSHA256\x18\b \x01(\fR\x17attachmentFileEncSHA256\x122\n" + + "\x14attachmentDirectPath\x18\t \x01(\tR\x14attachmentDirectPath\x128\n" + + "\x17attachmentJPEGThumbnail\x18\n" + + " \x01(\fR\x17attachmentJPEGThumbnail\"$\n" + + "\x0eAttachmentType\x12\t\n" + + "\x05IMAGE\x10\x00\x12\a\n" + + "\x03PDF\x10\x01\"\xd5\n" + + "\n" + + "\fImageMessage\x12\x10\n" + + "\x03URL\x18\x01 \x01(\tR\x03URL\x12\x1a\n" + + "\bmimetype\x18\x02 \x01(\tR\bmimetype\x12\x18\n" + + "\acaption\x18\x03 \x01(\tR\acaption\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x04 \x01(\fR\n" + + "fileSHA256\x12\x1e\n" + + "\n" + + "fileLength\x18\x05 \x01(\x04R\n" + + "fileLength\x12\x16\n" + + "\x06height\x18\x06 \x01(\rR\x06height\x12\x14\n" + + "\x05width\x18\a \x01(\rR\x05width\x12\x1a\n" + + "\bmediaKey\x18\b \x01(\fR\bmediaKey\x12$\n" + + "\rfileEncSHA256\x18\t \x01(\fR\rfileEncSHA256\x12`\n" + + "\x16interactiveAnnotations\x18\n" + + " \x03(\v2(.WAWebProtobufsE2E.InteractiveAnnotationR\x16interactiveAnnotations\x12\x1e\n" + + "\n" + + "directPath\x18\v \x01(\tR\n" + + "directPath\x12,\n" + + "\x11mediaKeyTimestamp\x18\f \x01(\x03R\x11mediaKeyTimestamp\x12$\n" + + "\rJPEGThumbnail\x18\x10 \x01(\fR\rJPEGThumbnail\x12@\n" + + "\vcontextInfo\x18\x11 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x12*\n" + + "\x10firstScanSidecar\x18\x12 \x01(\fR\x10firstScanSidecar\x12(\n" + + "\x0ffirstScanLength\x18\x13 \x01(\rR\x0ffirstScanLength\x12,\n" + + "\x11experimentGroupID\x18\x14 \x01(\rR\x11experimentGroupID\x12\"\n" + + "\fscansSidecar\x18\x15 \x01(\fR\fscansSidecar\x12 \n" + + "\vscanLengths\x18\x16 \x03(\rR\vscanLengths\x122\n" + + "\x14midQualityFileSHA256\x18\x17 \x01(\fR\x14midQualityFileSHA256\x128\n" + + "\x17midQualityFileEncSHA256\x18\x18 \x01(\fR\x17midQualityFileEncSHA256\x12\x1a\n" + + "\bviewOnce\x18\x19 \x01(\bR\bviewOnce\x120\n" + + "\x13thumbnailDirectPath\x18\x1a \x01(\tR\x13thumbnailDirectPath\x12(\n" + + "\x0fthumbnailSHA256\x18\x1b \x01(\fR\x0fthumbnailSHA256\x12.\n" + + "\x12thumbnailEncSHA256\x18\x1c \x01(\fR\x12thumbnailEncSHA256\x12\x1c\n" + + "\tstaticURL\x18\x1d \x01(\tR\tstaticURL\x12J\n" + + "\vannotations\x18\x1e \x03(\v2(.WAWebProtobufsE2E.InteractiveAnnotationR\vannotations\x12Y\n" + + "\x0fimageSourceType\x18\x1f \x01(\x0e2/.WAWebProtobufsE2E.ImageMessage.ImageSourceTypeR\x0fimageSourceType\x12.\n" + + "\x12accessibilityLabel\x18 \x01(\tR\x12accessibilityLabel\"`\n" + + "\x0fImageSourceType\x12\x0e\n" + + "\n" + + "USER_IMAGE\x10\x00\x12\x10\n" + + "\fAI_GENERATED\x10\x01\x12\x0f\n" + + "\vAI_MODIFIED\x10\x02\x12\x1a\n" + + "\x16RASTERIZED_TEXT_STATUS\x10\x03\"\xaf.\n" + + "\vContextInfo\x12\x1a\n" + + "\bstanzaID\x18\x01 \x01(\tR\bstanzaID\x12 \n" + + "\vparticipant\x18\x02 \x01(\tR\vparticipant\x12@\n" + + "\rquotedMessage\x18\x03 \x01(\v2\x1a.WAWebProtobufsE2E.MessageR\rquotedMessage\x12\x1c\n" + + "\tremoteJID\x18\x04 \x01(\tR\tremoteJID\x12\"\n" + + "\fmentionedJID\x18\x0f \x03(\tR\fmentionedJID\x12*\n" + + "\x10conversionSource\x18\x12 \x01(\tR\x10conversionSource\x12&\n" + + "\x0econversionData\x18\x13 \x01(\fR\x0econversionData\x126\n" + + "\x16conversionDelaySeconds\x18\x14 \x01(\rR\x16conversionDelaySeconds\x12(\n" + + "\x0fforwardingScore\x18\x15 \x01(\rR\x0fforwardingScore\x12 \n" + + "\visForwarded\x18\x16 \x01(\bR\visForwarded\x12F\n" + + "\bquotedAd\x18\x17 \x01(\v2*.WAWebProtobufsE2E.ContextInfo.AdReplyInfoR\bquotedAd\x12<\n" + + "\x0eplaceholderKey\x18\x18 \x01(\v2\x14.WACommon.MessageKeyR\x0eplaceholderKey\x12\x1e\n" + + "\n" + + "expiration\x18\x19 \x01(\rR\n" + + "expiration\x12<\n" + + "\x19ephemeralSettingTimestamp\x18\x1a \x01(\x03R\x19ephemeralSettingTimestamp\x124\n" + + "\x15ephemeralSharedSecret\x18\x1b \x01(\fR\x15ephemeralSharedSecret\x12\\\n" + + "\x0fexternalAdReply\x18\x1c \x01(\v22.WAWebProtobufsE2E.ContextInfo.ExternalAdReplyInfoR\x0fexternalAdReply\x12>\n" + + "\x1aentryPointConversionSource\x18\x1d \x01(\tR\x1aentryPointConversionSource\x128\n" + + "\x17entryPointConversionApp\x18\x1e \x01(\tR\x17entryPointConversionApp\x12J\n" + + " entryPointConversionDelaySeconds\x18\x1f \x01(\rR entryPointConversionDelaySeconds\x12O\n" + + "\x10disappearingMode\x18 \x01(\v2#.WAWebProtobufsE2E.DisappearingModeR\x10disappearingMode\x12=\n" + + "\n" + + "actionLink\x18! \x01(\v2\x1d.WAWebProtobufsE2E.ActionLinkR\n" + + "actionLink\x12\"\n" + + "\fgroupSubject\x18\" \x01(\tR\fgroupSubject\x12&\n" + + "\x0eparentGroupJID\x18# \x01(\tR\x0eparentGroupJID\x12(\n" + + "\x0ftrustBannerType\x18% \x01(\tR\x0ftrustBannerType\x12,\n" + + "\x11trustBannerAction\x18& \x01(\rR\x11trustBannerAction\x12\x1c\n" + + "\tisSampled\x18' \x01(\bR\tisSampled\x12E\n" + + "\rgroupMentions\x18( \x03(\v2\x1f.WAWebProtobufsE2E.GroupMentionR\rgroupMentions\x128\n" + + "\x03utm\x18) \x01(\v2&.WAWebProtobufsE2E.ContextInfo.UTMInfoR\x03utm\x12\x85\x01\n" + + "\x1eforwardedNewsletterMessageInfo\x18+ \x01(\v2=.WAWebProtobufsE2E.ContextInfo.ForwardedNewsletterMessageInfoR\x1eforwardedNewsletterMessageInfo\x12y\n" + + "\x1abusinessMessageForwardInfo\x18, \x01(\v29.WAWebProtobufsE2E.ContextInfo.BusinessMessageForwardInfoR\x1abusinessMessageForwardInfo\x120\n" + + "\x13smbClientCampaignID\x18- \x01(\tR\x13smbClientCampaignID\x120\n" + + "\x13smbServerCampaignID\x18. \x01(\tR\x13smbServerCampaignID\x12a\n" + + "\x12dataSharingContext\x18/ \x01(\v21.WAWebProtobufsE2E.ContextInfo.DataSharingContextR\x12dataSharingContext\x128\n" + + "\x17alwaysShowAdAttribution\x180 \x01(\bR\x17alwaysShowAdAttribution\x12g\n" + + "\x14featureEligibilities\x181 \x01(\v23.WAWebProtobufsE2E.ContextInfo.FeatureEligibilitiesR\x14featureEligibilities\x12N\n" + + "\"entryPointConversionExternalSource\x182 \x01(\tR\"entryPointConversionExternalSource\x12N\n" + + "\"entryPointConversionExternalMedium\x183 \x01(\tR\"entryPointConversionExternalMedium\x12 \n" + + "\vctwaSignals\x186 \x01(\tR\vctwaSignals\x12 \n" + + "\vctwaPayload\x187 \x01(\fR\vctwaPayload\x12v\n" + + "\x19forwardedAiBotMessageInfo\x188 \x01(\v28.WAWebProtobufsE2E.ContextInfo.ForwardedAIBotMessageInfoR\x19forwardedAiBotMessageInfo\x12j\n" + + "\x15statusAttributionType\x189 \x01(\x0e24.WAWebProtobufsE2E.ContextInfo.StatusAttributionTypeR\x15statusAttributionType\x12I\n" + + "\x0eurlTrackingMap\x18: \x01(\v2!.WAWebProtobufsE2E.UrlTrackingMapR\x0eurlTrackingMap\x12X\n" + + "\x0fpairedMediaType\x18; \x01(\x0e2..WAWebProtobufsE2E.ContextInfo.PairedMediaTypeR\x0fpairedMediaType\x12&\n" + + "\x0erankingVersion\x18< \x01(\rR\x0erankingVersion\x12@\n" + + "\vmemberLabel\x18> \x01(\v2\x1e.WAWebProtobufsE2E.MemberLabelR\vmemberLabel\x12\x1e\n" + + "\n" + + "isQuestion\x18? \x01(\bR\n" + + "isQuestion\x12[\n" + + "\x10statusSourceType\x18@ \x01(\x0e2/.WAWebProtobufsE2E.ContextInfo.StatusSourceTypeR\x10statusSourceType\x1a\xee\x02\n" + + "\x1eForwardedNewsletterMessageInfo\x12$\n" + + "\rnewsletterJID\x18\x01 \x01(\tR\rnewsletterJID\x12(\n" + + "\x0fserverMessageID\x18\x02 \x01(\x05R\x0fserverMessageID\x12&\n" + + "\x0enewsletterName\x18\x03 \x01(\tR\x0enewsletterName\x12k\n" + + "\vcontentType\x18\x04 \x01(\x0e2I.WAWebProtobufsE2E.ContextInfo.ForwardedNewsletterMessageInfo.ContentTypeR\vcontentType\x12,\n" + + "\x11accessibilityText\x18\x05 \x01(\tR\x11accessibilityText\"9\n" + + "\vContentType\x12\n" + + "\n" + + "\x06UPDATE\x10\x01\x12\x0f\n" + + "\vUPDATE_CARD\x10\x02\x12\r\n" + + "\tLINK_CARD\x10\x03\x1a\x95\t\n" + + "\x13ExternalAdReplyInfo\x12\x14\n" + + "\x05title\x18\x01 \x01(\tR\x05title\x12\x12\n" + + "\x04body\x18\x02 \x01(\tR\x04body\x12Z\n" + + "\tmediaType\x18\x03 \x01(\x0e2<.WAWebProtobufsE2E.ContextInfo.ExternalAdReplyInfo.MediaTypeR\tmediaType\x12\"\n" + + "\fthumbnailURL\x18\x04 \x01(\tR\fthumbnailURL\x12\x1a\n" + + "\bmediaURL\x18\x05 \x01(\tR\bmediaURL\x12\x1c\n" + + "\tthumbnail\x18\x06 \x01(\fR\tthumbnail\x12\x1e\n" + + "\n" + + "sourceType\x18\a \x01(\tR\n" + + "sourceType\x12\x1a\n" + + "\bsourceID\x18\b \x01(\tR\bsourceID\x12\x1c\n" + + "\tsourceURL\x18\t \x01(\tR\tsourceURL\x12,\n" + + "\x11containsAutoReply\x18\n" + + " \x01(\bR\x11containsAutoReply\x124\n" + + "\x15renderLargerThumbnail\x18\v \x01(\bR\x15renderLargerThumbnail\x12,\n" + + "\x11showAdAttribution\x18\f \x01(\bR\x11showAdAttribution\x12\x1a\n" + + "\bctwaClid\x18\r \x01(\tR\bctwaClid\x12\x10\n" + + "\x03ref\x18\x0e \x01(\tR\x03ref\x120\n" + + "\x13clickToWhatsappCall\x18\x0f \x01(\bR\x13clickToWhatsappCall\x12<\n" + + "\x19adContextPreviewDismissed\x18\x10 \x01(\bR\x19adContextPreviewDismissed\x12\x1c\n" + + "\tsourceApp\x18\x11 \x01(\tR\tsourceApp\x12D\n" + + "\x1dautomatedGreetingMessageShown\x18\x12 \x01(\bR\x1dautomatedGreetingMessageShown\x120\n" + + "\x13greetingMessageBody\x18\x13 \x01(\tR\x13greetingMessageBody\x12\x1e\n" + + "\n" + + "ctaPayload\x18\x14 \x01(\tR\n" + + "ctaPayload\x12\"\n" + + "\fdisableNudge\x18\x15 \x01(\bR\fdisableNudge\x12*\n" + + "\x10originalImageURL\x18\x16 \x01(\tR\x10originalImageURL\x12H\n" + + "\x1fautomatedGreetingMessageCtaType\x18\x17 \x01(\tR\x1fautomatedGreetingMessageCtaType\x12\"\n" + + "\fwtwaAdFormat\x18\x18 \x01(\bR\fwtwaAdFormat\x12Q\n" + + "\x06adType\x18\x19 \x01(\x0e29.WAWebProtobufsE2E.ContextInfo.ExternalAdReplyInfo.AdTypeR\x06adType\"\x1c\n" + + "\x06AdType\x12\b\n" + + "\x04CTWA\x10\x00\x12\b\n" + + "\x04CAWC\x10\x01\"+\n" + + "\tMediaType\x12\b\n" + + "\x04NONE\x10\x00\x12\t\n" + + "\x05IMAGE\x10\x01\x12\t\n" + + "\x05VIDEO\x10\x02\x1a\xf6\x01\n" + + "\vAdReplyInfo\x12&\n" + + "\x0eadvertiserName\x18\x01 \x01(\tR\x0eadvertiserName\x12R\n" + + "\tmediaType\x18\x02 \x01(\x0e24.WAWebProtobufsE2E.ContextInfo.AdReplyInfo.MediaTypeR\tmediaType\x12$\n" + + "\rJPEGThumbnail\x18\x10 \x01(\fR\rJPEGThumbnail\x12\x18\n" + + "\acaption\x18\x11 \x01(\tR\acaption\"+\n" + + "\tMediaType\x12\b\n" + + "\x04NONE\x10\x00\x12\t\n" + + "\x05IMAGE\x10\x01\x12\t\n" + + "\x05VIDEO\x10\x02\x1a\xc2\x01\n" + + "\x14FeatureEligibilities\x12,\n" + + "\x11cannotBeReactedTo\x18\x01 \x01(\bR\x11cannotBeReactedTo\x12&\n" + + "\x0ecannotBeRanked\x18\x02 \x01(\bR\x0ecannotBeRanked\x12.\n" + + "\x12canRequestFeedback\x18\x03 \x01(\bR\x12canRequestFeedback\x12$\n" + + "\rcanBeReshared\x18\x04 \x01(\bR\rcanBeReshared\x1a\xb7\x03\n" + + "\x12DataSharingContext\x12*\n" + + "\x10showMmDisclosure\x18\x01 \x01(\bR\x10showMmDisclosure\x12D\n" + + "\x1dencryptedSignalTokenConsented\x18\x02 \x01(\tR\x1dencryptedSignalTokenConsented\x12\\\n" + + "\n" + + "parameters\x18\x03 \x03(\v2<.WAWebProtobufsE2E.ContextInfo.DataSharingContext.ParametersR\n" + + "parameters\x1a\xd0\x01\n" + + "\n" + + "Parameters\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x1e\n" + + "\n" + + "stringData\x18\x02 \x01(\tR\n" + + "stringData\x12\x18\n" + + "\aintData\x18\x03 \x01(\x03R\aintData\x12\x1c\n" + + "\tfloatData\x18\x04 \x01(\x02R\tfloatData\x12X\n" + + "\bcontents\x18\x05 \x01(\v2<.WAWebProtobufsE2E.ContextInfo.DataSharingContext.ParametersR\bcontents\x1ao\n" + + "\x19ForwardedAIBotMessageInfo\x12\x18\n" + + "\abotName\x18\x01 \x01(\tR\abotName\x12\x16\n" + + "\x06botJID\x18\x02 \x01(\tR\x06botJID\x12 \n" + + "\vcreatorName\x18\x03 \x01(\tR\vcreatorName\x1aI\n" + + "\aUTMInfo\x12\x1c\n" + + "\tutmSource\x18\x01 \x01(\tR\tutmSource\x12 \n" + + "\vutmCampaign\x18\x02 \x01(\tR\vutmCampaign\x1aH\n" + + "\x1aBusinessMessageForwardInfo\x12*\n" + + "\x10businessOwnerJID\x18\x01 \x01(\tR\x10businessOwnerJID\"\\\n" + + "\x10StatusSourceType\x12\t\n" + + "\x05IMAGE\x10\x00\x12\t\n" + + "\x05VIDEO\x10\x01\x12\a\n" + + "\x03GIF\x10\x02\x12\t\n" + + "\x05AUDIO\x10\x03\x12\b\n" + + "\x04TEXT\x10\x04\x12\x14\n" + + "\x10MUSIC_STANDALONE\x10\x05\"y\n" + + "\x0fPairedMediaType\x12\x14\n" + + "\x10NOT_PAIRED_MEDIA\x10\x00\x12\x13\n" + + "\x0fSD_VIDEO_PARENT\x10\x01\x12\x12\n" + + "\x0eHD_VIDEO_CHILD\x10\x02\x12\x13\n" + + "\x0fSD_IMAGE_PARENT\x10\x03\x12\x12\n" + + "\x0eHD_IMAGE_CHILD\x10\x04\"T\n" + + "\x15StatusAttributionType\x12\b\n" + + "\x04NONE\x10\x00\x12\x19\n" + + "\x15RESHARED_FROM_MENTION\x10\x01\x12\x16\n" + + "\x12RESHARED_FROM_POST\x10\x02\"\xde\x06\n" + + "\x11BotPluginMetadata\x12O\n" + + "\bprovider\x18\x01 \x01(\x0e23.WAWebProtobufsE2E.BotPluginMetadata.SearchProviderR\bprovider\x12O\n" + + "\n" + + "pluginType\x18\x02 \x01(\x0e2/.WAWebProtobufsE2E.BotPluginMetadata.PluginTypeR\n" + + "pluginType\x12(\n" + + "\x0fthumbnailCDNURL\x18\x03 \x01(\tR\x0fthumbnailCDNURL\x12.\n" + + "\x12profilePhotoCDNURL\x18\x04 \x01(\tR\x12profilePhotoCDNURL\x12,\n" + + "\x11searchProviderURL\x18\x05 \x01(\tR\x11searchProviderURL\x12&\n" + + "\x0ereferenceIndex\x18\x06 \x01(\rR\x0ereferenceIndex\x12.\n" + + "\x12expectedLinksCount\x18\a \x01(\rR\x12expectedLinksCount\x12 \n" + + "\vsearchQuery\x18\t \x01(\tR\vsearchQuery\x12L\n" + + "\x16parentPluginMessageKey\x18\n" + + " \x01(\v2\x14.WACommon.MessageKeyR\x16parentPluginMessageKey\x12Y\n" + + "\x0fdeprecatedField\x18\v \x01(\x0e2/.WAWebProtobufsE2E.BotPluginMetadata.PluginTypeR\x0fdeprecatedField\x12[\n" + + "\x10parentPluginType\x18\f \x01(\x0e2/.WAWebProtobufsE2E.BotPluginMetadata.PluginTypeR\x10parentPluginType\x12$\n" + + "\rfaviconCDNURL\x18\r \x01(\tR\rfaviconCDNURL\"7\n" + + "\n" + + "PluginType\x12\x12\n" + + "\x0eUNKNOWN_PLUGIN\x10\x00\x12\t\n" + + "\x05REELS\x10\x01\x12\n" + + "\n" + + "\x06SEARCH\x10\x02\"@\n" + + "\x0eSearchProvider\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\b\n" + + "\x04BING\x10\x01\x12\n" + + "\n" + + "\x06GOOGLE\x10\x02\x12\v\n" + + "\aSUPPORT\x10\x03\"\x98\x01\n" + + "\x10BotLinkedAccount\x12L\n" + + "\x04type\x18\x01 \x01(\x0e28.WAWebProtobufsE2E.BotLinkedAccount.BotLinkedAccountTypeR\x04type\"6\n" + + "\x14BotLinkedAccountType\x12\x1e\n" + + "\x1aBOT_LINKED_ACCOUNT_TYPE_1P\x10\x00\"\x99.\n" + + "\x15AIRichResponseMessage\x12d\n" + + "\vmessageType\x18\x01 \x01(\x0e2B.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMessageTypeR\vmessageType\x12c\n" + + "\vsubmessages\x18\x02 \x03(\v2A.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessageR\vsubmessages\x12p\n" + + "\x0funifiedResponse\x18\x03 \x01(\v2F.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseUnifiedResponseR\x0funifiedResponse\x1a\xbe\x05\n" + + "\"AIRichResponseContentItemsMetadata\x12\x93\x01\n" + + "\ritemsMetadata\x18\x01 \x03(\v2m.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.AIRichResponseContentItemMetadataR\ritemsMetadata\x12y\n" + + "\vcontentType\x18\x02 \x01(\x0e2W.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.ContentTypeR\vcontentType\x1a\xc3\x01\n" + + "!AIRichResponseContentItemMetadata\x12\x80\x01\n" + + "\breelItem\x18\x01 \x01(\v2b.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.AIRichResponseReelItemH\x00R\breelItemB\x1b\n" + + "\x19aIRichResponseContentItem\x1a\x96\x01\n" + + "\x16AIRichResponseReelItem\x12\x14\n" + + "\x05title\x18\x01 \x01(\tR\x05title\x12&\n" + + "\x0eprofileIconURL\x18\x02 \x01(\tR\x0eprofileIconURL\x12\"\n" + + "\fthumbnailURL\x18\x03 \x01(\tR\fthumbnailURL\x12\x1a\n" + + "\bvideoURL\x18\x04 \x01(\tR\bvideoURL\"(\n" + + "\vContentType\x12\v\n" + + "\aDEFAULT\x10\x00\x12\f\n" + + "\bCAROUSEL\x10\x01\x1a\xa3\x03\n" + + "\x1dAIRichResponseDynamicMetadata\x12|\n" + + "\x04type\x18\x01 \x01(\x0e2h.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseDynamicMetadata.AIRichResponseDynamicMetadataTypeR\x04type\x12\x18\n" + + "\aversion\x18\x02 \x01(\x04R\aversion\x12\x10\n" + + "\x03URL\x18\x03 \x01(\tR\x03URL\x12\x1c\n" + + "\tloopCount\x18\x04 \x01(\rR\tloopCount\"\xb9\x01\n" + + "!AIRichResponseDynamicMetadataType\x122\n" + + ".AI_RICH_RESPONSE_DYNAMIC_METADATA_TYPE_UNKNOWN\x10\x00\x120\n" + + ",AI_RICH_RESPONSE_DYNAMIC_METADATA_TYPE_IMAGE\x10\x01\x12.\n" + + "*AI_RICH_RESPONSE_DYNAMIC_METADATA_TYPE_GIF\x10\x02\x1a\xb6\x05\n" + + "\x1aAIRichResponseCodeMetadata\x12\"\n" + + "\fcodeLanguage\x18\x01 \x01(\tR\fcodeLanguage\x12{\n" + + "\n" + + "codeBlocks\x18\x02 \x03(\v2[.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata.AIRichResponseCodeBlockR\n" + + "codeBlocks\x1a\xc7\x01\n" + + "\x17AIRichResponseCodeBlock\x12\x89\x01\n" + + "\rhighlightType\x18\x01 \x01(\x0e2c.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata.AIRichResponseCodeHighlightTypeR\rhighlightType\x12 \n" + + "\vcodeContent\x18\x02 \x01(\tR\vcodeContent\"\xac\x02\n" + + "\x1fAIRichResponseCodeHighlightType\x12+\n" + + "'AI_RICH_RESPONSE_CODE_HIGHLIGHT_DEFAULT\x10\x00\x12+\n" + + "'AI_RICH_RESPONSE_CODE_HIGHLIGHT_KEYWORD\x10\x01\x12*\n" + + "&AI_RICH_RESPONSE_CODE_HIGHLIGHT_METHOD\x10\x02\x12*\n" + + "&AI_RICH_RESPONSE_CODE_HIGHLIGHT_STRING\x10\x03\x12*\n" + + "&AI_RICH_RESPONSE_CODE_HIGHLIGHT_NUMBER\x10\x04\x12+\n" + + "'AI_RICH_RESPONSE_CODE_HIGHLIGHT_COMMENT\x10\x05\x1a\x80\x04\n" + + "!AIRichResponseInlineImageMetadata\x12[\n" + + "\bimageURL\x18\x01 \x01(\v2?.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseImageURLR\bimageURL\x12\x1c\n" + + "\timageText\x18\x02 \x01(\tR\timageText\x12\x85\x01\n" + + "\talignment\x18\x03 \x01(\x0e2g.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseInlineImageMetadata.AIRichResponseImageAlignmentR\talignment\x12\x1e\n" + + "\n" + + "tapLinkURL\x18\x04 \x01(\tR\n" + + "tapLinkURL\"\xb7\x01\n" + + "\x1cAIRichResponseImageAlignment\x121\n" + + "-AI_RICH_RESPONSE_IMAGE_LAYOUT_LEADING_ALIGNED\x10\x00\x122\n" + + ".AI_RICH_RESPONSE_IMAGE_LAYOUT_TRAILING_ALIGNED\x10\x01\x120\n" + + ",AI_RICH_RESPONSE_IMAGE_LAYOUT_CENTER_ALIGNED\x10\x02\x1a\xa9\b\n" + + "\x18AIRichResponseSubMessage\x12g\n" + + "\vmessageType\x18\x01 \x01(\x0e2E.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessageTypeR\vmessageType\x12v\n" + + "\x11gridImageMetadata\x18\x02 \x01(\v2H.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseGridImageMetadataR\x11gridImageMetadata\x12 \n" + + "\vmessageText\x18\x03 \x01(\tR\vmessageText\x12p\n" + + "\rimageMetadata\x18\x04 \x01(\v2J.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseInlineImageMetadataR\rimageMetadata\x12g\n" + + "\fcodeMetadata\x18\x05 \x01(\v2C.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadataR\fcodeMetadata\x12j\n" + + "\rtableMetadata\x18\x06 \x01(\v2D.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseTableMetadataR\rtableMetadata\x12p\n" + + "\x0fdynamicMetadata\x18\a \x01(\v2F.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseDynamicMetadataR\x0fdynamicMetadata\x12j\n" + + "\rlatexMetadata\x18\b \x01(\v2D.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseLatexMetadataR\rlatexMetadata\x12d\n" + + "\vmapMetadata\x18\t \x01(\v2B.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMapMetadataR\vmapMetadata\x12\x7f\n" + + "\x14contentItemsMetadata\x18\n" + + " \x01(\v2K.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadataR\x14contentItemsMetadata\x1a\x92\x04\n" + + "\x19AIRichResponseMapMetadata\x12&\n" + + "\x0ecenterLatitude\x18\x01 \x01(\x01R\x0ecenterLatitude\x12(\n" + + "\x0fcenterLongitude\x18\x02 \x01(\x01R\x0fcenterLongitude\x12$\n" + + "\rlatitudeDelta\x18\x03 \x01(\x01R\rlatitudeDelta\x12&\n" + + "\x0elongitudeDelta\x18\x04 \x01(\x01R\x0elongitudeDelta\x12\x80\x01\n" + + "\vannotations\x18\x05 \x03(\v2^.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMapMetadata.AIRichResponseMapAnnotationR\vannotations\x12\"\n" + + "\fshowInfoList\x18\x06 \x01(\bR\fshowInfoList\x1a\xad\x01\n" + + "\x1bAIRichResponseMapAnnotation\x12*\n" + + "\x10annotationNumber\x18\x01 \x01(\rR\x10annotationNumber\x12\x1a\n" + + "\blatitude\x18\x02 \x01(\x01R\blatitude\x12\x1c\n" + + "\tlongitude\x18\x03 \x01(\x01R\tlongitude\x12\x14\n" + + "\x05title\x18\x04 \x01(\tR\x05title\x12\x12\n" + + "\x04body\x18\x05 \x01(\tR\x04body\x1a\xa4\x04\n" + + "\x1bAIRichResponseLatexMetadata\x12\x12\n" + + "\x04text\x18\x01 \x01(\tR\x04text\x12\x84\x01\n" + + "\vexpressions\x18\x02 \x03(\v2b.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseLatexMetadata.AIRichResponseLatexExpressionR\vexpressions\x1a\xe9\x02\n" + + "\x1dAIRichResponseLatexExpression\x12(\n" + + "\x0flatexExpression\x18\x01 \x01(\tR\x0flatexExpression\x12\x10\n" + + "\x03URL\x18\x02 \x01(\tR\x03URL\x12\x14\n" + + "\x05width\x18\x03 \x01(\x01R\x05width\x12\x16\n" + + "\x06height\x18\x04 \x01(\x01R\x06height\x12\x1e\n" + + "\n" + + "fontHeight\x18\x05 \x01(\x01R\n" + + "fontHeight\x12(\n" + + "\x0fimageTopPadding\x18\x06 \x01(\x01R\x0fimageTopPadding\x120\n" + + "\x13imageLeadingPadding\x18\a \x01(\x01R\x13imageLeadingPadding\x12.\n" + + "\x12imageBottomPadding\x18\b \x01(\x01R\x12imageBottomPadding\x122\n" + + "\x14imageTrailingPadding\x18\t \x01(\x01R\x14imageTrailingPadding\x1a3\n" + + "\x1dAIRichResponseUnifiedResponse\x12\x12\n" + + "\x04data\x18\x01 \x01(\fR\x04data\x1a\xdc\x01\n" + + "\x1bAIRichResponseTableMetadata\x12o\n" + + "\x04rows\x18\x01 \x03(\v2[.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseTableMetadata.AIRichResponseTableRowR\x04rows\x1aL\n" + + "\x16AIRichResponseTableRow\x12\x14\n" + + "\x05items\x18\x01 \x03(\tR\x05items\x12\x1c\n" + + "\tisHeading\x18\x02 \x01(\bR\tisHeading\x1a\xe5\x01\n" + + "\x1fAIRichResponseGridImageMetadata\x12c\n" + + "\fgridImageURL\x18\x01 \x01(\v2?.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseImageURLR\fgridImageURL\x12]\n" + + "\timageURLs\x18\x02 \x03(\v2?.WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseImageURLR\timageURLs\x1a\x8a\x01\n" + + "\x16AIRichResponseImageURL\x12(\n" + + "\x0fimagePreviewURL\x18\x01 \x01(\tR\x0fimagePreviewURL\x12(\n" + + "\x0fimageHighResURL\x18\x02 \x01(\tR\x0fimageHighResURL\x12\x1c\n" + + "\tsourceURL\x18\x03 \x01(\tR\tsourceURL\"\xca\x02\n" + + "\x1cAIRichResponseSubMessageType\x12\x1c\n" + + "\x18AI_RICH_RESPONSE_UNKNOWN\x10\x00\x12\x1f\n" + + "\x1bAI_RICH_RESPONSE_GRID_IMAGE\x10\x01\x12\x19\n" + + "\x15AI_RICH_RESPONSE_TEXT\x10\x02\x12!\n" + + "\x1dAI_RICH_RESPONSE_INLINE_IMAGE\x10\x03\x12\x1a\n" + + "\x16AI_RICH_RESPONSE_TABLE\x10\x04\x12\x19\n" + + "\x15AI_RICH_RESPONSE_CODE\x10\x05\x12\x1c\n" + + "\x18AI_RICH_RESPONSE_DYNAMIC\x10\x06\x12\x18\n" + + "\x14AI_RICH_RESPONSE_MAP\x10\a\x12\x1a\n" + + "\x16AI_RICH_RESPONSE_LATEX\x10\b\x12\"\n" + + "\x1eAI_RICH_RESPONSE_CONTENT_ITEMS\x10\t\"b\n" + + "\x19AIRichResponseMessageType\x12!\n" + + "\x1dAI_RICH_RESPONSE_TYPE_UNKNOWN\x10\x00\x12\"\n" + + "\x1eAI_RICH_RESPONSE_TYPE_STANDARD\x10\x01\"\xd5\x01\n" + + "\x1bBotPromotionMessageMetadata\x12e\n" + + "\rpromotionType\x18\x01 \x01(\x0e2?.WAWebProtobufsE2E.BotPromotionMessageMetadata.BotPromotionTypeR\rpromotionType\x12 \n" + + "\vbuttonTitle\x18\x02 \x01(\tR\vbuttonTitle\"-\n" + + "\x10BotPromotionType\x12\x10\n" + + "\fUNKNOWN_TYPE\x10\x00\x12\a\n" + + "\x03C50\x10\x01\"\xf1\x02\n" + + "\x10BotMediaMetadata\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x01 \x01(\tR\n" + + "fileSHA256\x12\x1a\n" + + "\bmediaKey\x18\x02 \x01(\tR\bmediaKey\x12$\n" + + "\rfileEncSHA256\x18\x03 \x01(\tR\rfileEncSHA256\x12\x1e\n" + + "\n" + + "directPath\x18\x04 \x01(\tR\n" + + "directPath\x12,\n" + + "\x11mediaKeyTimestamp\x18\x05 \x01(\x03R\x11mediaKeyTimestamp\x12\x1a\n" + + "\bmimetype\x18\x06 \x01(\tR\bmimetype\x12]\n" + + "\x0forientationType\x18\a \x01(\x0e23.WAWebProtobufsE2E.BotMediaMetadata.OrientationTypeR\x0forientationType\"2\n" + + "\x0fOrientationType\x12\n" + + "\n" + + "\x06CENTER\x10\x01\x12\b\n" + + "\x04LEFT\x10\x02\x12\t\n" + + "\x05RIGHT\x10\x03\"\xdb\x03\n" + + "\x13BotReminderMetadata\x12B\n" + + "\x11requestMessageKey\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x11requestMessageKey\x12M\n" + + "\x06action\x18\x02 \x01(\x0e25.WAWebProtobufsE2E.BotReminderMetadata.ReminderActionR\x06action\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x122\n" + + "\x14nextTriggerTimestamp\x18\x04 \x01(\x04R\x14nextTriggerTimestamp\x12V\n" + + "\tfrequency\x18\x05 \x01(\x0e28.WAWebProtobufsE2E.BotReminderMetadata.ReminderFrequencyR\tfrequency\"O\n" + + "\x11ReminderFrequency\x12\b\n" + + "\x04ONCE\x10\x01\x12\t\n" + + "\x05DAILY\x10\x02\x12\n" + + "\n" + + "\x06WEEKLY\x10\x03\x12\f\n" + + "\bBIWEEKLY\x10\x04\x12\v\n" + + "\aMONTHLY\x10\x05\"@\n" + + "\x0eReminderAction\x12\n" + + "\n" + + "\x06NOTIFY\x10\x01\x12\n" + + "\n" + + "\x06CREATE\x10\x02\x12\n" + + "\n" + + "\x06DELETE\x10\x03\x12\n" + + "\n" + + "\x06UPDATE\x10\x04\"\xdf\x02\n" + + "\x10BotModelMetadata\x12K\n" + + "\tmodelType\x18\x01 \x01(\x0e2-.WAWebProtobufsE2E.BotModelMetadata.ModelTypeR\tmodelType\x12f\n" + + "\x12premiumModelStatus\x18\x02 \x01(\x0e26.WAWebProtobufsE2E.BotModelMetadata.PremiumModelStatusR\x12premiumModelStatus\"O\n" + + "\x12PremiumModelStatus\x12\x12\n" + + "\x0eUNKNOWN_STATUS\x10\x00\x12\r\n" + + "\tAVAILABLE\x10\x01\x12\x16\n" + + "\x12QUOTA_EXCEED_LIMIT\x10\x02\"E\n" + + "\tModelType\x12\x10\n" + + "\fUNKNOWN_TYPE\x10\x00\x12\x0e\n" + + "\n" + + "LLAMA_PROD\x10\x01\x12\x16\n" + + "\x12LLAMA_PROD_PREMIUM\x10\x02\"\xe8\r\n" + + "\x1cBotProgressIndicatorMetadata\x120\n" + + "\x13progressDescription\x18\x01 \x01(\tR\x13progressDescription\x12m\n" + + "\rstepsMetadata\x18\x02 \x03(\v2G.WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadataR\rstepsMetadata\x1a\xa6\f\n" + + "\x17BotPlanningStepMetadata\x12 \n" + + "\vstatusTitle\x18\x01 \x01(\tR\vstatusTitle\x12\x1e\n" + + "\n" + + "statusBody\x18\x02 \x01(\tR\n" + + "statusBody\x12\x92\x01\n" + + "\x0fsourcesMetadata\x18\x03 \x03(\v2h.WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourcesMetadataR\x0fsourcesMetadata\x12r\n" + + "\x06status\x18\x04 \x01(\x0e2Z.WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.PlanningStepStatusR\x06status\x12 \n" + + "\visReasoning\x18\x05 \x01(\bR\visReasoning\x12*\n" + + "\x10isEnhancedSearch\x18\x06 \x01(\bR\x10isEnhancedSearch\x12\x82\x01\n" + + "\bsections\x18\a \x03(\v2f.WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningStepSectionMetadataR\bsections\x1a\xdb\x02\n" + + " BotPlanningSearchSourcesMetadata\x12 \n" + + "\vsourceTitle\x18\x01 \x01(\tR\vsourceTitle\x12\xa5\x01\n" + + "\bprovider\x18\x02 \x01(\x0e2\x88\x01.WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourcesMetadata.BotPlanningSearchSourceProviderR\bprovider\x12\x1c\n" + + "\tsourceURL\x18\x03 \x01(\tR\tsourceURL\"O\n" + + "\x1fBotPlanningSearchSourceProvider\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\t\n" + + "\x05OTHER\x10\x01\x12\n" + + "\n" + + "\x06GOOGLE\x10\x02\x12\b\n" + + "\x04BING\x10\x03\x1a\xfa\x01\n" + + "\x1eBotPlanningStepSectionMetadata\x12\"\n" + + "\fsectionTitle\x18\x01 \x01(\tR\fsectionTitle\x12 \n" + + "\vsectionBody\x18\x02 \x01(\tR\vsectionBody\x12\x91\x01\n" + + "\x0fsourcesMetadata\x18\x03 \x03(\v2g.WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourceMetadataR\x0fsourcesMetadata\x1a\xf2\x01\n" + + "\x1fBotPlanningSearchSourceMetadata\x12\x14\n" + + "\x05title\x18\x01 \x01(\tR\x05title\x12{\n" + + "\bprovider\x18\x02 \x01(\x0e2_.WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotSearchSourceProviderR\bprovider\x12\x1c\n" + + "\tsourceURL\x18\x03 \x01(\tR\tsourceURL\x12\x1e\n" + + "\n" + + "favIconURL\x18\x04 \x01(\tR\n" + + "favIconURL\"P\n" + + "\x17BotSearchSourceProvider\x12\x14\n" + + "\x10UNKNOWN_PROVIDER\x10\x00\x12\t\n" + + "\x05OTHER\x10\x01\x12\n" + + "\n" + + "\x06GOOGLE\x10\x02\x12\b\n" + + "\x04BING\x10\x03\"K\n" + + "\x12PlanningStepStatus\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\v\n" + + "\aPLANNED\x10\x01\x12\r\n" + + "\tEXECUTING\x10\x02\x12\f\n" + + "\bFINISHED\x10\x03\"\xcb\t\n" + + "\x15BotCapabilityMetadata\x12^\n" + + "\fcapabilities\x18\x01 \x03(\x0e2:.WAWebProtobufsE2E.BotCapabilityMetadata.BotCapabilityTypeR\fcapabilities\"\xd1\b\n" + + "\x11BotCapabilityType\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\x16\n" + + "\x12PROGRESS_INDICATOR\x10\x01\x12\x19\n" + + "\x15RICH_RESPONSE_HEADING\x10\x02\x12\x1d\n" + + "\x19RICH_RESPONSE_NESTED_LIST\x10\x03\x12\r\n" + + "\tAI_MEMORY\x10\x04\x12 \n" + + "\x1cRICH_RESPONSE_THREAD_SURFING\x10\x05\x12\x17\n" + + "\x13RICH_RESPONSE_TABLE\x10\x06\x12\x16\n" + + "\x12RICH_RESPONSE_CODE\x10\a\x12%\n" + + "!RICH_RESPONSE_STRUCTURED_RESPONSE\x10\b\x12\x1e\n" + + "\x1aRICH_RESPONSE_INLINE_IMAGE\x10\t\x12#\n" + + "\x1fWA_IG_1P_PLUGIN_RANKING_CONTROL\x10\n" + + "\x12$\n" + + " WA_IG_1P_PLUGIN_RANKING_UPDATE_1\x10\v\x12$\n" + + " WA_IG_1P_PLUGIN_RANKING_UPDATE_2\x10\f\x12$\n" + + " WA_IG_1P_PLUGIN_RANKING_UPDATE_3\x10\r\x12$\n" + + " WA_IG_1P_PLUGIN_RANKING_UPDATE_4\x10\x0e\x12$\n" + + " WA_IG_1P_PLUGIN_RANKING_UPDATE_5\x10\x0f\x12$\n" + + " WA_IG_1P_PLUGIN_RANKING_UPDATE_6\x10\x10\x12$\n" + + " WA_IG_1P_PLUGIN_RANKING_UPDATE_7\x10\x11\x12$\n" + + " WA_IG_1P_PLUGIN_RANKING_UPDATE_8\x10\x12\x12$\n" + + " WA_IG_1P_PLUGIN_RANKING_UPDATE_9\x10\x13\x12%\n" + + "!WA_IG_1P_PLUGIN_RANKING_UPDATE_10\x10\x14\x12\x1d\n" + + "\x19RICH_RESPONSE_SUB_HEADING\x10\x15\x12\x1c\n" + + "\x18RICH_RESPONSE_GRID_IMAGE\x10\x16\x12\x18\n" + + "\x14AI_STUDIO_UGC_MEMORY\x10\x17\x12\x17\n" + + "\x13RICH_RESPONSE_LATEX\x10\x18\x12\x16\n" + + "\x12RICH_RESPONSE_MAPS\x10\x19\x12\x1e\n" + + "\x1aRICH_RESPONSE_INLINE_REELS\x10\x1a\x12\x14\n" + + "\x10AGENTIC_PLANNING\x10\x1b\x12\x13\n" + + "\x0fACCOUNT_LINKING\x10\x1c\x12\x1c\n" + + "\x18STREAMING_DISAGGREGATION\x10\x1d\x12\x1f\n" + + "\x1bRICH_RESPONSE_GRID_IMAGE_3P\x10\x1e\x12\x1e\n" + + "\x1aRICH_RESPONSE_LATEX_INLINE\x10\x1f\x12\x0e\n" + + "\n" + + "QUERY_PLAN\x10 \x12\x15\n" + + "\x11PROACTIVE_MESSAGE\x10!\x12\"\n" + + "\x1eRICH_RESPONSE_UNIFIED_RESPONSE\x10\"\x12\x15\n" + + "\x11PROMOTION_MESSAGE\x10#\"\xae\x01\n" + + "\x18BotModeSelectionMetadata\x12T\n" + + "\x04mode\x18\x01 \x03(\x0e2@.WAWebProtobufsE2E.BotModeSelectionMetadata.BotUserSelectionModeR\x04mode\"<\n" + + "\x14BotUserSelectionMode\x12\x10\n" + + "\fUNKNOWN_MODE\x10\x00\x12\x12\n" + + "\x0eREASONING_MODE\x10\x01\"\xab\x03\n" + + "\x10BotQuotaMetadata\x12u\n" + + "\x17botFeatureQuotaMetadata\x18\x01 \x03(\v2;.WAWebProtobufsE2E.BotQuotaMetadata.BotFeatureQuotaMetadataR\x17botFeatureQuotaMetadata\x1a\x9f\x02\n" + + "\x17BotFeatureQuotaMetadata\x12l\n" + + "\vfeatureType\x18\x01 \x01(\x0e2J.WAWebProtobufsE2E.BotQuotaMetadata.BotFeatureQuotaMetadata.BotFeatureTypeR\vfeatureType\x12&\n" + + "\x0eremainingQuota\x18\x02 \x01(\rR\x0eremainingQuota\x120\n" + + "\x13expirationTimestamp\x18\x03 \x01(\x04R\x13expirationTimestamp\"<\n" + + "\x0eBotFeatureType\x12\x13\n" + + "\x0fUNKNOWN_FEATURE\x10\x00\x12\x15\n" + + "\x11REASONING_FEATURE\x10\x01\"\xb1\x01\n" + + "\x12BotImagineMetadata\x12S\n" + + "\vimagineType\x18\x01 \x01(\x0e21.WAWebProtobufsE2E.BotImagineMetadata.ImagineTypeR\vimagineType\"F\n" + + "\vImagineType\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\v\n" + + "\aIMAGINE\x10\x01\x12\b\n" + + "\x04MEMU\x10\x02\x12\t\n" + + "\x05FLASH\x10\x03\x12\b\n" + + "\x04EDIT\x10\x04\"\xdf\x03\n" + + "\x12BotSourcesMetadata\x12M\n" + + "\asources\x18\x01 \x03(\v23.WAWebProtobufsE2E.BotSourcesMetadata.BotSourceItemR\asources\x1a\xf9\x02\n" + + "\rBotSourceItem\x12^\n" + + "\bprovider\x18\x01 \x01(\x0e2B.WAWebProtobufsE2E.BotSourcesMetadata.BotSourceItem.SourceProviderR\bprovider\x12(\n" + + "\x0fthumbnailCDNURL\x18\x02 \x01(\tR\x0fthumbnailCDNURL\x12,\n" + + "\x11sourceProviderURL\x18\x03 \x01(\tR\x11sourceProviderURL\x12 \n" + + "\vsourceQuery\x18\x04 \x01(\tR\vsourceQuery\x12$\n" + + "\rfaviconCDNURL\x18\x05 \x01(\tR\rfaviconCDNURL\x12&\n" + + "\x0ecitationNumber\x18\x06 \x01(\rR\x0ecitationNumber\"@\n" + + "\x0eSourceProvider\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\b\n" + + "\x04BING\x10\x01\x12\n" + + "\n" + + "\x06GOOGLE\x10\x02\x12\v\n" + + "\aSUPPORT\x10\x03\"\xad\x04\n" + + "\x12MessageAssociation\x12_\n" + + "\x0fassociationType\x18\x01 \x01(\x0e25.WAWebProtobufsE2E.MessageAssociation.AssociationTypeR\x0fassociationType\x12@\n" + + "\x10parentMessageKey\x18\x02 \x01(\v2\x14.WACommon.MessageKeyR\x10parentMessageKey\x12\"\n" + + "\fmessageIndex\x18\x03 \x01(\x05R\fmessageIndex\"\xcf\x02\n" + + "\x0fAssociationType\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\x0f\n" + + "\vMEDIA_ALBUM\x10\x01\x12\x0e\n" + + "\n" + + "BOT_PLUGIN\x10\x02\x12\x15\n" + + "\x11EVENT_COVER_IMAGE\x10\x03\x12\x0f\n" + + "\vSTATUS_POLL\x10\x04\x12\x18\n" + + "\x14HD_VIDEO_DUAL_UPLOAD\x10\x05\x12\x1b\n" + + "\x17STATUS_EXTERNAL_RESHARE\x10\x06\x12\x0e\n" + + "\n" + + "MEDIA_POLL\x10\a\x12\x14\n" + + "\x10STATUS_ADD_YOURS\x10\b\x12\x17\n" + + "\x13STATUS_NOTIFICATION\x10\t\x12\x18\n" + + "\x14HD_IMAGE_DUAL_UPLOAD\x10\n" + + "\x12\x16\n" + + "\x12STICKER_ANNOTATION\x10\v\x12\x10\n" + + "\fMOTION_PHOTO\x10\f\x12\x16\n" + + "\x12STATUS_LINK_ACTION\x10\r\x12\x14\n" + + "\x10VIEW_ALL_REPLIES\x10\x0e\"\xb3\a\n" + + "\x12MessageContextInfo\x12U\n" + + "\x12deviceListMetadata\x18\x01 \x01(\v2%.WAWebProtobufsE2E.DeviceListMetadataR\x12deviceListMetadata\x12<\n" + + "\x19deviceListMetadataVersion\x18\x02 \x01(\x05R\x19deviceListMetadataVersion\x12$\n" + + "\rmessageSecret\x18\x03 \x01(\fR\rmessageSecret\x12\"\n" + + "\fpaddingBytes\x18\x04 \x01(\fR\fpaddingBytes\x12>\n" + + "\x1amessageAddOnDurationInSecs\x18\x05 \x01(\rR\x1amessageAddOnDurationInSecs\x12*\n" + + "\x10botMessageSecret\x18\x06 \x01(\fR\x10botMessageSecret\x12@\n" + + "\vbotMetadata\x18\a \x01(\v2\x1e.WAWebProtobufsE2E.BotMetadataR\vbotMetadata\x124\n" + + "\x15reportingTokenVersion\x18\b \x01(\x05R\x15reportingTokenVersion\x12t\n" + + "\x16messageAddOnExpiryType\x18\t \x01(\x0e2<.WAWebProtobufsE2E.MessageContextInfo.MessageAddonExpiryTypeR\x16messageAddOnExpiryType\x12U\n" + + "\x12messageAssociation\x18\n" + + " \x01(\v2%.WAWebProtobufsE2E.MessageAssociationR\x12messageAssociation\x12*\n" + + "\x10capiCreatedGroup\x18\v \x01(\bR\x10capiCreatedGroup\x12&\n" + + "\x0esupportPayload\x18\f \x01(\tR\x0esupportPayload\x12:\n" + + "\flimitSharing\x18\r \x01(\v2\x16.WACommon.LimitSharingR\flimitSharing\x12>\n" + + "\x0elimitSharingV2\x18\x0e \x01(\v2\x16.WACommon.LimitSharingR\x0elimitSharingV2\"=\n" + + "\x16MessageAddonExpiryType\x12\n" + + "\n" + + "\x06STATIC\x10\x01\x12\x17\n" + + "\x13DEPENDENT_ON_PARENT\x10\x02\"\xc0\x05\n" + + "\x15InteractiveAnnotation\x129\n" + + "\blocation\x18\x02 \x01(\v2\x1b.WAWebProtobufsE2E.LocationH\x00R\blocation\x12_\n" + + "\n" + + "newsletter\x18\x03 \x01(\v2=.WAWebProtobufsE2E.ContextInfo.ForwardedNewsletterMessageInfoH\x00R\n" + + "newsletter\x12(\n" + + "\x0eembeddedAction\x18\x06 \x01(\bH\x00R\x0eembeddedAction\x12@\n" + + "\ttapAction\x18\a \x01(\v2 .WAWebProtobufsE2E.TapLinkActionH\x00R\ttapAction\x12B\n" + + "\x0fpolygonVertices\x18\x01 \x03(\v2\x18.WAWebProtobufsE2E.PointR\x0fpolygonVertices\x126\n" + + "\x16shouldSkipConfirmation\x18\x04 \x01(\bR\x16shouldSkipConfirmation\x12L\n" + + "\x0fembeddedContent\x18\x05 \x01(\v2\".WAWebProtobufsE2E.EmbeddedContentR\x0fembeddedContent\x12_\n" + + "\x0estatusLinkType\x18\b \x01(\x0e27.WAWebProtobufsE2E.InteractiveAnnotation.StatusLinkTypeR\x0estatusLinkType\"j\n" + + "\x0eStatusLinkType\x12\x1b\n" + + "\x17RASTERIZED_LINK_PREVIEW\x10\x01\x12\x1d\n" + + "\x19RASTERIZED_LINK_TRUNCATED\x10\x02\x12\x1c\n" + + "\x18RASTERIZED_LINK_FULL_URL\x10\x03B\b\n" + + "\x06action\"\xd3\x06\n" + + "\x16HydratedTemplateButton\x12p\n" + + "\x10quickReplyButton\x18\x01 \x01(\v2B.WAWebProtobufsE2E.HydratedTemplateButton.HydratedQuickReplyButtonH\x00R\x10quickReplyButton\x12[\n" + + "\turlButton\x18\x02 \x01(\v2;.WAWebProtobufsE2E.HydratedTemplateButton.HydratedURLButtonH\x00R\turlButton\x12^\n" + + "\n" + + "callButton\x18\x03 \x01(\v2<.WAWebProtobufsE2E.HydratedTemplateButton.HydratedCallButtonH\x00R\n" + + "callButton\x12\x14\n" + + "\x05index\x18\x04 \x01(\rR\x05index\x1a\xb9\x02\n" + + "\x11HydratedURLButton\x12 \n" + + "\vdisplayText\x18\x01 \x01(\tR\vdisplayText\x12\x10\n" + + "\x03URL\x18\x02 \x01(\tR\x03URL\x12,\n" + + "\x11consentedUsersURL\x18\x03 \x01(\tR\x11consentedUsersURL\x12\x85\x01\n" + + "\x13webviewPresentation\x18\x04 \x01(\x0e2S.WAWebProtobufsE2E.HydratedTemplateButton.HydratedURLButton.WebviewPresentationTypeR\x13webviewPresentation\":\n" + + "\x17WebviewPresentationType\x12\b\n" + + "\x04FULL\x10\x01\x12\b\n" + + "\x04TALL\x10\x02\x12\v\n" + + "\aCOMPACT\x10\x03\x1aX\n" + + "\x12HydratedCallButton\x12 \n" + + "\vdisplayText\x18\x01 \x01(\tR\vdisplayText\x12 \n" + + "\vphoneNumber\x18\x02 \x01(\tR\vphoneNumber\x1aL\n" + + "\x18HydratedQuickReplyButton\x12 \n" + + "\vdisplayText\x18\x01 \x01(\tR\vdisplayText\x12\x0e\n" + + "\x02ID\x18\x02 \x01(\tR\x02IDB\x10\n" + + "\x0ehydratedButton\"\xe2\x04\n" + + "\x11PaymentBackground\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\tR\x02ID\x12\x1e\n" + + "\n" + + "fileLength\x18\x02 \x01(\x04R\n" + + "fileLength\x12\x14\n" + + "\x05width\x18\x03 \x01(\rR\x05width\x12\x16\n" + + "\x06height\x18\x04 \x01(\rR\x06height\x12\x1a\n" + + "\bmimetype\x18\x05 \x01(\tR\bmimetype\x12(\n" + + "\x0fplaceholderArgb\x18\x06 \x01(\aR\x0fplaceholderArgb\x12\x1a\n" + + "\btextArgb\x18\a \x01(\aR\btextArgb\x12 \n" + + "\vsubtextArgb\x18\b \x01(\aR\vsubtextArgb\x12L\n" + + "\tmediaData\x18\t \x01(\v2..WAWebProtobufsE2E.PaymentBackground.MediaDataR\tmediaData\x12=\n" + + "\x04type\x18\n" + + " \x01(\x0e2).WAWebProtobufsE2E.PaymentBackground.TypeR\x04type\x1a\xbb\x01\n" + + "\tMediaData\x12\x1a\n" + + "\bmediaKey\x18\x01 \x01(\fR\bmediaKey\x12,\n" + + "\x11mediaKeyTimestamp\x18\x02 \x01(\x03R\x11mediaKeyTimestamp\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x03 \x01(\fR\n" + + "fileSHA256\x12$\n" + + "\rfileEncSHA256\x18\x04 \x01(\fR\rfileEncSHA256\x12\x1e\n" + + "\n" + + "directPath\x18\x05 \x01(\tR\n" + + "directPath\" \n" + + "\x04Type\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\v\n" + + "\aDEFAULT\x10\x01\"\xe8\x03\n" + + "\x10DisappearingMode\x12K\n" + + "\tinitiator\x18\x01 \x01(\x0e2-.WAWebProtobufsE2E.DisappearingMode.InitiatorR\tinitiator\x12E\n" + + "\atrigger\x18\x02 \x01(\x0e2+.WAWebProtobufsE2E.DisappearingMode.TriggerR\atrigger\x12.\n" + + "\x12initiatorDeviceJID\x18\x03 \x01(\tR\x12initiatorDeviceJID\x12$\n" + + "\rinitiatedByMe\x18\x04 \x01(\bR\rinitiatedByMe\"\x7f\n" + + "\aTrigger\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\x10\n" + + "\fCHAT_SETTING\x10\x01\x12\x13\n" + + "\x0fACCOUNT_SETTING\x10\x02\x12\x0f\n" + + "\vBULK_CHANGE\x10\x03\x12\x1b\n" + + "\x17BIZ_SUPPORTS_FB_HOSTING\x10\x04\x12\x12\n" + + "\x0eUNKNOWN_GROUPS\x10\x05\"i\n" + + "\tInitiator\x12\x13\n" + + "\x0fCHANGED_IN_CHAT\x10\x00\x12\x13\n" + + "\x0fINITIATED_BY_ME\x10\x01\x12\x16\n" + + "\x12INITIATED_BY_OTHER\x10\x02\x12\x1a\n" + + "\x16BIZ_UPGRADE_FB_HOSTING\x10\x03\"\xe1\x02\n" + + "\x0eProcessedVideo\x12\x1e\n" + + "\n" + + "directPath\x18\x01 \x01(\tR\n" + + "directPath\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x02 \x01(\fR\n" + + "fileSHA256\x12\x16\n" + + "\x06height\x18\x03 \x01(\rR\x06height\x12\x14\n" + + "\x05width\x18\x04 \x01(\rR\x05width\x12\x1e\n" + + "\n" + + "fileLength\x18\x05 \x01(\x04R\n" + + "fileLength\x12\x18\n" + + "\abitrate\x18\x06 \x01(\rR\abitrate\x12H\n" + + "\aquality\x18\a \x01(\x0e2..WAWebProtobufsE2E.ProcessedVideo.VideoQualityR\aquality\x12\"\n" + + "\fcapabilities\x18\b \x03(\tR\fcapabilities\"9\n" + + "\fVideoQuality\x12\r\n" + + "\tUNDEFINED\x10\x00\x12\a\n" + + "\x03LOW\x10\x01\x12\a\n" + + "\x03MID\x10\x02\x12\b\n" + + "\x04HIGH\x10\x03\"\x84;\n" + + "\aMessage\x12\"\n" + + "\fconversation\x18\x01 \x01(\tR\fconversation\x12s\n" + + "\x1csenderKeyDistributionMessage\x18\x02 \x01(\v2/.WAWebProtobufsE2E.SenderKeyDistributionMessageR\x1csenderKeyDistributionMessage\x12C\n" + + "\fimageMessage\x18\x03 \x01(\v2\x1f.WAWebProtobufsE2E.ImageMessageR\fimageMessage\x12I\n" + + "\x0econtactMessage\x18\x04 \x01(\v2!.WAWebProtobufsE2E.ContactMessageR\x0econtactMessage\x12L\n" + + "\x0flocationMessage\x18\x05 \x01(\v2\".WAWebProtobufsE2E.LocationMessageR\x0flocationMessage\x12X\n" + + "\x13extendedTextMessage\x18\x06 \x01(\v2&.WAWebProtobufsE2E.ExtendedTextMessageR\x13extendedTextMessage\x12L\n" + + "\x0fdocumentMessage\x18\a \x01(\v2\".WAWebProtobufsE2E.DocumentMessageR\x0fdocumentMessage\x12C\n" + + "\faudioMessage\x18\b \x01(\v2\x1f.WAWebProtobufsE2E.AudioMessageR\faudioMessage\x12C\n" + + "\fvideoMessage\x18\t \x01(\v2\x1f.WAWebProtobufsE2E.VideoMessageR\fvideoMessage\x12+\n" + + "\x04call\x18\n" + + " \x01(\v2\x17.WAWebProtobufsE2E.CallR\x04call\x12+\n" + + "\x04chat\x18\v \x01(\v2\x17.WAWebProtobufsE2E.ChatR\x04chat\x12L\n" + + "\x0fprotocolMessage\x18\f \x01(\v2\".WAWebProtobufsE2E.ProtocolMessageR\x0fprotocolMessage\x12[\n" + + "\x14contactsArrayMessage\x18\r \x01(\v2'.WAWebProtobufsE2E.ContactsArrayMessageR\x14contactsArrayMessage\x12d\n" + + "\x17highlyStructuredMessage\x18\x0e \x01(\v2*.WAWebProtobufsE2E.HighlyStructuredMessageR\x17highlyStructuredMessage\x12\x8f\x01\n" + + "*fastRatchetKeySenderKeyDistributionMessage\x18\x0f \x01(\v2/.WAWebProtobufsE2E.SenderKeyDistributionMessageR*fastRatchetKeySenderKeyDistributionMessage\x12U\n" + + "\x12sendPaymentMessage\x18\x10 \x01(\v2%.WAWebProtobufsE2E.SendPaymentMessageR\x12sendPaymentMessage\x12X\n" + + "\x13liveLocationMessage\x18\x12 \x01(\v2&.WAWebProtobufsE2E.LiveLocationMessageR\x13liveLocationMessage\x12^\n" + + "\x15requestPaymentMessage\x18\x16 \x01(\v2(.WAWebProtobufsE2E.RequestPaymentMessageR\x15requestPaymentMessage\x12s\n" + + "\x1cdeclinePaymentRequestMessage\x18\x17 \x01(\v2/.WAWebProtobufsE2E.DeclinePaymentRequestMessageR\x1cdeclinePaymentRequestMessage\x12p\n" + + "\x1bcancelPaymentRequestMessage\x18\x18 \x01(\v2..WAWebProtobufsE2E.CancelPaymentRequestMessageR\x1bcancelPaymentRequestMessage\x12L\n" + + "\x0ftemplateMessage\x18\x19 \x01(\v2\".WAWebProtobufsE2E.TemplateMessageR\x0ftemplateMessage\x12I\n" + + "\x0estickerMessage\x18\x1a \x01(\v2!.WAWebProtobufsE2E.StickerMessageR\x0estickerMessage\x12U\n" + + "\x12groupInviteMessage\x18\x1c \x01(\v2%.WAWebProtobufsE2E.GroupInviteMessageR\x12groupInviteMessage\x12m\n" + + "\x1atemplateButtonReplyMessage\x18\x1d \x01(\v2-.WAWebProtobufsE2E.TemplateButtonReplyMessageR\x1atemplateButtonReplyMessage\x12I\n" + + "\x0eproductMessage\x18\x1e \x01(\v2!.WAWebProtobufsE2E.ProductMessageR\x0eproductMessage\x12R\n" + + "\x11deviceSentMessage\x18\x1f \x01(\v2$.WAWebProtobufsE2E.DeviceSentMessageR\x11deviceSentMessage\x12U\n" + + "\x12messageContextInfo\x18# \x01(\v2%.WAWebProtobufsE2E.MessageContextInfoR\x12messageContextInfo\x12@\n" + + "\vlistMessage\x18$ \x01(\v2\x1e.WAWebProtobufsE2E.ListMessageR\vlistMessage\x12O\n" + + "\x0fviewOnceMessage\x18% \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x0fviewOnceMessage\x12C\n" + + "\forderMessage\x18& \x01(\v2\x1f.WAWebProtobufsE2E.OrderMessageR\forderMessage\x12X\n" + + "\x13listResponseMessage\x18' \x01(\v2&.WAWebProtobufsE2E.ListResponseMessageR\x13listResponseMessage\x12Q\n" + + "\x10ephemeralMessage\x18( \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x10ephemeralMessage\x12I\n" + + "\x0einvoiceMessage\x18) \x01(\v2!.WAWebProtobufsE2E.InvoiceMessageR\x0einvoiceMessage\x12I\n" + + "\x0ebuttonsMessage\x18* \x01(\v2!.WAWebProtobufsE2E.ButtonsMessageR\x0ebuttonsMessage\x12a\n" + + "\x16buttonsResponseMessage\x18+ \x01(\v2).WAWebProtobufsE2E.ButtonsResponseMessageR\x16buttonsResponseMessage\x12[\n" + + "\x14paymentInviteMessage\x18, \x01(\v2'.WAWebProtobufsE2E.PaymentInviteMessageR\x14paymentInviteMessage\x12U\n" + + "\x12interactiveMessage\x18- \x01(\v2%.WAWebProtobufsE2E.InteractiveMessageR\x12interactiveMessage\x12L\n" + + "\x0freactionMessage\x18. \x01(\v2\".WAWebProtobufsE2E.ReactionMessageR\x0freactionMessage\x12^\n" + + "\x15stickerSyncRmrMessage\x18/ \x01(\v2(.WAWebProtobufsE2E.StickerSyncRMRMessageR\x15stickerSyncRmrMessage\x12m\n" + + "\x1ainteractiveResponseMessage\x180 \x01(\v2-.WAWebProtobufsE2E.InteractiveResponseMessageR\x1ainteractiveResponseMessage\x12X\n" + + "\x13pollCreationMessage\x181 \x01(\v2&.WAWebProtobufsE2E.PollCreationMessageR\x13pollCreationMessage\x12R\n" + + "\x11pollUpdateMessage\x182 \x01(\v2$.WAWebProtobufsE2E.PollUpdateMessageR\x11pollUpdateMessage\x12R\n" + + "\x11keepInChatMessage\x183 \x01(\v2$.WAWebProtobufsE2E.KeepInChatMessageR\x11keepInChatMessage\x12e\n" + + "\x1adocumentWithCaptionMessage\x185 \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x1adocumentWithCaptionMessage\x12j\n" + + "\x19requestPhoneNumberMessage\x186 \x01(\v2,.WAWebProtobufsE2E.RequestPhoneNumberMessageR\x19requestPhoneNumberMessage\x12S\n" + + "\x11viewOnceMessageV2\x187 \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x11viewOnceMessageV2\x12U\n" + + "\x12encReactionMessage\x188 \x01(\v2%.WAWebProtobufsE2E.EncReactionMessageR\x12encReactionMessage\x12K\n" + + "\reditedMessage\x18: \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\reditedMessage\x12e\n" + + "\x1aviewOnceMessageV2Extension\x18; \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x1aviewOnceMessageV2Extension\x12\\\n" + + "\x15pollCreationMessageV2\x18< \x01(\v2&.WAWebProtobufsE2E.PollCreationMessageR\x15pollCreationMessageV2\x12s\n" + + "\x1cscheduledCallCreationMessage\x18= \x01(\v2/.WAWebProtobufsE2E.ScheduledCallCreationMessageR\x1cscheduledCallCreationMessage\x12[\n" + + "\x15groupMentionedMessage\x18> \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x15groupMentionedMessage\x12O\n" + + "\x10pinInChatMessage\x18? \x01(\v2#.WAWebProtobufsE2E.PinInChatMessageR\x10pinInChatMessage\x12\\\n" + + "\x15pollCreationMessageV3\x18@ \x01(\v2&.WAWebProtobufsE2E.PollCreationMessageR\x15pollCreationMessageV3\x12g\n" + + "\x18scheduledCallEditMessage\x18A \x01(\v2+.WAWebProtobufsE2E.ScheduledCallEditMessageR\x18scheduledCallEditMessage\x12?\n" + + "\n" + + "ptvMessage\x18B \x01(\v2\x1f.WAWebProtobufsE2E.VideoMessageR\n" + + "ptvMessage\x12Q\n" + + "\x10botInvokeMessage\x18C \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x10botInvokeMessage\x12K\n" + + "\x0fcallLogMesssage\x18E \x01(\v2!.WAWebProtobufsE2E.CallLogMessageR\x0fcallLogMesssage\x12[\n" + + "\x14messageHistoryBundle\x18F \x01(\v2'.WAWebProtobufsE2E.MessageHistoryBundleR\x14messageHistoryBundle\x12R\n" + + "\x11encCommentMessage\x18G \x01(\v2$.WAWebProtobufsE2E.EncCommentMessageR\x11encCommentMessage\x12C\n" + + "\fbcallMessage\x18H \x01(\v2\x1f.WAWebProtobufsE2E.BCallMessageR\fbcallMessage\x12Y\n" + + "\x14lottieStickerMessage\x18J \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x14lottieStickerMessage\x12C\n" + + "\feventMessage\x18K \x01(\v2\x1f.WAWebProtobufsE2E.EventMessageR\feventMessage\x12d\n" + + "\x17encEventResponseMessage\x18L \x01(\v2*.WAWebProtobufsE2E.EncEventResponseMessageR\x17encEventResponseMessage\x12I\n" + + "\x0ecommentMessage\x18M \x01(\v2!.WAWebProtobufsE2E.CommentMessageR\x0ecommentMessage\x12s\n" + + "\x1cnewsletterAdminInviteMessage\x18N \x01(\v2/.WAWebProtobufsE2E.NewsletterAdminInviteMessageR\x1cnewsletterAdminInviteMessage\x12U\n" + + "\x12placeholderMessage\x18P \x01(\v2%.WAWebProtobufsE2E.PlaceholderMessageR\x12placeholderMessage\x12a\n" + + "\x16secretEncryptedMessage\x18R \x01(\v2).WAWebProtobufsE2E.SecretEncryptedMessageR\x16secretEncryptedMessage\x12C\n" + + "\falbumMessage\x18S \x01(\v2\x1f.WAWebProtobufsE2E.AlbumMessageR\falbumMessage\x12O\n" + + "\x0feventCoverImage\x18U \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x0feventCoverImage\x12U\n" + + "\x12stickerPackMessage\x18V \x01(\v2%.WAWebProtobufsE2E.StickerPackMessageR\x12stickerPackMessage\x12Y\n" + + "\x14statusMentionMessage\x18W \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x14statusMentionMessage\x12j\n" + + "\x19pollResultSnapshotMessage\x18X \x01(\v2,.WAWebProtobufsE2E.PollResultSnapshotMessageR\x19pollResultSnapshotMessage\x12m\n" + + "\x1epollCreationOptionImageMessage\x18Z \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x1epollCreationOptionImageMessage\x12]\n" + + "\x16associatedChildMessage\x18[ \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x16associatedChildMessage\x12c\n" + + "\x19groupStatusMentionMessage\x18\\ \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x19groupStatusMentionMessage\x12[\n" + + "\x15pollCreationMessageV4\x18] \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x15pollCreationMessageV4\x12[\n" + + "\x15pollCreationMessageV5\x18^ \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x15pollCreationMessageV5\x12M\n" + + "\x0estatusAddYours\x18_ \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x0estatusAddYours\x12U\n" + + "\x12groupStatusMessage\x18` \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x12groupStatusMessage\x12Z\n" + + "\x13richResponseMessage\x18a \x01(\v2(.WAWebProtobufsE2E.AIRichResponseMessageR\x13richResponseMessage\x12j\n" + + "\x19statusNotificationMessage\x18b \x01(\v2,.WAWebProtobufsE2E.StatusNotificationMessageR\x19statusNotificationMessage\x12W\n" + + "\x13limitSharingMessage\x18c \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x13limitSharingMessage\x12M\n" + + "\x0ebotTaskMessage\x18d \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x0ebotTaskMessage\x12O\n" + + "\x0fquestionMessage\x18e \x01(\v2%.WAWebProtobufsE2E.FutureProofMessageR\x0fquestionMessage\x12[\n" + + "\x14messageHistoryNotice\x18f \x01(\v2'.WAWebProtobufsE2E.MessageHistoryNoticeR\x14messageHistoryNotice\"\xb0\x01\n" + + "\fAlbumMessage\x12.\n" + + "\x12expectedImageCount\x18\x02 \x01(\rR\x12expectedImageCount\x12.\n" + + "\x12expectedVideoCount\x18\x03 \x01(\rR\x12expectedVideoCount\x12@\n" + + "\vcontextInfo\x18\x11 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\"\x9e\x01\n" + + "\x16MessageHistoryMetadata\x12*\n" + + "\x10historyReceivers\x18\x01 \x03(\tR\x10historyReceivers\x124\n" + + "\x15firstMessageTimestamp\x18\x02 \x01(\x03R\x15firstMessageTimestamp\x12\"\n" + + "\fmessageCount\x18\x03 \x01(\x03R\fmessageCount\"\xbb\x01\n" + + "\x14MessageHistoryNotice\x12@\n" + + "\vcontextInfo\x18\x01 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x12a\n" + + "\x16messageHistoryMetadata\x18\x02 \x01(\v2).WAWebProtobufsE2E.MessageHistoryMetadataR\x16messageHistoryMetadata\"\x87\x03\n" + + "\x14MessageHistoryBundle\x12\x1a\n" + + "\bmimetype\x18\x01 \x01(\tR\bmimetype\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x02 \x01(\fR\n" + + "fileSHA256\x12\x1a\n" + + "\bmediaKey\x18\x03 \x01(\fR\bmediaKey\x12$\n" + + "\rfileEncSHA256\x18\x04 \x01(\fR\rfileEncSHA256\x12\x1e\n" + + "\n" + + "directPath\x18\x05 \x01(\tR\n" + + "directPath\x12,\n" + + "\x11mediaKeyTimestamp\x18\x06 \x01(\x03R\x11mediaKeyTimestamp\x12@\n" + + "\vcontextInfo\x18\a \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x12a\n" + + "\x16messageHistoryMetadata\x18\b \x01(\v2).WAWebProtobufsE2E.MessageHistoryMetadataR\x16messageHistoryMetadata\"\x9f\x01\n" + + "\x17EncEventResponseMessage\x12N\n" + + "\x17eventCreationMessageKey\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x17eventCreationMessageKey\x12\x1e\n" + + "\n" + + "encPayload\x18\x02 \x01(\fR\n" + + "encPayload\x12\x14\n" + + "\x05encIV\x18\x03 \x01(\fR\x05encIV\"\x92\x03\n" + + "\fEventMessage\x12@\n" + + "\vcontextInfo\x18\x01 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x12\x1e\n" + + "\n" + + "isCanceled\x18\x02 \x01(\bR\n" + + "isCanceled\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12 \n" + + "\vdescription\x18\x04 \x01(\tR\vdescription\x12>\n" + + "\blocation\x18\x05 \x01(\v2\".WAWebProtobufsE2E.LocationMessageR\blocation\x12\x1a\n" + + "\bjoinLink\x18\x06 \x01(\tR\bjoinLink\x12\x1c\n" + + "\tstartTime\x18\a \x01(\x03R\tstartTime\x12\x18\n" + + "\aendTime\x18\b \x01(\x03R\aendTime\x12.\n" + + "\x12extraGuestsAllowed\x18\t \x01(\bR\x12extraGuestsAllowed\x12&\n" + + "\x0eisScheduleCall\x18\n" + + " \x01(\bR\x0eisScheduleCall\"\x88\x01\n" + + "\x0eCommentMessage\x124\n" + + "\amessage\x18\x01 \x01(\v2\x1a.WAWebProtobufsE2E.MessageR\amessage\x12@\n" + + "\x10targetMessageKey\x18\x02 \x01(\v2\x14.WACommon.MessageKeyR\x10targetMessageKey\"\x8b\x01\n" + + "\x11EncCommentMessage\x12@\n" + + "\x10targetMessageKey\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x10targetMessageKey\x12\x1e\n" + + "\n" + + "encPayload\x18\x02 \x01(\fR\n" + + "encPayload\x12\x14\n" + + "\x05encIV\x18\x03 \x01(\fR\x05encIV\"\x8c\x01\n" + + "\x12EncReactionMessage\x12@\n" + + "\x10targetMessageKey\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x10targetMessageKey\x12\x1e\n" + + "\n" + + "encPayload\x18\x02 \x01(\fR\n" + + "encPayload\x12\x14\n" + + "\x05encIV\x18\x03 \x01(\fR\x05encIV\"\x96\x01\n" + + "\x11KeepInChatMessage\x12&\n" + + "\x03key\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x03key\x127\n" + + "\bkeepType\x18\x02 \x01(\x0e2\x1b.WAWebProtobufsE2E.KeepTypeR\bkeepType\x12 \n" + + "\vtimestampMS\x18\x03 \x01(\x03R\vtimestampMS\"\x9c\x02\n" + + "\x19PollResultSnapshotMessage\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12S\n" + + "\tpollVotes\x18\x02 \x03(\v25.WAWebProtobufsE2E.PollResultSnapshotMessage.PollVoteR\tpollVotes\x12@\n" + + "\vcontextInfo\x18\x03 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x1aT\n" + + "\bPollVote\x12\x1e\n" + + "\n" + + "optionName\x18\x01 \x01(\tR\n" + + "optionName\x12(\n" + + "\x0foptionVoteCount\x18\x02 \x01(\x03R\x0foptionVoteCount\";\n" + + "\x0fPollVoteMessage\x12(\n" + + "\x0fselectedOptions\x18\x01 \x03(\fR\x0fselectedOptions\"D\n" + + "\fPollEncValue\x12\x1e\n" + + "\n" + + "encPayload\x18\x01 \x01(\fR\n" + + "encPayload\x12\x14\n" + + "\x05encIV\x18\x02 \x01(\fR\x05encIV\"\x1b\n" + + "\x19PollUpdateMessageMetadata\"\x8e\x02\n" + + "\x11PollUpdateMessage\x12L\n" + + "\x16pollCreationMessageKey\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x16pollCreationMessageKey\x123\n" + + "\x04vote\x18\x02 \x01(\v2\x1f.WAWebProtobufsE2E.PollEncValueR\x04vote\x12H\n" + + "\bmetadata\x18\x03 \x01(\v2,.WAWebProtobufsE2E.PollUpdateMessageMetadataR\bmetadata\x12,\n" + + "\x11senderTimestampMS\x18\x04 \x01(\x03R\x11senderTimestampMS\"}\n" + + "\x15StickerSyncRMRMessage\x12\x1a\n" + + "\bfilehash\x18\x01 \x03(\tR\bfilehash\x12\x1c\n" + + "\trmrSource\x18\x02 \x01(\tR\trmrSource\x12*\n" + + "\x10requestTimestamp\x18\x03 \x01(\x03R\x10requestTimestamp\"\x9d\x01\n" + + "\x0fReactionMessage\x12&\n" + + "\x03key\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x03key\x12\x12\n" + + "\x04text\x18\x02 \x01(\tR\x04text\x12 \n" + + "\vgroupingKey\x18\x03 \x01(\tR\vgroupingKey\x12,\n" + + "\x11senderTimestampMS\x18\x04 \x01(\x03R\x11senderTimestampMS\"J\n" + + "\x12FutureProofMessage\x124\n" + + "\amessage\x18\x01 \x01(\v2\x1a.WAWebProtobufsE2E.MessageR\amessage\"\x87\x01\n" + + "\x11DeviceSentMessage\x12&\n" + + "\x0edestinationJID\x18\x01 \x01(\tR\x0edestinationJID\x124\n" + + "\amessage\x18\x02 \x01(\v2\x1a.WAWebProtobufsE2E.MessageR\amessage\x12\x14\n" + + "\x05phash\x18\x03 \x01(\tR\x05phash\"]\n" + + "\x19RequestPhoneNumberMessage\x12@\n" + + "\vcontextInfo\x18\x01 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\"\x9a\x02\n" + + "\x1cNewsletterAdminInviteMessage\x12$\n" + + "\rnewsletterJID\x18\x01 \x01(\tR\rnewsletterJID\x12&\n" + + "\x0enewsletterName\x18\x02 \x01(\tR\x0enewsletterName\x12$\n" + + "\rJPEGThumbnail\x18\x03 \x01(\fR\rJPEGThumbnail\x12\x18\n" + + "\acaption\x18\x04 \x01(\tR\acaption\x12*\n" + + "\x10inviteExpiration\x18\x05 \x01(\x03R\x10inviteExpiration\x12@\n" + + "\vcontextInfo\x18\x06 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\"\xa6\a\n" + + "\x0eProductMessage\x12K\n" + + "\aproduct\x18\x01 \x01(\v21.WAWebProtobufsE2E.ProductMessage.ProductSnapshotR\aproduct\x12*\n" + + "\x10businessOwnerJID\x18\x02 \x01(\tR\x10businessOwnerJID\x12K\n" + + "\acatalog\x18\x04 \x01(\v21.WAWebProtobufsE2E.ProductMessage.CatalogSnapshotR\acatalog\x12\x12\n" + + "\x04body\x18\x05 \x01(\tR\x04body\x12\x16\n" + + "\x06footer\x18\x06 \x01(\tR\x06footer\x12@\n" + + "\vcontextInfo\x18\x11 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x1a\xce\x03\n" + + "\x0fProductSnapshot\x12C\n" + + "\fproductImage\x18\x01 \x01(\v2\x1f.WAWebProtobufsE2E.ImageMessageR\fproductImage\x12\x1c\n" + + "\tproductID\x18\x02 \x01(\tR\tproductID\x12\x14\n" + + "\x05title\x18\x03 \x01(\tR\x05title\x12 \n" + + "\vdescription\x18\x04 \x01(\tR\vdescription\x12\"\n" + + "\fcurrencyCode\x18\x05 \x01(\tR\fcurrencyCode\x12(\n" + + "\x0fpriceAmount1000\x18\x06 \x01(\x03R\x0fpriceAmount1000\x12\x1e\n" + + "\n" + + "retailerID\x18\a \x01(\tR\n" + + "retailerID\x12\x10\n" + + "\x03URL\x18\b \x01(\tR\x03URL\x12,\n" + + "\x11productImageCount\x18\t \x01(\rR\x11productImageCount\x12\"\n" + + "\ffirstImageID\x18\v \x01(\tR\ffirstImageID\x120\n" + + "\x13salePriceAmount1000\x18\f \x01(\x03R\x13salePriceAmount1000\x12\x1c\n" + + "\tsignedURL\x18\r \x01(\tR\tsignedURL\x1a\x8e\x01\n" + + "\x0fCatalogSnapshot\x12C\n" + + "\fcatalogImage\x18\x01 \x01(\v2\x1f.WAWebProtobufsE2E.ImageMessageR\fcatalogImage\x12\x14\n" + + "\x05title\x18\x02 \x01(\tR\x05title\x12 \n" + + "\vdescription\x18\x03 \x01(\tR\vdescription\"\x94\x02\n" + + "\x1aTemplateButtonReplyMessage\x12\x1e\n" + + "\n" + + "selectedID\x18\x01 \x01(\tR\n" + + "selectedID\x120\n" + + "\x13selectedDisplayText\x18\x02 \x01(\tR\x13selectedDisplayText\x12@\n" + + "\vcontextInfo\x18\x03 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x12$\n" + + "\rselectedIndex\x18\x04 \x01(\rR\rselectedIndex\x12<\n" + + "\x19selectedCarouselCardIndex\x18\x05 \x01(\rR\x19selectedCarouselCardIndex\"\xa8\x0e\n" + + "\x0fTemplateMessage\x12^\n" + + "\x0ffourRowTemplate\x18\x01 \x01(\v22.WAWebProtobufsE2E.TemplateMessage.FourRowTemplateH\x00R\x0ffourRowTemplate\x12v\n" + + "\x17hydratedFourRowTemplate\x18\x02 \x01(\v2:.WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplateH\x00R\x17hydratedFourRowTemplate\x12g\n" + + "\x1ainteractiveMessageTemplate\x18\x05 \x01(\v2%.WAWebProtobufsE2E.InteractiveMessageH\x00R\x1ainteractiveMessageTemplate\x12@\n" + + "\vcontextInfo\x18\x03 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x12f\n" + + "\x10hydratedTemplate\x18\x04 \x01(\v2:.WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplateR\x10hydratedTemplate\x12\x1e\n" + + "\n" + + "templateID\x18\t \x01(\tR\n" + + "templateID\x1a\x85\x05\n" + + "\x17HydratedFourRowTemplate\x12N\n" + + "\x0fdocumentMessage\x18\x01 \x01(\v2\".WAWebProtobufsE2E.DocumentMessageH\x00R\x0fdocumentMessage\x12.\n" + + "\x11hydratedTitleText\x18\x02 \x01(\tH\x00R\x11hydratedTitleText\x12E\n" + + "\fimageMessage\x18\x03 \x01(\v2\x1f.WAWebProtobufsE2E.ImageMessageH\x00R\fimageMessage\x12E\n" + + "\fvideoMessage\x18\x04 \x01(\v2\x1f.WAWebProtobufsE2E.VideoMessageH\x00R\fvideoMessage\x12N\n" + + "\x0flocationMessage\x18\x05 \x01(\v2\".WAWebProtobufsE2E.LocationMessageH\x00R\x0flocationMessage\x120\n" + + "\x13hydratedContentText\x18\x06 \x01(\tR\x13hydratedContentText\x12.\n" + + "\x12hydratedFooterText\x18\a \x01(\tR\x12hydratedFooterText\x12S\n" + + "\x0fhydratedButtons\x18\b \x03(\v2).WAWebProtobufsE2E.HydratedTemplateButtonR\x0fhydratedButtons\x12\x1e\n" + + "\n" + + "templateID\x18\t \x01(\tR\n" + + "templateID\x12,\n" + + "\x11maskLinkedDevices\x18\n" + + " \x01(\bR\x11maskLinkedDevicesB\a\n" + + "\x05title\x1a\xf7\x04\n" + + "\x0fFourRowTemplate\x12N\n" + + "\x0fdocumentMessage\x18\x01 \x01(\v2\".WAWebProtobufsE2E.DocumentMessageH\x00R\x0fdocumentMessage\x12f\n" + + "\x17highlyStructuredMessage\x18\x02 \x01(\v2*.WAWebProtobufsE2E.HighlyStructuredMessageH\x00R\x17highlyStructuredMessage\x12E\n" + + "\fimageMessage\x18\x03 \x01(\v2\x1f.WAWebProtobufsE2E.ImageMessageH\x00R\fimageMessage\x12E\n" + + "\fvideoMessage\x18\x04 \x01(\v2\x1f.WAWebProtobufsE2E.VideoMessageH\x00R\fvideoMessage\x12N\n" + + "\x0flocationMessage\x18\x05 \x01(\v2\".WAWebProtobufsE2E.LocationMessageH\x00R\x0flocationMessage\x12D\n" + + "\acontent\x18\x06 \x01(\v2*.WAWebProtobufsE2E.HighlyStructuredMessageR\acontent\x12B\n" + + "\x06footer\x18\a \x01(\v2*.WAWebProtobufsE2E.HighlyStructuredMessageR\x06footer\x12;\n" + + "\abuttons\x18\b \x03(\v2!.WAWebProtobufsE2E.TemplateButtonR\abuttonsB\a\n" + + "\x05titleB\b\n" + + "\x06format\"\xcc\x05\n" + + "\x0eStickerMessage\x12\x10\n" + + "\x03URL\x18\x01 \x01(\tR\x03URL\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x02 \x01(\fR\n" + + "fileSHA256\x12$\n" + + "\rfileEncSHA256\x18\x03 \x01(\fR\rfileEncSHA256\x12\x1a\n" + + "\bmediaKey\x18\x04 \x01(\fR\bmediaKey\x12\x1a\n" + + "\bmimetype\x18\x05 \x01(\tR\bmimetype\x12\x16\n" + + "\x06height\x18\x06 \x01(\rR\x06height\x12\x14\n" + + "\x05width\x18\a \x01(\rR\x05width\x12\x1e\n" + + "\n" + + "directPath\x18\b \x01(\tR\n" + + "directPath\x12\x1e\n" + + "\n" + + "fileLength\x18\t \x01(\x04R\n" + + "fileLength\x12,\n" + + "\x11mediaKeyTimestamp\x18\n" + + " \x01(\x03R\x11mediaKeyTimestamp\x12*\n" + + "\x10firstFrameLength\x18\v \x01(\rR\x10firstFrameLength\x12,\n" + + "\x11firstFrameSidecar\x18\f \x01(\fR\x11firstFrameSidecar\x12\x1e\n" + + "\n" + + "isAnimated\x18\r \x01(\bR\n" + + "isAnimated\x12\"\n" + + "\fpngThumbnail\x18\x10 \x01(\fR\fpngThumbnail\x12@\n" + + "\vcontextInfo\x18\x11 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x12$\n" + + "\rstickerSentTS\x18\x12 \x01(\x03R\rstickerSentTS\x12\x1a\n" + + "\bisAvatar\x18\x13 \x01(\bR\bisAvatar\x12 \n" + + "\visAiSticker\x18\x14 \x01(\bR\visAiSticker\x12\x1a\n" + + "\bisLottie\x18\x15 \x01(\bR\bisLottie\x12.\n" + + "\x12accessibilityLabel\x18\x16 \x01(\tR\x12accessibilityLabel\"\xcf\x03\n" + + "\x13LiveLocationMessage\x12(\n" + + "\x0fdegreesLatitude\x18\x01 \x01(\x01R\x0fdegreesLatitude\x12*\n" + + "\x10degreesLongitude\x18\x02 \x01(\x01R\x10degreesLongitude\x12*\n" + + "\x10accuracyInMeters\x18\x03 \x01(\rR\x10accuracyInMeters\x12\x1e\n" + + "\n" + + "speedInMps\x18\x04 \x01(\x02R\n" + + "speedInMps\x12L\n" + + "!degreesClockwiseFromMagneticNorth\x18\x05 \x01(\rR!degreesClockwiseFromMagneticNorth\x12\x18\n" + + "\acaption\x18\x06 \x01(\tR\acaption\x12&\n" + + "\x0esequenceNumber\x18\a \x01(\x03R\x0esequenceNumber\x12\x1e\n" + + "\n" + + "timeOffset\x18\b \x01(\rR\n" + + "timeOffset\x12$\n" + + "\rJPEGThumbnail\x18\x10 \x01(\fR\rJPEGThumbnail\x12@\n" + + "\vcontextInfo\x18\x11 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\"E\n" + + "\x1bCancelPaymentRequestMessage\x12&\n" + + "\x03key\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x03key\"F\n" + + "\x1cDeclinePaymentRequestMessage\x12&\n" + + "\x03key\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x03key\"\xeb\x02\n" + + "\x15RequestPaymentMessage\x12<\n" + + "\vnoteMessage\x18\x04 \x01(\v2\x1a.WAWebProtobufsE2E.MessageR\vnoteMessage\x120\n" + + "\x13currencyCodeIso4217\x18\x01 \x01(\tR\x13currencyCodeIso4217\x12\x1e\n" + + "\n" + + "amount1000\x18\x02 \x01(\x04R\n" + + "amount1000\x12 \n" + + "\vrequestFrom\x18\x03 \x01(\tR\vrequestFrom\x12(\n" + + "\x0fexpiryTimestamp\x18\x05 \x01(\x03R\x0fexpiryTimestamp\x120\n" + + "\x06amount\x18\x06 \x01(\v2\x18.WAWebProtobufsE2E.MoneyR\x06amount\x12D\n" + + "\n" + + "background\x18\a \x01(\v2$.WAWebProtobufsE2E.PaymentBackgroundR\n" + + "background\"\xdc\x01\n" + + "\x12SendPaymentMessage\x12<\n" + + "\vnoteMessage\x18\x02 \x01(\v2\x1a.WAWebProtobufsE2E.MessageR\vnoteMessage\x12B\n" + + "\x11requestMessageKey\x18\x03 \x01(\v2\x14.WACommon.MessageKeyR\x11requestMessageKey\x12D\n" + + "\n" + + "background\x18\x04 \x01(\v2$.WAWebProtobufsE2E.PaymentBackgroundR\n" + + "background\"\xb9\x01\n" + + "\x14ContactsArrayMessage\x12 \n" + + "\vdisplayName\x18\x01 \x01(\tR\vdisplayName\x12=\n" + + "\bcontacts\x18\x02 \x03(\v2!.WAWebProtobufsE2E.ContactMessageR\bcontacts\x12@\n" + + "\vcontextInfo\x18\x11 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\"j\n" + + "&InitialSecurityNotificationSettingSync\x12@\n" + + "\x1bsecurityNotificationEnabled\x18\x01 \x01(\bR\x1bsecurityNotificationEnabled\"\xc5\x0e\n" + + "\x1fPeerDataOperationRequestMessage\x12s\n" + + "\x1cpeerDataOperationRequestType\x18\x01 \x01(\x0e2/.WAWebProtobufsE2E.PeerDataOperationRequestTypeR\x1cpeerDataOperationRequestType\x12\x81\x01\n" + + "\x16requestStickerReupload\x18\x02 \x03(\v2I.WAWebProtobufsE2E.PeerDataOperationRequestMessage.RequestStickerReuploadR\x16requestStickerReupload\x12r\n" + + "\x11requestURLPreview\x18\x03 \x03(\v2D.WAWebProtobufsE2E.PeerDataOperationRequestMessage.RequestUrlPreviewR\x11requestURLPreview\x12\x8d\x01\n" + + "\x1ahistorySyncOnDemandRequest\x18\x04 \x01(\v2M.WAWebProtobufsE2E.PeerDataOperationRequestMessage.HistorySyncOnDemandRequestR\x1ahistorySyncOnDemandRequest\x12\x9c\x01\n" + + "\x1fplaceholderMessageResendRequest\x18\x05 \x03(\v2R.WAWebProtobufsE2E.PeerDataOperationRequestMessage.PlaceholderMessageResendRequestR\x1fplaceholderMessageResendRequest\x12\x99\x01\n" + + "\x1efullHistorySyncOnDemandRequest\x18\x06 \x01(\v2Q.WAWebProtobufsE2E.PeerDataOperationRequestMessage.FullHistorySyncOnDemandRequestR\x1efullHistorySyncOnDemandRequest\x12\xa8\x01\n" + + "#syncdCollectionFatalRecoveryRequest\x18\a \x01(\v2V.WAWebProtobufsE2E.PeerDataOperationRequestMessage.SyncDCollectionFatalRecoveryRequestR#syncdCollectionFatalRecoveryRequest\x1ak\n" + + "#SyncDCollectionFatalRecoveryRequest\x12&\n" + + "\x0ecollectionName\x18\x01 \x01(\tR\x0ecollectionName\x12\x1c\n" + + "\ttimestamp\x18\x02 \x01(\x03R\ttimestamp\x1aW\n" + + "\x1fPlaceholderMessageResendRequest\x124\n" + + "\n" + + "messageKey\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\n" + + "messageKey\x1a\xe2\x01\n" + + "\x1eFullHistorySyncOnDemandRequest\x12c\n" + + "\x0frequestMetadata\x18\x01 \x01(\v29.WAWebProtobufsE2E.FullHistorySyncOnDemandRequestMetadataR\x0frequestMetadata\x12[\n" + + "\x11historySyncConfig\x18\x02 \x01(\v2-.WACompanionReg.DeviceProps.HistorySyncConfigR\x11historySyncConfig\x1a\x82\x02\n" + + "\x1aHistorySyncOnDemandRequest\x12\x18\n" + + "\achatJID\x18\x01 \x01(\tR\achatJID\x12 \n" + + "\voldestMsgID\x18\x02 \x01(\tR\voldestMsgID\x12(\n" + + "\x0foldestMsgFromMe\x18\x03 \x01(\bR\x0foldestMsgFromMe\x12*\n" + + "\x10onDemandMsgCount\x18\x04 \x01(\x05R\x10onDemandMsgCount\x122\n" + + "\x14oldestMsgTimestampMS\x18\x05 \x01(\x03R\x14oldestMsgTimestampMS\x12\x1e\n" + + "\n" + + "accountLid\x18\x06 \x01(\tR\n" + + "accountLid\x1aU\n" + + "\x11RequestUrlPreview\x12\x10\n" + + "\x03URL\x18\x01 \x01(\tR\x03URL\x12.\n" + + "\x12includeHqThumbnail\x18\x02 \x01(\bR\x12includeHqThumbnail\x1a8\n" + + "\x16RequestStickerReupload\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x01 \x01(\tR\n" + + "fileSHA256\"F\n" + + "&FullHistorySyncOnDemandRequestMetadata\x12\x1c\n" + + "\trequestID\x18\x01 \x01(\tR\trequestID\"l\n" + + "\"AppStateFatalExceptionNotification\x12(\n" + + "\x0fcollectionNames\x18\x01 \x03(\tR\x0fcollectionNames\x12\x1c\n" + + "\ttimestamp\x18\x02 \x01(\x03R\ttimestamp\"V\n" + + "\x16AppStateSyncKeyRequest\x12<\n" + + "\x06keyIDs\x18\x01 \x03(\v2$.WAWebProtobufsE2E.AppStateSyncKeyIdR\x06keyIDs\"N\n" + + "\x14AppStateSyncKeyShare\x126\n" + + "\x04keys\x18\x01 \x03(\v2\".WAWebProtobufsE2E.AppStateSyncKeyR\x04keys\"\x9e\x01\n" + + "\x13AppStateSyncKeyData\x12\x18\n" + + "\akeyData\x18\x01 \x01(\fR\akeyData\x12O\n" + + "\vfingerprint\x18\x02 \x01(\v2-.WAWebProtobufsE2E.AppStateSyncKeyFingerprintR\vfingerprint\x12\x1c\n" + + "\ttimestamp\x18\x03 \x01(\x03R\ttimestamp\"\x80\x01\n" + + "\x1aAppStateSyncKeyFingerprint\x12\x14\n" + + "\x05rawID\x18\x01 \x01(\rR\x05rawID\x12\"\n" + + "\fcurrentIndex\x18\x02 \x01(\rR\fcurrentIndex\x12(\n" + + "\rdeviceIndexes\x18\x03 \x03(\rB\x02\x10\x01R\rdeviceIndexes\")\n" + + "\x11AppStateSyncKeyId\x12\x14\n" + + "\x05keyID\x18\x01 \x01(\fR\x05keyID\"\x8f\x01\n" + + "\x0fAppStateSyncKey\x12:\n" + + "\x05keyID\x18\x01 \x01(\v2$.WAWebProtobufsE2E.AppStateSyncKeyIdR\x05keyID\x12@\n" + + "\akeyData\x18\x02 \x01(\v2&.WAWebProtobufsE2E.AppStateSyncKeyDataR\akeyData\"8\n" + + "\x04Chat\x12 \n" + + "\vdisplayName\x18\x01 \x01(\tR\vdisplayName\x12\x0e\n" + + "\x02ID\x18\x02 \x01(\tR\x02ID\"\xb2\x02\n" + + "\x04Call\x12\x18\n" + + "\acallKey\x18\x01 \x01(\fR\acallKey\x12*\n" + + "\x10conversionSource\x18\x02 \x01(\tR\x10conversionSource\x12&\n" + + "\x0econversionData\x18\x03 \x01(\fR\x0econversionData\x126\n" + + "\x16conversionDelaySeconds\x18\x04 \x01(\rR\x16conversionDelaySeconds\x12 \n" + + "\vctwaSignals\x18\x05 \x01(\tR\vctwaSignals\x12 \n" + + "\vctwaPayload\x18\x06 \x01(\fR\vctwaPayload\x12@\n" + + "\vcontextInfo\x18\a \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\"\xb6\x04\n" + + "\fAudioMessage\x12\x10\n" + + "\x03URL\x18\x01 \x01(\tR\x03URL\x12\x1a\n" + + "\bmimetype\x18\x02 \x01(\tR\bmimetype\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x03 \x01(\fR\n" + + "fileSHA256\x12\x1e\n" + + "\n" + + "fileLength\x18\x04 \x01(\x04R\n" + + "fileLength\x12\x18\n" + + "\aseconds\x18\x05 \x01(\rR\aseconds\x12\x10\n" + + "\x03PTT\x18\x06 \x01(\bR\x03PTT\x12\x1a\n" + + "\bmediaKey\x18\a \x01(\fR\bmediaKey\x12$\n" + + "\rfileEncSHA256\x18\b \x01(\fR\rfileEncSHA256\x12\x1e\n" + + "\n" + + "directPath\x18\t \x01(\tR\n" + + "directPath\x12,\n" + + "\x11mediaKeyTimestamp\x18\n" + + " \x01(\x03R\x11mediaKeyTimestamp\x12@\n" + + "\vcontextInfo\x18\x11 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x12*\n" + + "\x10streamingSidecar\x18\x12 \x01(\fR\x10streamingSidecar\x12\x1a\n" + + "\bwaveform\x18\x13 \x01(\fR\bwaveform\x12&\n" + + "\x0ebackgroundArgb\x18\x14 \x01(\aR\x0ebackgroundArgb\x12\x1a\n" + + "\bviewOnce\x18\x15 \x01(\bR\bviewOnce\x12.\n" + + "\x12accessibilityLabel\x18\x16 \x01(\tR\x12accessibilityLabel\"\x93\x06\n" + + "\x0fDocumentMessage\x12\x10\n" + + "\x03URL\x18\x01 \x01(\tR\x03URL\x12\x1a\n" + + "\bmimetype\x18\x02 \x01(\tR\bmimetype\x12\x14\n" + + "\x05title\x18\x03 \x01(\tR\x05title\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x04 \x01(\fR\n" + + "fileSHA256\x12\x1e\n" + + "\n" + + "fileLength\x18\x05 \x01(\x04R\n" + + "fileLength\x12\x1c\n" + + "\tpageCount\x18\x06 \x01(\rR\tpageCount\x12\x1a\n" + + "\bmediaKey\x18\a \x01(\fR\bmediaKey\x12\x1a\n" + + "\bfileName\x18\b \x01(\tR\bfileName\x12$\n" + + "\rfileEncSHA256\x18\t \x01(\fR\rfileEncSHA256\x12\x1e\n" + + "\n" + + "directPath\x18\n" + + " \x01(\tR\n" + + "directPath\x12,\n" + + "\x11mediaKeyTimestamp\x18\v \x01(\x03R\x11mediaKeyTimestamp\x12\"\n" + + "\fcontactVcard\x18\f \x01(\bR\fcontactVcard\x120\n" + + "\x13thumbnailDirectPath\x18\r \x01(\tR\x13thumbnailDirectPath\x12(\n" + + "\x0fthumbnailSHA256\x18\x0e \x01(\fR\x0fthumbnailSHA256\x12.\n" + + "\x12thumbnailEncSHA256\x18\x0f \x01(\fR\x12thumbnailEncSHA256\x12$\n" + + "\rJPEGThumbnail\x18\x10 \x01(\fR\rJPEGThumbnail\x12@\n" + + "\vcontextInfo\x18\x11 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\x12(\n" + + "\x0fthumbnailHeight\x18\x12 \x01(\rR\x0fthumbnailHeight\x12&\n" + + "\x0ethumbnailWidth\x18\x13 \x01(\rR\x0ethumbnailWidth\x12\x18\n" + + "\acaption\x18\x14 \x01(\tR\acaption\x12.\n" + + "\x12accessibilityLabel\x18\x15 \x01(\tR\x12accessibilityLabel\"\xd9\x01\n" + + "\x13LinkPreviewMetadata\x12X\n" + + "\x13paymentLinkMetadata\x18\x01 \x01(\v2&.WAWebProtobufsE2E.PaymentLinkMetadataR\x13paymentLinkMetadata\x12@\n" + + "\vurlMetadata\x18\x02 \x01(\v2\x1e.WAWebProtobufsE2E.URLMetadataR\vurlMetadata\x12&\n" + + "\x0efbExperimentID\x18\x03 \x01(\rR\x0efbExperimentID\"5\n" + + "\vURLMetadata\x12&\n" + + "\x0efbExperimentID\x18\x01 \x01(\rR\x0efbExperimentID\"\xbe\x02\n" + + "\x14MMSThumbnailMetadata\x120\n" + + "\x13thumbnailDirectPath\x18\x01 \x01(\tR\x13thumbnailDirectPath\x12(\n" + + "\x0fthumbnailSHA256\x18\x02 \x01(\fR\x0fthumbnailSHA256\x12.\n" + + "\x12thumbnailEncSHA256\x18\x03 \x01(\fR\x12thumbnailEncSHA256\x12\x1a\n" + + "\bmediaKey\x18\x04 \x01(\fR\bmediaKey\x12,\n" + + "\x11mediaKeyTimestamp\x18\x05 \x01(\x03R\x11mediaKeyTimestamp\x12(\n" + + "\x0fthumbnailHeight\x18\x06 \x01(\rR\x0fthumbnailHeight\x12&\n" + + "\x0ethumbnailWidth\x18\a \x01(\rR\x0ethumbnailWidth\"\xdb\x03\n" + + "\x0fLocationMessage\x12(\n" + + "\x0fdegreesLatitude\x18\x01 \x01(\x01R\x0fdegreesLatitude\x12*\n" + + "\x10degreesLongitude\x18\x02 \x01(\x01R\x10degreesLongitude\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12\x18\n" + + "\aaddress\x18\x04 \x01(\tR\aaddress\x12\x10\n" + + "\x03URL\x18\x05 \x01(\tR\x03URL\x12\x16\n" + + "\x06isLive\x18\x06 \x01(\bR\x06isLive\x12*\n" + + "\x10accuracyInMeters\x18\a \x01(\rR\x10accuracyInMeters\x12\x1e\n" + + "\n" + + "speedInMps\x18\b \x01(\x02R\n" + + "speedInMps\x12L\n" + + "!degreesClockwiseFromMagneticNorth\x18\t \x01(\rR!degreesClockwiseFromMagneticNorth\x12\x18\n" + + "\acomment\x18\v \x01(\tR\acomment\x12$\n" + + "\rJPEGThumbnail\x18\x10 \x01(\fR\rJPEGThumbnail\x12@\n" + + "\vcontextInfo\x18\x11 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\"\x8a\x01\n" + + "\x0eContactMessage\x12 \n" + + "\vdisplayName\x18\x01 \x01(\tR\vdisplayName\x12\x14\n" + + "\x05vcard\x18\x10 \x01(\tR\x05vcard\x12@\n" + + "\vcontextInfo\x18\x11 \x01(\v2\x1e.WAWebProtobufsE2E.ContextInfoR\vcontextInfo\"\x8a\x01\n" + + "\x1cSenderKeyDistributionMessage\x12\x18\n" + + "\agroupID\x18\x01 \x01(\tR\agroupID\x12P\n" + + "#axolotlSenderKeyDistributionMessage\x18\x02 \x01(\fR#axolotlSenderKeyDistributionMessage\"\xab\x01\n" + + "\x11BotAvatarMetadata\x12\x1c\n" + + "\tsentiment\x18\x01 \x01(\rR\tsentiment\x12$\n" + + "\rbehaviorGraph\x18\x02 \x01(\tR\rbehaviorGraph\x12\x16\n" + + "\x06action\x18\x03 \x01(\rR\x06action\x12\x1c\n" + + "\tintensity\x18\x04 \x01(\rR\tintensity\x12\x1c\n" + + "\twordCount\x18\x05 \x01(\rR\twordCount\"\xfd\x01\n" + + "\x1aBotSuggestedPromptMetadata\x12*\n" + + "\x10suggestedPrompts\x18\x01 \x03(\tR\x10suggestedPrompts\x120\n" + + "\x13selectedPromptIndex\x18\x02 \x01(\rR\x13selectedPromptIndex\x12U\n" + + "\x11promptSuggestions\x18\x03 \x01(\v2'.WAWebProtobufsE2E.BotPromptSuggestionsR\x11promptSuggestions\x12*\n" + + "\x10selectedPromptID\x18\x04 \x01(\tR\x10selectedPromptID\"`\n" + + "\x14BotPromptSuggestions\x12H\n" + + "\vsuggestions\x18\x01 \x03(\v2&.WAWebProtobufsE2E.BotPromptSuggestionR\vsuggestions\"I\n" + + "\x13BotPromptSuggestion\x12\x16\n" + + "\x06prompt\x18\x01 \x01(\tR\x06prompt\x12\x1a\n" + + "\bpromptID\x18\x02 \x01(\tR\bpromptID\"\xa2\x01\n" + + "\x19BotLinkedAccountsMetadata\x12?\n" + + "\baccounts\x18\x01 \x03(\v2#.WAWebProtobufsE2E.BotLinkedAccountR\baccounts\x12\"\n" + + "\facAuthTokens\x18\x02 \x01(\fR\facAuthTokens\x12 \n" + + "\vacErrorCode\x18\x03 \x01(\x05R\vacErrorCode\"\xbb\x01\n" + + "\x11BotMemoryMetadata\x12@\n" + + "\n" + + "addedFacts\x18\x01 \x03(\v2 .WAWebProtobufsE2E.BotMemoryFactR\n" + + "addedFacts\x12D\n" + + "\fremovedFacts\x18\x02 \x03(\v2 .WAWebProtobufsE2E.BotMemoryFactR\fremovedFacts\x12\x1e\n" + + "\n" + + "disclaimer\x18\x03 \x01(\tR\n" + + "disclaimer\";\n" + + "\rBotMemoryFact\x12\x12\n" + + "\x04fact\x18\x01 \x01(\tR\x04fact\x12\x16\n" + + "\x06factID\x18\x02 \x01(\tR\x06factID\"\xb2\x01\n" + + "\x14BotRenderingMetadata\x12K\n" + + "\bkeywords\x18\x01 \x03(\v2/.WAWebProtobufsE2E.BotRenderingMetadata.KeywordR\bkeywords\x1aM\n" + + "\aKeyword\x12\x14\n" + + "\x05value\x18\x01 \x01(\tR\x05value\x12,\n" + + "\x11associatedPrompts\x18\x02 \x03(\tR\x11associatedPrompts\"\xec\x01\n" + + "\x12BotMetricsMetadata\x12$\n" + + "\rdestinationID\x18\x01 \x01(\tR\rdestinationID\x12]\n" + + "\x15destinationEntryPoint\x18\x02 \x01(\x0e2'.WAWebProtobufsE2E.BotMetricsEntryPointR\x15destinationEntryPoint\x12Q\n" + + "\fthreadOrigin\x18\x03 \x01(\x0e2-.WAWebProtobufsE2E.BotMetricsThreadEntryPointR\fthreadOrigin\"}\n" + + "\x12BotSessionMetadata\x12\x1c\n" + + "\tsessionID\x18\x01 \x01(\tR\tsessionID\x12I\n" + + "\rsessionSource\x18\x02 \x01(\x0e2#.WAWebProtobufsE2E.BotSessionSourceR\rsessionSource\"V\n" + + "\x0fBotMemuMetadata\x12C\n" + + "\n" + + "faceImages\x18\x01 \x03(\v2#.WAWebProtobufsE2E.BotMediaMetadataR\n" + + "faceImages\"\xa0\x01\n" + + "\x18BotAgeCollectionMetadata\x124\n" + + "\x15ageCollectionEligible\x18\x01 \x01(\bR\x15ageCollectionEligible\x12N\n" + + "\"shouldTriggerAgeCollectionOnClient\x18\x02 \x01(\bR\"shouldTriggerAgeCollectionOnClient\"\x90\x0f\n" + + "\vBotMetadata\x12L\n" + + "\x0eavatarMetadata\x18\x01 \x01(\v2$.WAWebProtobufsE2E.BotAvatarMetadataR\x0eavatarMetadata\x12\x1c\n" + + "\tpersonaID\x18\x02 \x01(\tR\tpersonaID\x12L\n" + + "\x0epluginMetadata\x18\x03 \x01(\v2$.WAWebProtobufsE2E.BotPluginMetadataR\x0epluginMetadata\x12g\n" + + "\x17suggestedPromptMetadata\x18\x04 \x01(\v2-.WAWebProtobufsE2E.BotSuggestedPromptMetadataR\x17suggestedPromptMetadata\x12\x1e\n" + + "\n" + + "invokerJID\x18\x05 \x01(\tR\n" + + "invokerJID\x12O\n" + + "\x0fsessionMetadata\x18\x06 \x01(\v2%.WAWebProtobufsE2E.BotSessionMetadataR\x0fsessionMetadata\x12F\n" + + "\fmemuMetadata\x18\a \x01(\v2\".WAWebProtobufsE2E.BotMemuMetadataR\fmemuMetadata\x12\x1a\n" + + "\btimezone\x18\b \x01(\tR\btimezone\x12R\n" + + "\x10reminderMetadata\x18\t \x01(\v2&.WAWebProtobufsE2E.BotReminderMetadataR\x10reminderMetadata\x12I\n" + + "\rmodelMetadata\x18\n" + + " \x01(\v2#.WAWebProtobufsE2E.BotModelMetadataR\rmodelMetadata\x124\n" + + "\x15messageDisclaimerText\x18\v \x01(\tR\x15messageDisclaimerText\x12m\n" + + "\x19progressIndicatorMetadata\x18\f \x01(\v2/.WAWebProtobufsE2E.BotProgressIndicatorMetadataR\x19progressIndicatorMetadata\x12X\n" + + "\x12capabilityMetadata\x18\r \x01(\v2(.WAWebProtobufsE2E.BotCapabilityMetadataR\x12capabilityMetadata\x12O\n" + + "\x0fimagineMetadata\x18\x0e \x01(\v2%.WAWebProtobufsE2E.BotImagineMetadataR\x0fimagineMetadata\x12L\n" + + "\x0ememoryMetadata\x18\x0f \x01(\v2$.WAWebProtobufsE2E.BotMemoryMetadataR\x0ememoryMetadata\x12U\n" + + "\x11renderingMetadata\x18\x10 \x01(\v2'.WAWebProtobufsE2E.BotRenderingMetadataR\x11renderingMetadata\x12U\n" + + "\x12botMetricsMetadata\x18\x11 \x01(\v2%.WAWebProtobufsE2E.BotMetricsMetadataR\x12botMetricsMetadata\x12j\n" + + "\x19botLinkedAccountsMetadata\x18\x12 \x01(\v2,.WAWebProtobufsE2E.BotLinkedAccountsMetadataR\x19botLinkedAccountsMetadata\x12g\n" + + "\x1brichResponseSourcesMetadata\x18\x13 \x01(\v2%.WAWebProtobufsE2E.BotSourcesMetadataR\x1brichResponseSourcesMetadata\x124\n" + + "\x15aiConversationContext\x18\x14 \x01(\fR\x15aiConversationContext\x12p\n" + + "\x1bbotPromotionMessageMetadata\x18\x15 \x01(\v2..WAWebProtobufsE2E.BotPromotionMessageMetadataR\x1bbotPromotionMessageMetadata\x12g\n" + + "\x18botModeSelectionMetadata\x18\x16 \x01(\v2+.WAWebProtobufsE2E.BotModeSelectionMetadataR\x18botModeSelectionMetadata\x12O\n" + + "\x10botQuotaMetadata\x18\x17 \x01(\v2#.WAWebProtobufsE2E.BotQuotaMetadataR\x10botQuotaMetadata\x12g\n" + + "\x18botAgeCollectionMetadata\x18\x18 \x01(\v2+.WAWebProtobufsE2E.BotAgeCollectionMetadataR\x18botAgeCollectionMetadata\"\xba\x03\n" + + "\x12DeviceListMetadata\x12$\n" + + "\rsenderKeyHash\x18\x01 \x01(\fR\rsenderKeyHash\x12(\n" + + "\x0fsenderTimestamp\x18\x02 \x01(\x04R\x0fsenderTimestamp\x12.\n" + + "\x10senderKeyIndexes\x18\x03 \x03(\rB\x02\x10\x01R\x10senderKeyIndexes\x12F\n" + + "\x11senderAccountType\x18\x04 \x01(\x0e2\x18.WAAdv.ADVEncryptionTypeR\x11senderAccountType\x12J\n" + + "\x13receiverAccountType\x18\x05 \x01(\x0e2\x18.WAAdv.ADVEncryptionTypeR\x13receiverAccountType\x12*\n" + + "\x10recipientKeyHash\x18\b \x01(\fR\x10recipientKeyHash\x12.\n" + + "\x12recipientTimestamp\x18\t \x01(\x04R\x12recipientTimestamp\x124\n" + + "\x13recipientKeyIndexes\x18\n" + + " \x03(\rB\x02\x10\x01R\x13recipientKeyIndexes\"c\n" + + "\x0fEmbeddedMessage\x12\x1a\n" + + "\bstanzaID\x18\x01 \x01(\tR\bstanzaID\x124\n" + + "\amessage\x18\x02 \x01(\v2\x1a.WAWebProtobufsE2E.MessageR\amessage\"\xab\x03\n" + + "\rEmbeddedMusic\x120\n" + + "\x13musicContentMediaID\x18\x01 \x01(\tR\x13musicContentMediaID\x12\x16\n" + + "\x06songID\x18\x02 \x01(\tR\x06songID\x12\x16\n" + + "\x06author\x18\x03 \x01(\tR\x06author\x12\x14\n" + + "\x05title\x18\x04 \x01(\tR\x05title\x12,\n" + + "\x11artworkDirectPath\x18\x05 \x01(\tR\x11artworkDirectPath\x12$\n" + + "\rartworkSHA256\x18\x06 \x01(\fR\rartworkSHA256\x12*\n" + + "\x10artworkEncSHA256\x18\a \x01(\fR\x10artworkEncSHA256\x12(\n" + + "\x0fartworkMediaKey\x18\v \x01(\fR\x0fartworkMediaKey\x12,\n" + + "\x11artistAttribution\x18\b \x01(\tR\x11artistAttribution\x12*\n" + + "\x10countryBlocklist\x18\t \x01(\fR\x10countryBlocklist\x12\x1e\n" + + "\n" + + "isExplicit\x18\n" + + " \x01(\bR\n" + + "isExplicit\"\xb6\x01\n" + + "\x0fEmbeddedContent\x12N\n" + + "\x0fembeddedMessage\x18\x01 \x01(\v2\".WAWebProtobufsE2E.EmbeddedMessageH\x00R\x0fembeddedMessage\x12H\n" + + "\rembeddedMusic\x18\x02 \x01(\v2 .WAWebProtobufsE2E.EmbeddedMusicH\x00R\rembeddedMusicB\t\n" + + "\acontent\"=\n" + + "\rTapLinkAction\x12\x14\n" + + "\x05title\x18\x01 \x01(\tR\x05title\x12\x16\n" + + "\x06tapURL\x18\x02 \x01(\tR\x06tapURL\"g\n" + + "\x05Point\x12 \n" + + "\vxDeprecated\x18\x01 \x01(\x05R\vxDeprecated\x12 \n" + + "\vyDeprecated\x18\x02 \x01(\x05R\vyDeprecated\x12\f\n" + + "\x01x\x18\x03 \x01(\x01R\x01x\x12\f\n" + + "\x01y\x18\x04 \x01(\x01R\x01y\"t\n" + + "\bLocation\x12(\n" + + "\x0fdegreesLatitude\x18\x01 \x01(\x01R\x0fdegreesLatitude\x12*\n" + + "\x10degreesLongitude\x18\x02 \x01(\x01R\x10degreesLongitude\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\"\xe6\x05\n" + + "\x0eTemplateButton\x12`\n" + + "\x10quickReplyButton\x18\x01 \x01(\v22.WAWebProtobufsE2E.TemplateButton.QuickReplyButtonH\x00R\x10quickReplyButton\x12K\n" + + "\turlButton\x18\x02 \x01(\v2+.WAWebProtobufsE2E.TemplateButton.URLButtonH\x00R\turlButton\x12N\n" + + "\n" + + "callButton\x18\x03 \x01(\v2,.WAWebProtobufsE2E.TemplateButton.CallButtonH\x00R\n" + + "callButton\x12\x14\n" + + "\x05index\x18\x04 \x01(\rR\x05index\x1a\xa8\x01\n" + + "\n" + + "CallButton\x12L\n" + + "\vdisplayText\x18\x01 \x01(\v2*.WAWebProtobufsE2E.HighlyStructuredMessageR\vdisplayText\x12L\n" + + "\vphoneNumber\x18\x02 \x01(\v2*.WAWebProtobufsE2E.HighlyStructuredMessageR\vphoneNumber\x1a\x97\x01\n" + + "\tURLButton\x12L\n" + + "\vdisplayText\x18\x01 \x01(\v2*.WAWebProtobufsE2E.HighlyStructuredMessageR\vdisplayText\x12<\n" + + "\x03URL\x18\x02 \x01(\v2*.WAWebProtobufsE2E.HighlyStructuredMessageR\x03URL\x1ap\n" + + "\x10QuickReplyButton\x12L\n" + + "\vdisplayText\x18\x01 \x01(\v2*.WAWebProtobufsE2E.HighlyStructuredMessageR\vdisplayText\x12\x0e\n" + + "\x02ID\x18\x02 \x01(\tR\x02IDB\b\n" + + "\x06button\"Y\n" + + "\x05Money\x12\x14\n" + + "\x05value\x18\x01 \x01(\x03R\x05value\x12\x16\n" + + "\x06offset\x18\x02 \x01(\rR\x06offset\x12\"\n" + + "\fcurrencyCode\x18\x03 \x01(\tR\fcurrencyCode\"@\n" + + "\n" + + "ActionLink\x12\x10\n" + + "\x03URL\x18\x01 \x01(\tR\x03URL\x12 \n" + + "\vbuttonTitle\x18\x02 \x01(\tR\vbuttonTitle\"N\n" + + "\fGroupMention\x12\x1a\n" + + "\bgroupJID\x18\x01 \x01(\tR\bgroupJID\x12\"\n" + + "\fgroupSubject\x18\x02 \x01(\tR\fgroupSubject\"f\n" + + "\x14MessageSecretMessage\x12\x18\n" + + "\aversion\x18\x01 \x01(\x0fR\aversion\x12\x14\n" + + "\x05encIV\x18\x02 \x01(\fR\x05encIV\x12\x1e\n" + + "\n" + + "encPayload\x18\x03 \x01(\fR\n" + + "encPayload\"\x82\x01\n" + + "\x12MediaNotifyMessage\x12&\n" + + "\x0eexpressPathURL\x18\x01 \x01(\tR\x0eexpressPathURL\x12$\n" + + "\rfileEncSHA256\x18\x02 \x01(\fR\rfileEncSHA256\x12\x1e\n" + + "\n" + + "fileLength\x18\x03 \x01(\x04R\n" + + "fileLength\"V\n" + + "\x1eLIDMigrationMappingSyncMessage\x124\n" + + "\x15encodedMappingPayload\x18\x01 \x01(\fR\x15encodedMappingPayload\"\xbb\x02\n" + + "\x0eUrlTrackingMap\x12o\n" + + "\x16urlTrackingMapElements\x18\x01 \x03(\v27.WAWebProtobufsE2E.UrlTrackingMap.UrlTrackingMapElementR\x16urlTrackingMapElements\x1a\xb7\x01\n" + + "\x15UrlTrackingMapElement\x12 \n" + + "\voriginalURL\x18\x01 \x01(\tR\voriginalURL\x120\n" + + "\x13unconsentedUsersURL\x18\x02 \x01(\tR\x13unconsentedUsersURL\x12,\n" + + "\x11consentedUsersURL\x18\x03 \x01(\tR\x11consentedUsersURL\x12\x1c\n" + + "\tcardIndex\x18\x04 \x01(\rR\tcardIndex\"\x99\x01\n" + + "\rAIQueryFanout\x124\n" + + "\n" + + "messageKey\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\n" + + "messageKey\x124\n" + + "\amessage\x18\x02 \x01(\v2\x1a.WAWebProtobufsE2E.MessageR\amessage\x12\x1c\n" + + "\ttimestamp\x18\x03 \x01(\x03R\ttimestamp\"K\n" + + "\vMemberLabel\x12\x14\n" + + "\x05label\x18\x01 \x01(\tR\x05label\x12&\n" + + "\x0elabelTimestamp\x18\x02 \x01(\x03R\x0elabelTimestamp*E\n" + + "\x0fPollContentType\x12\x1d\n" + + "\x19UNKNOWN_POLL_CONTENT_TYPE\x10\x00\x12\b\n" + + "\x04TEXT\x10\x01\x12\t\n" + + "\x05IMAGE\x10\x02*\xba\x02\n" + + "\x1cPeerDataOperationRequestType\x12\x12\n" + + "\x0eUPLOAD_STICKER\x10\x00\x12!\n" + + "\x1dSEND_RECENT_STICKER_BOOTSTRAP\x10\x01\x12\x19\n" + + "\x15GENERATE_LINK_PREVIEW\x10\x02\x12\x1a\n" + + "\x16HISTORY_SYNC_ON_DEMAND\x10\x03\x12\x1e\n" + + "\x1aPLACEHOLDER_MESSAGE_RESEND\x10\x04\x12\x1e\n" + + "\x1aWAFFLE_LINKING_NONCE_FETCH\x10\x05\x12\x1f\n" + + "\x1bFULL_HISTORY_SYNC_ON_DEMAND\x10\x06\x12\x1e\n" + + "\x1aCOMPANION_META_NONCE_FETCH\x10\a\x12+\n" + + "'COMPANION_SYNCD_SNAPSHOT_FATAL_RECOVERY\x10\b*\xdd\x04\n" + + "\x14BotMetricsEntryPoint\x12\v\n" + + "\aFAVICON\x10\x01\x12\f\n" + + "\bCHATLIST\x10\x02\x12#\n" + + "\x1fAISEARCH_NULL_STATE_PAPER_PLANE\x10\x03\x12\"\n" + + "\x1eAISEARCH_NULL_STATE_SUGGESTION\x10\x04\x12\"\n" + + "\x1eAISEARCH_TYPE_AHEAD_SUGGESTION\x10\x05\x12#\n" + + "\x1fAISEARCH_TYPE_AHEAD_PAPER_PLANE\x10\x06\x12'\n" + + "#AISEARCH_TYPE_AHEAD_RESULT_CHATLIST\x10\a\x12'\n" + + "#AISEARCH_TYPE_AHEAD_RESULT_MESSAGES\x10\b\x12\x16\n" + + "\x12AIVOICE_SEARCH_BAR\x10\t\x12\x13\n" + + "\x0fAIVOICE_FAVICON\x10\n" + + "\x12\f\n" + + "\bAISTUDIO\x10\v\x12\f\n" + + "\bDEEPLINK\x10\f\x12\x10\n" + + "\fNOTIFICATION\x10\r\x12\x1a\n" + + "\x16PROFILE_MESSAGE_BUTTON\x10\x0e\x12\v\n" + + "\aFORWARD\x10\x0f\x12\x10\n" + + "\fAPP_SHORTCUT\x10\x10\x12\r\n" + + "\tFF_FAMILY\x10\x11\x12\n" + + "\n" + + "\x06AI_TAB\x10\x12\x12\v\n" + + "\aAI_HOME\x10\x13\x12\x19\n" + + "\x15AI_DEEPLINK_IMMERSIVE\x10\x14\x12\x0f\n" + + "\vAI_DEEPLINK\x10\x15\x12#\n" + + "\x1fMETA_AI_CHAT_SHORTCUT_AI_STUDIO\x10\x16\x12\x1f\n" + + "\x1bUGC_CHAT_SHORTCUT_AI_STUDIO\x10\x17\x12\x16\n" + + "\x12NEW_CHAT_AI_STUDIO\x10\x18*}\n" + + "\x1aBotMetricsThreadEntryPoint\x12\x11\n" + + "\rAI_TAB_THREAD\x10\x01\x12\x12\n" + + "\x0eAI_HOME_THREAD\x10\x02\x12 \n" + + "\x1cAI_DEEPLINK_IMMERSIVE_THREAD\x10\x03\x12\x16\n" + + "\x12AI_DEEPLINK_THREAD\x10\x04*}\n" + + "\x10BotSessionSource\x12\b\n" + + "\x04NONE\x10\x00\x12\x0e\n" + + "\n" + + "NULL_STATE\x10\x01\x12\r\n" + + "\tTYPEAHEAD\x10\x02\x12\x0e\n" + + "\n" + + "USER_INPUT\x10\x03\x12\r\n" + + "\tEMU_FLASH\x10\x04\x12\x16\n" + + "\x12EMU_FLASH_FOLLOWUP\x10\x05\x12\t\n" + + "\x05VOICE\x10\x06*J\n" + + "\bKeepType\x12\x15\n" + + "\x11UNKNOWN_KEEP_TYPE\x10\x00\x12\x10\n" + + "\fKEEP_FOR_ALL\x10\x01\x12\x15\n" + + "\x11UNDO_KEEP_FOR_ALL\x10\x02B!Z\x1fgithub.com/techwiz37/waSocket/proto/waE2E" var ( file_waE2E_WAWebProtobufsE2E_proto_rawDescOnce sync.Once - file_waE2E_WAWebProtobufsE2E_proto_rawDescData = file_waE2E_WAWebProtobufsE2E_proto_rawDesc + file_waE2E_WAWebProtobufsE2E_proto_rawDescData []byte ) func file_waE2E_WAWebProtobufsE2E_proto_rawDescGZIP() []byte { file_waE2E_WAWebProtobufsE2E_proto_rawDescOnce.Do(func() { - file_waE2E_WAWebProtobufsE2E_proto_rawDescData = protoimpl.X.CompressGZIP(file_waE2E_WAWebProtobufsE2E_proto_rawDescData) + file_waE2E_WAWebProtobufsE2E_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waE2E_WAWebProtobufsE2E_proto_rawDesc), len(file_waE2E_WAWebProtobufsE2E_proto_rawDesc))) }) return file_waE2E_WAWebProtobufsE2E_proto_rawDescData } -var file_waE2E_WAWebProtobufsE2E_proto_enumTypes = make([]protoimpl.EnumInfo, 80) -var file_waE2E_WAWebProtobufsE2E_proto_msgTypes = make([]protoimpl.MessageInfo, 215) +var file_waE2E_WAWebProtobufsE2E_proto_enumTypes = make([]protoimpl.EnumInfo, 85) +var file_waE2E_WAWebProtobufsE2E_proto_msgTypes = make([]protoimpl.MessageInfo, 226) var file_waE2E_WAWebProtobufsE2E_proto_goTypes = []any{ (PollContentType)(0), // 0: WAWebProtobufsE2E.PollContentType (PeerDataOperationRequestType)(0), // 1: WAWebProtobufsE2E.PeerDataOperationRequestType @@ -22565,700 +25760,738 @@ var file_waE2E_WAWebProtobufsE2E_proto_goTypes = []any{ (StatusNotificationMessage_StatusNotificationType)(0), // 44: WAWebProtobufsE2E.StatusNotificationMessage.StatusNotificationType (InvoiceMessage_AttachmentType)(0), // 45: WAWebProtobufsE2E.InvoiceMessage.AttachmentType (ImageMessage_ImageSourceType)(0), // 46: WAWebProtobufsE2E.ImageMessage.ImageSourceType - (ContextInfo_PairedMediaType)(0), // 47: WAWebProtobufsE2E.ContextInfo.PairedMediaType - (ContextInfo_StatusAttributionType)(0), // 48: WAWebProtobufsE2E.ContextInfo.StatusAttributionType - (ContextInfo_ForwardedNewsletterMessageInfo_ContentType)(0), // 49: WAWebProtobufsE2E.ContextInfo.ForwardedNewsletterMessageInfo.ContentType - (ContextInfo_ExternalAdReplyInfo_MediaType)(0), // 50: WAWebProtobufsE2E.ContextInfo.ExternalAdReplyInfo.MediaType - (ContextInfo_AdReplyInfo_MediaType)(0), // 51: WAWebProtobufsE2E.ContextInfo.AdReplyInfo.MediaType - (BotPluginMetadata_PluginType)(0), // 52: WAWebProtobufsE2E.BotPluginMetadata.PluginType - (BotPluginMetadata_SearchProvider)(0), // 53: WAWebProtobufsE2E.BotPluginMetadata.SearchProvider - (BotLinkedAccount_BotLinkedAccountType)(0), // 54: WAWebProtobufsE2E.BotLinkedAccount.BotLinkedAccountType - (AIRichResponseMessage_AIRichResponseSubMessageType)(0), // 55: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessageType - (AIRichResponseMessage_AIRichResponseMessageType)(0), // 56: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMessageType - (AIRichResponseMessage_AIRichResponseContentItemsMetadata_ContentType)(0), // 57: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.ContentType - (AIRichResponseMessage_AIRichResponseDynamicMetadata_AIRichResponseDynamicMetadataType)(0), // 58: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseDynamicMetadata.AIRichResponseDynamicMetadataType - (AIRichResponseMessage_AIRichResponseCodeMetadata_AIRichResponseCodeHighlightType)(0), // 59: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata.AIRichResponseCodeHighlightType - (AIRichResponseMessage_AIRichResponseInlineImageMetadata_AIRichResponseImageAlignment)(0), // 60: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseInlineImageMetadata.AIRichResponseImageAlignment - (BotMediaMetadata_OrientationType)(0), // 61: WAWebProtobufsE2E.BotMediaMetadata.OrientationType - (BotReminderMetadata_ReminderFrequency)(0), // 62: WAWebProtobufsE2E.BotReminderMetadata.ReminderFrequency - (BotReminderMetadata_ReminderAction)(0), // 63: WAWebProtobufsE2E.BotReminderMetadata.ReminderAction - (BotModelMetadata_PremiumModelStatus)(0), // 64: WAWebProtobufsE2E.BotModelMetadata.PremiumModelStatus - (BotModelMetadata_ModelType)(0), // 65: WAWebProtobufsE2E.BotModelMetadata.ModelType - (BotProgressIndicatorMetadata_BotPlanningStepMetadata_BotSearchSourceProvider)(0), // 66: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotSearchSourceProvider - (BotProgressIndicatorMetadata_BotPlanningStepMetadata_PlanningStepStatus)(0), // 67: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.PlanningStepStatus - (BotProgressIndicatorMetadata_BotPlanningStepMetadata_BotPlanningSearchSourcesMetadata_BotPlanningSearchSourceProvider)(0), // 68: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourcesMetadata.BotPlanningSearchSourceProvider - (BotCapabilityMetadata_BotCapabilityType)(0), // 69: WAWebProtobufsE2E.BotCapabilityMetadata.BotCapabilityType - (BotImagineMetadata_ImagineType)(0), // 70: WAWebProtobufsE2E.BotImagineMetadata.ImagineType - (BotSourcesMetadata_BotSourceItem_SourceProvider)(0), // 71: WAWebProtobufsE2E.BotSourcesMetadata.BotSourceItem.SourceProvider - (MessageAssociation_AssociationType)(0), // 72: WAWebProtobufsE2E.MessageAssociation.AssociationType - (MessageContextInfo_MessageAddonExpiryType)(0), // 73: WAWebProtobufsE2E.MessageContextInfo.MessageAddonExpiryType - (InteractiveAnnotation_StatusLinkType)(0), // 74: WAWebProtobufsE2E.InteractiveAnnotation.StatusLinkType - (HydratedTemplateButton_HydratedURLButton_WebviewPresentationType)(0), // 75: WAWebProtobufsE2E.HydratedTemplateButton.HydratedURLButton.WebviewPresentationType - (PaymentBackground_Type)(0), // 76: WAWebProtobufsE2E.PaymentBackground.Type - (DisappearingMode_Trigger)(0), // 77: WAWebProtobufsE2E.DisappearingMode.Trigger - (DisappearingMode_Initiator)(0), // 78: WAWebProtobufsE2E.DisappearingMode.Initiator - (ProcessedVideo_VideoQuality)(0), // 79: WAWebProtobufsE2E.ProcessedVideo.VideoQuality - (*StickerPackMessage)(nil), // 80: WAWebProtobufsE2E.StickerPackMessage - (*PlaceholderMessage)(nil), // 81: WAWebProtobufsE2E.PlaceholderMessage - (*BCallMessage)(nil), // 82: WAWebProtobufsE2E.BCallMessage - (*CallLogMessage)(nil), // 83: WAWebProtobufsE2E.CallLogMessage - (*ScheduledCallEditMessage)(nil), // 84: WAWebProtobufsE2E.ScheduledCallEditMessage - (*ScheduledCallCreationMessage)(nil), // 85: WAWebProtobufsE2E.ScheduledCallCreationMessage - (*EventResponseMessage)(nil), // 86: WAWebProtobufsE2E.EventResponseMessage - (*PinInChatMessage)(nil), // 87: WAWebProtobufsE2E.PinInChatMessage - (*PollCreationMessage)(nil), // 88: WAWebProtobufsE2E.PollCreationMessage - (*ButtonsResponseMessage)(nil), // 89: WAWebProtobufsE2E.ButtonsResponseMessage - (*ButtonsMessage)(nil), // 90: WAWebProtobufsE2E.ButtonsMessage - (*SecretEncryptedMessage)(nil), // 91: WAWebProtobufsE2E.SecretEncryptedMessage - (*GroupInviteMessage)(nil), // 92: WAWebProtobufsE2E.GroupInviteMessage - (*InteractiveResponseMessage)(nil), // 93: WAWebProtobufsE2E.InteractiveResponseMessage - (*InteractiveMessage)(nil), // 94: WAWebProtobufsE2E.InteractiveMessage - (*ListResponseMessage)(nil), // 95: WAWebProtobufsE2E.ListResponseMessage - (*ListMessage)(nil), // 96: WAWebProtobufsE2E.ListMessage - (*OrderMessage)(nil), // 97: WAWebProtobufsE2E.OrderMessage - (*PaymentInviteMessage)(nil), // 98: WAWebProtobufsE2E.PaymentInviteMessage - (*HighlyStructuredMessage)(nil), // 99: WAWebProtobufsE2E.HighlyStructuredMessage - (*PeerDataOperationRequestResponseMessage)(nil), // 100: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage - (*HistorySyncNotification)(nil), // 101: WAWebProtobufsE2E.HistorySyncNotification - (*RequestWelcomeMessageMetadata)(nil), // 102: WAWebProtobufsE2E.RequestWelcomeMessageMetadata - (*ProtocolMessage)(nil), // 103: WAWebProtobufsE2E.ProtocolMessage - (*CloudAPIThreadControlNotification)(nil), // 104: WAWebProtobufsE2E.CloudAPIThreadControlNotification - (*BotFeedbackMessage)(nil), // 105: WAWebProtobufsE2E.BotFeedbackMessage - (*VideoMessage)(nil), // 106: WAWebProtobufsE2E.VideoMessage - (*ExtendedTextMessage)(nil), // 107: WAWebProtobufsE2E.ExtendedTextMessage - (*PaymentLinkMetadata)(nil), // 108: WAWebProtobufsE2E.PaymentLinkMetadata - (*StatusNotificationMessage)(nil), // 109: WAWebProtobufsE2E.StatusNotificationMessage - (*InvoiceMessage)(nil), // 110: WAWebProtobufsE2E.InvoiceMessage - (*ImageMessage)(nil), // 111: WAWebProtobufsE2E.ImageMessage - (*ContextInfo)(nil), // 112: WAWebProtobufsE2E.ContextInfo - (*BotPluginMetadata)(nil), // 113: WAWebProtobufsE2E.BotPluginMetadata - (*BotLinkedAccount)(nil), // 114: WAWebProtobufsE2E.BotLinkedAccount - (*AIRichResponseMessage)(nil), // 115: WAWebProtobufsE2E.AIRichResponseMessage - (*BotMediaMetadata)(nil), // 116: WAWebProtobufsE2E.BotMediaMetadata - (*BotReminderMetadata)(nil), // 117: WAWebProtobufsE2E.BotReminderMetadata - (*BotModelMetadata)(nil), // 118: WAWebProtobufsE2E.BotModelMetadata - (*BotProgressIndicatorMetadata)(nil), // 119: WAWebProtobufsE2E.BotProgressIndicatorMetadata - (*BotCapabilityMetadata)(nil), // 120: WAWebProtobufsE2E.BotCapabilityMetadata - (*BotImagineMetadata)(nil), // 121: WAWebProtobufsE2E.BotImagineMetadata - (*BotSourcesMetadata)(nil), // 122: WAWebProtobufsE2E.BotSourcesMetadata - (*MessageAssociation)(nil), // 123: WAWebProtobufsE2E.MessageAssociation - (*MessageContextInfo)(nil), // 124: WAWebProtobufsE2E.MessageContextInfo - (*InteractiveAnnotation)(nil), // 125: WAWebProtobufsE2E.InteractiveAnnotation - (*HydratedTemplateButton)(nil), // 126: WAWebProtobufsE2E.HydratedTemplateButton - (*PaymentBackground)(nil), // 127: WAWebProtobufsE2E.PaymentBackground - (*DisappearingMode)(nil), // 128: WAWebProtobufsE2E.DisappearingMode - (*ProcessedVideo)(nil), // 129: WAWebProtobufsE2E.ProcessedVideo - (*Message)(nil), // 130: WAWebProtobufsE2E.Message - (*AlbumMessage)(nil), // 131: WAWebProtobufsE2E.AlbumMessage - (*MessageHistoryBundle)(nil), // 132: WAWebProtobufsE2E.MessageHistoryBundle - (*EncEventResponseMessage)(nil), // 133: WAWebProtobufsE2E.EncEventResponseMessage - (*EventMessage)(nil), // 134: WAWebProtobufsE2E.EventMessage - (*CommentMessage)(nil), // 135: WAWebProtobufsE2E.CommentMessage - (*EncCommentMessage)(nil), // 136: WAWebProtobufsE2E.EncCommentMessage - (*EncReactionMessage)(nil), // 137: WAWebProtobufsE2E.EncReactionMessage - (*KeepInChatMessage)(nil), // 138: WAWebProtobufsE2E.KeepInChatMessage - (*PollResultSnapshotMessage)(nil), // 139: WAWebProtobufsE2E.PollResultSnapshotMessage - (*PollVoteMessage)(nil), // 140: WAWebProtobufsE2E.PollVoteMessage - (*PollEncValue)(nil), // 141: WAWebProtobufsE2E.PollEncValue - (*PollUpdateMessageMetadata)(nil), // 142: WAWebProtobufsE2E.PollUpdateMessageMetadata - (*PollUpdateMessage)(nil), // 143: WAWebProtobufsE2E.PollUpdateMessage - (*StickerSyncRMRMessage)(nil), // 144: WAWebProtobufsE2E.StickerSyncRMRMessage - (*ReactionMessage)(nil), // 145: WAWebProtobufsE2E.ReactionMessage - (*FutureProofMessage)(nil), // 146: WAWebProtobufsE2E.FutureProofMessage - (*DeviceSentMessage)(nil), // 147: WAWebProtobufsE2E.DeviceSentMessage - (*RequestPhoneNumberMessage)(nil), // 148: WAWebProtobufsE2E.RequestPhoneNumberMessage - (*NewsletterAdminInviteMessage)(nil), // 149: WAWebProtobufsE2E.NewsletterAdminInviteMessage - (*ProductMessage)(nil), // 150: WAWebProtobufsE2E.ProductMessage - (*TemplateButtonReplyMessage)(nil), // 151: WAWebProtobufsE2E.TemplateButtonReplyMessage - (*TemplateMessage)(nil), // 152: WAWebProtobufsE2E.TemplateMessage - (*StickerMessage)(nil), // 153: WAWebProtobufsE2E.StickerMessage - (*LiveLocationMessage)(nil), // 154: WAWebProtobufsE2E.LiveLocationMessage - (*CancelPaymentRequestMessage)(nil), // 155: WAWebProtobufsE2E.CancelPaymentRequestMessage - (*DeclinePaymentRequestMessage)(nil), // 156: WAWebProtobufsE2E.DeclinePaymentRequestMessage - (*RequestPaymentMessage)(nil), // 157: WAWebProtobufsE2E.RequestPaymentMessage - (*SendPaymentMessage)(nil), // 158: WAWebProtobufsE2E.SendPaymentMessage - (*ContactsArrayMessage)(nil), // 159: WAWebProtobufsE2E.ContactsArrayMessage - (*InitialSecurityNotificationSettingSync)(nil), // 160: WAWebProtobufsE2E.InitialSecurityNotificationSettingSync - (*PeerDataOperationRequestMessage)(nil), // 161: WAWebProtobufsE2E.PeerDataOperationRequestMessage - (*FullHistorySyncOnDemandRequestMetadata)(nil), // 162: WAWebProtobufsE2E.FullHistorySyncOnDemandRequestMetadata - (*AppStateFatalExceptionNotification)(nil), // 163: WAWebProtobufsE2E.AppStateFatalExceptionNotification - (*AppStateSyncKeyRequest)(nil), // 164: WAWebProtobufsE2E.AppStateSyncKeyRequest - (*AppStateSyncKeyShare)(nil), // 165: WAWebProtobufsE2E.AppStateSyncKeyShare - (*AppStateSyncKeyData)(nil), // 166: WAWebProtobufsE2E.AppStateSyncKeyData - (*AppStateSyncKeyFingerprint)(nil), // 167: WAWebProtobufsE2E.AppStateSyncKeyFingerprint - (*AppStateSyncKeyId)(nil), // 168: WAWebProtobufsE2E.AppStateSyncKeyId - (*AppStateSyncKey)(nil), // 169: WAWebProtobufsE2E.AppStateSyncKey - (*Chat)(nil), // 170: WAWebProtobufsE2E.Chat - (*Call)(nil), // 171: WAWebProtobufsE2E.Call - (*AudioMessage)(nil), // 172: WAWebProtobufsE2E.AudioMessage - (*DocumentMessage)(nil), // 173: WAWebProtobufsE2E.DocumentMessage - (*LinkPreviewMetadata)(nil), // 174: WAWebProtobufsE2E.LinkPreviewMetadata - (*URLMetadata)(nil), // 175: WAWebProtobufsE2E.URLMetadata - (*MMSThumbnailMetadata)(nil), // 176: WAWebProtobufsE2E.MMSThumbnailMetadata - (*LocationMessage)(nil), // 177: WAWebProtobufsE2E.LocationMessage - (*ContactMessage)(nil), // 178: WAWebProtobufsE2E.ContactMessage - (*SenderKeyDistributionMessage)(nil), // 179: WAWebProtobufsE2E.SenderKeyDistributionMessage - (*BotAvatarMetadata)(nil), // 180: WAWebProtobufsE2E.BotAvatarMetadata - (*BotSuggestedPromptMetadata)(nil), // 181: WAWebProtobufsE2E.BotSuggestedPromptMetadata - (*BotPromptSuggestions)(nil), // 182: WAWebProtobufsE2E.BotPromptSuggestions - (*BotPromptSuggestion)(nil), // 183: WAWebProtobufsE2E.BotPromptSuggestion - (*BotLinkedAccountsMetadata)(nil), // 184: WAWebProtobufsE2E.BotLinkedAccountsMetadata - (*BotMemoryMetadata)(nil), // 185: WAWebProtobufsE2E.BotMemoryMetadata - (*BotMemoryFact)(nil), // 186: WAWebProtobufsE2E.BotMemoryFact - (*BotRenderingMetadata)(nil), // 187: WAWebProtobufsE2E.BotRenderingMetadata - (*BotMetricsMetadata)(nil), // 188: WAWebProtobufsE2E.BotMetricsMetadata - (*BotSessionMetadata)(nil), // 189: WAWebProtobufsE2E.BotSessionMetadata - (*BotMemuMetadata)(nil), // 190: WAWebProtobufsE2E.BotMemuMetadata - (*BotMetadata)(nil), // 191: WAWebProtobufsE2E.BotMetadata - (*DeviceListMetadata)(nil), // 192: WAWebProtobufsE2E.DeviceListMetadata - (*EmbeddedMessage)(nil), // 193: WAWebProtobufsE2E.EmbeddedMessage - (*EmbeddedMusic)(nil), // 194: WAWebProtobufsE2E.EmbeddedMusic - (*EmbeddedContent)(nil), // 195: WAWebProtobufsE2E.EmbeddedContent - (*TapLinkAction)(nil), // 196: WAWebProtobufsE2E.TapLinkAction - (*Point)(nil), // 197: WAWebProtobufsE2E.Point - (*Location)(nil), // 198: WAWebProtobufsE2E.Location - (*TemplateButton)(nil), // 199: WAWebProtobufsE2E.TemplateButton - (*Money)(nil), // 200: WAWebProtobufsE2E.Money - (*ActionLink)(nil), // 201: WAWebProtobufsE2E.ActionLink - (*GroupMention)(nil), // 202: WAWebProtobufsE2E.GroupMention - (*MessageSecretMessage)(nil), // 203: WAWebProtobufsE2E.MessageSecretMessage - (*MediaNotifyMessage)(nil), // 204: WAWebProtobufsE2E.MediaNotifyMessage - (*LIDMigrationMappingSyncMessage)(nil), // 205: WAWebProtobufsE2E.LIDMigrationMappingSyncMessage - (*UrlTrackingMap)(nil), // 206: WAWebProtobufsE2E.UrlTrackingMap - (*AIQueryFanout)(nil), // 207: WAWebProtobufsE2E.AIQueryFanout - (*StickerPackMessage_Sticker)(nil), // 208: WAWebProtobufsE2E.StickerPackMessage.Sticker - (*CallLogMessage_CallParticipant)(nil), // 209: WAWebProtobufsE2E.CallLogMessage.CallParticipant - (*PollCreationMessage_Option)(nil), // 210: WAWebProtobufsE2E.PollCreationMessage.Option - (*ButtonsMessage_Button)(nil), // 211: WAWebProtobufsE2E.ButtonsMessage.Button - (*ButtonsMessage_Button_NativeFlowInfo)(nil), // 212: WAWebProtobufsE2E.ButtonsMessage.Button.NativeFlowInfo - (*ButtonsMessage_Button_ButtonText)(nil), // 213: WAWebProtobufsE2E.ButtonsMessage.Button.ButtonText - (*InteractiveResponseMessage_Body)(nil), // 214: WAWebProtobufsE2E.InteractiveResponseMessage.Body - (*InteractiveResponseMessage_NativeFlowResponseMessage)(nil), // 215: WAWebProtobufsE2E.InteractiveResponseMessage.NativeFlowResponseMessage - (*InteractiveMessage_ShopMessage)(nil), // 216: WAWebProtobufsE2E.InteractiveMessage.ShopMessage - (*InteractiveMessage_CarouselMessage)(nil), // 217: WAWebProtobufsE2E.InteractiveMessage.CarouselMessage - (*InteractiveMessage_NativeFlowMessage)(nil), // 218: WAWebProtobufsE2E.InteractiveMessage.NativeFlowMessage - (*InteractiveMessage_CollectionMessage)(nil), // 219: WAWebProtobufsE2E.InteractiveMessage.CollectionMessage - (*InteractiveMessage_Footer)(nil), // 220: WAWebProtobufsE2E.InteractiveMessage.Footer - (*InteractiveMessage_Body)(nil), // 221: WAWebProtobufsE2E.InteractiveMessage.Body - (*InteractiveMessage_Header)(nil), // 222: WAWebProtobufsE2E.InteractiveMessage.Header - (*InteractiveMessage_NativeFlowMessage_NativeFlowButton)(nil), // 223: WAWebProtobufsE2E.InteractiveMessage.NativeFlowMessage.NativeFlowButton - (*ListResponseMessage_SingleSelectReply)(nil), // 224: WAWebProtobufsE2E.ListResponseMessage.SingleSelectReply - (*ListMessage_ProductListInfo)(nil), // 225: WAWebProtobufsE2E.ListMessage.ProductListInfo - (*ListMessage_ProductListHeaderImage)(nil), // 226: WAWebProtobufsE2E.ListMessage.ProductListHeaderImage - (*ListMessage_ProductSection)(nil), // 227: WAWebProtobufsE2E.ListMessage.ProductSection - (*ListMessage_Product)(nil), // 228: WAWebProtobufsE2E.ListMessage.Product - (*ListMessage_Section)(nil), // 229: WAWebProtobufsE2E.ListMessage.Section - (*ListMessage_Row)(nil), // 230: WAWebProtobufsE2E.ListMessage.Row - (*HighlyStructuredMessage_HSMLocalizableParameter)(nil), // 231: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter - (*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime)(nil), // 232: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime - (*HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency)(nil), // 233: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMCurrency - (*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent)(nil), // 234: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent - (*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeUnixEpoch)(nil), // 235: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeUnixEpoch - (*PeerDataOperationRequestResponseMessage_PeerDataOperationResult)(nil), // 236: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult - (*PeerDataOperationRequestResponseMessage_PeerDataOperationResult_CompanionMetaNonceFetchResponse)(nil), // 237: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.CompanionMetaNonceFetchResponse - (*PeerDataOperationRequestResponseMessage_PeerDataOperationResult_WaffleNonceFetchResponse)(nil), // 238: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.WaffleNonceFetchResponse - (*PeerDataOperationRequestResponseMessage_PeerDataOperationResult_FullHistorySyncOnDemandRequestResponse)(nil), // 239: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.FullHistorySyncOnDemandRequestResponse - (*PeerDataOperationRequestResponseMessage_PeerDataOperationResult_PlaceholderMessageResendResponse)(nil), // 240: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse - (*PeerDataOperationRequestResponseMessage_PeerDataOperationResult_LinkPreviewResponse)(nil), // 241: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse - (*PeerDataOperationRequestResponseMessage_PeerDataOperationResult_LinkPreviewResponse_LinkPreviewHighQualityThumbnail)(nil), // 242: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail - (*PaymentLinkMetadata_PaymentLinkHeader)(nil), // 243: WAWebProtobufsE2E.PaymentLinkMetadata.PaymentLinkHeader - (*PaymentLinkMetadata_PaymentLinkButton)(nil), // 244: WAWebProtobufsE2E.PaymentLinkMetadata.PaymentLinkButton - (*ContextInfo_ForwardedNewsletterMessageInfo)(nil), // 245: WAWebProtobufsE2E.ContextInfo.ForwardedNewsletterMessageInfo - (*ContextInfo_ExternalAdReplyInfo)(nil), // 246: WAWebProtobufsE2E.ContextInfo.ExternalAdReplyInfo - (*ContextInfo_AdReplyInfo)(nil), // 247: WAWebProtobufsE2E.ContextInfo.AdReplyInfo - (*ContextInfo_FeatureEligibilities)(nil), // 248: WAWebProtobufsE2E.ContextInfo.FeatureEligibilities - (*ContextInfo_DataSharingContext)(nil), // 249: WAWebProtobufsE2E.ContextInfo.DataSharingContext - (*ContextInfo_ForwardedAIBotMessageInfo)(nil), // 250: WAWebProtobufsE2E.ContextInfo.ForwardedAIBotMessageInfo - (*ContextInfo_UTMInfo)(nil), // 251: WAWebProtobufsE2E.ContextInfo.UTMInfo - (*ContextInfo_BusinessMessageForwardInfo)(nil), // 252: WAWebProtobufsE2E.ContextInfo.BusinessMessageForwardInfo - (*ContextInfo_DataSharingContext_Parameters)(nil), // 253: WAWebProtobufsE2E.ContextInfo.DataSharingContext.Parameters - (*AIRichResponseMessage_AIRichResponseContentItemsMetadata)(nil), // 254: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata - (*AIRichResponseMessage_AIRichResponseDynamicMetadata)(nil), // 255: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseDynamicMetadata - (*AIRichResponseMessage_AIRichResponseCodeMetadata)(nil), // 256: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata - (*AIRichResponseMessage_AIRichResponseInlineImageMetadata)(nil), // 257: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseInlineImageMetadata - (*AIRichResponseMessage_AIRichResponseSubMessage)(nil), // 258: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage - (*AIRichResponseMessage_AIRichResponseMapMetadata)(nil), // 259: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMapMetadata - (*AIRichResponseMessage_AIRichResponseLatexMetadata)(nil), // 260: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseLatexMetadata - (*AIRichResponseMessage_AIRichResponseAbstractData)(nil), // 261: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseAbstractData - (*AIRichResponseMessage_AIRichResponseTableMetadata)(nil), // 262: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseTableMetadata - (*AIRichResponseMessage_AIRichResponseGridImageMetadata)(nil), // 263: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseGridImageMetadata - (*AIRichResponseMessage_AIRichResponseImageURL)(nil), // 264: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseImageURL - (*AIRichResponseMessage_AIRichResponseContentItemsMetadata_AIRichResponseContentItemMetadata)(nil), // 265: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.AIRichResponseContentItemMetadata - (*AIRichResponseMessage_AIRichResponseContentItemsMetadata_AIRichResponseReelItem)(nil), // 266: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.AIRichResponseReelItem - (*AIRichResponseMessage_AIRichResponseCodeMetadata_AIRichResponseCodeBlock)(nil), // 267: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata.AIRichResponseCodeBlock - (*AIRichResponseMessage_AIRichResponseMapMetadata_AIRichResponseMapAnnotation)(nil), // 268: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMapMetadata.AIRichResponseMapAnnotation - (*AIRichResponseMessage_AIRichResponseLatexMetadata_AIRichResponseLatexExpression)(nil), // 269: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseLatexMetadata.AIRichResponseLatexExpression - (*AIRichResponseMessage_AIRichResponseTableMetadata_AIRichResponseTableRow)(nil), // 270: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseTableMetadata.AIRichResponseTableRow - (*BotProgressIndicatorMetadata_BotPlanningStepMetadata)(nil), // 271: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata - (*BotProgressIndicatorMetadata_BotPlanningStepMetadata_BotPlanningSearchSourcesMetadata)(nil), // 272: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourcesMetadata - (*BotProgressIndicatorMetadata_BotPlanningStepMetadata_BotPlanningStepSectionMetadata)(nil), // 273: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningStepSectionMetadata - (*BotProgressIndicatorMetadata_BotPlanningStepMetadata_BotPlanningSearchSourceMetadata)(nil), // 274: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourceMetadata - (*BotSourcesMetadata_BotSourceItem)(nil), // 275: WAWebProtobufsE2E.BotSourcesMetadata.BotSourceItem - (*HydratedTemplateButton_HydratedURLButton)(nil), // 276: WAWebProtobufsE2E.HydratedTemplateButton.HydratedURLButton - (*HydratedTemplateButton_HydratedCallButton)(nil), // 277: WAWebProtobufsE2E.HydratedTemplateButton.HydratedCallButton - (*HydratedTemplateButton_HydratedQuickReplyButton)(nil), // 278: WAWebProtobufsE2E.HydratedTemplateButton.HydratedQuickReplyButton - (*PaymentBackground_MediaData)(nil), // 279: WAWebProtobufsE2E.PaymentBackground.MediaData - (*PollResultSnapshotMessage_PollVote)(nil), // 280: WAWebProtobufsE2E.PollResultSnapshotMessage.PollVote - (*ProductMessage_ProductSnapshot)(nil), // 281: WAWebProtobufsE2E.ProductMessage.ProductSnapshot - (*ProductMessage_CatalogSnapshot)(nil), // 282: WAWebProtobufsE2E.ProductMessage.CatalogSnapshot - (*TemplateMessage_HydratedFourRowTemplate)(nil), // 283: WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplate - (*TemplateMessage_FourRowTemplate)(nil), // 284: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate - (*PeerDataOperationRequestMessage_PlaceholderMessageResendRequest)(nil), // 285: WAWebProtobufsE2E.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest - (*PeerDataOperationRequestMessage_FullHistorySyncOnDemandRequest)(nil), // 286: WAWebProtobufsE2E.PeerDataOperationRequestMessage.FullHistorySyncOnDemandRequest - (*PeerDataOperationRequestMessage_HistorySyncOnDemandRequest)(nil), // 287: WAWebProtobufsE2E.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest - (*PeerDataOperationRequestMessage_RequestUrlPreview)(nil), // 288: WAWebProtobufsE2E.PeerDataOperationRequestMessage.RequestUrlPreview - (*PeerDataOperationRequestMessage_RequestStickerReupload)(nil), // 289: WAWebProtobufsE2E.PeerDataOperationRequestMessage.RequestStickerReupload - (*BotRenderingMetadata_Keyword)(nil), // 290: WAWebProtobufsE2E.BotRenderingMetadata.Keyword - (*TemplateButton_CallButton)(nil), // 291: WAWebProtobufsE2E.TemplateButton.CallButton - (*TemplateButton_URLButton)(nil), // 292: WAWebProtobufsE2E.TemplateButton.URLButton - (*TemplateButton_QuickReplyButton)(nil), // 293: WAWebProtobufsE2E.TemplateButton.QuickReplyButton - (*UrlTrackingMap_UrlTrackingMapElement)(nil), // 294: WAWebProtobufsE2E.UrlTrackingMap.UrlTrackingMapElement - (*waCommon.MessageKey)(nil), // 295: WACommon.MessageKey - (*waCommon.LimitSharing)(nil), // 296: WACommon.LimitSharing - (waAdv.ADVEncryptionType)(0), // 297: WAAdv.ADVEncryptionType - (waMmsRetry.MediaRetryNotification_ResultType)(0), // 298: WAMmsRetry.MediaRetryNotification.ResultType - (*waCompanionReg.DeviceProps_HistorySyncConfig)(nil), // 299: WACompanionReg.DeviceProps.HistorySyncConfig + (ContextInfo_StatusSourceType)(0), // 47: WAWebProtobufsE2E.ContextInfo.StatusSourceType + (ContextInfo_PairedMediaType)(0), // 48: WAWebProtobufsE2E.ContextInfo.PairedMediaType + (ContextInfo_StatusAttributionType)(0), // 49: WAWebProtobufsE2E.ContextInfo.StatusAttributionType + (ContextInfo_ForwardedNewsletterMessageInfo_ContentType)(0), // 50: WAWebProtobufsE2E.ContextInfo.ForwardedNewsletterMessageInfo.ContentType + (ContextInfo_ExternalAdReplyInfo_AdType)(0), // 51: WAWebProtobufsE2E.ContextInfo.ExternalAdReplyInfo.AdType + (ContextInfo_ExternalAdReplyInfo_MediaType)(0), // 52: WAWebProtobufsE2E.ContextInfo.ExternalAdReplyInfo.MediaType + (ContextInfo_AdReplyInfo_MediaType)(0), // 53: WAWebProtobufsE2E.ContextInfo.AdReplyInfo.MediaType + (BotPluginMetadata_PluginType)(0), // 54: WAWebProtobufsE2E.BotPluginMetadata.PluginType + (BotPluginMetadata_SearchProvider)(0), // 55: WAWebProtobufsE2E.BotPluginMetadata.SearchProvider + (BotLinkedAccount_BotLinkedAccountType)(0), // 56: WAWebProtobufsE2E.BotLinkedAccount.BotLinkedAccountType + (AIRichResponseMessage_AIRichResponseSubMessageType)(0), // 57: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessageType + (AIRichResponseMessage_AIRichResponseMessageType)(0), // 58: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMessageType + (AIRichResponseMessage_AIRichResponseContentItemsMetadata_ContentType)(0), // 59: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.ContentType + (AIRichResponseMessage_AIRichResponseDynamicMetadata_AIRichResponseDynamicMetadataType)(0), // 60: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseDynamicMetadata.AIRichResponseDynamicMetadataType + (AIRichResponseMessage_AIRichResponseCodeMetadata_AIRichResponseCodeHighlightType)(0), // 61: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata.AIRichResponseCodeHighlightType + (AIRichResponseMessage_AIRichResponseInlineImageMetadata_AIRichResponseImageAlignment)(0), // 62: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseInlineImageMetadata.AIRichResponseImageAlignment + (BotPromotionMessageMetadata_BotPromotionType)(0), // 63: WAWebProtobufsE2E.BotPromotionMessageMetadata.BotPromotionType + (BotMediaMetadata_OrientationType)(0), // 64: WAWebProtobufsE2E.BotMediaMetadata.OrientationType + (BotReminderMetadata_ReminderFrequency)(0), // 65: WAWebProtobufsE2E.BotReminderMetadata.ReminderFrequency + (BotReminderMetadata_ReminderAction)(0), // 66: WAWebProtobufsE2E.BotReminderMetadata.ReminderAction + (BotModelMetadata_PremiumModelStatus)(0), // 67: WAWebProtobufsE2E.BotModelMetadata.PremiumModelStatus + (BotModelMetadata_ModelType)(0), // 68: WAWebProtobufsE2E.BotModelMetadata.ModelType + (BotProgressIndicatorMetadata_BotPlanningStepMetadata_BotSearchSourceProvider)(0), // 69: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotSearchSourceProvider + (BotProgressIndicatorMetadata_BotPlanningStepMetadata_PlanningStepStatus)(0), // 70: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.PlanningStepStatus + (BotProgressIndicatorMetadata_BotPlanningStepMetadata_BotPlanningSearchSourcesMetadata_BotPlanningSearchSourceProvider)(0), // 71: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourcesMetadata.BotPlanningSearchSourceProvider + (BotCapabilityMetadata_BotCapabilityType)(0), // 72: WAWebProtobufsE2E.BotCapabilityMetadata.BotCapabilityType + (BotModeSelectionMetadata_BotUserSelectionMode)(0), // 73: WAWebProtobufsE2E.BotModeSelectionMetadata.BotUserSelectionMode + (BotQuotaMetadata_BotFeatureQuotaMetadata_BotFeatureType)(0), // 74: WAWebProtobufsE2E.BotQuotaMetadata.BotFeatureQuotaMetadata.BotFeatureType + (BotImagineMetadata_ImagineType)(0), // 75: WAWebProtobufsE2E.BotImagineMetadata.ImagineType + (BotSourcesMetadata_BotSourceItem_SourceProvider)(0), // 76: WAWebProtobufsE2E.BotSourcesMetadata.BotSourceItem.SourceProvider + (MessageAssociation_AssociationType)(0), // 77: WAWebProtobufsE2E.MessageAssociation.AssociationType + (MessageContextInfo_MessageAddonExpiryType)(0), // 78: WAWebProtobufsE2E.MessageContextInfo.MessageAddonExpiryType + (InteractiveAnnotation_StatusLinkType)(0), // 79: WAWebProtobufsE2E.InteractiveAnnotation.StatusLinkType + (HydratedTemplateButton_HydratedURLButton_WebviewPresentationType)(0), // 80: WAWebProtobufsE2E.HydratedTemplateButton.HydratedURLButton.WebviewPresentationType + (PaymentBackground_Type)(0), // 81: WAWebProtobufsE2E.PaymentBackground.Type + (DisappearingMode_Trigger)(0), // 82: WAWebProtobufsE2E.DisappearingMode.Trigger + (DisappearingMode_Initiator)(0), // 83: WAWebProtobufsE2E.DisappearingMode.Initiator + (ProcessedVideo_VideoQuality)(0), // 84: WAWebProtobufsE2E.ProcessedVideo.VideoQuality + (*StickerPackMessage)(nil), // 85: WAWebProtobufsE2E.StickerPackMessage + (*PlaceholderMessage)(nil), // 86: WAWebProtobufsE2E.PlaceholderMessage + (*BCallMessage)(nil), // 87: WAWebProtobufsE2E.BCallMessage + (*CallLogMessage)(nil), // 88: WAWebProtobufsE2E.CallLogMessage + (*ScheduledCallEditMessage)(nil), // 89: WAWebProtobufsE2E.ScheduledCallEditMessage + (*ScheduledCallCreationMessage)(nil), // 90: WAWebProtobufsE2E.ScheduledCallCreationMessage + (*EventResponseMessage)(nil), // 91: WAWebProtobufsE2E.EventResponseMessage + (*PinInChatMessage)(nil), // 92: WAWebProtobufsE2E.PinInChatMessage + (*PollCreationMessage)(nil), // 93: WAWebProtobufsE2E.PollCreationMessage + (*ButtonsResponseMessage)(nil), // 94: WAWebProtobufsE2E.ButtonsResponseMessage + (*ButtonsMessage)(nil), // 95: WAWebProtobufsE2E.ButtonsMessage + (*SecretEncryptedMessage)(nil), // 96: WAWebProtobufsE2E.SecretEncryptedMessage + (*GroupInviteMessage)(nil), // 97: WAWebProtobufsE2E.GroupInviteMessage + (*InteractiveResponseMessage)(nil), // 98: WAWebProtobufsE2E.InteractiveResponseMessage + (*InteractiveMessage)(nil), // 99: WAWebProtobufsE2E.InteractiveMessage + (*ListResponseMessage)(nil), // 100: WAWebProtobufsE2E.ListResponseMessage + (*ListMessage)(nil), // 101: WAWebProtobufsE2E.ListMessage + (*OrderMessage)(nil), // 102: WAWebProtobufsE2E.OrderMessage + (*PaymentInviteMessage)(nil), // 103: WAWebProtobufsE2E.PaymentInviteMessage + (*HighlyStructuredMessage)(nil), // 104: WAWebProtobufsE2E.HighlyStructuredMessage + (*PeerDataOperationRequestResponseMessage)(nil), // 105: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage + (*HistorySyncNotification)(nil), // 106: WAWebProtobufsE2E.HistorySyncNotification + (*RequestWelcomeMessageMetadata)(nil), // 107: WAWebProtobufsE2E.RequestWelcomeMessageMetadata + (*ProtocolMessage)(nil), // 108: WAWebProtobufsE2E.ProtocolMessage + (*CloudAPIThreadControlNotification)(nil), // 109: WAWebProtobufsE2E.CloudAPIThreadControlNotification + (*BotFeedbackMessage)(nil), // 110: WAWebProtobufsE2E.BotFeedbackMessage + (*VideoMessage)(nil), // 111: WAWebProtobufsE2E.VideoMessage + (*ExtendedTextMessage)(nil), // 112: WAWebProtobufsE2E.ExtendedTextMessage + (*PaymentLinkMetadata)(nil), // 113: WAWebProtobufsE2E.PaymentLinkMetadata + (*StatusNotificationMessage)(nil), // 114: WAWebProtobufsE2E.StatusNotificationMessage + (*InvoiceMessage)(nil), // 115: WAWebProtobufsE2E.InvoiceMessage + (*ImageMessage)(nil), // 116: WAWebProtobufsE2E.ImageMessage + (*ContextInfo)(nil), // 117: WAWebProtobufsE2E.ContextInfo + (*BotPluginMetadata)(nil), // 118: WAWebProtobufsE2E.BotPluginMetadata + (*BotLinkedAccount)(nil), // 119: WAWebProtobufsE2E.BotLinkedAccount + (*AIRichResponseMessage)(nil), // 120: WAWebProtobufsE2E.AIRichResponseMessage + (*BotPromotionMessageMetadata)(nil), // 121: WAWebProtobufsE2E.BotPromotionMessageMetadata + (*BotMediaMetadata)(nil), // 122: WAWebProtobufsE2E.BotMediaMetadata + (*BotReminderMetadata)(nil), // 123: WAWebProtobufsE2E.BotReminderMetadata + (*BotModelMetadata)(nil), // 124: WAWebProtobufsE2E.BotModelMetadata + (*BotProgressIndicatorMetadata)(nil), // 125: WAWebProtobufsE2E.BotProgressIndicatorMetadata + (*BotCapabilityMetadata)(nil), // 126: WAWebProtobufsE2E.BotCapabilityMetadata + (*BotModeSelectionMetadata)(nil), // 127: WAWebProtobufsE2E.BotModeSelectionMetadata + (*BotQuotaMetadata)(nil), // 128: WAWebProtobufsE2E.BotQuotaMetadata + (*BotImagineMetadata)(nil), // 129: WAWebProtobufsE2E.BotImagineMetadata + (*BotSourcesMetadata)(nil), // 130: WAWebProtobufsE2E.BotSourcesMetadata + (*MessageAssociation)(nil), // 131: WAWebProtobufsE2E.MessageAssociation + (*MessageContextInfo)(nil), // 132: WAWebProtobufsE2E.MessageContextInfo + (*InteractiveAnnotation)(nil), // 133: WAWebProtobufsE2E.InteractiveAnnotation + (*HydratedTemplateButton)(nil), // 134: WAWebProtobufsE2E.HydratedTemplateButton + (*PaymentBackground)(nil), // 135: WAWebProtobufsE2E.PaymentBackground + (*DisappearingMode)(nil), // 136: WAWebProtobufsE2E.DisappearingMode + (*ProcessedVideo)(nil), // 137: WAWebProtobufsE2E.ProcessedVideo + (*Message)(nil), // 138: WAWebProtobufsE2E.Message + (*AlbumMessage)(nil), // 139: WAWebProtobufsE2E.AlbumMessage + (*MessageHistoryMetadata)(nil), // 140: WAWebProtobufsE2E.MessageHistoryMetadata + (*MessageHistoryNotice)(nil), // 141: WAWebProtobufsE2E.MessageHistoryNotice + (*MessageHistoryBundle)(nil), // 142: WAWebProtobufsE2E.MessageHistoryBundle + (*EncEventResponseMessage)(nil), // 143: WAWebProtobufsE2E.EncEventResponseMessage + (*EventMessage)(nil), // 144: WAWebProtobufsE2E.EventMessage + (*CommentMessage)(nil), // 145: WAWebProtobufsE2E.CommentMessage + (*EncCommentMessage)(nil), // 146: WAWebProtobufsE2E.EncCommentMessage + (*EncReactionMessage)(nil), // 147: WAWebProtobufsE2E.EncReactionMessage + (*KeepInChatMessage)(nil), // 148: WAWebProtobufsE2E.KeepInChatMessage + (*PollResultSnapshotMessage)(nil), // 149: WAWebProtobufsE2E.PollResultSnapshotMessage + (*PollVoteMessage)(nil), // 150: WAWebProtobufsE2E.PollVoteMessage + (*PollEncValue)(nil), // 151: WAWebProtobufsE2E.PollEncValue + (*PollUpdateMessageMetadata)(nil), // 152: WAWebProtobufsE2E.PollUpdateMessageMetadata + (*PollUpdateMessage)(nil), // 153: WAWebProtobufsE2E.PollUpdateMessage + (*StickerSyncRMRMessage)(nil), // 154: WAWebProtobufsE2E.StickerSyncRMRMessage + (*ReactionMessage)(nil), // 155: WAWebProtobufsE2E.ReactionMessage + (*FutureProofMessage)(nil), // 156: WAWebProtobufsE2E.FutureProofMessage + (*DeviceSentMessage)(nil), // 157: WAWebProtobufsE2E.DeviceSentMessage + (*RequestPhoneNumberMessage)(nil), // 158: WAWebProtobufsE2E.RequestPhoneNumberMessage + (*NewsletterAdminInviteMessage)(nil), // 159: WAWebProtobufsE2E.NewsletterAdminInviteMessage + (*ProductMessage)(nil), // 160: WAWebProtobufsE2E.ProductMessage + (*TemplateButtonReplyMessage)(nil), // 161: WAWebProtobufsE2E.TemplateButtonReplyMessage + (*TemplateMessage)(nil), // 162: WAWebProtobufsE2E.TemplateMessage + (*StickerMessage)(nil), // 163: WAWebProtobufsE2E.StickerMessage + (*LiveLocationMessage)(nil), // 164: WAWebProtobufsE2E.LiveLocationMessage + (*CancelPaymentRequestMessage)(nil), // 165: WAWebProtobufsE2E.CancelPaymentRequestMessage + (*DeclinePaymentRequestMessage)(nil), // 166: WAWebProtobufsE2E.DeclinePaymentRequestMessage + (*RequestPaymentMessage)(nil), // 167: WAWebProtobufsE2E.RequestPaymentMessage + (*SendPaymentMessage)(nil), // 168: WAWebProtobufsE2E.SendPaymentMessage + (*ContactsArrayMessage)(nil), // 169: WAWebProtobufsE2E.ContactsArrayMessage + (*InitialSecurityNotificationSettingSync)(nil), // 170: WAWebProtobufsE2E.InitialSecurityNotificationSettingSync + (*PeerDataOperationRequestMessage)(nil), // 171: WAWebProtobufsE2E.PeerDataOperationRequestMessage + (*FullHistorySyncOnDemandRequestMetadata)(nil), // 172: WAWebProtobufsE2E.FullHistorySyncOnDemandRequestMetadata + (*AppStateFatalExceptionNotification)(nil), // 173: WAWebProtobufsE2E.AppStateFatalExceptionNotification + (*AppStateSyncKeyRequest)(nil), // 174: WAWebProtobufsE2E.AppStateSyncKeyRequest + (*AppStateSyncKeyShare)(nil), // 175: WAWebProtobufsE2E.AppStateSyncKeyShare + (*AppStateSyncKeyData)(nil), // 176: WAWebProtobufsE2E.AppStateSyncKeyData + (*AppStateSyncKeyFingerprint)(nil), // 177: WAWebProtobufsE2E.AppStateSyncKeyFingerprint + (*AppStateSyncKeyId)(nil), // 178: WAWebProtobufsE2E.AppStateSyncKeyId + (*AppStateSyncKey)(nil), // 179: WAWebProtobufsE2E.AppStateSyncKey + (*Chat)(nil), // 180: WAWebProtobufsE2E.Chat + (*Call)(nil), // 181: WAWebProtobufsE2E.Call + (*AudioMessage)(nil), // 182: WAWebProtobufsE2E.AudioMessage + (*DocumentMessage)(nil), // 183: WAWebProtobufsE2E.DocumentMessage + (*LinkPreviewMetadata)(nil), // 184: WAWebProtobufsE2E.LinkPreviewMetadata + (*URLMetadata)(nil), // 185: WAWebProtobufsE2E.URLMetadata + (*MMSThumbnailMetadata)(nil), // 186: WAWebProtobufsE2E.MMSThumbnailMetadata + (*LocationMessage)(nil), // 187: WAWebProtobufsE2E.LocationMessage + (*ContactMessage)(nil), // 188: WAWebProtobufsE2E.ContactMessage + (*SenderKeyDistributionMessage)(nil), // 189: WAWebProtobufsE2E.SenderKeyDistributionMessage + (*BotAvatarMetadata)(nil), // 190: WAWebProtobufsE2E.BotAvatarMetadata + (*BotSuggestedPromptMetadata)(nil), // 191: WAWebProtobufsE2E.BotSuggestedPromptMetadata + (*BotPromptSuggestions)(nil), // 192: WAWebProtobufsE2E.BotPromptSuggestions + (*BotPromptSuggestion)(nil), // 193: WAWebProtobufsE2E.BotPromptSuggestion + (*BotLinkedAccountsMetadata)(nil), // 194: WAWebProtobufsE2E.BotLinkedAccountsMetadata + (*BotMemoryMetadata)(nil), // 195: WAWebProtobufsE2E.BotMemoryMetadata + (*BotMemoryFact)(nil), // 196: WAWebProtobufsE2E.BotMemoryFact + (*BotRenderingMetadata)(nil), // 197: WAWebProtobufsE2E.BotRenderingMetadata + (*BotMetricsMetadata)(nil), // 198: WAWebProtobufsE2E.BotMetricsMetadata + (*BotSessionMetadata)(nil), // 199: WAWebProtobufsE2E.BotSessionMetadata + (*BotMemuMetadata)(nil), // 200: WAWebProtobufsE2E.BotMemuMetadata + (*BotAgeCollectionMetadata)(nil), // 201: WAWebProtobufsE2E.BotAgeCollectionMetadata + (*BotMetadata)(nil), // 202: WAWebProtobufsE2E.BotMetadata + (*DeviceListMetadata)(nil), // 203: WAWebProtobufsE2E.DeviceListMetadata + (*EmbeddedMessage)(nil), // 204: WAWebProtobufsE2E.EmbeddedMessage + (*EmbeddedMusic)(nil), // 205: WAWebProtobufsE2E.EmbeddedMusic + (*EmbeddedContent)(nil), // 206: WAWebProtobufsE2E.EmbeddedContent + (*TapLinkAction)(nil), // 207: WAWebProtobufsE2E.TapLinkAction + (*Point)(nil), // 208: WAWebProtobufsE2E.Point + (*Location)(nil), // 209: WAWebProtobufsE2E.Location + (*TemplateButton)(nil), // 210: WAWebProtobufsE2E.TemplateButton + (*Money)(nil), // 211: WAWebProtobufsE2E.Money + (*ActionLink)(nil), // 212: WAWebProtobufsE2E.ActionLink + (*GroupMention)(nil), // 213: WAWebProtobufsE2E.GroupMention + (*MessageSecretMessage)(nil), // 214: WAWebProtobufsE2E.MessageSecretMessage + (*MediaNotifyMessage)(nil), // 215: WAWebProtobufsE2E.MediaNotifyMessage + (*LIDMigrationMappingSyncMessage)(nil), // 216: WAWebProtobufsE2E.LIDMigrationMappingSyncMessage + (*UrlTrackingMap)(nil), // 217: WAWebProtobufsE2E.UrlTrackingMap + (*AIQueryFanout)(nil), // 218: WAWebProtobufsE2E.AIQueryFanout + (*MemberLabel)(nil), // 219: WAWebProtobufsE2E.MemberLabel + (*StickerPackMessage_Sticker)(nil), // 220: WAWebProtobufsE2E.StickerPackMessage.Sticker + (*CallLogMessage_CallParticipant)(nil), // 221: WAWebProtobufsE2E.CallLogMessage.CallParticipant + (*PollCreationMessage_Option)(nil), // 222: WAWebProtobufsE2E.PollCreationMessage.Option + (*ButtonsMessage_Button)(nil), // 223: WAWebProtobufsE2E.ButtonsMessage.Button + (*ButtonsMessage_Button_NativeFlowInfo)(nil), // 224: WAWebProtobufsE2E.ButtonsMessage.Button.NativeFlowInfo + (*ButtonsMessage_Button_ButtonText)(nil), // 225: WAWebProtobufsE2E.ButtonsMessage.Button.ButtonText + (*InteractiveResponseMessage_Body)(nil), // 226: WAWebProtobufsE2E.InteractiveResponseMessage.Body + (*InteractiveResponseMessage_NativeFlowResponseMessage)(nil), // 227: WAWebProtobufsE2E.InteractiveResponseMessage.NativeFlowResponseMessage + (*InteractiveMessage_ShopMessage)(nil), // 228: WAWebProtobufsE2E.InteractiveMessage.ShopMessage + (*InteractiveMessage_CarouselMessage)(nil), // 229: WAWebProtobufsE2E.InteractiveMessage.CarouselMessage + (*InteractiveMessage_NativeFlowMessage)(nil), // 230: WAWebProtobufsE2E.InteractiveMessage.NativeFlowMessage + (*InteractiveMessage_CollectionMessage)(nil), // 231: WAWebProtobufsE2E.InteractiveMessage.CollectionMessage + (*InteractiveMessage_Footer)(nil), // 232: WAWebProtobufsE2E.InteractiveMessage.Footer + (*InteractiveMessage_Body)(nil), // 233: WAWebProtobufsE2E.InteractiveMessage.Body + (*InteractiveMessage_Header)(nil), // 234: WAWebProtobufsE2E.InteractiveMessage.Header + (*InteractiveMessage_NativeFlowMessage_NativeFlowButton)(nil), // 235: WAWebProtobufsE2E.InteractiveMessage.NativeFlowMessage.NativeFlowButton + (*ListResponseMessage_SingleSelectReply)(nil), // 236: WAWebProtobufsE2E.ListResponseMessage.SingleSelectReply + (*ListMessage_ProductListInfo)(nil), // 237: WAWebProtobufsE2E.ListMessage.ProductListInfo + (*ListMessage_ProductListHeaderImage)(nil), // 238: WAWebProtobufsE2E.ListMessage.ProductListHeaderImage + (*ListMessage_ProductSection)(nil), // 239: WAWebProtobufsE2E.ListMessage.ProductSection + (*ListMessage_Product)(nil), // 240: WAWebProtobufsE2E.ListMessage.Product + (*ListMessage_Section)(nil), // 241: WAWebProtobufsE2E.ListMessage.Section + (*ListMessage_Row)(nil), // 242: WAWebProtobufsE2E.ListMessage.Row + (*HighlyStructuredMessage_HSMLocalizableParameter)(nil), // 243: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter + (*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime)(nil), // 244: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime + (*HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency)(nil), // 245: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMCurrency + (*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent)(nil), // 246: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent + (*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeUnixEpoch)(nil), // 247: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeUnixEpoch + (*PeerDataOperationRequestResponseMessage_PeerDataOperationResult)(nil), // 248: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult + (*PeerDataOperationRequestResponseMessage_PeerDataOperationResult_SyncDSnapshotFatalRecoveryResponse)(nil), // 249: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.SyncDSnapshotFatalRecoveryResponse + (*PeerDataOperationRequestResponseMessage_PeerDataOperationResult_CompanionMetaNonceFetchResponse)(nil), // 250: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.CompanionMetaNonceFetchResponse + (*PeerDataOperationRequestResponseMessage_PeerDataOperationResult_WaffleNonceFetchResponse)(nil), // 251: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.WaffleNonceFetchResponse + (*PeerDataOperationRequestResponseMessage_PeerDataOperationResult_FullHistorySyncOnDemandRequestResponse)(nil), // 252: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.FullHistorySyncOnDemandRequestResponse + (*PeerDataOperationRequestResponseMessage_PeerDataOperationResult_PlaceholderMessageResendResponse)(nil), // 253: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse + (*PeerDataOperationRequestResponseMessage_PeerDataOperationResult_LinkPreviewResponse)(nil), // 254: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse + (*PeerDataOperationRequestResponseMessage_PeerDataOperationResult_LinkPreviewResponse_LinkPreviewHighQualityThumbnail)(nil), // 255: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + (*CloudAPIThreadControlNotification_CloudAPIThreadControlNotificationContent)(nil), // 256: WAWebProtobufsE2E.CloudAPIThreadControlNotification.CloudAPIThreadControlNotificationContent + (*PaymentLinkMetadata_PaymentLinkHeader)(nil), // 257: WAWebProtobufsE2E.PaymentLinkMetadata.PaymentLinkHeader + (*PaymentLinkMetadata_PaymentLinkButton)(nil), // 258: WAWebProtobufsE2E.PaymentLinkMetadata.PaymentLinkButton + (*ContextInfo_ForwardedNewsletterMessageInfo)(nil), // 259: WAWebProtobufsE2E.ContextInfo.ForwardedNewsletterMessageInfo + (*ContextInfo_ExternalAdReplyInfo)(nil), // 260: WAWebProtobufsE2E.ContextInfo.ExternalAdReplyInfo + (*ContextInfo_AdReplyInfo)(nil), // 261: WAWebProtobufsE2E.ContextInfo.AdReplyInfo + (*ContextInfo_FeatureEligibilities)(nil), // 262: WAWebProtobufsE2E.ContextInfo.FeatureEligibilities + (*ContextInfo_DataSharingContext)(nil), // 263: WAWebProtobufsE2E.ContextInfo.DataSharingContext + (*ContextInfo_ForwardedAIBotMessageInfo)(nil), // 264: WAWebProtobufsE2E.ContextInfo.ForwardedAIBotMessageInfo + (*ContextInfo_UTMInfo)(nil), // 265: WAWebProtobufsE2E.ContextInfo.UTMInfo + (*ContextInfo_BusinessMessageForwardInfo)(nil), // 266: WAWebProtobufsE2E.ContextInfo.BusinessMessageForwardInfo + (*ContextInfo_DataSharingContext_Parameters)(nil), // 267: WAWebProtobufsE2E.ContextInfo.DataSharingContext.Parameters + (*AIRichResponseMessage_AIRichResponseContentItemsMetadata)(nil), // 268: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata + (*AIRichResponseMessage_AIRichResponseDynamicMetadata)(nil), // 269: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseDynamicMetadata + (*AIRichResponseMessage_AIRichResponseCodeMetadata)(nil), // 270: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata + (*AIRichResponseMessage_AIRichResponseInlineImageMetadata)(nil), // 271: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseInlineImageMetadata + (*AIRichResponseMessage_AIRichResponseSubMessage)(nil), // 272: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage + (*AIRichResponseMessage_AIRichResponseMapMetadata)(nil), // 273: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMapMetadata + (*AIRichResponseMessage_AIRichResponseLatexMetadata)(nil), // 274: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseLatexMetadata + (*AIRichResponseMessage_AIRichResponseUnifiedResponse)(nil), // 275: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseUnifiedResponse + (*AIRichResponseMessage_AIRichResponseTableMetadata)(nil), // 276: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseTableMetadata + (*AIRichResponseMessage_AIRichResponseGridImageMetadata)(nil), // 277: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseGridImageMetadata + (*AIRichResponseMessage_AIRichResponseImageURL)(nil), // 278: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseImageURL + (*AIRichResponseMessage_AIRichResponseContentItemsMetadata_AIRichResponseContentItemMetadata)(nil), // 279: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.AIRichResponseContentItemMetadata + (*AIRichResponseMessage_AIRichResponseContentItemsMetadata_AIRichResponseReelItem)(nil), // 280: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.AIRichResponseReelItem + (*AIRichResponseMessage_AIRichResponseCodeMetadata_AIRichResponseCodeBlock)(nil), // 281: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata.AIRichResponseCodeBlock + (*AIRichResponseMessage_AIRichResponseMapMetadata_AIRichResponseMapAnnotation)(nil), // 282: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMapMetadata.AIRichResponseMapAnnotation + (*AIRichResponseMessage_AIRichResponseLatexMetadata_AIRichResponseLatexExpression)(nil), // 283: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseLatexMetadata.AIRichResponseLatexExpression + (*AIRichResponseMessage_AIRichResponseTableMetadata_AIRichResponseTableRow)(nil), // 284: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseTableMetadata.AIRichResponseTableRow + (*BotProgressIndicatorMetadata_BotPlanningStepMetadata)(nil), // 285: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata + (*BotProgressIndicatorMetadata_BotPlanningStepMetadata_BotPlanningSearchSourcesMetadata)(nil), // 286: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourcesMetadata + (*BotProgressIndicatorMetadata_BotPlanningStepMetadata_BotPlanningStepSectionMetadata)(nil), // 287: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningStepSectionMetadata + (*BotProgressIndicatorMetadata_BotPlanningStepMetadata_BotPlanningSearchSourceMetadata)(nil), // 288: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourceMetadata + (*BotQuotaMetadata_BotFeatureQuotaMetadata)(nil), // 289: WAWebProtobufsE2E.BotQuotaMetadata.BotFeatureQuotaMetadata + (*BotSourcesMetadata_BotSourceItem)(nil), // 290: WAWebProtobufsE2E.BotSourcesMetadata.BotSourceItem + (*HydratedTemplateButton_HydratedURLButton)(nil), // 291: WAWebProtobufsE2E.HydratedTemplateButton.HydratedURLButton + (*HydratedTemplateButton_HydratedCallButton)(nil), // 292: WAWebProtobufsE2E.HydratedTemplateButton.HydratedCallButton + (*HydratedTemplateButton_HydratedQuickReplyButton)(nil), // 293: WAWebProtobufsE2E.HydratedTemplateButton.HydratedQuickReplyButton + (*PaymentBackground_MediaData)(nil), // 294: WAWebProtobufsE2E.PaymentBackground.MediaData + (*PollResultSnapshotMessage_PollVote)(nil), // 295: WAWebProtobufsE2E.PollResultSnapshotMessage.PollVote + (*ProductMessage_ProductSnapshot)(nil), // 296: WAWebProtobufsE2E.ProductMessage.ProductSnapshot + (*ProductMessage_CatalogSnapshot)(nil), // 297: WAWebProtobufsE2E.ProductMessage.CatalogSnapshot + (*TemplateMessage_HydratedFourRowTemplate)(nil), // 298: WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplate + (*TemplateMessage_FourRowTemplate)(nil), // 299: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate + (*PeerDataOperationRequestMessage_SyncDCollectionFatalRecoveryRequest)(nil), // 300: WAWebProtobufsE2E.PeerDataOperationRequestMessage.SyncDCollectionFatalRecoveryRequest + (*PeerDataOperationRequestMessage_PlaceholderMessageResendRequest)(nil), // 301: WAWebProtobufsE2E.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest + (*PeerDataOperationRequestMessage_FullHistorySyncOnDemandRequest)(nil), // 302: WAWebProtobufsE2E.PeerDataOperationRequestMessage.FullHistorySyncOnDemandRequest + (*PeerDataOperationRequestMessage_HistorySyncOnDemandRequest)(nil), // 303: WAWebProtobufsE2E.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + (*PeerDataOperationRequestMessage_RequestUrlPreview)(nil), // 304: WAWebProtobufsE2E.PeerDataOperationRequestMessage.RequestUrlPreview + (*PeerDataOperationRequestMessage_RequestStickerReupload)(nil), // 305: WAWebProtobufsE2E.PeerDataOperationRequestMessage.RequestStickerReupload + (*BotRenderingMetadata_Keyword)(nil), // 306: WAWebProtobufsE2E.BotRenderingMetadata.Keyword + (*TemplateButton_CallButton)(nil), // 307: WAWebProtobufsE2E.TemplateButton.CallButton + (*TemplateButton_URLButton)(nil), // 308: WAWebProtobufsE2E.TemplateButton.URLButton + (*TemplateButton_QuickReplyButton)(nil), // 309: WAWebProtobufsE2E.TemplateButton.QuickReplyButton + (*UrlTrackingMap_UrlTrackingMapElement)(nil), // 310: WAWebProtobufsE2E.UrlTrackingMap.UrlTrackingMapElement + (*waCommon.MessageKey)(nil), // 311: WACommon.MessageKey + (*waCommon.LimitSharing)(nil), // 312: WACommon.LimitSharing + (waAdv.ADVEncryptionType)(0), // 313: WAAdv.ADVEncryptionType + (waMmsRetry.MediaRetryNotification_ResultType)(0), // 314: WAMmsRetry.MediaRetryNotification.ResultType + (*waCompanionReg.DeviceProps_HistorySyncConfig)(nil), // 315: WACompanionReg.DeviceProps.HistorySyncConfig } var file_waE2E_WAWebProtobufsE2E_proto_depIdxs = []int32{ - 208, // 0: WAWebProtobufsE2E.StickerPackMessage.stickers:type_name -> WAWebProtobufsE2E.StickerPackMessage.Sticker - 112, // 1: WAWebProtobufsE2E.StickerPackMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 220, // 0: WAWebProtobufsE2E.StickerPackMessage.stickers:type_name -> WAWebProtobufsE2E.StickerPackMessage.Sticker + 117, // 1: WAWebProtobufsE2E.StickerPackMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo 6, // 2: WAWebProtobufsE2E.StickerPackMessage.stickerPackOrigin:type_name -> WAWebProtobufsE2E.StickerPackMessage.StickerPackOrigin 7, // 3: WAWebProtobufsE2E.PlaceholderMessage.type:type_name -> WAWebProtobufsE2E.PlaceholderMessage.PlaceholderType 8, // 4: WAWebProtobufsE2E.BCallMessage.mediaType:type_name -> WAWebProtobufsE2E.BCallMessage.MediaType 9, // 5: WAWebProtobufsE2E.CallLogMessage.callOutcome:type_name -> WAWebProtobufsE2E.CallLogMessage.CallOutcome 10, // 6: WAWebProtobufsE2E.CallLogMessage.callType:type_name -> WAWebProtobufsE2E.CallLogMessage.CallType - 209, // 7: WAWebProtobufsE2E.CallLogMessage.participants:type_name -> WAWebProtobufsE2E.CallLogMessage.CallParticipant - 295, // 8: WAWebProtobufsE2E.ScheduledCallEditMessage.key:type_name -> WACommon.MessageKey + 221, // 7: WAWebProtobufsE2E.CallLogMessage.participants:type_name -> WAWebProtobufsE2E.CallLogMessage.CallParticipant + 311, // 8: WAWebProtobufsE2E.ScheduledCallEditMessage.key:type_name -> WACommon.MessageKey 11, // 9: WAWebProtobufsE2E.ScheduledCallEditMessage.editType:type_name -> WAWebProtobufsE2E.ScheduledCallEditMessage.EditType 12, // 10: WAWebProtobufsE2E.ScheduledCallCreationMessage.callType:type_name -> WAWebProtobufsE2E.ScheduledCallCreationMessage.CallType 13, // 11: WAWebProtobufsE2E.EventResponseMessage.response:type_name -> WAWebProtobufsE2E.EventResponseMessage.EventResponseType - 295, // 12: WAWebProtobufsE2E.PinInChatMessage.key:type_name -> WACommon.MessageKey + 311, // 12: WAWebProtobufsE2E.PinInChatMessage.key:type_name -> WACommon.MessageKey 14, // 13: WAWebProtobufsE2E.PinInChatMessage.type:type_name -> WAWebProtobufsE2E.PinInChatMessage.Type - 210, // 14: WAWebProtobufsE2E.PollCreationMessage.options:type_name -> WAWebProtobufsE2E.PollCreationMessage.Option - 112, // 15: WAWebProtobufsE2E.PollCreationMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 222, // 14: WAWebProtobufsE2E.PollCreationMessage.options:type_name -> WAWebProtobufsE2E.PollCreationMessage.Option + 117, // 15: WAWebProtobufsE2E.PollCreationMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo 0, // 16: WAWebProtobufsE2E.PollCreationMessage.pollContentType:type_name -> WAWebProtobufsE2E.PollContentType 15, // 17: WAWebProtobufsE2E.PollCreationMessage.pollType:type_name -> WAWebProtobufsE2E.PollCreationMessage.PollType - 210, // 18: WAWebProtobufsE2E.PollCreationMessage.correctAnswer:type_name -> WAWebProtobufsE2E.PollCreationMessage.Option - 112, // 19: WAWebProtobufsE2E.ButtonsResponseMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 222, // 18: WAWebProtobufsE2E.PollCreationMessage.correctAnswer:type_name -> WAWebProtobufsE2E.PollCreationMessage.Option + 117, // 19: WAWebProtobufsE2E.ButtonsResponseMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo 16, // 20: WAWebProtobufsE2E.ButtonsResponseMessage.type:type_name -> WAWebProtobufsE2E.ButtonsResponseMessage.Type - 173, // 21: WAWebProtobufsE2E.ButtonsMessage.documentMessage:type_name -> WAWebProtobufsE2E.DocumentMessage - 111, // 22: WAWebProtobufsE2E.ButtonsMessage.imageMessage:type_name -> WAWebProtobufsE2E.ImageMessage - 106, // 23: WAWebProtobufsE2E.ButtonsMessage.videoMessage:type_name -> WAWebProtobufsE2E.VideoMessage - 177, // 24: WAWebProtobufsE2E.ButtonsMessage.locationMessage:type_name -> WAWebProtobufsE2E.LocationMessage - 112, // 25: WAWebProtobufsE2E.ButtonsMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 211, // 26: WAWebProtobufsE2E.ButtonsMessage.buttons:type_name -> WAWebProtobufsE2E.ButtonsMessage.Button + 183, // 21: WAWebProtobufsE2E.ButtonsMessage.documentMessage:type_name -> WAWebProtobufsE2E.DocumentMessage + 116, // 22: WAWebProtobufsE2E.ButtonsMessage.imageMessage:type_name -> WAWebProtobufsE2E.ImageMessage + 111, // 23: WAWebProtobufsE2E.ButtonsMessage.videoMessage:type_name -> WAWebProtobufsE2E.VideoMessage + 187, // 24: WAWebProtobufsE2E.ButtonsMessage.locationMessage:type_name -> WAWebProtobufsE2E.LocationMessage + 117, // 25: WAWebProtobufsE2E.ButtonsMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 223, // 26: WAWebProtobufsE2E.ButtonsMessage.buttons:type_name -> WAWebProtobufsE2E.ButtonsMessage.Button 17, // 27: WAWebProtobufsE2E.ButtonsMessage.headerType:type_name -> WAWebProtobufsE2E.ButtonsMessage.HeaderType - 295, // 28: WAWebProtobufsE2E.SecretEncryptedMessage.targetMessageKey:type_name -> WACommon.MessageKey + 311, // 28: WAWebProtobufsE2E.SecretEncryptedMessage.targetMessageKey:type_name -> WACommon.MessageKey 19, // 29: WAWebProtobufsE2E.SecretEncryptedMessage.secretEncType:type_name -> WAWebProtobufsE2E.SecretEncryptedMessage.SecretEncType - 112, // 30: WAWebProtobufsE2E.GroupInviteMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 117, // 30: WAWebProtobufsE2E.GroupInviteMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo 20, // 31: WAWebProtobufsE2E.GroupInviteMessage.groupType:type_name -> WAWebProtobufsE2E.GroupInviteMessage.GroupType - 215, // 32: WAWebProtobufsE2E.InteractiveResponseMessage.nativeFlowResponseMessage:type_name -> WAWebProtobufsE2E.InteractiveResponseMessage.NativeFlowResponseMessage - 214, // 33: WAWebProtobufsE2E.InteractiveResponseMessage.body:type_name -> WAWebProtobufsE2E.InteractiveResponseMessage.Body - 112, // 34: WAWebProtobufsE2E.InteractiveResponseMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 216, // 35: WAWebProtobufsE2E.InteractiveMessage.shopStorefrontMessage:type_name -> WAWebProtobufsE2E.InteractiveMessage.ShopMessage - 219, // 36: WAWebProtobufsE2E.InteractiveMessage.collectionMessage:type_name -> WAWebProtobufsE2E.InteractiveMessage.CollectionMessage - 218, // 37: WAWebProtobufsE2E.InteractiveMessage.nativeFlowMessage:type_name -> WAWebProtobufsE2E.InteractiveMessage.NativeFlowMessage - 217, // 38: WAWebProtobufsE2E.InteractiveMessage.carouselMessage:type_name -> WAWebProtobufsE2E.InteractiveMessage.CarouselMessage - 222, // 39: WAWebProtobufsE2E.InteractiveMessage.header:type_name -> WAWebProtobufsE2E.InteractiveMessage.Header - 221, // 40: WAWebProtobufsE2E.InteractiveMessage.body:type_name -> WAWebProtobufsE2E.InteractiveMessage.Body - 220, // 41: WAWebProtobufsE2E.InteractiveMessage.footer:type_name -> WAWebProtobufsE2E.InteractiveMessage.Footer - 112, // 42: WAWebProtobufsE2E.InteractiveMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 206, // 43: WAWebProtobufsE2E.InteractiveMessage.urlTrackingMap:type_name -> WAWebProtobufsE2E.UrlTrackingMap + 227, // 32: WAWebProtobufsE2E.InteractiveResponseMessage.nativeFlowResponseMessage:type_name -> WAWebProtobufsE2E.InteractiveResponseMessage.NativeFlowResponseMessage + 226, // 33: WAWebProtobufsE2E.InteractiveResponseMessage.body:type_name -> WAWebProtobufsE2E.InteractiveResponseMessage.Body + 117, // 34: WAWebProtobufsE2E.InteractiveResponseMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 228, // 35: WAWebProtobufsE2E.InteractiveMessage.shopStorefrontMessage:type_name -> WAWebProtobufsE2E.InteractiveMessage.ShopMessage + 231, // 36: WAWebProtobufsE2E.InteractiveMessage.collectionMessage:type_name -> WAWebProtobufsE2E.InteractiveMessage.CollectionMessage + 230, // 37: WAWebProtobufsE2E.InteractiveMessage.nativeFlowMessage:type_name -> WAWebProtobufsE2E.InteractiveMessage.NativeFlowMessage + 229, // 38: WAWebProtobufsE2E.InteractiveMessage.carouselMessage:type_name -> WAWebProtobufsE2E.InteractiveMessage.CarouselMessage + 234, // 39: WAWebProtobufsE2E.InteractiveMessage.header:type_name -> WAWebProtobufsE2E.InteractiveMessage.Header + 233, // 40: WAWebProtobufsE2E.InteractiveMessage.body:type_name -> WAWebProtobufsE2E.InteractiveMessage.Body + 232, // 41: WAWebProtobufsE2E.InteractiveMessage.footer:type_name -> WAWebProtobufsE2E.InteractiveMessage.Footer + 117, // 42: WAWebProtobufsE2E.InteractiveMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 217, // 43: WAWebProtobufsE2E.InteractiveMessage.urlTrackingMap:type_name -> WAWebProtobufsE2E.UrlTrackingMap 23, // 44: WAWebProtobufsE2E.ListResponseMessage.listType:type_name -> WAWebProtobufsE2E.ListResponseMessage.ListType - 224, // 45: WAWebProtobufsE2E.ListResponseMessage.singleSelectReply:type_name -> WAWebProtobufsE2E.ListResponseMessage.SingleSelectReply - 112, // 46: WAWebProtobufsE2E.ListResponseMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 236, // 45: WAWebProtobufsE2E.ListResponseMessage.singleSelectReply:type_name -> WAWebProtobufsE2E.ListResponseMessage.SingleSelectReply + 117, // 46: WAWebProtobufsE2E.ListResponseMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo 24, // 47: WAWebProtobufsE2E.ListMessage.listType:type_name -> WAWebProtobufsE2E.ListMessage.ListType - 229, // 48: WAWebProtobufsE2E.ListMessage.sections:type_name -> WAWebProtobufsE2E.ListMessage.Section - 225, // 49: WAWebProtobufsE2E.ListMessage.productListInfo:type_name -> WAWebProtobufsE2E.ListMessage.ProductListInfo - 112, // 50: WAWebProtobufsE2E.ListMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 241, // 48: WAWebProtobufsE2E.ListMessage.sections:type_name -> WAWebProtobufsE2E.ListMessage.Section + 237, // 49: WAWebProtobufsE2E.ListMessage.productListInfo:type_name -> WAWebProtobufsE2E.ListMessage.ProductListInfo + 117, // 50: WAWebProtobufsE2E.ListMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo 26, // 51: WAWebProtobufsE2E.OrderMessage.status:type_name -> WAWebProtobufsE2E.OrderMessage.OrderStatus 25, // 52: WAWebProtobufsE2E.OrderMessage.surface:type_name -> WAWebProtobufsE2E.OrderMessage.OrderSurface - 112, // 53: WAWebProtobufsE2E.OrderMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 295, // 54: WAWebProtobufsE2E.OrderMessage.orderRequestMessageID:type_name -> WACommon.MessageKey + 117, // 53: WAWebProtobufsE2E.OrderMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 311, // 54: WAWebProtobufsE2E.OrderMessage.orderRequestMessageID:type_name -> WACommon.MessageKey 27, // 55: WAWebProtobufsE2E.PaymentInviteMessage.serviceType:type_name -> WAWebProtobufsE2E.PaymentInviteMessage.ServiceType - 231, // 56: WAWebProtobufsE2E.HighlyStructuredMessage.localizableParams:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter - 152, // 57: WAWebProtobufsE2E.HighlyStructuredMessage.hydratedHsm:type_name -> WAWebProtobufsE2E.TemplateMessage + 243, // 56: WAWebProtobufsE2E.HighlyStructuredMessage.localizableParams:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter + 162, // 57: WAWebProtobufsE2E.HighlyStructuredMessage.hydratedHsm:type_name -> WAWebProtobufsE2E.TemplateMessage 1, // 58: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.peerDataOperationRequestType:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestType - 236, // 59: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.peerDataOperationResult:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult + 248, // 59: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.peerDataOperationResult:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult 31, // 60: WAWebProtobufsE2E.HistorySyncNotification.syncType:type_name -> WAWebProtobufsE2E.HistorySyncNotification.HistorySyncType - 162, // 61: WAWebProtobufsE2E.HistorySyncNotification.fullHistorySyncOnDemandRequestMetadata:type_name -> WAWebProtobufsE2E.FullHistorySyncOnDemandRequestMetadata + 172, // 61: WAWebProtobufsE2E.HistorySyncNotification.fullHistorySyncOnDemandRequestMetadata:type_name -> WAWebProtobufsE2E.FullHistorySyncOnDemandRequestMetadata 32, // 62: WAWebProtobufsE2E.RequestWelcomeMessageMetadata.localChatState:type_name -> WAWebProtobufsE2E.RequestWelcomeMessageMetadata.LocalChatState - 295, // 63: WAWebProtobufsE2E.ProtocolMessage.key:type_name -> WACommon.MessageKey + 311, // 63: WAWebProtobufsE2E.ProtocolMessage.key:type_name -> WACommon.MessageKey 33, // 64: WAWebProtobufsE2E.ProtocolMessage.type:type_name -> WAWebProtobufsE2E.ProtocolMessage.Type - 101, // 65: WAWebProtobufsE2E.ProtocolMessage.historySyncNotification:type_name -> WAWebProtobufsE2E.HistorySyncNotification - 165, // 66: WAWebProtobufsE2E.ProtocolMessage.appStateSyncKeyShare:type_name -> WAWebProtobufsE2E.AppStateSyncKeyShare - 164, // 67: WAWebProtobufsE2E.ProtocolMessage.appStateSyncKeyRequest:type_name -> WAWebProtobufsE2E.AppStateSyncKeyRequest - 160, // 68: WAWebProtobufsE2E.ProtocolMessage.initialSecurityNotificationSettingSync:type_name -> WAWebProtobufsE2E.InitialSecurityNotificationSettingSync - 163, // 69: WAWebProtobufsE2E.ProtocolMessage.appStateFatalExceptionNotification:type_name -> WAWebProtobufsE2E.AppStateFatalExceptionNotification - 128, // 70: WAWebProtobufsE2E.ProtocolMessage.disappearingMode:type_name -> WAWebProtobufsE2E.DisappearingMode - 130, // 71: WAWebProtobufsE2E.ProtocolMessage.editedMessage:type_name -> WAWebProtobufsE2E.Message - 161, // 72: WAWebProtobufsE2E.ProtocolMessage.peerDataOperationRequestMessage:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestMessage - 100, // 73: WAWebProtobufsE2E.ProtocolMessage.peerDataOperationRequestResponseMessage:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage - 105, // 74: WAWebProtobufsE2E.ProtocolMessage.botFeedbackMessage:type_name -> WAWebProtobufsE2E.BotFeedbackMessage - 102, // 75: WAWebProtobufsE2E.ProtocolMessage.requestWelcomeMessageMetadata:type_name -> WAWebProtobufsE2E.RequestWelcomeMessageMetadata - 204, // 76: WAWebProtobufsE2E.ProtocolMessage.mediaNotifyMessage:type_name -> WAWebProtobufsE2E.MediaNotifyMessage - 104, // 77: WAWebProtobufsE2E.ProtocolMessage.cloudApiThreadControlNotification:type_name -> WAWebProtobufsE2E.CloudAPIThreadControlNotification - 205, // 78: WAWebProtobufsE2E.ProtocolMessage.lidMigrationMappingSyncMessage:type_name -> WAWebProtobufsE2E.LIDMigrationMappingSyncMessage - 296, // 79: WAWebProtobufsE2E.ProtocolMessage.limitSharing:type_name -> WACommon.LimitSharing - 207, // 80: WAWebProtobufsE2E.ProtocolMessage.aiQueryFanout:type_name -> WAWebProtobufsE2E.AIQueryFanout - 34, // 81: WAWebProtobufsE2E.CloudAPIThreadControlNotification.status:type_name -> WAWebProtobufsE2E.CloudAPIThreadControlNotification.CloudAPIThreadControl - 295, // 82: WAWebProtobufsE2E.BotFeedbackMessage.messageKey:type_name -> WACommon.MessageKey - 38, // 83: WAWebProtobufsE2E.BotFeedbackMessage.kind:type_name -> WAWebProtobufsE2E.BotFeedbackMessage.BotFeedbackKind - 35, // 84: WAWebProtobufsE2E.BotFeedbackMessage.kindReport:type_name -> WAWebProtobufsE2E.BotFeedbackMessage.ReportKind - 125, // 85: WAWebProtobufsE2E.VideoMessage.interactiveAnnotations:type_name -> WAWebProtobufsE2E.InteractiveAnnotation - 112, // 86: WAWebProtobufsE2E.VideoMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 39, // 87: WAWebProtobufsE2E.VideoMessage.gifAttribution:type_name -> WAWebProtobufsE2E.VideoMessage.Attribution - 125, // 88: WAWebProtobufsE2E.VideoMessage.annotations:type_name -> WAWebProtobufsE2E.InteractiveAnnotation - 129, // 89: WAWebProtobufsE2E.VideoMessage.processedVideos:type_name -> WAWebProtobufsE2E.ProcessedVideo - 42, // 90: WAWebProtobufsE2E.ExtendedTextMessage.font:type_name -> WAWebProtobufsE2E.ExtendedTextMessage.FontType - 41, // 91: WAWebProtobufsE2E.ExtendedTextMessage.previewType:type_name -> WAWebProtobufsE2E.ExtendedTextMessage.PreviewType - 112, // 92: WAWebProtobufsE2E.ExtendedTextMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 40, // 93: WAWebProtobufsE2E.ExtendedTextMessage.inviteLinkGroupType:type_name -> WAWebProtobufsE2E.ExtendedTextMessage.InviteLinkGroupType - 40, // 94: WAWebProtobufsE2E.ExtendedTextMessage.inviteLinkGroupTypeV2:type_name -> WAWebProtobufsE2E.ExtendedTextMessage.InviteLinkGroupType - 176, // 95: WAWebProtobufsE2E.ExtendedTextMessage.faviconMMSMetadata:type_name -> WAWebProtobufsE2E.MMSThumbnailMetadata - 174, // 96: WAWebProtobufsE2E.ExtendedTextMessage.linkPreviewMetadata:type_name -> WAWebProtobufsE2E.LinkPreviewMetadata - 108, // 97: WAWebProtobufsE2E.ExtendedTextMessage.paymentLinkMetadata:type_name -> WAWebProtobufsE2E.PaymentLinkMetadata - 244, // 98: WAWebProtobufsE2E.PaymentLinkMetadata.button:type_name -> WAWebProtobufsE2E.PaymentLinkMetadata.PaymentLinkButton - 243, // 99: WAWebProtobufsE2E.PaymentLinkMetadata.header:type_name -> WAWebProtobufsE2E.PaymentLinkMetadata.PaymentLinkHeader - 295, // 100: WAWebProtobufsE2E.StatusNotificationMessage.responseMessageKey:type_name -> WACommon.MessageKey - 295, // 101: WAWebProtobufsE2E.StatusNotificationMessage.originalMessageKey:type_name -> WACommon.MessageKey - 44, // 102: WAWebProtobufsE2E.StatusNotificationMessage.type:type_name -> WAWebProtobufsE2E.StatusNotificationMessage.StatusNotificationType - 45, // 103: WAWebProtobufsE2E.InvoiceMessage.attachmentType:type_name -> WAWebProtobufsE2E.InvoiceMessage.AttachmentType - 125, // 104: WAWebProtobufsE2E.ImageMessage.interactiveAnnotations:type_name -> WAWebProtobufsE2E.InteractiveAnnotation - 112, // 105: WAWebProtobufsE2E.ImageMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 125, // 106: WAWebProtobufsE2E.ImageMessage.annotations:type_name -> WAWebProtobufsE2E.InteractiveAnnotation - 46, // 107: WAWebProtobufsE2E.ImageMessage.imageSourceType:type_name -> WAWebProtobufsE2E.ImageMessage.ImageSourceType - 130, // 108: WAWebProtobufsE2E.ContextInfo.quotedMessage:type_name -> WAWebProtobufsE2E.Message - 247, // 109: WAWebProtobufsE2E.ContextInfo.quotedAd:type_name -> WAWebProtobufsE2E.ContextInfo.AdReplyInfo - 295, // 110: WAWebProtobufsE2E.ContextInfo.placeholderKey:type_name -> WACommon.MessageKey - 246, // 111: WAWebProtobufsE2E.ContextInfo.externalAdReply:type_name -> WAWebProtobufsE2E.ContextInfo.ExternalAdReplyInfo - 128, // 112: WAWebProtobufsE2E.ContextInfo.disappearingMode:type_name -> WAWebProtobufsE2E.DisappearingMode - 201, // 113: WAWebProtobufsE2E.ContextInfo.actionLink:type_name -> WAWebProtobufsE2E.ActionLink - 202, // 114: WAWebProtobufsE2E.ContextInfo.groupMentions:type_name -> WAWebProtobufsE2E.GroupMention - 251, // 115: WAWebProtobufsE2E.ContextInfo.utm:type_name -> WAWebProtobufsE2E.ContextInfo.UTMInfo - 245, // 116: WAWebProtobufsE2E.ContextInfo.forwardedNewsletterMessageInfo:type_name -> WAWebProtobufsE2E.ContextInfo.ForwardedNewsletterMessageInfo - 252, // 117: WAWebProtobufsE2E.ContextInfo.businessMessageForwardInfo:type_name -> WAWebProtobufsE2E.ContextInfo.BusinessMessageForwardInfo - 249, // 118: WAWebProtobufsE2E.ContextInfo.dataSharingContext:type_name -> WAWebProtobufsE2E.ContextInfo.DataSharingContext - 248, // 119: WAWebProtobufsE2E.ContextInfo.featureEligibilities:type_name -> WAWebProtobufsE2E.ContextInfo.FeatureEligibilities - 250, // 120: WAWebProtobufsE2E.ContextInfo.forwardedAiBotMessageInfo:type_name -> WAWebProtobufsE2E.ContextInfo.ForwardedAIBotMessageInfo - 48, // 121: WAWebProtobufsE2E.ContextInfo.statusAttributionType:type_name -> WAWebProtobufsE2E.ContextInfo.StatusAttributionType - 206, // 122: WAWebProtobufsE2E.ContextInfo.urlTrackingMap:type_name -> WAWebProtobufsE2E.UrlTrackingMap - 47, // 123: WAWebProtobufsE2E.ContextInfo.pairedMediaType:type_name -> WAWebProtobufsE2E.ContextInfo.PairedMediaType - 53, // 124: WAWebProtobufsE2E.BotPluginMetadata.provider:type_name -> WAWebProtobufsE2E.BotPluginMetadata.SearchProvider - 52, // 125: WAWebProtobufsE2E.BotPluginMetadata.pluginType:type_name -> WAWebProtobufsE2E.BotPluginMetadata.PluginType - 295, // 126: WAWebProtobufsE2E.BotPluginMetadata.parentPluginMessageKey:type_name -> WACommon.MessageKey - 52, // 127: WAWebProtobufsE2E.BotPluginMetadata.deprecatedField:type_name -> WAWebProtobufsE2E.BotPluginMetadata.PluginType - 52, // 128: WAWebProtobufsE2E.BotPluginMetadata.parentPluginType:type_name -> WAWebProtobufsE2E.BotPluginMetadata.PluginType - 54, // 129: WAWebProtobufsE2E.BotLinkedAccount.type:type_name -> WAWebProtobufsE2E.BotLinkedAccount.BotLinkedAccountType - 56, // 130: WAWebProtobufsE2E.AIRichResponseMessage.messageType:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMessageType - 258, // 131: WAWebProtobufsE2E.AIRichResponseMessage.submessages:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage - 261, // 132: WAWebProtobufsE2E.AIRichResponseMessage.abstractData:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseAbstractData - 61, // 133: WAWebProtobufsE2E.BotMediaMetadata.orientationType:type_name -> WAWebProtobufsE2E.BotMediaMetadata.OrientationType - 295, // 134: WAWebProtobufsE2E.BotReminderMetadata.requestMessageKey:type_name -> WACommon.MessageKey - 63, // 135: WAWebProtobufsE2E.BotReminderMetadata.action:type_name -> WAWebProtobufsE2E.BotReminderMetadata.ReminderAction - 62, // 136: WAWebProtobufsE2E.BotReminderMetadata.frequency:type_name -> WAWebProtobufsE2E.BotReminderMetadata.ReminderFrequency - 65, // 137: WAWebProtobufsE2E.BotModelMetadata.modelType:type_name -> WAWebProtobufsE2E.BotModelMetadata.ModelType - 64, // 138: WAWebProtobufsE2E.BotModelMetadata.premiumModelStatus:type_name -> WAWebProtobufsE2E.BotModelMetadata.PremiumModelStatus - 271, // 139: WAWebProtobufsE2E.BotProgressIndicatorMetadata.stepsMetadata:type_name -> WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata - 69, // 140: WAWebProtobufsE2E.BotCapabilityMetadata.capabilities:type_name -> WAWebProtobufsE2E.BotCapabilityMetadata.BotCapabilityType - 70, // 141: WAWebProtobufsE2E.BotImagineMetadata.imagineType:type_name -> WAWebProtobufsE2E.BotImagineMetadata.ImagineType - 275, // 142: WAWebProtobufsE2E.BotSourcesMetadata.sources:type_name -> WAWebProtobufsE2E.BotSourcesMetadata.BotSourceItem - 72, // 143: WAWebProtobufsE2E.MessageAssociation.associationType:type_name -> WAWebProtobufsE2E.MessageAssociation.AssociationType - 295, // 144: WAWebProtobufsE2E.MessageAssociation.parentMessageKey:type_name -> WACommon.MessageKey - 192, // 145: WAWebProtobufsE2E.MessageContextInfo.deviceListMetadata:type_name -> WAWebProtobufsE2E.DeviceListMetadata - 191, // 146: WAWebProtobufsE2E.MessageContextInfo.botMetadata:type_name -> WAWebProtobufsE2E.BotMetadata - 73, // 147: WAWebProtobufsE2E.MessageContextInfo.messageAddOnExpiryType:type_name -> WAWebProtobufsE2E.MessageContextInfo.MessageAddonExpiryType - 123, // 148: WAWebProtobufsE2E.MessageContextInfo.messageAssociation:type_name -> WAWebProtobufsE2E.MessageAssociation - 296, // 149: WAWebProtobufsE2E.MessageContextInfo.limitSharing:type_name -> WACommon.LimitSharing - 198, // 150: WAWebProtobufsE2E.InteractiveAnnotation.location:type_name -> WAWebProtobufsE2E.Location - 245, // 151: WAWebProtobufsE2E.InteractiveAnnotation.newsletter:type_name -> WAWebProtobufsE2E.ContextInfo.ForwardedNewsletterMessageInfo - 196, // 152: WAWebProtobufsE2E.InteractiveAnnotation.tapAction:type_name -> WAWebProtobufsE2E.TapLinkAction - 197, // 153: WAWebProtobufsE2E.InteractiveAnnotation.polygonVertices:type_name -> WAWebProtobufsE2E.Point - 195, // 154: WAWebProtobufsE2E.InteractiveAnnotation.embeddedContent:type_name -> WAWebProtobufsE2E.EmbeddedContent - 74, // 155: WAWebProtobufsE2E.InteractiveAnnotation.statusLinkType:type_name -> WAWebProtobufsE2E.InteractiveAnnotation.StatusLinkType - 278, // 156: WAWebProtobufsE2E.HydratedTemplateButton.quickReplyButton:type_name -> WAWebProtobufsE2E.HydratedTemplateButton.HydratedQuickReplyButton - 276, // 157: WAWebProtobufsE2E.HydratedTemplateButton.urlButton:type_name -> WAWebProtobufsE2E.HydratedTemplateButton.HydratedURLButton - 277, // 158: WAWebProtobufsE2E.HydratedTemplateButton.callButton:type_name -> WAWebProtobufsE2E.HydratedTemplateButton.HydratedCallButton - 279, // 159: WAWebProtobufsE2E.PaymentBackground.mediaData:type_name -> WAWebProtobufsE2E.PaymentBackground.MediaData - 76, // 160: WAWebProtobufsE2E.PaymentBackground.type:type_name -> WAWebProtobufsE2E.PaymentBackground.Type - 78, // 161: WAWebProtobufsE2E.DisappearingMode.initiator:type_name -> WAWebProtobufsE2E.DisappearingMode.Initiator - 77, // 162: WAWebProtobufsE2E.DisappearingMode.trigger:type_name -> WAWebProtobufsE2E.DisappearingMode.Trigger - 79, // 163: WAWebProtobufsE2E.ProcessedVideo.quality:type_name -> WAWebProtobufsE2E.ProcessedVideo.VideoQuality - 179, // 164: WAWebProtobufsE2E.Message.senderKeyDistributionMessage:type_name -> WAWebProtobufsE2E.SenderKeyDistributionMessage - 111, // 165: WAWebProtobufsE2E.Message.imageMessage:type_name -> WAWebProtobufsE2E.ImageMessage - 178, // 166: WAWebProtobufsE2E.Message.contactMessage:type_name -> WAWebProtobufsE2E.ContactMessage - 177, // 167: WAWebProtobufsE2E.Message.locationMessage:type_name -> WAWebProtobufsE2E.LocationMessage - 107, // 168: WAWebProtobufsE2E.Message.extendedTextMessage:type_name -> WAWebProtobufsE2E.ExtendedTextMessage - 173, // 169: WAWebProtobufsE2E.Message.documentMessage:type_name -> WAWebProtobufsE2E.DocumentMessage - 172, // 170: WAWebProtobufsE2E.Message.audioMessage:type_name -> WAWebProtobufsE2E.AudioMessage - 106, // 171: WAWebProtobufsE2E.Message.videoMessage:type_name -> WAWebProtobufsE2E.VideoMessage - 171, // 172: WAWebProtobufsE2E.Message.call:type_name -> WAWebProtobufsE2E.Call - 170, // 173: WAWebProtobufsE2E.Message.chat:type_name -> WAWebProtobufsE2E.Chat - 103, // 174: WAWebProtobufsE2E.Message.protocolMessage:type_name -> WAWebProtobufsE2E.ProtocolMessage - 159, // 175: WAWebProtobufsE2E.Message.contactsArrayMessage:type_name -> WAWebProtobufsE2E.ContactsArrayMessage - 99, // 176: WAWebProtobufsE2E.Message.highlyStructuredMessage:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage - 179, // 177: WAWebProtobufsE2E.Message.fastRatchetKeySenderKeyDistributionMessage:type_name -> WAWebProtobufsE2E.SenderKeyDistributionMessage - 158, // 178: WAWebProtobufsE2E.Message.sendPaymentMessage:type_name -> WAWebProtobufsE2E.SendPaymentMessage - 154, // 179: WAWebProtobufsE2E.Message.liveLocationMessage:type_name -> WAWebProtobufsE2E.LiveLocationMessage - 157, // 180: WAWebProtobufsE2E.Message.requestPaymentMessage:type_name -> WAWebProtobufsE2E.RequestPaymentMessage - 156, // 181: WAWebProtobufsE2E.Message.declinePaymentRequestMessage:type_name -> WAWebProtobufsE2E.DeclinePaymentRequestMessage - 155, // 182: WAWebProtobufsE2E.Message.cancelPaymentRequestMessage:type_name -> WAWebProtobufsE2E.CancelPaymentRequestMessage - 152, // 183: WAWebProtobufsE2E.Message.templateMessage:type_name -> WAWebProtobufsE2E.TemplateMessage - 153, // 184: WAWebProtobufsE2E.Message.stickerMessage:type_name -> WAWebProtobufsE2E.StickerMessage - 92, // 185: WAWebProtobufsE2E.Message.groupInviteMessage:type_name -> WAWebProtobufsE2E.GroupInviteMessage - 151, // 186: WAWebProtobufsE2E.Message.templateButtonReplyMessage:type_name -> WAWebProtobufsE2E.TemplateButtonReplyMessage - 150, // 187: WAWebProtobufsE2E.Message.productMessage:type_name -> WAWebProtobufsE2E.ProductMessage - 147, // 188: WAWebProtobufsE2E.Message.deviceSentMessage:type_name -> WAWebProtobufsE2E.DeviceSentMessage - 124, // 189: WAWebProtobufsE2E.Message.messageContextInfo:type_name -> WAWebProtobufsE2E.MessageContextInfo - 96, // 190: WAWebProtobufsE2E.Message.listMessage:type_name -> WAWebProtobufsE2E.ListMessage - 146, // 191: WAWebProtobufsE2E.Message.viewOnceMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage - 97, // 192: WAWebProtobufsE2E.Message.orderMessage:type_name -> WAWebProtobufsE2E.OrderMessage - 95, // 193: WAWebProtobufsE2E.Message.listResponseMessage:type_name -> WAWebProtobufsE2E.ListResponseMessage - 146, // 194: WAWebProtobufsE2E.Message.ephemeralMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage - 110, // 195: WAWebProtobufsE2E.Message.invoiceMessage:type_name -> WAWebProtobufsE2E.InvoiceMessage - 90, // 196: WAWebProtobufsE2E.Message.buttonsMessage:type_name -> WAWebProtobufsE2E.ButtonsMessage - 89, // 197: WAWebProtobufsE2E.Message.buttonsResponseMessage:type_name -> WAWebProtobufsE2E.ButtonsResponseMessage - 98, // 198: WAWebProtobufsE2E.Message.paymentInviteMessage:type_name -> WAWebProtobufsE2E.PaymentInviteMessage - 94, // 199: WAWebProtobufsE2E.Message.interactiveMessage:type_name -> WAWebProtobufsE2E.InteractiveMessage - 145, // 200: WAWebProtobufsE2E.Message.reactionMessage:type_name -> WAWebProtobufsE2E.ReactionMessage - 144, // 201: WAWebProtobufsE2E.Message.stickerSyncRmrMessage:type_name -> WAWebProtobufsE2E.StickerSyncRMRMessage - 93, // 202: WAWebProtobufsE2E.Message.interactiveResponseMessage:type_name -> WAWebProtobufsE2E.InteractiveResponseMessage - 88, // 203: WAWebProtobufsE2E.Message.pollCreationMessage:type_name -> WAWebProtobufsE2E.PollCreationMessage - 143, // 204: WAWebProtobufsE2E.Message.pollUpdateMessage:type_name -> WAWebProtobufsE2E.PollUpdateMessage - 138, // 205: WAWebProtobufsE2E.Message.keepInChatMessage:type_name -> WAWebProtobufsE2E.KeepInChatMessage - 146, // 206: WAWebProtobufsE2E.Message.documentWithCaptionMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage - 148, // 207: WAWebProtobufsE2E.Message.requestPhoneNumberMessage:type_name -> WAWebProtobufsE2E.RequestPhoneNumberMessage - 146, // 208: WAWebProtobufsE2E.Message.viewOnceMessageV2:type_name -> WAWebProtobufsE2E.FutureProofMessage - 137, // 209: WAWebProtobufsE2E.Message.encReactionMessage:type_name -> WAWebProtobufsE2E.EncReactionMessage - 146, // 210: WAWebProtobufsE2E.Message.editedMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage - 146, // 211: WAWebProtobufsE2E.Message.viewOnceMessageV2Extension:type_name -> WAWebProtobufsE2E.FutureProofMessage - 88, // 212: WAWebProtobufsE2E.Message.pollCreationMessageV2:type_name -> WAWebProtobufsE2E.PollCreationMessage - 85, // 213: WAWebProtobufsE2E.Message.scheduledCallCreationMessage:type_name -> WAWebProtobufsE2E.ScheduledCallCreationMessage - 146, // 214: WAWebProtobufsE2E.Message.groupMentionedMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage - 87, // 215: WAWebProtobufsE2E.Message.pinInChatMessage:type_name -> WAWebProtobufsE2E.PinInChatMessage - 88, // 216: WAWebProtobufsE2E.Message.pollCreationMessageV3:type_name -> WAWebProtobufsE2E.PollCreationMessage - 84, // 217: WAWebProtobufsE2E.Message.scheduledCallEditMessage:type_name -> WAWebProtobufsE2E.ScheduledCallEditMessage - 106, // 218: WAWebProtobufsE2E.Message.ptvMessage:type_name -> WAWebProtobufsE2E.VideoMessage - 146, // 219: WAWebProtobufsE2E.Message.botInvokeMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage - 83, // 220: WAWebProtobufsE2E.Message.callLogMesssage:type_name -> WAWebProtobufsE2E.CallLogMessage - 132, // 221: WAWebProtobufsE2E.Message.messageHistoryBundle:type_name -> WAWebProtobufsE2E.MessageHistoryBundle - 136, // 222: WAWebProtobufsE2E.Message.encCommentMessage:type_name -> WAWebProtobufsE2E.EncCommentMessage - 82, // 223: WAWebProtobufsE2E.Message.bcallMessage:type_name -> WAWebProtobufsE2E.BCallMessage - 146, // 224: WAWebProtobufsE2E.Message.lottieStickerMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage - 134, // 225: WAWebProtobufsE2E.Message.eventMessage:type_name -> WAWebProtobufsE2E.EventMessage - 133, // 226: WAWebProtobufsE2E.Message.encEventResponseMessage:type_name -> WAWebProtobufsE2E.EncEventResponseMessage - 135, // 227: WAWebProtobufsE2E.Message.commentMessage:type_name -> WAWebProtobufsE2E.CommentMessage - 149, // 228: WAWebProtobufsE2E.Message.newsletterAdminInviteMessage:type_name -> WAWebProtobufsE2E.NewsletterAdminInviteMessage - 81, // 229: WAWebProtobufsE2E.Message.placeholderMessage:type_name -> WAWebProtobufsE2E.PlaceholderMessage - 91, // 230: WAWebProtobufsE2E.Message.secretEncryptedMessage:type_name -> WAWebProtobufsE2E.SecretEncryptedMessage - 131, // 231: WAWebProtobufsE2E.Message.albumMessage:type_name -> WAWebProtobufsE2E.AlbumMessage - 146, // 232: WAWebProtobufsE2E.Message.eventCoverImage:type_name -> WAWebProtobufsE2E.FutureProofMessage - 80, // 233: WAWebProtobufsE2E.Message.stickerPackMessage:type_name -> WAWebProtobufsE2E.StickerPackMessage - 146, // 234: WAWebProtobufsE2E.Message.statusMentionMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage - 139, // 235: WAWebProtobufsE2E.Message.pollResultSnapshotMessage:type_name -> WAWebProtobufsE2E.PollResultSnapshotMessage - 146, // 236: WAWebProtobufsE2E.Message.pollCreationOptionImageMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage - 146, // 237: WAWebProtobufsE2E.Message.associatedChildMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage - 146, // 238: WAWebProtobufsE2E.Message.groupStatusMentionMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage - 146, // 239: WAWebProtobufsE2E.Message.pollCreationMessageV4:type_name -> WAWebProtobufsE2E.FutureProofMessage - 146, // 240: WAWebProtobufsE2E.Message.pollCreationMessageV5:type_name -> WAWebProtobufsE2E.FutureProofMessage - 146, // 241: WAWebProtobufsE2E.Message.statusAddYours:type_name -> WAWebProtobufsE2E.FutureProofMessage - 146, // 242: WAWebProtobufsE2E.Message.groupStatusMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage - 115, // 243: WAWebProtobufsE2E.Message.richResponseMessage:type_name -> WAWebProtobufsE2E.AIRichResponseMessage - 109, // 244: WAWebProtobufsE2E.Message.statusNotificationMessage:type_name -> WAWebProtobufsE2E.StatusNotificationMessage - 146, // 245: WAWebProtobufsE2E.Message.limitSharingMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage - 146, // 246: WAWebProtobufsE2E.Message.botTaskMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage - 112, // 247: WAWebProtobufsE2E.AlbumMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 112, // 248: WAWebProtobufsE2E.MessageHistoryBundle.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 295, // 249: WAWebProtobufsE2E.EncEventResponseMessage.eventCreationMessageKey:type_name -> WACommon.MessageKey - 112, // 250: WAWebProtobufsE2E.EventMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 177, // 251: WAWebProtobufsE2E.EventMessage.location:type_name -> WAWebProtobufsE2E.LocationMessage - 130, // 252: WAWebProtobufsE2E.CommentMessage.message:type_name -> WAWebProtobufsE2E.Message - 295, // 253: WAWebProtobufsE2E.CommentMessage.targetMessageKey:type_name -> WACommon.MessageKey - 295, // 254: WAWebProtobufsE2E.EncCommentMessage.targetMessageKey:type_name -> WACommon.MessageKey - 295, // 255: WAWebProtobufsE2E.EncReactionMessage.targetMessageKey:type_name -> WACommon.MessageKey - 295, // 256: WAWebProtobufsE2E.KeepInChatMessage.key:type_name -> WACommon.MessageKey - 5, // 257: WAWebProtobufsE2E.KeepInChatMessage.keepType:type_name -> WAWebProtobufsE2E.KeepType - 280, // 258: WAWebProtobufsE2E.PollResultSnapshotMessage.pollVotes:type_name -> WAWebProtobufsE2E.PollResultSnapshotMessage.PollVote - 112, // 259: WAWebProtobufsE2E.PollResultSnapshotMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 295, // 260: WAWebProtobufsE2E.PollUpdateMessage.pollCreationMessageKey:type_name -> WACommon.MessageKey - 141, // 261: WAWebProtobufsE2E.PollUpdateMessage.vote:type_name -> WAWebProtobufsE2E.PollEncValue - 142, // 262: WAWebProtobufsE2E.PollUpdateMessage.metadata:type_name -> WAWebProtobufsE2E.PollUpdateMessageMetadata - 295, // 263: WAWebProtobufsE2E.ReactionMessage.key:type_name -> WACommon.MessageKey - 130, // 264: WAWebProtobufsE2E.FutureProofMessage.message:type_name -> WAWebProtobufsE2E.Message - 130, // 265: WAWebProtobufsE2E.DeviceSentMessage.message:type_name -> WAWebProtobufsE2E.Message - 112, // 266: WAWebProtobufsE2E.RequestPhoneNumberMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 112, // 267: WAWebProtobufsE2E.NewsletterAdminInviteMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 281, // 268: WAWebProtobufsE2E.ProductMessage.product:type_name -> WAWebProtobufsE2E.ProductMessage.ProductSnapshot - 282, // 269: WAWebProtobufsE2E.ProductMessage.catalog:type_name -> WAWebProtobufsE2E.ProductMessage.CatalogSnapshot - 112, // 270: WAWebProtobufsE2E.ProductMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 112, // 271: WAWebProtobufsE2E.TemplateButtonReplyMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 284, // 272: WAWebProtobufsE2E.TemplateMessage.fourRowTemplate:type_name -> WAWebProtobufsE2E.TemplateMessage.FourRowTemplate - 283, // 273: WAWebProtobufsE2E.TemplateMessage.hydratedFourRowTemplate:type_name -> WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplate - 94, // 274: WAWebProtobufsE2E.TemplateMessage.interactiveMessageTemplate:type_name -> WAWebProtobufsE2E.InteractiveMessage - 112, // 275: WAWebProtobufsE2E.TemplateMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 283, // 276: WAWebProtobufsE2E.TemplateMessage.hydratedTemplate:type_name -> WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplate - 112, // 277: WAWebProtobufsE2E.StickerMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 112, // 278: WAWebProtobufsE2E.LiveLocationMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 295, // 279: WAWebProtobufsE2E.CancelPaymentRequestMessage.key:type_name -> WACommon.MessageKey - 295, // 280: WAWebProtobufsE2E.DeclinePaymentRequestMessage.key:type_name -> WACommon.MessageKey - 130, // 281: WAWebProtobufsE2E.RequestPaymentMessage.noteMessage:type_name -> WAWebProtobufsE2E.Message - 200, // 282: WAWebProtobufsE2E.RequestPaymentMessage.amount:type_name -> WAWebProtobufsE2E.Money - 127, // 283: WAWebProtobufsE2E.RequestPaymentMessage.background:type_name -> WAWebProtobufsE2E.PaymentBackground - 130, // 284: WAWebProtobufsE2E.SendPaymentMessage.noteMessage:type_name -> WAWebProtobufsE2E.Message - 295, // 285: WAWebProtobufsE2E.SendPaymentMessage.requestMessageKey:type_name -> WACommon.MessageKey - 127, // 286: WAWebProtobufsE2E.SendPaymentMessage.background:type_name -> WAWebProtobufsE2E.PaymentBackground - 178, // 287: WAWebProtobufsE2E.ContactsArrayMessage.contacts:type_name -> WAWebProtobufsE2E.ContactMessage - 112, // 288: WAWebProtobufsE2E.ContactsArrayMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 1, // 289: WAWebProtobufsE2E.PeerDataOperationRequestMessage.peerDataOperationRequestType:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestType - 289, // 290: WAWebProtobufsE2E.PeerDataOperationRequestMessage.requestStickerReupload:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestMessage.RequestStickerReupload - 288, // 291: WAWebProtobufsE2E.PeerDataOperationRequestMessage.requestURLPreview:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestMessage.RequestUrlPreview - 287, // 292: WAWebProtobufsE2E.PeerDataOperationRequestMessage.historySyncOnDemandRequest:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest - 285, // 293: WAWebProtobufsE2E.PeerDataOperationRequestMessage.placeholderMessageResendRequest:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest - 286, // 294: WAWebProtobufsE2E.PeerDataOperationRequestMessage.fullHistorySyncOnDemandRequest:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestMessage.FullHistorySyncOnDemandRequest - 168, // 295: WAWebProtobufsE2E.AppStateSyncKeyRequest.keyIDs:type_name -> WAWebProtobufsE2E.AppStateSyncKeyId - 169, // 296: WAWebProtobufsE2E.AppStateSyncKeyShare.keys:type_name -> WAWebProtobufsE2E.AppStateSyncKey - 167, // 297: WAWebProtobufsE2E.AppStateSyncKeyData.fingerprint:type_name -> WAWebProtobufsE2E.AppStateSyncKeyFingerprint - 168, // 298: WAWebProtobufsE2E.AppStateSyncKey.keyID:type_name -> WAWebProtobufsE2E.AppStateSyncKeyId - 166, // 299: WAWebProtobufsE2E.AppStateSyncKey.keyData:type_name -> WAWebProtobufsE2E.AppStateSyncKeyData - 112, // 300: WAWebProtobufsE2E.AudioMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 112, // 301: WAWebProtobufsE2E.DocumentMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 108, // 302: WAWebProtobufsE2E.LinkPreviewMetadata.paymentLinkMetadata:type_name -> WAWebProtobufsE2E.PaymentLinkMetadata - 175, // 303: WAWebProtobufsE2E.LinkPreviewMetadata.urlMetadata:type_name -> WAWebProtobufsE2E.URLMetadata - 112, // 304: WAWebProtobufsE2E.LocationMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 112, // 305: WAWebProtobufsE2E.ContactMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo - 182, // 306: WAWebProtobufsE2E.BotSuggestedPromptMetadata.promptSuggestions:type_name -> WAWebProtobufsE2E.BotPromptSuggestions - 183, // 307: WAWebProtobufsE2E.BotPromptSuggestions.suggestions:type_name -> WAWebProtobufsE2E.BotPromptSuggestion - 114, // 308: WAWebProtobufsE2E.BotLinkedAccountsMetadata.accounts:type_name -> WAWebProtobufsE2E.BotLinkedAccount - 186, // 309: WAWebProtobufsE2E.BotMemoryMetadata.addedFacts:type_name -> WAWebProtobufsE2E.BotMemoryFact - 186, // 310: WAWebProtobufsE2E.BotMemoryMetadata.removedFacts:type_name -> WAWebProtobufsE2E.BotMemoryFact - 290, // 311: WAWebProtobufsE2E.BotRenderingMetadata.keywords:type_name -> WAWebProtobufsE2E.BotRenderingMetadata.Keyword - 2, // 312: WAWebProtobufsE2E.BotMetricsMetadata.destinationEntryPoint:type_name -> WAWebProtobufsE2E.BotMetricsEntryPoint - 3, // 313: WAWebProtobufsE2E.BotMetricsMetadata.threadOrigin:type_name -> WAWebProtobufsE2E.BotMetricsThreadEntryPoint - 4, // 314: WAWebProtobufsE2E.BotSessionMetadata.sessionSource:type_name -> WAWebProtobufsE2E.BotSessionSource - 116, // 315: WAWebProtobufsE2E.BotMemuMetadata.faceImages:type_name -> WAWebProtobufsE2E.BotMediaMetadata - 180, // 316: WAWebProtobufsE2E.BotMetadata.avatarMetadata:type_name -> WAWebProtobufsE2E.BotAvatarMetadata - 113, // 317: WAWebProtobufsE2E.BotMetadata.pluginMetadata:type_name -> WAWebProtobufsE2E.BotPluginMetadata - 181, // 318: WAWebProtobufsE2E.BotMetadata.suggestedPromptMetadata:type_name -> WAWebProtobufsE2E.BotSuggestedPromptMetadata - 189, // 319: WAWebProtobufsE2E.BotMetadata.sessionMetadata:type_name -> WAWebProtobufsE2E.BotSessionMetadata - 190, // 320: WAWebProtobufsE2E.BotMetadata.memuMetadata:type_name -> WAWebProtobufsE2E.BotMemuMetadata - 117, // 321: WAWebProtobufsE2E.BotMetadata.reminderMetadata:type_name -> WAWebProtobufsE2E.BotReminderMetadata - 118, // 322: WAWebProtobufsE2E.BotMetadata.modelMetadata:type_name -> WAWebProtobufsE2E.BotModelMetadata - 119, // 323: WAWebProtobufsE2E.BotMetadata.progressIndicatorMetadata:type_name -> WAWebProtobufsE2E.BotProgressIndicatorMetadata - 120, // 324: WAWebProtobufsE2E.BotMetadata.capabilityMetadata:type_name -> WAWebProtobufsE2E.BotCapabilityMetadata - 121, // 325: WAWebProtobufsE2E.BotMetadata.imagineMetadata:type_name -> WAWebProtobufsE2E.BotImagineMetadata - 185, // 326: WAWebProtobufsE2E.BotMetadata.memoryMetadata:type_name -> WAWebProtobufsE2E.BotMemoryMetadata - 187, // 327: WAWebProtobufsE2E.BotMetadata.renderingMetadata:type_name -> WAWebProtobufsE2E.BotRenderingMetadata - 188, // 328: WAWebProtobufsE2E.BotMetadata.botMetricsMetadata:type_name -> WAWebProtobufsE2E.BotMetricsMetadata - 184, // 329: WAWebProtobufsE2E.BotMetadata.botLinkedAccountsMetadata:type_name -> WAWebProtobufsE2E.BotLinkedAccountsMetadata - 122, // 330: WAWebProtobufsE2E.BotMetadata.richResponseSourcesMetadata:type_name -> WAWebProtobufsE2E.BotSourcesMetadata - 297, // 331: WAWebProtobufsE2E.DeviceListMetadata.senderAccountType:type_name -> WAAdv.ADVEncryptionType - 297, // 332: WAWebProtobufsE2E.DeviceListMetadata.receiverAccountType:type_name -> WAAdv.ADVEncryptionType - 130, // 333: WAWebProtobufsE2E.EmbeddedMessage.message:type_name -> WAWebProtobufsE2E.Message - 193, // 334: WAWebProtobufsE2E.EmbeddedContent.embeddedMessage:type_name -> WAWebProtobufsE2E.EmbeddedMessage - 194, // 335: WAWebProtobufsE2E.EmbeddedContent.embeddedMusic:type_name -> WAWebProtobufsE2E.EmbeddedMusic - 293, // 336: WAWebProtobufsE2E.TemplateButton.quickReplyButton:type_name -> WAWebProtobufsE2E.TemplateButton.QuickReplyButton - 292, // 337: WAWebProtobufsE2E.TemplateButton.urlButton:type_name -> WAWebProtobufsE2E.TemplateButton.URLButton - 291, // 338: WAWebProtobufsE2E.TemplateButton.callButton:type_name -> WAWebProtobufsE2E.TemplateButton.CallButton - 294, // 339: WAWebProtobufsE2E.UrlTrackingMap.urlTrackingMapElements:type_name -> WAWebProtobufsE2E.UrlTrackingMap.UrlTrackingMapElement - 295, // 340: WAWebProtobufsE2E.AIQueryFanout.messageKey:type_name -> WACommon.MessageKey - 130, // 341: WAWebProtobufsE2E.AIQueryFanout.message:type_name -> WAWebProtobufsE2E.Message - 9, // 342: WAWebProtobufsE2E.CallLogMessage.CallParticipant.callOutcome:type_name -> WAWebProtobufsE2E.CallLogMessage.CallOutcome - 213, // 343: WAWebProtobufsE2E.ButtonsMessage.Button.buttonText:type_name -> WAWebProtobufsE2E.ButtonsMessage.Button.ButtonText - 18, // 344: WAWebProtobufsE2E.ButtonsMessage.Button.type:type_name -> WAWebProtobufsE2E.ButtonsMessage.Button.Type - 212, // 345: WAWebProtobufsE2E.ButtonsMessage.Button.nativeFlowInfo:type_name -> WAWebProtobufsE2E.ButtonsMessage.Button.NativeFlowInfo - 21, // 346: WAWebProtobufsE2E.InteractiveResponseMessage.Body.format:type_name -> WAWebProtobufsE2E.InteractiveResponseMessage.Body.Format - 22, // 347: WAWebProtobufsE2E.InteractiveMessage.ShopMessage.surface:type_name -> WAWebProtobufsE2E.InteractiveMessage.ShopMessage.Surface - 94, // 348: WAWebProtobufsE2E.InteractiveMessage.CarouselMessage.cards:type_name -> WAWebProtobufsE2E.InteractiveMessage - 223, // 349: WAWebProtobufsE2E.InteractiveMessage.NativeFlowMessage.buttons:type_name -> WAWebProtobufsE2E.InteractiveMessage.NativeFlowMessage.NativeFlowButton - 173, // 350: WAWebProtobufsE2E.InteractiveMessage.Header.documentMessage:type_name -> WAWebProtobufsE2E.DocumentMessage - 111, // 351: WAWebProtobufsE2E.InteractiveMessage.Header.imageMessage:type_name -> WAWebProtobufsE2E.ImageMessage - 106, // 352: WAWebProtobufsE2E.InteractiveMessage.Header.videoMessage:type_name -> WAWebProtobufsE2E.VideoMessage - 177, // 353: WAWebProtobufsE2E.InteractiveMessage.Header.locationMessage:type_name -> WAWebProtobufsE2E.LocationMessage - 150, // 354: WAWebProtobufsE2E.InteractiveMessage.Header.productMessage:type_name -> WAWebProtobufsE2E.ProductMessage - 227, // 355: WAWebProtobufsE2E.ListMessage.ProductListInfo.productSections:type_name -> WAWebProtobufsE2E.ListMessage.ProductSection - 226, // 356: WAWebProtobufsE2E.ListMessage.ProductListInfo.headerImage:type_name -> WAWebProtobufsE2E.ListMessage.ProductListHeaderImage - 228, // 357: WAWebProtobufsE2E.ListMessage.ProductSection.products:type_name -> WAWebProtobufsE2E.ListMessage.Product - 230, // 358: WAWebProtobufsE2E.ListMessage.Section.rows:type_name -> WAWebProtobufsE2E.ListMessage.Row - 233, // 359: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.currency:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMCurrency - 232, // 360: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.dateTime:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime - 234, // 361: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.component:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent - 235, // 362: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.unixEpoch:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeUnixEpoch - 29, // 363: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.dayOfWeek:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.DayOfWeekType - 28, // 364: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.calendar:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.CalendarType - 298, // 365: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.mediaUploadResult:type_name -> WAMmsRetry.MediaRetryNotification.ResultType - 153, // 366: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.stickerMessage:type_name -> WAWebProtobufsE2E.StickerMessage - 241, // 367: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.linkPreviewResponse:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse - 240, // 368: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.placeholderMessageResendResponse:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse - 238, // 369: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.waffleNonceFetchRequestResponse:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.WaffleNonceFetchResponse - 239, // 370: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.fullHistorySyncOnDemandRequestResponse:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.FullHistorySyncOnDemandRequestResponse - 237, // 371: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.companionMetaNonceFetchRequestResponse:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.CompanionMetaNonceFetchResponse - 162, // 372: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.FullHistorySyncOnDemandRequestResponse.requestMetadata:type_name -> WAWebProtobufsE2E.FullHistorySyncOnDemandRequestMetadata - 30, // 373: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.FullHistorySyncOnDemandRequestResponse.responseCode:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.FullHistorySyncOnDemandResponseCode - 242, // 374: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.hqThumbnail:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail - 43, // 375: WAWebProtobufsE2E.PaymentLinkMetadata.PaymentLinkHeader.headerType:type_name -> WAWebProtobufsE2E.PaymentLinkMetadata.PaymentLinkHeader.PaymentLinkHeaderType - 49, // 376: WAWebProtobufsE2E.ContextInfo.ForwardedNewsletterMessageInfo.contentType:type_name -> WAWebProtobufsE2E.ContextInfo.ForwardedNewsletterMessageInfo.ContentType - 50, // 377: WAWebProtobufsE2E.ContextInfo.ExternalAdReplyInfo.mediaType:type_name -> WAWebProtobufsE2E.ContextInfo.ExternalAdReplyInfo.MediaType - 51, // 378: WAWebProtobufsE2E.ContextInfo.AdReplyInfo.mediaType:type_name -> WAWebProtobufsE2E.ContextInfo.AdReplyInfo.MediaType - 253, // 379: WAWebProtobufsE2E.ContextInfo.DataSharingContext.parameters:type_name -> WAWebProtobufsE2E.ContextInfo.DataSharingContext.Parameters - 253, // 380: WAWebProtobufsE2E.ContextInfo.DataSharingContext.Parameters.contents:type_name -> WAWebProtobufsE2E.ContextInfo.DataSharingContext.Parameters - 265, // 381: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.itemsMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.AIRichResponseContentItemMetadata - 57, // 382: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.contentType:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.ContentType - 58, // 383: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseDynamicMetadata.type:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseDynamicMetadata.AIRichResponseDynamicMetadataType - 267, // 384: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata.codeBlocks:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata.AIRichResponseCodeBlock - 264, // 385: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseInlineImageMetadata.imageURL:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseImageURL - 60, // 386: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseInlineImageMetadata.alignment:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseInlineImageMetadata.AIRichResponseImageAlignment - 55, // 387: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.messageType:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessageType - 263, // 388: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.gridImageMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseGridImageMetadata - 257, // 389: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.imageMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseInlineImageMetadata - 256, // 390: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.codeMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata - 262, // 391: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.tableMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseTableMetadata - 255, // 392: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.dynamicMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseDynamicMetadata - 260, // 393: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.latexMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseLatexMetadata - 259, // 394: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.mapMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMapMetadata - 254, // 395: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.contentItemsMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata - 268, // 396: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMapMetadata.annotations:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMapMetadata.AIRichResponseMapAnnotation - 269, // 397: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseLatexMetadata.expressions:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseLatexMetadata.AIRichResponseLatexExpression - 270, // 398: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseTableMetadata.rows:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseTableMetadata.AIRichResponseTableRow - 264, // 399: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseGridImageMetadata.gridImageURL:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseImageURL - 264, // 400: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseGridImageMetadata.imageURLs:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseImageURL - 266, // 401: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.AIRichResponseContentItemMetadata.reelItem:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.AIRichResponseReelItem - 59, // 402: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata.AIRichResponseCodeBlock.highlightType:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata.AIRichResponseCodeHighlightType - 272, // 403: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.sourcesMetadata:type_name -> WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourcesMetadata - 67, // 404: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.status:type_name -> WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.PlanningStepStatus - 273, // 405: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.sections:type_name -> WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningStepSectionMetadata - 68, // 406: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourcesMetadata.provider:type_name -> WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourcesMetadata.BotPlanningSearchSourceProvider - 274, // 407: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningStepSectionMetadata.sourcesMetadata:type_name -> WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourceMetadata - 66, // 408: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourceMetadata.provider:type_name -> WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotSearchSourceProvider - 71, // 409: WAWebProtobufsE2E.BotSourcesMetadata.BotSourceItem.provider:type_name -> WAWebProtobufsE2E.BotSourcesMetadata.BotSourceItem.SourceProvider - 75, // 410: WAWebProtobufsE2E.HydratedTemplateButton.HydratedURLButton.webviewPresentation:type_name -> WAWebProtobufsE2E.HydratedTemplateButton.HydratedURLButton.WebviewPresentationType - 111, // 411: WAWebProtobufsE2E.ProductMessage.ProductSnapshot.productImage:type_name -> WAWebProtobufsE2E.ImageMessage - 111, // 412: WAWebProtobufsE2E.ProductMessage.CatalogSnapshot.catalogImage:type_name -> WAWebProtobufsE2E.ImageMessage - 173, // 413: WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplate.documentMessage:type_name -> WAWebProtobufsE2E.DocumentMessage - 111, // 414: WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplate.imageMessage:type_name -> WAWebProtobufsE2E.ImageMessage - 106, // 415: WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplate.videoMessage:type_name -> WAWebProtobufsE2E.VideoMessage - 177, // 416: WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplate.locationMessage:type_name -> WAWebProtobufsE2E.LocationMessage - 126, // 417: WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplate.hydratedButtons:type_name -> WAWebProtobufsE2E.HydratedTemplateButton - 173, // 418: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate.documentMessage:type_name -> WAWebProtobufsE2E.DocumentMessage - 99, // 419: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate.highlyStructuredMessage:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage - 111, // 420: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate.imageMessage:type_name -> WAWebProtobufsE2E.ImageMessage - 106, // 421: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate.videoMessage:type_name -> WAWebProtobufsE2E.VideoMessage - 177, // 422: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate.locationMessage:type_name -> WAWebProtobufsE2E.LocationMessage - 99, // 423: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate.content:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage - 99, // 424: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate.footer:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage - 199, // 425: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate.buttons:type_name -> WAWebProtobufsE2E.TemplateButton - 295, // 426: WAWebProtobufsE2E.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest.messageKey:type_name -> WACommon.MessageKey - 162, // 427: WAWebProtobufsE2E.PeerDataOperationRequestMessage.FullHistorySyncOnDemandRequest.requestMetadata:type_name -> WAWebProtobufsE2E.FullHistorySyncOnDemandRequestMetadata - 299, // 428: WAWebProtobufsE2E.PeerDataOperationRequestMessage.FullHistorySyncOnDemandRequest.historySyncConfig:type_name -> WACompanionReg.DeviceProps.HistorySyncConfig - 99, // 429: WAWebProtobufsE2E.TemplateButton.CallButton.displayText:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage - 99, // 430: WAWebProtobufsE2E.TemplateButton.CallButton.phoneNumber:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage - 99, // 431: WAWebProtobufsE2E.TemplateButton.URLButton.displayText:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage - 99, // 432: WAWebProtobufsE2E.TemplateButton.URLButton.URL:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage - 99, // 433: WAWebProtobufsE2E.TemplateButton.QuickReplyButton.displayText:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage - 434, // [434:434] is the sub-list for method output_type - 434, // [434:434] is the sub-list for method input_type - 434, // [434:434] is the sub-list for extension type_name - 434, // [434:434] is the sub-list for extension extendee - 0, // [0:434] is the sub-list for field type_name + 106, // 65: WAWebProtobufsE2E.ProtocolMessage.historySyncNotification:type_name -> WAWebProtobufsE2E.HistorySyncNotification + 175, // 66: WAWebProtobufsE2E.ProtocolMessage.appStateSyncKeyShare:type_name -> WAWebProtobufsE2E.AppStateSyncKeyShare + 174, // 67: WAWebProtobufsE2E.ProtocolMessage.appStateSyncKeyRequest:type_name -> WAWebProtobufsE2E.AppStateSyncKeyRequest + 170, // 68: WAWebProtobufsE2E.ProtocolMessage.initialSecurityNotificationSettingSync:type_name -> WAWebProtobufsE2E.InitialSecurityNotificationSettingSync + 173, // 69: WAWebProtobufsE2E.ProtocolMessage.appStateFatalExceptionNotification:type_name -> WAWebProtobufsE2E.AppStateFatalExceptionNotification + 136, // 70: WAWebProtobufsE2E.ProtocolMessage.disappearingMode:type_name -> WAWebProtobufsE2E.DisappearingMode + 138, // 71: WAWebProtobufsE2E.ProtocolMessage.editedMessage:type_name -> WAWebProtobufsE2E.Message + 171, // 72: WAWebProtobufsE2E.ProtocolMessage.peerDataOperationRequestMessage:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestMessage + 105, // 73: WAWebProtobufsE2E.ProtocolMessage.peerDataOperationRequestResponseMessage:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage + 110, // 74: WAWebProtobufsE2E.ProtocolMessage.botFeedbackMessage:type_name -> WAWebProtobufsE2E.BotFeedbackMessage + 107, // 75: WAWebProtobufsE2E.ProtocolMessage.requestWelcomeMessageMetadata:type_name -> WAWebProtobufsE2E.RequestWelcomeMessageMetadata + 215, // 76: WAWebProtobufsE2E.ProtocolMessage.mediaNotifyMessage:type_name -> WAWebProtobufsE2E.MediaNotifyMessage + 109, // 77: WAWebProtobufsE2E.ProtocolMessage.cloudApiThreadControlNotification:type_name -> WAWebProtobufsE2E.CloudAPIThreadControlNotification + 216, // 78: WAWebProtobufsE2E.ProtocolMessage.lidMigrationMappingSyncMessage:type_name -> WAWebProtobufsE2E.LIDMigrationMappingSyncMessage + 312, // 79: WAWebProtobufsE2E.ProtocolMessage.limitSharing:type_name -> WACommon.LimitSharing + 218, // 80: WAWebProtobufsE2E.ProtocolMessage.aiQueryFanout:type_name -> WAWebProtobufsE2E.AIQueryFanout + 219, // 81: WAWebProtobufsE2E.ProtocolMessage.memberLabel:type_name -> WAWebProtobufsE2E.MemberLabel + 34, // 82: WAWebProtobufsE2E.CloudAPIThreadControlNotification.status:type_name -> WAWebProtobufsE2E.CloudAPIThreadControlNotification.CloudAPIThreadControl + 256, // 83: WAWebProtobufsE2E.CloudAPIThreadControlNotification.notificationContent:type_name -> WAWebProtobufsE2E.CloudAPIThreadControlNotification.CloudAPIThreadControlNotificationContent + 311, // 84: WAWebProtobufsE2E.BotFeedbackMessage.messageKey:type_name -> WACommon.MessageKey + 38, // 85: WAWebProtobufsE2E.BotFeedbackMessage.kind:type_name -> WAWebProtobufsE2E.BotFeedbackMessage.BotFeedbackKind + 35, // 86: WAWebProtobufsE2E.BotFeedbackMessage.kindReport:type_name -> WAWebProtobufsE2E.BotFeedbackMessage.ReportKind + 133, // 87: WAWebProtobufsE2E.VideoMessage.interactiveAnnotations:type_name -> WAWebProtobufsE2E.InteractiveAnnotation + 117, // 88: WAWebProtobufsE2E.VideoMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 39, // 89: WAWebProtobufsE2E.VideoMessage.gifAttribution:type_name -> WAWebProtobufsE2E.VideoMessage.Attribution + 133, // 90: WAWebProtobufsE2E.VideoMessage.annotations:type_name -> WAWebProtobufsE2E.InteractiveAnnotation + 137, // 91: WAWebProtobufsE2E.VideoMessage.processedVideos:type_name -> WAWebProtobufsE2E.ProcessedVideo + 42, // 92: WAWebProtobufsE2E.ExtendedTextMessage.font:type_name -> WAWebProtobufsE2E.ExtendedTextMessage.FontType + 41, // 93: WAWebProtobufsE2E.ExtendedTextMessage.previewType:type_name -> WAWebProtobufsE2E.ExtendedTextMessage.PreviewType + 117, // 94: WAWebProtobufsE2E.ExtendedTextMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 40, // 95: WAWebProtobufsE2E.ExtendedTextMessage.inviteLinkGroupType:type_name -> WAWebProtobufsE2E.ExtendedTextMessage.InviteLinkGroupType + 40, // 96: WAWebProtobufsE2E.ExtendedTextMessage.inviteLinkGroupTypeV2:type_name -> WAWebProtobufsE2E.ExtendedTextMessage.InviteLinkGroupType + 186, // 97: WAWebProtobufsE2E.ExtendedTextMessage.faviconMMSMetadata:type_name -> WAWebProtobufsE2E.MMSThumbnailMetadata + 184, // 98: WAWebProtobufsE2E.ExtendedTextMessage.linkPreviewMetadata:type_name -> WAWebProtobufsE2E.LinkPreviewMetadata + 113, // 99: WAWebProtobufsE2E.ExtendedTextMessage.paymentLinkMetadata:type_name -> WAWebProtobufsE2E.PaymentLinkMetadata + 258, // 100: WAWebProtobufsE2E.PaymentLinkMetadata.button:type_name -> WAWebProtobufsE2E.PaymentLinkMetadata.PaymentLinkButton + 257, // 101: WAWebProtobufsE2E.PaymentLinkMetadata.header:type_name -> WAWebProtobufsE2E.PaymentLinkMetadata.PaymentLinkHeader + 311, // 102: WAWebProtobufsE2E.StatusNotificationMessage.responseMessageKey:type_name -> WACommon.MessageKey + 311, // 103: WAWebProtobufsE2E.StatusNotificationMessage.originalMessageKey:type_name -> WACommon.MessageKey + 44, // 104: WAWebProtobufsE2E.StatusNotificationMessage.type:type_name -> WAWebProtobufsE2E.StatusNotificationMessage.StatusNotificationType + 45, // 105: WAWebProtobufsE2E.InvoiceMessage.attachmentType:type_name -> WAWebProtobufsE2E.InvoiceMessage.AttachmentType + 133, // 106: WAWebProtobufsE2E.ImageMessage.interactiveAnnotations:type_name -> WAWebProtobufsE2E.InteractiveAnnotation + 117, // 107: WAWebProtobufsE2E.ImageMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 133, // 108: WAWebProtobufsE2E.ImageMessage.annotations:type_name -> WAWebProtobufsE2E.InteractiveAnnotation + 46, // 109: WAWebProtobufsE2E.ImageMessage.imageSourceType:type_name -> WAWebProtobufsE2E.ImageMessage.ImageSourceType + 138, // 110: WAWebProtobufsE2E.ContextInfo.quotedMessage:type_name -> WAWebProtobufsE2E.Message + 261, // 111: WAWebProtobufsE2E.ContextInfo.quotedAd:type_name -> WAWebProtobufsE2E.ContextInfo.AdReplyInfo + 311, // 112: WAWebProtobufsE2E.ContextInfo.placeholderKey:type_name -> WACommon.MessageKey + 260, // 113: WAWebProtobufsE2E.ContextInfo.externalAdReply:type_name -> WAWebProtobufsE2E.ContextInfo.ExternalAdReplyInfo + 136, // 114: WAWebProtobufsE2E.ContextInfo.disappearingMode:type_name -> WAWebProtobufsE2E.DisappearingMode + 212, // 115: WAWebProtobufsE2E.ContextInfo.actionLink:type_name -> WAWebProtobufsE2E.ActionLink + 213, // 116: WAWebProtobufsE2E.ContextInfo.groupMentions:type_name -> WAWebProtobufsE2E.GroupMention + 265, // 117: WAWebProtobufsE2E.ContextInfo.utm:type_name -> WAWebProtobufsE2E.ContextInfo.UTMInfo + 259, // 118: WAWebProtobufsE2E.ContextInfo.forwardedNewsletterMessageInfo:type_name -> WAWebProtobufsE2E.ContextInfo.ForwardedNewsletterMessageInfo + 266, // 119: WAWebProtobufsE2E.ContextInfo.businessMessageForwardInfo:type_name -> WAWebProtobufsE2E.ContextInfo.BusinessMessageForwardInfo + 263, // 120: WAWebProtobufsE2E.ContextInfo.dataSharingContext:type_name -> WAWebProtobufsE2E.ContextInfo.DataSharingContext + 262, // 121: WAWebProtobufsE2E.ContextInfo.featureEligibilities:type_name -> WAWebProtobufsE2E.ContextInfo.FeatureEligibilities + 264, // 122: WAWebProtobufsE2E.ContextInfo.forwardedAiBotMessageInfo:type_name -> WAWebProtobufsE2E.ContextInfo.ForwardedAIBotMessageInfo + 49, // 123: WAWebProtobufsE2E.ContextInfo.statusAttributionType:type_name -> WAWebProtobufsE2E.ContextInfo.StatusAttributionType + 217, // 124: WAWebProtobufsE2E.ContextInfo.urlTrackingMap:type_name -> WAWebProtobufsE2E.UrlTrackingMap + 48, // 125: WAWebProtobufsE2E.ContextInfo.pairedMediaType:type_name -> WAWebProtobufsE2E.ContextInfo.PairedMediaType + 219, // 126: WAWebProtobufsE2E.ContextInfo.memberLabel:type_name -> WAWebProtobufsE2E.MemberLabel + 47, // 127: WAWebProtobufsE2E.ContextInfo.statusSourceType:type_name -> WAWebProtobufsE2E.ContextInfo.StatusSourceType + 55, // 128: WAWebProtobufsE2E.BotPluginMetadata.provider:type_name -> WAWebProtobufsE2E.BotPluginMetadata.SearchProvider + 54, // 129: WAWebProtobufsE2E.BotPluginMetadata.pluginType:type_name -> WAWebProtobufsE2E.BotPluginMetadata.PluginType + 311, // 130: WAWebProtobufsE2E.BotPluginMetadata.parentPluginMessageKey:type_name -> WACommon.MessageKey + 54, // 131: WAWebProtobufsE2E.BotPluginMetadata.deprecatedField:type_name -> WAWebProtobufsE2E.BotPluginMetadata.PluginType + 54, // 132: WAWebProtobufsE2E.BotPluginMetadata.parentPluginType:type_name -> WAWebProtobufsE2E.BotPluginMetadata.PluginType + 56, // 133: WAWebProtobufsE2E.BotLinkedAccount.type:type_name -> WAWebProtobufsE2E.BotLinkedAccount.BotLinkedAccountType + 58, // 134: WAWebProtobufsE2E.AIRichResponseMessage.messageType:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMessageType + 272, // 135: WAWebProtobufsE2E.AIRichResponseMessage.submessages:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage + 275, // 136: WAWebProtobufsE2E.AIRichResponseMessage.unifiedResponse:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseUnifiedResponse + 63, // 137: WAWebProtobufsE2E.BotPromotionMessageMetadata.promotionType:type_name -> WAWebProtobufsE2E.BotPromotionMessageMetadata.BotPromotionType + 64, // 138: WAWebProtobufsE2E.BotMediaMetadata.orientationType:type_name -> WAWebProtobufsE2E.BotMediaMetadata.OrientationType + 311, // 139: WAWebProtobufsE2E.BotReminderMetadata.requestMessageKey:type_name -> WACommon.MessageKey + 66, // 140: WAWebProtobufsE2E.BotReminderMetadata.action:type_name -> WAWebProtobufsE2E.BotReminderMetadata.ReminderAction + 65, // 141: WAWebProtobufsE2E.BotReminderMetadata.frequency:type_name -> WAWebProtobufsE2E.BotReminderMetadata.ReminderFrequency + 68, // 142: WAWebProtobufsE2E.BotModelMetadata.modelType:type_name -> WAWebProtobufsE2E.BotModelMetadata.ModelType + 67, // 143: WAWebProtobufsE2E.BotModelMetadata.premiumModelStatus:type_name -> WAWebProtobufsE2E.BotModelMetadata.PremiumModelStatus + 285, // 144: WAWebProtobufsE2E.BotProgressIndicatorMetadata.stepsMetadata:type_name -> WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata + 72, // 145: WAWebProtobufsE2E.BotCapabilityMetadata.capabilities:type_name -> WAWebProtobufsE2E.BotCapabilityMetadata.BotCapabilityType + 73, // 146: WAWebProtobufsE2E.BotModeSelectionMetadata.mode:type_name -> WAWebProtobufsE2E.BotModeSelectionMetadata.BotUserSelectionMode + 289, // 147: WAWebProtobufsE2E.BotQuotaMetadata.botFeatureQuotaMetadata:type_name -> WAWebProtobufsE2E.BotQuotaMetadata.BotFeatureQuotaMetadata + 75, // 148: WAWebProtobufsE2E.BotImagineMetadata.imagineType:type_name -> WAWebProtobufsE2E.BotImagineMetadata.ImagineType + 290, // 149: WAWebProtobufsE2E.BotSourcesMetadata.sources:type_name -> WAWebProtobufsE2E.BotSourcesMetadata.BotSourceItem + 77, // 150: WAWebProtobufsE2E.MessageAssociation.associationType:type_name -> WAWebProtobufsE2E.MessageAssociation.AssociationType + 311, // 151: WAWebProtobufsE2E.MessageAssociation.parentMessageKey:type_name -> WACommon.MessageKey + 203, // 152: WAWebProtobufsE2E.MessageContextInfo.deviceListMetadata:type_name -> WAWebProtobufsE2E.DeviceListMetadata + 202, // 153: WAWebProtobufsE2E.MessageContextInfo.botMetadata:type_name -> WAWebProtobufsE2E.BotMetadata + 78, // 154: WAWebProtobufsE2E.MessageContextInfo.messageAddOnExpiryType:type_name -> WAWebProtobufsE2E.MessageContextInfo.MessageAddonExpiryType + 131, // 155: WAWebProtobufsE2E.MessageContextInfo.messageAssociation:type_name -> WAWebProtobufsE2E.MessageAssociation + 312, // 156: WAWebProtobufsE2E.MessageContextInfo.limitSharing:type_name -> WACommon.LimitSharing + 312, // 157: WAWebProtobufsE2E.MessageContextInfo.limitSharingV2:type_name -> WACommon.LimitSharing + 209, // 158: WAWebProtobufsE2E.InteractiveAnnotation.location:type_name -> WAWebProtobufsE2E.Location + 259, // 159: WAWebProtobufsE2E.InteractiveAnnotation.newsletter:type_name -> WAWebProtobufsE2E.ContextInfo.ForwardedNewsletterMessageInfo + 207, // 160: WAWebProtobufsE2E.InteractiveAnnotation.tapAction:type_name -> WAWebProtobufsE2E.TapLinkAction + 208, // 161: WAWebProtobufsE2E.InteractiveAnnotation.polygonVertices:type_name -> WAWebProtobufsE2E.Point + 206, // 162: WAWebProtobufsE2E.InteractiveAnnotation.embeddedContent:type_name -> WAWebProtobufsE2E.EmbeddedContent + 79, // 163: WAWebProtobufsE2E.InteractiveAnnotation.statusLinkType:type_name -> WAWebProtobufsE2E.InteractiveAnnotation.StatusLinkType + 293, // 164: WAWebProtobufsE2E.HydratedTemplateButton.quickReplyButton:type_name -> WAWebProtobufsE2E.HydratedTemplateButton.HydratedQuickReplyButton + 291, // 165: WAWebProtobufsE2E.HydratedTemplateButton.urlButton:type_name -> WAWebProtobufsE2E.HydratedTemplateButton.HydratedURLButton + 292, // 166: WAWebProtobufsE2E.HydratedTemplateButton.callButton:type_name -> WAWebProtobufsE2E.HydratedTemplateButton.HydratedCallButton + 294, // 167: WAWebProtobufsE2E.PaymentBackground.mediaData:type_name -> WAWebProtobufsE2E.PaymentBackground.MediaData + 81, // 168: WAWebProtobufsE2E.PaymentBackground.type:type_name -> WAWebProtobufsE2E.PaymentBackground.Type + 83, // 169: WAWebProtobufsE2E.DisappearingMode.initiator:type_name -> WAWebProtobufsE2E.DisappearingMode.Initiator + 82, // 170: WAWebProtobufsE2E.DisappearingMode.trigger:type_name -> WAWebProtobufsE2E.DisappearingMode.Trigger + 84, // 171: WAWebProtobufsE2E.ProcessedVideo.quality:type_name -> WAWebProtobufsE2E.ProcessedVideo.VideoQuality + 189, // 172: WAWebProtobufsE2E.Message.senderKeyDistributionMessage:type_name -> WAWebProtobufsE2E.SenderKeyDistributionMessage + 116, // 173: WAWebProtobufsE2E.Message.imageMessage:type_name -> WAWebProtobufsE2E.ImageMessage + 188, // 174: WAWebProtobufsE2E.Message.contactMessage:type_name -> WAWebProtobufsE2E.ContactMessage + 187, // 175: WAWebProtobufsE2E.Message.locationMessage:type_name -> WAWebProtobufsE2E.LocationMessage + 112, // 176: WAWebProtobufsE2E.Message.extendedTextMessage:type_name -> WAWebProtobufsE2E.ExtendedTextMessage + 183, // 177: WAWebProtobufsE2E.Message.documentMessage:type_name -> WAWebProtobufsE2E.DocumentMessage + 182, // 178: WAWebProtobufsE2E.Message.audioMessage:type_name -> WAWebProtobufsE2E.AudioMessage + 111, // 179: WAWebProtobufsE2E.Message.videoMessage:type_name -> WAWebProtobufsE2E.VideoMessage + 181, // 180: WAWebProtobufsE2E.Message.call:type_name -> WAWebProtobufsE2E.Call + 180, // 181: WAWebProtobufsE2E.Message.chat:type_name -> WAWebProtobufsE2E.Chat + 108, // 182: WAWebProtobufsE2E.Message.protocolMessage:type_name -> WAWebProtobufsE2E.ProtocolMessage + 169, // 183: WAWebProtobufsE2E.Message.contactsArrayMessage:type_name -> WAWebProtobufsE2E.ContactsArrayMessage + 104, // 184: WAWebProtobufsE2E.Message.highlyStructuredMessage:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage + 189, // 185: WAWebProtobufsE2E.Message.fastRatchetKeySenderKeyDistributionMessage:type_name -> WAWebProtobufsE2E.SenderKeyDistributionMessage + 168, // 186: WAWebProtobufsE2E.Message.sendPaymentMessage:type_name -> WAWebProtobufsE2E.SendPaymentMessage + 164, // 187: WAWebProtobufsE2E.Message.liveLocationMessage:type_name -> WAWebProtobufsE2E.LiveLocationMessage + 167, // 188: WAWebProtobufsE2E.Message.requestPaymentMessage:type_name -> WAWebProtobufsE2E.RequestPaymentMessage + 166, // 189: WAWebProtobufsE2E.Message.declinePaymentRequestMessage:type_name -> WAWebProtobufsE2E.DeclinePaymentRequestMessage + 165, // 190: WAWebProtobufsE2E.Message.cancelPaymentRequestMessage:type_name -> WAWebProtobufsE2E.CancelPaymentRequestMessage + 162, // 191: WAWebProtobufsE2E.Message.templateMessage:type_name -> WAWebProtobufsE2E.TemplateMessage + 163, // 192: WAWebProtobufsE2E.Message.stickerMessage:type_name -> WAWebProtobufsE2E.StickerMessage + 97, // 193: WAWebProtobufsE2E.Message.groupInviteMessage:type_name -> WAWebProtobufsE2E.GroupInviteMessage + 161, // 194: WAWebProtobufsE2E.Message.templateButtonReplyMessage:type_name -> WAWebProtobufsE2E.TemplateButtonReplyMessage + 160, // 195: WAWebProtobufsE2E.Message.productMessage:type_name -> WAWebProtobufsE2E.ProductMessage + 157, // 196: WAWebProtobufsE2E.Message.deviceSentMessage:type_name -> WAWebProtobufsE2E.DeviceSentMessage + 132, // 197: WAWebProtobufsE2E.Message.messageContextInfo:type_name -> WAWebProtobufsE2E.MessageContextInfo + 101, // 198: WAWebProtobufsE2E.Message.listMessage:type_name -> WAWebProtobufsE2E.ListMessage + 156, // 199: WAWebProtobufsE2E.Message.viewOnceMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage + 102, // 200: WAWebProtobufsE2E.Message.orderMessage:type_name -> WAWebProtobufsE2E.OrderMessage + 100, // 201: WAWebProtobufsE2E.Message.listResponseMessage:type_name -> WAWebProtobufsE2E.ListResponseMessage + 156, // 202: WAWebProtobufsE2E.Message.ephemeralMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage + 115, // 203: WAWebProtobufsE2E.Message.invoiceMessage:type_name -> WAWebProtobufsE2E.InvoiceMessage + 95, // 204: WAWebProtobufsE2E.Message.buttonsMessage:type_name -> WAWebProtobufsE2E.ButtonsMessage + 94, // 205: WAWebProtobufsE2E.Message.buttonsResponseMessage:type_name -> WAWebProtobufsE2E.ButtonsResponseMessage + 103, // 206: WAWebProtobufsE2E.Message.paymentInviteMessage:type_name -> WAWebProtobufsE2E.PaymentInviteMessage + 99, // 207: WAWebProtobufsE2E.Message.interactiveMessage:type_name -> WAWebProtobufsE2E.InteractiveMessage + 155, // 208: WAWebProtobufsE2E.Message.reactionMessage:type_name -> WAWebProtobufsE2E.ReactionMessage + 154, // 209: WAWebProtobufsE2E.Message.stickerSyncRmrMessage:type_name -> WAWebProtobufsE2E.StickerSyncRMRMessage + 98, // 210: WAWebProtobufsE2E.Message.interactiveResponseMessage:type_name -> WAWebProtobufsE2E.InteractiveResponseMessage + 93, // 211: WAWebProtobufsE2E.Message.pollCreationMessage:type_name -> WAWebProtobufsE2E.PollCreationMessage + 153, // 212: WAWebProtobufsE2E.Message.pollUpdateMessage:type_name -> WAWebProtobufsE2E.PollUpdateMessage + 148, // 213: WAWebProtobufsE2E.Message.keepInChatMessage:type_name -> WAWebProtobufsE2E.KeepInChatMessage + 156, // 214: WAWebProtobufsE2E.Message.documentWithCaptionMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage + 158, // 215: WAWebProtobufsE2E.Message.requestPhoneNumberMessage:type_name -> WAWebProtobufsE2E.RequestPhoneNumberMessage + 156, // 216: WAWebProtobufsE2E.Message.viewOnceMessageV2:type_name -> WAWebProtobufsE2E.FutureProofMessage + 147, // 217: WAWebProtobufsE2E.Message.encReactionMessage:type_name -> WAWebProtobufsE2E.EncReactionMessage + 156, // 218: WAWebProtobufsE2E.Message.editedMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage + 156, // 219: WAWebProtobufsE2E.Message.viewOnceMessageV2Extension:type_name -> WAWebProtobufsE2E.FutureProofMessage + 93, // 220: WAWebProtobufsE2E.Message.pollCreationMessageV2:type_name -> WAWebProtobufsE2E.PollCreationMessage + 90, // 221: WAWebProtobufsE2E.Message.scheduledCallCreationMessage:type_name -> WAWebProtobufsE2E.ScheduledCallCreationMessage + 156, // 222: WAWebProtobufsE2E.Message.groupMentionedMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage + 92, // 223: WAWebProtobufsE2E.Message.pinInChatMessage:type_name -> WAWebProtobufsE2E.PinInChatMessage + 93, // 224: WAWebProtobufsE2E.Message.pollCreationMessageV3:type_name -> WAWebProtobufsE2E.PollCreationMessage + 89, // 225: WAWebProtobufsE2E.Message.scheduledCallEditMessage:type_name -> WAWebProtobufsE2E.ScheduledCallEditMessage + 111, // 226: WAWebProtobufsE2E.Message.ptvMessage:type_name -> WAWebProtobufsE2E.VideoMessage + 156, // 227: WAWebProtobufsE2E.Message.botInvokeMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage + 88, // 228: WAWebProtobufsE2E.Message.callLogMesssage:type_name -> WAWebProtobufsE2E.CallLogMessage + 142, // 229: WAWebProtobufsE2E.Message.messageHistoryBundle:type_name -> WAWebProtobufsE2E.MessageHistoryBundle + 146, // 230: WAWebProtobufsE2E.Message.encCommentMessage:type_name -> WAWebProtobufsE2E.EncCommentMessage + 87, // 231: WAWebProtobufsE2E.Message.bcallMessage:type_name -> WAWebProtobufsE2E.BCallMessage + 156, // 232: WAWebProtobufsE2E.Message.lottieStickerMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage + 144, // 233: WAWebProtobufsE2E.Message.eventMessage:type_name -> WAWebProtobufsE2E.EventMessage + 143, // 234: WAWebProtobufsE2E.Message.encEventResponseMessage:type_name -> WAWebProtobufsE2E.EncEventResponseMessage + 145, // 235: WAWebProtobufsE2E.Message.commentMessage:type_name -> WAWebProtobufsE2E.CommentMessage + 159, // 236: WAWebProtobufsE2E.Message.newsletterAdminInviteMessage:type_name -> WAWebProtobufsE2E.NewsletterAdminInviteMessage + 86, // 237: WAWebProtobufsE2E.Message.placeholderMessage:type_name -> WAWebProtobufsE2E.PlaceholderMessage + 96, // 238: WAWebProtobufsE2E.Message.secretEncryptedMessage:type_name -> WAWebProtobufsE2E.SecretEncryptedMessage + 139, // 239: WAWebProtobufsE2E.Message.albumMessage:type_name -> WAWebProtobufsE2E.AlbumMessage + 156, // 240: WAWebProtobufsE2E.Message.eventCoverImage:type_name -> WAWebProtobufsE2E.FutureProofMessage + 85, // 241: WAWebProtobufsE2E.Message.stickerPackMessage:type_name -> WAWebProtobufsE2E.StickerPackMessage + 156, // 242: WAWebProtobufsE2E.Message.statusMentionMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage + 149, // 243: WAWebProtobufsE2E.Message.pollResultSnapshotMessage:type_name -> WAWebProtobufsE2E.PollResultSnapshotMessage + 156, // 244: WAWebProtobufsE2E.Message.pollCreationOptionImageMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage + 156, // 245: WAWebProtobufsE2E.Message.associatedChildMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage + 156, // 246: WAWebProtobufsE2E.Message.groupStatusMentionMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage + 156, // 247: WAWebProtobufsE2E.Message.pollCreationMessageV4:type_name -> WAWebProtobufsE2E.FutureProofMessage + 156, // 248: WAWebProtobufsE2E.Message.pollCreationMessageV5:type_name -> WAWebProtobufsE2E.FutureProofMessage + 156, // 249: WAWebProtobufsE2E.Message.statusAddYours:type_name -> WAWebProtobufsE2E.FutureProofMessage + 156, // 250: WAWebProtobufsE2E.Message.groupStatusMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage + 120, // 251: WAWebProtobufsE2E.Message.richResponseMessage:type_name -> WAWebProtobufsE2E.AIRichResponseMessage + 114, // 252: WAWebProtobufsE2E.Message.statusNotificationMessage:type_name -> WAWebProtobufsE2E.StatusNotificationMessage + 156, // 253: WAWebProtobufsE2E.Message.limitSharingMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage + 156, // 254: WAWebProtobufsE2E.Message.botTaskMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage + 156, // 255: WAWebProtobufsE2E.Message.questionMessage:type_name -> WAWebProtobufsE2E.FutureProofMessage + 141, // 256: WAWebProtobufsE2E.Message.messageHistoryNotice:type_name -> WAWebProtobufsE2E.MessageHistoryNotice + 117, // 257: WAWebProtobufsE2E.AlbumMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 117, // 258: WAWebProtobufsE2E.MessageHistoryNotice.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 140, // 259: WAWebProtobufsE2E.MessageHistoryNotice.messageHistoryMetadata:type_name -> WAWebProtobufsE2E.MessageHistoryMetadata + 117, // 260: WAWebProtobufsE2E.MessageHistoryBundle.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 140, // 261: WAWebProtobufsE2E.MessageHistoryBundle.messageHistoryMetadata:type_name -> WAWebProtobufsE2E.MessageHistoryMetadata + 311, // 262: WAWebProtobufsE2E.EncEventResponseMessage.eventCreationMessageKey:type_name -> WACommon.MessageKey + 117, // 263: WAWebProtobufsE2E.EventMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 187, // 264: WAWebProtobufsE2E.EventMessage.location:type_name -> WAWebProtobufsE2E.LocationMessage + 138, // 265: WAWebProtobufsE2E.CommentMessage.message:type_name -> WAWebProtobufsE2E.Message + 311, // 266: WAWebProtobufsE2E.CommentMessage.targetMessageKey:type_name -> WACommon.MessageKey + 311, // 267: WAWebProtobufsE2E.EncCommentMessage.targetMessageKey:type_name -> WACommon.MessageKey + 311, // 268: WAWebProtobufsE2E.EncReactionMessage.targetMessageKey:type_name -> WACommon.MessageKey + 311, // 269: WAWebProtobufsE2E.KeepInChatMessage.key:type_name -> WACommon.MessageKey + 5, // 270: WAWebProtobufsE2E.KeepInChatMessage.keepType:type_name -> WAWebProtobufsE2E.KeepType + 295, // 271: WAWebProtobufsE2E.PollResultSnapshotMessage.pollVotes:type_name -> WAWebProtobufsE2E.PollResultSnapshotMessage.PollVote + 117, // 272: WAWebProtobufsE2E.PollResultSnapshotMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 311, // 273: WAWebProtobufsE2E.PollUpdateMessage.pollCreationMessageKey:type_name -> WACommon.MessageKey + 151, // 274: WAWebProtobufsE2E.PollUpdateMessage.vote:type_name -> WAWebProtobufsE2E.PollEncValue + 152, // 275: WAWebProtobufsE2E.PollUpdateMessage.metadata:type_name -> WAWebProtobufsE2E.PollUpdateMessageMetadata + 311, // 276: WAWebProtobufsE2E.ReactionMessage.key:type_name -> WACommon.MessageKey + 138, // 277: WAWebProtobufsE2E.FutureProofMessage.message:type_name -> WAWebProtobufsE2E.Message + 138, // 278: WAWebProtobufsE2E.DeviceSentMessage.message:type_name -> WAWebProtobufsE2E.Message + 117, // 279: WAWebProtobufsE2E.RequestPhoneNumberMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 117, // 280: WAWebProtobufsE2E.NewsletterAdminInviteMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 296, // 281: WAWebProtobufsE2E.ProductMessage.product:type_name -> WAWebProtobufsE2E.ProductMessage.ProductSnapshot + 297, // 282: WAWebProtobufsE2E.ProductMessage.catalog:type_name -> WAWebProtobufsE2E.ProductMessage.CatalogSnapshot + 117, // 283: WAWebProtobufsE2E.ProductMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 117, // 284: WAWebProtobufsE2E.TemplateButtonReplyMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 299, // 285: WAWebProtobufsE2E.TemplateMessage.fourRowTemplate:type_name -> WAWebProtobufsE2E.TemplateMessage.FourRowTemplate + 298, // 286: WAWebProtobufsE2E.TemplateMessage.hydratedFourRowTemplate:type_name -> WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplate + 99, // 287: WAWebProtobufsE2E.TemplateMessage.interactiveMessageTemplate:type_name -> WAWebProtobufsE2E.InteractiveMessage + 117, // 288: WAWebProtobufsE2E.TemplateMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 298, // 289: WAWebProtobufsE2E.TemplateMessage.hydratedTemplate:type_name -> WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplate + 117, // 290: WAWebProtobufsE2E.StickerMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 117, // 291: WAWebProtobufsE2E.LiveLocationMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 311, // 292: WAWebProtobufsE2E.CancelPaymentRequestMessage.key:type_name -> WACommon.MessageKey + 311, // 293: WAWebProtobufsE2E.DeclinePaymentRequestMessage.key:type_name -> WACommon.MessageKey + 138, // 294: WAWebProtobufsE2E.RequestPaymentMessage.noteMessage:type_name -> WAWebProtobufsE2E.Message + 211, // 295: WAWebProtobufsE2E.RequestPaymentMessage.amount:type_name -> WAWebProtobufsE2E.Money + 135, // 296: WAWebProtobufsE2E.RequestPaymentMessage.background:type_name -> WAWebProtobufsE2E.PaymentBackground + 138, // 297: WAWebProtobufsE2E.SendPaymentMessage.noteMessage:type_name -> WAWebProtobufsE2E.Message + 311, // 298: WAWebProtobufsE2E.SendPaymentMessage.requestMessageKey:type_name -> WACommon.MessageKey + 135, // 299: WAWebProtobufsE2E.SendPaymentMessage.background:type_name -> WAWebProtobufsE2E.PaymentBackground + 188, // 300: WAWebProtobufsE2E.ContactsArrayMessage.contacts:type_name -> WAWebProtobufsE2E.ContactMessage + 117, // 301: WAWebProtobufsE2E.ContactsArrayMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 1, // 302: WAWebProtobufsE2E.PeerDataOperationRequestMessage.peerDataOperationRequestType:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestType + 305, // 303: WAWebProtobufsE2E.PeerDataOperationRequestMessage.requestStickerReupload:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestMessage.RequestStickerReupload + 304, // 304: WAWebProtobufsE2E.PeerDataOperationRequestMessage.requestURLPreview:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestMessage.RequestUrlPreview + 303, // 305: WAWebProtobufsE2E.PeerDataOperationRequestMessage.historySyncOnDemandRequest:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + 301, // 306: WAWebProtobufsE2E.PeerDataOperationRequestMessage.placeholderMessageResendRequest:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest + 302, // 307: WAWebProtobufsE2E.PeerDataOperationRequestMessage.fullHistorySyncOnDemandRequest:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestMessage.FullHistorySyncOnDemandRequest + 300, // 308: WAWebProtobufsE2E.PeerDataOperationRequestMessage.syncdCollectionFatalRecoveryRequest:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestMessage.SyncDCollectionFatalRecoveryRequest + 178, // 309: WAWebProtobufsE2E.AppStateSyncKeyRequest.keyIDs:type_name -> WAWebProtobufsE2E.AppStateSyncKeyId + 179, // 310: WAWebProtobufsE2E.AppStateSyncKeyShare.keys:type_name -> WAWebProtobufsE2E.AppStateSyncKey + 177, // 311: WAWebProtobufsE2E.AppStateSyncKeyData.fingerprint:type_name -> WAWebProtobufsE2E.AppStateSyncKeyFingerprint + 178, // 312: WAWebProtobufsE2E.AppStateSyncKey.keyID:type_name -> WAWebProtobufsE2E.AppStateSyncKeyId + 176, // 313: WAWebProtobufsE2E.AppStateSyncKey.keyData:type_name -> WAWebProtobufsE2E.AppStateSyncKeyData + 117, // 314: WAWebProtobufsE2E.Call.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 117, // 315: WAWebProtobufsE2E.AudioMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 117, // 316: WAWebProtobufsE2E.DocumentMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 113, // 317: WAWebProtobufsE2E.LinkPreviewMetadata.paymentLinkMetadata:type_name -> WAWebProtobufsE2E.PaymentLinkMetadata + 185, // 318: WAWebProtobufsE2E.LinkPreviewMetadata.urlMetadata:type_name -> WAWebProtobufsE2E.URLMetadata + 117, // 319: WAWebProtobufsE2E.LocationMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 117, // 320: WAWebProtobufsE2E.ContactMessage.contextInfo:type_name -> WAWebProtobufsE2E.ContextInfo + 192, // 321: WAWebProtobufsE2E.BotSuggestedPromptMetadata.promptSuggestions:type_name -> WAWebProtobufsE2E.BotPromptSuggestions + 193, // 322: WAWebProtobufsE2E.BotPromptSuggestions.suggestions:type_name -> WAWebProtobufsE2E.BotPromptSuggestion + 119, // 323: WAWebProtobufsE2E.BotLinkedAccountsMetadata.accounts:type_name -> WAWebProtobufsE2E.BotLinkedAccount + 196, // 324: WAWebProtobufsE2E.BotMemoryMetadata.addedFacts:type_name -> WAWebProtobufsE2E.BotMemoryFact + 196, // 325: WAWebProtobufsE2E.BotMemoryMetadata.removedFacts:type_name -> WAWebProtobufsE2E.BotMemoryFact + 306, // 326: WAWebProtobufsE2E.BotRenderingMetadata.keywords:type_name -> WAWebProtobufsE2E.BotRenderingMetadata.Keyword + 2, // 327: WAWebProtobufsE2E.BotMetricsMetadata.destinationEntryPoint:type_name -> WAWebProtobufsE2E.BotMetricsEntryPoint + 3, // 328: WAWebProtobufsE2E.BotMetricsMetadata.threadOrigin:type_name -> WAWebProtobufsE2E.BotMetricsThreadEntryPoint + 4, // 329: WAWebProtobufsE2E.BotSessionMetadata.sessionSource:type_name -> WAWebProtobufsE2E.BotSessionSource + 122, // 330: WAWebProtobufsE2E.BotMemuMetadata.faceImages:type_name -> WAWebProtobufsE2E.BotMediaMetadata + 190, // 331: WAWebProtobufsE2E.BotMetadata.avatarMetadata:type_name -> WAWebProtobufsE2E.BotAvatarMetadata + 118, // 332: WAWebProtobufsE2E.BotMetadata.pluginMetadata:type_name -> WAWebProtobufsE2E.BotPluginMetadata + 191, // 333: WAWebProtobufsE2E.BotMetadata.suggestedPromptMetadata:type_name -> WAWebProtobufsE2E.BotSuggestedPromptMetadata + 199, // 334: WAWebProtobufsE2E.BotMetadata.sessionMetadata:type_name -> WAWebProtobufsE2E.BotSessionMetadata + 200, // 335: WAWebProtobufsE2E.BotMetadata.memuMetadata:type_name -> WAWebProtobufsE2E.BotMemuMetadata + 123, // 336: WAWebProtobufsE2E.BotMetadata.reminderMetadata:type_name -> WAWebProtobufsE2E.BotReminderMetadata + 124, // 337: WAWebProtobufsE2E.BotMetadata.modelMetadata:type_name -> WAWebProtobufsE2E.BotModelMetadata + 125, // 338: WAWebProtobufsE2E.BotMetadata.progressIndicatorMetadata:type_name -> WAWebProtobufsE2E.BotProgressIndicatorMetadata + 126, // 339: WAWebProtobufsE2E.BotMetadata.capabilityMetadata:type_name -> WAWebProtobufsE2E.BotCapabilityMetadata + 129, // 340: WAWebProtobufsE2E.BotMetadata.imagineMetadata:type_name -> WAWebProtobufsE2E.BotImagineMetadata + 195, // 341: WAWebProtobufsE2E.BotMetadata.memoryMetadata:type_name -> WAWebProtobufsE2E.BotMemoryMetadata + 197, // 342: WAWebProtobufsE2E.BotMetadata.renderingMetadata:type_name -> WAWebProtobufsE2E.BotRenderingMetadata + 198, // 343: WAWebProtobufsE2E.BotMetadata.botMetricsMetadata:type_name -> WAWebProtobufsE2E.BotMetricsMetadata + 194, // 344: WAWebProtobufsE2E.BotMetadata.botLinkedAccountsMetadata:type_name -> WAWebProtobufsE2E.BotLinkedAccountsMetadata + 130, // 345: WAWebProtobufsE2E.BotMetadata.richResponseSourcesMetadata:type_name -> WAWebProtobufsE2E.BotSourcesMetadata + 121, // 346: WAWebProtobufsE2E.BotMetadata.botPromotionMessageMetadata:type_name -> WAWebProtobufsE2E.BotPromotionMessageMetadata + 127, // 347: WAWebProtobufsE2E.BotMetadata.botModeSelectionMetadata:type_name -> WAWebProtobufsE2E.BotModeSelectionMetadata + 128, // 348: WAWebProtobufsE2E.BotMetadata.botQuotaMetadata:type_name -> WAWebProtobufsE2E.BotQuotaMetadata + 201, // 349: WAWebProtobufsE2E.BotMetadata.botAgeCollectionMetadata:type_name -> WAWebProtobufsE2E.BotAgeCollectionMetadata + 313, // 350: WAWebProtobufsE2E.DeviceListMetadata.senderAccountType:type_name -> WAAdv.ADVEncryptionType + 313, // 351: WAWebProtobufsE2E.DeviceListMetadata.receiverAccountType:type_name -> WAAdv.ADVEncryptionType + 138, // 352: WAWebProtobufsE2E.EmbeddedMessage.message:type_name -> WAWebProtobufsE2E.Message + 204, // 353: WAWebProtobufsE2E.EmbeddedContent.embeddedMessage:type_name -> WAWebProtobufsE2E.EmbeddedMessage + 205, // 354: WAWebProtobufsE2E.EmbeddedContent.embeddedMusic:type_name -> WAWebProtobufsE2E.EmbeddedMusic + 309, // 355: WAWebProtobufsE2E.TemplateButton.quickReplyButton:type_name -> WAWebProtobufsE2E.TemplateButton.QuickReplyButton + 308, // 356: WAWebProtobufsE2E.TemplateButton.urlButton:type_name -> WAWebProtobufsE2E.TemplateButton.URLButton + 307, // 357: WAWebProtobufsE2E.TemplateButton.callButton:type_name -> WAWebProtobufsE2E.TemplateButton.CallButton + 310, // 358: WAWebProtobufsE2E.UrlTrackingMap.urlTrackingMapElements:type_name -> WAWebProtobufsE2E.UrlTrackingMap.UrlTrackingMapElement + 311, // 359: WAWebProtobufsE2E.AIQueryFanout.messageKey:type_name -> WACommon.MessageKey + 138, // 360: WAWebProtobufsE2E.AIQueryFanout.message:type_name -> WAWebProtobufsE2E.Message + 9, // 361: WAWebProtobufsE2E.CallLogMessage.CallParticipant.callOutcome:type_name -> WAWebProtobufsE2E.CallLogMessage.CallOutcome + 225, // 362: WAWebProtobufsE2E.ButtonsMessage.Button.buttonText:type_name -> WAWebProtobufsE2E.ButtonsMessage.Button.ButtonText + 18, // 363: WAWebProtobufsE2E.ButtonsMessage.Button.type:type_name -> WAWebProtobufsE2E.ButtonsMessage.Button.Type + 224, // 364: WAWebProtobufsE2E.ButtonsMessage.Button.nativeFlowInfo:type_name -> WAWebProtobufsE2E.ButtonsMessage.Button.NativeFlowInfo + 21, // 365: WAWebProtobufsE2E.InteractiveResponseMessage.Body.format:type_name -> WAWebProtobufsE2E.InteractiveResponseMessage.Body.Format + 22, // 366: WAWebProtobufsE2E.InteractiveMessage.ShopMessage.surface:type_name -> WAWebProtobufsE2E.InteractiveMessage.ShopMessage.Surface + 99, // 367: WAWebProtobufsE2E.InteractiveMessage.CarouselMessage.cards:type_name -> WAWebProtobufsE2E.InteractiveMessage + 235, // 368: WAWebProtobufsE2E.InteractiveMessage.NativeFlowMessage.buttons:type_name -> WAWebProtobufsE2E.InteractiveMessage.NativeFlowMessage.NativeFlowButton + 183, // 369: WAWebProtobufsE2E.InteractiveMessage.Header.documentMessage:type_name -> WAWebProtobufsE2E.DocumentMessage + 116, // 370: WAWebProtobufsE2E.InteractiveMessage.Header.imageMessage:type_name -> WAWebProtobufsE2E.ImageMessage + 111, // 371: WAWebProtobufsE2E.InteractiveMessage.Header.videoMessage:type_name -> WAWebProtobufsE2E.VideoMessage + 187, // 372: WAWebProtobufsE2E.InteractiveMessage.Header.locationMessage:type_name -> WAWebProtobufsE2E.LocationMessage + 160, // 373: WAWebProtobufsE2E.InteractiveMessage.Header.productMessage:type_name -> WAWebProtobufsE2E.ProductMessage + 239, // 374: WAWebProtobufsE2E.ListMessage.ProductListInfo.productSections:type_name -> WAWebProtobufsE2E.ListMessage.ProductSection + 238, // 375: WAWebProtobufsE2E.ListMessage.ProductListInfo.headerImage:type_name -> WAWebProtobufsE2E.ListMessage.ProductListHeaderImage + 240, // 376: WAWebProtobufsE2E.ListMessage.ProductSection.products:type_name -> WAWebProtobufsE2E.ListMessage.Product + 242, // 377: WAWebProtobufsE2E.ListMessage.Section.rows:type_name -> WAWebProtobufsE2E.ListMessage.Row + 245, // 378: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.currency:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMCurrency + 244, // 379: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.dateTime:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime + 246, // 380: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.component:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent + 247, // 381: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.unixEpoch:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeUnixEpoch + 29, // 382: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.dayOfWeek:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.DayOfWeekType + 28, // 383: WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.calendar:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.CalendarType + 314, // 384: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.mediaUploadResult:type_name -> WAMmsRetry.MediaRetryNotification.ResultType + 163, // 385: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.stickerMessage:type_name -> WAWebProtobufsE2E.StickerMessage + 254, // 386: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.linkPreviewResponse:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse + 253, // 387: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.placeholderMessageResendResponse:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse + 251, // 388: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.waffleNonceFetchRequestResponse:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.WaffleNonceFetchResponse + 252, // 389: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.fullHistorySyncOnDemandRequestResponse:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.FullHistorySyncOnDemandRequestResponse + 250, // 390: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.companionMetaNonceFetchRequestResponse:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.CompanionMetaNonceFetchResponse + 249, // 391: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.syncdSnapshotFatalRecoveryResponse:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.SyncDSnapshotFatalRecoveryResponse + 172, // 392: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.FullHistorySyncOnDemandRequestResponse.requestMetadata:type_name -> WAWebProtobufsE2E.FullHistorySyncOnDemandRequestMetadata + 30, // 393: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.FullHistorySyncOnDemandRequestResponse.responseCode:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.FullHistorySyncOnDemandResponseCode + 255, // 394: WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.hqThumbnail:type_name -> WAWebProtobufsE2E.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + 43, // 395: WAWebProtobufsE2E.PaymentLinkMetadata.PaymentLinkHeader.headerType:type_name -> WAWebProtobufsE2E.PaymentLinkMetadata.PaymentLinkHeader.PaymentLinkHeaderType + 50, // 396: WAWebProtobufsE2E.ContextInfo.ForwardedNewsletterMessageInfo.contentType:type_name -> WAWebProtobufsE2E.ContextInfo.ForwardedNewsletterMessageInfo.ContentType + 52, // 397: WAWebProtobufsE2E.ContextInfo.ExternalAdReplyInfo.mediaType:type_name -> WAWebProtobufsE2E.ContextInfo.ExternalAdReplyInfo.MediaType + 51, // 398: WAWebProtobufsE2E.ContextInfo.ExternalAdReplyInfo.adType:type_name -> WAWebProtobufsE2E.ContextInfo.ExternalAdReplyInfo.AdType + 53, // 399: WAWebProtobufsE2E.ContextInfo.AdReplyInfo.mediaType:type_name -> WAWebProtobufsE2E.ContextInfo.AdReplyInfo.MediaType + 267, // 400: WAWebProtobufsE2E.ContextInfo.DataSharingContext.parameters:type_name -> WAWebProtobufsE2E.ContextInfo.DataSharingContext.Parameters + 267, // 401: WAWebProtobufsE2E.ContextInfo.DataSharingContext.Parameters.contents:type_name -> WAWebProtobufsE2E.ContextInfo.DataSharingContext.Parameters + 279, // 402: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.itemsMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.AIRichResponseContentItemMetadata + 59, // 403: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.contentType:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.ContentType + 60, // 404: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseDynamicMetadata.type:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseDynamicMetadata.AIRichResponseDynamicMetadataType + 281, // 405: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata.codeBlocks:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata.AIRichResponseCodeBlock + 278, // 406: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseInlineImageMetadata.imageURL:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseImageURL + 62, // 407: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseInlineImageMetadata.alignment:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseInlineImageMetadata.AIRichResponseImageAlignment + 57, // 408: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.messageType:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessageType + 277, // 409: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.gridImageMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseGridImageMetadata + 271, // 410: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.imageMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseInlineImageMetadata + 270, // 411: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.codeMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata + 276, // 412: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.tableMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseTableMetadata + 269, // 413: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.dynamicMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseDynamicMetadata + 274, // 414: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.latexMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseLatexMetadata + 273, // 415: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.mapMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMapMetadata + 268, // 416: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseSubMessage.contentItemsMetadata:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata + 282, // 417: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMapMetadata.annotations:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseMapMetadata.AIRichResponseMapAnnotation + 283, // 418: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseLatexMetadata.expressions:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseLatexMetadata.AIRichResponseLatexExpression + 284, // 419: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseTableMetadata.rows:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseTableMetadata.AIRichResponseTableRow + 278, // 420: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseGridImageMetadata.gridImageURL:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseImageURL + 278, // 421: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseGridImageMetadata.imageURLs:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseImageURL + 280, // 422: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.AIRichResponseContentItemMetadata.reelItem:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseContentItemsMetadata.AIRichResponseReelItem + 61, // 423: WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata.AIRichResponseCodeBlock.highlightType:type_name -> WAWebProtobufsE2E.AIRichResponseMessage.AIRichResponseCodeMetadata.AIRichResponseCodeHighlightType + 286, // 424: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.sourcesMetadata:type_name -> WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourcesMetadata + 70, // 425: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.status:type_name -> WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.PlanningStepStatus + 287, // 426: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.sections:type_name -> WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningStepSectionMetadata + 71, // 427: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourcesMetadata.provider:type_name -> WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourcesMetadata.BotPlanningSearchSourceProvider + 288, // 428: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningStepSectionMetadata.sourcesMetadata:type_name -> WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourceMetadata + 69, // 429: WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotPlanningSearchSourceMetadata.provider:type_name -> WAWebProtobufsE2E.BotProgressIndicatorMetadata.BotPlanningStepMetadata.BotSearchSourceProvider + 74, // 430: WAWebProtobufsE2E.BotQuotaMetadata.BotFeatureQuotaMetadata.featureType:type_name -> WAWebProtobufsE2E.BotQuotaMetadata.BotFeatureQuotaMetadata.BotFeatureType + 76, // 431: WAWebProtobufsE2E.BotSourcesMetadata.BotSourceItem.provider:type_name -> WAWebProtobufsE2E.BotSourcesMetadata.BotSourceItem.SourceProvider + 80, // 432: WAWebProtobufsE2E.HydratedTemplateButton.HydratedURLButton.webviewPresentation:type_name -> WAWebProtobufsE2E.HydratedTemplateButton.HydratedURLButton.WebviewPresentationType + 116, // 433: WAWebProtobufsE2E.ProductMessage.ProductSnapshot.productImage:type_name -> WAWebProtobufsE2E.ImageMessage + 116, // 434: WAWebProtobufsE2E.ProductMessage.CatalogSnapshot.catalogImage:type_name -> WAWebProtobufsE2E.ImageMessage + 183, // 435: WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplate.documentMessage:type_name -> WAWebProtobufsE2E.DocumentMessage + 116, // 436: WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplate.imageMessage:type_name -> WAWebProtobufsE2E.ImageMessage + 111, // 437: WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplate.videoMessage:type_name -> WAWebProtobufsE2E.VideoMessage + 187, // 438: WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplate.locationMessage:type_name -> WAWebProtobufsE2E.LocationMessage + 134, // 439: WAWebProtobufsE2E.TemplateMessage.HydratedFourRowTemplate.hydratedButtons:type_name -> WAWebProtobufsE2E.HydratedTemplateButton + 183, // 440: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate.documentMessage:type_name -> WAWebProtobufsE2E.DocumentMessage + 104, // 441: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate.highlyStructuredMessage:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage + 116, // 442: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate.imageMessage:type_name -> WAWebProtobufsE2E.ImageMessage + 111, // 443: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate.videoMessage:type_name -> WAWebProtobufsE2E.VideoMessage + 187, // 444: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate.locationMessage:type_name -> WAWebProtobufsE2E.LocationMessage + 104, // 445: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate.content:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage + 104, // 446: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate.footer:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage + 210, // 447: WAWebProtobufsE2E.TemplateMessage.FourRowTemplate.buttons:type_name -> WAWebProtobufsE2E.TemplateButton + 311, // 448: WAWebProtobufsE2E.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest.messageKey:type_name -> WACommon.MessageKey + 172, // 449: WAWebProtobufsE2E.PeerDataOperationRequestMessage.FullHistorySyncOnDemandRequest.requestMetadata:type_name -> WAWebProtobufsE2E.FullHistorySyncOnDemandRequestMetadata + 315, // 450: WAWebProtobufsE2E.PeerDataOperationRequestMessage.FullHistorySyncOnDemandRequest.historySyncConfig:type_name -> WACompanionReg.DeviceProps.HistorySyncConfig + 104, // 451: WAWebProtobufsE2E.TemplateButton.CallButton.displayText:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage + 104, // 452: WAWebProtobufsE2E.TemplateButton.CallButton.phoneNumber:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage + 104, // 453: WAWebProtobufsE2E.TemplateButton.URLButton.displayText:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage + 104, // 454: WAWebProtobufsE2E.TemplateButton.URLButton.URL:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage + 104, // 455: WAWebProtobufsE2E.TemplateButton.QuickReplyButton.displayText:type_name -> WAWebProtobufsE2E.HighlyStructuredMessage + 456, // [456:456] is the sub-list for method output_type + 456, // [456:456] is the sub-list for method input_type + 456, // [456:456] is the sub-list for extension type_name + 456, // [456:456] is the sub-list for extension extendee + 0, // [0:456] is the sub-list for field type_name } func init() { file_waE2E_WAWebProtobufsE2E_proto_init() } @@ -23285,32 +26518,32 @@ func file_waE2E_WAWebProtobufsE2E_proto_init() { (*InteractiveMessage_NativeFlowMessage_)(nil), (*InteractiveMessage_CarouselMessage_)(nil), } - file_waE2E_WAWebProtobufsE2E_proto_msgTypes[45].OneofWrappers = []any{ + file_waE2E_WAWebProtobufsE2E_proto_msgTypes[48].OneofWrappers = []any{ (*InteractiveAnnotation_Location)(nil), (*InteractiveAnnotation_Newsletter)(nil), (*InteractiveAnnotation_EmbeddedAction)(nil), (*InteractiveAnnotation_TapAction)(nil), } - file_waE2E_WAWebProtobufsE2E_proto_msgTypes[46].OneofWrappers = []any{ + file_waE2E_WAWebProtobufsE2E_proto_msgTypes[49].OneofWrappers = []any{ (*HydratedTemplateButton_QuickReplyButton)(nil), (*HydratedTemplateButton_UrlButton)(nil), (*HydratedTemplateButton_CallButton)(nil), } - file_waE2E_WAWebProtobufsE2E_proto_msgTypes[72].OneofWrappers = []any{ + file_waE2E_WAWebProtobufsE2E_proto_msgTypes[77].OneofWrappers = []any{ (*TemplateMessage_FourRowTemplate_)(nil), (*TemplateMessage_HydratedFourRowTemplate_)(nil), (*TemplateMessage_InteractiveMessageTemplate)(nil), } - file_waE2E_WAWebProtobufsE2E_proto_msgTypes[115].OneofWrappers = []any{ + file_waE2E_WAWebProtobufsE2E_proto_msgTypes[121].OneofWrappers = []any{ (*EmbeddedContent_EmbeddedMessage)(nil), (*EmbeddedContent_EmbeddedMusic)(nil), } - file_waE2E_WAWebProtobufsE2E_proto_msgTypes[119].OneofWrappers = []any{ + file_waE2E_WAWebProtobufsE2E_proto_msgTypes[125].OneofWrappers = []any{ (*TemplateButton_QuickReplyButton_)(nil), (*TemplateButton_UrlButton)(nil), (*TemplateButton_CallButton_)(nil), } - file_waE2E_WAWebProtobufsE2E_proto_msgTypes[142].OneofWrappers = []any{ + file_waE2E_WAWebProtobufsE2E_proto_msgTypes[149].OneofWrappers = []any{ (*InteractiveMessage_Header_DocumentMessage)(nil), (*InteractiveMessage_Header_ImageMessage)(nil), (*InteractiveMessage_Header_JPEGThumbnail)(nil), @@ -23318,25 +26551,25 @@ func file_waE2E_WAWebProtobufsE2E_proto_init() { (*InteractiveMessage_Header_LocationMessage)(nil), (*InteractiveMessage_Header_ProductMessage)(nil), } - file_waE2E_WAWebProtobufsE2E_proto_msgTypes[151].OneofWrappers = []any{ + file_waE2E_WAWebProtobufsE2E_proto_msgTypes[158].OneofWrappers = []any{ (*HighlyStructuredMessage_HSMLocalizableParameter_Currency)(nil), (*HighlyStructuredMessage_HSMLocalizableParameter_DateTime)(nil), } - file_waE2E_WAWebProtobufsE2E_proto_msgTypes[152].OneofWrappers = []any{ + file_waE2E_WAWebProtobufsE2E_proto_msgTypes[159].OneofWrappers = []any{ (*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_Component)(nil), (*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_UnixEpoch)(nil), } - file_waE2E_WAWebProtobufsE2E_proto_msgTypes[185].OneofWrappers = []any{ + file_waE2E_WAWebProtobufsE2E_proto_msgTypes[194].OneofWrappers = []any{ (*AIRichResponseMessage_AIRichResponseContentItemsMetadata_AIRichResponseContentItemMetadata_ReelItem)(nil), } - file_waE2E_WAWebProtobufsE2E_proto_msgTypes[203].OneofWrappers = []any{ + file_waE2E_WAWebProtobufsE2E_proto_msgTypes[213].OneofWrappers = []any{ (*TemplateMessage_HydratedFourRowTemplate_DocumentMessage)(nil), (*TemplateMessage_HydratedFourRowTemplate_HydratedTitleText)(nil), (*TemplateMessage_HydratedFourRowTemplate_ImageMessage)(nil), (*TemplateMessage_HydratedFourRowTemplate_VideoMessage)(nil), (*TemplateMessage_HydratedFourRowTemplate_LocationMessage)(nil), } - file_waE2E_WAWebProtobufsE2E_proto_msgTypes[204].OneofWrappers = []any{ + file_waE2E_WAWebProtobufsE2E_proto_msgTypes[214].OneofWrappers = []any{ (*TemplateMessage_FourRowTemplate_DocumentMessage)(nil), (*TemplateMessage_FourRowTemplate_HighlyStructuredMessage)(nil), (*TemplateMessage_FourRowTemplate_ImageMessage)(nil), @@ -23347,9 +26580,9 @@ func file_waE2E_WAWebProtobufsE2E_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waE2E_WAWebProtobufsE2E_proto_rawDesc, - NumEnums: 80, - NumMessages: 215, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waE2E_WAWebProtobufsE2E_proto_rawDesc), len(file_waE2E_WAWebProtobufsE2E_proto_rawDesc)), + NumEnums: 85, + NumMessages: 226, NumExtensions: 0, NumServices: 0, }, @@ -23359,7 +26592,6 @@ func file_waE2E_WAWebProtobufsE2E_proto_init() { MessageInfos: file_waE2E_WAWebProtobufsE2E_proto_msgTypes, }.Build() File_waE2E_WAWebProtobufsE2E_proto = out.File - file_waE2E_WAWebProtobufsE2E_proto_rawDesc = nil file_waE2E_WAWebProtobufsE2E_proto_goTypes = nil file_waE2E_WAWebProtobufsE2E_proto_depIdxs = nil } diff --git a/proto/waE2E/WAWebProtobufsE2E.pb.raw b/proto/waE2E/WAWebProtobufsE2E.pb.raw deleted file mode 100644 index 8d7bebf3b58db2bd70b83bf80247947d54bf0ece..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78263 zcmdtLdu(LcnI9%Tx|_UwboHHnaBAK)(u{T_Q6oyD$4cu}kt~umO|oiE6}#2iUDXy@ z#b&9CRa8~6dnntmvd-F0?Db>USjP)Hv6GEqXT3liB)f48IDvz}!DbQ1Ya~G6#7>MP zaFE1#7)X#9iSzq?=bU@bz4sI!JtO_$KW3VB9^X0lJihb2zu=W;&C*Kg^AC#;+xyi) zf7IVUJshHB`Gh~hTbYXdt!K?*>nVER|GHKF&1cQE{_#n(*Xj3E`!VX=pQh1E&zd{O zL)9J)&d|XAX)5mtgyVis_r)K&qVV@;gRnO096V_cs?CEZJMH1H`M4c^GFTYKrRDXd ziPtASJ*$$1VHiyJn#b*>NvV{-!Y2}pI`r1};<-IR2T}S=AuGb~}MD{QB z4os69(j-|J=7X8zcB|98-#%NKkp|Ikj?n51+6SX*6Em1a?W}T2!lmHGLGxsUO0Qf`;<)4|OX?ALmGcrfVbG3I5AbaD9E z;FkS@dgr)395s(mmKM-I)qG=HcxOi#>eJsNIqq zJfobF@NRIuecbRsB)!6D+82mDRc_ zmq%T7@p zlU4$v@J?_uRT16`Uf3zt?l-o}yZ1}$jrG!l@>;2u`$XZto(Sew*P7j~od@vckgM76 zMOZd22seXSxx5@rHfeF?$2?PYAujI_U&-|1zC_E%&Ecp$AR;4Lo>y^!i>dTZT1-_~ z4rU{G;aqTIZ}4-tem1yP+*>bKaufXXL3zDY!D|1)wP2B-x7~kizYu7!Gknl# zwfpjl%qaUatN;z7ZRK=y&^OP>qW3{aLR{ug(+OBH{t*^}`PS*6Nt9b_AMofB%_Yjh zjbMgdWJUS0i!1MVR@5`1ENRp?+zaMUngcwN9X!mVAr3d6voBl@RyFRa5@7P9;3mg* z8sJP%y&oM8{`s*lT;Weo1alnLtZKLr%&t{-cS~!$L!StP;QCIvR>R*D{ClHV-sas3 z=YttldSADi0?G)BYip${`ZP-0wbH|_k}BnceB96y6MGY-#dVVRhGvSe)(LMB#s#2wqMA zT^qFJY}@&-1hzBF=w}We=&Zyfq6rcW4 z_*`=561YQlDTzCNFd5t~J#F_!sy#gE_l9lzoqNH|z!b^1Ev|gcGiP7dW``={Ule*yN!*CYTyQAhi?T7d%JGYWZ~~k2QO6n-EQh+ z3DMCz;1k6=IS-;ket8*<&EQ5~2wzR1_&EvBAj=i$rEKr;%fa1Yy9+YDx!-N;%AwwC zJ`W3OOl_KoCkJvxB7Pf0JXe84eovzp@+pfe1>fE!TdH)|@P05uXxx@1@-mAnpC1P% ziAR>XO8RbC0AVdyIOq?^+!TAmXJF;X{9JjBlQ8mI!F9d9q(1fLIkc%$64wjm%>xbA zO7~z%;niTqPCA?krmGd4v`_G_5BAF62I~APlfm89)6oc6B#lf~f*165w_EF-;Yqi7 zR>vLJJnYsdl&_Lpk?o_QM$d7kJbf&9gRXciR?R)u)XB1E6aAm&+~&fk%>7J|Y#@%; z%eCru@lm5*`c^$Ru^PmfweaU=gGB?_BHr7W2^WXAaTbdszrx+%W~+a2dWUhH-FC7izb@68uZ-~exZqq$UhrAN%j+T@_QQT3w7E3k)x}|tOVTGw-^43P z3s!?0`}#IOOhGc$_c$c?ep&xiwqv**1V`;A-v=TX3N#j1KI_?|6qv23k8=9w|K?P1 zUAH6`xG$57E>-j!XeiKi(H)&z`QpWcYRKjj*i|`T!lJofJZFA>L-!w=BVyn<*DGuU zi#;5Xr|pey|Cz{e^l9^P@_t~uiS8-|F25cuCR;>rpxi~Jg>5)F;6a+l!}n{IU5&z& zQ<7f}0zEp{fG4r#U_1@TEh?<|u!a!%wQ6OzR>Erzj(fLQFFzN^NzGAzwhG8nZx$CPl!F7G| z3V#-89gN+eJ%UVVaCQRGh1nxqlH8~{c-*!q$r2Ic2>VQHUPF)@)#h2Z-_#Nj2n^$r z5Hv1+l^+=PS^o%s29i=cBe@wGYx@p@f9A_ku{^;^Xob%P3yJ#V0)yKrJ-|XXO6z5y z^TMB)3c}4n|MaBXd)gUUOvxMen58in8U5y0cck%Jzhx!4P6?krU0?d}q@!7D!&Ya? zDP)jw7v zF)B&bns;^6gYm|LT#gY(3LKuN@nbma;g0R`8s~A>8E+0iX<^!rKsONJ(-RK`wzxD(%*QhH8y3 z0;}Z^hhFME?CM}qP7p~ivOepF(Fa6|! ztlw8F+S<^ z9`7_ymZ%JxTY1BSdiD|xRjOnDcObuXjxEH1lMywEzd%Rc7@iIep#``c)-VUay$Z`U z4M15))Fd5ied&Y59Zr=Nz6_0w?n~*Xm2cMe)JAcQ5|it}Y?6gj5y(J}l;@ z@=qxWP8`Va>%ldgsn!tZhh+SxJS&ymd!_q$=F1awO{M0W|MQcBjU^_q|Nt->X^`uo8mEI3-H2hkHt{l6b~ z!S2Iph)+y)C1;_f=b9zcKS;F?Pxp0&K0DEGYGIF>;7_6HD~?9ZgCh!KjDFQqvw9=A zcFe}Bw}Y?~lNIJh7Jh9icwxIU%n0876N8`;_8qP|#3yL9@DO5WVE=Br zCNfynKIv)&<=l!-G2w$+OZSIfJYAH2uJozBk`RULvtw>SS_gt0rzrn5=&UmX)09R& zt=&?P6~v}AZXtBYGj?&3EFPriHE7PZOO0A-8=5w76#rxE+k3;_D^xC@CH|&_1Xizar(ey%JV-R+;u+K0V%d& zdMTo7Fl%-MuVO|%z$2TM59GfaEE?$MtH&IFoI3-0h;<;bbkVspU{%yF|8{W06rMlz z{6kQ9`mm0f&6k7eLI0VZiTBNkFZ43-gp&68S}=tlV}M?K!-2msY_wPU2XuFr#x>OM zRaIquZ>x6v=K_CQHf`uIdcej53`{YeBOA72;k zH;EG}s<<3d!jA;@@9G;viUT6Cs6h6$|D@eB#)H>J{2{h%{ZX@9Jf_C^3-7-Bu87;G zV9S;)rp{K1)=r_S>m8hl43E}?vnpGWegbJscQwI`hj69QVTR%k-w*D{8mRX7s5v(e z6%NRPjOjPE@OLS^WR9CPwzWl&hjo)fQlk#2$8KhiZ)eQ zFRj5I3x+FGg}*%!+=ir=R8vw^x);n1+k>Z_gSH3>NsujiH4eVs5amW)l?z835 z7Ae=|K444R6syL?g|C8DjzZFwL{@L4D@695h%)|opxYe6{PZfy;ZiE&t~N?4SQb!Y-_K%pEtc`tCqi3rhHQf|NV*Jb-eW{w*$-&=pdS>mO>4G z2=jCt63i+mhgKI(F8p^Ug4dok4-er$((fI#H`=3vBSX+fAD|U}Pksm=@Gvv7wh2}j z%_#(J|JLDYx4Q-Uu0J@do%IeXz4i8SlM65WNHl#dMLPQ-On>826Hu3&X!u+BCQ?4) z0=Uy2HOFs>7LX5q2;W3{$U6bEGnbrU{wu+27l0yp(Bq*qyo&yj-wl?=9SeUCK45Ub z?2R_|JKCfN>~~a<|2HOsw=TC);X!b7V42xb6VG1L(4Rg_^z&hI`v^d#A%?#K=b(Wx zbdSt&7FVAB5cYEH6!l(mbd{J(z8<`O5mKQ?;IsC=W%uFQxOz5fQ@BY%p06tZPhkn} z!Kw6l*;CtQ`}wEHN<_$_-&La|Ny)&pOfn(m#t{&i6KMwFP^}P(1w0@yB{?_}5jfES z4oFl$#`r`(EkZJAM$s(_{}L3>N8gKWnzT~s4@~?Jw#>6k?sG)m_=8jMz@xKhI$$v4 zx#fRpGI-4a;_Dz3cf!>Zp8A&8jMbSWy@83L} z{-~P5Z=N6fcO)o*X9i!HDdnr;d}VjFCnq=XnsQ3GgHmsNLb-$2;Nw9XG+k8q|0aSr zFL4{Fx>uzSKy}v}wLQ2w)!@zt-u1REte1C6jncQOWhHJ>F9%Cj-qe7rtAY*(w0*5! zfoy7$J`tOx-I6M=HA+fV6f7Y>8N4okHY~u(Zeth!)pk}JRRtqSbes-96}+KaZB=UY zv(lc0XjpH=4qMkCuYb$e3_>%wX2?w0qgJZtt`~mg2IWT4Tj^4AT;4-?kQ!fIeUF_I zTfeQHuz53+PT1~d^DwxZ4S7Fdmm&vjeHxO5sROB%Ztj760R0kPc)6e4{>7Ca_uRcP z-?!|P3%MG>;tE#S>o@X$jW@fgT`DB__7 z(K5*Ia5Z?Do~aO%4jJZscx3e~d;qk$pZmS6_jh0eyB zv{EoUuP$yF{&=ut85Kh@)i81BN6xZrtrE84`U)09U8+-6T znIu!KN^9D*8GLzlueR0LE$+~~8GU)3S7F$EpU7YxLToVQXob@C(oRu4Az{(GTZs_G zjl#b@5xipd;9o*EG}O%1?T(!MTu@MT8oGQ7N!cQ7WBF!kgz-j-iC=J~`Xiz_~rGn8^JWY;hs zFG&032(s)!v+GzaYf+M~D*Q(9V$`G7hM#)xadiF6%QL<~*b43)`EjRciu~qz&S`V8 ztr`ak{P^wW3CudNyJTnZRMw7~1MTKD=Ut+rr@8V1f!*WX6mWA)jL(LNMOk zO5Ov_iUyJ$glMu-K9FCu;7&Ql{+{49`$DAUa0aHa<@A}6d!$aTnowN?I{cFp!Q118 zx4gZbhSqZWXo7LmNI_7S9SRWv!u|eequp*%A7&@OFeH9U&DBg}N?oG67$>hwbwEIUUsnfI)oCcRRU5* zQ8xZx*Fe546|2<-DK1#SvBCY)BVnpa&||zBwn3t>OVUXo>)~k6|z1CX(m~9}R@W zAoEvhRJSU-rN-{w&MIPB%+ai72OK0E-?Z!2V)%COX0?RCH6#lgl`57`;8|wSw9e(g zBY*b1hIUySw#O~5y#@2Iw7pgVpK2>Zaf|TL`s-_#2hox~gm^7vK(e2lt_|Q{FTmw1c%H`OAIG-Gx*qr%F5J z-F1Arozy+<87H+<+SzMVc2_G!waz}a!4mkXyM_R#A0Zds*1agfMCz4lLl|tmincOO z#(TTGQwHy=dGg##WbBLOMzvN3jCxVX@|R5^*nRcL9G%=Ng?}^|ym29VfuX#$Tq3`` zxbnW|UR?-f+1nyAY+4Uq(ZL#Aq!^K{Q80`18}XfoYx3|E)bcjuqegh<6j2~!e^!s6 z3*Uv@1ne-$=~?BgD%=n5c&DDUWI^Z_dtjg`h_XpZte9`-MJ2NwH67+8DBlC1%6kZI1 zxQ6>+L{A7uwG+JNz+ulFsQNl5u*ETRB)Ur?2)HF_hb+ZVKl_1GS;Rtawe zu=53tYsHNcu=A&bPhQZlQb$;%-0PS4HdWd{EVK38H$fA;cL7w2^B$CIdkDGm2xz%l zD#FxlGxvju@TW12RBovBYZKqlYnLq0bc$$f>#n% z(YnX`Ikri>jSz79p}4y@g`4!Mzge_t(|mjUZDg;m*;gid`l1QzExJDbi|o$a;A`w3 zW6XvKxiP*+W*cT9HYxbqgGPYYKlb_CI3vOM$*#ey1T+n(j`xBu_(82#N;T~LcBR6Q zb@xkn)N#KBer~?-k7t8G}IdiG-Hjg19hgnv%Z-OWcnN?#SE=80+$CH zuE#ZmZ-INGMDCndnR0k>E@J24@HFVaO$Cc5p*#Jy;qHN5cDkq(2p%HZj#Q{^W{6J& zsIF>q-WPWk#sqD*WZ8#HFUj~miyp{sotEN}_aW>;jKRLu#{braaJ%+QX44PM5K7Sv^%BO2YDa}F4h1oC*YtPo>wmaAJdtHz&j z_=i4jvhdrB!3!nK1R>E{)D9aWE290hZdB8LKq;a$)-4SNbc={|98WPpWJ%|-Sih~c z(6JLBDb3>G@xCabZm1dio7VWmU<|p@Ye@_0pKhpBDO@S04l616{qhV8F!{pLEX$%h+d$ip>R+_4)ZBVHsL|_rWU>>uaT$Aek8kqe>KyyYgD> zcG)XWJaXwPPi*49@~-w&W06=@F0RsAZ65J`OT->tZ0@2ZqY5Vqxm0*$%8(XRIy`bW zctOX7p+!Ly21P_keif|mTxj2m1O(*+3z5~U@n~=pfc>|OSv%eTE*!5OtN`N>JzdZW zX!3P0oVpE414u+G^XkHO@LjkQ!-`e_0A2xrkG2MWz=@~oRSe=jRX{LL8U4)c?rW%C zP;L?F18Jd6C0>^XP6?a`!^0*#Ul7h?rxr;N-#|ORiV3ZvWwXtd2Lw>MYawZyE)@i_ z-zzUNvb3!eMwYgakWaK156_S-UV3vZWaG8twpKn6g{|NP&*3EV?2Yn6FPz%mD%eoO z$1*KoCb9~*obLp44*E+zJ34Bz1l2-RzO~X;WgCJp9Sci`#kxj`6++T&AyT#RF)cpvCAv<{1Fq4}6ZG!z#N4v4wsI94T6^?vP{VIk9Snzf` z6}1b#aaEN{-!4H$szdGGpi~#}cxk?}S&WKj@D?tXzExR){1Xatfif#iE0Cg=6s=ZD z(4PZ%Q25JmG54%K#2weQ%dwH;_?*5y{g$1wRSDXl3>-q#PO!$V_&FeIr&SwpC66G& zx18~GZP-f$#M81qpP!7=)1FXw_8MBYL>@~gWM1J*!5s&b?#4zGCNs`Btb`C|y!230 zG!?~@G?9NVF?GFELXDgs3GQ!C1}{?Id^&U`jFtvk4?=6FXo@Zp#Ch7oZ7NKe&=3mQ z$8q93PkW#(9mt)G<>JbkN7y>{JCIc({e`mXI;?vIGG=dmQj`e^wh=`a*Vh}5aP(^+ zBylrLDI`wR0Dz+Wcc+6zAeBCx3++NekO)T5nz_o~LI{desAi;%Q|PyX#by-gfwL5G ztzR^l9E9ADi4Y-Qmx3eYe$-;ea`9Tk8^&YWnpAsZx+fGZs2HccHR}6j@KUxkrddet zPO0;ngotw;L)eJz(a6}(!>S>geOw2z*S%zUY-dI)d0vgHPLAf}wV*6u)*UUbOOBR| zaz|M~Vzfjxg2*ivqxs8q1`ncf|0npWRM$7)=lY)q!F<^XetJa_j3W%uBI`&Pk`&Hx z)00_JOuZ4#Q2vq>&cvb;?xROk!aa&aB`!g$cOfQdGh!63H*}W?*~&R$l;Dai@8!fO z+L`)7F$%5XyoC3UP>gce84O3YgJv%!MoE`bMiG^njnyeo(!~@R!9Te@08%gnH!J|j z+$^YU1+^PP3_rBvYsMx~#+Qd}^sqzZKbZn7w}{v8xYIJ0%<+X5-UgT5SI6s@ERQcc z*&JNIG1Uo@nv9N1Qjd}TXhFzjSwZq8mu3Yu>v5sXg~gO$uLk1$&wmDaFCgfEh=pNgcpQe-e@_c|qTf8a z@Op;;P7;1tA&*l;%d795;yJfLX^kJ+xt3Rn4zyGqAnnem%>XO<362YR!FUlN_-wb> z;3oEYRwc@yR?2~cGeITwW{9X`R%Oa5K#JRne+2Qsyh@caLcY_k4H=3R!D(DDrdAM5 zfA9nPksJb9fQ2~r0{@N|p0ww)njaIz5Th$!rUOx`Ji1YkxlRk0@N8k75$srm8}rIv8UC~+sSt^&`D77c%z34A?gCLFLpiIvP)uy$79!YW9!G9) zR_#N5f!@iJr7_VtEr^U$a+Y=+d5?KgtvRlU63FLw$5ZMy%JLMX)h#r?H z6_vx_bU0dt0>DIP|CBVmi7+5;v4o3>i}ci%-a=bE=T2K)L0r@s){rd@nRAxjMynYW z7a-dHg3NXY6BISpr{&S{1?H3an|3PM3&&&XbacG*V*u}u(BvN2z50&aW_F?d?yClk zv|)AeY}keIcH~nmLBc*GP=CU+EiTju?RbHx3kHFyVBUttGF+VjC{y^XOu=W)>`r0T z#Ma6JQ0D-rta^C7zt-(w57w|z&CX-GXnYQ1LOtcFGCgVtFw-75J(i;$=_*)xH+pT#F7*-?3b3G>u_);t>`g6p$l3+zy&-+LG1%z#z%S0gs??L(wQ zLZq8g7y0xgBV7j$hhLEC`4R=V)7$WLRbGGyqFM0aB8x%IJG&ywc!`!5!K10{>G9GR zFNUXE^8Gv*J!{r*0Gi$5(wC*9TVz{6f+XSXzk(L?NJD{6rU-V#FGlyN*n#1PIgN6T zzl!$$h>VF9wJ&(Fob0d0gATuopw%L0aW-BA9ACqj{#0A;m|8}Y>Wiq=K9HV}!#^$` z=F?Q3A95J7XQbMMt0ag$s9|KnUzZ8{f)ctDt|ogy1)3}%;vY17FampQ;|hNRfT4m( zmgZrO`0Dw{i~6-*gc|vTXreY*$QNWND8cTy4qkyYSE*u7Erut-qO?3ART@5tlb%pi zMM`#YrTmc)@v^L;(Md)rRVe=imzqdPNo}psux2X?Uo#ZHhD3?^UKK{4CbxzD8`eV%>TgdkI8Bbq}@pNqbZ@c*%wZ!rp7p#iKF%Ff6 z1a;=f!CBenY4(#!UjCgEij!sJ}QbSx0GFKalbr#vCD~ zIW&~%Dn$syG?`jnS!uRvIkQD^)nl2Bwg4f1< z=h{f4V`{@^)kV!XvuD`tVhgww%O?CFX6BX^KI5iAO<0a-L4=zFHUEDiCV+EWi8Pxn z5L}}U(5WCzjVDs2p>mM}vBt%ZpEHafDO^te=*WllfwJ=9t9|(2KvYE^Q6*Pg%#&7; z{{(Ch>||^**jtbWLIvVfaJ`~Jyn|7C;#4WcNoZ$$n5^5C$XsTWr-qLq+H<6#FxP@1 zXH>E<|C`96lOI(Wcfw2zNB zPr~_)z}M?kP7F3^a~xjuSY#&-#Udi<3k;JQO8(COXA?mXR}rl}F}C!xI_W79J_zyN zW5P5uc1jqw4-x^X~~#F2if%`c&tVVH;*LJpxb2YHMw%9oK3S+k`4W-z5S zdF2d|6&DZ`YAwTM#&L^~8Zkef3FP6kJZ2PrS${>Qyl@83>l8r=73D7M!>dKcrhu0V zoO+-nW+vWs7>y%wGt*~Fwj$~+w`}3sRvD`MNz+geoozT}8tOvbaJo}pt^+kuvg48o(H{7rYgve#AS<%}1E*~>Z zEXNk2x|oOz-$F$foNPvY(^%7Qo*JQM5}!fXnw&$bR`>f*A?!r^u+0F$?J_8*4~4iR zJCP{mEU4@ucBW9vJ5LP{wH{1-0u5c~79lFdT`jA!dnXw@D08J!bexiZOrH>n ziB=ooco1Z+-P-81yDg#l{ECTlcPR}A{`EO`qH+RA9Xd` zvr<7O0bFTV5Y_go)rvw6z5=4?<*;7d^meOwaKNb3*gI`jK{T`IO~sJzLSLx_47m~7 zmg39sGW67fY7`d@GFiY(@ZG5F(FX;Ygd1N#z>UH$EC+XhwK|MEm&^&>g2}BWYh}0e zG<`9Hz1^3+r7~d`EW&=x4Nv#YKsJ1P(ZjKM;iX1_u-8!H(0ImBA;p?+?lWG?LHwM~ zc`aEkGfL3`r4oSifBjleNP+-K!k4&=IPAzKVo>WZO#};!%pR2h!O}(H_&LAZH%Mw} zoF;Y}Dme$pSzV@I-q6LBhacyZ%p~+FIM6G@ANl_fF6m>}&CWOc0SxiLGj+L`@+8fz z?0=loOU^)(v09izj7JD zgBYI@ihkJOWdUyHp{2yw-%Gqc8~<~6}H0*|#z_OYxjJS#8RW3#-Go6P^lHMr!b zj$sQXZ)S_YZyzAY$#%2%_!M>qhFVUPg})op1hiR2WTPh*?f%qrZYEP-?vXB3C1|m>xC+T7a4e|1EsvWZPE(HOBA9>Vw(1P22p zq)%rGG7jlhg*?V3+9C)S37M(Ov^9Yi#LM@hIUpbcnULJI{12wnmrnbNh%n0T5{Si_ z4h>|8%DDM+-cVb~W%qBs6>_NvAo)lEE;4M5ZsP*#JZBN%@o|r4AjSan@pE1a&!?r% zrcAGBhg0#$6!wjpCnWY_eD0JKesdytIk^BySm76f&tQMA++PYxiF%9+E$wYZtKsv zzjYUuN`l5R-fSf)7xC_!TiJNd(Nfd_{MwS>`E|@Z@?rFKRMO0?Jnz?SyRcLeG=k#6 z_YoHvE0TZIGoI_Ql8+?my>3nx`|t5h?FL`Cpt4UQ8YGc&;MF zrnDD|D&%lHMN~IF785Y8OO#SfWJ>zI$GRc${sgiI>xQ3>BpC~nJA zpm}l2^1nV2yp&nw7$8NXqCgOfJQJRV3%#H+<<#rh1r%&Lp`zb>c%ua}3mX^243g$u zQW{<@dJ_$A{#U2d^G#e8$W5~;&Hs691w?OfsbP>+OYc4}^OzVfwHZ=ZiiT3|u=)RS zGRt?Kwx(Qj0?wvhMS%(h-{6gplqgFQ%>MZ4vnq=1&7<{XG!vSv(kGPiPAA|2?uzB*A4U z7D(e@A!*2>kCFOL01bb}P~aHA-b7z0-Q-;TG*{WM39y?qe+~2hVnzyMTSaHum;~4_ zM8YxY9v4R~$;m-5%9i@3>6URZ7difqiI{;ci>Y%@+1E)Icns_I|F2x#QLJ zjUi3oNQgX5WT^}P`=p5K#s0^>x8%mCJ2K%$h%;b%5ts1U6C)q%U1^Pe@LQAnrS5-OzZ2(e=yk+#<-iu18gi zK_^xMIY1L#RT@@dCAgVtLtTpI0&!lUEZHt?@OZ)rPf_*(^~m3a=Q2i8ZG@$iyJ~Jf*O#k5PO+739_|F!A@ye@8{XfsQR&iSBhs6mj5gI)1_<8`h(on&=&X{z z`8xH$%+(RBp7v5$c$h{WpU5swD{o!+02+MxHsll)#o|~Eke!HKm1t%gwm)?L_Rm5k zxMe#;^<4DI?i%gyu;}aH;h7)-yYjG9x{tplquFZN{F~CHy_ba%1y1UHJRvMu9Ixq;kV^-VbJvSs>?+TdMP3J#6no zaXjkppB@fNVElRh+J(g;%AvgQ|We>TXfeOT*>a9EwvAAKj zCH3@Hlc*h%AxeQ+WAOnNT5zc--apu@AnYi^m_iLF0WzUkEWzl>t^x?Uc?*X~2~gmQ zwY^>3DZ=j@B0K>T|E4qgPI+$!VE*Ak@G`y$D+jx=;Seh54pg}P_#%NqgPuVu*PR6G z8j<;`!eiuAAGJ?n1(nY5yy;)fu_JQ>5fP@>14U8;JiGrY2|fQ8=7W14H(&dXQ-~O1EcG+ETeHEghrjR~$hOiGC_PHT~cf<)SDk8Jj8J2oSO_(yk zH;R@HhH1={GmdnWK^|`inOk2%xR1P^I5+UpA`Xv^Pc&}+?@k71P6@{fHRf_l{8(zbD$$J zCT$n2MZ;A7|A7mTySmw}5D|mk9d~i(hfbNSzy9sqP#Chvrm~3n3(_|PG6EhcpY;9X z+=b{&rN__zA7Gf=k9U^Sc8bLo8Z8;I#qZ7>rpCv0yD=esEj5C%`+C_UBBX5dsZ}>? zVGHs_+mb?65V3Cvd~41=PE;(HHf*XUJqVQwl<-`YkLZ7vFM(3_d*WiyB|7=3dRtM5d0LOBqS-HIm;tJU!=uc+v>bh3j2hlaSmt;Qbqg zzcL{q)G1^_DzFG2)j(_MB8SKE`EvsCr1~zK--3l)D20t+&Z$dcA0Samg*bQNvl-i8 z^Vu8Q#o89I3Ep*BCf9S|$zXzyaZ^MpnB^OWOcnGww=za1km^U=sf(!8LG)lv>gNCN z$zUN-6@JHg7&X`DQ(8rRB5FA~!m=LB^Y%e#9eG$8TTmmmOBIWSuT0ZIp@>h5W^U>E zI~6ejsV#B!vpJ{RNfGX9(%jTo3nvRjW!2G=7o$nhL46hv5~X5tnwVX3t1W?+B-?NR zVw2NfpAJGJH7O2<{ezB(d%{L=vl;(%PUd?a0wvpj*?}deGYt(9I*fg;BeLNZj1$>p zT9crJ1Z4=VfwraQrd(qTj<~GwwYMdteJ2>#yKt8Q0{>v(FB^uq)ogS@q*5GR}u zrbHsU&f)a<0_Fy>nrR%zFqqN|%IKe$Ew#S5JTBMN_y)Xd<}{e-9XuikWR)o7IXcmb zE1e^kmv&wy${2gYbSk!5$YJe9K(@iq&uKw+c|UUFHk09vMr`eLIc~(uYXFw_{>I(L=s5#Li|Ip8}u7JS^8xvSCuxZt4jJ8Se2qWdKxd>Fsf zOgWM5@brXBVx1=Gae(k1$m#m0ZuQyyQ75Oc%)}v{AOrf#ZYN zgU7Nb;b^sH1 zLhja^C;jf(<30~NLPHtOZf<4Cvm6pa2k!pK4vek@i-*&0tM;S=bKo9gv%w9OD@&X( zqsG+2L*u6XPGhtpuln3d!83NrtcYo;(p|AFi&{!at3J7Zyta!gU-1C*o(U67({{%> z7FOE+E_@e$Dv1)wOBDy^l4rn%Fr5&FAXN$0Zx>9f1oa|Akg8@1)&}UL+|=rfRjU;K z&h_B#)>#W_+!&i3v25^%34(eO2U+5nqzFVX%#Ev{ zc5+ksZv~-Ux_H$uv36M96DJv$W+B|7{C2QpA*T=KCEzaxlaVtl{#wlii$~@P>620T z2h&kh;ngSu0jNs$)0>UIM3@KNvI#NCX(nTbCM<%Y7@;s zLHme_vXmI^5;{)y233hswV!sA)Z>c2q;&_+Yqm3(kF8(zGyFa z&}pC@FOBxiXD<`5gMWrUVSH8S47s@COS78=BqvdvP4a&Y#^9p<7GSQDpIhMO!ttu- zxgTEjeA1ji6R)m00eQ)U$$%zZlZD)T$7Dcnm{U@C-QBa4{)<7uuEjU;b$&Eban6rLF2?AEhdCLzI7TDfh!~ATNQb93LOSNmj}3Fo=m8yg zXd+a%7KzxOh(mJYd#CWp7@ZkI6)!?aeB1H^dcK(mx5{=WN0?9%%!u(^q71={bS5s- znG*Ot(CrYfi;o22MQ>LgViWMkPMLl+c!cQ31Kq@b@iiDuXqH8W(xDvntErb4=I|2U zQOd$$@Ul)Z39}a50bG=Q$+=`;$c>p>@p;JCBtDP7n>rULQq{~;ED1TK@K%OB@C6m5 zpwTu{iB1gig)c$Oa~r`-F4)|PFUS|^;kcnhK6QSR#QW@dE3~mdt^Z=*nGap0+xD3yLq{+=_1( zicT{)8#})UL_9n#5dB>GfXH>QiCX8mp7y!F9LG}nFx zX&`W?xOYT9z_S{HbRIC;VH99^QKtNk2mY47hZ+Ye{9_ZrJBQ8TNHs?XN9_@=?|JuF z!dpGZ^}oUp6w(j_86wE;5;H{k6O41d$;Qe9fVZ#b z9kjdtF?IB0-=nuSzLz==B(EkEHNvXfFJowS|JAfivT3Q(UHKXeA(?p+g@!fh&V8>z zEzyu747Vc>q{O_{nSt!w7_{AgAVmO}XskQ{V9l1d->dm6kw{qZ46!`7@;T2Hx1XNv zq|O1z1p(%30h8Dv7>L>bJOc4K4H0@c@f#7#ZfQX|u3iLw1e))KtT@e7qLapEz}m_1C=#!E95&0eCN|3y zh93mEC>pt);-|0j!I|zndYwc9925B2cNddMY*eZvL4h6}K`>Z1$W#Y41`z3k6D<@-po68)%A9@lfx)(k=E@6%HwK~Ctd!m^ z$LGdwl_S12jp5dm0YEeiJ%+Jt)F*UVVESlE*l4;fRk|zRMuSajXT1Y;9G!X{O4^tH z)?j04zoYC_{a}bhoo`6(%M#;A`;n-#7^zO`9DuxbkmGkn(<7#zdVzG{XHVwtD?1jf0ZTluW#sj+lbrjHsA4*7*| zr7%3QIez6TUy|+5+lk0)sr#{{<7xZW2dQgPjgo_; z%gl!h?@52uC5E;36F45o=Kw-P%R8PEk2Pj|YyWG-$`3>Y7T{c3r^r`8t}xYY z=_h0mA9Y+iryB$o=hOnR-w~3~q&JAS<9A(U(flx&wc@1HOWxX_6u7>u71dNzmFYZg z1HQQQ&5ynTUqpC}rNmm5a6awnEXn{r`D$YEoi1uDu<$1ls&Vwxf?gHSKC&qxSa7hm%Klj?zoRPDXG}*OSEO$2Q8HZqK_cq@iZ;b5T5?=Z}ud)aIA^K zEf8k?!PzP@Ja^km8v@ZsE||qgG)J;54-h^EKuBx-V^>(+k@oZ>=P2FmfvCz*zCEnQ8ajI{JOD_f!y^O9kg%XSva$uO1hkJx z*CtQt4lt$iUx&0k|dc#!SZ&R@{OnagdH{sq4qg~!1J*7z1+I_J^@fsAJ|MhW`qu9D zN1a3Z(K^iMzKr0zTKYVB`l#{XkXRXFq2tcTWN@+w;@~Rl6X}tdt3H9oM++g<{n0wc0ppAJq%S9RSq^$(*Fn;{IR<;u4z3;aB;AsIBLf{!#eFsbF46K(piN z^F!tP)y@wm(iv*~N|YVLDe=aEfOS*L@vf)&!>n?PU~V2+>7HXrn$nv&mc2ND-$j;4 zT6~I58;95ahBMSG5Z7SD_!D9%F{R=HI27D~?oR6Tak4-4-Gt%ACbeqAVz=9WhA-w> zLXHn82U0b(sz%a6!?Baq5Y_Pv#K(!!!XKIl7L#lZ?ALD`8_G{_$$5EOZBuM!4&U{- zZ3!G6E}o3B9wq74g+DwI+`}MHnL6Q%U0u|eMv^0(R2a* z@ZwmCHM)RYA{&UM7R-|FdVuV{Hn5b>t!XUKW!A8_is7Vj315Y);gWnkn6ZF)Wcoru zJ6VdH62_g<^_)ihtWF`&j&zHP3tvYT5;I+k_Rx9Q?!v3S-O^;b_JT%o>{M}KJ(y=_ z9K#3A?rA%9lDVd1@UBM52Ja#mI-w+ll40|#JYcftadN+LpU1sX`!L&}4{-FGSbcCj(Eg6{naD~W70?^Ti0-2qn46R-FZ@|V zSV-fX%ieMuQjxol%SN3sFR;+|up8y}aV7EEIYl~&%B7d*{UFTpzt8t%6#gJ^T1FMl zmkaMRoTr3TiE}lkO5HK_J9DXL3Z%)2Y@uEW{iERyf`z3Q23g%rf$?nN{|uM3?D3 zg-%5r$YdLY4w_QAPO3b;I3%a9hIb2p;fC0}I_4FSA>S|t7RC|9=a8K=$yhc&t(Zkw z2;%%_(h5g8qx8CEaz=4ru#(Mg|FJQZyu`q3xa0}$Kb^u$qpecxR4B+Z>nL2FSxg@SmU{C*!TD0dkwW4&``cy)iwj8V zk2)iW)EfO0j+++NlqgLc&3637`)Mj5&@u%5#|I? zqKxrXhfQRzO3j$Ylv7ATovjjH05R;_ElkMd*PI>Ng8U!FOOQHS+)#76uC}3Wr+CZs zEil1wQf!fVC>&0y@FypO{CHCzTEN;%ozMOP!kU?hNFm*vZNXX-zN+|ve_Of-Z|?%cL#9WjLE$eh1~=`pSQ76$ z!OcU+rI+Z#JLqP$GPU$e7Zlc1x4b zln6=+=i_w6>J9Tg=l`$i;AZNkf9&V)aJ+#&(fr(sPcb~kKp#6g)hB9t<6 zWVX@d^c7YOM7-__k96N8QzYcFNZ6a#UwNLkMv8%oT%Jzs(9-Yt+C8KoV zx3AInJz+|Ye7mH6w0uY?Gayv**<&5rG9rA#-LMlRCAwcC)-%z*s|28ez$g<8-5LER zfqvA6%ZOfkkGmXK({-1N)dD8nyQ?TL-(uY9_&6jzf4vT=yvtri0^|rng>EpBv4KfS z6e%9k<-`(kSq<3vpgC9~Ejq8V6~sB6VX@bdZ0SOZ&M2ou6c7kzVzanPZgvJ~amvz9 z_SIP!q1KG(1&6<06IYZe2BFpR7%Ak=Vy;iYbqypB`wX&1ncw6)@OQ_Yu_b0-m&mD6 zk?y@M)-_9aq#C{TZ=(O^0evq!I%wf`bHCj+iPt?fg};S>*dCu4@-3}4bHfjjH^NPM zk}f81YFpY=CGuWRs7yKAVs;39b8uE>h*g~oTXsKPF0}YbyA2X{=VU1F@uUidQ3>RG zZmy6SOXqm&TvptU_-`+t=V)|k zIRDcmvP645puQ2z^&mz_Qe5W=z})7fj9lisJnVmIn)*GC8#;O0!KsLMxx84xq)E$xEeg(=(V z08Zwv4M(jFV@X6Vhd%|zdI?r-nI@$kvyipqh|j3=niPJ0K6tI#ZVwnuqH+Rn5{gL8 zEwqdl3<`lvy-h^NMsmiVGkY9l(Yu`sH2mj~F~!^{^T4V0>4{Onb5qJ5rhnXc=1Z2% zhou0jF#{nSx;>wu+7NJt*7CUR9Nm{e?UJMK4Y~%F%7PDnVIs&MY4cxhG2*|qkDI-g znYrOMcb?54gilN+%Ih&oL>F8K?_cT{Lv~rx6VN@U+_< z|8)khe()T#+c+1nx?te^LtL$_nXCJKQ0oN8+WO!kb)(ZR{}1rd=g$o`h494^Z(^$> zG{TmzdDh{4SQY@iyAlv#_IJxUs=$bc9i8JzJ6*xH;iTCUeDZi%^X}C_|75uAY?kf> zaZP+Wby5E3Ab@omrY?ezVQ_1T)kinz;E$htof!}ap&^HlA*9kGSGPzM+O~yIf?A+I z1BG_7m}F?*+(1Cna&taO*HosQDOaNI(X$WbD`l!v%3CLt#=!vv{@b0F5!M7Ca7{^m zkEv5+(POM(<@*j7$=qeVgD%nyZhbH2TlnR$m&w-TzZ%>%U{k1&6LR=bJ%m#NV(+cX zofgp&>#0Wq@>z3$%Ik%0P$-^A-1YVbRZ67~58B!W!7*{~IF&|_*&4xe$^INzyH`kVqey9}kJjmO=BG*>A`Vuxz7Q9{r<$;1)MiZ4p@0X?fZG)?Gku z*>yJy?Q{7|4aiN4wyW^fV4BXDqB1<63QdJ$EBtR0=nBg=&3|^g_l+eK&H`O<@RP{u zK*#dIZAqACWXh>skK4+@(t@Q_DZ^Ac?b^^|fhO(uTAI&ZP-ANOfd`{!%^DPZ&907G z3rh^A$hNR{mE@)8bqiBe_>Jjc-VHV5L42-oOC$PNxRpd@`tuxAW>K9HEfK3H#Z|a; zAg<+GwOY*ns}c$g6VsojM8&|@o63uWS&a(?}@=F>Lio+6~e*W2GbXfd}cG5RQ{ zx&e3mh=*k#CI|Dr8)g}aO3o^8?iqC!2!$`y#>Ik-isbZdps3;PHOLU@n<*E5miPREb zV6xcq(kwV%po@7gqAz&ZX<=brkcO#JSKP>p;}|aa1-KOR&MKb(_rC;jK|PvbJ}p@< zK@D`23f9_U!!Gz-5OjsnxBh-%euO+12#$WzR0Z_tIxqzfZoi%Qwzo zeqsOJx5cYc(F{j6H>dA(YAh7rud%0-uNoFGd1jd<^JdC5fTLJ3|Hr5h@Fls#3yom< z12E9CFt{7$r^WVM31b2URToqr2;XI%ZS%{kXwcu9Q9zJlh}8-rxPJ~sgEqUmq@qE4 z_8JQ;XgkHx_eX`z3dmXvcL_IC;w1=IJe^PFO`z5SX`toD#~>BOWL~Dgx;+31?qUZh0Oin$1D;C+W!jBF=ZF^zHJ z0`A&A462`Y`h(3u^W;dzn^nm|s$_Lc9fRp?l2^b6gV*j28FQ4R2WW?=fLz-%M3vG4 z3QeuX1%>|?TpMOvJ4Mi2WYBCu3Uhn{*A-(jPEs#fW!daZIT52Z4%1Lvmd;lNe@mJe zVmvcEcoTAW)YAJx8epCpu+vO}A&#?uxrMJ)=7 zatQoQ z)6nr8bep(|137C#>)H~ysW1hUo;;^O_Kb$UYFcvGLR)97%lL9U8W^$2#erVt=BsG!FNvW-(SZ(H0>j z6Te|vd(WWH^lKzY+#j?JV9leD?xe;+BPxIw2Lk>Ks439&pi{!Y9cJ&M?;=U;4}8T5 z=#93G>BW{jWE;#Bb{uWI(a-xtz<>r66t!eFvG^CC2oe(Chw9&$T1CGR%O}U=;3Q@2 zM1<-02h+khD%DzL`t$f7_nmC$B3qgpcl;$oxE&iwuH2qbYTYqPEs$vj3yW>3b|mmu zBBsZScmw^(!bQF?=M6iKuLJh;cS8t~aaG`Y!zk{0^n!_S!XL61;~>~wD#5Grz~GUB zX_=dMafwolu}6wH!Aa7n(!F{0a5S8U)`VdmbMk)QsgsZH!;;%od<~*q}c&ug;+sDF}NU;MQd$Jc;=PAvheRAKc?2Ax_R%&R!|o& zY|)l>*Cdc+A(?XBDi$7-@|z|CW9O(CqBRiE23}Sflc@_gti!3HRmCKP49cRU!z#9( zE*IAyKuE{#Ka#1?b~#GOiuG7!3CY3=ef>@B4giwO}dw zjX`Xv0U@&HR?aiQvP}!WHWe&HqreOBfb7~a|BwU5V9n4VM8o;2NcMsRh!yANm++<TitGMN0_q9tLsnfv-H0={d@~dCpYz2?7X>FvwS{alq6iJPS8B2V% zt|e!BN98>3rc6E=XFy~qkjABog^osGk>RK~ijrNJ2bVKVR&WlYn@4OunvybrvJtmu z%7ye8LU!3j)RK|$S%8_bEh+p4w3BwX%>K|vp>1-unPXx|Iv)XHJDZmD3Q2Vahr19J z@f?`b#6Iz%oX80^@gaX{;Rt@66-L2~l}-NWgp!5- z0cQV6FM;r9$L5?n&qGeT7%Zn#d0}g^Ip&ZcDar|F_ShG7GdZti?2R4-FysC>gaK8` zx=I$;A8j`UjoRr5oCAT!gS2WYhumMB2!gl^h#YH#DWoD#($(BJ-0p;yPL_5>XioS1 zpF+;9XstfxnSMjNgz#uzZH9Co$s?O#`h0xM^Gn$w(7$D0ykrWGf@@-!oD@(@LEE4BtPzR>zPN%%q|)pSr4n;#N!R+z7mi+IfdFX&0s#T#4W7q4H@v#-*aBMFY{pO6Mu6DZrU1%u{x=NH44x`Xruz!HBwSB}PbS4!Cx<>HV zO=W*_RoW63inFs}q4+4E)EYhT+Y>=e3O@%yjXYUm@@q57P@x6GacVlKLnThttC1?@ zOPbUL>%o(SoCI4L%Lh&(p{IuY;??c)`cCJuHV58mo**ExSRC8W1_g`H0N2+tmG+A` zEl{xD%EDhm!Y|md)#26ggxp8-B=u!lI>lG_Kp*45vRNt3dGS?|y2!TICq7$22@EwSLQ+~8e^gL_ zsp~?q{K08^aJJFx^-o8j5*@2hLn!#|?45ScM_Y1klt*X-JAQ#{7xqp`2mUc+3`u;Z zay2Rb8q7D2oaVcArW&q4s+N#N4k^m&$We~0WwXIGo#}k?onJucka1Sj0yM+{l3eEv zgAKM);^B&gde*XkAZ zs8M^gyT(k&>!qFI?mCj^y&B}J+r_ogR%Lq~xy^SXvb%;XccuE;7P7Iw7Q7_sX~zt3od6^;=q_`l@09Ar1b`dw{L?9sH5*1b7I!i? z;70L58EcBKn-6A~nr|DQf!uFz2Co&%wNg>7Z8dh89G4lNOGxir#V6o%c9|Bi5WMPZ zRNLF!EMWlwb~@39o7O09m5S>~B^b52mKe-w;|_K`d^>nE8q8^gW!&3Fu6sN68y7S* z%U{dQfEfvk_d-Yt7Y56ub z8XLu(^7fb)8cU3s^P^_gOIX=ksov0bcf;e25eqo0ip zpoq%Dy((@E@PTY??)p3L2QxNITX-k9W%0>*arEzQBe(M+nvx2*DH-g@#N|o m-+t|JfBCq1x_sFA{4*F~4v*XYXP<|JaMb_&vu0_f^#22g!6QQe diff --git a/proto/waE2E/WAWebProtobufsE2E.proto b/proto/waE2E/WAWebProtobufsE2E.proto index ec055a6a..ae3fa73a 100644 --- a/proto/waE2E/WAWebProtobufsE2E.proto +++ b/proto/waE2E/WAWebProtobufsE2E.proto @@ -22,6 +22,7 @@ enum PeerDataOperationRequestType { WAFFLE_LINKING_NONCE_FETCH = 5; FULL_HISTORY_SYNC_ON_DEMAND = 6; COMPANION_META_NONCE_FETCH = 7; + COMPANION_SYNCD_SNAPSHOT_FATAL_RECOVERY = 8; } enum BotMetricsEntryPoint { @@ -46,6 +47,9 @@ enum BotMetricsEntryPoint { AI_HOME = 19; AI_DEEPLINK_IMMERSIVE = 20; AI_DEEPLINK = 21; + META_AI_CHAT_SHORTCUT_AI_STUDIO = 22; + UGC_CHAT_SHORTCUT_AI_STUDIO = 23; + NEW_CHAT_AI_STUDIO = 24; } enum BotMetricsThreadEntryPoint { @@ -297,6 +301,7 @@ message SecretEncryptedMessage { enum SecretEncType { UNKNOWN = 0; EVENT_EDIT = 1; + MESSAGE_EDIT = 2; } optional WACommon.MessageKey targetMessageKey = 1; @@ -509,6 +514,7 @@ message OrderMessage { optional ContextInfo contextInfo = 17; optional int32 messageVersion = 12; optional WACommon.MessageKey orderRequestMessageID = 13; + optional string catalogType = 15; } message PaymentInviteMessage { @@ -597,6 +603,11 @@ message PeerDataOperationRequestResponseMessage { ERROR_HOSTED_DEVICE_LOGIN_TIME_NOT_SET = 6; } + message SyncDSnapshotFatalRecoveryResponse { + optional bytes collectionSnapshot = 1; + optional bool isCompressed = 2; + } + message CompanionMetaNonceFetchResponse { optional string nonce = 1; } @@ -642,6 +653,7 @@ message PeerDataOperationRequestResponseMessage { optional WaffleNonceFetchResponse waffleNonceFetchRequestResponse = 5; optional FullHistorySyncOnDemandRequestResponse fullHistorySyncOnDemandRequestResponse = 6; optional CompanionMetaNonceFetchResponse companionMetaNonceFetchRequestResponse = 7; + optional SyncDSnapshotFatalRecoveryResponse syncdSnapshotFatalRecoveryResponse = 8; } optional PeerDataOperationRequestType peerDataOperationRequestType = 1; @@ -713,6 +725,7 @@ message ProtocolMessage { LIMIT_SHARING = 27; AI_PSI_METADATA = 28; AI_QUERY_FANOUT = 29; + GROUP_MEMBER_LABEL_CHANGE = 30; } optional WACommon.MessageKey key = 1; @@ -738,6 +751,7 @@ message ProtocolMessage { optional WACommon.LimitSharing limitSharing = 24; optional bytes aiPsiMetadata = 25; optional AIQueryFanout aiQueryFanout = 26; + optional MemberLabel memberLabel = 27; } message CloudAPIThreadControlNotification { @@ -747,10 +761,16 @@ message CloudAPIThreadControlNotification { CONTROL_TAKEN = 2; } + message CloudAPIThreadControlNotificationContent { + optional string handoffNotificationText = 1; + optional string extraJSON = 2; + } + optional CloudAPIThreadControl status = 1; optional int64 senderNotificationTimestampMS = 2; optional string consumerLid = 3; optional string consumerPhoneNumber = 4; + optional CloudAPIThreadControlNotificationContent notificationContent = 5; } message BotFeedbackMessage { @@ -980,6 +1000,15 @@ message ImageMessage { } message ContextInfo { + enum StatusSourceType { + IMAGE = 0; + VIDEO = 1; + GIF = 2; + AUDIO = 3; + TEXT = 4; + MUSIC_STANDALONE = 5; + } + enum PairedMediaType { NOT_PAIRED_MEDIA = 0; SD_VIDEO_PARENT = 1; @@ -1009,6 +1038,11 @@ message ContextInfo { } message ExternalAdReplyInfo { + enum AdType { + CTWA = 0; + CAWC = 1; + } + enum MediaType { NONE = 0; IMAGE = 1; @@ -1039,6 +1073,7 @@ message ContextInfo { optional string originalImageURL = 22; optional string automatedGreetingMessageCtaType = 23; optional bool wtwaAdFormat = 24; + optional AdType adType = 25; } message AdReplyInfo { @@ -1134,6 +1169,9 @@ message ContextInfo { optional UrlTrackingMap urlTrackingMap = 58; optional PairedMediaType pairedMediaType = 59; optional uint32 rankingVersion = 60; + optional MemberLabel memberLabel = 62; + optional bool isQuestion = 63; + optional StatusSourceType statusSourceType = 64; } message BotPluginMetadata { @@ -1306,7 +1344,7 @@ message AIRichResponseMessage { repeated AIRichResponseLatexExpression expressions = 2; } - message AIRichResponseAbstractData { + message AIRichResponseUnifiedResponse { optional bytes data = 1; } @@ -1332,7 +1370,17 @@ message AIRichResponseMessage { optional AIRichResponseMessageType messageType = 1; repeated AIRichResponseSubMessage submessages = 2; - optional AIRichResponseAbstractData abstractData = 3; + optional AIRichResponseUnifiedResponse unifiedResponse = 3; +} + +message BotPromotionMessageMetadata { + enum BotPromotionType { + UNKNOWN_TYPE = 0; + C50 = 1; + } + + optional BotPromotionType promotionType = 1; + optional string buttonTitle = 2; } message BotMediaMetadata { @@ -1482,11 +1530,37 @@ message BotCapabilityMetadata { RICH_RESPONSE_LATEX_INLINE = 31; QUERY_PLAN = 32; PROACTIVE_MESSAGE = 33; + RICH_RESPONSE_UNIFIED_RESPONSE = 34; + PROMOTION_MESSAGE = 35; } repeated BotCapabilityType capabilities = 1; } +message BotModeSelectionMetadata { + enum BotUserSelectionMode { + UNKNOWN_MODE = 0; + REASONING_MODE = 1; + } + + repeated BotUserSelectionMode mode = 1; +} + +message BotQuotaMetadata { + message BotFeatureQuotaMetadata { + enum BotFeatureType { + UNKNOWN_FEATURE = 0; + REASONING_FEATURE = 1; + } + + optional BotFeatureType featureType = 1; + optional uint32 remainingQuota = 2; + optional uint64 expirationTimestamp = 3; + } + + repeated BotFeatureQuotaMetadata botFeatureQuotaMetadata = 1; +} + message BotImagineMetadata { enum ImagineType { UNKNOWN = 0; @@ -1562,6 +1636,7 @@ message MessageContextInfo { optional bool capiCreatedGroup = 11; optional string supportPayload = 12; optional WACommon.LimitSharing limitSharing = 13; + optional WACommon.LimitSharing limitSharingV2 = 14; } message InteractiveAnnotation { @@ -1769,6 +1844,8 @@ message Message { optional StatusNotificationMessage statusNotificationMessage = 98; optional FutureProofMessage limitSharingMessage = 99; optional FutureProofMessage botTaskMessage = 100; + optional FutureProofMessage questionMessage = 101; + optional MessageHistoryNotice messageHistoryNotice = 102; } message AlbumMessage { @@ -1777,15 +1854,26 @@ message AlbumMessage { optional ContextInfo contextInfo = 17; } +message MessageHistoryMetadata { + repeated string historyReceivers = 1; + optional int64 firstMessageTimestamp = 2; + optional int64 messageCount = 3; +} + +message MessageHistoryNotice { + optional ContextInfo contextInfo = 1; + optional MessageHistoryMetadata messageHistoryMetadata = 2; +} + message MessageHistoryBundle { - optional string mimetype = 2; - optional bytes fileSHA256 = 3; - optional bytes mediaKey = 5; - optional bytes fileEncSHA256 = 6; - optional string directPath = 7; - optional int64 mediaKeyTimestamp = 8; - optional ContextInfo contextInfo = 9; - repeated string participants = 10; + optional string mimetype = 1; + optional bytes fileSHA256 = 2; + optional bytes mediaKey = 3; + optional bytes fileEncSHA256 = 4; + optional string directPath = 5; + optional int64 mediaKeyTimestamp = 6; + optional ContextInfo contextInfo = 7; + optional MessageHistoryMetadata messageHistoryMetadata = 8; } message EncEventResponseMessage { @@ -2047,6 +2135,11 @@ message InitialSecurityNotificationSettingSync { } message PeerDataOperationRequestMessage { + message SyncDCollectionFatalRecoveryRequest { + optional string collectionName = 1; + optional int64 timestamp = 2; + } + message PlaceholderMessageResendRequest { optional WACommon.MessageKey messageKey = 1; } @@ -2080,6 +2173,7 @@ message PeerDataOperationRequestMessage { optional HistorySyncOnDemandRequest historySyncOnDemandRequest = 4; repeated PlaceholderMessageResendRequest placeholderMessageResendRequest = 5; optional FullHistorySyncOnDemandRequest fullHistorySyncOnDemandRequest = 6; + optional SyncDCollectionFatalRecoveryRequest syncdCollectionFatalRecoveryRequest = 7; } message FullHistorySyncOnDemandRequestMetadata { @@ -2132,6 +2226,7 @@ message Call { optional uint32 conversionDelaySeconds = 4; optional string ctwaSignals = 5; optional bytes ctwaPayload = 6; + optional ContextInfo contextInfo = 7; } message AudioMessage { @@ -2288,6 +2383,11 @@ message BotMemuMetadata { repeated BotMediaMetadata faceImages = 1; } +message BotAgeCollectionMetadata { + optional bool ageCollectionEligible = 1; + optional bool shouldTriggerAgeCollectionOnClient = 2; +} + message BotMetadata { optional BotAvatarMetadata avatarMetadata = 1; optional string personaID = 2; @@ -2309,6 +2409,10 @@ message BotMetadata { optional BotLinkedAccountsMetadata botLinkedAccountsMetadata = 18; optional BotSourcesMetadata richResponseSourcesMetadata = 19; optional bytes aiConversationContext = 20; + optional BotPromotionMessageMetadata botPromotionMessageMetadata = 21; + optional BotModeSelectionMetadata botModeSelectionMetadata = 22; + optional BotQuotaMetadata botQuotaMetadata = 23; + optional BotAgeCollectionMetadata botAgeCollectionMetadata = 24; } message DeviceListMetadata { @@ -2439,3 +2543,8 @@ message AIQueryFanout { optional Message message = 2; optional int64 timestamp = 3; } + +message MemberLabel { + optional string label = 1; + optional int64 labelTimestamp = 2; +} diff --git a/proto/waEphemeral/WAWebProtobufsEphemeral.pb.go b/proto/waEphemeral/WAWebProtobufsEphemeral.pb.go index d45702ef..324ec872 100644 --- a/proto/waEphemeral/WAWebProtobufsEphemeral.pb.go +++ b/proto/waEphemeral/WAWebProtobufsEphemeral.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waEphemeral/WAWebProtobufsEphemeral.proto @@ -9,11 +9,10 @@ package waEphemeral import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -77,17 +76,21 @@ func (x *EphemeralSetting) GetTimestamp() int64 { var File_waEphemeral_WAWebProtobufsEphemeral_proto protoreflect.FileDescriptor -//go:embed WAWebProtobufsEphemeral.pb.raw -var file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDesc []byte +const file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDesc = "" + + "\n" + + ")waEphemeral/WAWebProtobufsEphemeral.proto\x12\x17WAWebProtobufsEphemeral\"L\n" + + "\x10EphemeralSetting\x12\x1a\n" + + "\bduration\x18\x01 \x01(\x0fR\bduration\x12\x1c\n" + + "\ttimestamp\x18\x02 \x01(\x10R\ttimestampB'Z%github.com/techwiz37/waSocket/proto/waEphemeral" var ( file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDescOnce sync.Once - file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDescData = file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDesc + file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDescData []byte ) func file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDescGZIP() []byte { file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDescOnce.Do(func() { - file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDescData = protoimpl.X.CompressGZIP(file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDescData) + file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDesc), len(file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDesc))) }) return file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDescData } @@ -113,7 +116,7 @@ func file_waEphemeral_WAWebProtobufsEphemeral_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDesc), len(file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -124,7 +127,6 @@ func file_waEphemeral_WAWebProtobufsEphemeral_proto_init() { MessageInfos: file_waEphemeral_WAWebProtobufsEphemeral_proto_msgTypes, }.Build() File_waEphemeral_WAWebProtobufsEphemeral_proto = out.File - file_waEphemeral_WAWebProtobufsEphemeral_proto_rawDesc = nil file_waEphemeral_WAWebProtobufsEphemeral_proto_goTypes = nil file_waEphemeral_WAWebProtobufsEphemeral_proto_depIdxs = nil } diff --git a/proto/waEphemeral/WAWebProtobufsEphemeral.pb.raw b/proto/waEphemeral/WAWebProtobufsEphemeral.pb.raw deleted file mode 100644 index 851ffd9b..00000000 --- a/proto/waEphemeral/WAWebProtobufsEphemeral.pb.raw +++ /dev/null @@ -1,5 +0,0 @@ - -)waEphemeral/WAWebProtobufsEphemeral.protoWAWebProtobufsEphemeral"L -EphemeralSetting -duration (Rduration - timestamp (R timestampB'Z%go.mau.fi/whatsmeow/proto/waEphemeral \ No newline at end of file diff --git a/proto/waFingerprint/WAFingerprint.pb.go b/proto/waFingerprint/WAFingerprint.pb.go index a451a109..9e78ffc5 100644 --- a/proto/waFingerprint/WAFingerprint.pb.go +++ b/proto/waFingerprint/WAFingerprint.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waFingerprint/WAFingerprint.proto @@ -9,11 +9,10 @@ package waFingerprint import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -225,17 +224,33 @@ func (x *CombinedFingerprint) GetRemoteFingerprint() *FingerprintData { var File_waFingerprint_WAFingerprint_proto protoreflect.FileDescriptor -//go:embed WAFingerprint.pb.raw -var file_waFingerprint_WAFingerprint_proto_rawDesc []byte +const file_waFingerprint_WAFingerprint_proto_rawDesc = "" + + "\n" + + "!waFingerprint/WAFingerprint.proto\x12\rWAFingerprint\"\x91\x02\n" + + "\x0fFingerprintData\x12\x1c\n" + + "\tpublicKey\x18\x01 \x01(\fR\tpublicKey\x12\"\n" + + "\fpnIdentifier\x18\x02 \x01(\fR\fpnIdentifier\x12$\n" + + "\rlidIdentifier\x18\x03 \x01(\fR\rlidIdentifier\x12.\n" + + "\x12usernameIdentifier\x18\x04 \x01(\fR\x12usernameIdentifier\x12<\n" + + "\vhostedState\x18\x05 \x01(\x0e2\x1a.WAFingerprint.HostedStateR\vhostedState\x12(\n" + + "\x0fhashedPublicKey\x18\x06 \x01(\fR\x0fhashedPublicKey\"\xc9\x01\n" + + "\x13CombinedFingerprint\x12\x18\n" + + "\aversion\x18\x01 \x01(\rR\aversion\x12J\n" + + "\x10localFingerprint\x18\x02 \x01(\v2\x1e.WAFingerprint.FingerprintDataR\x10localFingerprint\x12L\n" + + "\x11remoteFingerprint\x18\x03 \x01(\v2\x1e.WAFingerprint.FingerprintDataR\x11remoteFingerprint*#\n" + + "\vHostedState\x12\b\n" + + "\x04E2EE\x10\x00\x12\n" + + "\n" + + "\x06HOSTED\x10\x01B)Z'github.com/techwiz37/waSocket/proto/waFingerprint" var ( file_waFingerprint_WAFingerprint_proto_rawDescOnce sync.Once - file_waFingerprint_WAFingerprint_proto_rawDescData = file_waFingerprint_WAFingerprint_proto_rawDesc + file_waFingerprint_WAFingerprint_proto_rawDescData []byte ) func file_waFingerprint_WAFingerprint_proto_rawDescGZIP() []byte { file_waFingerprint_WAFingerprint_proto_rawDescOnce.Do(func() { - file_waFingerprint_WAFingerprint_proto_rawDescData = protoimpl.X.CompressGZIP(file_waFingerprint_WAFingerprint_proto_rawDescData) + file_waFingerprint_WAFingerprint_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waFingerprint_WAFingerprint_proto_rawDesc), len(file_waFingerprint_WAFingerprint_proto_rawDesc))) }) return file_waFingerprint_WAFingerprint_proto_rawDescData } @@ -267,7 +282,7 @@ func file_waFingerprint_WAFingerprint_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waFingerprint_WAFingerprint_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waFingerprint_WAFingerprint_proto_rawDesc), len(file_waFingerprint_WAFingerprint_proto_rawDesc)), NumEnums: 1, NumMessages: 2, NumExtensions: 0, @@ -279,7 +294,6 @@ func file_waFingerprint_WAFingerprint_proto_init() { MessageInfos: file_waFingerprint_WAFingerprint_proto_msgTypes, }.Build() File_waFingerprint_WAFingerprint_proto = out.File - file_waFingerprint_WAFingerprint_proto_rawDesc = nil file_waFingerprint_WAFingerprint_proto_goTypes = nil file_waFingerprint_WAFingerprint_proto_depIdxs = nil } diff --git a/proto/waFingerprint/WAFingerprint.pb.raw b/proto/waFingerprint/WAFingerprint.pb.raw deleted file mode 100644 index 737bff315f145b78649841df8eb48d8eca842506..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 610 zcmaiy&q~8U5Qj~zRi~}3<0XiQR>9Uo0zG?C8>xRlNd>{%wwX2y$!^$eEk1^iuiA5VP)$ZZa_bg)WI$Y_)2iR4VN=+8(&i(y=*=pnY2~;g3xCP~) p8wAZY1gP{M2hTyT>0EVQ&nD7K+0+|ze-<;HrzB^-Ss1^tQeR{K#{vKV diff --git a/proto/waHistorySync/WAWebProtobufsHistorySync.pb.go b/proto/waHistorySync/WAWebProtobufsHistorySync.pb.go index ae65017d..6a809b3c 100644 --- a/proto/waHistorySync/WAWebProtobufsHistorySync.pb.go +++ b/proto/waHistorySync/WAWebProtobufsHistorySync.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waHistorySync/WAWebProtobufsHistorySync.proto @@ -9,6 +9,7 @@ package waHistorySync import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -18,8 +19,6 @@ import ( waE2E "github.com/techwiz37/waSocket/proto/waE2E" waSyncAction "github.com/techwiz37/waSocket/proto/waSyncAction" waWeb "github.com/techwiz37/waSocket/proto/waWeb" - - _ "embed" ) const ( @@ -1489,6 +1488,7 @@ type GlobalSettings struct { IndividualNotificationSettings *NotificationSettings `protobuf:"bytes,17,opt,name=individualNotificationSettings" json:"individualNotificationSettings,omitempty"` GroupNotificationSettings *NotificationSettings `protobuf:"bytes,18,opt,name=groupNotificationSettings" json:"groupNotificationSettings,omitempty"` ChatLockSettings *waChatLockSettings.ChatLockSettings `protobuf:"bytes,19,opt,name=chatLockSettings" json:"chatLockSettings,omitempty"` + ChatDbLidMigrationTimestamp *int64 `protobuf:"varint,20,opt,name=chatDbLidMigrationTimestamp" json:"chatDbLidMigrationTimestamp,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1656,6 +1656,13 @@ func (x *GlobalSettings) GetChatLockSettings() *waChatLockSettings.ChatLockSetti return nil } +func (x *GlobalSettings) GetChatDbLidMigrationTimestamp() int64 { + if x != nil && x.ChatDbLidMigrationTimestamp != nil { + return *x.ChatDbLidMigrationTimestamp + } + return 0 +} + type AutoDownloadSettings struct { state protoimpl.MessageState `protogen:"open.v1"` DownloadImages *bool `protobuf:"varint,1,opt,name=downloadImages" json:"downloadImages,omitempty"` @@ -2046,17 +2053,219 @@ func (x *NotificationSettings) GetCallVibrate() string { var File_waHistorySync_WAWebProtobufsHistorySync_proto protoreflect.FileDescriptor -//go:embed WAWebProtobufsHistorySync.pb.raw -var file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDesc []byte +const file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDesc = "" + + "\n" + + "-waHistorySync/WAWebProtobufsHistorySync.proto\x12\x19WAWebProtobufsHistorySync\x1a\x1fwaSyncAction/WASyncAction.proto\x1a4waChatLockSettings/WAProtobufsChatLockSettings.proto\x1a\x1dwaE2E/WAWebProtobufsE2E.proto\x1a\x17waCommon/WACommon.proto\x1a\x1dwaWeb/WAWebProtobufsWeb.proto\"\x8c\v\n" + + "\vHistorySync\x12R\n" + + "\bsyncType\x18\x01 \x02(\x0e26.WAWebProtobufsHistorySync.HistorySync.HistorySyncTypeR\bsyncType\x12M\n" + + "\rconversations\x18\x02 \x03(\v2'.WAWebProtobufsHistorySync.ConversationR\rconversations\x12M\n" + + "\x10statusV3Messages\x18\x03 \x03(\v2!.WAWebProtobufsWeb.WebMessageInfoR\x10statusV3Messages\x12\x1e\n" + + "\n" + + "chunkOrder\x18\x05 \x01(\rR\n" + + "chunkOrder\x12\x1a\n" + + "\bprogress\x18\x06 \x01(\rR\bprogress\x12A\n" + + "\tpushnames\x18\a \x03(\v2#.WAWebProtobufsHistorySync.PushnameR\tpushnames\x12Q\n" + + "\x0eglobalSettings\x18\b \x01(\v2).WAWebProtobufsHistorySync.GlobalSettingsR\x0eglobalSettings\x12.\n" + + "\x12threadIDUserSecret\x18\t \x01(\fR\x12threadIDUserSecret\x128\n" + + "\x17threadDsTimeframeOffset\x18\n" + + " \x01(\rR\x17threadDsTimeframeOffset\x12R\n" + + "\x0erecentStickers\x18\v \x03(\v2*.WAWebProtobufsHistorySync.StickerMetadataR\x0erecentStickers\x12W\n" + + "\x10pastParticipants\x18\f \x03(\v2+.WAWebProtobufsHistorySync.PastParticipantsR\x10pastParticipants\x12C\n" + + "\x0ecallLogRecords\x18\r \x03(\v2\x1b.WASyncAction.CallLogRecordR\x0ecallLogRecords\x12c\n" + + "\x0faiWaitListState\x18\x0e \x01(\x0e29.WAWebProtobufsHistorySync.HistorySync.BotAIWaitListStateR\x0faiWaitListState\x12n\n" + + "\x18phoneNumberToLidMappings\x18\x0f \x03(\v22.WAWebProtobufsHistorySync.PhoneNumberToLIDMappingR\x18phoneNumberToLidMappings\x12.\n" + + "\x12companionMetaNonce\x18\x10 \x01(\tR\x12companionMetaNonce\x12R\n" + + "$shareableChatIdentifierEncryptionKey\x18\x11 \x01(\fR$shareableChatIdentifierEncryptionKey\x12>\n" + + "\baccounts\x18\x12 \x03(\v2\".WAWebProtobufsHistorySync.AccountR\baccounts\"7\n" + + "\x12BotAIWaitListState\x12\x0f\n" + + "\vIN_WAITLIST\x10\x00\x12\x10\n" + + "\fAI_AVAILABLE\x10\x01\"\x8a\x01\n" + + "\x0fHistorySyncType\x12\x15\n" + + "\x11INITIAL_BOOTSTRAP\x10\x00\x12\x15\n" + + "\x11INITIAL_STATUS_V3\x10\x01\x12\b\n" + + "\x04FULL\x10\x02\x12\n" + + "\n" + + "\x06RECENT\x10\x03\x12\r\n" + + "\tPUSH_NAME\x10\x04\x12\x15\n" + + "\x11NON_BLOCKING_DATA\x10\x05\x12\r\n" + + "\tON_DEMAND\x10\x06\"\x87\x14\n" + + "\fConversation\x12\x0e\n" + + "\x02ID\x18\x01 \x02(\tR\x02ID\x12E\n" + + "\bmessages\x18\x02 \x03(\v2).WAWebProtobufsHistorySync.HistorySyncMsgR\bmessages\x12\x16\n" + + "\x06newJID\x18\x03 \x01(\tR\x06newJID\x12\x16\n" + + "\x06oldJID\x18\x04 \x01(\tR\x06oldJID\x12*\n" + + "\x10lastMsgTimestamp\x18\x05 \x01(\x04R\x10lastMsgTimestamp\x12 \n" + + "\vunreadCount\x18\x06 \x01(\rR\vunreadCount\x12\x1a\n" + + "\breadOnly\x18\a \x01(\bR\breadOnly\x122\n" + + "\x14endOfHistoryTransfer\x18\b \x01(\bR\x14endOfHistoryTransfer\x120\n" + + "\x13ephemeralExpiration\x18\t \x01(\rR\x13ephemeralExpiration\x12<\n" + + "\x19ephemeralSettingTimestamp\x18\n" + + " \x01(\x03R\x19ephemeralSettingTimestamp\x12|\n" + + "\x18endOfHistoryTransferType\x18\v \x01(\x0e2@.WAWebProtobufsHistorySync.Conversation.EndOfHistoryTransferTypeR\x18endOfHistoryTransferType\x124\n" + + "\x15conversationTimestamp\x18\f \x01(\x04R\x15conversationTimestamp\x12\x12\n" + + "\x04name\x18\r \x01(\tR\x04name\x12\x14\n" + + "\x05pHash\x18\x0e \x01(\tR\x05pHash\x12\x18\n" + + "\anotSpam\x18\x0f \x01(\bR\anotSpam\x12\x1a\n" + + "\barchived\x18\x10 \x01(\bR\barchived\x12O\n" + + "\x10disappearingMode\x18\x11 \x01(\v2#.WAWebProtobufsE2E.DisappearingModeR\x10disappearingMode\x12.\n" + + "\x12unreadMentionCount\x18\x12 \x01(\rR\x12unreadMentionCount\x12&\n" + + "\x0emarkedAsUnread\x18\x13 \x01(\bR\x0emarkedAsUnread\x12M\n" + + "\vparticipant\x18\x14 \x03(\v2+.WAWebProtobufsHistorySync.GroupParticipantR\vparticipant\x12\x18\n" + + "\atcToken\x18\x15 \x01(\fR\atcToken\x12*\n" + + "\x10tcTokenTimestamp\x18\x16 \x01(\x04R\x10tcTokenTimestamp\x12<\n" + + "\x19contactPrimaryIdentityKey\x18\x17 \x01(\fR\x19contactPrimaryIdentityKey\x12\x16\n" + + "\x06pinned\x18\x18 \x01(\rR\x06pinned\x12 \n" + + "\vmuteEndTime\x18\x19 \x01(\x04R\vmuteEndTime\x12J\n" + + "\twallpaper\x18\x1a \x01(\v2,.WAWebProtobufsHistorySync.WallpaperSettingsR\twallpaper\x12T\n" + + "\x0fmediaVisibility\x18\x1b \x01(\x0e2*.WAWebProtobufsHistorySync.MediaVisibilityR\x0fmediaVisibility\x126\n" + + "\x16tcTokenSenderTimestamp\x18\x1c \x01(\x04R\x16tcTokenSenderTimestamp\x12\x1c\n" + + "\tsuspended\x18\x1d \x01(\bR\tsuspended\x12\x1e\n" + + "\n" + + "terminated\x18\x1e \x01(\bR\n" + + "terminated\x12\x1c\n" + + "\tcreatedAt\x18\x1f \x01(\x04R\tcreatedAt\x12\x1c\n" + + "\tcreatedBy\x18 \x01(\tR\tcreatedBy\x12 \n" + + "\vdescription\x18! \x01(\tR\vdescription\x12\x18\n" + + "\asupport\x18\" \x01(\bR\asupport\x12$\n" + + "\risParentGroup\x18# \x01(\bR\risParentGroup\x12$\n" + + "\rparentGroupID\x18% \x01(\tR\rparentGroupID\x12,\n" + + "\x11isDefaultSubgroup\x18$ \x01(\bR\x11isDefaultSubgroup\x12 \n" + + "\vdisplayName\x18& \x01(\tR\vdisplayName\x12\x14\n" + + "\x05pnJID\x18' \x01(\tR\x05pnJID\x12\x1e\n" + + "\n" + + "shareOwnPn\x18( \x01(\bR\n" + + "shareOwnPn\x124\n" + + "\x15pnhDuplicateLidThread\x18) \x01(\bR\x15pnhDuplicateLidThread\x12\x16\n" + + "\x06lidJID\x18* \x01(\tR\x06lidJID\x12\x1a\n" + + "\busername\x18+ \x01(\tR\busername\x12$\n" + + "\rlidOriginType\x18, \x01(\tR\rlidOriginType\x12$\n" + + "\rcommentsCount\x18- \x01(\rR\rcommentsCount\x12\x16\n" + + "\x06locked\x18. \x01(\bR\x06locked\x12e\n" + + "\x15systemMessageToInsert\x18/ \x01(\x0e2/.WAWebProtobufsHistorySync.PrivacySystemMessageR\x15systemMessageToInsert\x12*\n" + + "\x10capiCreatedGroup\x180 \x01(\bR\x10capiCreatedGroup\x12\x1e\n" + + "\n" + + "accountLid\x181 \x01(\tR\n" + + "accountLid\x12\"\n" + + "\flimitSharing\x182 \x01(\bR\flimitSharing\x12B\n" + + "\x1climitSharingSettingTimestamp\x183 \x01(\x03R\x1climitSharingSettingTimestamp\x12P\n" + + "\x13limitSharingTrigger\x184 \x01(\x0e2\x1e.WACommon.LimitSharing.TriggerR\x13limitSharingTrigger\x12<\n" + + "\x19limitSharingInitiatedByMe\x185 \x01(\bR\x19limitSharingInitiatedByMe\"\xbc\x01\n" + + "\x18EndOfHistoryTransferType\x120\n" + + ",COMPLETE_BUT_MORE_MESSAGES_REMAIN_ON_PRIMARY\x10\x00\x122\n" + + ".COMPLETE_AND_NO_MORE_MESSAGE_REMAIN_ON_PRIMARY\x10\x01\x12:\n" + + "6COMPLETE_ON_DEMAND_SYNC_BUT_MORE_MSG_REMAIN_ON_PRIMARY\x10\x02\"\xa2\x01\n" + + "\x10GroupParticipant\x12\x18\n" + + "\auserJID\x18\x01 \x02(\tR\auserJID\x12D\n" + + "\x04rank\x18\x02 \x01(\x0e20.WAWebProtobufsHistorySync.GroupParticipant.RankR\x04rank\".\n" + + "\x04Rank\x12\v\n" + + "\aREGULAR\x10\x00\x12\t\n" + + "\x05ADMIN\x10\x01\x12\x0e\n" + + "\n" + + "SUPERADMIN\x10\x02\"\xc5\x01\n" + + "\x0fPastParticipant\x12\x18\n" + + "\auserJID\x18\x01 \x01(\tR\auserJID\x12X\n" + + "\vleaveReason\x18\x02 \x01(\x0e26.WAWebProtobufsHistorySync.PastParticipant.LeaveReasonR\vleaveReason\x12\x18\n" + + "\aleaveTS\x18\x03 \x01(\x04R\aleaveTS\"$\n" + + "\vLeaveReason\x12\b\n" + + "\x04LEFT\x10\x00\x12\v\n" + + "\aREMOVED\x10\x01\"G\n" + + "\x17PhoneNumberToLIDMapping\x12\x14\n" + + "\x05pnJID\x18\x01 \x01(\tR\x05pnJID\x12\x16\n" + + "\x06lidJID\x18\x02 \x01(\tR\x06lidJID\"\x87\x01\n" + + "\aAccount\x12\x10\n" + + "\x03lid\x18\x01 \x01(\tR\x03lid\x12\x1a\n" + + "\busername\x18\x02 \x01(\tR\busername\x12 \n" + + "\vcountryCode\x18\x03 \x01(\tR\vcountryCode\x12,\n" + + "\x11isUsernameDeleted\x18\x04 \x01(\bR\x11isUsernameDeleted\"m\n" + + "\x0eHistorySyncMsg\x12;\n" + + "\amessage\x18\x01 \x01(\v2!.WAWebProtobufsWeb.WebMessageInfoR\amessage\x12\x1e\n" + + "\n" + + "msgOrderID\x18\x02 \x01(\x04R\n" + + "msgOrderID\"6\n" + + "\bPushname\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\tR\x02ID\x12\x1a\n" + + "\bpushname\x18\x02 \x01(\tR\bpushname\"I\n" + + "\x11WallpaperSettings\x12\x1a\n" + + "\bfilename\x18\x01 \x01(\tR\bfilename\x12\x18\n" + + "\aopacity\x18\x02 \x01(\rR\aopacity\"\x97\f\n" + + "\x0eGlobalSettings\x12^\n" + + "\x13lightThemeWallpaper\x18\x01 \x01(\v2,.WAWebProtobufsHistorySync.WallpaperSettingsR\x13lightThemeWallpaper\x12T\n" + + "\x0fmediaVisibility\x18\x02 \x01(\x0e2*.WAWebProtobufsHistorySync.MediaVisibilityR\x0fmediaVisibility\x12\\\n" + + "\x12darkThemeWallpaper\x18\x03 \x01(\v2,.WAWebProtobufsHistorySync.WallpaperSettingsR\x12darkThemeWallpaper\x12[\n" + + "\x10autoDownloadWiFi\x18\x04 \x01(\v2/.WAWebProtobufsHistorySync.AutoDownloadSettingsR\x10autoDownloadWiFi\x12c\n" + + "\x14autoDownloadCellular\x18\x05 \x01(\v2/.WAWebProtobufsHistorySync.AutoDownloadSettingsR\x14autoDownloadCellular\x12a\n" + + "\x13autoDownloadRoaming\x18\x06 \x01(\v2/.WAWebProtobufsHistorySync.AutoDownloadSettingsR\x13autoDownloadRoaming\x12N\n" + + "\"showIndividualNotificationsPreview\x18\a \x01(\bR\"showIndividualNotificationsPreview\x12D\n" + + "\x1dshowGroupNotificationsPreview\x18\b \x01(\bR\x1dshowGroupNotificationsPreview\x12:\n" + + "\x18disappearingModeDuration\x18\t \x01(\x05R\x18disappearingModeDuration\x12<\n" + + "\x19disappearingModeTimestamp\x18\n" + + " \x01(\x03R\x19disappearingModeTimestamp\x12]\n" + + "\x12avatarUserSettings\x18\v \x01(\v2-.WAWebProtobufsHistorySync.AvatarUserSettingsR\x12avatarUserSettings\x12\x1a\n" + + "\bfontSize\x18\f \x01(\x05R\bfontSize\x124\n" + + "\x15securityNotifications\x18\r \x01(\bR\x15securityNotifications\x12.\n" + + "\x12autoUnarchiveChats\x18\x0e \x01(\bR\x12autoUnarchiveChats\x12*\n" + + "\x10videoQualityMode\x18\x0f \x01(\x05R\x10videoQualityMode\x12*\n" + + "\x10photoQualityMode\x18\x10 \x01(\x05R\x10photoQualityMode\x12w\n" + + "\x1eindividualNotificationSettings\x18\x11 \x01(\v2/.WAWebProtobufsHistorySync.NotificationSettingsR\x1eindividualNotificationSettings\x12m\n" + + "\x19groupNotificationSettings\x18\x12 \x01(\v2/.WAWebProtobufsHistorySync.NotificationSettingsR\x19groupNotificationSettings\x12Y\n" + + "\x10chatLockSettings\x18\x13 \x01(\v2-.WAProtobufsChatLockSettings.ChatLockSettingsR\x10chatLockSettings\x12@\n" + + "\x1bchatDbLidMigrationTimestamp\x18\x14 \x01(\x03R\x1bchatDbLidMigrationTimestamp\"\xb8\x01\n" + + "\x14AutoDownloadSettings\x12&\n" + + "\x0edownloadImages\x18\x01 \x01(\bR\x0edownloadImages\x12$\n" + + "\rdownloadAudio\x18\x02 \x01(\bR\rdownloadAudio\x12$\n" + + "\rdownloadVideo\x18\x03 \x01(\bR\rdownloadVideo\x12,\n" + + "\x11downloadDocuments\x18\x04 \x01(\bR\x11downloadDocuments\"\xf1\x02\n" + + "\x0fStickerMetadata\x12\x10\n" + + "\x03URL\x18\x01 \x01(\tR\x03URL\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x02 \x01(\fR\n" + + "fileSHA256\x12$\n" + + "\rfileEncSHA256\x18\x03 \x01(\fR\rfileEncSHA256\x12\x1a\n" + + "\bmediaKey\x18\x04 \x01(\fR\bmediaKey\x12\x1a\n" + + "\bmimetype\x18\x05 \x01(\tR\bmimetype\x12\x16\n" + + "\x06height\x18\x06 \x01(\rR\x06height\x12\x14\n" + + "\x05width\x18\a \x01(\rR\x05width\x12\x1e\n" + + "\n" + + "directPath\x18\b \x01(\tR\n" + + "directPath\x12\x1e\n" + + "\n" + + "fileLength\x18\t \x01(\x04R\n" + + "fileLength\x12\x16\n" + + "\x06weight\x18\n" + + " \x01(\x02R\x06weight\x12,\n" + + "\x11lastStickerSentTS\x18\v \x01(\x03R\x11lastStickerSentTS\x12\x1a\n" + + "\bisLottie\x18\f \x01(\bR\bisLottie\"\x86\x01\n" + + "\x10PastParticipants\x12\x1a\n" + + "\bgroupJID\x18\x01 \x01(\tR\bgroupJID\x12V\n" + + "\x10pastParticipants\x18\x02 \x03(\v2*.WAWebProtobufsHistorySync.PastParticipantR\x10pastParticipants\"D\n" + + "\x12AvatarUserSettings\x12\x12\n" + + "\x04FBID\x18\x01 \x01(\tR\x04FBID\x12\x1a\n" + + "\bpassword\x18\x02 \x01(\tR\bpassword\"\x8c\x02\n" + + "\x14NotificationSettings\x12&\n" + + "\x0emessageVibrate\x18\x01 \x01(\tR\x0emessageVibrate\x12\"\n" + + "\fmessagePopup\x18\x02 \x01(\tR\fmessagePopup\x12\"\n" + + "\fmessageLight\x18\x03 \x01(\tR\fmessageLight\x12:\n" + + "\x18lowPriorityNotifications\x18\x04 \x01(\bR\x18lowPriorityNotifications\x12&\n" + + "\x0ereactionsMuted\x18\x05 \x01(\bR\x0ereactionsMuted\x12 \n" + + "\vcallVibrate\x18\x06 \x01(\tR\vcallVibrate*/\n" + + "\x0fMediaVisibility\x12\v\n" + + "\aDEFAULT\x10\x00\x12\a\n" + + "\x03OFF\x10\x01\x12\x06\n" + + "\x02ON\x10\x02*E\n" + + "\x14PrivacySystemMessage\x12\f\n" + + "\bE2EE_MSG\x10\x01\x12\x0e\n" + + "\n" + + "NE2EE_SELF\x10\x02\x12\x0f\n" + + "\vNE2EE_OTHER\x10\x03B)Z'github.com/techwiz37/waSocket/proto/waHistorySync" var ( file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDescOnce sync.Once - file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDescData = file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDesc + file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDescData []byte ) func file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDescGZIP() []byte { file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDescOnce.Do(func() { - file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDescData = protoimpl.X.CompressGZIP(file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDescData) + file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDesc), len(file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDesc))) }) return file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDescData } @@ -2142,7 +2351,7 @@ func file_waHistorySync_WAWebProtobufsHistorySync_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDesc), len(file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDesc)), NumEnums: 7, NumMessages: 15, NumExtensions: 0, @@ -2154,7 +2363,6 @@ func file_waHistorySync_WAWebProtobufsHistorySync_proto_init() { MessageInfos: file_waHistorySync_WAWebProtobufsHistorySync_proto_msgTypes, }.Build() File_waHistorySync_WAWebProtobufsHistorySync_proto = out.File - file_waHistorySync_WAWebProtobufsHistorySync_proto_rawDesc = nil file_waHistorySync_WAWebProtobufsHistorySync_proto_goTypes = nil file_waHistorySync_WAWebProtobufsHistorySync_proto_depIdxs = nil } diff --git a/proto/waHistorySync/WAWebProtobufsHistorySync.pb.raw b/proto/waHistorySync/WAWebProtobufsHistorySync.pb.raw deleted file mode 100644 index 8603dc6f9c01b4fa3ee892bcb747228a2b2c48cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7755 zcmbtZ>vG%16)ttL$)!ZmYdMCU#BmrmaU6$AnZ&(Lr;td=OnA$JlA7K)D_})p3<4Mc z6w6M3H#40)MW3QS`nQkJ2k9I1oCQFFAjl-{56*DUZEt74a{>8y%3qp(;CM4_X6r|n z>ZQ2qc~0P5O|Ja}r|Ke+K3FU8@SQ0~6RIAVjtzzugHZS3XH$MM;z7&NUuhx;Onc~q z*nF}yFVcE@${V#tYGFW$*!RJxGakzs!#@i>*h)$dC?UJ@ZIKic+oO!+eOP^e<_abE zc`xgFXj`?_P_2+!wuCcd)uc>8Iw_Q3|jCkc7BtPSSMe!zo? zfAMKs_&y&BU)h!x-%VM>ZNe{-YTDNhTT!Kt2+>Cq`&HL7gs1F2&OO~{2?~8k@^I%v z52jLXN$z}1RZ?&#{>bKISi^0(hWAoyNFGryl4T1m`V}b+E$50`u`eijn50godn|)Pe@5WYH+v#3k`=CVRhS#yd zTS}hLg&k;tslS2?R*Lcvo^4osB-$1MH+aBV$^yM4WtaOwk9%O#bh#b)%AU0P(FUu% zlnPrhLQhCZ=a$uShD_*=XZXs#H2Wr)O+3<*qzp@`P@Nob^OBoE3(!IXHxx<<&Zt!T z`G&%Ifop%_k2rYPl_e0ang+Old2I@>Ve8(^#aI5Nm??Lp z%Y83d`fHNsy6#Nyx~be_Wy2oTP?XJeDnBK3^=RnrM+RH&lZ8yq0sN3mw2FI=L$(PN}*`TiW)$%S%0kz&} ztDSoJR^^*RvX{g@S|VG`x;Tz!fP=|j<7#1`f7J44Hv=SK37Kl3ydx)C5E9(unerI81r~FUXL#y{@O96WaZq_z@{=U=8Gqus zju$8uIdwdwPsqOMgRg;mUAo<>2q?&^y}i9Ppm+jTn*8U zl_%2PDnqW?^j(Y3ItUZ*ON&K#(lJS*g^i)%1IgQUaeyZ&bAj&E?%B#yX+A+gv~ulH zed1cC4(AD}Okd`v%7;=kn~5H6nKBMNlaoawM4$kI7p}nU#q6Dd=pojWV=H?j~*Y;U0znDxZOBsrCpCCMru?iN#bS zDVC**pqRASw9UZ8CwV+;3*~dUjr9VRf8~g>F1kX-@cg9P?zI~I#^Ct8KWKMZW6*AB zntImI1`N_MNE;zB>#=5AWnV+?S0mNA2IOjkPIpNuLnlXnL0-&t=2_lA`?__DblB1AjyHCQ;_s{9*r=Tzmjyhe1!`5J#qik9Fvf(h;zM%FfC7# zLOjQU9?`EZEP8t?WlB+Ybw^hN4q4}K$IE#L)jw%=flPC zumq*@g5=}w#=K_1ePhjn9h9i^AvFtZKCU#$ot2~l6|PN7NR$tcZ$8GWc3iGwc7dzd zXYsJ|pCTzOcSh)+5R--UfZczzr0 zN$kxu6_&S~g&>|N=^Cp(Nff)gY%L#yXpX;+`2L~Uhc5Z? zhG3(vD6tGf^1(y-qnUpZ(Cf=R-DUafXp9M@FZ78AFMjFdWF?!23@VF>)g$`Ixg8a# z*rxJjotuXhtZ*>nf{PZ;S8&%blPq7c`rTzKbd-hmT(BgI%`%Wp)9I8vGBcfMeu&s4 z+w8WUg&9VFpfWacqQdCU&V>xwVn2rn_dA3YUN?o8Q$Pk>6l0*!`v8}qJPh=et z2jLY)<-c3xAl2{2wBVez;>=>+n*-ztxcZQSvrWU<5OcOzG{SSm24i$sQ0fPe%OSpO zvsDJ}$Mjncd^`*B0vb{AxbinhoKuOTj|%cNgqgEEfOt$VGCnwjt<_D9i_{dW-y14* zLRaAr`*5enGJnTa$p5%Hm;3${K1$3Jq-b3Ec8eTlysf;w zW>wyFkK~~d2}PfF78W)gIn)}hQ)uMFcY|=;?Z0fW^7iqEzx!b5RL6W$y*7`g7)-{( OnI6fn!ADEqj{gTmGssQ= diff --git a/proto/waHistorySync/WAWebProtobufsHistorySync.proto b/proto/waHistorySync/WAWebProtobufsHistorySync.proto index 240ade67..3cf6f29e 100644 --- a/proto/waHistorySync/WAWebProtobufsHistorySync.proto +++ b/proto/waHistorySync/WAWebProtobufsHistorySync.proto @@ -186,6 +186,7 @@ message GlobalSettings { optional NotificationSettings individualNotificationSettings = 17; optional NotificationSettings groupNotificationSettings = 18; optional WAProtobufsChatLockSettings.ChatLockSettings chatLockSettings = 19; + optional int64 chatDbLidMigrationTimestamp = 20; } message AutoDownloadSettings { diff --git a/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.pb.go b/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.pb.go index 868c89c0..4295ef89 100644 --- a/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.pb.go +++ b/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.proto @@ -9,11 +9,10 @@ package waLidMigrationSyncPayload import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -137,17 +136,25 @@ func (x *LIDMigrationMappingSyncPayload) GetChatDbMigrationTimestamp() uint64 { var File_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto protoreflect.FileDescriptor -//go:embed WAWebProtobufLidMigrationSyncPayload.pb.raw -var file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDesc []byte +const file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDesc = "" + + "\n" + + "DwaLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.proto\x12$WAWebProtobufLidMigrationSyncPayload\"e\n" + + "\x13LIDMigrationMapping\x12\x0e\n" + + "\x02pn\x18\x01 \x02(\x04R\x02pn\x12 \n" + + "\vassignedLid\x18\x02 \x02(\x04R\vassignedLid\x12\x1c\n" + + "\tlatestLid\x18\x03 \x01(\x04R\tlatestLid\"\xc1\x01\n" + + "\x1eLIDMigrationMappingSyncPayload\x12c\n" + + "\x0fpnToLidMappings\x18\x01 \x03(\v29.WAWebProtobufLidMigrationSyncPayload.LIDMigrationMappingR\x0fpnToLidMappings\x12:\n" + + "\x18chatDbMigrationTimestamp\x18\x02 \x01(\x04R\x18chatDbMigrationTimestampB5Z3github.com/techwiz37/waSocket/proto/waLidMigrationSyncPayload" var ( file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDescOnce sync.Once - file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDescData = file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDesc + file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDescData []byte ) func file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDescGZIP() []byte { file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDescOnce.Do(func() { - file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDescData = protoimpl.X.CompressGZIP(file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDescData) + file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDesc), len(file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDesc))) }) return file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDescData } @@ -175,7 +182,7 @@ func file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_i out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDesc), len(file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -186,7 +193,6 @@ func file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_i MessageInfos: file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_msgTypes, }.Build() File_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto = out.File - file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_rawDesc = nil file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_goTypes = nil file_waLidMigrationSyncPayload_WAWebProtobufLidMigrationSyncPayload_proto_depIdxs = nil } diff --git a/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.pb.raw b/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.pb.raw deleted file mode 100644 index 288c4961..00000000 --- a/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.pb.raw +++ /dev/null @@ -1,9 +0,0 @@ - -DwaLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.proto$WAWebProtobufLidMigrationSyncPayload"e -LIDMigrationMapping -pn (Rpn - assignedLid (R assignedLid - latestLid (R latestLid"Á -LIDMigrationMappingSyncPayloadc -pnToLidMappings ( 29.WAWebProtobufLidMigrationSyncPayload.LIDMigrationMappingRpnToLidMappings: -chatDbMigrationTimestamp (RchatDbMigrationTimestampB5Z3go.mau.fi/whatsmeow/proto/waLidMigrationSyncPayload \ No newline at end of file diff --git a/proto/waMediaEntryData/WAMediaEntryData.pb.go b/proto/waMediaEntryData/WAMediaEntryData.pb.go index 4e966bdb..27e3695b 100644 --- a/proto/waMediaEntryData/WAMediaEntryData.pb.go +++ b/proto/waMediaEntryData/WAMediaEntryData.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waMediaEntryData/WAMediaEntryData.proto @@ -9,11 +9,10 @@ package waMediaEntryData import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -333,17 +332,56 @@ func (x *MediaEntry_DownloadableThumbnail) GetObjectID() string { var File_waMediaEntryData_WAMediaEntryData_proto protoreflect.FileDescriptor -//go:embed WAMediaEntryData.pb.raw -var file_waMediaEntryData_WAMediaEntryData_proto_rawDesc []byte +const file_waMediaEntryData_WAMediaEntryData_proto_rawDesc = "" + + "\n" + + "'waMediaEntryData/WAMediaEntryData.proto\x12\x10WAMediaEntryData\"\xa1\b\n" + + "\n" + + "MediaEntry\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x01 \x01(\fR\n" + + "fileSHA256\x12\x1a\n" + + "\bmediaKey\x18\x02 \x01(\fR\bmediaKey\x12$\n" + + "\rfileEncSHA256\x18\x03 \x01(\fR\rfileEncSHA256\x12\x1e\n" + + "\n" + + "directPath\x18\x04 \x01(\tR\n" + + "directPath\x12,\n" + + "\x11mediaKeyTimestamp\x18\x05 \x01(\x03R\x11mediaKeyTimestamp\x12(\n" + + "\x0fserverMediaType\x18\x06 \x01(\tR\x0fserverMediaType\x12 \n" + + "\vuploadToken\x18\a \x01(\fR\vuploadToken\x12.\n" + + "\x12validatedTimestamp\x18\b \x01(\fR\x12validatedTimestamp\x12\x18\n" + + "\asidecar\x18\t \x01(\fR\asidecar\x12\x1a\n" + + "\bobjectID\x18\n" + + " \x01(\tR\bobjectID\x12\x12\n" + + "\x04FBID\x18\v \x01(\tR\x04FBID\x12h\n" + + "\x15downloadableThumbnail\x18\f \x01(\v22.WAMediaEntryData.MediaEntry.DownloadableThumbnailR\x15downloadableThumbnail\x12\x16\n" + + "\x06handle\x18\r \x01(\tR\x06handle\x12\x1a\n" + + "\bfilename\x18\x0e \x01(\tR\bfilename\x12k\n" + + "\x16progressiveJPEGDetails\x18\x0f \x01(\v23.WAMediaEntryData.MediaEntry.ProgressiveJpegDetailsR\x16progressiveJPEGDetails\x12\x12\n" + + "\x04size\x18\x10 \x01(\x03R\x04size\x12B\n" + + "\x1clastDownloadAttemptTimestamp\x18\x11 \x01(\x03R\x1clastDownloadAttemptTimestamp\x1aT\n" + + "\x16ProgressiveJpegDetails\x12 \n" + + "\vscanLengths\x18\x01 \x03(\rR\vscanLengths\x12\x18\n" + + "\asidecar\x18\x02 \x01(\fR\asidecar\x1a\xe3\x01\n" + + "\x15DownloadableThumbnail\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x01 \x01(\fR\n" + + "fileSHA256\x12$\n" + + "\rfileEncSHA256\x18\x02 \x01(\fR\rfileEncSHA256\x12\x1e\n" + + "\n" + + "directPath\x18\x03 \x01(\tR\n" + + "directPath\x12\x1a\n" + + "\bmediaKey\x18\x04 \x01(\fR\bmediaKey\x12,\n" + + "\x11mediaKeyTimestamp\x18\x05 \x01(\x03R\x11mediaKeyTimestamp\x12\x1a\n" + + "\bobjectID\x18\x06 \x01(\tR\bobjectIDB,Z*github.com/techwiz37/waSocket/proto/waMediaEntryData" var ( file_waMediaEntryData_WAMediaEntryData_proto_rawDescOnce sync.Once - file_waMediaEntryData_WAMediaEntryData_proto_rawDescData = file_waMediaEntryData_WAMediaEntryData_proto_rawDesc + file_waMediaEntryData_WAMediaEntryData_proto_rawDescData []byte ) func file_waMediaEntryData_WAMediaEntryData_proto_rawDescGZIP() []byte { file_waMediaEntryData_WAMediaEntryData_proto_rawDescOnce.Do(func() { - file_waMediaEntryData_WAMediaEntryData_proto_rawDescData = protoimpl.X.CompressGZIP(file_waMediaEntryData_WAMediaEntryData_proto_rawDescData) + file_waMediaEntryData_WAMediaEntryData_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waMediaEntryData_WAMediaEntryData_proto_rawDesc), len(file_waMediaEntryData_WAMediaEntryData_proto_rawDesc))) }) return file_waMediaEntryData_WAMediaEntryData_proto_rawDescData } @@ -373,7 +411,7 @@ func file_waMediaEntryData_WAMediaEntryData_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waMediaEntryData_WAMediaEntryData_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waMediaEntryData_WAMediaEntryData_proto_rawDesc), len(file_waMediaEntryData_WAMediaEntryData_proto_rawDesc)), NumEnums: 0, NumMessages: 3, NumExtensions: 0, @@ -384,7 +422,6 @@ func file_waMediaEntryData_WAMediaEntryData_proto_init() { MessageInfos: file_waMediaEntryData_WAMediaEntryData_proto_msgTypes, }.Build() File_waMediaEntryData_WAMediaEntryData_proto = out.File - file_waMediaEntryData_WAMediaEntryData_proto_rawDesc = nil file_waMediaEntryData_WAMediaEntryData_proto_goTypes = nil file_waMediaEntryData_WAMediaEntryData_proto_depIdxs = nil } diff --git a/proto/waMediaEntryData/WAMediaEntryData.pb.raw b/proto/waMediaEntryData/WAMediaEntryData.pb.raw deleted file mode 100644 index cee62248..00000000 --- a/proto/waMediaEntryData/WAMediaEntryData.pb.raw +++ /dev/null @@ -1,40 +0,0 @@ - -'waMediaEntryData/WAMediaEntryData.protoWAMediaEntryData"¡ - -MediaEntry - -fileSHA256 ( R -fileSHA256 -mediaKey ( RmediaKey$ - fileEncSHA256 ( R fileEncSHA256 - -directPath ( R -directPath, -mediaKeyTimestamp (RmediaKeyTimestamp( -serverMediaType ( RserverMediaType - uploadToken ( R uploadToken. -validatedTimestamp ( RvalidatedTimestamp -sidecar ( Rsidecar -objectID - ( RobjectID -FBID ( RFBIDh -downloadableThumbnail ( 22.WAMediaEntryData.MediaEntry.DownloadableThumbnailRdownloadableThumbnail -handle ( Rhandle -filename ( Rfilenamek -progressiveJPEGDetails ( 23.WAMediaEntryData.MediaEntry.ProgressiveJpegDetailsRprogressiveJPEGDetails -size (RsizeB -lastDownloadAttemptTimestamp (RlastDownloadAttemptTimestampT -ProgressiveJpegDetails - scanLengths ( R scanLengths -sidecar ( Rsidecarã -DownloadableThumbnail - -fileSHA256 ( R -fileSHA256$ - fileEncSHA256 ( R fileEncSHA256 - -directPath ( R -directPath -mediaKey ( RmediaKey, -mediaKeyTimestamp (RmediaKeyTimestamp -objectID ( RobjectIDB,Z*go.mau.fi/whatsmeow/proto/waMediaEntryData \ No newline at end of file diff --git a/proto/waMediaTransport/WAMediaTransport.pb.go b/proto/waMediaTransport/WAMediaTransport.pb.go index efc6afcc..d1cb4dfb 100644 --- a/proto/waMediaTransport/WAMediaTransport.pb.go +++ b/proto/waMediaTransport/WAMediaTransport.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waMediaTransport/WAMediaTransport.proto @@ -9,13 +9,12 @@ package waMediaTransport import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" waCommon "github.com/techwiz37/waSocket/proto/waCommon" - - _ "embed" ) const ( @@ -1094,6 +1093,7 @@ type VideoTransport_Ancillary struct { Sidecar []byte `protobuf:"bytes,6,opt,name=sidecar" json:"sidecar,omitempty"` GifAttribution *VideoTransport_Ancillary_Attribution `protobuf:"varint,7,opt,name=gifAttribution,enum=WAMediaTransport.VideoTransport_Ancillary_Attribution" json:"gifAttribution,omitempty"` AccessibilityLabel *string `protobuf:"bytes,8,opt,name=accessibilityLabel" json:"accessibilityLabel,omitempty"` + IsHd *bool `protobuf:"varint,9,opt,name=isHd" json:"isHd,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1184,6 +1184,13 @@ func (x *VideoTransport_Ancillary) GetAccessibilityLabel() string { return "" } +func (x *VideoTransport_Ancillary) GetIsHd() bool { + if x != nil && x.IsHd != nil { + return *x.IsHd + } + return false +} + type VideoTransport_Integral struct { state protoimpl.MessageState `protogen:"open.v1"` Transport *WAMediaTransport `protobuf:"bytes,1,opt,name=transport" json:"transport,omitempty"` @@ -1860,17 +1867,164 @@ func (*ContactTransport_Integral_DownloadableVcard) isContactTransport_Integral_ var File_waMediaTransport_WAMediaTransport_proto protoreflect.FileDescriptor -//go:embed WAMediaTransport.pb.raw -var file_waMediaTransport_WAMediaTransport_proto_rawDesc []byte +const file_waMediaTransport_WAMediaTransport_proto_rawDesc = "" + + "\n" + + "'waMediaTransport/WAMediaTransport.proto\x12\x10WAMediaTransport\x1a\x17waCommon/WACommon.proto\"\xfb\b\n" + + "\x10WAMediaTransport\x12G\n" + + "\bintegral\x18\x01 \x01(\v2+.WAMediaTransport.WAMediaTransport.IntegralR\bintegral\x12J\n" + + "\tancillary\x18\x02 \x01(\v2,.WAMediaTransport.WAMediaTransport.AncillaryR\tancillary\x1a\x94\x06\n" + + "\tAncillary\x12\x1e\n" + + "\n" + + "fileLength\x18\x01 \x01(\x04R\n" + + "fileLength\x12\x1a\n" + + "\bmimetype\x18\x02 \x01(\tR\bmimetype\x12T\n" + + "\tthumbnail\x18\x03 \x01(\v26.WAMediaTransport.WAMediaTransport.Ancillary.ThumbnailR\tthumbnail\x12\x1a\n" + + "\bobjectID\x18\x04 \x01(\tR\bobjectID\x1a\xd8\x04\n" + + "\tThumbnail\x12$\n" + + "\rJPEGThumbnail\x18\x01 \x01(\fR\rJPEGThumbnail\x12\x82\x01\n" + + "\x15downloadableThumbnail\x18\x02 \x01(\v2L.WAMediaTransport.WAMediaTransport.Ancillary.Thumbnail.DownloadableThumbnailR\x15downloadableThumbnail\x12&\n" + + "\x0ethumbnailWidth\x18\x03 \x01(\rR\x0ethumbnailWidth\x12(\n" + + "\x0fthumbnailHeight\x18\x04 \x01(\rR\x0fthumbnailHeight\x1a\xcd\x02\n" + + "\x15DownloadableThumbnail\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x01 \x01(\fR\n" + + "fileSHA256\x12$\n" + + "\rfileEncSHA256\x18\x02 \x01(\fR\rfileEncSHA256\x12\x1e\n" + + "\n" + + "directPath\x18\x03 \x01(\tR\n" + + "directPath\x12\x1a\n" + + "\bmediaKey\x18\x04 \x01(\fR\bmediaKey\x12,\n" + + "\x11mediaKeyTimestamp\x18\x05 \x01(\x03R\x11mediaKeyTimestamp\x12\x1a\n" + + "\bobjectID\x18\x06 \x01(\tR\bobjectID\x124\n" + + "\x15thumbnailScansSidecar\x18\a \x01(\fR\x15thumbnailScansSidecar\x122\n" + + "\x14thumbnailScanLengths\x18\b \x03(\rR\x14thumbnailScanLengths\x1a\xba\x01\n" + + "\bIntegral\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x01 \x01(\fR\n" + + "fileSHA256\x12\x1a\n" + + "\bmediaKey\x18\x02 \x01(\fR\bmediaKey\x12$\n" + + "\rfileEncSHA256\x18\x03 \x01(\fR\rfileEncSHA256\x12\x1e\n" + + "\n" + + "directPath\x18\x04 \x01(\tR\n" + + "directPath\x12,\n" + + "\x11mediaKeyTimestamp\x18\x05 \x01(\x03R\x11mediaKeyTimestamp\"\x88\x05\n" + + "\x0eImageTransport\x12E\n" + + "\bintegral\x18\x01 \x01(\v2).WAMediaTransport.ImageTransport.IntegralR\bintegral\x12H\n" + + "\tancillary\x18\x02 \x01(\v2*.WAMediaTransport.ImageTransport.AncillaryR\tancillary\x1a\x96\x03\n" + + "\tAncillary\x12\x16\n" + + "\x06height\x18\x01 \x01(\rR\x06height\x12\x14\n" + + "\x05width\x18\x02 \x01(\rR\x05width\x12\"\n" + + "\fscansSidecar\x18\x03 \x01(\fR\fscansSidecar\x12 \n" + + "\vscanLengths\x18\x04 \x03(\rR\vscanLengths\x122\n" + + "\x14midQualityFileSHA256\x18\x05 \x01(\fR\x14midQualityFileSHA256\x12I\n" + + "\x06hdType\x18\x06 \x01(\x0e21.WAMediaTransport.ImageTransport.Ancillary.HdTypeR\x06hdType\x128\n" + + "\x15memoriesConceptScores\x18\a \x03(\x02B\x02\x10\x01R\x15memoriesConceptScores\x122\n" + + "\x12memoriesConceptIDs\x18\b \x03(\rB\x02\x10\x01R\x12memoriesConceptIDs\"(\n" + + "\x06HdType\x12\b\n" + + "\x04NONE\x10\x00\x12\t\n" + + "\x05LQ_4K\x10\x01\x12\t\n" + + "\x05HQ_4K\x10\x02\x1aL\n" + + "\bIntegral\x12@\n" + + "\ttransport\x18\x01 \x01(\v2\".WAMediaTransport.WAMediaTransportR\ttransport\"\x85\x05\n" + + "\x0eVideoTransport\x12E\n" + + "\bintegral\x18\x01 \x01(\v2).WAMediaTransport.VideoTransport.IntegralR\bintegral\x12H\n" + + "\tancillary\x18\x02 \x01(\v2*.WAMediaTransport.VideoTransport.AncillaryR\tancillary\x1a\x93\x03\n" + + "\tAncillary\x12\x18\n" + + "\aseconds\x18\x01 \x01(\rR\aseconds\x12/\n" + + "\acaption\x18\x02 \x01(\v2\x15.WACommon.MessageTextR\acaption\x12 \n" + + "\vgifPlayback\x18\x03 \x01(\bR\vgifPlayback\x12\x16\n" + + "\x06height\x18\x04 \x01(\rR\x06height\x12\x14\n" + + "\x05width\x18\x05 \x01(\rR\x05width\x12\x18\n" + + "\asidecar\x18\x06 \x01(\fR\asidecar\x12^\n" + + "\x0egifAttribution\x18\a \x01(\x0e26.WAMediaTransport.VideoTransport.Ancillary.AttributionR\x0egifAttribution\x12.\n" + + "\x12accessibilityLabel\x18\b \x01(\tR\x12accessibilityLabel\x12\x12\n" + + "\x04isHd\x18\t \x01(\bR\x04isHd\"-\n" + + "\vAttribution\x12\b\n" + + "\x04NONE\x10\x00\x12\t\n" + + "\x05GIPHY\x10\x01\x12\t\n" + + "\x05TENOR\x10\x02\x1aL\n" + + "\bIntegral\x12@\n" + + "\ttransport\x18\x01 \x01(\v2\".WAMediaTransport.WAMediaTransportR\ttransport\"\xce\b\n" + + "\x0eAudioTransport\x12E\n" + + "\bintegral\x18\x01 \x01(\v2).WAMediaTransport.AudioTransport.IntegralR\bintegral\x12H\n" + + "\tancillary\x18\x02 \x01(\v2*.WAMediaTransport.AudioTransport.AncillaryR\tancillary\x1a\xdc\x05\n" + + "\tAncillary\x12\x18\n" + + "\aseconds\x18\x01 \x01(\rR\aseconds\x12X\n" + + "\vavatarAudio\x18\x02 \x01(\v26.WAMediaTransport.AudioTransport.Ancillary.AvatarAudioR\vavatarAudio\x1a\xda\x04\n" + + "\vAvatarAudio\x12\x16\n" + + "\x06poseID\x18\x01 \x01(\rR\x06poseID\x12\x7f\n" + + "\x10avatarAnimations\x18\x02 \x03(\v2S.WAMediaTransport.AudioTransport.Ancillary.AvatarAudio.DownloadableAvatarAnimationsR\x10avatarAnimations\x1a\xd9\x02\n" + + "\x1cDownloadableAvatarAnimations\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x01 \x01(\fR\n" + + "fileSHA256\x12$\n" + + "\rfileEncSHA256\x18\x02 \x01(\fR\rfileEncSHA256\x12\x1e\n" + + "\n" + + "directPath\x18\x03 \x01(\tR\n" + + "directPath\x12\x1a\n" + + "\bmediaKey\x18\x04 \x01(\fR\bmediaKey\x12,\n" + + "\x11mediaKeyTimestamp\x18\x05 \x01(\x03R\x11mediaKeyTimestamp\x12\x1a\n" + + "\bobjectID\x18\x06 \x01(\tR\bobjectID\x12m\n" + + "\x0eanimationsType\x18\a \x01(\x0e2E.WAMediaTransport.AudioTransport.Ancillary.AvatarAudio.AnimationsTypeR\x0eanimationsType\"V\n" + + "\x0eAnimationsType\x12\r\n" + + "\tTALKING_A\x10\x00\x12\n" + + "\n" + + "\x06IDLE_A\x10\x01\x12\r\n" + + "\tTALKING_B\x10\x02\x12\n" + + "\n" + + "\x06IDLE_B\x10\x03\x12\x0e\n" + + "\n" + + "BACKGROUND\x10\x04\x1a\xcb\x01\n" + + "\bIntegral\x12@\n" + + "\ttransport\x18\x01 \x01(\v2\".WAMediaTransport.WAMediaTransportR\ttransport\x12W\n" + + "\vaudioFormat\x18\x02 \x01(\x0e25.WAMediaTransport.AudioTransport.Integral.AudioFormatR\vaudioFormat\"$\n" + + "\vAudioFormat\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\b\n" + + "\x04OPUS\x10\x01\"\xa3\x02\n" + + "\x11DocumentTransport\x12H\n" + + "\bintegral\x18\x01 \x01(\v2,.WAMediaTransport.DocumentTransport.IntegralR\bintegral\x12K\n" + + "\tancillary\x18\x02 \x01(\v2-.WAMediaTransport.DocumentTransport.AncillaryR\tancillary\x1a)\n" + + "\tAncillary\x12\x1c\n" + + "\tpageCount\x18\x01 \x01(\rR\tpageCount\x1aL\n" + + "\bIntegral\x12@\n" + + "\ttransport\x18\x01 \x01(\v2\".WAMediaTransport.WAMediaTransportR\ttransport\"\x96\x05\n" + + "\x10StickerTransport\x12G\n" + + "\bintegral\x18\x01 \x01(\v2+.WAMediaTransport.StickerTransport.IntegralR\bintegral\x12J\n" + + "\tancillary\x18\x02 \x01(\v2,.WAMediaTransport.StickerTransport.AncillaryR\tancillary\x1a\xd3\x02\n" + + "\tAncillary\x12\x1c\n" + + "\tpageCount\x18\x01 \x01(\rR\tpageCount\x12\x16\n" + + "\x06height\x18\x02 \x01(\rR\x06height\x12\x14\n" + + "\x05width\x18\x03 \x01(\rR\x05width\x12*\n" + + "\x10firstFrameLength\x18\x04 \x01(\rR\x10firstFrameLength\x12,\n" + + "\x11firstFrameSidecar\x18\x05 \x01(\fR\x11firstFrameSidecar\x12\"\n" + + "\fmustacheText\x18\x06 \x01(\tR\fmustacheText\x12\"\n" + + "\fisThirdParty\x18\a \x01(\bR\fisThirdParty\x12(\n" + + "\x0freceiverFetchID\x18\b \x01(\tR\x0freceiverFetchID\x12.\n" + + "\x12accessibilityLabel\x18\t \x01(\tR\x12accessibilityLabel\x1a\x96\x01\n" + + "\bIntegral\x12@\n" + + "\ttransport\x18\x01 \x01(\v2\".WAMediaTransport.WAMediaTransportR\ttransport\x12\x1e\n" + + "\n" + + "isAnimated\x18\x02 \x01(\bR\n" + + "isAnimated\x12(\n" + + "\x0freceiverFetchID\x18\x03 \x01(\tR\x0freceiverFetchID\"\xda\x02\n" + + "\x10ContactTransport\x12G\n" + + "\bintegral\x18\x01 \x01(\v2+.WAMediaTransport.ContactTransport.IntegralR\bintegral\x12J\n" + + "\tancillary\x18\x02 \x01(\v2,.WAMediaTransport.ContactTransport.AncillaryR\tancillary\x1a-\n" + + "\tAncillary\x12 \n" + + "\vdisplayName\x18\x01 \x01(\tR\vdisplayName\x1a\x81\x01\n" + + "\bIntegral\x12\x16\n" + + "\x05vcard\x18\x01 \x01(\tH\x00R\x05vcard\x12R\n" + + "\x11downloadableVcard\x18\x02 \x01(\v2\".WAMediaTransport.WAMediaTransportH\x00R\x11downloadableVcardB\t\n" + + "\acontactB,Z*github.com/techwiz37/waSocket/proto/waMediaTransport" var ( file_waMediaTransport_WAMediaTransport_proto_rawDescOnce sync.Once - file_waMediaTransport_WAMediaTransport_proto_rawDescData = file_waMediaTransport_WAMediaTransport_proto_rawDesc + file_waMediaTransport_WAMediaTransport_proto_rawDescData []byte ) func file_waMediaTransport_WAMediaTransport_proto_rawDescGZIP() []byte { file_waMediaTransport_WAMediaTransport_proto_rawDescOnce.Do(func() { - file_waMediaTransport_WAMediaTransport_proto_rawDescData = protoimpl.X.CompressGZIP(file_waMediaTransport_WAMediaTransport_proto_rawDescData) + file_waMediaTransport_WAMediaTransport_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waMediaTransport_WAMediaTransport_proto_rawDesc), len(file_waMediaTransport_WAMediaTransport_proto_rawDesc))) }) return file_waMediaTransport_WAMediaTransport_proto_rawDescData } @@ -1959,7 +2113,7 @@ func file_waMediaTransport_WAMediaTransport_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waMediaTransport_WAMediaTransport_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waMediaTransport_WAMediaTransport_proto_rawDesc), len(file_waMediaTransport_WAMediaTransport_proto_rawDesc)), NumEnums: 4, NumMessages: 25, NumExtensions: 0, @@ -1971,7 +2125,6 @@ func file_waMediaTransport_WAMediaTransport_proto_init() { MessageInfos: file_waMediaTransport_WAMediaTransport_proto_msgTypes, }.Build() File_waMediaTransport_WAMediaTransport_proto = out.File - file_waMediaTransport_WAMediaTransport_proto_rawDesc = nil file_waMediaTransport_WAMediaTransport_proto_goTypes = nil file_waMediaTransport_WAMediaTransport_proto_depIdxs = nil } diff --git a/proto/waMediaTransport/WAMediaTransport.pb.raw b/proto/waMediaTransport/WAMediaTransport.pb.raw deleted file mode 100644 index 5d142f62c87b6e9f8eb4d7a59d1c108a979b9031..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4972 zcmdT|-EJF26t4dg`y@8oQBy3dLX}lPT3Sa~ZN(){;>2!TCmlNta6vWRoy0@EyVmZy zAy){lcmUKF;4OFs1UKA3#Y=F_1hA2&>OD2b7sz&Gv9pYXAB>llBZN-WM~n? zo|=}kanynqI< z8*!6KLDy5kfiijmC1R*-G9lJkH7hOMPbwx%w|pHuSFe4)1f^gCy$5j2CbUP56K5=) z%;S&*)u5;|ojPYzDmO0SV2p-Pa>g@#WDqu~=A>7TFXL5X=xgJ-A+e)5`jVT-uuQHBF(K@^ntm{yAGIk^eWgHjRe$K*Lstf*=4mz#oqsJa5@=9Ha zfK6O^+fcnF0tXITL@2Ci%;MK@Ks;|tI3$t85J9v@&!mg1oEY91-G}S`_mGpvc8ET$ z7WghXoScYU_)_%3(L-1Z@EE8(Tn9{}DzU1|(&zL^)Px%mEtlPPwRk(nF;AVV{g{EG zA9)u-D5AnYyo+8iPQoj0`T}@eo`>PR6omEf3Q+0lYThDH0l?+Z_z#T_1&F;3xW~r7kTVIDIcYjobe1E^+ zR<5BE6nf8IJls<<;?O)6i^r;xhJ!Xakm2GIf|~ctv-OW8szkr_{DZz|pT9?5`3W zJYmNN6LK~p>Pwm9i#RMobKZ-XPvN~FW59dinwRhd{Z_ea?ht(e6~0r;aV$2PNe@Lv ztTa;!@Og+dLfSZH4K)A}Rpn=7BPPP7M@DqQ6R4=iDKqs4uo5yC<=k%fp!1o_xnaA% zkCnI0xnGJ4ZuPu98?CuE4x6gI z$@4p!PYNndO`GyI%S*xT2z?ET=Yhd=BDiI9H*&mt9VAo1B5p)lCC`JvG)`<*`#lS{ z!mUkQ<-+p(f9h~_sE_~*S!moqZeJ1WR>T;N8LvO*krG*f%Dkm+_4c~`-4`uhBLJ4V z+r2jb&V;8nm25DzspL=vV6(Ngw~O}=``b#s_EWfh`p;Da9q}j-0li~doPsh6D$Pe1 zLgF_t4M|H^nFqn#QvD8(f%y=v!17^#ufKoP=SSy-a{u6Ppk(SlWa0X@sm^q2IP*Hz zNwicckFbPVT3Xplc2y6OhfA7D%`A7riRBiQro1d|nKQ%j;(9K4%ccHx0hEEm)R)wn zgS60_H?Eb2(PD4jgr!u7evK6Tf5j+Nq1_fV(V4n0H?K3j2g)(CY-h(Jy8nuHD|7Tj~3@D`h6 z7mD76h#A+qIx!QLQi=H>9J{=G)R;Zx-D97VNk(r8hefq-!ie95!Ylq1*4%}iYuFtk z4A;Z|cRZJC1eaHu3-t2bPEvid#5-XZ(9Qdw-#alII+-<&*~aOZIJQpB(+&BL*+%@I GwSNF@K_^83 diff --git a/proto/waMediaTransport/WAMediaTransport.proto b/proto/waMediaTransport/WAMediaTransport.proto index 22f782e8..e4a3f0c1 100644 --- a/proto/waMediaTransport/WAMediaTransport.proto +++ b/proto/waMediaTransport/WAMediaTransport.proto @@ -84,6 +84,7 @@ message VideoTransport { optional bytes sidecar = 6; optional Attribution gifAttribution = 7; optional string accessibilityLabel = 8; + optional bool isHd = 9; } message Integral { diff --git a/proto/waMmsRetry/WAMmsRetry.pb.go b/proto/waMmsRetry/WAMmsRetry.pb.go index c1e49d13..2e00002c 100644 --- a/proto/waMmsRetry/WAMmsRetry.pb.go +++ b/proto/waMmsRetry/WAMmsRetry.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waMmsRetry/WAMmsRetry.proto @@ -9,11 +9,10 @@ package waMmsRetry import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -199,17 +198,34 @@ func (x *ServerErrorReceipt) GetStanzaID() string { var File_waMmsRetry_WAMmsRetry_proto protoreflect.FileDescriptor -//go:embed WAMmsRetry.pb.raw -var file_waMmsRetry_WAMmsRetry_proto_rawDesc []byte +const file_waMmsRetry_WAMmsRetry_proto_rawDesc = "" + + "\n" + + "\x1bwaMmsRetry/WAMmsRetry.proto\x12\n" + + "WAMmsRetry\"\x94\x02\n" + + "\x16MediaRetryNotification\x12\x1a\n" + + "\bstanzaID\x18\x01 \x01(\tR\bstanzaID\x12\x1e\n" + + "\n" + + "directPath\x18\x02 \x01(\tR\n" + + "directPath\x12E\n" + + "\x06result\x18\x03 \x01(\x0e2-.WAMmsRetry.MediaRetryNotification.ResultTypeR\x06result\x12$\n" + + "\rmessageSecret\x18\x04 \x01(\fR\rmessageSecret\"Q\n" + + "\n" + + "ResultType\x12\x11\n" + + "\rGENERAL_ERROR\x10\x00\x12\v\n" + + "\aSUCCESS\x10\x01\x12\r\n" + + "\tNOT_FOUND\x10\x02\x12\x14\n" + + "\x10DECRYPTION_ERROR\x10\x03\"0\n" + + "\x12ServerErrorReceipt\x12\x1a\n" + + "\bstanzaID\x18\x01 \x01(\tR\bstanzaIDB&Z$github.com/techwiz37/waSocket/proto/waMmsRetry" var ( file_waMmsRetry_WAMmsRetry_proto_rawDescOnce sync.Once - file_waMmsRetry_WAMmsRetry_proto_rawDescData = file_waMmsRetry_WAMmsRetry_proto_rawDesc + file_waMmsRetry_WAMmsRetry_proto_rawDescData []byte ) func file_waMmsRetry_WAMmsRetry_proto_rawDescGZIP() []byte { file_waMmsRetry_WAMmsRetry_proto_rawDescOnce.Do(func() { - file_waMmsRetry_WAMmsRetry_proto_rawDescData = protoimpl.X.CompressGZIP(file_waMmsRetry_WAMmsRetry_proto_rawDescData) + file_waMmsRetry_WAMmsRetry_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waMmsRetry_WAMmsRetry_proto_rawDesc), len(file_waMmsRetry_WAMmsRetry_proto_rawDesc))) }) return file_waMmsRetry_WAMmsRetry_proto_rawDescData } @@ -239,7 +255,7 @@ func file_waMmsRetry_WAMmsRetry_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waMmsRetry_WAMmsRetry_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waMmsRetry_WAMmsRetry_proto_rawDesc), len(file_waMmsRetry_WAMmsRetry_proto_rawDesc)), NumEnums: 1, NumMessages: 2, NumExtensions: 0, @@ -251,7 +267,6 @@ func file_waMmsRetry_WAMmsRetry_proto_init() { MessageInfos: file_waMmsRetry_WAMmsRetry_proto_msgTypes, }.Build() File_waMmsRetry_WAMmsRetry_proto = out.File - file_waMmsRetry_WAMmsRetry_proto_rawDesc = nil file_waMmsRetry_WAMmsRetry_proto_goTypes = nil file_waMmsRetry_WAMmsRetry_proto_depIdxs = nil } diff --git a/proto/waMmsRetry/WAMmsRetry.pb.raw b/proto/waMmsRetry/WAMmsRetry.pb.raw deleted file mode 100644 index 5b03434f783eb4adf258cbf4de4b25724483e347..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmaKp(MrQW5JgQYYDXh+5eW(+p@=Ug;vdvxm4Z#`CPnn6Ea|jeXu4suHPr9$gDs&N z1@Ud>-Z?XH2hJ+q&r60{t^DWiSLqc>YDu6`+z%5@`ZyN6o{gjy6OnN(SvgA`tFjJ_V?e(?;_FHtH02-DYf%QNm%DRsu%2>?oEwT^0$uJ0LlGp~ZpdH2O z=sq4sp>2|5utOTKmqFT#qYcq=Z-6AI-cV7cq+*z%DD;1c++DtQrqav#(whjsnsHs` MC@a5C+;6_|32S$K^#A|> diff --git a/proto/waMsgApplication/WAMsgApplication.pb.go b/proto/waMsgApplication/WAMsgApplication.pb.go index 36113f1b..18548e24 100644 --- a/proto/waMsgApplication/WAMsgApplication.pb.go +++ b/proto/waMsgApplication/WAMsgApplication.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waMsgApplication/WAMsgApplication.proto @@ -9,13 +9,12 @@ package waMsgApplication import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" waCommon "github.com/techwiz37/waSocket/proto/waCommon" - - _ "embed" ) const ( @@ -980,17 +979,87 @@ func (x *MessageApplication_Metadata_EphemeralSettingMap) GetEphemeralSetting() var File_waMsgApplication_WAMsgApplication_proto protoreflect.FileDescriptor -//go:embed WAMsgApplication.pb.raw -var file_waMsgApplication_WAMsgApplication_proto_rawDesc []byte +const file_waMsgApplication_WAMsgApplication_proto_rawDesc = "" + + "\n" + + "'waMsgApplication/WAMsgApplication.proto\x12\x10WAMsgApplication\x1a\x17waCommon/WACommon.proto\"\x8e\x16\n" + + "\x12MessageApplication\x12F\n" + + "\apayload\x18\x01 \x01(\v2,.WAMsgApplication.MessageApplication.PayloadR\apayload\x12I\n" + + "\bmetadata\x18\x02 \x01(\v2-.WAMsgApplication.MessageApplication.MetadataR\bmetadata\x1a\xe7\n" + + "\n" + + "\bMetadata\x12k\n" + + "\x14chatEphemeralSetting\x18\x01 \x01(\v25.WAMsgApplication.MessageApplication.EphemeralSettingH\x00R\x14chatEphemeralSetting\x12w\n" + + "\x14ephemeralSettingList\x18\x02 \x01(\v2A.WAMsgApplication.MessageApplication.Metadata.EphemeralSettingMapH\x00R\x14ephemeralSettingList\x126\n" + + "\x15ephemeralSharedSecret\x18\x03 \x01(\fH\x00R\x15ephemeralSharedSecret\x12(\n" + + "\x0fforwardingScore\x18\x05 \x01(\rR\x0fforwardingScore\x12 \n" + + "\visForwarded\x18\x06 \x01(\bR\visForwarded\x12A\n" + + "\x10businessMetadata\x18\a \x01(\v2\x15.WACommon.SubProtocolR\x10businessMetadata\x12 \n" + + "\vfrankingKey\x18\b \x01(\fR\vfrankingKey\x12(\n" + + "\x0ffrankingVersion\x18\t \x01(\x05R\x0ffrankingVersion\x12a\n" + + "\rquotedMessage\x18\n" + + " \x01(\v2;.WAMsgApplication.MessageApplication.Metadata.QuotedMessageR\rquotedMessage\x12X\n" + + "\n" + + "threadType\x18\v \x01(\x0e28.WAMsgApplication.MessageApplication.Metadata.ThreadTypeR\n" + + "threadType\x12<\n" + + "\x19readonlyMetadataDataclass\x18\f \x01(\tR\x19readonlyMetadataDataclass\x12\x18\n" + + "\agroupID\x18\r \x01(\tR\agroupID\x12\x1c\n" + + "\tgroupSize\x18\x0e \x01(\rR\tgroupSize\x12\x1e\n" + + "\n" + + "groupIndex\x18\x0f \x01(\rR\n" + + "groupIndex\x12$\n" + + "\rbotResponseID\x18\x10 \x01(\tR\rbotResponseID\x12$\n" + + "\rcollapsibleID\x18\x11 \x01(\tR\rcollapsibleID\x12$\n" + + "\rsecondaryOtid\x18\x12 \x01(\tR\rsecondaryOtid\x1a\xb3\x01\n" + + "\rQuotedMessage\x12\x1a\n" + + "\bstanzaID\x18\x01 \x01(\tR\bstanzaID\x12\x1c\n" + + "\tremoteJID\x18\x02 \x01(\tR\tremoteJID\x12 \n" + + "\vparticipant\x18\x03 \x01(\tR\vparticipant\x12F\n" + + "\apayload\x18\x04 \x01(\v2,.WAMsgApplication.MessageApplication.PayloadR\apayload\x1a\x92\x01\n" + + "\x13EphemeralSettingMap\x12\x18\n" + + "\achatJID\x18\x01 \x01(\tR\achatJID\x12a\n" + + "\x10ephemeralSetting\x18\x02 \x01(\v25.WAMsgApplication.MessageApplication.EphemeralSettingR\x10ephemeralSetting\"E\n" + + "\n" + + "ThreadType\x12\v\n" + + "\aDEFAULT\x10\x00\x12\x0f\n" + + "\vVANISH_MODE\x10\x01\x12\x19\n" + + "\x15DISAPPEARING_MESSAGES\x10\x02B\v\n" + + "\tephemeral\x1a\xec\x02\n" + + "\aPayload\x12P\n" + + "\vcoreContent\x18\x01 \x01(\v2,.WAMsgApplication.MessageApplication.ContentH\x00R\vcoreContent\x12E\n" + + "\x06signal\x18\x02 \x01(\v2+.WAMsgApplication.MessageApplication.SignalH\x00R\x06signal\x12`\n" + + "\x0fapplicationData\x18\x03 \x01(\v24.WAMsgApplication.MessageApplication.ApplicationDataH\x00R\x0fapplicationData\x12[\n" + + "\vsubProtocol\x18\x04 \x01(\v27.WAMsgApplication.MessageApplication.SubProtocolPayloadH\x00R\vsubProtocolB\t\n" + + "\acontent\x1a\xca\x03\n" + + "\x12SubProtocolPayload\x12A\n" + + "\x0fconsumerMessage\x18\x02 \x01(\v2\x15.WACommon.SubProtocolH\x00R\x0fconsumerMessage\x12A\n" + + "\x0fbusinessMessage\x18\x03 \x01(\v2\x15.WACommon.SubProtocolH\x00R\x0fbusinessMessage\x12?\n" + + "\x0epaymentMessage\x18\x04 \x01(\v2\x15.WACommon.SubProtocolH\x00R\x0epaymentMessage\x129\n" + + "\vmultiDevice\x18\x05 \x01(\v2\x15.WACommon.SubProtocolH\x00R\vmultiDevice\x12+\n" + + "\x04voip\x18\x06 \x01(\v2\x15.WACommon.SubProtocolH\x00R\x04voip\x125\n" + + "\tarmadillo\x18\a \x01(\v2\x15.WACommon.SubProtocolH\x00R\tarmadillo\x12?\n" + + "\vfutureProof\x18\x01 \x01(\x0e2\x1d.WACommon.FutureProofBehaviorR\vfutureProofB\r\n" + + "\vsubProtocol\x1a\x11\n" + + "\x0fApplicationData\x1a\b\n" + + "\x06Signal\x1a\t\n" + + "\aContent\x1a\x96\x03\n" + + "\x10EphemeralSetting\x120\n" + + "\x13ephemeralExpiration\x18\x02 \x01(\rR\x13ephemeralExpiration\x12<\n" + + "\x19ephemeralSettingTimestamp\x18\x03 \x01(\x03R\x19ephemeralSettingTimestamp\x12r\n" + + "\x10ephemeralityType\x18\x05 \x01(\x0e2F.WAMsgApplication.MessageApplication.EphemeralSetting.EphemeralityTypeR\x10ephemeralityType\x128\n" + + "\x17isEphemeralSettingReset\x18\x04 \x01(\bR\x17isEphemeralSettingReset\"d\n" + + "\x10EphemeralityType\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\r\n" + + "\tSEEN_ONCE\x10\x01\x12\x19\n" + + "\x15SEEN_BASED_WITH_TIMER\x10\x02\x12\x19\n" + + "\x15SEND_BASED_WITH_TIMER\x10\x03B,Z*github.com/techwiz37/waSocket/proto/waMsgApplication" var ( file_waMsgApplication_WAMsgApplication_proto_rawDescOnce sync.Once - file_waMsgApplication_WAMsgApplication_proto_rawDescData = file_waMsgApplication_WAMsgApplication_proto_rawDesc + file_waMsgApplication_WAMsgApplication_proto_rawDescData []byte ) func file_waMsgApplication_WAMsgApplication_proto_rawDescGZIP() []byte { file_waMsgApplication_WAMsgApplication_proto_rawDescOnce.Do(func() { - file_waMsgApplication_WAMsgApplication_proto_rawDescData = protoimpl.X.CompressGZIP(file_waMsgApplication_WAMsgApplication_proto_rawDescData) + file_waMsgApplication_WAMsgApplication_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waMsgApplication_WAMsgApplication_proto_rawDesc), len(file_waMsgApplication_WAMsgApplication_proto_rawDesc))) }) return file_waMsgApplication_WAMsgApplication_proto_rawDescData } @@ -1070,7 +1139,7 @@ func file_waMsgApplication_WAMsgApplication_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waMsgApplication_WAMsgApplication_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waMsgApplication_WAMsgApplication_proto_rawDesc), len(file_waMsgApplication_WAMsgApplication_proto_rawDesc)), NumEnums: 2, NumMessages: 10, NumExtensions: 0, @@ -1082,7 +1151,6 @@ func file_waMsgApplication_WAMsgApplication_proto_init() { MessageInfos: file_waMsgApplication_WAMsgApplication_proto_msgTypes, }.Build() File_waMsgApplication_WAMsgApplication_proto = out.File - file_waMsgApplication_WAMsgApplication_proto_rawDesc = nil file_waMsgApplication_WAMsgApplication_proto_goTypes = nil file_waMsgApplication_WAMsgApplication_proto_depIdxs = nil } diff --git a/proto/waMsgApplication/WAMsgApplication.pb.raw b/proto/waMsgApplication/WAMsgApplication.pb.raw deleted file mode 100644 index f0d89b2cc57e45d4d9918c6d143de920a2695de9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2963 zcmbVO&2HO95RUC6mWGj~Y~qF?+9EIlG-y(}5Slhc3ly?N$7&+kT`F`y5IywJ7wKE{MSAH&baqLJ6fFgEZshEI-_Fj=ezWk|n02CIGYA|pV6pJM-IM0L zp&o>O?2}s2ZrmHQecyEzB>6~OcmDVYNQXxe8}b}6Ie^W8O&p)u`r3oFM_S`ay~tU= z467d}7&--$Hk4c*Gn>UsUspt5tVGmFL39Q;{skya&EyT-9h|e+49>aBL*`gKj)gZ& zgMGTv9!2osHM)?LjNvXXZ1hq@aeAQUN}Ek1uNQaiut09SXan*!Y-jd!7INF-gOJDi z2Bz{B!WJ)+M^HWU!!ZkO%!xJdL$2RIM1>a3Ay@U)k#(dn`5yn*k~OYU-$vygdjFqjv7qL*awG;dM?ryj3)7-4JcW%Rm% z0neKWgUatCKjwDYeLAREzPnlxe#%qOc}DUxKztr@X7?rm*EQtdYCO9de{Y7TIWF=& z+?Tw*=S-%#Y~jrqI4p|vTewk~E_Wb0Yz{+z6tr7A0Wttgea|JAn#Xtni zOKwJ)=1qAmyN>7&)iUGHHMq0j_R6|QEt1hCp-+FYS!>z-O%*Cp!4Fd?dWmkw1jw3= zXt3Eb51OxD_G;Hi6|~pQZreKScaB#&(BIXMPR>c_tC#T?Unm0^%#P^R(}#DtrX7<$Y}_4DycSIbfmk2~ z63T0&R8ebuwGv-$*hwrB7wO2aphcOk=}GT=vl4qw57R`-Eaces%GfkXPK|#yfLsQk z@K(_y8sU7KYF*Mhi*;9?px`elGVN9~KF!f`ih@7+0k-fV;9~8kK_q!t%2048--70j zoLIE@g%~7rNNX%b=Y7dzxPIY_Kux9hV3ZSi3S}0$%odL0zjr`kqB2iBpLRBiMV`Z*OjN4Exw3bnVn@RT?SoHK#7=LX*ttcks zOSm(;h34BpgzA;2?n#9%T9OlGhDhH)J>hcHQa4bw-k{4JNSMUXbcnXUdwyLZ^{wL2!QtxF}e%xNF%i0pFT=YcX$KT^ZZcTH&SQ6b2X7L;fQRzfoNIB{FXpGJGN)3#>$tg?&M zPwjE;h`LbIQXKBJmNd!j|0hYbD+gS-n*SKEl5s0aM8eQx4v~xp8Ja1)tjM#29mI$I zoM?dqx(};Iv5X_CtoTu@qQo^i*C+lDCYw9-n4B^m;b{-^>jkLg5zs!=SRm;zB3>q? zbLMkez04CA9OwzuN#HQgBhffZ+`Y3CZs)Fe!eV{_s23Z^g{nAl{fxVR4sPp!1}=^M zrem848L`7SsYlilShFJx$fc*up^ucw9+ku;lIUEob~ei~?Kw-lz#F}UDsxwlUWy7#o?{quD#nQkz@`FNg&g}0&8C6!}=j{PU6sJ5p^UxrLAQhYWF;$c4nz? zncMuZ1nVUubPei$dK-JTZl^k)04M+;N*50X6fVqubUT#AnVHQ=IZ z6BaThCv##{sIpYl#QasN7D+&NVWUv?RM6;Q&lak3m3AG^Zcx zHQ?HhrVnbt$}r+_SX`fciTZGZyx|^~-j4{fqnyRm{A@ripWsR0khreOiO$qo@)GJL zdIlByU{4dTcI>lvYff#Y=~JrJAk{B5P6*8>urarjB;BP#vOvF)s_@wqDWT{REQiNL z9BWy1oGv#1GXSNW(_>rLJ0JOfB~Hm-K~nE&P)`dD449f>lK7z}uc~P=3nvvX`cn-R xOuq zxbh_2cmSS-7vLpWukG00LJooBjOY8=o!K!QE$KL32tHyre98vz&PtILgud{RSxNSO zw4q%pLZ{FS=xX6pr)xYm`t9dEs{*h}#n$VzlH?Hd5?U@3)S-fQYYP5k1ALs7k~Ihe zwDK(eW}zu96C6s<6F~)=ti0(fwwlao$TH*S8`^3dr7oxKbbC{_LozPx!UIiK z-F)U3UBZqO%_UE^mn4b@f8SBfFSiI0*i{G1y8UnGN~zEsnvzoufBLvCx3{j(RKiMf zdi=8n_p}>K3Q)IjkUYQ68iBqV(7xi{jD(mXp zb?LNDiUj^_0M<@dVnTZ$B*MkabVwQu4{ohK+=52BjE2YWpU!;CrLlFz2g^AXk<0w$ LK&|>ga^ diff --git a/proto/waQuickPromotionSurfaces/WAWebProtobufsQuickPromotionSurfaces.pb.go b/proto/waQuickPromotionSurfaces/WAWebProtobufsQuickPromotionSurfaces.pb.go index 41d952dc..6a856a7a 100644 --- a/proto/waQuickPromotionSurfaces/WAWebProtobufsQuickPromotionSurfaces.pb.go +++ b/proto/waQuickPromotionSurfaces/WAWebProtobufsQuickPromotionSurfaces.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waQuickPromotionSurfaces/WAWebProtobufsQuickPromotionSurfaces.proto @@ -9,11 +9,10 @@ package waQuickPromotionSurfaces import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -415,17 +414,49 @@ func (x *QP_FilterParameters) GetValue() string { var File_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto protoreflect.FileDescriptor -//go:embed WAWebProtobufsQuickPromotionSurfaces.pb.raw -var file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDesc []byte +const file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDesc = "" + + "\n" + + "CwaQuickPromotionSurfaces/WAWebProtobufsQuickPromotionSurfaces.proto\x12$WAWebProtobufsQuickPromotionSurfaces\"\xcf\x06\n" + + "\x02QP\x1a\xff\x01\n" + + "\fFilterClause\x12S\n" + + "\n" + + "clauseType\x18\x01 \x02(\x0e23.WAWebProtobufsQuickPromotionSurfaces.QP.ClauseTypeR\n" + + "clauseType\x12O\n" + + "\aclauses\x18\x02 \x03(\v25.WAWebProtobufsQuickPromotionSurfaces.QP.FilterClauseR\aclauses\x12I\n" + + "\afilters\x18\x03 \x03(\v2/.WAWebProtobufsQuickPromotionSurfaces.QP.FilterR\afilters\x1a\xe4\x02\n" + + "\x06Filter\x12\x1e\n" + + "\n" + + "filterName\x18\x01 \x02(\tR\n" + + "filterName\x12Y\n" + + "\n" + + "parameters\x18\x02 \x03(\v29.WAWebProtobufsQuickPromotionSurfaces.QP.FilterParametersR\n" + + "parameters\x12Y\n" + + "\ffilterResult\x18\x03 \x01(\x0e25.WAWebProtobufsQuickPromotionSurfaces.QP.FilterResultR\ffilterResult\x12\x83\x01\n" + + "\x18clientNotSupportedConfig\x18\x04 \x02(\x0e2G.WAWebProtobufsQuickPromotionSurfaces.QP.FilterClientNotSupportedConfigR\x18clientNotSupportedConfig\x1a:\n" + + "\x10FilterParameters\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value\"0\n" + + "\fFilterResult\x12\b\n" + + "\x04TRUE\x10\x01\x12\t\n" + + "\x05FALSE\x10\x02\x12\v\n" + + "\aUNKNOWN\x10\x03\"J\n" + + "\x1eFilterClientNotSupportedConfig\x12\x13\n" + + "\x0fPASS_BY_DEFAULT\x10\x01\x12\x13\n" + + "\x0fFAIL_BY_DEFAULT\x10\x02\"&\n" + + "\n" + + "ClauseType\x12\a\n" + + "\x03AND\x10\x01\x12\x06\n" + + "\x02OR\x10\x02\x12\a\n" + + "\x03NOR\x10\x03B4Z2github.com/techwiz37/waSocket/proto/waQuickPromotionSurfaces" var ( file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDescOnce sync.Once - file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDescData = file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDesc + file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDescData []byte ) func file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDescGZIP() []byte { file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDescOnce.Do(func() { - file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDescData = protoimpl.X.CompressGZIP(file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDescData) + file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDesc), len(file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDesc))) }) return file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDescData } @@ -464,7 +495,7 @@ func file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_in out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDesc), len(file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDesc)), NumEnums: 3, NumMessages: 4, NumExtensions: 0, @@ -476,7 +507,6 @@ func file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_in MessageInfos: file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_msgTypes, }.Build() File_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto = out.File - file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_rawDesc = nil file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_goTypes = nil file_waQuickPromotionSurfaces_WAWebProtobufsQuickPromotionSurfaces_proto_depIdxs = nil } diff --git a/proto/waQuickPromotionSurfaces/WAWebProtobufsQuickPromotionSurfaces.pb.raw b/proto/waQuickPromotionSurfaces/WAWebProtobufsQuickPromotionSurfaces.pb.raw deleted file mode 100644 index dce06624..00000000 --- a/proto/waQuickPromotionSurfaces/WAWebProtobufsQuickPromotionSurfaces.pb.raw +++ /dev/null @@ -1,33 +0,0 @@ - -CwaQuickPromotionSurfaces/WAWebProtobufsQuickPromotionSurfaces.proto$WAWebProtobufsQuickPromotionSurfaces"Ï -QPÿ - FilterClauseS - -clauseType (23.WAWebProtobufsQuickPromotionSurfaces.QP.ClauseTypeR -clauseTypeO -clauses ( 25.WAWebProtobufsQuickPromotionSurfaces.QP.FilterClauseRclausesI -filters ( 2/.WAWebProtobufsQuickPromotionSurfaces.QP.FilterRfiltersä -Filter - -filterName ( R -filterNameY - -parameters ( 29.WAWebProtobufsQuickPromotionSurfaces.QP.FilterParametersR -parametersY - filterResult (25.WAWebProtobufsQuickPromotionSurfaces.QP.FilterResultR filterResultƒ -clientNotSupportedConfig (2G.WAWebProtobufsQuickPromotionSurfaces.QP.FilterClientNotSupportedConfigRclientNotSupportedConfig: -FilterParameters -key ( Rkey -value ( Rvalue"0 - FilterResult -TRUE -FALSE -UNKNOWN"J -FilterClientNotSupportedConfig -PASS_BY_DEFAULT -FAIL_BY_DEFAULT"& - -ClauseType -AND -OR -NORB4Z2go.mau.fi/whatsmeow/proto/waQuickPromotionSurfaces \ No newline at end of file diff --git a/proto/waReporting/WAWebProtobufsReporting.pb.go b/proto/waReporting/WAWebProtobufsReporting.pb.go index 3d3d7376..d824d13d 100644 --- a/proto/waReporting/WAWebProtobufsReporting.pb.go +++ b/proto/waReporting/WAWebProtobufsReporting.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waReporting/WAWebProtobufsReporting.proto @@ -9,11 +9,10 @@ package waReporting import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -221,17 +220,48 @@ func (x *Field) GetSubfield() map[uint32]*Field { var File_waReporting_WAWebProtobufsReporting_proto protoreflect.FileDescriptor -//go:embed WAWebProtobufsReporting.pb.raw -var file_waReporting_WAWebProtobufsReporting_proto_rawDesc []byte +const file_waReporting_WAWebProtobufsReporting_proto_rawDesc = "" + + "\n" + + ")waReporting/WAWebProtobufsReporting.proto\x12\x17WAWebProtobufsReporting\"\x9c\x01\n" + + "\n" + + "Reportable\x12\x1e\n" + + "\n" + + "minVersion\x18\x01 \x01(\rR\n" + + "minVersion\x12\x1e\n" + + "\n" + + "maxVersion\x18\x02 \x01(\rR\n" + + "maxVersion\x128\n" + + "\x17notReportableMinVersion\x18\x03 \x01(\rR\x17notReportableMinVersion\x12\x14\n" + + "\x05never\x18\x04 \x01(\bR\x05never\"\xbe\x01\n" + + "\x06Config\x12@\n" + + "\x05field\x18\x01 \x03(\v2*.WAWebProtobufsReporting.Config.FieldEntryR\x05field\x12\x18\n" + + "\aversion\x18\x02 \x01(\rR\aversion\x1aX\n" + + "\n" + + "FieldEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\rR\x03key\x124\n" + + "\x05value\x18\x02 \x01(\v2\x1e.WAWebProtobufsReporting.FieldR\x05value:\x028\x01\"\xc6\x02\n" + + "\x05Field\x12\x1e\n" + + "\n" + + "minVersion\x18\x01 \x01(\rR\n" + + "minVersion\x12\x1e\n" + + "\n" + + "maxVersion\x18\x02 \x01(\rR\n" + + "maxVersion\x128\n" + + "\x17notReportableMinVersion\x18\x03 \x01(\rR\x17notReportableMinVersion\x12\x1c\n" + + "\tisMessage\x18\x04 \x01(\bR\tisMessage\x12H\n" + + "\bsubfield\x18\x05 \x03(\v2,.WAWebProtobufsReporting.Field.SubfieldEntryR\bsubfield\x1a[\n" + + "\rSubfieldEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\rR\x03key\x124\n" + + "\x05value\x18\x02 \x01(\v2\x1e.WAWebProtobufsReporting.FieldR\x05value:\x028\x01B'Z%github.com/techwiz37/waSocket/proto/waReportingb\x06proto3" var ( file_waReporting_WAWebProtobufsReporting_proto_rawDescOnce sync.Once - file_waReporting_WAWebProtobufsReporting_proto_rawDescData = file_waReporting_WAWebProtobufsReporting_proto_rawDesc + file_waReporting_WAWebProtobufsReporting_proto_rawDescData []byte ) func file_waReporting_WAWebProtobufsReporting_proto_rawDescGZIP() []byte { file_waReporting_WAWebProtobufsReporting_proto_rawDescOnce.Do(func() { - file_waReporting_WAWebProtobufsReporting_proto_rawDescData = protoimpl.X.CompressGZIP(file_waReporting_WAWebProtobufsReporting_proto_rawDescData) + file_waReporting_WAWebProtobufsReporting_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waReporting_WAWebProtobufsReporting_proto_rawDesc), len(file_waReporting_WAWebProtobufsReporting_proto_rawDesc))) }) return file_waReporting_WAWebProtobufsReporting_proto_rawDescData } @@ -265,7 +295,7 @@ func file_waReporting_WAWebProtobufsReporting_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waReporting_WAWebProtobufsReporting_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waReporting_WAWebProtobufsReporting_proto_rawDesc), len(file_waReporting_WAWebProtobufsReporting_proto_rawDesc)), NumEnums: 0, NumMessages: 5, NumExtensions: 0, @@ -276,7 +306,6 @@ func file_waReporting_WAWebProtobufsReporting_proto_init() { MessageInfos: file_waReporting_WAWebProtobufsReporting_proto_msgTypes, }.Build() File_waReporting_WAWebProtobufsReporting_proto = out.File - file_waReporting_WAWebProtobufsReporting_proto_rawDesc = nil file_waReporting_WAWebProtobufsReporting_proto_goTypes = nil file_waReporting_WAWebProtobufsReporting_proto_depIdxs = nil } diff --git a/proto/waReporting/WAWebProtobufsReporting.pb.raw b/proto/waReporting/WAWebProtobufsReporting.pb.raw deleted file mode 100644 index 57622f0c..00000000 --- a/proto/waReporting/WAWebProtobufsReporting.pb.raw +++ /dev/null @@ -1,32 +0,0 @@ - -)waReporting/WAWebProtobufsReporting.protoWAWebProtobufsReporting"œ - -Reportable - -minVersion ( R -minVersion - -maxVersion ( R -maxVersion8 -notReportableMinVersion ( RnotReportableMinVersion -never (Rnever"¾ -Config@ -field ( 2*.WAWebProtobufsReporting.Config.FieldEntryRfield -version ( RversionX - -FieldEntry -key ( Rkey4 -value ( 2.WAWebProtobufsReporting.FieldRvalue:8"Æ -Field - -minVersion ( R -minVersion - -maxVersion ( R -maxVersion8 -notReportableMinVersion ( RnotReportableMinVersion - isMessage (R isMessageH -subfield ( 2,.WAWebProtobufsReporting.Field.SubfieldEntryRsubfield[ - SubfieldEntry -key ( Rkey4 -value ( 2.WAWebProtobufsReporting.FieldRvalue:8B'Z%go.mau.fi/whatsmeow/proto/waReportingbproto3 \ No newline at end of file diff --git a/proto/waRoutingInfo/WAWebProtobufsRoutingInfo.pb.go b/proto/waRoutingInfo/WAWebProtobufsRoutingInfo.pb.go index f114a4e0..fae56835 100644 --- a/proto/waRoutingInfo/WAWebProtobufsRoutingInfo.pb.go +++ b/proto/waRoutingInfo/WAWebProtobufsRoutingInfo.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waRoutingInfo/WAWebProtobufsRoutingInfo.proto @@ -9,11 +9,10 @@ package waRoutingInfo import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -109,17 +108,25 @@ func (x *RoutingInfo) GetTcpKeepalive() bool { var File_waRoutingInfo_WAWebProtobufsRoutingInfo_proto protoreflect.FileDescriptor -//go:embed WAWebProtobufsRoutingInfo.pb.raw -var file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDesc []byte +const file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDesc = "" + + "\n" + + "-waRoutingInfo/WAWebProtobufsRoutingInfo.proto\x12\x19WAWebProtobufsRoutingInfo\"\xb1\x01\n" + + "\vRoutingInfo\x12\x1a\n" + + "\bregionID\x18\x01 \x03(\x05R\bregionID\x12\x1c\n" + + "\tclusterID\x18\x02 \x03(\x05R\tclusterID\x12\x16\n" + + "\x06taskID\x18\x03 \x01(\x05R\x06taskID\x12\x14\n" + + "\x05debug\x18\x04 \x01(\bR\x05debug\x12\x16\n" + + "\x06tcpBbr\x18\x05 \x01(\bR\x06tcpBbr\x12\"\n" + + "\ftcpKeepalive\x18\x06 \x01(\bR\ftcpKeepaliveB)Z'github.com/techwiz37/waSocket/proto/waRoutingInfo" var ( file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDescOnce sync.Once - file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDescData = file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDesc + file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDescData []byte ) func file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDescGZIP() []byte { file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDescOnce.Do(func() { - file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDescData = protoimpl.X.CompressGZIP(file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDescData) + file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDesc), len(file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDesc))) }) return file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDescData } @@ -145,7 +152,7 @@ func file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDesc), len(file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -156,7 +163,6 @@ func file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_init() { MessageInfos: file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_msgTypes, }.Build() File_waRoutingInfo_WAWebProtobufsRoutingInfo_proto = out.File - file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_rawDesc = nil file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_goTypes = nil file_waRoutingInfo_WAWebProtobufsRoutingInfo_proto_depIdxs = nil } diff --git a/proto/waRoutingInfo/WAWebProtobufsRoutingInfo.pb.raw b/proto/waRoutingInfo/WAWebProtobufsRoutingInfo.pb.raw deleted file mode 100644 index 43725e32..00000000 --- a/proto/waRoutingInfo/WAWebProtobufsRoutingInfo.pb.raw +++ /dev/null @@ -1,9 +0,0 @@ - --waRoutingInfo/WAWebProtobufsRoutingInfo.protoWAWebProtobufsRoutingInfo"± - RoutingInfo -regionID (RregionID - clusterID (R clusterID -taskID (RtaskID -debug (Rdebug -tcpBbr (RtcpBbr" - tcpKeepalive (R tcpKeepaliveB)Z'go.mau.fi/whatsmeow/proto/waRoutingInfo \ No newline at end of file diff --git a/proto/waServerSync/WAServerSync.pb.go b/proto/waServerSync/WAServerSync.pb.go index f1d16ff4..b2b33306 100644 --- a/proto/waServerSync/WAServerSync.pb.go +++ b/proto/waServerSync/WAServerSync.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waServerSync/WAServerSync.proto @@ -9,11 +9,10 @@ package waServerSync import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -725,17 +724,71 @@ func (x *SyncdPatch) GetClientDebugData() []byte { var File_waServerSync_WAServerSync_proto protoreflect.FileDescriptor -//go:embed WAServerSync.pb.raw -var file_waServerSync_WAServerSync_proto_rawDesc []byte +const file_waServerSync_WAServerSync_proto_rawDesc = "" + + "\n" + + "\x1fwaServerSync/WAServerSync.proto\x12\fWAServerSync\"\xb3\x01\n" + + "\rSyncdMutation\x12H\n" + + "\toperation\x18\x01 \x01(\x0e2*.WAServerSync.SyncdMutation.SyncdOperationR\toperation\x121\n" + + "\x06record\x18\x02 \x01(\v2\x19.WAServerSync.SyncdRecordR\x06record\"%\n" + + "\x0eSyncdOperation\x12\a\n" + + "\x03SET\x10\x00\x12\n" + + "\n" + + "\x06REMOVE\x10\x01\"(\n" + + "\fSyncdVersion\x12\x18\n" + + "\aversion\x18\x01 \x01(\x04R\aversion\"2\n" + + "\bExitCode\x12\x12\n" + + "\x04code\x18\x01 \x01(\x04R\x04code\x12\x12\n" + + "\x04text\x18\x02 \x01(\tR\x04text\" \n" + + "\n" + + "SyncdIndex\x12\x12\n" + + "\x04blob\x18\x01 \x01(\fR\x04blob\" \n" + + "\n" + + "SyncdValue\x12\x12\n" + + "\x04blob\x18\x01 \x01(\fR\x04blob\"\x17\n" + + "\x05KeyId\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\fR\x02ID\"\x98\x01\n" + + "\vSyncdRecord\x12.\n" + + "\x05index\x18\x01 \x01(\v2\x18.WAServerSync.SyncdIndexR\x05index\x12.\n" + + "\x05value\x18\x02 \x01(\v2\x18.WAServerSync.SyncdValueR\x05value\x12)\n" + + "\x05keyID\x18\x03 \x01(\v2\x13.WAServerSync.KeyIdR\x05keyID\"\xd7\x01\n" + + "\x15ExternalBlobReference\x12\x1a\n" + + "\bmediaKey\x18\x01 \x01(\fR\bmediaKey\x12\x1e\n" + + "\n" + + "directPath\x18\x02 \x01(\tR\n" + + "directPath\x12\x16\n" + + "\x06handle\x18\x03 \x01(\tR\x06handle\x12$\n" + + "\rfileSizeBytes\x18\x04 \x01(\x04R\rfileSizeBytes\x12\x1e\n" + + "\n" + + "fileSHA256\x18\x05 \x01(\fR\n" + + "fileSHA256\x12$\n" + + "\rfileEncSHA256\x18\x06 \x01(\fR\rfileEncSHA256\"\xb7\x01\n" + + "\rSyncdSnapshot\x124\n" + + "\aversion\x18\x01 \x01(\v2\x1a.WAServerSync.SyncdVersionR\aversion\x123\n" + + "\arecords\x18\x02 \x03(\v2\x19.WAServerSync.SyncdRecordR\arecords\x12\x10\n" + + "\x03mac\x18\x03 \x01(\fR\x03mac\x12)\n" + + "\x05keyID\x18\x04 \x01(\v2\x13.WAServerSync.KeyIdR\x05keyID\"K\n" + + "\x0eSyncdMutations\x129\n" + + "\tmutations\x18\x01 \x03(\v2\x1b.WAServerSync.SyncdMutationR\tmutations\"\xb9\x03\n" + + "\n" + + "SyncdPatch\x124\n" + + "\aversion\x18\x01 \x01(\v2\x1a.WAServerSync.SyncdVersionR\aversion\x129\n" + + "\tmutations\x18\x02 \x03(\v2\x1b.WAServerSync.SyncdMutationR\tmutations\x12Q\n" + + "\x11externalMutations\x18\x03 \x01(\v2#.WAServerSync.ExternalBlobReferenceR\x11externalMutations\x12 \n" + + "\vsnapshotMAC\x18\x04 \x01(\fR\vsnapshotMAC\x12\x1a\n" + + "\bpatchMAC\x18\x05 \x01(\fR\bpatchMAC\x12)\n" + + "\x05keyID\x18\x06 \x01(\v2\x13.WAServerSync.KeyIdR\x05keyID\x122\n" + + "\bexitCode\x18\a \x01(\v2\x16.WAServerSync.ExitCodeR\bexitCode\x12 \n" + + "\vdeviceIndex\x18\b \x01(\rR\vdeviceIndex\x12(\n" + + "\x0fclientDebugData\x18\t \x01(\fR\x0fclientDebugDataB(Z&github.com/techwiz37/waSocket/proto/waServerSync" var ( file_waServerSync_WAServerSync_proto_rawDescOnce sync.Once - file_waServerSync_WAServerSync_proto_rawDescData = file_waServerSync_WAServerSync_proto_rawDesc + file_waServerSync_WAServerSync_proto_rawDescData []byte ) func file_waServerSync_WAServerSync_proto_rawDescGZIP() []byte { file_waServerSync_WAServerSync_proto_rawDescOnce.Do(func() { - file_waServerSync_WAServerSync_proto_rawDescData = protoimpl.X.CompressGZIP(file_waServerSync_WAServerSync_proto_rawDescData) + file_waServerSync_WAServerSync_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waServerSync_WAServerSync_proto_rawDesc), len(file_waServerSync_WAServerSync_proto_rawDesc))) }) return file_waServerSync_WAServerSync_proto_rawDescData } @@ -787,7 +840,7 @@ func file_waServerSync_WAServerSync_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waServerSync_WAServerSync_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waServerSync_WAServerSync_proto_rawDesc), len(file_waServerSync_WAServerSync_proto_rawDesc)), NumEnums: 1, NumMessages: 11, NumExtensions: 0, @@ -799,7 +852,6 @@ func file_waServerSync_WAServerSync_proto_init() { MessageInfos: file_waServerSync_WAServerSync_proto_msgTypes, }.Build() File_waServerSync_WAServerSync_proto = out.File - file_waServerSync_WAServerSync_proto_rawDesc = nil file_waServerSync_WAServerSync_proto_goTypes = nil file_waServerSync_WAServerSync_proto_depIdxs = nil } diff --git a/proto/waServerSync/WAServerSync.pb.raw b/proto/waServerSync/WAServerSync.pb.raw deleted file mode 100644 index 8e26c95f62c707c149f4029188b8ea4d15da5784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1538 zcmbVM+iuf95GCZ+Ox#iyQB0AbG8Y9N5@9Y9k8KmFRaF%>s7SnR?P+6?*paPnIIFb>wiZSPB1y(iE zKb%P+gD7Ns(2AxQlVex5DxEd=RkxVaE#Xt|D9hlBWcC^wF?vz#+qYGjw)=2N8BPFh zfX;JRqw0A*)`aSC@Ok|f18DHU;nDG6z2bDhBG@s;iRNrWQ+2FOVqD{y>$tEom@yPPVfJK-Kp{ALklzGLB9t%i?6`h+{FHQQd2Z2T(u2%YC1% z!R`INNmiEgqXKQJo_5ZDyJ> z!M$>Q;>c5k^QQv$2Xl#WD8@UgWsav9W9T8UflzSMO764A0DhqMEI$f4GIK0M z*akF4BJ{^d3|icH>=~?{24frs-*M+sVq(`6!5S|Ib#+4RZM*N@+jRx8cp;Ki8HC<2 zg)|64Rq~+oD^vL}6w_oBN%pp^n6|rF9!ybQxtiD;Xr_uzRHN0KC7mJJI#egZqwX!P z&Bac1%We0jogA18kzLP(eSp@)+|@)aL$i3agnO327ii~q)hJu7${YRX3`*yxQ~1a8 z*(bQG?i%SUqn8+6J}tMfREGR|Hrs-BVs?7Cy-OOhcrm24JJs##->H6bf3XOynj06v z)I);iA+ei;-ndFReP(!$)8u?S4?LtBY_F)aRbC9S4&3p^0fw@VC$qD@kiu>$l*O-x fcRF8RoJHM \x01(\v2..WASyncAction.CtwaPerCustomerDataSharingActionR ctwaPerCustomerDataSharingAction\"t\n" + + " CtwaPerCustomerDataSharingAction\x12P\n" + + "#isCtwaPerCustomerDataSharingEnabled\x18\x01 \x01(\bR#isCtwaPerCustomerDataSharingEnabled\"\xa4\x01\n" + + "\x10LidContactAction\x12\x1a\n" + + "\bfullName\x18\x01 \x01(\tR\bfullName\x12\x1c\n" + + "\tfirstName\x18\x02 \x01(\tR\tfirstName\x12\x1a\n" + + "\busername\x18\x03 \x01(\tR\busername\x12:\n" + + "\x18saveOnPrimaryAddressbook\x18\x04 \x01(\bR\x18saveOnPrimaryAddressbook\"s\n" + + "\x0fFavoritesAction\x12D\n" + + "\tfavorites\x18\x01 \x03(\v2&.WASyncAction.FavoritesAction.FavoriteR\tfavorites\x1a\x1a\n" + + "\bFavorite\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\tR\x02ID\"Y\n" + + "'PrivacySettingDisableLinkPreviewsAction\x12.\n" + + "\x12isPreviewsDisabled\x18\x01 \x01(\bR\x12isPreviewsDisabled\":\n" + + "\x18WamoUserIdentifierAction\x12\x1e\n" + + "\n" + + "identifier\x18\x01 \x01(\tR\n" + + "identifier\"(\n" + + "\x0eLockChatAction\x12\x16\n" + + "\x06locked\x18\x01 \x01(\bR\x06locked\"s\n" + + "\x1aCustomPaymentMethodsAction\x12U\n" + + "\x14customPaymentMethods\x18\x01 \x03(\v2!.WASyncAction.CustomPaymentMethodR\x14customPaymentMethods\"\xae\x01\n" + + "\x13CustomPaymentMethod\x12\"\n" + + "\fcredentialID\x18\x01 \x02(\tR\fcredentialID\x12\x18\n" + + "\acountry\x18\x02 \x02(\tR\acountry\x12\x12\n" + + "\x04type\x18\x03 \x02(\tR\x04type\x12E\n" + + "\bmetadata\x18\x04 \x03(\v2).WASyncAction.CustomPaymentMethodMetadataR\bmetadata\"E\n" + + "\x1bCustomPaymentMethodMetadata\x12\x10\n" + + "\x03key\x18\x01 \x02(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x02(\tR\x05value\"%\n" + + "\x11PaymentInfoAction\x12\x10\n" + + "\x03cpi\x18\x01 \x01(\tR\x03cpi\"?\n" + + "\x15LabelReorderingAction\x12&\n" + + "\x0esortedLabelIDs\x18\x01 \x03(\x05R\x0esortedLabelIDs\"Y\n" + + "\x1dDeleteIndividualCallLogAction\x12\x18\n" + + "\apeerJID\x18\x01 \x01(\tR\apeerJID\x12\x1e\n" + + "\n" + + "isIncoming\x18\x02 \x01(\bR\n" + + "isIncoming\"1\n" + + "\x17BotWelcomeRequestAction\x12\x16\n" + + "\x06isSent\x18\x01 \x01(\bR\x06isSent\"R\n" + + "\rCallLogAction\x12A\n" + + "\rcallLogRecord\x18\x01 \x01(\v2\x1b.WASyncAction.CallLogRecordR\rcallLogRecord\";\n" + + "\x1bPrivacySettingRelayAllCalls\x12\x1c\n" + + "\tisEnabled\x18\x01 \x01(\bR\tisEnabled\"1\n" + + "\x15ExternalWebBetaAction\x12\x18\n" + + "\aisOptIn\x18\x01 \x01(\bR\aisOptIn\"E\n" + + "\x1fMarketingMessageBroadcastAction\x12\"\n" + + "\frepliedCount\x18\x01 \x01(\x05R\frepliedCount\"*\n" + + "\x12PnForLidChatAction\x12\x14\n" + + "\x05pnJID\x18\x01 \x01(\tR\x05pnJID\"B\n" + + " ChatAssignmentOpenedStatusAction\x12\x1e\n" + + "\n" + + "chatOpened\x18\x01 \x01(\bR\n" + + "chatOpened\"<\n" + + "\x14ChatAssignmentAction\x12$\n" + + "\rdeviceAgentID\x18\x01 \x01(\tR\rdeviceAgentID\"\xcd\x02\n" + + "\rStickerAction\x12\x10\n" + + "\x03URL\x18\x01 \x01(\tR\x03URL\x12$\n" + + "\rfileEncSHA256\x18\x02 \x01(\fR\rfileEncSHA256\x12\x1a\n" + + "\bmediaKey\x18\x03 \x01(\fR\bmediaKey\x12\x1a\n" + + "\bmimetype\x18\x04 \x01(\tR\bmimetype\x12\x16\n" + + "\x06height\x18\x05 \x01(\rR\x06height\x12\x14\n" + + "\x05width\x18\x06 \x01(\rR\x05width\x12\x1e\n" + + "\n" + + "directPath\x18\a \x01(\tR\n" + + "directPath\x12\x1e\n" + + "\n" + + "fileLength\x18\b \x01(\x04R\n" + + "fileLength\x12\x1e\n" + + "\n" + + "isFavorite\x18\t \x01(\bR\n" + + "isFavorite\x12\"\n" + + "\fdeviceIDHint\x18\n" + + " \x01(\rR\fdeviceIDHint\x12\x1a\n" + + "\bisLottie\x18\v \x01(\bR\bisLottie\"I\n" + + "\x19RemoveRecentStickerAction\x12,\n" + + "\x11lastStickerSentTS\x18\x01 \x01(\x03R\x11lastStickerSentTS\"0\n" + + "\x14PrimaryVersionAction\x12\x18\n" + + "\aversion\x18\x01 \x01(\tR\aversion\"/\n" + + "\tNuxAction\x12\"\n" + + "\facknowledged\x18\x01 \x01(\bR\facknowledged\"X\n" + + "\x10TimeFormatAction\x12D\n" + + "\x1disTwentyFourHourFormatEnabled\x18\x01 \x01(\bR\x1disTwentyFourHourFormatEnabled\",\n" + + "\x14UserStatusMuteAction\x12\x14\n" + + "\x05muted\x18\x01 \x01(\bR\x05muted\"\x8a\x01\n" + + "\x12SubscriptionAction\x12$\n" + + "\risDeactivated\x18\x01 \x01(\bR\risDeactivated\x12&\n" + + "\x0eisAutoRenewing\x18\x02 \x01(\bR\x0eisAutoRenewing\x12&\n" + + "\x0eexpirationDate\x18\x03 \x01(\x03R\x0eexpirationDate\"[\n" + + "\vAgentAction\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1a\n" + + "\bdeviceID\x18\x02 \x01(\x05R\bdeviceID\x12\x1c\n" + + "\tisDeleted\x18\x03 \x01(\bR\tisDeleted\"5\n" + + "\x19AndroidUnsupportedActions\x12\x18\n" + + "\aallowed\x18\x01 \x01(\bR\aallowed\"&\n" + + "\x0ePrimaryFeature\x12\x14\n" + + "\x05flags\x18\x01 \x03(\tR\x05flags\"9\n" + + "\rKeyExpiration\x12(\n" + + "\x0fexpiredKeyEpoch\x18\x01 \x01(\x05R\x0fexpiredKeyEpoch\"Y\n" + + "\x11SyncActionMessage\x12&\n" + + "\x03key\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x03key\x12\x1c\n" + + "\ttimestamp\x18\x02 \x01(\x03R\ttimestamp\"\xc9\x01\n" + + "\x16SyncActionMessageRange\x122\n" + + "\x14lastMessageTimestamp\x18\x01 \x01(\x03R\x14lastMessageTimestamp\x12>\n" + + "\x1alastSystemMessageTimestamp\x18\x02 \x01(\x03R\x1alastSystemMessageTimestamp\x12;\n" + + "\bmessages\x18\x03 \x03(\v2\x1f.WASyncAction.SyncActionMessageR\bmessages\"?\n" + + "\x15UnarchiveChatsSetting\x12&\n" + + "\x0eunarchiveChats\x18\x01 \x01(\bR\x0eunarchiveChats\"\\\n" + + "\x10DeleteChatAction\x12H\n" + + "\fmessageRange\x18\x01 \x01(\v2$.WASyncAction.SyncActionMessageRangeR\fmessageRange\"[\n" + + "\x0fClearChatAction\x12H\n" + + "\fmessageRange\x18\x01 \x01(\v2$.WASyncAction.SyncActionMessageRangeR\fmessageRange\"t\n" + + "\x14MarkChatAsReadAction\x12\x12\n" + + "\x04read\x18\x01 \x01(\bR\x04read\x12H\n" + + "\fmessageRange\x18\x02 \x01(\v2$.WASyncAction.SyncActionMessageRangeR\fmessageRange\"h\n" + + "\x18DeleteMessageForMeAction\x12 \n" + + "\vdeleteMedia\x18\x01 \x01(\bR\vdeleteMedia\x12*\n" + + "\x10messageTimestamp\x18\x02 \x01(\x03R\x10messageTimestamp\"y\n" + + "\x11ArchiveChatAction\x12\x1a\n" + + "\barchived\x18\x01 \x01(\bR\barchived\x12H\n" + + "\fmessageRange\x18\x02 \x01(\v2$.WASyncAction.SyncActionMessageRangeR\fmessageRange\"U\n" + + "\x18RecentEmojiWeightsAction\x129\n" + + "\aweights\x18\x01 \x03(\v2\x1f.WASyncAction.RecentEmojiWeightR\aweights\"2\n" + + "\x16LabelAssociationAction\x12\x18\n" + + "\alabeled\x18\x01 \x01(\bR\alabeled\"\x94\x01\n" + + "\x10QuickReplyAction\x12\x1a\n" + + "\bshortcut\x18\x01 \x01(\tR\bshortcut\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\x12\x1a\n" + + "\bkeywords\x18\x03 \x03(\tR\bkeywords\x12\x14\n" + + "\x05count\x18\x04 \x01(\x05R\x05count\x12\x18\n" + + "\adeleted\x18\x05 \x01(\bR\adeleted\"'\n" + + "\rLocaleSetting\x12\x16\n" + + "\x06locale\x18\x01 \x01(\tR\x06locale\"%\n" + + "\x0fPushNameSetting\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\"I\n" + + "\x1bSecurityNotificationSetting\x12*\n" + + "\x10showNotification\x18\x01 \x01(\bR\x10showNotification\"#\n" + + "\tPinAction\x12\x16\n" + + "\x06pinned\x18\x01 \x01(\bR\x06pinned\"l\n" + + "\n" + + "MuteAction\x12\x14\n" + + "\x05muted\x18\x01 \x01(\bR\x05muted\x12*\n" + + "\x10muteEndTimestamp\x18\x02 \x01(\x03R\x10muteEndTimestamp\x12\x1c\n" + + "\tautoMuted\x18\x03 \x01(\bR\tautoMuted\"\xcf\x01\n" + + "\rContactAction\x12\x1a\n" + + "\bfullName\x18\x01 \x01(\tR\bfullName\x12\x1c\n" + + "\tfirstName\x18\x02 \x01(\tR\tfirstName\x12\x16\n" + + "\x06lidJID\x18\x03 \x01(\tR\x06lidJID\x12:\n" + + "\x18saveOnPrimaryAddressbook\x18\x04 \x01(\bR\x18saveOnPrimaryAddressbook\x12\x14\n" + + "\x05pnJID\x18\x05 \x01(\tR\x05pnJID\x12\x1a\n" + + "\busername\x18\x06 \x01(\tR\busername\"&\n" + + "\n" + + "StarAction\x12\x18\n" + + "\astarred\x18\x01 \x01(\bR\astarred\"\x8f\x01\n" + + "\x0eSyncActionData\x12\x14\n" + + "\x05index\x18\x01 \x01(\fR\x05index\x123\n" + + "\x05value\x18\x02 \x01(\v2\x1d.WASyncAction.SyncActionValueR\x05value\x12\x18\n" + + "\apadding\x18\x03 \x01(\fR\apadding\x12\x18\n" + + "\aversion\x18\x04 \x01(\x05R\aversionB(Z&github.com/techwiz37/waSocket/proto/waSyncAction" var ( file_waSyncAction_WASyncAction_proto_rawDescOnce sync.Once - file_waSyncAction_WASyncAction_proto_rawDescData = file_waSyncAction_WASyncAction_proto_rawDesc + file_waSyncAction_WASyncAction_proto_rawDescData []byte ) func file_waSyncAction_WASyncAction_proto_rawDescGZIP() []byte { file_waSyncAction_WASyncAction_proto_rawDescOnce.Do(func() { - file_waSyncAction_WASyncAction_proto_rawDescData = protoimpl.X.CompressGZIP(file_waSyncAction_WASyncAction_proto_rawDescData) + file_waSyncAction_WASyncAction_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waSyncAction_WASyncAction_proto_rawDesc), len(file_waSyncAction_WASyncAction_proto_rawDesc))) }) return file_waSyncAction_WASyncAction_proto_rawDescData } var file_waSyncAction_WASyncAction_proto_enumTypes = make([]protoimpl.EnumInfo, 12) -var file_waSyncAction_WASyncAction_proto_msgTypes = make([]protoimpl.MessageInfo, 62) +var file_waSyncAction_WASyncAction_proto_msgTypes = make([]protoimpl.MessageInfo, 64) var file_waSyncAction_WASyncAction_proto_goTypes = []any{ (CallLogRecord_CallType)(0), // 0: WASyncAction.CallLogRecord.CallType (CallLogRecord_SilenceReason)(0), // 1: WASyncAction.CallLogRecord.SilenceReason @@ -4631,64 +5173,66 @@ var file_waSyncAction_WASyncAction_proto_goTypes = []any{ (*PatchDebugData)(nil), // 21: WASyncAction.PatchDebugData (*RecentEmojiWeight)(nil), // 22: WASyncAction.RecentEmojiWeight (*SyncActionValue)(nil), // 23: WASyncAction.SyncActionValue - (*FavoritesAction)(nil), // 24: WASyncAction.FavoritesAction - (*PrivacySettingDisableLinkPreviewsAction)(nil), // 25: WASyncAction.PrivacySettingDisableLinkPreviewsAction - (*WamoUserIdentifierAction)(nil), // 26: WASyncAction.WamoUserIdentifierAction - (*LockChatAction)(nil), // 27: WASyncAction.LockChatAction - (*CustomPaymentMethodsAction)(nil), // 28: WASyncAction.CustomPaymentMethodsAction - (*CustomPaymentMethod)(nil), // 29: WASyncAction.CustomPaymentMethod - (*CustomPaymentMethodMetadata)(nil), // 30: WASyncAction.CustomPaymentMethodMetadata - (*PaymentInfoAction)(nil), // 31: WASyncAction.PaymentInfoAction - (*LabelReorderingAction)(nil), // 32: WASyncAction.LabelReorderingAction - (*DeleteIndividualCallLogAction)(nil), // 33: WASyncAction.DeleteIndividualCallLogAction - (*BotWelcomeRequestAction)(nil), // 34: WASyncAction.BotWelcomeRequestAction - (*CallLogAction)(nil), // 35: WASyncAction.CallLogAction - (*PrivacySettingRelayAllCalls)(nil), // 36: WASyncAction.PrivacySettingRelayAllCalls - (*ExternalWebBetaAction)(nil), // 37: WASyncAction.ExternalWebBetaAction - (*MarketingMessageBroadcastAction)(nil), // 38: WASyncAction.MarketingMessageBroadcastAction - (*PnForLidChatAction)(nil), // 39: WASyncAction.PnForLidChatAction - (*ChatAssignmentOpenedStatusAction)(nil), // 40: WASyncAction.ChatAssignmentOpenedStatusAction - (*ChatAssignmentAction)(nil), // 41: WASyncAction.ChatAssignmentAction - (*StickerAction)(nil), // 42: WASyncAction.StickerAction - (*RemoveRecentStickerAction)(nil), // 43: WASyncAction.RemoveRecentStickerAction - (*PrimaryVersionAction)(nil), // 44: WASyncAction.PrimaryVersionAction - (*NuxAction)(nil), // 45: WASyncAction.NuxAction - (*TimeFormatAction)(nil), // 46: WASyncAction.TimeFormatAction - (*UserStatusMuteAction)(nil), // 47: WASyncAction.UserStatusMuteAction - (*SubscriptionAction)(nil), // 48: WASyncAction.SubscriptionAction - (*AgentAction)(nil), // 49: WASyncAction.AgentAction - (*AndroidUnsupportedActions)(nil), // 50: WASyncAction.AndroidUnsupportedActions - (*PrimaryFeature)(nil), // 51: WASyncAction.PrimaryFeature - (*KeyExpiration)(nil), // 52: WASyncAction.KeyExpiration - (*SyncActionMessage)(nil), // 53: WASyncAction.SyncActionMessage - (*SyncActionMessageRange)(nil), // 54: WASyncAction.SyncActionMessageRange - (*UnarchiveChatsSetting)(nil), // 55: WASyncAction.UnarchiveChatsSetting - (*DeleteChatAction)(nil), // 56: WASyncAction.DeleteChatAction - (*ClearChatAction)(nil), // 57: WASyncAction.ClearChatAction - (*MarkChatAsReadAction)(nil), // 58: WASyncAction.MarkChatAsReadAction - (*DeleteMessageForMeAction)(nil), // 59: WASyncAction.DeleteMessageForMeAction - (*ArchiveChatAction)(nil), // 60: WASyncAction.ArchiveChatAction - (*RecentEmojiWeightsAction)(nil), // 61: WASyncAction.RecentEmojiWeightsAction - (*LabelAssociationAction)(nil), // 62: WASyncAction.LabelAssociationAction - (*QuickReplyAction)(nil), // 63: WASyncAction.QuickReplyAction - (*LocaleSetting)(nil), // 64: WASyncAction.LocaleSetting - (*PushNameSetting)(nil), // 65: WASyncAction.PushNameSetting - (*SecurityNotificationSetting)(nil), // 66: WASyncAction.SecurityNotificationSetting - (*PinAction)(nil), // 67: WASyncAction.PinAction - (*MuteAction)(nil), // 68: WASyncAction.MuteAction - (*ContactAction)(nil), // 69: WASyncAction.ContactAction - (*StarAction)(nil), // 70: WASyncAction.StarAction - (*SyncActionData)(nil), // 71: WASyncAction.SyncActionData - (*CallLogRecord_ParticipantInfo)(nil), // 72: WASyncAction.CallLogRecord.ParticipantInfo - (*FavoritesAction_Favorite)(nil), // 73: WASyncAction.FavoritesAction.Favorite - (*waChatLockSettings.ChatLockSettings)(nil), // 74: WAProtobufsChatLockSettings.ChatLockSettings - (*waDeviceCapabilities.DeviceCapabilities)(nil), // 75: WAProtobufsDeviceCapabilities.DeviceCapabilities - (*waCommon.MessageKey)(nil), // 76: WACommon.MessageKey + (*CtwaPerCustomerDataSharingAction)(nil), // 24: WASyncAction.CtwaPerCustomerDataSharingAction + (*LidContactAction)(nil), // 25: WASyncAction.LidContactAction + (*FavoritesAction)(nil), // 26: WASyncAction.FavoritesAction + (*PrivacySettingDisableLinkPreviewsAction)(nil), // 27: WASyncAction.PrivacySettingDisableLinkPreviewsAction + (*WamoUserIdentifierAction)(nil), // 28: WASyncAction.WamoUserIdentifierAction + (*LockChatAction)(nil), // 29: WASyncAction.LockChatAction + (*CustomPaymentMethodsAction)(nil), // 30: WASyncAction.CustomPaymentMethodsAction + (*CustomPaymentMethod)(nil), // 31: WASyncAction.CustomPaymentMethod + (*CustomPaymentMethodMetadata)(nil), // 32: WASyncAction.CustomPaymentMethodMetadata + (*PaymentInfoAction)(nil), // 33: WASyncAction.PaymentInfoAction + (*LabelReorderingAction)(nil), // 34: WASyncAction.LabelReorderingAction + (*DeleteIndividualCallLogAction)(nil), // 35: WASyncAction.DeleteIndividualCallLogAction + (*BotWelcomeRequestAction)(nil), // 36: WASyncAction.BotWelcomeRequestAction + (*CallLogAction)(nil), // 37: WASyncAction.CallLogAction + (*PrivacySettingRelayAllCalls)(nil), // 38: WASyncAction.PrivacySettingRelayAllCalls + (*ExternalWebBetaAction)(nil), // 39: WASyncAction.ExternalWebBetaAction + (*MarketingMessageBroadcastAction)(nil), // 40: WASyncAction.MarketingMessageBroadcastAction + (*PnForLidChatAction)(nil), // 41: WASyncAction.PnForLidChatAction + (*ChatAssignmentOpenedStatusAction)(nil), // 42: WASyncAction.ChatAssignmentOpenedStatusAction + (*ChatAssignmentAction)(nil), // 43: WASyncAction.ChatAssignmentAction + (*StickerAction)(nil), // 44: WASyncAction.StickerAction + (*RemoveRecentStickerAction)(nil), // 45: WASyncAction.RemoveRecentStickerAction + (*PrimaryVersionAction)(nil), // 46: WASyncAction.PrimaryVersionAction + (*NuxAction)(nil), // 47: WASyncAction.NuxAction + (*TimeFormatAction)(nil), // 48: WASyncAction.TimeFormatAction + (*UserStatusMuteAction)(nil), // 49: WASyncAction.UserStatusMuteAction + (*SubscriptionAction)(nil), // 50: WASyncAction.SubscriptionAction + (*AgentAction)(nil), // 51: WASyncAction.AgentAction + (*AndroidUnsupportedActions)(nil), // 52: WASyncAction.AndroidUnsupportedActions + (*PrimaryFeature)(nil), // 53: WASyncAction.PrimaryFeature + (*KeyExpiration)(nil), // 54: WASyncAction.KeyExpiration + (*SyncActionMessage)(nil), // 55: WASyncAction.SyncActionMessage + (*SyncActionMessageRange)(nil), // 56: WASyncAction.SyncActionMessageRange + (*UnarchiveChatsSetting)(nil), // 57: WASyncAction.UnarchiveChatsSetting + (*DeleteChatAction)(nil), // 58: WASyncAction.DeleteChatAction + (*ClearChatAction)(nil), // 59: WASyncAction.ClearChatAction + (*MarkChatAsReadAction)(nil), // 60: WASyncAction.MarkChatAsReadAction + (*DeleteMessageForMeAction)(nil), // 61: WASyncAction.DeleteMessageForMeAction + (*ArchiveChatAction)(nil), // 62: WASyncAction.ArchiveChatAction + (*RecentEmojiWeightsAction)(nil), // 63: WASyncAction.RecentEmojiWeightsAction + (*LabelAssociationAction)(nil), // 64: WASyncAction.LabelAssociationAction + (*QuickReplyAction)(nil), // 65: WASyncAction.QuickReplyAction + (*LocaleSetting)(nil), // 66: WASyncAction.LocaleSetting + (*PushNameSetting)(nil), // 67: WASyncAction.PushNameSetting + (*SecurityNotificationSetting)(nil), // 68: WASyncAction.SecurityNotificationSetting + (*PinAction)(nil), // 69: WASyncAction.PinAction + (*MuteAction)(nil), // 70: WASyncAction.MuteAction + (*ContactAction)(nil), // 71: WASyncAction.ContactAction + (*StarAction)(nil), // 72: WASyncAction.StarAction + (*SyncActionData)(nil), // 73: WASyncAction.SyncActionData + (*CallLogRecord_ParticipantInfo)(nil), // 74: WASyncAction.CallLogRecord.ParticipantInfo + (*FavoritesAction_Favorite)(nil), // 75: WASyncAction.FavoritesAction.Favorite + (*waChatLockSettings.ChatLockSettings)(nil), // 76: WAProtobufsChatLockSettings.ChatLockSettings + (*waDeviceCapabilities.DeviceCapabilities)(nil), // 77: WAProtobufsDeviceCapabilities.DeviceCapabilities + (*waCommon.MessageKey)(nil), // 78: WACommon.MessageKey } var file_waSyncAction_WASyncAction_proto_depIdxs = []int32{ 2, // 0: WASyncAction.CallLogRecord.callResult:type_name -> WASyncAction.CallLogRecord.CallResult 1, // 1: WASyncAction.CallLogRecord.silenceReason:type_name -> WASyncAction.CallLogRecord.SilenceReason - 72, // 2: WASyncAction.CallLogRecord.participants:type_name -> WASyncAction.CallLogRecord.ParticipantInfo + 74, // 2: WASyncAction.CallLogRecord.participants:type_name -> WASyncAction.CallLogRecord.ParticipantInfo 0, // 3: WASyncAction.CallLogRecord.callType:type_name -> WASyncAction.CallLogRecord.CallType 3, // 4: WASyncAction.NotificationActivitySettingAction.notificationActivitySetting:type_name -> WASyncAction.NotificationActivitySettingAction.NotificationActivitySetting 4, // 5: WASyncAction.WaffleAccountLinkStateAction.linkState:type_name -> WASyncAction.WaffleAccountLinkStateAction.AccountLinkState @@ -4699,77 +5243,79 @@ var file_waSyncAction_WASyncAction_proto_depIdxs = []int32{ 9, // 10: WASyncAction.UsernameChatStartModeAction.chatStartMode:type_name -> WASyncAction.UsernameChatStartModeAction.ChatStartMode 10, // 11: WASyncAction.LabelEditAction.type:type_name -> WASyncAction.LabelEditAction.ListType 11, // 12: WASyncAction.PatchDebugData.senderPlatform:type_name -> WASyncAction.PatchDebugData.Platform - 70, // 13: WASyncAction.SyncActionValue.starAction:type_name -> WASyncAction.StarAction - 69, // 14: WASyncAction.SyncActionValue.contactAction:type_name -> WASyncAction.ContactAction - 68, // 15: WASyncAction.SyncActionValue.muteAction:type_name -> WASyncAction.MuteAction - 67, // 16: WASyncAction.SyncActionValue.pinAction:type_name -> WASyncAction.PinAction - 66, // 17: WASyncAction.SyncActionValue.securityNotificationSetting:type_name -> WASyncAction.SecurityNotificationSetting - 65, // 18: WASyncAction.SyncActionValue.pushNameSetting:type_name -> WASyncAction.PushNameSetting - 63, // 19: WASyncAction.SyncActionValue.quickReplyAction:type_name -> WASyncAction.QuickReplyAction - 61, // 20: WASyncAction.SyncActionValue.recentEmojiWeightsAction:type_name -> WASyncAction.RecentEmojiWeightsAction + 72, // 13: WASyncAction.SyncActionValue.starAction:type_name -> WASyncAction.StarAction + 71, // 14: WASyncAction.SyncActionValue.contactAction:type_name -> WASyncAction.ContactAction + 70, // 15: WASyncAction.SyncActionValue.muteAction:type_name -> WASyncAction.MuteAction + 69, // 16: WASyncAction.SyncActionValue.pinAction:type_name -> WASyncAction.PinAction + 68, // 17: WASyncAction.SyncActionValue.securityNotificationSetting:type_name -> WASyncAction.SecurityNotificationSetting + 67, // 18: WASyncAction.SyncActionValue.pushNameSetting:type_name -> WASyncAction.PushNameSetting + 65, // 19: WASyncAction.SyncActionValue.quickReplyAction:type_name -> WASyncAction.QuickReplyAction + 63, // 20: WASyncAction.SyncActionValue.recentEmojiWeightsAction:type_name -> WASyncAction.RecentEmojiWeightsAction 20, // 21: WASyncAction.SyncActionValue.labelEditAction:type_name -> WASyncAction.LabelEditAction - 62, // 22: WASyncAction.SyncActionValue.labelAssociationAction:type_name -> WASyncAction.LabelAssociationAction - 64, // 23: WASyncAction.SyncActionValue.localeSetting:type_name -> WASyncAction.LocaleSetting - 60, // 24: WASyncAction.SyncActionValue.archiveChatAction:type_name -> WASyncAction.ArchiveChatAction - 59, // 25: WASyncAction.SyncActionValue.deleteMessageForMeAction:type_name -> WASyncAction.DeleteMessageForMeAction - 52, // 26: WASyncAction.SyncActionValue.keyExpiration:type_name -> WASyncAction.KeyExpiration - 58, // 27: WASyncAction.SyncActionValue.markChatAsReadAction:type_name -> WASyncAction.MarkChatAsReadAction - 57, // 28: WASyncAction.SyncActionValue.clearChatAction:type_name -> WASyncAction.ClearChatAction - 56, // 29: WASyncAction.SyncActionValue.deleteChatAction:type_name -> WASyncAction.DeleteChatAction - 55, // 30: WASyncAction.SyncActionValue.unarchiveChatsSetting:type_name -> WASyncAction.UnarchiveChatsSetting - 51, // 31: WASyncAction.SyncActionValue.primaryFeature:type_name -> WASyncAction.PrimaryFeature - 50, // 32: WASyncAction.SyncActionValue.androidUnsupportedActions:type_name -> WASyncAction.AndroidUnsupportedActions - 49, // 33: WASyncAction.SyncActionValue.agentAction:type_name -> WASyncAction.AgentAction - 48, // 34: WASyncAction.SyncActionValue.subscriptionAction:type_name -> WASyncAction.SubscriptionAction - 47, // 35: WASyncAction.SyncActionValue.userStatusMuteAction:type_name -> WASyncAction.UserStatusMuteAction - 46, // 36: WASyncAction.SyncActionValue.timeFormatAction:type_name -> WASyncAction.TimeFormatAction - 45, // 37: WASyncAction.SyncActionValue.nuxAction:type_name -> WASyncAction.NuxAction - 44, // 38: WASyncAction.SyncActionValue.primaryVersionAction:type_name -> WASyncAction.PrimaryVersionAction - 42, // 39: WASyncAction.SyncActionValue.stickerAction:type_name -> WASyncAction.StickerAction - 43, // 40: WASyncAction.SyncActionValue.removeRecentStickerAction:type_name -> WASyncAction.RemoveRecentStickerAction - 41, // 41: WASyncAction.SyncActionValue.chatAssignment:type_name -> WASyncAction.ChatAssignmentAction - 40, // 42: WASyncAction.SyncActionValue.chatAssignmentOpenedStatus:type_name -> WASyncAction.ChatAssignmentOpenedStatusAction - 39, // 43: WASyncAction.SyncActionValue.pnForLidChatAction:type_name -> WASyncAction.PnForLidChatAction + 64, // 22: WASyncAction.SyncActionValue.labelAssociationAction:type_name -> WASyncAction.LabelAssociationAction + 66, // 23: WASyncAction.SyncActionValue.localeSetting:type_name -> WASyncAction.LocaleSetting + 62, // 24: WASyncAction.SyncActionValue.archiveChatAction:type_name -> WASyncAction.ArchiveChatAction + 61, // 25: WASyncAction.SyncActionValue.deleteMessageForMeAction:type_name -> WASyncAction.DeleteMessageForMeAction + 54, // 26: WASyncAction.SyncActionValue.keyExpiration:type_name -> WASyncAction.KeyExpiration + 60, // 27: WASyncAction.SyncActionValue.markChatAsReadAction:type_name -> WASyncAction.MarkChatAsReadAction + 59, // 28: WASyncAction.SyncActionValue.clearChatAction:type_name -> WASyncAction.ClearChatAction + 58, // 29: WASyncAction.SyncActionValue.deleteChatAction:type_name -> WASyncAction.DeleteChatAction + 57, // 30: WASyncAction.SyncActionValue.unarchiveChatsSetting:type_name -> WASyncAction.UnarchiveChatsSetting + 53, // 31: WASyncAction.SyncActionValue.primaryFeature:type_name -> WASyncAction.PrimaryFeature + 52, // 32: WASyncAction.SyncActionValue.androidUnsupportedActions:type_name -> WASyncAction.AndroidUnsupportedActions + 51, // 33: WASyncAction.SyncActionValue.agentAction:type_name -> WASyncAction.AgentAction + 50, // 34: WASyncAction.SyncActionValue.subscriptionAction:type_name -> WASyncAction.SubscriptionAction + 49, // 35: WASyncAction.SyncActionValue.userStatusMuteAction:type_name -> WASyncAction.UserStatusMuteAction + 48, // 36: WASyncAction.SyncActionValue.timeFormatAction:type_name -> WASyncAction.TimeFormatAction + 47, // 37: WASyncAction.SyncActionValue.nuxAction:type_name -> WASyncAction.NuxAction + 46, // 38: WASyncAction.SyncActionValue.primaryVersionAction:type_name -> WASyncAction.PrimaryVersionAction + 44, // 39: WASyncAction.SyncActionValue.stickerAction:type_name -> WASyncAction.StickerAction + 45, // 40: WASyncAction.SyncActionValue.removeRecentStickerAction:type_name -> WASyncAction.RemoveRecentStickerAction + 43, // 41: WASyncAction.SyncActionValue.chatAssignment:type_name -> WASyncAction.ChatAssignmentAction + 42, // 42: WASyncAction.SyncActionValue.chatAssignmentOpenedStatus:type_name -> WASyncAction.ChatAssignmentOpenedStatusAction + 41, // 43: WASyncAction.SyncActionValue.pnForLidChatAction:type_name -> WASyncAction.PnForLidChatAction 18, // 44: WASyncAction.SyncActionValue.marketingMessageAction:type_name -> WASyncAction.MarketingMessageAction - 38, // 45: WASyncAction.SyncActionValue.marketingMessageBroadcastAction:type_name -> WASyncAction.MarketingMessageBroadcastAction - 37, // 46: WASyncAction.SyncActionValue.externalWebBetaAction:type_name -> WASyncAction.ExternalWebBetaAction - 36, // 47: WASyncAction.SyncActionValue.privacySettingRelayAllCalls:type_name -> WASyncAction.PrivacySettingRelayAllCalls - 35, // 48: WASyncAction.SyncActionValue.callLogAction:type_name -> WASyncAction.CallLogAction + 40, // 45: WASyncAction.SyncActionValue.marketingMessageBroadcastAction:type_name -> WASyncAction.MarketingMessageBroadcastAction + 39, // 46: WASyncAction.SyncActionValue.externalWebBetaAction:type_name -> WASyncAction.ExternalWebBetaAction + 38, // 47: WASyncAction.SyncActionValue.privacySettingRelayAllCalls:type_name -> WASyncAction.PrivacySettingRelayAllCalls + 37, // 48: WASyncAction.SyncActionValue.callLogAction:type_name -> WASyncAction.CallLogAction 17, // 49: WASyncAction.SyncActionValue.statusPrivacy:type_name -> WASyncAction.StatusPrivacyAction - 34, // 50: WASyncAction.SyncActionValue.botWelcomeRequestAction:type_name -> WASyncAction.BotWelcomeRequestAction - 33, // 51: WASyncAction.SyncActionValue.deleteIndividualCallLog:type_name -> WASyncAction.DeleteIndividualCallLogAction - 32, // 52: WASyncAction.SyncActionValue.labelReorderingAction:type_name -> WASyncAction.LabelReorderingAction - 31, // 53: WASyncAction.SyncActionValue.paymentInfoAction:type_name -> WASyncAction.PaymentInfoAction - 28, // 54: WASyncAction.SyncActionValue.customPaymentMethodsAction:type_name -> WASyncAction.CustomPaymentMethodsAction - 27, // 55: WASyncAction.SyncActionValue.lockChatAction:type_name -> WASyncAction.LockChatAction - 74, // 56: WASyncAction.SyncActionValue.chatLockSettings:type_name -> WAProtobufsChatLockSettings.ChatLockSettings - 26, // 57: WASyncAction.SyncActionValue.wamoUserIdentifierAction:type_name -> WASyncAction.WamoUserIdentifierAction - 25, // 58: WASyncAction.SyncActionValue.privacySettingDisableLinkPreviewsAction:type_name -> WASyncAction.PrivacySettingDisableLinkPreviewsAction - 75, // 59: WASyncAction.SyncActionValue.deviceCapabilities:type_name -> WAProtobufsDeviceCapabilities.DeviceCapabilities + 36, // 50: WASyncAction.SyncActionValue.botWelcomeRequestAction:type_name -> WASyncAction.BotWelcomeRequestAction + 35, // 51: WASyncAction.SyncActionValue.deleteIndividualCallLog:type_name -> WASyncAction.DeleteIndividualCallLogAction + 34, // 52: WASyncAction.SyncActionValue.labelReorderingAction:type_name -> WASyncAction.LabelReorderingAction + 33, // 53: WASyncAction.SyncActionValue.paymentInfoAction:type_name -> WASyncAction.PaymentInfoAction + 30, // 54: WASyncAction.SyncActionValue.customPaymentMethodsAction:type_name -> WASyncAction.CustomPaymentMethodsAction + 29, // 55: WASyncAction.SyncActionValue.lockChatAction:type_name -> WASyncAction.LockChatAction + 76, // 56: WASyncAction.SyncActionValue.chatLockSettings:type_name -> WAProtobufsChatLockSettings.ChatLockSettings + 28, // 57: WASyncAction.SyncActionValue.wamoUserIdentifierAction:type_name -> WASyncAction.WamoUserIdentifierAction + 27, // 58: WASyncAction.SyncActionValue.privacySettingDisableLinkPreviewsAction:type_name -> WASyncAction.PrivacySettingDisableLinkPreviewsAction + 77, // 59: WASyncAction.SyncActionValue.deviceCapabilities:type_name -> WAProtobufsDeviceCapabilities.DeviceCapabilities 16, // 60: WASyncAction.SyncActionValue.noteEditAction:type_name -> WASyncAction.NoteEditAction - 24, // 61: WASyncAction.SyncActionValue.favoritesAction:type_name -> WASyncAction.FavoritesAction + 26, // 61: WASyncAction.SyncActionValue.favoritesAction:type_name -> WASyncAction.FavoritesAction 15, // 62: WASyncAction.SyncActionValue.merchantPaymentPartnerAction:type_name -> WASyncAction.MerchantPaymentPartnerAction 14, // 63: WASyncAction.SyncActionValue.waffleAccountLinkStateAction:type_name -> WASyncAction.WaffleAccountLinkStateAction 19, // 64: WASyncAction.SyncActionValue.usernameChatStartMode:type_name -> WASyncAction.UsernameChatStartModeAction 13, // 65: WASyncAction.SyncActionValue.notificationActivitySettingAction:type_name -> WASyncAction.NotificationActivitySettingAction - 73, // 66: WASyncAction.FavoritesAction.favorites:type_name -> WASyncAction.FavoritesAction.Favorite - 29, // 67: WASyncAction.CustomPaymentMethodsAction.customPaymentMethods:type_name -> WASyncAction.CustomPaymentMethod - 30, // 68: WASyncAction.CustomPaymentMethod.metadata:type_name -> WASyncAction.CustomPaymentMethodMetadata - 12, // 69: WASyncAction.CallLogAction.callLogRecord:type_name -> WASyncAction.CallLogRecord - 76, // 70: WASyncAction.SyncActionMessage.key:type_name -> WACommon.MessageKey - 53, // 71: WASyncAction.SyncActionMessageRange.messages:type_name -> WASyncAction.SyncActionMessage - 54, // 72: WASyncAction.DeleteChatAction.messageRange:type_name -> WASyncAction.SyncActionMessageRange - 54, // 73: WASyncAction.ClearChatAction.messageRange:type_name -> WASyncAction.SyncActionMessageRange - 54, // 74: WASyncAction.MarkChatAsReadAction.messageRange:type_name -> WASyncAction.SyncActionMessageRange - 54, // 75: WASyncAction.ArchiveChatAction.messageRange:type_name -> WASyncAction.SyncActionMessageRange - 22, // 76: WASyncAction.RecentEmojiWeightsAction.weights:type_name -> WASyncAction.RecentEmojiWeight - 23, // 77: WASyncAction.SyncActionData.value:type_name -> WASyncAction.SyncActionValue - 2, // 78: WASyncAction.CallLogRecord.ParticipantInfo.callResult:type_name -> WASyncAction.CallLogRecord.CallResult - 79, // [79:79] is the sub-list for method output_type - 79, // [79:79] is the sub-list for method input_type - 79, // [79:79] is the sub-list for extension type_name - 79, // [79:79] is the sub-list for extension extendee - 0, // [0:79] is the sub-list for field type_name + 25, // 66: WASyncAction.SyncActionValue.lidContactAction:type_name -> WASyncAction.LidContactAction + 24, // 67: WASyncAction.SyncActionValue.ctwaPerCustomerDataSharingAction:type_name -> WASyncAction.CtwaPerCustomerDataSharingAction + 75, // 68: WASyncAction.FavoritesAction.favorites:type_name -> WASyncAction.FavoritesAction.Favorite + 31, // 69: WASyncAction.CustomPaymentMethodsAction.customPaymentMethods:type_name -> WASyncAction.CustomPaymentMethod + 32, // 70: WASyncAction.CustomPaymentMethod.metadata:type_name -> WASyncAction.CustomPaymentMethodMetadata + 12, // 71: WASyncAction.CallLogAction.callLogRecord:type_name -> WASyncAction.CallLogRecord + 78, // 72: WASyncAction.SyncActionMessage.key:type_name -> WACommon.MessageKey + 55, // 73: WASyncAction.SyncActionMessageRange.messages:type_name -> WASyncAction.SyncActionMessage + 56, // 74: WASyncAction.DeleteChatAction.messageRange:type_name -> WASyncAction.SyncActionMessageRange + 56, // 75: WASyncAction.ClearChatAction.messageRange:type_name -> WASyncAction.SyncActionMessageRange + 56, // 76: WASyncAction.MarkChatAsReadAction.messageRange:type_name -> WASyncAction.SyncActionMessageRange + 56, // 77: WASyncAction.ArchiveChatAction.messageRange:type_name -> WASyncAction.SyncActionMessageRange + 22, // 78: WASyncAction.RecentEmojiWeightsAction.weights:type_name -> WASyncAction.RecentEmojiWeight + 23, // 79: WASyncAction.SyncActionData.value:type_name -> WASyncAction.SyncActionValue + 2, // 80: WASyncAction.CallLogRecord.ParticipantInfo.callResult:type_name -> WASyncAction.CallLogRecord.CallResult + 81, // [81:81] is the sub-list for method output_type + 81, // [81:81] is the sub-list for method input_type + 81, // [81:81] is the sub-list for extension type_name + 81, // [81:81] is the sub-list for extension extendee + 0, // [0:81] is the sub-list for field type_name } func init() { file_waSyncAction_WASyncAction_proto_init() } @@ -4781,9 +5327,9 @@ func file_waSyncAction_WASyncAction_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waSyncAction_WASyncAction_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waSyncAction_WASyncAction_proto_rawDesc), len(file_waSyncAction_WASyncAction_proto_rawDesc)), NumEnums: 12, - NumMessages: 62, + NumMessages: 64, NumExtensions: 0, NumServices: 0, }, @@ -4793,7 +5339,6 @@ func file_waSyncAction_WASyncAction_proto_init() { MessageInfos: file_waSyncAction_WASyncAction_proto_msgTypes, }.Build() File_waSyncAction_WASyncAction_proto = out.File - file_waSyncAction_WASyncAction_proto_rawDesc = nil file_waSyncAction_WASyncAction_proto_goTypes = nil file_waSyncAction_WASyncAction_proto_depIdxs = nil } diff --git a/proto/waSyncAction/WASyncAction.pb.raw b/proto/waSyncAction/WASyncAction.pb.raw deleted file mode 100644 index f0384debc32ceb4ba80cee5594cf58178ed1b943..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12869 zcmb_D%W@k@a>JJd7GF>gCH3er()2u}9nVrT+|}+pHf)0cC}I`_-~vJJtkOQpRi+N9pO*$-4{nVGpoAMRo%c$Z0tc2Dmydlk|17bssyiGugG(;@K{&7u z8S4Xpi)b>8?WLzn&$stK+RLtfPa~j_#O4`F>k(V`qMAQA4hF(r1~w%=16Xag6?sG9 z_XQVj6!`WEP4uHh6Lqr$T&K4lu+m@>x_JEdD)3t2=@^$1#cmj%cq3u2(Z?CUdY3UT zYWV$N1Y)pn(MmHA%VxK|=+qmCz`ji%lcA)f!|?oTyOdBS5bFcBg-6+huP4E^@a=U# zS?4;?dd_yD{*@R^hGKxEjhf8}&jefd*e&D-2pfc;M%G7c8{ySZxN#7E4c|BEy8*>B zx(tKK7%{d8BOQZ4Hpg&8Uf&zLejM4`PgkCA?El#!d30v@4gVtG8UyPuSqT?)ax)h8 z4otSa|G^?=xO2qiDb<6B?HE&_EGChlEuvEw5s(ctP6PEWp^soYP|!f^=7wzc2wu}@`}aSt>Z?w3n;5NccXP$X*O!*HJrQG zs+?9D&B{TuUcQCgd!1_gxY2r5zKwK;@D1onI8)`I(yGCRYUOog({8yr(lBYfkm-#2%fw7Z*cO>Gy+) zAES5Z#%>H_bY9jsY<-x3$Zu}%f2AMDBJw?xE1z+5-eqO;GYYs;J!zbRjynGXYdaQU z{|Y=n$GsT|{3nck5vsK{*e!6R@gxFCErWr5rY~#}?H=xN5^==CR-h0)Ru?vxqb)*1WL9w57z3PPf(39>T}|P z`%8TGG6a>G&vxqUp5$gyqGJX7YM;GsHo7O$d)Df$Z{%r@F}<{}6BzKdtrGr^R@p$cU*LzBNu zPBQX`{A1`waTi1j>LJsU3`8YTN<(CNf{By_$lVM)7qkwu6FA+GprP{_d%SRQs34s> z@3vbI3Vsa=@|N>2;GcUCU-8T^2L{2cADyoPX~U#;_Y4s;|>Jr!^&x!H%=f>t)L-w!1(Kj4Gh|=h+6G+ zPuj=jHRpd<*>=Z``&Tt_KDn&9u}c~2Bn&|noAH$!U6Ft{K~7m9YNRiw3Il!JCZ7T5 zl#%PH2qVnK@su|)Ih?^LV-1EwK_QRaJetKO-v+5=pw_S0vkNbb;=^DP9^AwtIt+tR zeY^>PUS(mpV>xcW5n%|o3AzldaRX`{v+YQLhJ~G>8(#$Bh%N)$ z`$j0z<+hg~bAuQ!7hVLe1sR6k$c1o=cZU);!Ok@+C0sDIgFKJ7!S>!lo$DSSRHU9Y zI!Bn#E-PpQR1A#ttbPEx1wVRc9mpv`$!ZmT)@VUG3Dk`aXep(VXY~qicgrQG!tTIz z6V$9e3V!RI3GebMw!moN{C?{xZ!HIS>6y}ZvgKv2M$Yd(U^}y0_NhCZ2ozHccf2Te zM`Pjwfi?wLpECwuR4zl@Hui1Zb)mzPzK&;btqS-(2)>{q@+0Z=#{NT{7~^w_0ydK! z;^d=AlH^gK&rN=ue&-on>m^$sd%l_&!^6h@eSP9i@|n*tt!wr$5@5HGghNV@Cgv(3 zCsp6rH}2cr`2>6sH|rJK8Bd}swB%$0bafm1kByb;NZh2dzGmfbCtm-Wi}6sUBVs4OIXdf{*`cXqJ7eJ{O3!BX+^ykTCRiC+$v&*6azJPhDEo=T@oObrEwa?}ik>lEOa?znI@far!X zTB+k5V)H~7O~pjxc}f(H%z9PAb{K@mD$TGh;%XF~WWtlj=5zVruCK*S{kyTJ3PW!f z?HYo|42A0ykP_~K)4ZlFM^LI7sEzLuCr95nrduW^FQiAk=?{e)X3p|1u`~>(sv~ie z3Jpe{V}{c`;$#?%Jii$h&(Xov^X|mY2pIwg)h6xx#PEH6x4j}%Ud+L&vF)*pKZkG; zg4>L36VFFFPZgsS4mW5l!QOHGK^S<0o*zxd;~>O46(tdo{eT!g(-~Igq4W8itgqMx zTp=JGC(iamV*HN5c!t2U*j9&G(d0bphu#=3LW;*D;_+1H0eOdk#|vmt2k`<0u?a5F zvmjwVCZ2{4V)AWb@z-zA=g>R{b8i^X$v7^M8kcWSdwh=~!TTFGb3 zoD?Q*O{s;-78Qr5MO#zKp<(hudbIoqYMIwb<-&fC7#jYrn?-?wa(0Ni7E(GVqk@KO zJH*b=HJSYtp!4~hKnUA?^runeUHVvYvEMJ+JK1fDBToskWsTDE*#jNY9t*hXNOiD3 zAijIL3hI2b_-c*?98uNBJ}5@h8xS99E+5i7hN^dRc)WlXqaeE5{7v5eh`1UhWOTTB zTt0_~HDyms?gwGu4*GEYR*LtGrungcNai#K5&u4}=vc*fG2W|(XX5-o#IBm|IZbCc z)_M^tFXn)09#{|-Z7NxbQPVPvmobFlebKGr`hv1htzLz&b)9}4UkbV6tZ zi)nKBFKNz~`r+$lK9`vP&{-^(S%X~v+5Q>Ljje$6NDKPVc@QsPhLZQSioE@EVsA(u zi`=skAQVxwF=p2n?wbJaz9KoH&xwtZT_5U5+@ykt`e?MEA!2_)TtC*&eNh{PFXV^w zO&2tW>@SPvThtHY3;BT)y^E=3uHI{ZMH3lu1Jyl;s{C6qAM0<~dmx*%`hdu}wxInB zn(T#siXh^}Wc>R%JJ3QlWDFX%p6UkFh_K6T*s4LXmyG$0@BtKi6EM_Rm!X&}TMY2a z`G!6Ffu?8eG0THUC~a9;=zv(2c)=IvOJ>jWB=i~~^+jqq3<{0VB}4DzJZIaw!^G0s z5S$}4o^bIcu10Wb59T{=tH*YW!T|8Vvor#E0UusS?))1xqYAKd%|7fr8qGc|+Rtew zLURC{F;K8WD%q&3v(gAsumKdjp%90QHuSt;84&A;fTyI;y?VF+5xOfYP<((>!HMxF z);Hf^nG#Bm2$KWnLv|+@eUZ37P70y;)AFIoB(IdBfxQ%ZQ!n_&LNhSI{c zM}ARj&On@Buw9*pk^sC`lF_|_rHyoE9q9b`GQ4roF3O;*J>FF7#Glwjx`4M@b-&*| zs_eh~8P(dMi=+XuUq-D;sK2QmQ97n?P;?;EmEHZ)NR3gYu4F?1i{V>bjqt>#-XOlB z()JdY13Zm^7eb>6Iwn`DMVf)&cU)Fe_?PeqM*lDnL=GG0cNky$;dEVF|KIzgyukic_=To)|`VTkU z8?8iw8Vo%r>cvTAN`}r0ww{({a3^m6+7G5+AD5|#XfWqjtZWv8AfP_>qLV2s?gra* zNAO1$i*#FCj07(ic8f|^C{^s6Bo-?N&fhIDD_=cB#lz0Hi&+Lfw@})z1JPqbqjnMp z9I7KzeDo(>ngK;Tk=Bl(Ju2U#tZ)PB{59JklTmh5)Q<*TPqc(4TZ7k$lu0*g(l1HZ zJRn1m4<%)P-+9U2nOnm|$$~=+rs+q8|1vb|IrvuT9l=;3;FF)~Une&vxpZKPg4p56FyeqF9V_lyde37*G!e&qU8kA`lQJ z494|2zt)rh19xGi9Mwy&wkvHlpw4etS!xG)ZMqIyM{HBAh)#tlb3LN`s_+E4MhVKh zWAqsQgv?{MixE342c6w4pCr7LF315=^~Z=<2R(eZg+a zmboF9lFR8YL=Dn$AXk^13+{y6FlYhua-jhrE4vu00m93*9h=vem$d1W==7-w7vddM@4GbzCN=OxIL7p)+8bcx?d#4kybg$e5#PlgB2fBn&Aus3oidl%k|DP-o+NCeXtWBkt^ KFS7q_f!eAs7)?Tn5tHmYOB$m|7r#T-$X?y2b8n^k4S(^whRi zE=#E1?)mZk-0wLYIP%DVQAZ<;dA4JeZxqe3U3G9mYt6O~TZfJr4iNwi0?2BMiHQ4J-RKCMdN`C!8_&rCPo`z>p15pIZLb`jZ29YbzX6I(^Y;J% diff --git a/proto/waVnameCert/WAWebProtobufsVnameCert.pb.go b/proto/waVnameCert/WAWebProtobufsVnameCert.pb.go index fd8bf844..0fec7064 100644 --- a/proto/waVnameCert/WAWebProtobufsVnameCert.pb.go +++ b/proto/waVnameCert/WAWebProtobufsVnameCert.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waVnameCert/WAWebProtobufsVnameCert.proto @@ -9,11 +9,10 @@ package waVnameCert import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -729,17 +728,69 @@ func (x *VerifiedNameCertificate_Details) GetIssueTime() uint64 { var File_waVnameCert_WAWebProtobufsVnameCert_proto protoreflect.FileDescriptor -//go:embed WAWebProtobufsVnameCert.pb.raw -var file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDesc []byte +const file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDesc = "" + + "\n" + + ")waVnameCert/WAWebProtobufsVnameCert.proto\x12\x17WAWebProtobufsVnameCert\"\x9e\x03\n" + + "\x12BizAccountLinkInfo\x120\n" + + "\x13whatsappBizAcctFbid\x18\x01 \x01(\x04R\x13whatsappBizAcctFbid\x12.\n" + + "\x12whatsappAcctNumber\x18\x02 \x01(\tR\x12whatsappAcctNumber\x12\x1c\n" + + "\tissueTime\x18\x03 \x01(\x04R\tissueTime\x12]\n" + + "\vhostStorage\x18\x04 \x01(\x0e2;.WAWebProtobufsVnameCert.BizAccountLinkInfo.HostStorageTypeR\vhostStorage\x12Y\n" + + "\vaccountType\x18\x05 \x01(\x0e27.WAWebProtobufsVnameCert.BizAccountLinkInfo.AccountTypeR\vaccountType\"\x1d\n" + + "\vAccountType\x12\x0e\n" + + "\n" + + "ENTERPRISE\x10\x00\"/\n" + + "\x0fHostStorageType\x12\x0e\n" + + "\n" + + "ON_PREMISE\x10\x00\x12\f\n" + + "\bFACEBOOK\x10\x01\"\x81\x05\n" + + "\x0fBizIdentityInfo\x12S\n" + + "\x06vlevel\x18\x01 \x01(\x0e2;.WAWebProtobufsVnameCert.BizIdentityInfo.VerifiedLevelValueR\x06vlevel\x12N\n" + + "\tvnameCert\x18\x02 \x01(\v20.WAWebProtobufsVnameCert.VerifiedNameCertificateR\tvnameCert\x12\x16\n" + + "\x06signed\x18\x03 \x01(\bR\x06signed\x12\x18\n" + + "\arevoked\x18\x04 \x01(\bR\arevoked\x12Z\n" + + "\vhostStorage\x18\x05 \x01(\x0e28.WAWebProtobufsVnameCert.BizIdentityInfo.HostStorageTypeR\vhostStorage\x12]\n" + + "\factualActors\x18\x06 \x01(\x0e29.WAWebProtobufsVnameCert.BizIdentityInfo.ActualActorsTypeR\factualActors\x12$\n" + + "\rprivacyModeTS\x18\a \x01(\x04R\rprivacyModeTS\x12(\n" + + "\x0ffeatureControls\x18\b \x01(\x04R\x0ffeatureControls\"%\n" + + "\x10ActualActorsType\x12\b\n" + + "\x04SELF\x10\x00\x12\a\n" + + "\x03BSP\x10\x01\"/\n" + + "\x0fHostStorageType\x12\x0e\n" + + "\n" + + "ON_PREMISE\x10\x00\x12\f\n" + + "\bFACEBOOK\x10\x01\"4\n" + + "\x12VerifiedLevelValue\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\a\n" + + "\x03LOW\x10\x01\x12\b\n" + + "\x04HIGH\x10\x02\"S\n" + + "\rLocalizedName\x12\x0e\n" + + "\x02lg\x18\x01 \x01(\tR\x02lg\x12\x0e\n" + + "\x02lc\x18\x02 \x01(\tR\x02lc\x12\"\n" + + "\fverifiedName\x18\x03 \x01(\tR\fverifiedName\"\xc9\x02\n" + + "\x17VerifiedNameCertificate\x12\x18\n" + + "\adetails\x18\x01 \x01(\fR\adetails\x12\x1c\n" + + "\tsignature\x18\x02 \x01(\fR\tsignature\x12(\n" + + "\x0fserverSignature\x18\x03 \x01(\fR\x0fserverSignature\x1a\xcb\x01\n" + + "\aDetails\x12\x16\n" + + "\x06serial\x18\x01 \x01(\x04R\x06serial\x12\x16\n" + + "\x06issuer\x18\x02 \x01(\tR\x06issuer\x12\"\n" + + "\fverifiedName\x18\x04 \x01(\tR\fverifiedName\x12N\n" + + "\x0elocalizedNames\x18\b \x03(\v2&.WAWebProtobufsVnameCert.LocalizedNameR\x0elocalizedNames\x12\x1c\n" + + "\tissueTime\x18\n" + + " \x01(\x04R\tissueTime\"\x8d\x01\n" + + "\x11BizAccountPayload\x12N\n" + + "\tvnameCert\x18\x01 \x01(\v20.WAWebProtobufsVnameCert.VerifiedNameCertificateR\tvnameCert\x12(\n" + + "\x0fbizAcctLinkInfo\x18\x02 \x01(\fR\x0fbizAcctLinkInfoB'Z%github.com/techwiz37/waSocket/proto/waVnameCert" var ( file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDescOnce sync.Once - file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDescData = file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDesc + file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDescData []byte ) func file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDescGZIP() []byte { file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDescOnce.Do(func() { - file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDescData = protoimpl.X.CompressGZIP(file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDescData) + file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDesc), len(file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDesc))) }) return file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDescData } @@ -784,7 +835,7 @@ func file_waVnameCert_WAWebProtobufsVnameCert_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDesc), len(file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDesc)), NumEnums: 5, NumMessages: 6, NumExtensions: 0, @@ -796,7 +847,6 @@ func file_waVnameCert_WAWebProtobufsVnameCert_proto_init() { MessageInfos: file_waVnameCert_WAWebProtobufsVnameCert_proto_msgTypes, }.Build() File_waVnameCert_WAWebProtobufsVnameCert_proto = out.File - file_waVnameCert_WAWebProtobufsVnameCert_proto_rawDesc = nil file_waVnameCert_WAWebProtobufsVnameCert_proto_goTypes = nil file_waVnameCert_WAWebProtobufsVnameCert_proto_depIdxs = nil } diff --git a/proto/waVnameCert/WAWebProtobufsVnameCert.pb.raw b/proto/waVnameCert/WAWebProtobufsVnameCert.pb.raw deleted file mode 100644 index 0b6c10c19415cd3f46f3c2cb5ce35ca8ac68d6d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1731 zcmbtV-EPw`6kdO}wx``zjKm@Y5{ej%n{=9x0CClhj#cZ@$|s+^>y= z3+=23t3NV;YW8i_G~Hmtn)c|rG3vW$A0FRa5$2Qecot z*wWI!wsHMbZb2o;A5{NS<>ZMd4_Tw$JSwlD z9As)nn~USYYI+MOqHZApRD|3Y{X}nd^%;1x)h(yQdB=^<$K|wYz-H4miDTbVOEAtQ zn|20Ld)8fhD|fhz9%A<3}6wJz}(!aMJzsR|;~UW=BY+^4pTxbINk1N=x|Vh>FHoXx*t! z$T(3Qe@$D?a?1qMnZ4q{tCfn2br>hI)RFiEexr9Q;~mBW$D-Y4P@dY0{{R3 diff --git a/proto/waWa6/WAWebProtobufsWa6.pb.go b/proto/waWa6/WAWebProtobufsWa6.pb.go index 3496c303..ba11f2c3 100644 --- a/proto/waWa6/WAWebProtobufsWa6.pb.go +++ b/proto/waWa6/WAWebProtobufsWa6.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waWa6/WAWebProtobufsWa6.proto @@ -9,11 +9,10 @@ package waWa6 import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -2000,17 +1999,246 @@ func (x *HandshakeMessage_ClientHello) GetPayload() []byte { var File_waWa6_WAWebProtobufsWa6_proto protoreflect.FileDescriptor -//go:embed WAWebProtobufsWa6.pb.raw -var file_waWa6_WAWebProtobufsWa6_proto_rawDesc []byte +const file_waWa6_WAWebProtobufsWa6_proto_rawDesc = "" + + "\n" + + "\x1dwaWa6/WAWebProtobufsWa6.proto\x12\x11WAWebProtobufsWa6\"\xa3)\n" + + "\rClientPayload\x12\x1a\n" + + "\busername\x18\x01 \x01(\x04R\busername\x12\x18\n" + + "\apassive\x18\x03 \x01(\bR\apassive\x12H\n" + + "\tuserAgent\x18\x05 \x01(\v2*.WAWebProtobufsWa6.ClientPayload.UserAgentR\tuserAgent\x12B\n" + + "\awebInfo\x18\x06 \x01(\v2(.WAWebProtobufsWa6.ClientPayload.WebInfoR\awebInfo\x12\x1a\n" + + "\bpushName\x18\a \x01(\tR\bpushName\x12\x1c\n" + + "\tsessionID\x18\t \x01(\x0fR\tsessionID\x12\"\n" + + "\fshortConnect\x18\n" + + " \x01(\bR\fshortConnect\x12N\n" + + "\vconnectType\x18\f \x01(\x0e2,.WAWebProtobufsWa6.ClientPayload.ConnectTypeR\vconnectType\x12T\n" + + "\rconnectReason\x18\r \x01(\x0e2..WAWebProtobufsWa6.ClientPayload.ConnectReasonR\rconnectReason\x12\x16\n" + + "\x06shards\x18\x0e \x03(\x05R\x06shards\x12H\n" + + "\tdnsSource\x18\x0f \x01(\v2*.WAWebProtobufsWa6.ClientPayload.DNSSourceR\tdnsSource\x120\n" + + "\x13connectAttemptCount\x18\x10 \x01(\rR\x13connectAttemptCount\x12\x16\n" + + "\x06device\x18\x12 \x01(\rR\x06device\x12l\n" + + "\x11devicePairingData\x18\x13 \x01(\v2>.WAWebProtobufsWa6.ClientPayload.DevicePairingRegistrationDataR\x11devicePairingData\x12B\n" + + "\aproduct\x18\x14 \x01(\x0e2(.WAWebProtobufsWa6.ClientPayload.ProductR\aproduct\x12\x14\n" + + "\x05fbCat\x18\x15 \x01(\fR\x05fbCat\x12 \n" + + "\vfbUserAgent\x18\x16 \x01(\fR\vfbUserAgent\x12\x0e\n" + + "\x02oc\x18\x17 \x01(\bR\x02oc\x12\x0e\n" + + "\x02lc\x18\x18 \x01(\x05R\x02lc\x12Z\n" + + "\x0fiosAppExtension\x18\x1e \x01(\x0e20.WAWebProtobufsWa6.ClientPayload.IOSAppExtensionR\x0fiosAppExtension\x12\x18\n" + + "\afbAppID\x18\x1f \x01(\x04R\afbAppID\x12\x1e\n" + + "\n" + + "fbDeviceID\x18 \x01(\fR\n" + + "fbDeviceID\x12\x12\n" + + "\x04pull\x18! \x01(\bR\x04pull\x12\"\n" + + "\fpaddingBytes\x18\" \x01(\fR\fpaddingBytes\x12\x1c\n" + + "\tyearClass\x18$ \x01(\x05R\tyearClass\x12\x1a\n" + + "\bmemClass\x18% \x01(\x05R\bmemClass\x12N\n" + + "\vinteropData\x18& \x01(\v2,.WAWebProtobufsWa6.ClientPayload.InteropDataR\vinteropData\x12i\n" + + "\x14trafficAnonymization\x18( \x01(\x0e25.WAWebProtobufsWa6.ClientPayload.TrafficAnonymizationR\x14trafficAnonymization\x12$\n" + + "\rlidDbMigrated\x18) \x01(\bR\rlidDbMigrated\x12N\n" + + "\vaccountType\x18* \x01(\x0e2,.WAWebProtobufsWa6.ClientPayload.AccountTypeR\vaccountType\x1a\xea\x01\n" + + "\tDNSSource\x12\\\n" + + "\tdnsMethod\x18\x0f \x01(\x0e2>.WAWebProtobufsWa6.ClientPayload.DNSSource.DNSResolutionMethodR\tdnsMethod\x12\x1c\n" + + "\tappCached\x18\x10 \x01(\bR\tappCached\"a\n" + + "\x13DNSResolutionMethod\x12\n" + + "\n" + + "\x06SYSTEM\x10\x00\x12\n" + + "\n" + + "\x06GOOGLE\x10\x01\x12\r\n" + + "\tHARDCODED\x10\x02\x12\f\n" + + "\bOVERRIDE\x10\x03\x12\f\n" + + "\bFALLBACK\x10\x04\x12\a\n" + + "\x03MNS\x10\x05\x1a\xf4\x06\n" + + "\aWebInfo\x12\x1a\n" + + "\brefToken\x18\x01 \x01(\tR\brefToken\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x12V\n" + + "\vwebdPayload\x18\x03 \x01(\v24.WAWebProtobufsWa6.ClientPayload.WebInfo.WebdPayloadR\vwebdPayload\x12_\n" + + "\x0ewebSubPlatform\x18\x04 \x01(\x0e27.WAWebProtobufsWa6.ClientPayload.WebInfo.WebSubPlatformR\x0ewebSubPlatform\x1a\x91\x04\n" + + "\vWebdPayload\x122\n" + + "\x14usesParticipantInKey\x18\x01 \x01(\bR\x14usesParticipantInKey\x128\n" + + "\x17supportsStarredMessages\x18\x02 \x01(\bR\x17supportsStarredMessages\x12:\n" + + "\x18supportsDocumentMessages\x18\x03 \x01(\bR\x18supportsDocumentMessages\x120\n" + + "\x13supportsURLMessages\x18\x04 \x01(\bR\x13supportsURLMessages\x12.\n" + + "\x12supportsMediaRetry\x18\x05 \x01(\bR\x12supportsMediaRetry\x12*\n" + + "\x10supportsE2EImage\x18\x06 \x01(\bR\x10supportsE2EImage\x12*\n" + + "\x10supportsE2EVideo\x18\a \x01(\bR\x10supportsE2EVideo\x12*\n" + + "\x10supportsE2EAudio\x18\b \x01(\bR\x10supportsE2EAudio\x120\n" + + "\x13supportsE2EDocument\x18\t \x01(\bR\x13supportsE2EDocument\x12$\n" + + "\rdocumentTypes\x18\n" + + " \x01(\tR\rdocumentTypes\x12\x1a\n" + + "\bfeatures\x18\v \x01(\fR\bfeatures\"f\n" + + "\x0eWebSubPlatform\x12\x0f\n" + + "\vWEB_BROWSER\x10\x00\x12\r\n" + + "\tAPP_STORE\x10\x01\x12\r\n" + + "\tWIN_STORE\x10\x02\x12\n" + + "\n" + + "\x06DARWIN\x10\x03\x12\t\n" + + "\x05WIN32\x10\x04\x12\x0e\n" + + "\n" + + "WIN_HYBRID\x10\x05\x1a\xc2\f\n" + + "\tUserAgent\x12O\n" + + "\bplatform\x18\x01 \x01(\x0e23.WAWebProtobufsWa6.ClientPayload.UserAgent.PlatformR\bplatform\x12U\n" + + "\n" + + "appVersion\x18\x02 \x01(\v25.WAWebProtobufsWa6.ClientPayload.UserAgent.AppVersionR\n" + + "appVersion\x12\x10\n" + + "\x03mcc\x18\x03 \x01(\tR\x03mcc\x12\x10\n" + + "\x03mnc\x18\x04 \x01(\tR\x03mnc\x12\x1c\n" + + "\tosVersion\x18\x05 \x01(\tR\tosVersion\x12\"\n" + + "\fmanufacturer\x18\x06 \x01(\tR\fmanufacturer\x12\x16\n" + + "\x06device\x18\a \x01(\tR\x06device\x12$\n" + + "\rosBuildNumber\x18\b \x01(\tR\rosBuildNumber\x12\x18\n" + + "\aphoneID\x18\t \x01(\tR\aphoneID\x12a\n" + + "\x0ereleaseChannel\x18\n" + + " \x01(\x0e29.WAWebProtobufsWa6.ClientPayload.UserAgent.ReleaseChannelR\x0ereleaseChannel\x124\n" + + "\x15localeLanguageIso6391\x18\v \x01(\tR\x15localeLanguageIso6391\x12@\n" + + "\x1blocaleCountryIso31661Alpha2\x18\f \x01(\tR\x1blocaleCountryIso31661Alpha2\x12 \n" + + "\vdeviceBoard\x18\r \x01(\tR\vdeviceBoard\x12 \n" + + "\vdeviceExpID\x18\x0e \x01(\tR\vdeviceExpID\x12U\n" + + "\n" + + "deviceType\x18\x0f \x01(\x0e25.WAWebProtobufsWa6.ClientPayload.UserAgent.DeviceTypeR\n" + + "deviceType\x12(\n" + + "\x0fdeviceModelType\x18\x10 \x01(\tR\x0fdeviceModelType\x1a\x9a\x01\n" + + "\n" + + "AppVersion\x12\x18\n" + + "\aprimary\x18\x01 \x01(\rR\aprimary\x12\x1c\n" + + "\tsecondary\x18\x02 \x01(\rR\tsecondary\x12\x1a\n" + + "\btertiary\x18\x03 \x01(\rR\btertiary\x12\x1e\n" + + "\n" + + "quaternary\x18\x04 \x01(\rR\n" + + "quaternary\x12\x18\n" + + "\aquinary\x18\x05 \x01(\rR\aquinary\"F\n" + + "\n" + + "DeviceType\x12\t\n" + + "\x05PHONE\x10\x00\x12\n" + + "\n" + + "\x06TABLET\x10\x01\x12\v\n" + + "\aDESKTOP\x10\x02\x12\f\n" + + "\bWEARABLE\x10\x03\x12\x06\n" + + "\x02VR\x10\x04\"=\n" + + "\x0eReleaseChannel\x12\v\n" + + "\aRELEASE\x10\x00\x12\b\n" + + "\x04BETA\x10\x01\x12\t\n" + + "\x05ALPHA\x10\x02\x12\t\n" + + "\x05DEBUG\x10\x03\"\x8a\x04\n" + + "\bPlatform\x12\v\n" + + "\aANDROID\x10\x00\x12\a\n" + + "\x03IOS\x10\x01\x12\x11\n" + + "\rWINDOWS_PHONE\x10\x02\x12\x0e\n" + + "\n" + + "BLACKBERRY\x10\x03\x12\x0f\n" + + "\vBLACKBERRYX\x10\x04\x12\a\n" + + "\x03S40\x10\x05\x12\a\n" + + "\x03S60\x10\x06\x12\x11\n" + + "\rPYTHON_CLIENT\x10\a\x12\t\n" + + "\x05TIZEN\x10\b\x12\x0e\n" + + "\n" + + "ENTERPRISE\x10\t\x12\x0f\n" + + "\vSMB_ANDROID\x10\n" + + "\x12\t\n" + + "\x05KAIOS\x10\v\x12\v\n" + + "\aSMB_IOS\x10\f\x12\v\n" + + "\aWINDOWS\x10\r\x12\a\n" + + "\x03WEB\x10\x0e\x12\n" + + "\n" + + "\x06PORTAL\x10\x0f\x12\x11\n" + + "\rGREEN_ANDROID\x10\x10\x12\x10\n" + + "\fGREEN_IPHONE\x10\x11\x12\x10\n" + + "\fBLUE_ANDROID\x10\x12\x12\x0f\n" + + "\vBLUE_IPHONE\x10\x13\x12\x12\n" + + "\x0eFBLITE_ANDROID\x10\x14\x12\x11\n" + + "\rMLITE_ANDROID\x10\x15\x12\x12\n" + + "\x0eIGLITE_ANDROID\x10\x16\x12\b\n" + + "\x04PAGE\x10\x17\x12\t\n" + + "\x05MACOS\x10\x18\x12\x0e\n" + + "\n" + + "OCULUS_MSG\x10\x19\x12\x0f\n" + + "\vOCULUS_CALL\x10\x1a\x12\t\n" + + "\x05MILAN\x10\x1b\x12\b\n" + + "\x04CAPI\x10\x1c\x12\n" + + "\n" + + "\x06WEAROS\x10\x1d\x12\f\n" + + "\bARDEVICE\x10\x1e\x12\f\n" + + "\bVRDEVICE\x10\x1f\x12\f\n" + + "\bBLUE_WEB\x10 \x12\b\n" + + "\x04IPAD\x10!\x12\b\n" + + "\x04TEST\x10\"\x12\x11\n" + + "\rSMART_GLASSES\x10#\x1aq\n" + + "\vInteropData\x12\x1c\n" + + "\taccountID\x18\x01 \x01(\x04R\taccountID\x12\x14\n" + + "\x05token\x18\x02 \x01(\fR\x05token\x12.\n" + + "\x12enableReadReceipts\x18\x03 \x01(\bR\x12enableReadReceipts\x1a\xfd\x01\n" + + "\x1dDevicePairingRegistrationData\x12\x16\n" + + "\x06eRegid\x18\x01 \x01(\fR\x06eRegid\x12\x1a\n" + + "\beKeytype\x18\x02 \x01(\fR\beKeytype\x12\x16\n" + + "\x06eIdent\x18\x03 \x01(\fR\x06eIdent\x12\x18\n" + + "\aeSkeyID\x18\x04 \x01(\fR\aeSkeyID\x12\x1a\n" + + "\beSkeyVal\x18\x05 \x01(\fR\beSkeyVal\x12\x1a\n" + + "\beSkeySig\x18\x06 \x01(\fR\beSkeySig\x12\x1c\n" + + "\tbuildHash\x18\a \x01(\fR\tbuildHash\x12 \n" + + "\vdeviceProps\x18\b \x01(\fR\vdeviceProps\"-\n" + + "\x14TrafficAnonymization\x12\a\n" + + "\x03OFF\x10\x00\x12\f\n" + + "\bSTANDARD\x10\x01\"%\n" + + "\vAccountType\x12\v\n" + + "\aDEFAULT\x10\x00\x12\t\n" + + "\x05GUEST\x10\x01\"W\n" + + "\aProduct\x12\f\n" + + "\bWHATSAPP\x10\x00\x12\r\n" + + "\tMESSENGER\x10\x01\x12\v\n" + + "\aINTEROP\x10\x02\x12\x10\n" + + "\fINTEROP_MSGR\x10\x03\x12\x10\n" + + "\fWHATSAPP_LID\x10\x04\"\xb0\x02\n" + + "\vConnectType\x12\x14\n" + + "\x10CELLULAR_UNKNOWN\x10\x00\x12\x10\n" + + "\fWIFI_UNKNOWN\x10\x01\x12\x11\n" + + "\rCELLULAR_EDGE\x10d\x12\x11\n" + + "\rCELLULAR_IDEN\x10e\x12\x11\n" + + "\rCELLULAR_UMTS\x10f\x12\x11\n" + + "\rCELLULAR_EVDO\x10g\x12\x11\n" + + "\rCELLULAR_GPRS\x10h\x12\x12\n" + + "\x0eCELLULAR_HSDPA\x10i\x12\x12\n" + + "\x0eCELLULAR_HSUPA\x10j\x12\x11\n" + + "\rCELLULAR_HSPA\x10k\x12\x11\n" + + "\rCELLULAR_CDMA\x10l\x12\x12\n" + + "\x0eCELLULAR_1XRTT\x10m\x12\x12\n" + + "\x0eCELLULAR_EHRPD\x10n\x12\x10\n" + + "\fCELLULAR_LTE\x10o\x12\x12\n" + + "\x0eCELLULAR_HSPAP\x10p\"\x86\x01\n" + + "\rConnectReason\x12\b\n" + + "\x04PUSH\x10\x00\x12\x12\n" + + "\x0eUSER_ACTIVATED\x10\x01\x12\r\n" + + "\tSCHEDULED\x10\x02\x12\x13\n" + + "\x0fERROR_RECONNECT\x10\x03\x12\x12\n" + + "\x0eNETWORK_SWITCH\x10\x04\x12\x12\n" + + "\x0ePING_RECONNECT\x10\x05\x12\v\n" + + "\aUNKNOWN\x10\x06\"T\n" + + "\x0fIOSAppExtension\x12\x13\n" + + "\x0fSHARE_EXTENSION\x10\x00\x12\x15\n" + + "\x11SERVICE_EXTENSION\x10\x01\x12\x15\n" + + "\x11INTENTS_EXTENSION\x10\x02\"\x8e\x04\n" + + "\x10HandshakeMessage\x12Q\n" + + "\vclientHello\x18\x02 \x01(\v2/.WAWebProtobufsWa6.HandshakeMessage.ClientHelloR\vclientHello\x12Q\n" + + "\vserverHello\x18\x03 \x01(\v2/.WAWebProtobufsWa6.HandshakeMessage.ServerHelloR\vserverHello\x12T\n" + + "\fclientFinish\x18\x04 \x01(\v20.WAWebProtobufsWa6.HandshakeMessage.ClientFinishR\fclientFinish\x1a@\n" + + "\fClientFinish\x12\x16\n" + + "\x06static\x18\x01 \x01(\fR\x06static\x12\x18\n" + + "\apayload\x18\x02 \x01(\fR\apayload\x1a]\n" + + "\vServerHello\x12\x1c\n" + + "\tephemeral\x18\x01 \x01(\fR\tephemeral\x12\x16\n" + + "\x06static\x18\x02 \x01(\fR\x06static\x12\x18\n" + + "\apayload\x18\x03 \x01(\fR\apayload\x1a]\n" + + "\vClientHello\x12\x1c\n" + + "\tephemeral\x18\x01 \x01(\fR\tephemeral\x12\x16\n" + + "\x06static\x18\x02 \x01(\fR\x06static\x12\x18\n" + + "\apayload\x18\x03 \x01(\fR\apayloadB!Z\x1fgithub.com/techwiz37/waSocket/proto/waWa6" var ( file_waWa6_WAWebProtobufsWa6_proto_rawDescOnce sync.Once - file_waWa6_WAWebProtobufsWa6_proto_rawDescData = file_waWa6_WAWebProtobufsWa6_proto_rawDesc + file_waWa6_WAWebProtobufsWa6_proto_rawDescData []byte ) func file_waWa6_WAWebProtobufsWa6_proto_rawDescGZIP() []byte { file_waWa6_WAWebProtobufsWa6_proto_rawDescOnce.Do(func() { - file_waWa6_WAWebProtobufsWa6_proto_rawDescData = protoimpl.X.CompressGZIP(file_waWa6_WAWebProtobufsWa6_proto_rawDescData) + file_waWa6_WAWebProtobufsWa6_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waWa6_WAWebProtobufsWa6_proto_rawDesc), len(file_waWa6_WAWebProtobufsWa6_proto_rawDesc))) }) return file_waWa6_WAWebProtobufsWa6_proto_rawDescData } @@ -2080,7 +2308,7 @@ func file_waWa6_WAWebProtobufsWa6_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waWa6_WAWebProtobufsWa6_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waWa6_WAWebProtobufsWa6_proto_rawDesc), len(file_waWa6_WAWebProtobufsWa6_proto_rawDesc)), NumEnums: 11, NumMessages: 12, NumExtensions: 0, @@ -2092,7 +2320,6 @@ func file_waWa6_WAWebProtobufsWa6_proto_init() { MessageInfos: file_waWa6_WAWebProtobufsWa6_proto_msgTypes, }.Build() File_waWa6_WAWebProtobufsWa6_proto = out.File - file_waWa6_WAWebProtobufsWa6_proto_rawDesc = nil file_waWa6_WAWebProtobufsWa6_proto_goTypes = nil file_waWa6_WAWebProtobufsWa6_proto_depIdxs = nil } diff --git a/proto/waWa6/WAWebProtobufsWa6.pb.raw b/proto/waWa6/WAWebProtobufsWa6.pb.raw deleted file mode 100644 index e4ad8a4ab41223aa17d49c3f1a35a0809d78b2a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5900 zcmb_g&2rnw5nf4@L=JxhkN*(udTleiDX%M$ZQ60NsY+@=0wPfYL1q9-wks(XNDM{9 zBtR3Oy~+dRkVC3+%{4EOXUOB^oNKDmJpf2hrXy`tPC);C(=*fE(=+7W2j|Rr`Q%JF z$ML0Hb4*LL7U`v{QK?)&ra`pf)Kdc#Jz?;LBx!cywLF*ov)#&^u%= z96NJ2lq(N*9__M(!ku#c&T)7IWKujzdKlj3D?nJP^h{8Sw z#t4Iaa2K$>w_uD)?dk}FWI}z2_xOk2BDF8Kl+9octNPlX4>}=_c2Q4FF{zTJ-u=r^p2IaW0!$2dq)FM zfw;d9m^qe`^h-iUgLoZ5_yB|@mf=uJanCC+G}^ zm@uM8pS9g z@#A0IR%bSAIKwf_4%0o)R*b4cZf>xrgzQJ2gi1tYZaIM9lJ8_~>FrUgf zv9rJUA zv?6Cd=WZKLMCTl`7?&x}J|(8VB64b}2E)Y^PWz>4+!1_Ij>ko6+hfMk4A&>mHi_sF zp{YfiyPm^%G`|qtMV@Vt(8okd^|hL&Phm!)hsd*!_?L7~J(mZfRan;*{7bsZ!u0|< zFWk=J3VwE$;6u7dqS46AG9$uz;U;T|r63eNM}e&~G0aEYi57EED8kq!wxp{gQh|`j zL=8QFAkpgmI_sQS8iS03EK|DOzGZhyVC+cK=!e zal@ImHn6)vSYLP(*IY~oV2ptSySv5|jrBP2dD4t3vzoB44nx#9RGX)Nu!6s%je%d6LD5xn}zf{@_B3}y1w}Z7(IXX z^5rvSG8;QJ(G?fi|5CwjDen5}0raV&>n*S>Yo(!mk6lYeEM1}@SQs-ghB!sBoxRR! zzKWT+=@C7728cc)2Qh3raQQ@F<2hGgm)VDZ+ahEYcw!^x-qe9Qg*j2ij!}^Dy#xAX z7iCyx%Xsfd7?|GB?L;05v5=P8lE&`r-2yrZxRZet>t&f`I5_6Jg(rj-drfJl`sWVSim9>=RFu!~M2EH&3~!J!lo}Pv zRX_G|8>>&lN! zjb=)D1O%SOx=aVR3kYbn>;2Rlg1RRP`cp(NQHDebiNranjDtaGl`2>?yB%gLhID`f zH<_lHOE3wFOetpR@q}(5r*8DLr4Eg!1e`?WCN$cW;#=C=? z&{dk6bQh=5RvO^Bj8pD3dPdLcx2>l1BOEZH8_-rsheB636jS;f0UAnIm%hN6VGsbq zJ?y}sJJU|}h9-T9)M-lHM@mcx*W&@&>s>{a9^#*^S+-O~->tU7?0(ZwEK9SbA0NIW z#Y~qjddaw_g#^cx$w4ofGVq!eiOvoa2Ci9xz`lU{&S1jf=Ib&(RhJy*C;VhM$5$)THy@SY#Lu%v~J?&5m~CM?d(lnP4^cJ<<9Xjq#I>vRLSRHPNNeDvwtWMNLazFcZBlHk9#|j< zq=se~Jwsvro_S(+&P*5u?et@P$q_YVsi&!s3NFUqk_9&kQ{ro^UfZ^$(HcuTRXfu8 z8mrl5mNdqsTVk~=wW~epi}R|Fi`Yjh8Hb4HD&`XSHCV!0#S3fqkW6>!*qhw=8k#vKlQ-?HS_I zb(0)Gk?pWP(;6Mq)EYKy4A_~Peb!+oed|oO8!afg!0YN}Go!bQ@saMzUezWCm);>L zfLn0G)B4&gTQe=agS&T|+yI}js$|$($j0z6Z7ajxuKp!Qq?Y5m@SydUCpQQBTX=>O zFPAMonFJy|i?t^k+M>&r$t$EVgO|7!213G`mc@X_y;3~FvFCe` zzE~298((ui;bv^d)=&<=gQyUG$5O0CVFWK4!?b?IlxRodcip6X!Go=M<~{s99DXaG zvBdD%m{0i}Y7>@WC^1V$20ku=$zWOdxCUn7V+X}b{=ebt58vEB500kJ;%MYO`7m~( SaLR)ZPvCVf3Z95Z@c#mF52geF diff --git a/proto/waWeb/WAWebProtobufsWeb.pb.go b/proto/waWeb/WAWebProtobufsWeb.pb.go index 5787f349..3872eefa 100644 --- a/proto/waWeb/WAWebProtobufsWeb.pb.go +++ b/proto/waWeb/WAWebProtobufsWeb.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waWeb/WAWebProtobufsWeb.proto @@ -9,14 +9,13 @@ package waWeb import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" waCommon "github.com/techwiz37/waSocket/proto/waCommon" waE2E "github.com/techwiz37/waSocket/proto/waE2E" - - _ "embed" ) const ( @@ -307,6 +306,8 @@ const ( WebMessageInfo_CHANGE_LID WebMessageInfo_StubType = 213 WebMessageInfo_BIZ_CUSTOMER_3PD_DATA_SHARING_OPT_IN_MESSAGE WebMessageInfo_StubType = 214 WebMessageInfo_BIZ_CUSTOMER_3PD_DATA_SHARING_OPT_OUT_MESSAGE WebMessageInfo_StubType = 215 + WebMessageInfo_CHANGE_LIMIT_SHARING WebMessageInfo_StubType = 216 + WebMessageInfo_GROUP_MEMBER_LINK_MODE WebMessageInfo_StubType = 217 ) // Enum value maps for WebMessageInfo_StubType. @@ -528,6 +529,8 @@ var ( 213: "CHANGE_LID", 214: "BIZ_CUSTOMER_3PD_DATA_SHARING_OPT_IN_MESSAGE", 215: "BIZ_CUSTOMER_3PD_DATA_SHARING_OPT_OUT_MESSAGE", + 216: "CHANGE_LIMIT_SHARING", + 217: "GROUP_MEMBER_LINK_MODE", } WebMessageInfo_StubType_value = map[string]int32{ "UNKNOWN": 0, @@ -746,6 +749,8 @@ var ( "CHANGE_LID": 213, "BIZ_CUSTOMER_3PD_DATA_SHARING_OPT_IN_MESSAGE": 214, "BIZ_CUSTOMER_3PD_DATA_SHARING_OPT_OUT_MESSAGE": 215, + "CHANGE_LIMIT_SHARING": 216, + "GROUP_MEMBER_LINK_MODE": 217, } ) @@ -3698,17 +3703,559 @@ func (x *Citation) GetImageURL() string { var File_waWeb_WAWebProtobufsWeb_proto protoreflect.FileDescriptor -//go:embed WAWebProtobufsWeb.pb.raw -var file_waWeb_WAWebProtobufsWeb_proto_rawDesc []byte +const file_waWeb_WAWebProtobufsWeb_proto_rawDesc = "" + + "\n" + + "\x1dwaWeb/WAWebProtobufsWeb.proto\x12\x11WAWebProtobufsWeb\x1a\x1dwaE2E/WAWebProtobufsE2E.proto\x1a\x17waCommon/WACommon.proto\"\x94V\n" + + "\x0eWebMessageInfo\x12&\n" + + "\x03key\x18\x01 \x02(\v2\x14.WACommon.MessageKeyR\x03key\x124\n" + + "\amessage\x18\x02 \x01(\v2\x1a.WAWebProtobufsE2E.MessageR\amessage\x12*\n" + + "\x10messageTimestamp\x18\x03 \x01(\x04R\x10messageTimestamp\x12@\n" + + "\x06status\x18\x04 \x01(\x0e2(.WAWebProtobufsWeb.WebMessageInfo.StatusR\x06status\x12 \n" + + "\vparticipant\x18\x05 \x01(\tR\vparticipant\x120\n" + + "\x13messageC2STimestamp\x18\x06 \x01(\x04R\x13messageC2STimestamp\x12\x16\n" + + "\x06ignore\x18\x10 \x01(\bR\x06ignore\x12\x18\n" + + "\astarred\x18\x11 \x01(\bR\astarred\x12\x1c\n" + + "\tbroadcast\x18\x12 \x01(\bR\tbroadcast\x12\x1a\n" + + "\bpushName\x18\x13 \x01(\tR\bpushName\x124\n" + + "\x15mediaCiphertextSHA256\x18\x14 \x01(\fR\x15mediaCiphertextSHA256\x12\x1c\n" + + "\tmulticast\x18\x15 \x01(\bR\tmulticast\x12\x18\n" + + "\aurlText\x18\x16 \x01(\bR\aurlText\x12\x1c\n" + + "\turlNumber\x18\x17 \x01(\bR\turlNumber\x12T\n" + + "\x0fmessageStubType\x18\x18 \x01(\x0e2*.WAWebProtobufsWeb.WebMessageInfo.StubTypeR\x0fmessageStubType\x12\x1e\n" + + "\n" + + "clearMedia\x18\x19 \x01(\bR\n" + + "clearMedia\x124\n" + + "\x15messageStubParameters\x18\x1a \x03(\tR\x15messageStubParameters\x12\x1a\n" + + "\bduration\x18\x1b \x01(\rR\bduration\x12\x16\n" + + "\x06labels\x18\x1c \x03(\tR\x06labels\x12@\n" + + "\vpaymentInfo\x18\x1d \x01(\v2\x1e.WAWebProtobufsWeb.PaymentInfoR\vpaymentInfo\x12T\n" + + "\x11finalLiveLocation\x18\x1e \x01(\v2&.WAWebProtobufsE2E.LiveLocationMessageR\x11finalLiveLocation\x12L\n" + + "\x11quotedPaymentInfo\x18\x1f \x01(\v2\x1e.WAWebProtobufsWeb.PaymentInfoR\x11quotedPaymentInfo\x128\n" + + "\x17ephemeralStartTimestamp\x18 \x01(\x04R\x17ephemeralStartTimestamp\x12,\n" + + "\x11ephemeralDuration\x18! \x01(\rR\x11ephemeralDuration\x12*\n" + + "\x10ephemeralOffToOn\x18\" \x01(\bR\x10ephemeralOffToOn\x12.\n" + + "\x12ephemeralOutOfSync\x18# \x01(\bR\x12ephemeralOutOfSync\x12^\n" + + "\x10bizPrivacyStatus\x18$ \x01(\x0e22.WAWebProtobufsWeb.WebMessageInfo.BizPrivacyStatusR\x10bizPrivacyStatus\x12(\n" + + "\x0fverifiedBizName\x18% \x01(\tR\x0fverifiedBizName\x12:\n" + + "\tmediaData\x18& \x01(\v2\x1c.WAWebProtobufsWeb.MediaDataR\tmediaData\x12@\n" + + "\vphotoChange\x18' \x01(\v2\x1e.WAWebProtobufsWeb.PhotoChangeR\vphotoChange\x12@\n" + + "\vuserReceipt\x18( \x03(\v2\x1e.WAWebProtobufsWeb.UserReceiptR\vuserReceipt\x129\n" + + "\treactions\x18) \x03(\v2\x1b.WAWebProtobufsWeb.ReactionR\treactions\x12J\n" + + "\x11quotedStickerData\x18* \x01(\v2\x1c.WAWebProtobufsWeb.MediaDataR\x11quotedStickerData\x12(\n" + + "\x0ffutureproofData\x18+ \x01(\fR\x0ffutureproofData\x12:\n" + + "\tstatusPsa\x18, \x01(\v2\x1c.WAWebProtobufsWeb.StatusPSAR\tstatusPsa\x12?\n" + + "\vpollUpdates\x18- \x03(\v2\x1d.WAWebProtobufsWeb.PollUpdateR\vpollUpdates\x12a\n" + + "\x16pollAdditionalMetadata\x18. \x01(\v2).WAWebProtobufsWeb.PollAdditionalMetadataR\x16pollAdditionalMetadata\x12\x18\n" + + "\aagentID\x18/ \x01(\tR\aagentID\x120\n" + + "\x13statusAlreadyViewed\x180 \x01(\bR\x13statusAlreadyViewed\x12$\n" + + "\rmessageSecret\x181 \x01(\fR\rmessageSecret\x12=\n" + + "\n" + + "keepInChat\x182 \x01(\v2\x1d.WAWebProtobufsWeb.KeepInChatR\n" + + "keepInChat\x12H\n" + + "\x1foriginalSelfAuthorUserJIDString\x183 \x01(\tR\x1foriginalSelfAuthorUserJIDString\x126\n" + + "\x16revokeMessageTimestamp\x184 \x01(\x04R\x16revokeMessageTimestamp\x12:\n" + + "\tpinInChat\x186 \x01(\v2\x1c.WAWebProtobufsWeb.PinInChatR\tpinInChat\x12U\n" + + "\x12premiumMessageInfo\x187 \x01(\v2%.WAWebProtobufsWeb.PremiumMessageInfoR\x12premiumMessageInfo\x12,\n" + + "\x11is1PBizBotMessage\x188 \x01(\bR\x11is1PBizBotMessage\x124\n" + + "\x15isGroupHistoryMessage\x189 \x01(\bR\x15isGroupHistoryMessage\x122\n" + + "\x14botMessageInvokerJID\x18: \x01(\tR\x14botMessageInvokerJID\x12L\n" + + "\x0fcommentMetadata\x18; \x01(\v2\".WAWebProtobufsWeb.CommentMetadataR\x0fcommentMetadata\x12H\n" + + "\x0eeventResponses\x18= \x03(\v2 .WAWebProtobufsWeb.EventResponseR\x0eeventResponses\x12U\n" + + "\x12reportingTokenInfo\x18> \x01(\v2%.WAWebProtobufsWeb.ReportingTokenInfoR\x12reportingTokenInfo\x12.\n" + + "\x12newsletterServerID\x18? \x01(\x04R\x12newsletterServerID\x12d\n" + + "\x17eventAdditionalMetadata\x18@ \x01(\v2*.WAWebProtobufsWeb.EventAdditionalMetadataR\x17eventAdditionalMetadata\x120\n" + + "\x13isMentionedInStatus\x18A \x01(\bR\x13isMentionedInStatus\x12&\n" + + "\x0estatusMentions\x18B \x03(\tR\x0estatusMentions\x12>\n" + + "\x0ftargetMessageID\x18C \x01(\v2\x14.WACommon.MessageKeyR\x0ftargetMessageID\x12E\n" + + "\rmessageAddOns\x18D \x03(\v2\x1f.WAWebProtobufsWeb.MessageAddOnR\rmessageAddOns\x12c\n" + + "\x18statusMentionMessageInfo\x18E \x01(\v2'.WAWebProtobufsWeb.StatusMentionMessageR\x18statusMentionMessageInfo\x12.\n" + + "\x12isSupportAiMessage\x18F \x01(\bR\x12isSupportAiMessage\x122\n" + + "\x14statusMentionSources\x18G \x03(\tR\x14statusMentionSources\x12K\n" + + "\x12supportAiCitations\x18H \x03(\v2\x1b.WAWebProtobufsWeb.CitationR\x12supportAiCitations\x12 \n" + + "\vbotTargetID\x18I \x01(\tR\vbotTargetID\"=\n" + + "\x10BizPrivacyStatus\x12\b\n" + + "\x04E2EE\x10\x00\x12\x06\n" + + "\x02FB\x10\x02\x12\a\n" + + "\x03BSP\x10\x01\x12\x0e\n" + + "\n" + + "BSP_AND_FB\x10\x03\"\xef9\n" + + "\bStubType\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\n" + + "\n" + + "\x06REVOKE\x10\x01\x12\x0e\n" + + "\n" + + "CIPHERTEXT\x10\x02\x12\x0f\n" + + "\vFUTUREPROOF\x10\x03\x12\x1b\n" + + "\x17NON_VERIFIED_TRANSITION\x10\x04\x12\x19\n" + + "\x15UNVERIFIED_TRANSITION\x10\x05\x12\x17\n" + + "\x13VERIFIED_TRANSITION\x10\x06\x12\x18\n" + + "\x14VERIFIED_LOW_UNKNOWN\x10\a\x12\x11\n" + + "\rVERIFIED_HIGH\x10\b\x12\x1c\n" + + "\x18VERIFIED_INITIAL_UNKNOWN\x10\t\x12\x18\n" + + "\x14VERIFIED_INITIAL_LOW\x10\n" + + "\x12\x19\n" + + "\x15VERIFIED_INITIAL_HIGH\x10\v\x12#\n" + + "\x1fVERIFIED_TRANSITION_ANY_TO_NONE\x10\f\x12#\n" + + "\x1fVERIFIED_TRANSITION_ANY_TO_HIGH\x10\r\x12#\n" + + "\x1fVERIFIED_TRANSITION_HIGH_TO_LOW\x10\x0e\x12'\n" + + "#VERIFIED_TRANSITION_HIGH_TO_UNKNOWN\x10\x0f\x12&\n" + + "\"VERIFIED_TRANSITION_UNKNOWN_TO_LOW\x10\x10\x12&\n" + + "\"VERIFIED_TRANSITION_LOW_TO_UNKNOWN\x10\x11\x12#\n" + + "\x1fVERIFIED_TRANSITION_NONE_TO_LOW\x10\x12\x12'\n" + + "#VERIFIED_TRANSITION_NONE_TO_UNKNOWN\x10\x13\x12\x10\n" + + "\fGROUP_CREATE\x10\x14\x12\x18\n" + + "\x14GROUP_CHANGE_SUBJECT\x10\x15\x12\x15\n" + + "\x11GROUP_CHANGE_ICON\x10\x16\x12\x1c\n" + + "\x18GROUP_CHANGE_INVITE_LINK\x10\x17\x12\x1c\n" + + "\x18GROUP_CHANGE_DESCRIPTION\x10\x18\x12\x19\n" + + "\x15GROUP_CHANGE_RESTRICT\x10\x19\x12\x19\n" + + "\x15GROUP_CHANGE_ANNOUNCE\x10\x1a\x12\x19\n" + + "\x15GROUP_PARTICIPANT_ADD\x10\x1b\x12\x1c\n" + + "\x18GROUP_PARTICIPANT_REMOVE\x10\x1c\x12\x1d\n" + + "\x19GROUP_PARTICIPANT_PROMOTE\x10\x1d\x12\x1c\n" + + "\x18GROUP_PARTICIPANT_DEMOTE\x10\x1e\x12\x1c\n" + + "\x18GROUP_PARTICIPANT_INVITE\x10\x1f\x12\x1b\n" + + "\x17GROUP_PARTICIPANT_LEAVE\x10 \x12#\n" + + "\x1fGROUP_PARTICIPANT_CHANGE_NUMBER\x10!\x12\x14\n" + + "\x10BROADCAST_CREATE\x10\"\x12\x11\n" + + "\rBROADCAST_ADD\x10#\x12\x14\n" + + "\x10BROADCAST_REMOVE\x10$\x12\x18\n" + + "\x14GENERIC_NOTIFICATION\x10%\x12\x18\n" + + "\x14E2E_IDENTITY_CHANGED\x10&\x12\x11\n" + + "\rE2E_ENCRYPTED\x10'\x12\x15\n" + + "\x11CALL_MISSED_VOICE\x10(\x12\x15\n" + + "\x11CALL_MISSED_VIDEO\x10)\x12\x1c\n" + + "\x18INDIVIDUAL_CHANGE_NUMBER\x10*\x12\x10\n" + + "\fGROUP_DELETE\x10+\x12&\n" + + "\"GROUP_ANNOUNCE_MODE_MESSAGE_BOUNCE\x10,\x12\x1b\n" + + "\x17CALL_MISSED_GROUP_VOICE\x10-\x12\x1b\n" + + "\x17CALL_MISSED_GROUP_VIDEO\x10.\x12\x16\n" + + "\x12PAYMENT_CIPHERTEXT\x10/\x12\x17\n" + + "\x13PAYMENT_FUTUREPROOF\x100\x12,\n" + + "(PAYMENT_TRANSACTION_STATUS_UPDATE_FAILED\x101\x12.\n" + + "*PAYMENT_TRANSACTION_STATUS_UPDATE_REFUNDED\x102\x123\n" + + "/PAYMENT_TRANSACTION_STATUS_UPDATE_REFUND_FAILED\x103\x125\n" + + "1PAYMENT_TRANSACTION_STATUS_RECEIVER_PENDING_SETUP\x104\x12<\n" + + "8PAYMENT_TRANSACTION_STATUS_RECEIVER_SUCCESS_AFTER_HICCUP\x105\x12)\n" + + "%PAYMENT_ACTION_ACCOUNT_SETUP_REMINDER\x106\x12(\n" + + "$PAYMENT_ACTION_SEND_PAYMENT_REMINDER\x107\x12*\n" + + "&PAYMENT_ACTION_SEND_PAYMENT_INVITATION\x108\x12#\n" + + "\x1fPAYMENT_ACTION_REQUEST_DECLINED\x109\x12\"\n" + + "\x1ePAYMENT_ACTION_REQUEST_EXPIRED\x10:\x12$\n" + + " PAYMENT_ACTION_REQUEST_CANCELLED\x10;\x12)\n" + + "%BIZ_VERIFIED_TRANSITION_TOP_TO_BOTTOM\x10<\x12)\n" + + "%BIZ_VERIFIED_TRANSITION_BOTTOM_TO_TOP\x10=\x12\x11\n" + + "\rBIZ_INTRO_TOP\x10>\x12\x14\n" + + "\x10BIZ_INTRO_BOTTOM\x10?\x12\x13\n" + + "\x0fBIZ_NAME_CHANGE\x10@\x12\x1c\n" + + "\x18BIZ_MOVE_TO_CONSUMER_APP\x10A\x12\x1e\n" + + "\x1aBIZ_TWO_TIER_MIGRATION_TOP\x10B\x12!\n" + + "\x1dBIZ_TWO_TIER_MIGRATION_BOTTOM\x10C\x12\r\n" + + "\tOVERSIZED\x10D\x12(\n" + + "$GROUP_CHANGE_NO_FREQUENTLY_FORWARDED\x10E\x12\x1c\n" + + "\x18GROUP_V4_ADD_INVITE_SENT\x10F\x12&\n" + + "\"GROUP_PARTICIPANT_ADD_REQUEST_JOIN\x10G\x12\x1c\n" + + "\x18CHANGE_EPHEMERAL_SETTING\x10H\x12\x16\n" + + "\x12E2E_DEVICE_CHANGED\x10I\x12\x0f\n" + + "\vVIEWED_ONCE\x10J\x12\x15\n" + + "\x11E2E_ENCRYPTED_NOW\x10K\x12\"\n" + + "\x1eBLUE_MSG_BSP_FB_TO_BSP_PREMISE\x10L\x12\x1e\n" + + "\x1aBLUE_MSG_BSP_FB_TO_SELF_FB\x10M\x12#\n" + + "\x1fBLUE_MSG_BSP_FB_TO_SELF_PREMISE\x10N\x12\x1e\n" + + "\x1aBLUE_MSG_BSP_FB_UNVERIFIED\x10O\x127\n" + + "3BLUE_MSG_BSP_FB_UNVERIFIED_TO_SELF_PREMISE_VERIFIED\x10P\x12\x1c\n" + + "\x18BLUE_MSG_BSP_FB_VERIFIED\x10Q\x127\n" + + "3BLUE_MSG_BSP_FB_VERIFIED_TO_SELF_PREMISE_UNVERIFIED\x10R\x12(\n" + + "$BLUE_MSG_BSP_PREMISE_TO_SELF_PREMISE\x10S\x12#\n" + + "\x1fBLUE_MSG_BSP_PREMISE_UNVERIFIED\x10T\x12<\n" + + "8BLUE_MSG_BSP_PREMISE_UNVERIFIED_TO_SELF_PREMISE_VERIFIED\x10U\x12!\n" + + "\x1dBLUE_MSG_BSP_PREMISE_VERIFIED\x10V\x12<\n" + + "8BLUE_MSG_BSP_PREMISE_VERIFIED_TO_SELF_PREMISE_UNVERIFIED\x10W\x12*\n" + + "&BLUE_MSG_CONSUMER_TO_BSP_FB_UNVERIFIED\x10X\x12/\n" + + "+BLUE_MSG_CONSUMER_TO_BSP_PREMISE_UNVERIFIED\x10Y\x12+\n" + + "'BLUE_MSG_CONSUMER_TO_SELF_FB_UNVERIFIED\x10Z\x120\n" + + ",BLUE_MSG_CONSUMER_TO_SELF_PREMISE_UNVERIFIED\x10[\x12#\n" + + "\x1fBLUE_MSG_SELF_FB_TO_BSP_PREMISE\x10\\\x12$\n" + + " BLUE_MSG_SELF_FB_TO_SELF_PREMISE\x10]\x12\x1f\n" + + "\x1bBLUE_MSG_SELF_FB_UNVERIFIED\x10^\x128\n" + + "4BLUE_MSG_SELF_FB_UNVERIFIED_TO_SELF_PREMISE_VERIFIED\x10_\x12\x1d\n" + + "\x19BLUE_MSG_SELF_FB_VERIFIED\x10`\x128\n" + + "4BLUE_MSG_SELF_FB_VERIFIED_TO_SELF_PREMISE_UNVERIFIED\x10a\x12(\n" + + "$BLUE_MSG_SELF_PREMISE_TO_BSP_PREMISE\x10b\x12$\n" + + " BLUE_MSG_SELF_PREMISE_UNVERIFIED\x10c\x12\"\n" + + "\x1eBLUE_MSG_SELF_PREMISE_VERIFIED\x10d\x12\x16\n" + + "\x12BLUE_MSG_TO_BSP_FB\x10e\x12\x18\n" + + "\x14BLUE_MSG_TO_CONSUMER\x10f\x12\x17\n" + + "\x13BLUE_MSG_TO_SELF_FB\x10g\x12*\n" + + "&BLUE_MSG_UNVERIFIED_TO_BSP_FB_VERIFIED\x10h\x12/\n" + + "+BLUE_MSG_UNVERIFIED_TO_BSP_PREMISE_VERIFIED\x10i\x12+\n" + + "'BLUE_MSG_UNVERIFIED_TO_SELF_FB_VERIFIED\x10j\x12#\n" + + "\x1fBLUE_MSG_UNVERIFIED_TO_VERIFIED\x10k\x12*\n" + + "&BLUE_MSG_VERIFIED_TO_BSP_FB_UNVERIFIED\x10l\x12/\n" + + "+BLUE_MSG_VERIFIED_TO_BSP_PREMISE_UNVERIFIED\x10m\x12+\n" + + "'BLUE_MSG_VERIFIED_TO_SELF_FB_UNVERIFIED\x10n\x12#\n" + + "\x1fBLUE_MSG_VERIFIED_TO_UNVERIFIED\x10o\x126\n" + + "2BLUE_MSG_BSP_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED\x10p\x122\n" + + ".BLUE_MSG_BSP_FB_UNVERIFIED_TO_SELF_FB_VERIFIED\x10q\x126\n" + + "2BLUE_MSG_BSP_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED\x10r\x122\n" + + ".BLUE_MSG_BSP_FB_VERIFIED_TO_SELF_FB_UNVERIFIED\x10s\x127\n" + + "3BLUE_MSG_SELF_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED\x10t\x127\n" + + "3BLUE_MSG_SELF_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED\x10u\x12\x1c\n" + + "\x18E2E_IDENTITY_UNAVAILABLE\x10v\x12\x12\n" + + "\x0eGROUP_CREATING\x10w\x12\x17\n" + + "\x13GROUP_CREATE_FAILED\x10x\x12\x11\n" + + "\rGROUP_BOUNCED\x10y\x12\x11\n" + + "\rBLOCK_CONTACT\x10z\x12!\n" + + "\x1dEPHEMERAL_SETTING_NOT_APPLIED\x10{\x12\x0f\n" + + "\vSYNC_FAILED\x10|\x12\v\n" + + "\aSYNCING\x10}\x12\x1c\n" + + "\x18BIZ_PRIVACY_MODE_INIT_FB\x10~\x12\x1d\n" + + "\x19BIZ_PRIVACY_MODE_INIT_BSP\x10\x7f\x12\x1b\n" + + "\x16BIZ_PRIVACY_MODE_TO_FB\x10\x80\x01\x12\x1c\n" + + "\x17BIZ_PRIVACY_MODE_TO_BSP\x10\x81\x01\x12\x16\n" + + "\x11DISAPPEARING_MODE\x10\x82\x01\x12\x1c\n" + + "\x17E2E_DEVICE_FETCH_FAILED\x10\x83\x01\x12\x11\n" + + "\fADMIN_REVOKE\x10\x84\x01\x12$\n" + + "\x1fGROUP_INVITE_LINK_GROWTH_LOCKED\x10\x85\x01\x12 \n" + + "\x1bCOMMUNITY_LINK_PARENT_GROUP\x10\x86\x01\x12!\n" + + "\x1cCOMMUNITY_LINK_SIBLING_GROUP\x10\x87\x01\x12\x1d\n" + + "\x18COMMUNITY_LINK_SUB_GROUP\x10\x88\x01\x12\"\n" + + "\x1dCOMMUNITY_UNLINK_PARENT_GROUP\x10\x89\x01\x12#\n" + + "\x1eCOMMUNITY_UNLINK_SIBLING_GROUP\x10\x8a\x01\x12\x1f\n" + + "\x1aCOMMUNITY_UNLINK_SUB_GROUP\x10\x8b\x01\x12\x1d\n" + + "\x18GROUP_PARTICIPANT_ACCEPT\x10\x8c\x01\x12(\n" + + "#GROUP_PARTICIPANT_LINKED_GROUP_JOIN\x10\x8d\x01\x12\x15\n" + + "\x10COMMUNITY_CREATE\x10\x8e\x01\x12\x1b\n" + + "\x16EPHEMERAL_KEEP_IN_CHAT\x10\x8f\x01\x12+\n" + + "&GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST\x10\x90\x01\x12(\n" + + "#GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE\x10\x91\x01\x12\"\n" + + "\x1dINTEGRITY_UNLINK_PARENT_GROUP\x10\x92\x01\x12\"\n" + + "\x1dCOMMUNITY_PARTICIPANT_PROMOTE\x10\x93\x01\x12!\n" + + "\x1cCOMMUNITY_PARTICIPANT_DEMOTE\x10\x94\x01\x12#\n" + + "\x1eCOMMUNITY_PARENT_GROUP_DELETED\x10\x95\x01\x124\n" + + "/COMMUNITY_LINK_PARENT_GROUP_MEMBERSHIP_APPROVAL\x10\x96\x01\x124\n" + + "/GROUP_PARTICIPANT_JOINED_GROUP_AND_PARENT_GROUP\x10\x97\x01\x12\x1a\n" + + "\x15MASKED_THREAD_CREATED\x10\x98\x01\x12\x1b\n" + + "\x16MASKED_THREAD_UNMASKED\x10\x99\x01\x12\x18\n" + + "\x13BIZ_CHAT_ASSIGNMENT\x10\x9a\x01\x12\r\n" + + "\bCHAT_PSA\x10\x9b\x01\x12\x1f\n" + + "\x1aCHAT_POLL_CREATION_MESSAGE\x10\x9c\x01\x12\x1e\n" + + "\x19CAG_MASKED_THREAD_CREATED\x10\x9d\x01\x12+\n" + + "&COMMUNITY_PARENT_GROUP_SUBJECT_CHANGED\x10\x9e\x01\x12\x18\n" + + "\x13CAG_INVITE_AUTO_ADD\x10\x9f\x01\x12!\n" + + "\x1cBIZ_CHAT_ASSIGNMENT_UNASSIGN\x10\xa0\x01\x12\x1b\n" + + "\x16CAG_INVITE_AUTO_JOINED\x10\xa1\x01\x12!\n" + + "\x1cSCHEDULED_CALL_START_MESSAGE\x10\xa2\x01\x12\x1a\n" + + "\x15COMMUNITY_INVITE_RICH\x10\xa3\x01\x12#\n" + + "\x1eCOMMUNITY_INVITE_AUTO_ADD_RICH\x10\xa4\x01\x12\x1a\n" + + "\x15SUB_GROUP_INVITE_RICH\x10\xa5\x01\x12#\n" + + "\x1eSUB_GROUP_PARTICIPANT_ADD_RICH\x10\xa6\x01\x12%\n" + + " COMMUNITY_LINK_PARENT_GROUP_RICH\x10\xa7\x01\x12#\n" + + "\x1eCOMMUNITY_PARTICIPANT_ADD_RICH\x10\xa8\x01\x12\"\n" + + "\x1dSILENCED_UNKNOWN_CALLER_AUDIO\x10\xa9\x01\x12\"\n" + + "\x1dSILENCED_UNKNOWN_CALLER_VIDEO\x10\xaa\x01\x12\x1a\n" + + "\x15GROUP_MEMBER_ADD_MODE\x10\xab\x01\x129\n" + + "4GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD\x10\xac\x01\x12!\n" + + "\x1cCOMMUNITY_CHANGE_DESCRIPTION\x10\xad\x01\x12\x12\n" + + "\rSENDER_INVITE\x10\xae\x01\x12\x14\n" + + "\x0fRECEIVER_INVITE\x10\xaf\x01\x12(\n" + + "#COMMUNITY_ALLOW_MEMBER_ADDED_GROUPS\x10\xb0\x01\x12\x1b\n" + + "\x16PINNED_MESSAGE_IN_CHAT\x10\xb1\x01\x12!\n" + + "\x1cPAYMENT_INVITE_SETUP_INVITER\x10\xb2\x01\x12.\n" + + ")PAYMENT_INVITE_SETUP_INVITEE_RECEIVE_ONLY\x10\xb3\x01\x122\n" + + "-PAYMENT_INVITE_SETUP_INVITEE_SEND_AND_RECEIVE\x10\xb4\x01\x12\x1c\n" + + "\x17LINKED_GROUP_CALL_START\x10\xb5\x01\x12#\n" + + "\x1eREPORT_TO_ADMIN_ENABLED_STATUS\x10\xb6\x01\x12\x1a\n" + + "\x15EMPTY_SUBGROUP_CREATE\x10\xb7\x01\x12\x1a\n" + + "\x15SCHEDULED_CALL_CANCEL\x10\xb8\x01\x12+\n" + + "&SUBGROUP_ADMIN_TRIGGERED_AUTO_ADD_RICH\x10\xb9\x01\x12(\n" + + "#GROUP_CHANGE_RECENT_HISTORY_SHARING\x10\xba\x01\x12$\n" + + "\x1fPAID_MESSAGE_SERVER_CAMPAIGN_ID\x10\xbb\x01\x12\x18\n" + + "\x13GENERAL_CHAT_CREATE\x10\xbc\x01\x12\x15\n" + + "\x10GENERAL_CHAT_ADD\x10\xbd\x01\x12#\n" + + "\x1eGENERAL_CHAT_AUTO_ADD_DISABLED\x10\xbe\x01\x12 \n" + + "\x1bSUGGESTED_SUBGROUP_ANNOUNCE\x10\xbf\x01\x12!\n" + + "\x1cBIZ_BOT_1P_MESSAGING_ENABLED\x10\xc0\x01\x12\x14\n" + + "\x0fCHANGE_USERNAME\x10\xc1\x01\x12\x1f\n" + + "\x1aBIZ_COEX_PRIVACY_INIT_SELF\x10\xc2\x01\x12%\n" + + " BIZ_COEX_PRIVACY_TRANSITION_SELF\x10\xc3\x01\x12\x19\n" + + "\x14SUPPORT_AI_EDUCATION\x10\xc4\x01\x12!\n" + + "\x1cBIZ_BOT_3P_MESSAGING_ENABLED\x10\xc5\x01\x12\x1b\n" + + "\x16REMINDER_SETUP_MESSAGE\x10\xc6\x01\x12\x1a\n" + + "\x15REMINDER_SENT_MESSAGE\x10\xc7\x01\x12\x1c\n" + + "\x17REMINDER_CANCEL_MESSAGE\x10\xc8\x01\x12\x1a\n" + + "\x15BIZ_COEX_PRIVACY_INIT\x10\xc9\x01\x12 \n" + + "\x1bBIZ_COEX_PRIVACY_TRANSITION\x10\xca\x01\x12\x16\n" + + "\x11GROUP_DEACTIVATED\x10\xcb\x01\x12'\n" + + "\"COMMUNITY_DEACTIVATE_SIBLING_GROUP\x10\xcc\x01\x12\x12\n" + + "\rEVENT_UPDATED\x10\xcd\x01\x12\x13\n" + + "\x0eEVENT_CANCELED\x10\xce\x01\x12\x1c\n" + + "\x17COMMUNITY_OWNER_UPDATED\x10\xcf\x01\x12*\n" + + "%COMMUNITY_SUB_GROUP_VISIBILITY_HIDDEN\x10\xd0\x01\x12$\n" + + "\x1fCAPI_GROUP_NE2EE_SYSTEM_MESSAGE\x10\xd1\x01\x12\x13\n" + + "\x0eSTATUS_MENTION\x10\xd2\x01\x12!\n" + + "\x1cUSER_CONTROLS_SYSTEM_MESSAGE\x10\xd3\x01\x12\x1b\n" + + "\x16SUPPORT_SYSTEM_MESSAGE\x10\xd4\x01\x12\x0f\n" + + "\n" + + "CHANGE_LID\x10\xd5\x01\x121\n" + + ",BIZ_CUSTOMER_3PD_DATA_SHARING_OPT_IN_MESSAGE\x10\xd6\x01\x122\n" + + "-BIZ_CUSTOMER_3PD_DATA_SHARING_OPT_OUT_MESSAGE\x10\xd7\x01\x12\x19\n" + + "\x14CHANGE_LIMIT_SHARING\x10\xd8\x01\x12\x1b\n" + + "\x16GROUP_MEMBER_LINK_MODE\x10\xd9\x01\"X\n" + + "\x06Status\x12\t\n" + + "\x05ERROR\x10\x00\x12\v\n" + + "\aPENDING\x10\x01\x12\x0e\n" + + "\n" + + "SERVER_ACK\x10\x02\x12\x10\n" + + "\fDELIVERY_ACK\x10\x03\x12\b\n" + + "\x04READ\x10\x04\x12\n" + + "\n" + + "\x06PLAYED\x10\x05\"\xd9\f\n" + + "\vPaymentInfo\x12W\n" + + "\x12currencyDeprecated\x18\x01 \x01(\x0e2'.WAWebProtobufsWeb.PaymentInfo.CurrencyR\x12currencyDeprecated\x12\x1e\n" + + "\n" + + "amount1000\x18\x02 \x01(\x04R\n" + + "amount1000\x12 \n" + + "\vreceiverJID\x18\x03 \x01(\tR\vreceiverJID\x12=\n" + + "\x06status\x18\x04 \x01(\x0e2%.WAWebProtobufsWeb.PaymentInfo.StatusR\x06status\x122\n" + + "\x14transactionTimestamp\x18\x05 \x01(\x04R\x14transactionTimestamp\x12B\n" + + "\x11requestMessageKey\x18\x06 \x01(\v2\x14.WACommon.MessageKeyR\x11requestMessageKey\x12(\n" + + "\x0fexpiryTimestamp\x18\a \x01(\x04R\x0fexpiryTimestamp\x12$\n" + + "\rfutureproofed\x18\b \x01(\bR\rfutureproofed\x12\x1a\n" + + "\bcurrency\x18\t \x01(\tR\bcurrency\x12F\n" + + "\ttxnStatus\x18\n" + + " \x01(\x0e2(.WAWebProtobufsWeb.PaymentInfo.TxnStatusR\ttxnStatus\x12,\n" + + "\x11useNoviFiatFormat\x18\v \x01(\bR\x11useNoviFiatFormat\x12>\n" + + "\rprimaryAmount\x18\f \x01(\v2\x18.WAWebProtobufsE2E.MoneyR\rprimaryAmount\x12@\n" + + "\x0eexchangeAmount\x18\r \x01(\v2\x18.WAWebProtobufsE2E.MoneyR\x0eexchangeAmount\"\x99\x05\n" + + "\tTxnStatus\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\x11\n" + + "\rPENDING_SETUP\x10\x01\x12\x1a\n" + + "\x16PENDING_RECEIVER_SETUP\x10\x02\x12\b\n" + + "\x04INIT\x10\x03\x12\v\n" + + "\aSUCCESS\x10\x04\x12\r\n" + + "\tCOMPLETED\x10\x05\x12\n" + + "\n" + + "\x06FAILED\x10\x06\x12\x0f\n" + + "\vFAILED_RISK\x10\a\x12\x15\n" + + "\x11FAILED_PROCESSING\x10\b\x12\x1e\n" + + "\x1aFAILED_RECEIVER_PROCESSING\x10\t\x12\r\n" + + "\tFAILED_DA\x10\n" + + "\x12\x13\n" + + "\x0fFAILED_DA_FINAL\x10\v\x12\x10\n" + + "\fREFUNDED_TXN\x10\f\x12\x11\n" + + "\rREFUND_FAILED\x10\r\x12\x1c\n" + + "\x18REFUND_FAILED_PROCESSING\x10\x0e\x12\x14\n" + + "\x10REFUND_FAILED_DA\x10\x0f\x12\x0f\n" + + "\vEXPIRED_TXN\x10\x10\x12\x11\n" + + "\rAUTH_CANCELED\x10\x11\x12!\n" + + "\x1dAUTH_CANCEL_FAILED_PROCESSING\x10\x12\x12\x16\n" + + "\x12AUTH_CANCEL_FAILED\x10\x13\x12\x10\n" + + "\fCOLLECT_INIT\x10\x14\x12\x13\n" + + "\x0fCOLLECT_SUCCESS\x10\x15\x12\x12\n" + + "\x0eCOLLECT_FAILED\x10\x16\x12\x17\n" + + "\x13COLLECT_FAILED_RISK\x10\x17\x12\x14\n" + + "\x10COLLECT_REJECTED\x10\x18\x12\x13\n" + + "\x0fCOLLECT_EXPIRED\x10\x19\x12\x14\n" + + "\x10COLLECT_CANCELED\x10\x1a\x12\x16\n" + + "\x12COLLECT_CANCELLING\x10\x1b\x12\r\n" + + "\tIN_REVIEW\x10\x1c\x12\x14\n" + + "\x10REVERSAL_SUCCESS\x10\x1d\x12\x14\n" + + "\x10REVERSAL_PENDING\x10\x1e\x12\x12\n" + + "\x0eREFUND_PENDING\x10\x1f\"\xcc\x01\n" + + "\x06Status\x12\x12\n" + + "\x0eUNKNOWN_STATUS\x10\x00\x12\x0e\n" + + "\n" + + "PROCESSING\x10\x01\x12\b\n" + + "\x04SENT\x10\x02\x12\x12\n" + + "\x0eNEED_TO_ACCEPT\x10\x03\x12\f\n" + + "\bCOMPLETE\x10\x04\x12\x16\n" + + "\x12COULD_NOT_COMPLETE\x10\x05\x12\f\n" + + "\bREFUNDED\x10\x06\x12\v\n" + + "\aEXPIRED\x10\a\x12\f\n" + + "\bREJECTED\x10\b\x12\r\n" + + "\tCANCELLED\x10\t\x12\x15\n" + + "\x11WAITING_FOR_PAYER\x10\n" + + "\x12\v\n" + + "\aWAITING\x10\v\")\n" + + "\bCurrency\x12\x14\n" + + "\x10UNKNOWN_CURRENCY\x10\x00\x12\a\n" + + "\x03INR\x10\x01\"\xab\x1d\n" + + "\vWebFeatures\x12I\n" + + "\rlabelsDisplay\x18\x01 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\rlabelsDisplay\x12[\n" + + "\x16voipIndividualOutgoing\x18\x02 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x16voipIndividualOutgoing\x12?\n" + + "\bgroupsV3\x18\x03 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\bgroupsV3\x12K\n" + + "\x0egroupsV3Create\x18\x04 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x0egroupsV3Create\x12K\n" + + "\x0echangeNumberV2\x18\x05 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x0echangeNumberV2\x12[\n" + + "\x16queryStatusV3Thumbnail\x18\x06 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x16queryStatusV3Thumbnail\x12I\n" + + "\rliveLocations\x18\a \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\rliveLocations\x12C\n" + + "\n" + + "queryVname\x18\b \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\n" + + "queryVname\x12[\n" + + "\x16voipIndividualIncoming\x18\t \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x16voipIndividualIncoming\x12Q\n" + + "\x11quickRepliesQuery\x18\n" + + " \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x11quickRepliesQuery\x12?\n" + + "\bpayments\x18\v \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\bpayments\x12O\n" + + "\x10stickerPackQuery\x18\f \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x10stickerPackQuery\x12S\n" + + "\x12liveLocationsFinal\x18\r \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x12liveLocationsFinal\x12C\n" + + "\n" + + "labelsEdit\x18\x0e \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\n" + + "labelsEdit\x12E\n" + + "\vmediaUpload\x18\x0f \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\vmediaUpload\x12e\n" + + "\x1bmediaUploadRichQuickReplies\x18\x12 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x1bmediaUploadRichQuickReplies\x12=\n" + + "\avnameV2\x18\x13 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\avnameV2\x12O\n" + + "\x10videoPlaybackURL\x18\x14 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x10videoPlaybackURL\x12I\n" + + "\rstatusRanking\x18\x15 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\rstatusRanking\x12U\n" + + "\x13voipIndividualVideo\x18\x16 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x13voipIndividualVideo\x12S\n" + + "\x12thirdPartyStickers\x18\x17 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x12thirdPartyStickers\x12c\n" + + "\x1afrequentlyForwardedSetting\x18\x18 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x1afrequentlyForwardedSetting\x12[\n" + + "\x16groupsV4JoinPermission\x18\x19 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x16groupsV4JoinPermission\x12K\n" + + "\x0erecentStickers\x18\x1a \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x0erecentStickers\x12=\n" + + "\acatalog\x18\x1b \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\acatalog\x12M\n" + + "\x0fstarredStickers\x18\x1c \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x0fstarredStickers\x12I\n" + + "\rvoipGroupCall\x18\x1d \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\rvoipGroupCall\x12M\n" + + "\x0ftemplateMessage\x18\x1e \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x0ftemplateMessage\x12g\n" + + "\x1ctemplateMessageInteractivity\x18\x1f \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x1ctemplateMessageInteractivity\x12Q\n" + + "\x11ephemeralMessages\x18 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x11ephemeralMessages\x12U\n" + + "\x13e2ENotificationSync\x18! \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x13e2ENotificationSync\x12O\n" + + "\x10recentStickersV2\x18\" \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x10recentStickersV2\x12O\n" + + "\x10recentStickersV3\x18$ \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x10recentStickersV3\x12C\n" + + "\n" + + "userNotice\x18% \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\n" + + "userNotice\x12=\n" + + "\asupport\x18' \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\asupport\x12M\n" + + "\x0fgroupUiiCleanup\x18( \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x0fgroupUiiCleanup\x12e\n" + + "\x1bgroupDogfoodingInternalOnly\x18) \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x1bgroupDogfoodingInternalOnly\x12G\n" + + "\fsettingsSync\x18* \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\fsettingsSync\x12A\n" + + "\tarchiveV2\x18+ \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\tarchiveV2\x12c\n" + + "\x1aephemeralAllowGroupMembers\x18, \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x1aephemeralAllowGroupMembers\x12W\n" + + "\x14ephemeral24HDuration\x18- \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x14ephemeral24HDuration\x12K\n" + + "\x0emdForceUpgrade\x18. \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x0emdForceUpgrade\x12O\n" + + "\x10disappearingMode\x18/ \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x10disappearingMode\x12_\n" + + "\x18externalMdOptInAvailable\x180 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x18externalMdOptInAvailable\x12_\n" + + "\x18noDeleteMessageTimeLimit\x181 \x01(\x0e2#.WAWebProtobufsWeb.WebFeatures.FlagR\x18noDeleteMessageTimeLimit\"K\n" + + "\x04Flag\x12\x0f\n" + + "\vNOT_STARTED\x10\x00\x12\x11\n" + + "\rFORCE_UPGRADE\x10\x01\x12\x0f\n" + + "\vDEVELOPMENT\x10\x02\x12\x0e\n" + + "\n" + + "PRODUCTION\x10\x03\"\xea\x02\n" + + "\tPinInChat\x125\n" + + "\x04type\x18\x01 \x01(\x0e2!.WAWebProtobufsWeb.PinInChat.TypeR\x04type\x12&\n" + + "\x03key\x18\x02 \x01(\v2\x14.WACommon.MessageKeyR\x03key\x12,\n" + + "\x11senderTimestampMS\x18\x03 \x01(\x03R\x11senderTimestampMS\x12,\n" + + "\x11serverTimestampMS\x18\x04 \x01(\x03R\x11serverTimestampMS\x12d\n" + + "\x17messageAddOnContextInfo\x18\x05 \x01(\v2*.WAWebProtobufsWeb.MessageAddOnContextInfoR\x17messageAddOnContextInfo\"<\n" + + "\x04Type\x12\x10\n" + + "\fUNKNOWN_TYPE\x10\x00\x12\x0f\n" + + "\vPIN_FOR_ALL\x10\x01\x12\x11\n" + + "\rUNPIN_FOR_ALL\x10\x02\"\x91\x05\n" + + "\fMessageAddOn\x12\\\n" + + "\x10messageAddOnType\x18\x01 \x01(\x0e20.WAWebProtobufsWeb.MessageAddOn.MessageAddOnTypeR\x10messageAddOnType\x12>\n" + + "\fmessageAddOn\x18\x02 \x01(\v2\x1a.WAWebProtobufsE2E.MessageR\fmessageAddOn\x12,\n" + + "\x11senderTimestampMS\x18\x03 \x01(\x03R\x11senderTimestampMS\x12,\n" + + "\x11serverTimestampMS\x18\x04 \x01(\x03R\x11serverTimestampMS\x12@\n" + + "\x06status\x18\x05 \x01(\x0e2(.WAWebProtobufsWeb.WebMessageInfo.StatusR\x06status\x12V\n" + + "\x10addOnContextInfo\x18\x06 \x01(\v2*.WAWebProtobufsWeb.MessageAddOnContextInfoR\x10addOnContextInfo\x12>\n" + + "\x0fmessageAddOnKey\x18\a \x01(\v2\x14.WACommon.MessageKeyR\x0fmessageAddOnKey\x12F\n" + + "\rlegacyMessage\x18\b \x01(\v2 .WAWebProtobufsWeb.LegacyMessageR\rlegacyMessage\"e\n" + + "\x10MessageAddOnType\x12\r\n" + + "\tUNDEFINED\x10\x00\x12\f\n" + + "\bREACTION\x10\x01\x12\x12\n" + + "\x0eEVENT_RESPONSE\x10\x02\x12\x0f\n" + + "\vPOLL_UPDATE\x10\x03\x12\x0f\n" + + "\vPIN_IN_CHAT\x10\x04\"s\n" + + "\x0fCommentMetadata\x12@\n" + + "\x10commentParentKey\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x10commentParentKey\x12\x1e\n" + + "\n" + + "replyCount\x18\x02 \x01(\rR\n" + + "replyCount\"\xd1\x01\n" + + "\x14WebNotificationsInfo\x12\x1c\n" + + "\ttimestamp\x18\x02 \x01(\x04R\ttimestamp\x12 \n" + + "\vunreadChats\x18\x03 \x01(\rR\vunreadChats\x12.\n" + + "\x12notifyMessageCount\x18\x04 \x01(\rR\x12notifyMessageCount\x12I\n" + + "\x0enotifyMessages\x18\x05 \x03(\v2!.WAWebProtobufsWeb.WebMessageInfoR\x0enotifyMessages\"\xc5\x01\n" + + "\x17NotificationMessageInfo\x12&\n" + + "\x03key\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x03key\x124\n" + + "\amessage\x18\x02 \x01(\v2\x1a.WAWebProtobufsE2E.MessageR\amessage\x12*\n" + + "\x10messageTimestamp\x18\x03 \x01(\x04R\x10messageTimestamp\x12 \n" + + "\vparticipant\x18\x04 \x01(\tR\vparticipant\"8\n" + + "\x12ReportingTokenInfo\x12\"\n" + + "\freportingTag\x18\x01 \x01(\fR\freportingTag\")\n" + + "\tMediaData\x12\x1c\n" + + "\tlocalPath\x18\x01 \x01(\tR\tlocalPath\"e\n" + + "\vPhotoChange\x12\x1a\n" + + "\boldPhoto\x18\x01 \x01(\fR\boldPhoto\x12\x1a\n" + + "\bnewPhoto\x18\x02 \x01(\fR\bnewPhoto\x12\x1e\n" + + "\n" + + "newPhotoID\x18\x03 \x01(\rR\n" + + "newPhotoID\"m\n" + + "\tStatusPSA\x12\x1e\n" + + "\n" + + "campaignID\x18, \x02(\x04R\n" + + "campaignID\x12@\n" + + "\x1bcampaignExpirationTimestamp\x18- \x01(\x04R\x1bcampaignExpirationTimestamp\"\xff\x01\n" + + "\vUserReceipt\x12\x18\n" + + "\auserJID\x18\x01 \x02(\tR\auserJID\x12*\n" + + "\x10receiptTimestamp\x18\x02 \x01(\x03R\x10receiptTimestamp\x12$\n" + + "\rreadTimestamp\x18\x03 \x01(\x03R\rreadTimestamp\x12(\n" + + "\x0fplayedTimestamp\x18\x04 \x01(\x03R\x0fplayedTimestamp\x12*\n" + + "\x10pendingDeviceJID\x18\x05 \x03(\tR\x10pendingDeviceJID\x12.\n" + + "\x12deliveredDeviceJID\x18\x06 \x03(\tR\x12deliveredDeviceJID\"\xae\x01\n" + + "\bReaction\x12&\n" + + "\x03key\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x03key\x12\x12\n" + + "\x04text\x18\x02 \x01(\tR\x04text\x12 \n" + + "\vgroupingKey\x18\x03 \x01(\tR\vgroupingKey\x12,\n" + + "\x11senderTimestampMS\x18\x04 \x01(\x03R\x11senderTimestampMS\x12\x16\n" + + "\x06unread\x18\x05 \x01(\bR\x06unread\"\x82\x02\n" + + "\n" + + "PollUpdate\x12H\n" + + "\x14pollUpdateMessageKey\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x14pollUpdateMessageKey\x126\n" + + "\x04vote\x18\x02 \x01(\v2\".WAWebProtobufsE2E.PollVoteMessageR\x04vote\x12,\n" + + "\x11senderTimestampMS\x18\x03 \x01(\x03R\x11senderTimestampMS\x12,\n" + + "\x11serverTimestampMS\x18\x04 \x01(\x03R\x11serverTimestampMS\x12\x16\n" + + "\x06unread\x18\x05 \x01(\bR\x06unread\"B\n" + + "\x16PollAdditionalMetadata\x12(\n" + + "\x0fpollInvalidated\x18\x01 \x01(\bR\x0fpollInvalidated\"3\n" + + "\x17EventAdditionalMetadata\x12\x18\n" + + "\aisStale\x18\x01 \x01(\bR\aisStale\"\x91\x02\n" + + "\n" + + "KeepInChat\x127\n" + + "\bkeepType\x18\x01 \x01(\x0e2\x1b.WAWebProtobufsE2E.KeepTypeR\bkeepType\x12(\n" + + "\x0fserverTimestamp\x18\x02 \x01(\x03R\x0fserverTimestamp\x12&\n" + + "\x03key\x18\x03 \x01(\v2\x14.WACommon.MessageKeyR\x03key\x12\x1c\n" + + "\tdeviceJID\x18\x04 \x01(\tR\tdeviceJID\x12,\n" + + "\x11clientTimestampMS\x18\x05 \x01(\x03R\x11clientTimestampMS\x12,\n" + + "\x11serverTimestampMS\x18\x06 \x01(\x03R\x11serverTimestampMS\"\xcf\x01\n" + + "\x17MessageAddOnContextInfo\x12>\n" + + "\x1amessageAddOnDurationInSecs\x18\x01 \x01(\rR\x1amessageAddOnDurationInSecs\x12t\n" + + "\x16messageAddOnExpiryType\x18\x02 \x01(\x0e2<.WAWebProtobufsE2E.MessageContextInfo.MessageAddonExpiryTypeR\x16messageAddOnExpiryType\"@\n" + + "\x12PremiumMessageInfo\x12*\n" + + "\x10serverCampaignID\x18\x01 \x01(\tR\x10serverCampaignID\"\xf6\x01\n" + + "\rEventResponse\x12N\n" + + "\x17eventResponseMessageKey\x18\x01 \x01(\v2\x14.WACommon.MessageKeyR\x17eventResponseMessageKey\x12 \n" + + "\vtimestampMS\x18\x02 \x01(\x03R\vtimestampMS\x12[\n" + + "\x14eventResponseMessage\x18\x03 \x01(\v2'.WAWebProtobufsE2E.EventResponseMessageR\x14eventResponseMessage\x12\x16\n" + + "\x06unread\x18\x04 \x01(\bR\x06unread\"\xac\x01\n" + + "\rLegacyMessage\x12[\n" + + "\x14eventResponseMessage\x18\x01 \x01(\v2'.WAWebProtobufsE2E.EventResponseMessageR\x14eventResponseMessage\x12>\n" + + "\bpollVote\x18\x02 \x01(\v2\".WAWebProtobufsE2E.PollVoteMessageR\bpollVote\"V\n" + + "\x14StatusMentionMessage\x12>\n" + + "\fquotedStatus\x18\x01 \x01(\v2\x1a.WAWebProtobufsE2E.MessageR\fquotedStatus\"n\n" + + "\bCitation\x12\x14\n" + + "\x05title\x18\x01 \x02(\tR\x05title\x12\x1a\n" + + "\bsubtitle\x18\x02 \x02(\tR\bsubtitle\x12\x14\n" + + "\x05cmsID\x18\x03 \x02(\tR\x05cmsID\x12\x1a\n" + + "\bimageURL\x18\x04 \x02(\tR\bimageURLB!Z\x1fgithub.com/techwiz37/waSocket/proto/waWeb" var ( file_waWeb_WAWebProtobufsWeb_proto_rawDescOnce sync.Once - file_waWeb_WAWebProtobufsWeb_proto_rawDescData = file_waWeb_WAWebProtobufsWeb_proto_rawDesc + file_waWeb_WAWebProtobufsWeb_proto_rawDescData []byte ) func file_waWeb_WAWebProtobufsWeb_proto_rawDescGZIP() []byte { file_waWeb_WAWebProtobufsWeb_proto_rawDescOnce.Do(func() { - file_waWeb_WAWebProtobufsWeb_proto_rawDescData = protoimpl.X.CompressGZIP(file_waWeb_WAWebProtobufsWeb_proto_rawDescData) + file_waWeb_WAWebProtobufsWeb_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waWeb_WAWebProtobufsWeb_proto_rawDesc), len(file_waWeb_WAWebProtobufsWeb_proto_rawDesc))) }) return file_waWeb_WAWebProtobufsWeb_proto_rawDescData } @@ -3877,7 +4424,7 @@ func file_waWeb_WAWebProtobufsWeb_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waWeb_WAWebProtobufsWeb_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waWeb_WAWebProtobufsWeb_proto_rawDesc), len(file_waWeb_WAWebProtobufsWeb_proto_rawDesc)), NumEnums: 9, NumMessages: 24, NumExtensions: 0, @@ -3889,7 +4436,6 @@ func file_waWeb_WAWebProtobufsWeb_proto_init() { MessageInfos: file_waWeb_WAWebProtobufsWeb_proto_msgTypes, }.Build() File_waWeb_WAWebProtobufsWeb_proto = out.File - file_waWeb_WAWebProtobufsWeb_proto_rawDesc = nil file_waWeb_WAWebProtobufsWeb_proto_goTypes = nil file_waWeb_WAWebProtobufsWeb_proto_depIdxs = nil } diff --git a/proto/waWeb/WAWebProtobufsWeb.pb.raw b/proto/waWeb/WAWebProtobufsWeb.pb.raw deleted file mode 100644 index 56955c8887c824a722c8f8bed54ee049110a8c84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20364 zcmcIs=XV^*an}+c2@KM3$Rp>NZ|`{d7(nWDC*7THusZ<_z&<``&ZS|lNVe)KYhW&c7?94uCA`G?i%gF zgXSIg?zKA>{#N?kVfXH6XMq2&_UMOkA^|uH3VYd(QJ_UqoIUfPnd|QDbvwY2|42ag zzv|i|7#H2apt`nq&9WmJuowuk32oMeCn!C;NjeM4+J3?x3uGXlFU4EIRo6Y zzzqvb-Frkrp&HL>x<^%O;h$l1uV+qyd|D*hjn}nfKp2h&<}@%Cm!FPxKpKe(f3?c^ z!lN@TYjeG3f7se;^_rcbc@%7BMYzehuATJc$t_m{k&dxQX&~dYcC5AA>GoYy2hxo2 zei^2A9Mbmt?zVY?0qUo5UYot!?>4u$nuDQfFf3>=&T2Eg(coUGx#yZE0h|^7Z|L}u zJ$Jj+%(Z&=-2TvgXINdgmf!uNc?yX0A{|Km?Ty+PHTCz1?9Xo?IY<3=4ZO_L3{yXe z4v^Al@2=Z7&qzAI!Ki6Vo~Ek9(cRiX&oxcpEG|Dg$+Soc5ocjs)U>U(+w2!NMMh*1lWlZprR1GM^`7d}wWi z(TZ{yBFVrgXeT~A>JHuQP`~D-iKI&s8ZT*QT-ef{+i$k9So*`j<}ZWiv=|3Ap4U$J zlzFAx$3U|nk^oxgK6ZI$r`9cZ%q);+M55iesu=<9XjtB<9(19_WqTL*H*n@<3Had|nW<`fUH5~CCeUdGef(!Seo?X=u&VDrMf0`{{a-fX-VD~${{ z-yAm0CxJ7!d_F}4Hg3WZ0Xo~;J-GASy=G_EHJ@VYRC^1sU~j<>;xHPxec^7ot=`al z8s?mCvGo8;gh`B-wb{Pg+@f_dFrQ)ib1Cu*4@U&p#v95kt8g^;-9D?}*$GtO8D)r! z6uvVWj`}Y4x9$#edJdfCMZB354kwE(p)zQi&yVd*8bzgQi2&VrKNfhm-LChxn?rYC zzQDu1kTTqgj|F}E{|}6&cA9=#+uJSDShHPphfOeRnpatpXU6bK5{NO3$T?#lh6~D@ z*T8dDsGqb^$&p)aOxgCqM$3JGt>!wgW<(muctTrH-qGFayF>E^aOXv|(RfwU?z?W! z>A(($<}wc?O)0m1BoQJo*0oFBeruQ9Ue#^ySfk;+ZlCP!4JTh6_FJ7@^Cl1EVQ9vS z+UdT#-@Wg8zA$i1x4>XpjDeC#^jaNH{uf#Pv^7{!I3hqd>YCB(yL+wCp4Tb6{`WAG zD`~TtKo%(s$W^umH!5%*E8U^T*?b9HXG9V}TU=|f*6)sb>#f1C+dohgFEd3t&{)<^ z-SwF}9a0?W+C_25*EOi5Sa>=C(Dcj(TJ@R!gmzRaRmOgqBN0sA_lA z--5}mu_jYt#%;|Qs2*}HY&*P7uCr3own>E}Qpo5ig7sSC`N70EkQ7IeP*e6*O^*jB z#*8+NP|?=kWgOFvtgh%sjN{tWO0}YAj73euKMkvtZvZfr{q)P)jEc;SIqi78bh}i( zQv#``9TWCO`L->oa!zI47B%~=8rUsqbF1}QUDy>-F0blS#yRawsa$Go*uq(L?0lmp ztWwpfIpvZ*Z9J+yQZJ=}jv8mQlWBls*wRk zr9Gb3okCKhU&5-+rXhL=ilIIZk5q|H6~7bXq@w{UX2v+_6q4e0($KZ}HBqit8aZKG zHCsPL%J*8!qBnpAA42OVk|LxmBt)tbATS7jzc}3AX&FeC0Q423;kZEIZFa_Qop5oam5z;W5y}? z1yQ#0IjdSz(~+gc6SUG8ACDq>V|#+<%`Ra%=V0tLEb5%aO1?r6IG2W#w@Wprw%L#! z=k+IvIYI1FPHa|cc3yvqCOKyn3XP&ut->vAlpU!2=|nS_mGx&xCr&BvY&iKkR&aDg z&j!Yow+l9O_#7FzRD_z%MzNf?8%4WXwP0&2a)zHLZHA?gG*Xrq#sFEOt2p)>6>GDI zp*BJe@EZ9o)gE?)*Ac`$tpMyctQ@JWQLS0EdbLrne;+O>K`zh%6ly)+3~wVumC-wkWE z1}5uHE(hv&8_#H06t$-UE0@E3)Fl4~3=LBaOMMaNxF=$$Rfy71Z9e9EkREtawJN=a zF?sb!Gku8`NeoxmZ`R=u8hJYhZvuV3Y-F{IW035(DvkiodvPGTJO(Fc!GRQLCf`Tn zU2)z{+W_H4E96R7%C%a#sK0U;s>C5|5b3Y-as^kXR1>o4HD0cMlgIP@#z}37x-VHp z+gmsK>$IGxk-QbLgnzBpi4;!@-&fhX{nW4ZmhD>OSQsgW3?>qSc2@>4xHb{E%LM&AUk=?dre;rmUY;# z5}KO9H_A>)Un4GFPc~u`j0{c#)?0%W>+7_1$s6VE4fq`2OF0y~Y&iBEc%w4;|2N1P zMcft~-W~lm*~Utt4sTLjYf#9vxFtQPaa<*Ah+r=wZkRv`8$#|x#0?{dkh(}5F8gZt+JZPhEJyy3Tz6oU;5yp>0^jPQrkF<+m7zw%CiUf@Kh;|4T$r?!rSLhd$n@C_Lx zkIv=F#bO;J+vEc@VroH08P>7>jTvb2d<>)Ntbo~?hw@DsXv2)7)K@(4H)r4zF9hIv zi3N%D@+}#x$BPM^Xg}YY!3J|SiRAb6Z7hhijYw38!$+m2e|rYb{_!N3#6h4Z0UR}c zM+Whp9`xiTD!wyA^BP#yZQHIODy6Worhiuk{^v=_q-fLmy1MRE8pMxGPLwwgczUs^ z{@o!_#v=2?e~h(<*xp_fG(&0H`<|GF!(&&OhVPBdV;ILvH+)}g62dct2$_!4dHwq{ zxKy|ns3tL&I9U6GSL4=yfT@zIC++yEr*vbuPyGioxNU!=XjN%?YU^+fc`r$k*MErT zA_}XQs$=&LcD2iYq+*N2Ey+Ql*Rx1Wz;_#l7r+ z{-YU0-jC)iEW=bWevD^5P)AsPmB#Xq6+g~m5i@T^T6OpYO0fI{&rXWKm~Sb){*yf5 zII&cq{!>g}&8^${I*ytRPGlgRAZq?dewvjTNa~4z+|9cFGqIVEiPvDHpJfI}&3P*& z%;4vkK>!O|7oW+fm!HoVSG3E41WD83etsb)Oe(KmWRtHVLxSU39$MmrG>@CkuJycA z)_>_x9ORFXPWojYRCv|$QInV6Co;Iiz7>XzU(uB81tmFPn$J(hR-1PM4JRUhC4*gW zfsz;ySn5*$R0b#aB|q8Xwf-tQi$HHkl_5bZml^e@7Eo3HHMWt8Q=&zs5?snb{W{B} zvJ~FzaURF(Ug*D(L9*$YLr`pZFwO+wSX|iDe=~#VrS;+7U+7NH)#F$d8@5hPN4IuEf5vK9E)gP zDYCx2IP9Puc9eLDnHVWr*}YW8cU=scgUHhcX-jQOv0SIj`pgLg*rd z(f%TX%8RG`>6tq9rv6d*^c(amkAnk3bRn;h0Y7|?k>HK$gH4i5#*8>yyk4*M0 z?U=m%HD>rk?Lvq3FWbWuv72kt0w+gT}C zo0ylQ+5eo^=0eZrj60gKHNq3k&elO5kBwZs(Zd^>4DMnVm(wn#L$p_O9-&BKf%rpf z?sZ3<;f?Fpuk(A@X%T9n+h6qN;$a{^(x4Zwxcv<^;T=x&v1{79hp;$OWByB5+;0#2 z&CWnR<_g}<(396`kqR?bv=e>z!y~-H_3qE{w%4SWujAhRCeabBFS+mZTK$8d%j4W- zycs8*h0r4}sC@=_Ga}kZFE`Z;nX^E^YgqN$Sk-2S@2K|@8i46fg2P&>DSQ!-((@d= zn=5tqTdS?+aJAdt!^@{RmL>_ntBQqQzqQxwA6PuY<~%Uxmd)531}xO8MZD-Z5K(lz z(pz-j+2Tij9)pF4Fo@x2KYmo3^#>BY+Q%_FdfP)T^R#O6gA{oabc9w3d(SC8Ma%mh zEE#0~;h!q<@Nkq?kaw?jjNb?F9Tzs->TUfv<=7<AGzjk& zi23To7lFh&_I|qefvY${sfbXM*I$^qK^eg$iq3cCIUG!I84hQNz3CJUPqlcrYPcpx z{zNs(vEz;$`IBgyRPz}chynfkB(JI}zcm{DH(yF}hMH+yoT-A0d``L`|ya84rzTBJO#qmfbWCj^BK)xC} zLd;4wf*}g$CW@J(K;!1#J%R zi&tGdNA0@*gr67pPP{9 zLOV=py&0NRE=8Jf zq=)fA=z4sgEE$WJ3YaEjsc2|k;pNWMcEtotB;bN{t(`Z3n&I$ay22>6mq<~J-fs4d}r7` zKvesn+23}zt9boPI*_$m6D{6D*pS!pod2yiup?F6{$6V^z{6Os-I`GPF)U~^pd(Rd z=&R)Hq?RNJ8yN9An1-Jt)Z<~v zKC|W4d%OMSw##L36G|K-r4_Q>8Z>)7)BI_PxsE~<-^8>SRkp|yvwk1FjZ?O+^}>}_qD4u_PzpeGT0 zQ-~w)yC{2s11z3G)+>1EiH8T2x}C%GNV`z3@D1t_@8FFjJ|~B#vj2TVoApcJ@Q`?V zNCn*Ti27K{5!J`NN|oM%(ea#*i`Y)*f9VVY3<2kX)ZU)b+K8!BTKd^*EyG3j_z$YaSAbxRrVEan#N5jDU}1L zZC0ob2b#v+9cK`5#|PD8HtMBt(~<1Qj%xGaE{zZRUp-(ExOiUb{(6e;!=&m93O=3x zodmxH8Or&vN+$RmLj+$=z!zz{f^Rs`?4&1b5C4Y4hNd^E94$Q4GD)3Qju+Nlh(aWI zP_`GhXtYJPZz*GkF1pqL>O^g4?o;i{D1bODEiicxDPq#g$G?pUw`Dl8jb#A~UUf z<)Ao+AnGO+kX4RTK?0kuJy5vWKFHD42ix6(2(@HCpV3ZXcEbVMfNDFD#ho4c-~S+g zGK~biYM|SaQHQFWsU~^Ao?`)p>p>Hjc2d-*lrIG!r?G(2&IAPE_hO`VfHV_T%cr@% zs5y!lVfHf_RLF%QPH*yfSpK(D#w(E>iL_-S#%Oc%1#;bn}C1 zT?r$Lm>2$UvNHuk?Ihiv!Ont~?4C9&@5At3h>*ANS(zrj(gNh?@f{o7#RV-e`*Z4- zO;=Z3*Xi#)_$~lh<6$V-|IKJ~p>HbS9n*1&#;N?8KAVH8eeWl3emQo>=NW^ z(M}g+Wb*+cjdMyw8|lK0vdeA=PwtiRX6n0#T^P|+-rdJBfy5)LpB0IAT2I?9CBtyu z4X}?fb_yi>sSJ|v-d7=1Sa6u@V5>I}bp0zB~Eh zL2TQ?rNJ@jCpeFcuk*-X*^eH%t>A~bzf=mm2%g@@*IB$xH(p3j zw}RB|22i|i1mmX8K5Q`DHj=7&It80`!Q%g_<#f+D9_M0CqiLRyquc!Mg)W+d}IZY}~xco{i>g3C7*d-@~>9*GjiiXpvh z{ISXxD8_5Ji}AeD7vQ*jn(PMNit%T7qTg$vlZgCQm4vdT9{ypt2!6JM>sRkX3%Gtg zI&2Num(Z3fe^8V#7~PeCBfQu8zlmaNZ@>WpQ}7R>!0U}&m#!72C58IE^4Qy#cDq;i anxm^bt!ob`*xYlw53ccN_O9_q`2G*f+70sn diff --git a/proto/waWeb/WAWebProtobufsWeb.proto b/proto/waWeb/WAWebProtobufsWeb.proto index 011b7bf9..09077a9d 100644 --- a/proto/waWeb/WAWebProtobufsWeb.proto +++ b/proto/waWeb/WAWebProtobufsWeb.proto @@ -230,6 +230,8 @@ message WebMessageInfo { CHANGE_LID = 213; BIZ_CUSTOMER_3PD_DATA_SHARING_OPT_IN_MESSAGE = 214; BIZ_CUSTOMER_3PD_DATA_SHARING_OPT_OUT_MESSAGE = 215; + CHANGE_LIMIT_SHARING = 216; + GROUP_MEMBER_LINK_MODE = 217; } enum Status { diff --git a/proto/waWinUIApi/WAWinUIApi.pb.go b/proto/waWinUIApi/WAWinUIApi.pb.go index cd4b74d6..ed159b1b 100644 --- a/proto/waWinUIApi/WAWinUIApi.pb.go +++ b/proto/waWinUIApi/WAWinUIApi.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.6 // protoc v3.21.12 // source: waWinUIApi/WAWinUIApi.proto @@ -9,11 +9,10 @@ package waWinUIApi import ( reflect "reflect" sync "sync" + unsafe "unsafe" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - - _ "embed" ) const ( @@ -729,17 +728,78 @@ func (x *PositronMessage_WID) GetSerialized() string { var File_waWinUIApi_WAWinUIApi_proto protoreflect.FileDescriptor -//go:embed WAWinUIApi.pb.raw -var file_waWinUIApi_WAWinUIApi_proto_rawDesc []byte +const file_waWinUIApi_WAWinUIApi_proto_rawDesc = "" + + "\n" + + "\x1bwaWinUIApi/WAWinUIApi.proto\x12\n" + + "WAWinUIApi\"\xf5\x02\n" + + "\x0fPositronMessage\x12\x1c\n" + + "\ttimestamp\x18\x01 \x01(\x03R\ttimestamp\x12\x12\n" + + "\x04type\x18\x02 \x01(\tR\x04type\x12\x12\n" + + "\x04body\x18\x03 \x01(\tR\x04body\x122\n" + + "\x02ID\x18\x04 \x01(\v2\".WAWinUIApi.PositronMessage.MsgKeyR\x02ID\x12\x12\n" + + "\x04JSON\x18c \x01(\tR\x04JSON\x1a\xac\x01\n" + + "\x06MsgKey\x12\x16\n" + + "\x06fromMe\x18\x01 \x01(\bR\x06fromMe\x127\n" + + "\x06remote\x18\x02 \x01(\v2\x1f.WAWinUIApi.PositronMessage.WIDR\x06remote\x12\x0e\n" + + "\x02ID\x18\x03 \x01(\tR\x02ID\x12A\n" + + "\vparticipant\x18\x04 \x01(\v2\x1f.WAWinUIApi.PositronMessage.WIDR\vparticipant\x1a%\n" + + "\x03WID\x12\x1e\n" + + "\n" + + "serialized\x18\x01 \x01(\tR\n" + + "serialized\"\x86\x01\n" + + "\fPositronChat\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\tR\x02ID\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n" + + "\ttimestamp\x18\x03 \x01(\x03R\ttimestamp\x12 \n" + + "\vunreadCount\x18\x04 \x01(\x03R\vunreadCount\x12\x12\n" + + "\x04JSON\x18c \x01(\tR\x04JSON\"\x9f\x01\n" + + "\x0fPositronContact\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\tR\x02ID\x12 \n" + + "\vphoneNumber\x18\x02 \x01(\tR\vphoneNumber\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x122\n" + + "\x14isAddressBookContact\x18\x04 \x01(\bR\x14isAddressBookContact\x12\x12\n" + + "\x04JSON\x18c \x01(\tR\x04JSON\"U\n" + + "\x15PositronGroupMetadata\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\tR\x02ID\x12\x18\n" + + "\asubject\x18\x02 \x01(\tR\asubject\x12\x12\n" + + "\x04JSON\x18c \x01(\tR\x04JSON\"c\n" + + "\x19PositronGroupParticipants\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\tR\x02ID\x12\"\n" + + "\fparticipants\x18\x02 \x03(\tR\fparticipants\x12\x12\n" + + "\x04JSON\x18c \x01(\tR\x04JSON\"\xc2\x01\n" + + "\x10PositronReaction\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\tR\x02ID\x12\"\n" + + "\fparentMsgKey\x18\x02 \x01(\tR\fparentMsgKey\x12\"\n" + + "\freactionText\x18\x03 \x01(\tR\freactionText\x12\x1c\n" + + "\ttimestamp\x18\x04 \x01(\x03R\ttimestamp\x12$\n" + + "\rsenderUserJID\x18\x05 \x01(\tR\rsenderUserJID\x12\x12\n" + + "\x04JSON\x18c \x01(\tR\x04JSON\"\xca\x03\n" + + "\fPositronData\x12>\n" + + "\n" + + "dataSource\x18\x01 \x01(\x0e2\x1e.WAWinUIApi.PositronDataSourceR\n" + + "dataSource\x127\n" + + "\bmessages\x18\x02 \x03(\v2\x1b.WAWinUIApi.PositronMessageR\bmessages\x12.\n" + + "\x05chats\x18\x03 \x03(\v2\x18.WAWinUIApi.PositronChatR\x05chats\x127\n" + + "\bcontacts\x18\x04 \x03(\v2\x1b.WAWinUIApi.PositronContactR\bcontacts\x12G\n" + + "\rgroupMetadata\x18\x05 \x03(\v2!.WAWinUIApi.PositronGroupMetadataR\rgroupMetadata\x12S\n" + + "\x11groupParticipants\x18\x06 \x03(\v2%.WAWinUIApi.PositronGroupParticipantsR\x11groupParticipants\x12:\n" + + "\treactions\x18\a \x03(\v2\x1c.WAWinUIApi.PositronReactionR\treactions*v\n" + + "\x12PositronDataSource\x12\f\n" + + "\bMESSAGES\x10\x01\x12\t\n" + + "\x05CHATS\x10\x02\x12\f\n" + + "\bCONTACTS\x10\x03\x12\x12\n" + + "\x0eGROUP_METADATA\x10\x04\x12\x16\n" + + "\x12GROUP_PARTICIPANTS\x10\x05\x12\r\n" + + "\tREACTIONS\x10\x06B&Z$github.com/techwiz37/waSocket/proto/waWinUIApi" var ( file_waWinUIApi_WAWinUIApi_proto_rawDescOnce sync.Once - file_waWinUIApi_WAWinUIApi_proto_rawDescData = file_waWinUIApi_WAWinUIApi_proto_rawDesc + file_waWinUIApi_WAWinUIApi_proto_rawDescData []byte ) func file_waWinUIApi_WAWinUIApi_proto_rawDescGZIP() []byte { file_waWinUIApi_WAWinUIApi_proto_rawDescOnce.Do(func() { - file_waWinUIApi_WAWinUIApi_proto_rawDescData = protoimpl.X.CompressGZIP(file_waWinUIApi_WAWinUIApi_proto_rawDescData) + file_waWinUIApi_WAWinUIApi_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_waWinUIApi_WAWinUIApi_proto_rawDesc), len(file_waWinUIApi_WAWinUIApi_proto_rawDesc))) }) return file_waWinUIApi_WAWinUIApi_proto_rawDescData } @@ -785,7 +845,7 @@ func file_waWinUIApi_WAWinUIApi_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_waWinUIApi_WAWinUIApi_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_waWinUIApi_WAWinUIApi_proto_rawDesc), len(file_waWinUIApi_WAWinUIApi_proto_rawDesc)), NumEnums: 1, NumMessages: 9, NumExtensions: 0, @@ -797,7 +857,6 @@ func file_waWinUIApi_WAWinUIApi_proto_init() { MessageInfos: file_waWinUIApi_WAWinUIApi_proto_msgTypes, }.Build() File_waWinUIApi_WAWinUIApi_proto = out.File - file_waWinUIApi_WAWinUIApi_proto_rawDesc = nil file_waWinUIApi_WAWinUIApi_proto_goTypes = nil file_waWinUIApi_WAWinUIApi_proto_depIdxs = nil } diff --git a/proto/waWinUIApi/WAWinUIApi.pb.raw b/proto/waWinUIApi/WAWinUIApi.pb.raw deleted file mode 100644 index 23f2c792..00000000 --- a/proto/waWinUIApi/WAWinUIApi.pb.raw +++ /dev/null @@ -1,62 +0,0 @@ - -waWinUIApi/WAWinUIApi.proto -WAWinUIApi"õ -PositronMessage - timestamp (R timestamp -type ( Rtype -body ( Rbody2 -ID ( 2".WAWinUIApi.PositronMessage.MsgKeyRID -JSONc ( RJSON¬ -MsgKey -fromMe (RfromMe7 -remote ( 2.WAWinUIApi.PositronMessage.WIDRremote -ID ( RIDA - participant ( 2.WAWinUIApi.PositronMessage.WIDR participant% -WID - -serialized ( R -serialized"† - PositronChat -ID ( RID -name ( Rname - timestamp (R timestamp - unreadCount (R unreadCount -JSONc ( RJSON"Ÿ -PositronContact -ID ( RID - phoneNumber ( R phoneNumber -name ( Rname2 -isAddressBookContact (RisAddressBookContact -JSONc ( RJSON"U -PositronGroupMetadata -ID ( RID -subject ( Rsubject -JSONc ( RJSON"c -PositronGroupParticipants -ID ( RID" - participants ( R participants -JSONc ( RJSON" -PositronReaction -ID ( RID" - parentMsgKey ( R parentMsgKey" - reactionText ( R reactionText - timestamp (R timestamp$ - senderUserJID ( R senderUserJID -JSONc ( RJSON"Ê - PositronData> - -dataSource (2.WAWinUIApi.PositronDataSourceR -dataSource7 -messages ( 2.WAWinUIApi.PositronMessageRmessages. -chats ( 2.WAWinUIApi.PositronChatRchats7 -contacts ( 2.WAWinUIApi.PositronContactRcontactsG - groupMetadata ( 2!.WAWinUIApi.PositronGroupMetadataR groupMetadataS -groupParticipants ( 2%.WAWinUIApi.PositronGroupParticipantsRgroupParticipants: - reactions ( 2.WAWinUIApi.PositronReactionR reactions*v -PositronDataSource -MESSAGES -CHATS -CONTACTS -GROUP_METADATA -GROUP_PARTICIPANTS - REACTIONSB&Z$go.mau.fi/whatsmeow/proto/waWinUIApi \ No newline at end of file diff --git a/receipt.go b/receipt.go index f11c2ddb..1880aa6a 100644 --- a/receipt.go +++ b/receipt.go @@ -7,6 +7,7 @@ package waSocket import ( + "context" "fmt" "time" @@ -23,7 +24,7 @@ func (cli *Client) handleReceipt(node *waBinary.Node) { } else if receipt != nil { if receipt.Type == types.ReceiptTypeRetry { go func() { - err := cli.handleRetryReceipt(receipt, node) + err := cli.handleRetryReceipt(context.TODO(), receipt, node) if err != nil { cli.Log.Errorf("Failed to handle retry receipt for %s/%s from %s: %v", receipt.Chat, receipt.MessageIDs[0], receipt.Sender, err) } @@ -122,7 +123,10 @@ func (cli *Client) sendAck(node *waBinary.Node) { // TODO this hack probably needs to be removed at some point recipientJID, ok := recipient.(types.JID) if ok && recipientJID.Server == types.BotServer && node.Tag == "message" { - attrs["recipient"] = types.BotJIDMap[recipientJID] + altRecipient, ok := types.BotJIDMap[recipientJID] + if ok { + attrs["recipient"] = altRecipient + } } } if receiptType, ok := node.Attrs["type"]; node.Tag != "message" && ok { @@ -166,7 +170,7 @@ func (cli *Client) MarkRead(ids []types.MessageID, timestamp time.Time, chat, se "t": timestamp.Unix(), }, } - if chat.Server == types.NewsletterServer || cli.GetPrivacySettings().ReadReceipts == types.PrivacySettingNone { + if chat.Server == types.NewsletterServer || cli.GetPrivacySettings(context.TODO()).ReadReceipts == types.PrivacySettingNone { switch receiptType { case types.ReceiptTypeRead: node.Attrs["type"] = string(types.ReceiptTypeReadSelf) diff --git a/retry.go b/retry.go index 5f87c174..28c99c75 100644 --- a/retry.go +++ b/retry.go @@ -69,7 +69,7 @@ func (cli *Client) getRecentMessage(to types.JID, id types.MessageID) RecentMess return msg } -func (cli *Client) getMessageForRetry(receipt *events.Receipt, messageID types.MessageID) (RecentMessage, error) { +func (cli *Client) getMessageForRetry(ctx context.Context, receipt *events.Receipt, messageID types.MessageID) (RecentMessage, error) { msg := cli.getRecentMessage(receipt.Chat, messageID) if msg.IsEmpty() { waMsg := cli.GetMessageForRetry(receipt.Sender, receipt.Chat, messageID) @@ -87,10 +87,12 @@ func (cli *Client) getMessageForRetry(receipt *events.Receipt, messageID types.M const recreateSessionTimeout = 1 * time.Hour -func (cli *Client) shouldRecreateSession(retryCount int, jid types.JID) (reason string, recreate bool) { +func (cli *Client) shouldRecreateSession(ctx context.Context, retryCount int, jid types.JID) (reason string, recreate bool) { cli.sessionRecreateHistoryLock.Lock() defer cli.sessionRecreateHistoryLock.Unlock() - if !cli.Store.ContainsSession(jid.SignalAddress()) { + if contains, err := cli.Store.ContainsSession(ctx, jid.SignalAddress()); err != nil { + return "", false + } else if !contains { cli.sessionRecreateHistory[jid] = time.Now() return "we don't have a Signal session with them", true } else if retryCount < 2 { @@ -110,7 +112,7 @@ type incomingRetryKey struct { } // handleRetryReceipt handles an incoming retry receipt for an outgoing message. -func (cli *Client) handleRetryReceipt(receipt *events.Receipt, node *waBinary.Node) error { +func (cli *Client) handleRetryReceipt(ctx context.Context, receipt *events.Receipt, node *waBinary.Node) error { retryChild, ok := node.GetOptionalChildByTag("retry") if !ok { return &ElementMissingError{Tag: "retry", In: "retry receipt"} @@ -122,7 +124,7 @@ func (cli *Client) handleRetryReceipt(receipt *events.Receipt, node *waBinary.No if !ag.OK() { return ag.Error() } - msg, err := cli.getMessageForRetry(receipt, messageID) + msg, err := cli.getMessageForRetry(ctx, receipt, messageID) if err != nil { return err } @@ -152,7 +154,7 @@ func (cli *Client) handleRetryReceipt(receipt *events.Receipt, node *waBinary.No if receipt.IsGroup { builder := groups.NewGroupSessionBuilder(cli.Store, pbSerializer) senderKeyName := protocol.NewSenderKeyName(receipt.Chat.String(), cli.getOwnLID().SignalAddress()) - signalSKDMessage, err := builder.Create(senderKeyName) + signalSKDMessage, err := builder.Create(ctx, senderKeyName) if err != nil { cli.Log.Warnf("Failed to create sender key distribution message to include in retry of %s in %s to %s: %v", messageID, receipt.Chat, receipt.Sender, err) } @@ -210,10 +212,10 @@ func (cli *Client) handleRetryReceipt(receipt *events.Receipt, node *waBinary.No if err != nil { return fmt.Errorf("failed to read prekey bundle in retry receipt: %w", err) } - } else if reason, recreate := cli.shouldRecreateSession(retryCount, receipt.Sender); recreate { + } else if reason, recreate := cli.shouldRecreateSession(ctx, retryCount, receipt.Sender); recreate { cli.Log.Debugf("Fetching prekeys for %s for handling retry receipt with no prekey bundle because %s", receipt.Sender, reason) var keys map[types.JID]preKeyResp - keys, err = cli.fetchPreKeys(context.TODO(), []types.JID{receipt.Sender}) + keys, err = cli.fetchPreKeys(ctx, []types.JID{receipt.Sender}) if err != nil { return err } @@ -242,17 +244,17 @@ func (cli *Client) handleRetryReceipt(receipt *events.Receipt, node *waBinary.No if msg.wa != nil { encryptionIdentity := receipt.Sender if receipt.Sender.Server == types.DefaultUserServer { - lidForPN, err := cli.Store.LIDs.GetLIDForPN(context.TODO(), receipt.Sender) + lidForPN, err := cli.Store.LIDs.GetLIDForPN(ctx, receipt.Sender) if err != nil { cli.Log.Warnf("Failed to get LID for %s: %v", receipt.Sender, err) } else if !lidForPN.IsEmpty() { - cli.migrateSessionStore(receipt.Sender, lidForPN) + cli.migrateSessionStore(ctx, receipt.Sender, lidForPN) encryptionIdentity = lidForPN } } - encrypted, includeDeviceIdentity, err = cli.encryptMessageForDevice(plaintext, encryptionIdentity, bundle, encAttrs) + encrypted, includeDeviceIdentity, err = cli.encryptMessageForDevice(ctx, plaintext, encryptionIdentity, bundle, encAttrs) } else { - encrypted, err = cli.encryptMessageForDeviceV3(&waMsgTransport.MessageTransport_Payload{ + encrypted, err = cli.encryptMessageForDeviceV3(ctx, &waMsgTransport.MessageTransport_Payload{ ApplicationPayload: &waCommon.SubProtocol{ Payload: plaintext, Version: proto.Int32(FBMessageApplicationVersion), @@ -359,6 +361,7 @@ func (cli *Client) delayedRequestMessageFromPhone(info *types.MessageInfo) { } else { cli.Log.Debugf("Requested message %s from phone", info.ID) } + return } func (cli *Client) clearDelayedMessageRequests() { @@ -370,7 +373,7 @@ func (cli *Client) clearDelayedMessageRequests() { } // sendRetryReceipt sends a retry receipt for an incoming message. -func (cli *Client) sendRetryReceipt(node *waBinary.Node, info *types.MessageInfo, forceIncludeIdentity bool) { +func (cli *Client) sendRetryReceipt(ctx context.Context, node *waBinary.Node, info *types.MessageInfo, forceIncludeIdentity bool) { id, _ := node.Attrs["id"].(string) children := node.GetChildren() var retryCountInMsg int @@ -422,7 +425,7 @@ func (cli *Client) sendRetryReceipt(node *waBinary.Node, info *types.MessageInfo }, } if retryCount > 1 || forceIncludeIdentity { - if key, err := cli.Store.PreKeys.GenOnePreKey(); err != nil { + if key, err := cli.Store.PreKeys.GenOnePreKey(ctx); err != nil { cli.Log.Errorf("Failed to get prekey for retry receipt: %v", err) } else if deviceIdentity, err := proto.Marshal(cli.Store.Account); err != nil { cli.Log.Errorf("Failed to marshal account info: %v", err) diff --git a/send.go b/send.go index 967f20d7..0c4df636 100644 --- a/send.go +++ b/send.go @@ -36,6 +36,8 @@ import ( "github.com/techwiz37/waSocket/types/events" ) +const WebMessageIDPrefix = "3EB0" + // GenerateMessageID generates a random string that can be used as a message ID on WhatsApp. // // msgID := cli.GenerateMessageID() @@ -53,7 +55,7 @@ func (cli *Client) GenerateMessageID() types.MessageID { } data = append(data, random.Bytes(16)...) hash := sha256.Sum256(data) - return "3EB0" + strings.ToUpper(hex.EncodeToString(hash[:9])) + return WebMessageIDPrefix + strings.ToUpper(hex.EncodeToString(hash[:9])) } func GenerateFacebookMessageID() int64 { @@ -68,7 +70,7 @@ func GenerateFacebookMessageID() int64 { // // Deprecated: WhatsApp web has switched to using a hash of the current timestamp, user id and random bytes. Use Client.GenerateMessageID instead. func GenerateMessageID() types.MessageID { - return "3EB0" + strings.ToUpper(hex.EncodeToString(random.Bytes(8))) + return WebMessageIDPrefix + strings.ToUpper(hex.EncodeToString(random.Bytes(8))) } type MessageDebugTimings struct { @@ -147,6 +149,9 @@ type SendRequestExtra struct { MediaHandle string Meta *types.MsgMetaInfo + + // When sending status message you can specify the recipients + Participants []types.JID } // SendMessage sends the given message. @@ -304,11 +309,14 @@ func (cli *Client) SendMessage(ctx context.Context, to types.JID, message *waE2E extraParams.addressingMode = types.AddressingModePN } } else { - // TODO use context - groupParticipants, err = cli.getBroadcastListParticipants(to) - if err != nil { - err = fmt.Errorf("failed to get broadcast list members: %w", err) - return + if len(req.Participants) != 0 { + groupParticipants = req.Participants + } else { + groupParticipants, err = cli.getBroadcastListParticipants(ctx, to) + if err != nil { + err = fmt.Errorf("failed to get broadcast list members: %w", err) + return + } } } resp.DebugTimings.GetParticipants = time.Since(start) @@ -349,7 +357,7 @@ func (cli *Client) SendMessage(ctx context.Context, to types.JID, message *waE2E } if message.GetMessageContextInfo().GetMessageSecret() != nil { - err = cli.Store.MsgSecrets.PutMessageSecret(to, ownID, req.ID, message.GetMessageContextInfo().GetMessageSecret()) + err = cli.Store.MsgSecrets.PutMessageSecret(ctx, to, ownID, req.ID, message.GetMessageContextInfo().GetMessageSecret()) if err != nil { cli.Log.Warnf("Failed to store message secret key for outgoing message %s: %v", req.ID, err) } else { @@ -363,7 +371,7 @@ func (cli *Client) SendMessage(ctx context.Context, to types.JID, message *waE2E phash, data, err = cli.sendGroup(ctx, to, groupParticipants, req.ID, message, &resp.DebugTimings, extraParams) case types.DefaultUserServer, types.BotServer: if req.Peer { - data, err = cli.sendPeerMessage(to, req.ID, message, &resp.DebugTimings) + data, err = cli.sendPeerMessage(ctx, to, req.ID, message, &resp.DebugTimings) } else { data, err = cli.sendDM(ctx, ownID, to, req.ID, message, &resp.DebugTimings, extraParams) } @@ -704,7 +712,7 @@ func (cli *Client) sendGroup( start = time.Now() builder := groups.NewGroupSessionBuilder(cli.Store, pbSerializer) senderKeyName := protocol.NewSenderKeyName(to.String(), cli.getOwnLID().SignalAddress()) - signalSKDMessage, err := builder.Create(senderKeyName) + signalSKDMessage, err := builder.Create(ctx, senderKeyName) if err != nil { return "", nil, fmt.Errorf("failed to create sender key distribution message to send %s to %s: %w", id, to, err) } @@ -720,7 +728,7 @@ func (cli *Client) sendGroup( } cipher := groups.NewGroupCipher(builder, senderKeyName, cli.Store) - encrypted, err := cipher.Encrypt(padMessage(plaintext)) + encrypted, err := cipher.Encrypt(ctx, padMessage(plaintext)) if err != nil { return "", nil, fmt.Errorf("failed to encrypt group message to send %s to %s: %w", id, to, err) } @@ -755,8 +763,14 @@ func (cli *Client) sendGroup( return phash, data, nil } -func (cli *Client) sendPeerMessage(to types.JID, id types.MessageID, message *waE2E.Message, timings *MessageDebugTimings) ([]byte, error) { - node, err := cli.preparePeerMessageNode(to, id, message, timings) +func (cli *Client) sendPeerMessage( + ctx context.Context, + to types.JID, + id types.MessageID, + message *waE2E.Message, + timings *MessageDebugTimings, +) ([]byte, error) { + node, err := cli.preparePeerMessageNode(ctx, to, id, message, timings) if err != nil { return nil, err } @@ -953,7 +967,13 @@ func getEditAttribute(msg *waE2E.Message) types.EditAttribute { return types.EditAttributeEmpty } -func (cli *Client) preparePeerMessageNode(to types.JID, id types.MessageID, message *waE2E.Message, timings *MessageDebugTimings) (*waBinary.Node, error) { +func (cli *Client) preparePeerMessageNode( + ctx context.Context, + to types.JID, + id types.MessageID, + message *waE2E.Message, + timings *MessageDebugTimings, +) (*waBinary.Node, error) { attrs := waBinary.Attrs{ "id": id, "type": "text", @@ -971,7 +991,7 @@ func (cli *Client) preparePeerMessageNode(to types.JID, id types.MessageID, mess return nil, err } start = time.Now() - encrypted, isPreKey, err := cli.encryptMessageForDevice(plaintext, to, nil, nil) + encrypted, isPreKey, err := cli.encryptMessageForDevice(ctx, plaintext, to, nil, nil) timings.PeerEncrypt = time.Since(start) if err != nil { return nil, fmt.Errorf("failed to encrypt peer message for %s: %v", to, err) @@ -1152,19 +1172,20 @@ func (cli *Client) encryptMessageForDevices( if err != nil { cli.Log.Warnf("Failed to get LID for %s: %v", jid, err) } else if !lidForPN.IsEmpty() { - cli.migrateSessionStore(jid, lidForPN) + cli.migrateSessionStore(ctx, jid, lidForPN) encryptionIdentity = lidForPN } } encrypted, isPreKey, err := cli.encryptMessageForDeviceAndWrap( - plaintext, jid, encryptionIdentity, nil, encAttrs, + ctx, plaintext, jid, encryptionIdentity, nil, encAttrs, ) if errors.Is(err, ErrNoSession) { retryDevices = append(retryDevices, jid) retryEncryptionIdentities = append(retryEncryptionIdentities, encryptionIdentity) continue } else if err != nil { + // TODO return these errors if it's a fatal one (like context cancellation or database) cli.Log.Warnf("Failed to encrypt %s for %s: %v", id, jid, err) continue } @@ -1190,9 +1211,10 @@ func (cli *Client) encryptMessageForDevices( plaintext = dsmPlaintext } encrypted, isPreKey, err := cli.encryptMessageForDeviceAndWrap( - plaintext, jid, retryEncryptionIdentities[i], resp.bundle, encAttrs, + ctx, plaintext, jid, retryEncryptionIdentities[i], resp.bundle, encAttrs, ) if err != nil { + // TODO return these errors if it's a fatal one (like context cancellation or database) cli.Log.Warnf("Failed to encrypt %s for %s (retry): %v", id, jid, err) continue } @@ -1207,6 +1229,7 @@ func (cli *Client) encryptMessageForDevices( } func (cli *Client) encryptMessageForDeviceAndWrap( + ctx context.Context, plaintext []byte, wireIdentity, encryptionIdentity types.JID, @@ -1214,7 +1237,7 @@ func (cli *Client) encryptMessageForDeviceAndWrap( encAttrs waBinary.Attrs, ) (*waBinary.Node, bool, error) { node, includeDeviceIdentity, err := cli.encryptMessageForDevice( - plaintext, encryptionIdentity, bundle, encAttrs, + ctx, plaintext, encryptionIdentity, bundle, encAttrs, ) if err != nil { return nil, false, err @@ -1233,6 +1256,7 @@ func copyAttrs(from, to waBinary.Attrs) { } func (cli *Client) encryptMessageForDevice( + ctx context.Context, plaintext []byte, to types.JID, bundle *prekey.Bundle, @@ -1241,20 +1265,25 @@ func (cli *Client) encryptMessageForDevice( builder := session.NewBuilderFromSignal(cli.Store, to.SignalAddress(), pbSerializer) if bundle != nil { cli.Log.Debugf("Processing prekey bundle for %s", to) - err := builder.ProcessBundle(bundle) + err := builder.ProcessBundle(ctx, bundle) if cli.AutoTrustIdentity && errors.Is(err, signalerror.ErrUntrustedIdentity) { cli.Log.Warnf("Got %v error while trying to process prekey bundle for %s, clearing stored identity and retrying", err, to) - cli.clearUntrustedIdentity(to) - err = builder.ProcessBundle(bundle) + err = cli.clearUntrustedIdentity(ctx, to) + if err != nil { + return nil, false, fmt.Errorf("failed to clear untrusted identity: %w", err) + } + err = builder.ProcessBundle(ctx, bundle) } if err != nil { return nil, false, fmt.Errorf("failed to process prekey bundle: %w", err) } - } else if !cli.Store.ContainsSession(to.SignalAddress()) { + } else if contains, err := cli.Store.ContainsSession(ctx, to.SignalAddress()); err != nil { + return nil, false, err + } else if !contains { return nil, false, ErrNoSession } cipher := session.NewCipher(builder, to.SignalAddress()) - ciphertext, err := cipher.Encrypt(padMessage(plaintext)) + ciphertext, err := cipher.Encrypt(ctx, padMessage(plaintext)) if err != nil { return nil, false, fmt.Errorf("cipher encryption failed: %w", err) } diff --git a/sendfb.go b/sendfb.go index e29dbd2b..8950c271 100644 --- a/sendfb.go +++ b/sendfb.go @@ -228,7 +228,7 @@ func (cli *Client) sendGroupV3( start = time.Now() builder := groups.NewGroupSessionBuilder(cli.Store, pbSerializer) senderKeyName := protocol.NewSenderKeyName(to.String(), ownID.SignalAddress()) - signalSKDMessage, err := builder.Create(senderKeyName) + signalSKDMessage, err := builder.Create(ctx, senderKeyName) if err != nil { return "", nil, fmt.Errorf("failed to create sender key distribution message to send %s to %s: %w", id, to, err) } @@ -265,7 +265,7 @@ func (cli *Client) sendGroupV3( if err != nil { return "", nil, fmt.Errorf("failed to marshal message transport: %w", err) } - encrypted, err := cipher.Encrypt(plaintext) + encrypted, err := cipher.Encrypt(ctx, plaintext) if err != nil { return "", nil, fmt.Errorf("failed to encrypt group message to send %s to %s: %w", id, to, err) } @@ -528,11 +528,12 @@ func (cli *Client) encryptMessageForDevicesV3( } dsmForDevice = dsm } - encrypted, err := cli.encryptMessageForDeviceAndWrapV3(payload, skdm, dsmForDevice, jid, nil, encAttrs) + encrypted, err := cli.encryptMessageForDeviceAndWrapV3(ctx, payload, skdm, dsmForDevice, jid, nil, encAttrs) if errors.Is(err, ErrNoSession) { retryDevices = append(retryDevices, jid) continue } else if err != nil { + // TODO return these errors if it's a fatal one (like context cancellation or database) cli.Log.Warnf("Failed to encrypt %s for %s: %v", id, jid, err) continue } @@ -553,8 +554,9 @@ func (cli *Client) encryptMessageForDevicesV3( if jid.User == ownID.User { dsmForDevice = dsm } - encrypted, err := cli.encryptMessageForDeviceAndWrapV3(payload, skdm, dsmForDevice, jid, resp.bundle, encAttrs) + encrypted, err := cli.encryptMessageForDeviceAndWrapV3(ctx, payload, skdm, dsmForDevice, jid, resp.bundle, encAttrs) if err != nil { + // TODO return these errors if it's a fatal one (like context cancellation or database) cli.Log.Warnf("Failed to encrypt %s for %s (retry): %v", id, jid, err) continue } @@ -566,6 +568,7 @@ func (cli *Client) encryptMessageForDevicesV3( } func (cli *Client) encryptMessageForDeviceAndWrapV3( + ctx context.Context, payload *waMsgTransport.MessageTransport_Payload, skdm *waMsgTransport.MessageTransport_Protocol_Ancillary_SenderKeyDistributionMessage, dsm *waMsgTransport.MessageTransport_Protocol_Integral_DeviceSentMessage, @@ -573,7 +576,7 @@ func (cli *Client) encryptMessageForDeviceAndWrapV3( bundle *prekey.Bundle, encAttrs waBinary.Attrs, ) (*waBinary.Node, error) { - node, err := cli.encryptMessageForDeviceV3(payload, skdm, dsm, to, bundle, encAttrs) + node, err := cli.encryptMessageForDeviceV3(ctx, payload, skdm, dsm, to, bundle, encAttrs) if err != nil { return nil, err } @@ -585,6 +588,7 @@ func (cli *Client) encryptMessageForDeviceAndWrapV3( } func (cli *Client) encryptMessageForDeviceV3( + ctx context.Context, payload *waMsgTransport.MessageTransport_Payload, skdm *waMsgTransport.MessageTransport_Protocol_Ancillary_SenderKeyDistributionMessage, dsm *waMsgTransport.MessageTransport_Protocol_Integral_DeviceSentMessage, @@ -595,16 +599,21 @@ func (cli *Client) encryptMessageForDeviceV3( builder := session.NewBuilderFromSignal(cli.Store, to.SignalAddress(), pbSerializer) if bundle != nil { cli.Log.Debugf("Processing prekey bundle for %s", to) - err := builder.ProcessBundle(bundle) + err := builder.ProcessBundle(ctx, bundle) if cli.AutoTrustIdentity && errors.Is(err, signalerror.ErrUntrustedIdentity) { cli.Log.Warnf("Got %v error while trying to process prekey bundle for %s, clearing stored identity and retrying", err, to) - cli.clearUntrustedIdentity(to) - err = builder.ProcessBundle(bundle) + err = cli.clearUntrustedIdentity(ctx, to) + if err != nil { + return nil, fmt.Errorf("failed to clear untrusted identity: %w", err) + } + err = builder.ProcessBundle(ctx, bundle) } if err != nil { return nil, fmt.Errorf("failed to process prekey bundle: %w", err) } - } else if !cli.Store.ContainsSession(to.SignalAddress()) { + } else if contains, err := cli.Store.ContainsSession(ctx, to.SignalAddress()); err != nil { + return nil, err + } else if !contains { return nil, ErrNoSession } cipher := session.NewCipher(builder, to.SignalAddress()) @@ -626,7 +635,7 @@ func (cli *Client) encryptMessageForDeviceV3( if err != nil { return nil, fmt.Errorf("failed to marshal message transport: %w", err) } - ciphertext, err := cipher.Encrypt(plaintext) + ciphertext, err := cipher.Encrypt(ctx, plaintext) if err != nil { return nil, fmt.Errorf("cipher encryption failed: %w", err) } diff --git a/store/clientpayload.go b/store/clientpayload.go index f94a8108..f190036a 100644 --- a/store/clientpayload.go +++ b/store/clientpayload.go @@ -76,7 +76,7 @@ func (vc WAVersionContainer) ProtoAppVersion() *waWa6.ClientPayload_UserAgent_Ap } // waVersion is the WhatsApp web client version -var waVersion = WAVersionContainer{2, 3000, 1021636778} +var waVersion = WAVersionContainer{2, 3000, 1022781640} // waVersionHash is the md5 hash of a dot-separated waVersion var waVersionHash [16]byte diff --git a/store/noop.go b/store/noop.go index 80929a59..8f42f930 100644 --- a/store/noop.go +++ b/store/noop.go @@ -36,45 +36,46 @@ var NoopDevice = &Device{ ChatSettings: nilStore, MsgSecrets: nilStore, PrivacyTokens: nilStore, + EventBuffer: nilStore, Container: nilStore, } var _ AllStores = (*NoopStore)(nil) var _ DeviceContainer = (*NoopStore)(nil) -func (n *NoopStore) PutIdentity(address string, key [32]byte) error { +func (n *NoopStore) PutIdentity(ctx context.Context, address string, key [32]byte) error { return n.Error } -func (n *NoopStore) DeleteAllIdentities(phone string) error { +func (n *NoopStore) DeleteAllIdentities(ctx context.Context, phone string) error { return n.Error } -func (n *NoopStore) DeleteIdentity(address string) error { +func (n *NoopStore) DeleteIdentity(ctx context.Context, address string) error { return n.Error } -func (n *NoopStore) IsTrustedIdentity(address string, key [32]byte) (bool, error) { +func (n *NoopStore) IsTrustedIdentity(ctx context.Context, address string, key [32]byte) (bool, error) { return false, n.Error } -func (n *NoopStore) GetSession(address string) ([]byte, error) { +func (n *NoopStore) GetSession(ctx context.Context, address string) ([]byte, error) { return nil, n.Error } -func (n *NoopStore) HasSession(address string) (bool, error) { +func (n *NoopStore) HasSession(ctx context.Context, address string) (bool, error) { return false, n.Error } -func (n *NoopStore) PutSession(address string, session []byte) error { +func (n *NoopStore) PutSession(ctx context.Context, address string, session []byte) error { return n.Error } -func (n *NoopStore) DeleteAllSessions(phone string) error { +func (n *NoopStore) DeleteAllSessions(ctx context.Context, phone string) error { return n.Error } -func (n *NoopStore) DeleteSession(address string) error { +func (n *NoopStore) DeleteSession(ctx context.Context, address string) error { return n.Error } @@ -82,142 +83,162 @@ func (n *NoopStore) MigratePNToLID(ctx context.Context, pn, lid types.JID) error return n.Error } -func (n *NoopStore) GetOrGenPreKeys(count uint32) ([]*keys.PreKey, error) { +func (n *NoopStore) GetOrGenPreKeys(ctx context.Context, count uint32) ([]*keys.PreKey, error) { return nil, n.Error } -func (n *NoopStore) GenOnePreKey() (*keys.PreKey, error) { +func (n *NoopStore) GenOnePreKey(ctx context.Context) (*keys.PreKey, error) { return nil, n.Error } -func (n *NoopStore) GetPreKey(id uint32) (*keys.PreKey, error) { +func (n *NoopStore) GetPreKey(ctx context.Context, id uint32) (*keys.PreKey, error) { return nil, n.Error } -func (n *NoopStore) RemovePreKey(id uint32) error { +func (n *NoopStore) RemovePreKey(ctx context.Context, id uint32) error { return n.Error } -func (n *NoopStore) MarkPreKeysAsUploaded(upToID uint32) error { +func (n *NoopStore) MarkPreKeysAsUploaded(ctx context.Context, upToID uint32) error { return n.Error } -func (n *NoopStore) UploadedPreKeyCount() (int, error) { +func (n *NoopStore) UploadedPreKeyCount(ctx context.Context) (int, error) { return 0, n.Error } -func (n *NoopStore) PutSenderKey(group, user string, session []byte) error { +func (n *NoopStore) PutSenderKey(ctx context.Context, group, user string, session []byte) error { return n.Error } -func (n *NoopStore) GetSenderKey(group, user string) ([]byte, error) { +func (n *NoopStore) GetSenderKey(ctx context.Context, group, user string) ([]byte, error) { return nil, n.Error } -func (n *NoopStore) PutAppStateSyncKey(id []byte, key AppStateSyncKey) error { +func (n *NoopStore) PutAppStateSyncKey(ctx context.Context, id []byte, key AppStateSyncKey) error { return n.Error } -func (n *NoopStore) GetAppStateSyncKey(id []byte) (*AppStateSyncKey, error) { +func (n *NoopStore) GetAppStateSyncKey(ctx context.Context, id []byte) (*AppStateSyncKey, error) { return nil, n.Error } -func (n *NoopStore) GetLatestAppStateSyncKeyID() ([]byte, error) { +func (n *NoopStore) GetLatestAppStateSyncKeyID(ctx context.Context) ([]byte, error) { return nil, n.Error } -func (n *NoopStore) PutAppStateVersion(name string, version uint64, hash [128]byte) error { +func (n *NoopStore) PutAppStateVersion(ctx context.Context, name string, version uint64, hash [128]byte) error { return n.Error } -func (n *NoopStore) GetAppStateVersion(name string) (uint64, [128]byte, error) { +func (n *NoopStore) GetAppStateVersion(ctx context.Context, name string) (uint64, [128]byte, error) { return 0, [128]byte{}, n.Error } -func (n *NoopStore) DeleteAppStateVersion(name string) error { +func (n *NoopStore) DeleteAppStateVersion(ctx context.Context, name string) error { return n.Error } -func (n *NoopStore) PutAppStateMutationMACs(name string, version uint64, mutations []AppStateMutationMAC) error { +func (n *NoopStore) PutAppStateMutationMACs(ctx context.Context, name string, version uint64, mutations []AppStateMutationMAC) error { return n.Error } -func (n *NoopStore) DeleteAppStateMutationMACs(name string, indexMACs [][]byte) error { +func (n *NoopStore) DeleteAppStateMutationMACs(ctx context.Context, name string, indexMACs [][]byte) error { return n.Error } -func (n *NoopStore) GetAppStateMutationMAC(name string, indexMAC []byte) (valueMAC []byte, err error) { +func (n *NoopStore) GetAppStateMutationMAC(ctx context.Context, name string, indexMAC []byte) (valueMAC []byte, err error) { return nil, n.Error } -func (n *NoopStore) PutPushName(user types.JID, pushName string) (bool, string, error) { +func (n *NoopStore) PutPushName(ctx context.Context, user types.JID, pushName string) (bool, string, error) { return false, "", n.Error } -func (n *NoopStore) PutBusinessName(user types.JID, businessName string) (bool, string, error) { +func (n *NoopStore) PutBusinessName(ctx context.Context, user types.JID, businessName string) (bool, string, error) { return false, "", n.Error } -func (n *NoopStore) PutContactName(user types.JID, fullName, firstName string) error { +func (n *NoopStore) PutContactName(ctx context.Context, user types.JID, fullName, firstName string) error { return n.Error } -func (n *NoopStore) PutAllContactNames(contacts []ContactEntry) error { +func (n *NoopStore) PutAllContactNames(ctx context.Context, contacts []ContactEntry) error { return n.Error } -func (n *NoopStore) GetContact(user types.JID) (types.ContactInfo, error) { +func (n *NoopStore) GetContact(ctx context.Context, user types.JID) (types.ContactInfo, error) { return types.ContactInfo{}, n.Error } -func (n *NoopStore) GetAllContacts() (map[types.JID]types.ContactInfo, error) { +func (n *NoopStore) GetAllContacts(ctx context.Context) (map[types.JID]types.ContactInfo, error) { return nil, n.Error } -func (n *NoopStore) PutMutedUntil(chat types.JID, mutedUntil time.Time) error { +func (n *NoopStore) PutMutedUntil(ctx context.Context, chat types.JID, mutedUntil time.Time) error { return n.Error } -func (n *NoopStore) PutPinned(chat types.JID, pinned bool) error { +func (n *NoopStore) PutPinned(ctx context.Context, chat types.JID, pinned bool) error { return n.Error } -func (n *NoopStore) PutArchived(chat types.JID, archived bool) error { +func (n *NoopStore) PutArchived(ctx context.Context, chat types.JID, archived bool) error { return n.Error } -func (n *NoopStore) GetChatSettings(chat types.JID) (types.LocalChatSettings, error) { +func (n *NoopStore) GetChatSettings(ctx context.Context, chat types.JID) (types.LocalChatSettings, error) { return types.LocalChatSettings{}, n.Error } -func (n *NoopStore) PutMessageSecrets(inserts []MessageSecretInsert) error { +func (n *NoopStore) PutMessageSecrets(ctx context.Context, inserts []MessageSecretInsert) error { return n.Error } -func (n *NoopStore) PutMessageSecret(chat, sender types.JID, id types.MessageID, secret []byte) error { +func (n *NoopStore) PutMessageSecret(ctx context.Context, chat, sender types.JID, id types.MessageID, secret []byte) error { return n.Error } -func (n *NoopStore) GetMessageSecret(chat, sender types.JID, id types.MessageID) ([]byte, error) { +func (n *NoopStore) GetMessageSecret(ctx context.Context, chat, sender types.JID, id types.MessageID) ([]byte, error) { return nil, n.Error } -func (n *NoopStore) PutPrivacyTokens(tokens ...PrivacyToken) error { +func (n *NoopStore) PutPrivacyTokens(ctx context.Context, tokens ...PrivacyToken) error { return n.Error } -func (n *NoopStore) GetPrivacyToken(user types.JID) (*PrivacyToken, error) { +func (n *NoopStore) GetPrivacyToken(ctx context.Context, user types.JID) (*PrivacyToken, error) { return nil, n.Error } -func (n *NoopStore) PutDevice(store *Device) error { +func (n *NoopStore) PutDevice(ctx context.Context, store *Device) error { return n.Error } -func (n *NoopStore) DeleteDevice(store *Device) error { +func (n *NoopStore) DeleteDevice(ctx context.Context, store *Device) error { return n.Error } +func (n *NoopStore) GetBufferedEvent(ctx context.Context, ciphertextHash [32]byte) (*BufferedEvent, error) { + return nil, nil +} + +func (n *NoopStore) PutBufferedEvent(ctx context.Context, ciphertextHash [32]byte, plaintext []byte, serverTimestamp time.Time) error { + return nil +} + +func (n *NoopStore) DoDecryptionTxn(ctx context.Context, fn func(context.Context) error) error { + return fn(ctx) +} + +func (n *NoopStore) ClearBufferedEventPlaintext(ctx context.Context, ciphertextHash [32]byte) error { + return nil +} + +func (n *NoopStore) DeleteOldBufferedHashes(ctx context.Context) error { + return nil +} + func (n *NoopStore) GetLIDForPN(ctx context.Context, pn types.JID) (types.JID, error) { return types.JID{}, n.Error } diff --git a/store/signal.go b/store/signal.go index dbee709b..f002e604 100644 --- a/store/signal.go +++ b/store/signal.go @@ -7,6 +7,9 @@ package store import ( + "context" + "fmt" + "go.mau.fi/libsignal/ecc" groupRecord "go.mau.fi/libsignal/groups/state/record" "go.mau.fi/libsignal/keys/identity" @@ -14,8 +17,6 @@ import ( "go.mau.fi/libsignal/serialize" "go.mau.fi/libsignal/state/record" "go.mau.fi/libsignal/state/store" - - "github.com/techwiz37/waSocket/util/keys" ) var SignalProtobufSerializer = serialize.NewProtoBufSerializer() @@ -29,167 +30,153 @@ func (device *Device) GetIdentityKeyPair() *identity.KeyPair { ) } -func (device *Device) GetLocalRegistrationId() uint32 { +func (device *Device) GetLocalRegistrationID() uint32 { return device.RegistrationID } -func (device *Device) SaveIdentity(address *protocol.SignalAddress, identityKey *identity.Key) { - for i := 0; ; i++ { - err := device.Identities.PutIdentity(address.String(), identityKey.PublicKey().PublicKey()) - if err == nil || !device.handleDatabaseError(i, err, "save identity of %s", address.String()) { - break - } +func (device *Device) SaveIdentity(ctx context.Context, address *protocol.SignalAddress, identityKey *identity.Key) error { + addrString := address.String() + err := device.Identities.PutIdentity(ctx, addrString, identityKey.PublicKey().PublicKey()) + if err != nil { + return fmt.Errorf("failed to save identity of %s: %w", addrString, err) } + return nil } -func (device *Device) IsTrustedIdentity(address *protocol.SignalAddress, identityKey *identity.Key) bool { - for i := 0; ; i++ { - isTrusted, err := device.Identities.IsTrustedIdentity(address.String(), identityKey.PublicKey().PublicKey()) - if err == nil || !device.handleDatabaseError(i, err, "check if %s's identity is trusted", address.String()) { - return isTrusted - } +func (device *Device) IsTrustedIdentity(ctx context.Context, address *protocol.SignalAddress, identityKey *identity.Key) (bool, error) { + addrString := address.String() + isTrusted, err := device.Identities.IsTrustedIdentity(ctx, addrString, identityKey.PublicKey().PublicKey()) + if err != nil { + return false, fmt.Errorf("failed to check if %s's identity is trusted: %w", addrString, err) } + return isTrusted, nil } -func (device *Device) LoadPreKey(id uint32) *record.PreKey { - var preKey *keys.PreKey - for i := 0; ; i++ { - var err error - preKey, err = device.PreKeys.GetPreKey(id) - if err == nil || !device.handleDatabaseError(i, err, "load prekey %d", id) { - break - } +func (device *Device) LoadPreKey(ctx context.Context, id uint32) (*record.PreKey, error) { + preKey, err := device.PreKeys.GetPreKey(ctx, id) + if err != nil { + return nil, fmt.Errorf("failed to load prekey %d: %w", id, err) } if preKey == nil { - return nil + return nil, nil } return record.NewPreKey(preKey.KeyID, ecc.NewECKeyPair( ecc.NewDjbECPublicKey(*preKey.Pub), ecc.NewDjbECPrivateKey(*preKey.Priv), - ), nil) + ), nil), nil } -func (device *Device) RemovePreKey(id uint32) { - for i := 0; ; i++ { - err := device.PreKeys.RemovePreKey(id) - if err == nil || !device.handleDatabaseError(i, err, "remove prekey %d", id) { - break - } +func (device *Device) RemovePreKey(ctx context.Context, id uint32) error { + err := device.PreKeys.RemovePreKey(ctx, id) + if err != nil { + return fmt.Errorf("failed to remove prekey %d: %w", id, err) } + return nil } -func (device *Device) StorePreKey(preKeyID uint32, preKeyRecord *record.PreKey) { +func (device *Device) StorePreKey(ctx context.Context, preKeyID uint32, preKeyRecord *record.PreKey) error { panic("not implemented") } -func (device *Device) ContainsPreKey(preKeyID uint32) bool { +func (device *Device) ContainsPreKey(ctx context.Context, preKeyID uint32) (bool, error) { panic("not implemented") } -func (device *Device) LoadSession(address *protocol.SignalAddress) *record.Session { - var rawSess []byte - var err error - for i := 0; ; i++ { - rawSess, err = device.Sessions.GetSession(address.String()) - if err == nil || !device.handleDatabaseError(i, err, "load session with %s", address.String()) { - break - } +func (device *Device) LoadSession(ctx context.Context, address *protocol.SignalAddress) (*record.Session, error) { + addrString := address.String() + rawSess, err := device.Sessions.GetSession(ctx, addrString) + if err != nil { + return nil, fmt.Errorf("failed to load session with %s: %w", addrString, err) } if rawSess == nil { - if err != nil { - return nil - } - return record.NewSession(SignalProtobufSerializer.Session, SignalProtobufSerializer.State) + return record.NewSession(SignalProtobufSerializer.Session, SignalProtobufSerializer.State), nil } sess, err := record.NewSessionFromBytes(rawSess, SignalProtobufSerializer.Session, SignalProtobufSerializer.State) if err != nil { - device.Log.Errorf("Failed to deserialize session with %s: %v", address.String(), err) - return nil + return nil, fmt.Errorf("failed to deserialize session with %s: %w", addrString, err) } - return sess + return sess, nil } -func (device *Device) GetSubDeviceSessions(name string) []uint32 { +func (device *Device) GetSubDeviceSessions(ctx context.Context, name string) ([]uint32, error) { panic("not implemented") } -func (device *Device) StoreSession(address *protocol.SignalAddress, record *record.Session) { - for i := 0; ; i++ { - err := device.Sessions.PutSession(address.String(), record.Serialize()) - if err == nil || !device.handleDatabaseError(i, err, "store session with %s", address.String()) { - return - } +func (device *Device) StoreSession(ctx context.Context, address *protocol.SignalAddress, record *record.Session) error { + addrString := address.String() + err := device.Sessions.PutSession(ctx, addrString, record.Serialize()) + if err != nil { + return fmt.Errorf("failed to store session with %s: %w", addrString, err) } + return nil } -func (device *Device) ContainsSession(remoteAddress *protocol.SignalAddress) bool { - for i := 0; ; i++ { - hasSession, err := device.Sessions.HasSession(remoteAddress.String()) - if err == nil || !device.handleDatabaseError(i, err, "check if store has session for %s", remoteAddress.String()) { - return hasSession - } +func (device *Device) ContainsSession(ctx context.Context, remoteAddress *protocol.SignalAddress) (bool, error) { + addrString := remoteAddress.String() + hasSession, err := device.Sessions.HasSession(ctx, addrString) + if err != nil { + return false, fmt.Errorf("failed to check if store has session for %s: %w", addrString, err) } + return hasSession, nil } -func (device *Device) DeleteSession(remoteAddress *protocol.SignalAddress) { +func (device *Device) DeleteSession(ctx context.Context, remoteAddress *protocol.SignalAddress) error { panic("not implemented") } -func (device *Device) DeleteAllSessions() { +func (device *Device) DeleteAllSessions(ctx context.Context) error { panic("not implemented") } -func (device *Device) LoadSignedPreKey(signedPreKeyID uint32) *record.SignedPreKey { +func (device *Device) LoadSignedPreKey(ctx context.Context, signedPreKeyID uint32) (*record.SignedPreKey, error) { if signedPreKeyID == device.SignedPreKey.KeyID { return record.NewSignedPreKey(signedPreKeyID, 0, ecc.NewECKeyPair( ecc.NewDjbECPublicKey(*device.SignedPreKey.Pub), ecc.NewDjbECPrivateKey(*device.SignedPreKey.Priv), - ), *device.SignedPreKey.Signature, nil) + ), *device.SignedPreKey.Signature, nil), nil } - return nil + return nil, nil } -func (device *Device) LoadSignedPreKeys() []*record.SignedPreKey { +func (device *Device) LoadSignedPreKeys(ctx context.Context) ([]*record.SignedPreKey, error) { panic("not implemented") } -func (device *Device) StoreSignedPreKey(signedPreKeyID uint32, record *record.SignedPreKey) { +func (device *Device) StoreSignedPreKey(ctx context.Context, signedPreKeyID uint32, record *record.SignedPreKey) error { panic("not implemented") } -func (device *Device) ContainsSignedPreKey(signedPreKeyID uint32) bool { +func (device *Device) ContainsSignedPreKey(ctx context.Context, signedPreKeyID uint32) (bool, error) { panic("not implemented") } -func (device *Device) RemoveSignedPreKey(signedPreKeyID uint32) { +func (device *Device) RemoveSignedPreKey(ctx context.Context, signedPreKeyID uint32) error { panic("not implemented") } -func (device *Device) StoreSenderKey(senderKeyName *protocol.SenderKeyName, keyRecord *groupRecord.SenderKey) { - for i := 0; ; i++ { - err := device.SenderKeys.PutSenderKey(senderKeyName.GroupID(), senderKeyName.Sender().String(), keyRecord.Serialize()) - if err == nil || !device.handleDatabaseError(i, err, "store sender key from %s", senderKeyName.Sender().String()) { - return - } +func (device *Device) StoreSenderKey(ctx context.Context, senderKeyName *protocol.SenderKeyName, keyRecord *groupRecord.SenderKey) error { + groupID := senderKeyName.GroupID() + senderString := senderKeyName.Sender().String() + err := device.SenderKeys.PutSenderKey(ctx, groupID, senderString, keyRecord.Serialize()) + if err != nil { + return fmt.Errorf("failed to store sender key from %s for %s: %w", senderString, groupID, err) } + return nil } -func (device *Device) LoadSenderKey(senderKeyName *protocol.SenderKeyName) *groupRecord.SenderKey { - var rawKey []byte - for i := 0; ; i++ { - var err error - rawKey, err = device.SenderKeys.GetSenderKey(senderKeyName.GroupID(), senderKeyName.Sender().String()) - if err == nil || !device.handleDatabaseError(i, err, "load sender key from %s for %s", senderKeyName.Sender().String(), senderKeyName.GroupID()) { - break - } +func (device *Device) LoadSenderKey(ctx context.Context, senderKeyName *protocol.SenderKeyName) (*groupRecord.SenderKey, error) { + groupID := senderKeyName.GroupID() + senderString := senderKeyName.Sender().String() + rawKey, err := device.SenderKeys.GetSenderKey(ctx, groupID, senderString) + if err != nil { + return nil, fmt.Errorf("failed to load sender key from %s for %s: %w", senderString, groupID, err) } if rawKey == nil { - return groupRecord.NewSenderKey(SignalProtobufSerializer.SenderKeyRecord, SignalProtobufSerializer.SenderKeyState) + return groupRecord.NewSenderKey(SignalProtobufSerializer.SenderKeyRecord, SignalProtobufSerializer.SenderKeyState), nil } key, err := groupRecord.NewSenderKeyFromBytes(rawKey, SignalProtobufSerializer.SenderKeyRecord, SignalProtobufSerializer.SenderKeyState) if err != nil { - device.Log.Errorf("Failed to deserialize sender key from %s for %s: %v", senderKeyName.Sender().String(), senderKeyName.GroupID(), err) - return groupRecord.NewSenderKey(SignalProtobufSerializer.SenderKeyRecord, SignalProtobufSerializer.SenderKeyState) + return nil, fmt.Errorf("failed to deserialize sender key from %s for %s: %w", senderString, groupID, err) } - return key + return key, nil } diff --git a/store/sqlstore/container.go b/store/sqlstore/container.go index 009abe82..da448443 100644 --- a/store/sqlstore/container.go +++ b/store/sqlstore/container.go @@ -30,8 +30,6 @@ type Container struct { db *dbutil.Database log waLog.Logger LIDMap *CachedLIDMap - - DatabaseErrorHandler func(device *store.Device, action string, attemptIndex int, err error) (retry bool) } var _ store.DeviceContainer = (*Container)(nil) @@ -44,14 +42,14 @@ var _ store.DeviceContainer = (*Container)(nil) // // When using SQLite, it's strongly recommended to enable foreign keys by adding `?_foreign_keys=true`: // -// container, err := sqlstore.New("sqlite3", "file:yoursqlitefile.db?_foreign_keys=on", nil) -func New(dialect, address string, log waLog.Logger) (*Container, error) { +// container, err := sqlstore.New(context.Background(), "sqlite3", "file:yoursqlitefile.db?_foreign_keys=on", nil) +func New(ctx context.Context, dialect, address string, log waLog.Logger) (*Container, error) { db, err := sql.Open(dialect, address) if err != nil { return nil, fmt.Errorf("failed to open database: %w", err) } container := NewWithDB(db, dialect, log) - err = container.Upgrade() + err = container.Upgrade(ctx) if err != nil { return nil, fmt.Errorf("failed to upgrade database: %w", err) } @@ -99,10 +97,10 @@ func NewWithWrappedDB(wrapped *dbutil.Database, log waLog.Logger) *Container { } // Upgrade upgrades the database from the current to the latest version available. -func (c *Container) Upgrade() error { +func (c *Container) Upgrade(ctx context.Context) error { if c.db.Dialect == dbutil.SQLite { var foreignKeysEnabled bool - err := c.db.QueryRow(context.TODO(), "PRAGMA foreign_keys").Scan(&foreignKeysEnabled) + err := c.db.QueryRow(ctx, "PRAGMA foreign_keys").Scan(&foreignKeysEnabled) if err != nil { return fmt.Errorf("failed to check if foreign keys are enabled: %w", err) } else if !foreignKeysEnabled { @@ -110,7 +108,7 @@ func (c *Container) Upgrade() error { } } - return c.db.Upgrade(context.TODO()) + return c.db.Upgrade(ctx) } const getAllDevicesQuery = ` @@ -125,7 +123,6 @@ const getDeviceQuery = getAllDevicesQuery + " WHERE jid=$1" func (c *Container) scanDevice(row dbutil.Scannable) (*store.Device, error) { var device store.Device - device.DatabaseErrorHandler = c.DatabaseErrorHandler device.Log = c.log device.SignedPreKey = &keys.PreKey{} var noisePriv, identityPriv, preKeyPriv, preKeySig []byte @@ -156,8 +153,8 @@ func (c *Container) scanDevice(row dbutil.Scannable) (*store.Device, error) { } // GetAllDevices finds all the devices in the database. -func (c *Container) GetAllDevices() ([]*store.Device, error) { - res, err := c.db.Query(context.TODO(), getAllDevicesQuery) +func (c *Container) GetAllDevices(ctx context.Context) ([]*store.Device, error) { + res, err := c.db.Query(ctx, getAllDevicesQuery) if err != nil { return nil, fmt.Errorf("failed to query sessions: %w", err) } @@ -175,8 +172,8 @@ func (c *Container) GetAllDevices() ([]*store.Device, error) { // GetFirstDevice is a convenience method for getting the first device in the store. If there are // no devices, then a new device will be created. You should only use this if you don't want to // have multiple sessions simultaneously. -func (c *Container) GetFirstDevice() (*store.Device, error) { - devices, err := c.GetAllDevices() +func (c *Container) GetFirstDevice(ctx context.Context) (*store.Device, error) { + devices, err := c.GetAllDevices(ctx) if err != nil { return nil, err } @@ -192,8 +189,8 @@ func (c *Container) GetFirstDevice() (*store.Device, error) { // If the device is not found, nil is returned instead. // // Note that the parameter usually must be an AD-JID. -func (c *Container) GetDevice(jid types.JID) (*store.Device, error) { - sess, err := c.scanDevice(c.db.QueryRow(context.TODO(), getDeviceQuery, jid)) +func (c *Container) GetDevice(ctx context.Context, jid types.JID) (*store.Device, error) { + sess, err := c.scanDevice(c.db.QueryRow(ctx, getDeviceQuery, jid)) if errors.Is(err, sql.ErrNoRows) { return nil, nil } @@ -225,8 +222,6 @@ func (c *Container) NewDevice() *store.Device { Log: c.log, Container: c, - DatabaseErrorHandler: c.DatabaseErrorHandler, - NoiseKey: keys.NewKeyPair(), IdentityKey: keys.NewKeyPair(), RegistrationID: mathRand.Uint32(), @@ -249,11 +244,11 @@ func (c *Container) Close() error { // PutDevice stores the given device in this database. This should be called through Device.Save() // (which usually doesn't need to be called manually, as the library does that automatically when relevant). -func (c *Container) PutDevice(device *store.Device) error { +func (c *Container) PutDevice(ctx context.Context, device *store.Device) error { if device.ID == nil { return ErrDeviceIDMustBeSet } - _, err := c.db.Exec(context.TODO(), insertDeviceQuery, + _, err := c.db.Exec(ctx, insertDeviceQuery, device.ID, device.LID, device.RegistrationID, device.NoiseKey.Priv[:], device.IdentityKey.Priv[:], device.SignedPreKey.Priv[:], device.SignedPreKey.KeyID, device.SignedPreKey.Signature[:], device.AdvSecretKey, device.Account.Details, device.Account.AccountSignature, device.Account.AccountSignatureKey, device.Account.DeviceSignature, @@ -277,16 +272,17 @@ func (c *Container) initializeDevice(device *store.Device) { device.ChatSettings = innerStore device.MsgSecrets = innerStore device.PrivacyTokens = innerStore + device.EventBuffer = innerStore device.LIDs = c.LIDMap device.Container = c device.Initialized = true } // DeleteDevice deletes the given device from this database. This should be called through Device.Delete() -func (c *Container) DeleteDevice(store *store.Device) error { +func (c *Container) DeleteDevice(ctx context.Context, store *store.Device) error { if store.ID == nil { return ErrDeviceIDMustBeSet } - _, err := c.db.Exec(context.TODO(), deleteDeviceQuery, store.ID) + _, err := c.db.Exec(ctx, deleteDeviceQuery, store.ID) return err } diff --git a/store/sqlstore/lidmap.go b/store/sqlstore/lidmap.go index 6992805f..a337c15b 100644 --- a/store/sqlstore/lidmap.go +++ b/store/sqlstore/lidmap.go @@ -11,9 +11,11 @@ import ( "context" "database/sql" "errors" + "fmt" "slices" "sync" + "github.com/rs/zerolog" "go.mau.fi/util/dbutil" "github.com/techwiz37/waSocket/store" @@ -86,21 +88,24 @@ func (s *CachedLIDMap) getLIDMapping(ctx context.Context, source types.JID, targ } s.lidCacheLock.Lock() defer s.lidCacheLock.Unlock() - err := s.db.QueryRow(ctx, query, source.User).Scan(&targetServer) + err := s.db.QueryRow(ctx, query, source.User).Scan(&targetUser) if errors.Is(err, sql.ErrNoRows) { // continue with empty result } else if err != nil { return types.JID{}, err } - sourceToTarget[source.User] = targetServer - if targetServer != "" { - targetToSource[targetServer] = source.User - return types.JID{User: targetServer, Device: source.Device, Server: targetServer}, nil + sourceToTarget[source.User] = targetUser + if targetUser != "" { + targetToSource[targetUser] = source.User + return types.JID{User: targetUser, Device: source.Device, Server: targetServer}, nil } return types.JID{}, nil } func (s *CachedLIDMap) GetLIDForPN(ctx context.Context, pn types.JID) (types.JID, error) { + if pn.Server != types.DefaultUserServer { + return types.JID{}, fmt.Errorf("invalid GetLIDForPN call with non-PN JID %s", pn) + } return s.getLIDMapping( ctx, pn, types.HiddenUserServer, getLIDForPNQuery, s.pnToLIDCache, s.lidToPNCache, @@ -108,6 +113,9 @@ func (s *CachedLIDMap) GetLIDForPN(ctx context.Context, pn types.JID) (types.JID } func (s *CachedLIDMap) GetPNForLID(ctx context.Context, lid types.JID) (types.JID, error) { + if lid.Server != types.HiddenUserServer { + return types.JID{}, fmt.Errorf("invalid GetPNForLID call with non-LID JID %s", lid) + } return s.getLIDMapping( ctx, lid, types.DefaultUserServer, getPNForLIDQuery, s.lidToPNCache, s.pnToLIDCache, @@ -115,6 +123,9 @@ func (s *CachedLIDMap) GetPNForLID(ctx context.Context, lid types.JID) (types.JI } func (s *CachedLIDMap) PutLIDMapping(ctx context.Context, lid, pn types.JID) error { + if lid.Server != types.HiddenUserServer || pn.Server != types.DefaultUserServer { + return fmt.Errorf("invalid PutLIDMapping call %s/%s", lid, pn) + } s.lidCacheLock.Lock() defer s.lidCacheLock.Unlock() cachedLID, ok := s.pnToLIDCache[pn.User] @@ -130,6 +141,13 @@ func (s *CachedLIDMap) PutManyLIDMappings(ctx context.Context, mappings []store. s.lidCacheLock.Lock() defer s.lidCacheLock.Unlock() mappings = slices.DeleteFunc(mappings, func(mapping store.LIDMapping) bool { + if mapping.LID.Server != types.HiddenUserServer || mapping.PN.Server != types.DefaultUserServer { + zerolog.Ctx(ctx).Debug(). + Stringer("entry_lid", mapping.LID). + Stringer("entry_pn", mapping.PN). + Msg("Ignoring invalid entry in PutManyLIDMappings") + return true + } cachedLID, ok := s.pnToLIDCache[mapping.PN.User] if ok && cachedLID == mapping.LID.User { return true @@ -151,6 +169,9 @@ func (s *CachedLIDMap) PutManyLIDMappings(ctx context.Context, mappings []store. } func (s *CachedLIDMap) unlockedPutLIDMapping(ctx context.Context, lid, pn types.JID) error { + if lid.Server != types.HiddenUserServer || pn.Server != types.DefaultUserServer { + return fmt.Errorf("invalid PutLIDMapping call %s/%s", lid, pn) + } _, err := s.db.Exec(ctx, deleteExistingLIDMappingQuery, lid.User, pn.User) if err != nil { return err diff --git a/store/sqlstore/store.go b/store/sqlstore/store.go index c7b64e51..03e8f0d6 100644 --- a/store/sqlstore/store.go +++ b/store/sqlstore/store.go @@ -78,24 +78,24 @@ const ( getIdentityQuery = `SELECT identity FROM waSocket_identity_keys WHERE our_jid=$1 AND their_id=$2` ) -func (s *SQLStore) PutIdentity(address string, key [32]byte) error { - _, err := s.db.Exec(context.TODO(), putIdentityQuery, s.JID, address, key[:]) +func (s *SQLStore) PutIdentity(ctx context.Context, address string, key [32]byte) error { + _, err := s.db.Exec(ctx, putIdentityQuery, s.JID, address, key[:]) return err } -func (s *SQLStore) DeleteAllIdentities(phone string) error { - _, err := s.db.Exec(context.TODO(), deleteAllIdentitiesQuery, s.JID, phone+":%") +func (s *SQLStore) DeleteAllIdentities(ctx context.Context, phone string) error { + _, err := s.db.Exec(ctx, deleteAllIdentitiesQuery, s.JID, phone+":%") return err } -func (s *SQLStore) DeleteIdentity(address string) error { - _, err := s.db.Exec(context.TODO(), deleteAllIdentitiesQuery, s.JID, address) +func (s *SQLStore) DeleteIdentity(ctx context.Context, address string) error { + _, err := s.db.Exec(ctx, deleteAllIdentitiesQuery, s.JID, address) return err } -func (s *SQLStore) IsTrustedIdentity(address string, key [32]byte) (bool, error) { +func (s *SQLStore) IsTrustedIdentity(ctx context.Context, address string, key [32]byte) (bool, error) { var existingIdentity []byte - err := s.db.QueryRow(context.TODO(), getIdentityQuery, s.JID, address).Scan(&existingIdentity) + err := s.db.QueryRow(ctx, getIdentityQuery, s.JID, address).Scan(&existingIdentity) if errors.Is(err, sql.ErrNoRows) { // Trust if not known, it'll be saved automatically later return true, nil @@ -119,44 +119,52 @@ const ( migratePNToLIDSessionsQuery = ` INSERT INTO waSocket_sessions (our_jid, their_id, session) - SELECT $1, replace(their_id, $2, $3), session + SELECT our_jid, replace(their_id, $2, $3), session FROM waSocket_sessions WHERE our_jid=$1 AND their_id LIKE $2 || ':%' ON CONFLICT (our_jid, their_id) DO UPDATE SET session=excluded.session ` + deleteAllIdentityKeysQuery = `DELETE FROM waSocket_identity_keys WHERE our_jid=$1 AND their_id LIKE $2` + migratePNToLIDIdentityKeysQuery = ` + INSERT INTO waSocket_identity_keys (our_jid, their_id, identity) + SELECT our_jid, replace(their_id, $2, $3), identity + FROM waSocket_identity_keys + WHERE our_jid=$1 AND their_id LIKE $2 || ':%' + ON CONFLICT (our_jid, their_id) DO UPDATE SET identity=excluded.identity + ` deleteAllSenderKeysQuery = `DELETE FROM waSocket_sender_keys WHERE our_jid=$1 AND sender_id LIKE $2` migratePNToLIDSenderKeysQuery = ` INSERT INTO waSocket_sender_keys (our_jid, chat_id, sender_id, sender_key) - SELECT $1, chat_id, replace(sender_id, $2, $3), sender_key + SELECT our_jid, chat_id, replace(sender_id, $2, $3), sender_key FROM waSocket_sender_keys WHERE our_jid=$1 AND sender_id LIKE $2 || ':%' ON CONFLICT (our_jid, chat_id, sender_id) DO UPDATE SET sender_key=excluded.sender_key ` ) -func (s *SQLStore) GetSession(address string) (session []byte, err error) { - err = s.db.QueryRow(context.TODO(), getSessionQuery, s.JID, address).Scan(&session) +func (s *SQLStore) GetSession(ctx context.Context, address string) (session []byte, err error) { + err = s.db.QueryRow(ctx, getSessionQuery, s.JID, address).Scan(&session) if errors.Is(err, sql.ErrNoRows) { err = nil } return } -func (s *SQLStore) HasSession(address string) (has bool, err error) { - err = s.db.QueryRow(context.TODO(), hasSessionQuery, s.JID, address).Scan(&has) +func (s *SQLStore) HasSession(ctx context.Context, address string) (has bool, err error) { + err = s.db.QueryRow(ctx, hasSessionQuery, s.JID, address).Scan(&has) if errors.Is(err, sql.ErrNoRows) { err = nil } return } -func (s *SQLStore) PutSession(address string, session []byte) error { - _, err := s.db.Exec(context.TODO(), putSessionQuery, s.JID, address, session) +func (s *SQLStore) PutSession(ctx context.Context, address string, session []byte) error { + _, err := s.db.Exec(ctx, putSessionQuery, s.JID, address, session) return err } -func (s *SQLStore) DeleteAllSessions(phone string) error { - return s.deleteAllSessions(context.TODO(), phone) +func (s *SQLStore) DeleteAllSessions(ctx context.Context, phone string) error { + return s.deleteAllSessions(ctx, phone) } func (s *SQLStore) deleteAllSessions(ctx context.Context, phone string) error { @@ -169,8 +177,13 @@ func (s *SQLStore) deleteAllSenderKeys(ctx context.Context, phone string) error return err } -func (s *SQLStore) DeleteSession(address string) error { - _, err := s.db.Exec(context.TODO(), deleteSessionQuery, s.JID, address) +func (s *SQLStore) deleteAllIdentityKeys(ctx context.Context, phone string) error { + _, err := s.db.Exec(ctx, deleteAllIdentityKeysQuery, s.JID, phone+":%") + return err +} + +func (s *SQLStore) DeleteSession(ctx context.Context, address string) error { + _, err := s.db.Exec(ctx, deleteSessionQuery, s.JID, address) return err } @@ -179,7 +192,7 @@ func (s *SQLStore) MigratePNToLID(ctx context.Context, pn, lid types.JID) error if !s.migratedPNSessionsCache.Add(pnSignal) { return nil } - var sessionsUpdated, senderKeysUpdated int64 + var sessionsUpdated, identityKeysUpdated, senderKeysUpdated int64 lidSignal := lid.SignalAddressUser() err := s.db.DoTxn(ctx, nil, func(ctx context.Context) error { res, err := s.db.Exec(ctx, migratePNToLIDSessionsQuery, s.JID, pnSignal, lidSignal) @@ -194,6 +207,20 @@ func (s *SQLStore) MigratePNToLID(ctx context.Context, pn, lid types.JID) error if err != nil { return fmt.Errorf("failed to delete extra sessions: %w", err) } + + res, err = s.db.Exec(ctx, migratePNToLIDIdentityKeysQuery, s.JID, pnSignal, lidSignal) + if err != nil { + return fmt.Errorf("failed to migrate identity keys: %w", err) + } + identityKeysUpdated, err = res.RowsAffected() + if err != nil { + return fmt.Errorf("failed to get rows affected for identity keys: %w", err) + } + err = s.deleteAllIdentityKeys(ctx, pnSignal) + if err != nil { + return fmt.Errorf("failed to delete extra identity keys: %w", err) + } + res, err = s.db.Exec(ctx, migratePNToLIDSenderKeysQuery, s.JID, pnSignal, lidSignal) if err != nil { return fmt.Errorf("failed to migrate sender keys: %w", err) @@ -211,8 +238,8 @@ func (s *SQLStore) MigratePNToLID(ctx context.Context, pn, lid types.JID) error if err != nil { return err } - if sessionsUpdated > 0 || senderKeysUpdated > 0 { - s.log.Infof("Migrated %d sessions and %d sender keys from %s to %s", sessionsUpdated, senderKeysUpdated, pnSignal, lidSignal) + if sessionsUpdated > 0 || senderKeysUpdated > 0 || identityKeysUpdated > 0 { + s.log.Infof("Migrated %d sessions, %d identity keys and %d sender keys from %s to %s", sessionsUpdated, identityKeysUpdated, senderKeysUpdated, pnSignal, lidSignal) } else { s.log.Debugf("No sessions or sender keys found to migrate from %s to %s", pnSignal, lidSignal) } @@ -229,36 +256,36 @@ const ( getUploadedPreKeyCountQuery = `SELECT COUNT(*) FROM waSocket_pre_keys WHERE jid=$1 AND uploaded=true` ) -func (s *SQLStore) genOnePreKey(id uint32, markUploaded bool) (*keys.PreKey, error) { +func (s *SQLStore) genOnePreKey(ctx context.Context, id uint32, markUploaded bool) (*keys.PreKey, error) { key := keys.NewPreKey(id) - _, err := s.db.Exec(context.TODO(), insertPreKeyQuery, s.JID, key.KeyID, key.Priv[:], markUploaded) + _, err := s.db.Exec(ctx, insertPreKeyQuery, s.JID, key.KeyID, key.Priv[:], markUploaded) return key, err } -func (s *SQLStore) getNextPreKeyID() (uint32, error) { +func (s *SQLStore) getNextPreKeyID(ctx context.Context) (uint32, error) { var lastKeyID sql.NullInt32 - err := s.db.QueryRow(context.TODO(), getLastPreKeyIDQuery, s.JID).Scan(&lastKeyID) + err := s.db.QueryRow(ctx, getLastPreKeyIDQuery, s.JID).Scan(&lastKeyID) if err != nil { return 0, fmt.Errorf("failed to query next prekey ID: %w", err) } return uint32(lastKeyID.Int32) + 1, nil } -func (s *SQLStore) GenOnePreKey() (*keys.PreKey, error) { +func (s *SQLStore) GenOnePreKey(ctx context.Context) (*keys.PreKey, error) { s.preKeyLock.Lock() defer s.preKeyLock.Unlock() - nextKeyID, err := s.getNextPreKeyID() + nextKeyID, err := s.getNextPreKeyID(ctx) if err != nil { return nil, err } - return s.genOnePreKey(nextKeyID, true) + return s.genOnePreKey(ctx, nextKeyID, true) } -func (s *SQLStore) GetOrGenPreKeys(count uint32) ([]*keys.PreKey, error) { +func (s *SQLStore) GetOrGenPreKeys(ctx context.Context, count uint32) ([]*keys.PreKey, error) { s.preKeyLock.Lock() defer s.preKeyLock.Unlock() - res, err := s.db.Query(context.TODO(), getUnuploadedPreKeysQuery, s.JID, count) + res, err := s.db.Query(ctx, getUnuploadedPreKeysQuery, s.JID, count) if err != nil { return nil, fmt.Errorf("failed to query existing prekeys: %w", err) } @@ -277,12 +304,12 @@ func (s *SQLStore) GetOrGenPreKeys(count uint32) ([]*keys.PreKey, error) { if existingCount < uint32(len(newKeys)) { var nextKeyID uint32 - nextKeyID, err = s.getNextPreKeyID() + nextKeyID, err = s.getNextPreKeyID(ctx) if err != nil { return nil, err } for i := existingCount; i < count; i++ { - newKeys[i], err = s.genOnePreKey(nextKeyID, false) + newKeys[i], err = s.genOnePreKey(ctx, nextKeyID, false) if err != nil { return nil, fmt.Errorf("failed to generate prekey: %w", err) } @@ -310,22 +337,22 @@ func scanPreKey(row dbutil.Scannable) (*keys.PreKey, error) { }, nil } -func (s *SQLStore) GetPreKey(id uint32) (*keys.PreKey, error) { - return scanPreKey(s.db.QueryRow(context.TODO(), getPreKeyQuery, s.JID, id)) +func (s *SQLStore) GetPreKey(ctx context.Context, id uint32) (*keys.PreKey, error) { + return scanPreKey(s.db.QueryRow(ctx, getPreKeyQuery, s.JID, id)) } -func (s *SQLStore) RemovePreKey(id uint32) error { - _, err := s.db.Exec(context.TODO(), deletePreKeyQuery, s.JID, id) +func (s *SQLStore) RemovePreKey(ctx context.Context, id uint32) error { + _, err := s.db.Exec(ctx, deletePreKeyQuery, s.JID, id) return err } -func (s *SQLStore) MarkPreKeysAsUploaded(upToID uint32) error { - _, err := s.db.Exec(context.TODO(), markPreKeysAsUploadedQuery, s.JID, upToID) +func (s *SQLStore) MarkPreKeysAsUploaded(ctx context.Context, upToID uint32) error { + _, err := s.db.Exec(ctx, markPreKeysAsUploadedQuery, s.JID, upToID) return err } -func (s *SQLStore) UploadedPreKeyCount() (count int, err error) { - err = s.db.QueryRow(context.TODO(), getUploadedPreKeyCountQuery, s.JID).Scan(&count) +func (s *SQLStore) UploadedPreKeyCount(ctx context.Context) (count int, err error) { + err = s.db.QueryRow(ctx, getUploadedPreKeyCountQuery, s.JID).Scan(&count) return } @@ -337,13 +364,13 @@ const ( ` ) -func (s *SQLStore) PutSenderKey(group, user string, session []byte) error { - _, err := s.db.Exec(context.TODO(), putSenderKeyQuery, s.JID, group, user, session) +func (s *SQLStore) PutSenderKey(ctx context.Context, group, user string, session []byte) error { + _, err := s.db.Exec(ctx, putSenderKeyQuery, s.JID, group, user, session) return err } -func (s *SQLStore) GetSenderKey(group, user string) (key []byte, err error) { - err = s.db.QueryRow(context.TODO(), getSenderKeyQuery, s.JID, group, user).Scan(&key) +func (s *SQLStore) GetSenderKey(ctx context.Context, group, user string) (key []byte, err error) { + err = s.db.QueryRow(ctx, getSenderKeyQuery, s.JID, group, user).Scan(&key) if errors.Is(err, sql.ErrNoRows) { err = nil } @@ -361,23 +388,23 @@ const ( getLatestAppStateSyncKeyIDQuery = `SELECT key_id FROM waSocket_app_state_sync_keys WHERE jid=$1 ORDER BY timestamp DESC LIMIT 1` ) -func (s *SQLStore) PutAppStateSyncKey(id []byte, key store.AppStateSyncKey) error { - _, err := s.db.Exec(context.TODO(), putAppStateSyncKeyQuery, s.JID, id, key.Data, key.Timestamp, key.Fingerprint) +func (s *SQLStore) PutAppStateSyncKey(ctx context.Context, id []byte, key store.AppStateSyncKey) error { + _, err := s.db.Exec(ctx, putAppStateSyncKeyQuery, s.JID, id, key.Data, key.Timestamp, key.Fingerprint) return err } -func (s *SQLStore) GetAppStateSyncKey(id []byte) (*store.AppStateSyncKey, error) { +func (s *SQLStore) GetAppStateSyncKey(ctx context.Context, id []byte) (*store.AppStateSyncKey, error) { var key store.AppStateSyncKey - err := s.db.QueryRow(context.TODO(), getAppStateSyncKeyQuery, s.JID, id).Scan(&key.Data, &key.Timestamp, &key.Fingerprint) + err := s.db.QueryRow(ctx, getAppStateSyncKeyQuery, s.JID, id).Scan(&key.Data, &key.Timestamp, &key.Fingerprint) if errors.Is(err, sql.ErrNoRows) { return nil, nil } return &key, err } -func (s *SQLStore) GetLatestAppStateSyncKeyID() ([]byte, error) { +func (s *SQLStore) GetLatestAppStateSyncKeyID(ctx context.Context) ([]byte, error) { var keyID []byte - err := s.db.QueryRow(context.TODO(), getLatestAppStateSyncKeyIDQuery, s.JID).Scan(&keyID) + err := s.db.QueryRow(ctx, getLatestAppStateSyncKeyIDQuery, s.JID).Scan(&keyID) if errors.Is(err, sql.ErrNoRows) { return nil, nil } @@ -397,14 +424,14 @@ const ( getAppStateMutationMACQuery = `SELECT value_mac FROM waSocket_app_state_mutation_macs WHERE jid=$1 AND name=$2 AND index_mac=$3 ORDER BY version DESC LIMIT 1` ) -func (s *SQLStore) PutAppStateVersion(name string, version uint64, hash [128]byte) error { - _, err := s.db.Exec(context.TODO(), putAppStateVersionQuery, s.JID, name, version, hash[:]) +func (s *SQLStore) PutAppStateVersion(ctx context.Context, name string, version uint64, hash [128]byte) error { + _, err := s.db.Exec(ctx, putAppStateVersionQuery, s.JID, name, version, hash[:]) return err } -func (s *SQLStore) GetAppStateVersion(name string) (version uint64, hash [128]byte, err error) { +func (s *SQLStore) GetAppStateVersion(ctx context.Context, name string) (version uint64, hash [128]byte, err error) { var uncheckedHash []byte - err = s.db.QueryRow(context.TODO(), getAppStateVersionQuery, s.JID, name).Scan(&version, &uncheckedHash) + err = s.db.QueryRow(ctx, getAppStateVersionQuery, s.JID, name).Scan(&version, &uncheckedHash) if errors.Is(err, sql.ErrNoRows) { // version will be 0 and hash will be an empty array, which is the correct initial state err = nil @@ -420,8 +447,8 @@ func (s *SQLStore) GetAppStateVersion(name string) (version uint64, hash [128]by return } -func (s *SQLStore) DeleteAppStateVersion(name string) error { - _, err := s.db.Exec(context.TODO(), deleteAppStateVersionQuery, s.JID, name) +func (s *SQLStore) DeleteAppStateVersion(ctx context.Context, name string) error { + _, err := s.db.Exec(ctx, deleteAppStateVersionQuery, s.JID, name) return err } @@ -447,11 +474,11 @@ func (s *SQLStore) putAppStateMutationMACs(ctx context.Context, name string, ver const mutationBatchSize = 400 -func (s *SQLStore) PutAppStateMutationMACs(name string, version uint64, mutations []store.AppStateMutationMAC) error { +func (s *SQLStore) PutAppStateMutationMACs(ctx context.Context, name string, version uint64, mutations []store.AppStateMutationMAC) error { if len(mutations) == 0 { return nil } - return s.db.DoTxn(context.TODO(), nil, func(ctx context.Context) error { + return s.db.DoTxn(ctx, nil, func(ctx context.Context) error { for slice := range slices.Chunk(mutations, mutationBatchSize) { err := s.putAppStateMutationMACs(ctx, name, version, slice) if err != nil { @@ -462,12 +489,12 @@ func (s *SQLStore) PutAppStateMutationMACs(name string, version uint64, mutation }) } -func (s *SQLStore) DeleteAppStateMutationMACs(name string, indexMACs [][]byte) (err error) { +func (s *SQLStore) DeleteAppStateMutationMACs(ctx context.Context, name string, indexMACs [][]byte) (err error) { if len(indexMACs) == 0 { return } if s.db.Dialect == dbutil.Postgres && PostgresArrayWrapper != nil { - _, err = s.db.Exec(context.TODO(), deleteAppStateMutationMACsQueryPostgres, s.JID, name, PostgresArrayWrapper(indexMACs)) + _, err = s.db.Exec(ctx, deleteAppStateMutationMACsQueryPostgres, s.JID, name, PostgresArrayWrapper(indexMACs)) } else { args := make([]any, 2+len(indexMACs)) args[0] = s.JID @@ -477,13 +504,13 @@ func (s *SQLStore) DeleteAppStateMutationMACs(name string, indexMACs [][]byte) ( args[2+i] = item queryParts[i] = fmt.Sprintf("$%d", i+3) } - _, err = s.db.Exec(context.TODO(), deleteAppStateMutationMACsQueryGeneric+"("+strings.Join(queryParts, ",")+")", args...) + _, err = s.db.Exec(ctx, deleteAppStateMutationMACsQueryGeneric+"("+strings.Join(queryParts, ",")+")", args...) } return } -func (s *SQLStore) GetAppStateMutationMAC(name string, indexMAC []byte) (valueMAC []byte, err error) { - err = s.db.QueryRow(context.TODO(), getAppStateMutationMACQuery, s.JID, name, indexMAC).Scan(&valueMAC) +func (s *SQLStore) GetAppStateMutationMAC(ctx context.Context, name string, indexMAC []byte) (valueMAC []byte, err error) { + err = s.db.QueryRow(ctx, getAppStateMutationMACQuery, s.JID, name, indexMAC).Scan(&valueMAC) if errors.Is(err, sql.ErrNoRows) { err = nil } @@ -516,16 +543,16 @@ const ( ` ) -func (s *SQLStore) PutPushName(user types.JID, pushName string) (bool, string, error) { +func (s *SQLStore) PutPushName(ctx context.Context, user types.JID, pushName string) (bool, string, error) { s.contactCacheLock.Lock() defer s.contactCacheLock.Unlock() - cached, err := s.getContact(user) + cached, err := s.getContact(ctx, user) if err != nil { return false, "", err } if cached.PushName != pushName { - _, err = s.db.Exec(context.TODO(), putPushNameQuery, s.JID, user, pushName) + _, err = s.db.Exec(ctx, putPushNameQuery, s.JID, user, pushName) if err != nil { return false, "", err } @@ -537,16 +564,16 @@ func (s *SQLStore) PutPushName(user types.JID, pushName string) (bool, string, e return false, "", nil } -func (s *SQLStore) PutBusinessName(user types.JID, businessName string) (bool, string, error) { +func (s *SQLStore) PutBusinessName(ctx context.Context, user types.JID, businessName string) (bool, string, error) { s.contactCacheLock.Lock() defer s.contactCacheLock.Unlock() - cached, err := s.getContact(user) + cached, err := s.getContact(ctx, user) if err != nil { return false, "", err } if cached.BusinessName != businessName { - _, err = s.db.Exec(context.TODO(), putBusinessNameQuery, s.JID, user, businessName) + _, err = s.db.Exec(ctx, putBusinessNameQuery, s.JID, user, businessName) if err != nil { return false, "", err } @@ -558,16 +585,16 @@ func (s *SQLStore) PutBusinessName(user types.JID, businessName string) (bool, s return false, "", nil } -func (s *SQLStore) PutContactName(user types.JID, firstName, fullName string) error { +func (s *SQLStore) PutContactName(ctx context.Context, user types.JID, firstName, fullName string) error { s.contactCacheLock.Lock() defer s.contactCacheLock.Unlock() - cached, err := s.getContact(user) + cached, err := s.getContact(ctx, user) if err != nil { return err } if cached.FirstName != firstName || cached.FullName != fullName { - _, err = s.db.Exec(context.TODO(), putContactNameQuery, s.JID, user, firstName, fullName) + _, err = s.db.Exec(ctx, putContactNameQuery, s.JID, user, firstName, fullName) if err != nil { return err } @@ -611,11 +638,11 @@ func (s *SQLStore) putContactNamesBatch(ctx context.Context, contacts []store.Co return err } -func (s *SQLStore) PutAllContactNames(contacts []store.ContactEntry) error { +func (s *SQLStore) PutAllContactNames(ctx context.Context, contacts []store.ContactEntry) error { if len(contacts) == 0 { return nil } - err := s.db.DoTxn(context.TODO(), nil, func(ctx context.Context) error { + err := s.db.DoTxn(ctx, nil, func(ctx context.Context) error { for slice := range slices.Chunk(contacts, contactBatchSize) { err := s.putContactNamesBatch(ctx, slice) if err != nil { @@ -634,14 +661,14 @@ func (s *SQLStore) PutAllContactNames(contacts []store.ContactEntry) error { return nil } -func (s *SQLStore) getContact(user types.JID) (*types.ContactInfo, error) { +func (s *SQLStore) getContact(ctx context.Context, user types.JID) (*types.ContactInfo, error) { cached, ok := s.contactCache[user] if ok { return cached, nil } var first, full, push, business sql.NullString - err := s.db.QueryRow(context.TODO(), getContactQuery, s.JID, user).Scan(&first, &full, &push, &business) + err := s.db.QueryRow(ctx, getContactQuery, s.JID, user).Scan(&first, &full, &push, &business) if err != nil && !errors.Is(err, sql.ErrNoRows) { return nil, err } @@ -656,9 +683,9 @@ func (s *SQLStore) getContact(user types.JID) (*types.ContactInfo, error) { return info, nil } -func (s *SQLStore) GetContact(user types.JID) (types.ContactInfo, error) { +func (s *SQLStore) GetContact(ctx context.Context, user types.JID) (types.ContactInfo, error) { s.contactCacheLock.Lock() - info, err := s.getContact(user) + info, err := s.getContact(ctx, user) s.contactCacheLock.Unlock() if err != nil { return types.ContactInfo{}, err @@ -666,10 +693,10 @@ func (s *SQLStore) GetContact(user types.JID) (types.ContactInfo, error) { return *info, nil } -func (s *SQLStore) GetAllContacts() (map[types.JID]types.ContactInfo, error) { +func (s *SQLStore) GetAllContacts(ctx context.Context) (map[types.JID]types.ContactInfo, error) { s.contactCacheLock.Lock() defer s.contactCacheLock.Unlock() - rows, err := s.db.Query(context.TODO(), getAllContactsQuery, s.JID) + rows, err := s.db.Query(ctx, getAllContactsQuery, s.JID) if err != nil { return nil, err } @@ -704,28 +731,28 @@ const ( ` ) -func (s *SQLStore) PutMutedUntil(chat types.JID, mutedUntil time.Time) error { +func (s *SQLStore) PutMutedUntil(ctx context.Context, chat types.JID, mutedUntil time.Time) error { var val int64 if !mutedUntil.IsZero() { val = mutedUntil.Unix() } - _, err := s.db.Exec(context.TODO(), fmt.Sprintf(putChatSettingQuery, "muted_until"), s.JID, chat, val) + _, err := s.db.Exec(ctx, fmt.Sprintf(putChatSettingQuery, "muted_until"), s.JID, chat, val) return err } -func (s *SQLStore) PutPinned(chat types.JID, pinned bool) error { - _, err := s.db.Exec(context.TODO(), fmt.Sprintf(putChatSettingQuery, "pinned"), s.JID, chat, pinned) +func (s *SQLStore) PutPinned(ctx context.Context, chat types.JID, pinned bool) error { + _, err := s.db.Exec(ctx, fmt.Sprintf(putChatSettingQuery, "pinned"), s.JID, chat, pinned) return err } -func (s *SQLStore) PutArchived(chat types.JID, archived bool) error { - _, err := s.db.Exec(context.TODO(), fmt.Sprintf(putChatSettingQuery, "archived"), s.JID, chat, archived) +func (s *SQLStore) PutArchived(ctx context.Context, chat types.JID, archived bool) error { + _, err := s.db.Exec(ctx, fmt.Sprintf(putChatSettingQuery, "archived"), s.JID, chat, archived) return err } -func (s *SQLStore) GetChatSettings(chat types.JID) (settings types.LocalChatSettings, err error) { +func (s *SQLStore) GetChatSettings(ctx context.Context, chat types.JID) (settings types.LocalChatSettings, err error) { var mutedUntil int64 - err = s.db.QueryRow(context.TODO(), getChatSettingsQuery, s.JID, chat).Scan(&mutedUntil, &settings.Pinned, &settings.Archived) + err = s.db.QueryRow(ctx, getChatSettingsQuery, s.JID, chat).Scan(&mutedUntil, &settings.Pinned, &settings.Archived) if errors.Is(err, sql.ErrNoRows) { err = nil } else if err != nil { @@ -750,11 +777,11 @@ const ( ` ) -func (s *SQLStore) PutMessageSecrets(inserts []store.MessageSecretInsert) (err error) { +func (s *SQLStore) PutMessageSecrets(ctx context.Context, inserts []store.MessageSecretInsert) (err error) { if len(inserts) == 0 { return nil } - return s.db.DoTxn(context.TODO(), nil, func(ctx context.Context) error { + return s.db.DoTxn(ctx, nil, func(ctx context.Context) error { for _, insert := range inserts { _, err = s.db.Exec(ctx, putMsgSecret, s.JID, insert.Chat.ToNonAD(), insert.Sender.ToNonAD(), insert.ID, insert.Secret) if err != nil { @@ -765,13 +792,13 @@ func (s *SQLStore) PutMessageSecrets(inserts []store.MessageSecretInsert) (err e }) } -func (s *SQLStore) PutMessageSecret(chat, sender types.JID, id types.MessageID, secret []byte) (err error) { - _, err = s.db.Exec(context.TODO(), putMsgSecret, s.JID, chat.ToNonAD(), sender.ToNonAD(), id, secret) +func (s *SQLStore) PutMessageSecret(ctx context.Context, chat, sender types.JID, id types.MessageID, secret []byte) (err error) { + _, err = s.db.Exec(ctx, putMsgSecret, s.JID, chat.ToNonAD(), sender.ToNonAD(), id, secret) return } -func (s *SQLStore) GetMessageSecret(chat, sender types.JID, id types.MessageID) (secret []byte, err error) { - err = s.db.QueryRow(context.TODO(), getMsgSecret, s.JID, chat.ToNonAD(), sender.ToNonAD(), id).Scan(&secret) +func (s *SQLStore) GetMessageSecret(ctx context.Context, chat, sender types.JID, id types.MessageID) (secret []byte, err error) { + err = s.db.QueryRow(ctx, getMsgSecret, s.JID, chat.ToNonAD(), sender.ToNonAD(), id).Scan(&secret) if errors.Is(err, sql.ErrNoRows) { err = nil } @@ -787,7 +814,7 @@ const ( getPrivacyToken = `SELECT token, timestamp FROM waSocket_privacy_tokens WHERE our_jid=$1 AND their_jid=$2` ) -func (s *SQLStore) PutPrivacyTokens(tokens ...store.PrivacyToken) error { +func (s *SQLStore) PutPrivacyTokens(ctx context.Context, tokens ...store.PrivacyToken) error { args := make([]any, 1+len(tokens)*3) placeholders := make([]string, len(tokens)) args[0] = s.JID @@ -798,15 +825,15 @@ func (s *SQLStore) PutPrivacyTokens(tokens ...store.PrivacyToken) error { placeholders[i] = fmt.Sprintf("($1, $%d, $%d, $%d)", i*3+2, i*3+3, i*3+4) } query := strings.ReplaceAll(putPrivacyTokens, "($1, $2, $3, $4)", strings.Join(placeholders, ",")) - _, err := s.db.Exec(context.TODO(), query, args...) + _, err := s.db.Exec(ctx, query, args...) return err } -func (s *SQLStore) GetPrivacyToken(user types.JID) (*store.PrivacyToken, error) { +func (s *SQLStore) GetPrivacyToken(ctx context.Context, user types.JID) (*store.PrivacyToken, error) { var token store.PrivacyToken token.User = user.ToNonAD() var ts int64 - err := s.db.QueryRow(context.TODO(), getPrivacyToken, s.JID, token.User).Scan(&token.Token, &ts) + err := s.db.QueryRow(ctx, getPrivacyToken, s.JID, token.User).Scan(&token.Token, &ts) if errors.Is(err, sql.ErrNoRows) { return nil, nil } else if err != nil { @@ -816,3 +843,55 @@ func (s *SQLStore) GetPrivacyToken(user types.JID) (*store.PrivacyToken, error) return &token, nil } } + +const ( + getBufferedEventQuery = ` + SELECT plaintext, server_timestamp, insert_timestamp FROM waSocket_event_buffer WHERE our_jid = $1 AND ciphertext_hash = $2 + ` + putBufferedEventQuery = ` + INSERT INTO waSocket_event_buffer (our_jid, ciphertext_hash, plaintext, server_timestamp, insert_timestamp) + VALUES ($1, $2, $3, $4, $5) + ` + clearBufferedEventPlaintextQuery = ` + UPDATE waSocket_event_buffer SET plaintext = NULL WHERE our_jid = $1 AND ciphertext_hash = $2 + ` + deleteOldBufferedHashesQuery = ` + DELETE FROM waSocket_event_buffer WHERE insert_timestamp < $1 + ` +) + +func (s *SQLStore) GetBufferedEvent(ctx context.Context, ciphertextHash [32]byte) (*store.BufferedEvent, error) { + var insertTimeMS, serverTimeSeconds int64 + var buf store.BufferedEvent + err := s.db.QueryRow(ctx, getBufferedEventQuery, s.JID, ciphertextHash[:]).Scan(&buf.Plaintext, &serverTimeSeconds, &insertTimeMS) + if errors.Is(err, sql.ErrNoRows) { + return nil, nil + } else if err != nil { + return nil, err + } + buf.ServerTime = time.Unix(serverTimeSeconds, 0) + buf.InsertTime = time.UnixMilli(insertTimeMS) + return &buf, nil +} + +func (s *SQLStore) PutBufferedEvent(ctx context.Context, ciphertextHash [32]byte, plaintext []byte, serverTimestamp time.Time) error { + _, err := s.db.Exec(ctx, putBufferedEventQuery, s.JID, ciphertextHash[:], plaintext, serverTimestamp.Unix(), time.Now().UnixMilli()) + return err +} + +func (s *SQLStore) DoDecryptionTxn(ctx context.Context, fn func(context.Context) error) error { + ctx = context.WithValue(ctx, dbutil.ContextKeyDoTxnCallerSkip, 2) + return s.db.DoTxn(ctx, nil, fn) +} + +func (s *SQLStore) ClearBufferedEventPlaintext(ctx context.Context, ciphertextHash [32]byte) error { + _, err := s.db.Exec(ctx, clearBufferedEventPlaintextQuery, s.JID, ciphertextHash[:]) + return err +} + +func (s *SQLStore) DeleteOldBufferedHashes(ctx context.Context) error { + // The WhatsApp servers only buffer events for 14 days, + // so we can safely delete anything older than that. + _, err := s.db.Exec(ctx, deleteOldBufferedHashesQuery, time.Now().Add(-14*24*time.Hour).UnixMilli()) + return err +} diff --git a/store/sqlstore/upgrades/00-latest-schema.sql b/store/sqlstore/upgrades/00-latest-schema.sql index 3a0f5f3b..0239fd3f 100644 --- a/store/sqlstore/upgrades/00-latest-schema.sql +++ b/store/sqlstore/upgrades/00-latest-schema.sql @@ -1,4 +1,4 @@ --- v0 -> v8 (compatible with v8+): Latest schema +-- v0 -> v9 (compatible with v8+): Latest schema CREATE TABLE waSocket_device ( jid TEXT PRIMARY KEY, lid TEXT, @@ -141,3 +141,13 @@ CREATE TABLE waSocket_lid_map ( lid TEXT PRIMARY KEY, pn TEXT UNIQUE NOT NULL ); + +CREATE TABLE waSocket_event_buffer ( + our_jid TEXT NOT NULL, + ciphertext_hash bytea NOT NULL CHECK ( length(ciphertext_hash) = 32 ), + plaintext bytea, + server_timestamp BIGINT NOT NULL, + insert_timestamp BIGINT NOT NULL, + PRIMARY KEY (our_jid, ciphertext_hash), + FOREIGN KEY (our_jid) REFERENCES waSocket_device(jid) ON DELETE CASCADE ON UPDATE CASCADE +); diff --git a/store/sqlstore/upgrades/09-decryption-buffer.sql b/store/sqlstore/upgrades/09-decryption-buffer.sql new file mode 100644 index 00000000..d9ea5f03 --- /dev/null +++ b/store/sqlstore/upgrades/09-decryption-buffer.sql @@ -0,0 +1,10 @@ +-- v9 (compatible with v8+): Add decrypted event buffer +CREATE TABLE waSocket_event_buffer ( + our_jid TEXT NOT NULL, + ciphertext_hash bytea NOT NULL CHECK ( length(ciphertext_hash) = 32 ), + plaintext bytea, + server_timestamp BIGINT NOT NULL, + insert_timestamp BIGINT NOT NULL, + PRIMARY KEY (our_jid, ciphertext_hash), + FOREIGN KEY (our_jid) REFERENCES waSocket_device(jid) ON DELETE CASCADE ON UPDATE CASCADE +); diff --git a/store/store.go b/store/store.go index a130e619..cc38c61d 100644 --- a/store/store.go +++ b/store/store.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Tulir Asokan +// Copyright (c) 2025 Tulir Asokan // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -9,7 +9,6 @@ package store import ( "context" - "fmt" "time" "github.com/google/uuid" @@ -21,33 +20,33 @@ import ( ) type IdentityStore interface { - PutIdentity(address string, key [32]byte) error - DeleteAllIdentities(phone string) error - DeleteIdentity(address string) error - IsTrustedIdentity(address string, key [32]byte) (bool, error) + PutIdentity(ctx context.Context, address string, key [32]byte) error + DeleteAllIdentities(ctx context.Context, phone string) error + DeleteIdentity(ctx context.Context, address string) error + IsTrustedIdentity(ctx context.Context, address string, key [32]byte) (bool, error) } type SessionStore interface { - GetSession(address string) ([]byte, error) - HasSession(address string) (bool, error) - PutSession(address string, session []byte) error - DeleteAllSessions(phone string) error - DeleteSession(address string) error + GetSession(ctx context.Context, address string) ([]byte, error) + HasSession(ctx context.Context, address string) (bool, error) + PutSession(ctx context.Context, address string, session []byte) error + DeleteAllSessions(ctx context.Context, phone string) error + DeleteSession(ctx context.Context, address string) error MigratePNToLID(ctx context.Context, pn, lid types.JID) error } type PreKeyStore interface { - GetOrGenPreKeys(count uint32) ([]*keys.PreKey, error) - GenOnePreKey() (*keys.PreKey, error) - GetPreKey(id uint32) (*keys.PreKey, error) - RemovePreKey(id uint32) error - MarkPreKeysAsUploaded(upToID uint32) error - UploadedPreKeyCount() (int, error) + GetOrGenPreKeys(ctx context.Context, count uint32) ([]*keys.PreKey, error) + GenOnePreKey(ctx context.Context) (*keys.PreKey, error) + GetPreKey(ctx context.Context, id uint32) (*keys.PreKey, error) + RemovePreKey(ctx context.Context, id uint32) error + MarkPreKeysAsUploaded(ctx context.Context, upToID uint32) error + UploadedPreKeyCount(ctx context.Context) (int, error) } type SenderKeyStore interface { - PutSenderKey(group, user string, session []byte) error - GetSenderKey(group, user string) ([]byte, error) + PutSenderKey(ctx context.Context, group, user string, session []byte) error + GetSenderKey(ctx context.Context, group, user string) ([]byte, error) } type AppStateSyncKey struct { @@ -57,9 +56,9 @@ type AppStateSyncKey struct { } type AppStateSyncKeyStore interface { - PutAppStateSyncKey(id []byte, key AppStateSyncKey) error - GetAppStateSyncKey(id []byte) (*AppStateSyncKey, error) - GetLatestAppStateSyncKeyID() ([]byte, error) + PutAppStateSyncKey(ctx context.Context, id []byte, key AppStateSyncKey) error + GetAppStateSyncKey(ctx context.Context, id []byte) (*AppStateSyncKey, error) + GetLatestAppStateSyncKeyID(ctx context.Context) ([]byte, error) } type AppStateMutationMAC struct { @@ -68,13 +67,13 @@ type AppStateMutationMAC struct { } type AppStateStore interface { - PutAppStateVersion(name string, version uint64, hash [128]byte) error - GetAppStateVersion(name string) (uint64, [128]byte, error) - DeleteAppStateVersion(name string) error + PutAppStateVersion(ctx context.Context, name string, version uint64, hash [128]byte) error + GetAppStateVersion(ctx context.Context, name string) (uint64, [128]byte, error) + DeleteAppStateVersion(ctx context.Context, name string) error - PutAppStateMutationMACs(name string, version uint64, mutations []AppStateMutationMAC) error - DeleteAppStateMutationMACs(name string, indexMACs [][]byte) error - GetAppStateMutationMAC(name string, indexMAC []byte) (valueMAC []byte, err error) + PutAppStateMutationMACs(ctx context.Context, name string, version uint64, mutations []AppStateMutationMAC) error + DeleteAppStateMutationMACs(ctx context.Context, name string, indexMACs [][]byte) error + GetAppStateMutationMAC(ctx context.Context, name string, indexMAC []byte) (valueMAC []byte, err error) } type ContactEntry struct { @@ -84,24 +83,24 @@ type ContactEntry struct { } type ContactStore interface { - PutPushName(user types.JID, pushName string) (bool, string, error) - PutBusinessName(user types.JID, businessName string) (bool, string, error) - PutContactName(user types.JID, fullName, firstName string) error - PutAllContactNames(contacts []ContactEntry) error - GetContact(user types.JID) (types.ContactInfo, error) - GetAllContacts() (map[types.JID]types.ContactInfo, error) + PutPushName(ctx context.Context, user types.JID, pushName string) (bool, string, error) + PutBusinessName(ctx context.Context, user types.JID, businessName string) (bool, string, error) + PutContactName(ctx context.Context, user types.JID, fullName, firstName string) error + PutAllContactNames(ctx context.Context, contacts []ContactEntry) error + GetContact(ctx context.Context, user types.JID) (types.ContactInfo, error) + GetAllContacts(ctx context.Context) (map[types.JID]types.ContactInfo, error) } type ChatSettingsStore interface { - PutMutedUntil(chat types.JID, mutedUntil time.Time) error - PutPinned(chat types.JID, pinned bool) error - PutArchived(chat types.JID, archived bool) error - GetChatSettings(chat types.JID) (types.LocalChatSettings, error) + PutMutedUntil(ctx context.Context, chat types.JID, mutedUntil time.Time) error + PutPinned(ctx context.Context, chat types.JID, pinned bool) error + PutArchived(ctx context.Context, chat types.JID, archived bool) error + GetChatSettings(ctx context.Context, chat types.JID) (types.LocalChatSettings, error) } type DeviceContainer interface { - PutDevice(store *Device) error - DeleteDevice(store *Device) error + PutDevice(ctx context.Context, store *Device) error + DeleteDevice(ctx context.Context, store *Device) error } type MessageSecretInsert struct { @@ -112,9 +111,9 @@ type MessageSecretInsert struct { } type MsgSecretStore interface { - PutMessageSecrets([]MessageSecretInsert) error - PutMessageSecret(chat, sender types.JID, id types.MessageID, secret []byte) error - GetMessageSecret(chat, sender types.JID, id types.MessageID) ([]byte, error) + PutMessageSecrets(ctx context.Context, inserts []MessageSecretInsert) error + PutMessageSecret(ctx context.Context, chat, sender types.JID, id types.MessageID, secret []byte) error + GetMessageSecret(ctx context.Context, chat, sender types.JID, id types.MessageID) ([]byte, error) } type PrivacyToken struct { @@ -124,8 +123,22 @@ type PrivacyToken struct { } type PrivacyTokenStore interface { - PutPrivacyTokens(tokens ...PrivacyToken) error - GetPrivacyToken(user types.JID) (*PrivacyToken, error) + PutPrivacyTokens(ctx context.Context, tokens ...PrivacyToken) error + GetPrivacyToken(ctx context.Context, user types.JID) (*PrivacyToken, error) +} + +type BufferedEvent struct { + Plaintext []byte + InsertTime time.Time + ServerTime time.Time +} + +type EventBuffer interface { + GetBufferedEvent(ctx context.Context, ciphertextHash [32]byte) (*BufferedEvent, error) + PutBufferedEvent(ctx context.Context, ciphertextHash [32]byte, plaintext []byte, serverTimestamp time.Time) error + DoDecryptionTxn(ctx context.Context, fn func(context.Context) error) error + ClearBufferedEventPlaintext(ctx context.Context, ciphertextHash [32]byte) error + DeleteOldBufferedHashes(ctx context.Context) error } type LIDMapping struct { @@ -151,6 +164,7 @@ type AllSessionSpecificStores interface { ChatSettingsStore MsgSecretStore PrivacyTokenStore + EventBuffer } type AllGlobalStores interface { @@ -191,18 +205,9 @@ type Device struct { ChatSettings ChatSettingsStore MsgSecrets MsgSecretStore PrivacyTokens PrivacyTokenStore + EventBuffer EventBuffer LIDs LIDStore Container DeviceContainer - - DatabaseErrorHandler func(device *Device, action string, attemptIndex int, err error) (retry bool) -} - -func (device *Device) handleDatabaseError(attemptIndex int, err error, action string, args ...interface{}) bool { - if device.DatabaseErrorHandler != nil { - return device.DatabaseErrorHandler(device, fmt.Sprintf(action, args...), attemptIndex, err) - } - device.Log.Errorf("Failed to %s: %v", fmt.Sprintf(action, args...), err) - return false } func (device *Device) GetJID() types.JID { @@ -223,12 +228,12 @@ func (device *Device) GetLID() types.JID { return device.LID } -func (device *Device) Save() error { - return device.Container.PutDevice(device) +func (device *Device) Save(ctx context.Context) error { + return device.Container.PutDevice(ctx, device) } -func (device *Device) Delete() error { - err := device.Container.DeleteDevice(device) +func (device *Device) Delete(ctx context.Context) error { + err := device.Container.DeleteDevice(ctx, device) if err != nil { return err } diff --git a/update.go b/update.go index f0a77a57..e9f92449 100644 --- a/update.go +++ b/update.go @@ -7,6 +7,7 @@ package waSocket import ( + "context" "fmt" "io" "net/http" @@ -28,8 +29,8 @@ var clientVersionRegex = regexp.MustCompile(`"client_revision":(\d+),`) // return err // } // store.SetWAVersion(*latestVer) -func GetLatestVersion(httpClient *http.Client) (*store.WAVersionContainer, error) { - req, err := http.NewRequest(http.MethodGet, socket.Origin, nil) +func GetLatestVersion(ctx context.Context, httpClient *http.Client) (*store.WAVersionContainer, error) { + req, err := http.NewRequestWithContext(ctx, http.MethodGet, socket.Origin, nil) if err != nil { return nil, fmt.Errorf("failed to prepare request: %w", err) } diff --git a/upload.go b/upload.go index 9b83a79f..9c5fc0b6 100644 --- a/upload.go +++ b/upload.go @@ -189,7 +189,7 @@ func (cli *Client) UploadNewsletterReader(ctx context.Context, data io.ReadSeeke } func (cli *Client) rawUpload(ctx context.Context, dataToUpload io.Reader, uploadSize uint64, fileHash []byte, appInfo MediaType, newsletter bool, resp *UploadResponse) error { - mediaConn, err := cli.refreshMediaConn(false) + mediaConn, err := cli.refreshMediaConn(ctx, false) if err != nil { return fmt.Errorf("failed to refresh media connections: %w", err) } diff --git a/user.go b/user.go index d64d073e..5aab75a4 100644 --- a/user.go +++ b/user.go @@ -224,7 +224,7 @@ func (cli *Client) GetUserInfo(jids []types.JID) (map[types.JID]types.UserInfo, info.PictureID, _ = child.GetChildByTag("picture").Attrs["id"].(string) info.Devices = parseDeviceList(jid, child.GetChildByTag("devices")) if verifiedName != nil { - cli.updateBusinessName(jid, nil, verifiedName.Details.GetVerifiedName()) + cli.updateBusinessName(context.TODO(), jid, nil, verifiedName.Details.GetVerifiedName()) } respData[jid] = info } @@ -420,6 +420,8 @@ func (cli *Client) GetBusinessProfile(jid types.JID) (*types.BusinessProfile, er // GetUserDevices gets the list of devices that the given user has. The input should be a list of // regular JIDs, and the output will be a list of AD JIDs. The local device will not be included in // the output even if the user's JID is included in the input. All other devices will be included. +// +// Deprecated: use GetUserDevicesContext instead. func (cli *Client) GetUserDevices(jids []types.JID) ([]types.JID, error) { return cli.GetUserDevicesContext(context.Background(), jids) } @@ -570,7 +572,7 @@ func (cli *Client) GetProfilePictureInfo(jid types.JID, params *GetProfilePictur return &info, nil } -func (cli *Client) handleHistoricalPushNames(names []*waHistorySync.Pushname) { +func (cli *Client) handleHistoricalPushNames(ctx context.Context, names []*waHistorySync.Pushname) { if cli.Store.Contacts == nil { return } @@ -580,22 +582,22 @@ func (cli *Client) handleHistoricalPushNames(names []*waHistorySync.Pushname) { continue } var changed bool - if jid, err := types.ParseJID(user.GetId()); err != nil { - cli.Log.Warnf("Failed to parse user ID '%s' in push name history sync: %v", user.GetId(), err) - } else if changed, _, err = cli.Store.Contacts.PutPushName(jid, user.GetPushname()); err != nil { - cli.Log.Warnf("Failed to store push name of %s from history sync: %v", err) + if jid, err := types.ParseJID(user.GetID()); err != nil { + cli.Log.Warnf("Failed to parse user ID '%s' in push name history sync: %v", user.GetID(), err) + } else if changed, _, err = cli.Store.Contacts.PutPushName(ctx, jid, user.GetPushname()); err != nil { + cli.Log.Warnf("Failed to store push name of %s from history sync: %v", jid, err) } else if changed { cli.Log.Debugf("Got push name %s for %s in history sync", user.GetPushname(), jid) } } } -func (cli *Client) updatePushName(user types.JID, messageInfo *types.MessageInfo, name string) { +func (cli *Client) updatePushName(ctx context.Context, user types.JID, messageInfo *types.MessageInfo, name string) { if cli.Store.Contacts == nil { return } user = user.ToNonAD() - changed, previousName, err := cli.Store.Contacts.PutPushName(user, name) + changed, previousName, err := cli.Store.Contacts.PutPushName(ctx, user, name) if err != nil { cli.Log.Errorf("Failed to save push name of %s in device store: %v", user, err) } else if changed { @@ -609,11 +611,11 @@ func (cli *Client) updatePushName(user types.JID, messageInfo *types.MessageInfo } } -func (cli *Client) updateBusinessName(user types.JID, messageInfo *types.MessageInfo, name string) { +func (cli *Client) updateBusinessName(ctx context.Context, user types.JID, messageInfo *types.MessageInfo, name string) { if cli.Store.Contacts == nil { return } - changed, previousName, err := cli.Store.Contacts.PutBusinessName(user, name) + changed, previousName, err := cli.Store.Contacts.PutBusinessName(ctx, user, name) if err != nil { cli.Log.Errorf("Failed to save business name of %s in device store: %v", user, err) } else if changed {