From f8225ac1427dc30126ae3f23837ef721bb02e05e Mon Sep 17 00:00:00 2001 From: giuseppecastaldo Date: Fri, 7 Jul 2023 15:56:21 +0200 Subject: [PATCH] Release v1.3.1 --- .DS_Store | Bin 0 -> 6148 bytes whatsapp_addon/.DS_Store | Bin 6148 -> 6148 bytes whatsapp_addon/Baileys/CHANGELOG.md | 9 + whatsapp_addon/Baileys/Example/example.ts | 124 +- whatsapp_addon/Baileys/README.md | 100 +- whatsapp_addon/Baileys/WAProto/WAProto.proto | 400 +- whatsapp_addon/Baileys/WAProto/index.d.ts | 5963 +++++-- whatsapp_addon/Baileys/WAProto/index.js | 13816 +++++++++++++--- .../Baileys/WASignalGroup/group_cipher.js | 2 +- .../WASignalGroup/sender_key_message.js | 2 +- whatsapp_addon/Baileys/jest.config.js | 15 +- whatsapp_addon/Baileys/package-lock.json | 13003 +++++++++++++++ whatsapp_addon/Baileys/package.json | 95 +- whatsapp_addon/Baileys/proto-extract/index.js | 22 +- .../Baileys/src/Defaults/baileys-version.json | 4 +- whatsapp_addon/Baileys/src/Defaults/index.ts | 36 +- .../Baileys/src/Defaults/phonenumber-mcc.json | 223 + .../Baileys/src/Signal/libsignal.ts | 141 + whatsapp_addon/Baileys/src/Socket/business.ts | 8 +- whatsapp_addon/Baileys/src/Socket/chats.ts | 251 +- whatsapp_addon/Baileys/src/Socket/groups.ts | 89 +- whatsapp_addon/Baileys/src/Socket/index.ts | 2 +- .../Baileys/src/Socket/messages-recv.ts | 82 +- .../Baileys/src/Socket/messages-send.ts | 132 +- .../Baileys/src/Socket/mobile-socket.ts | 46 + .../Baileys/src/Socket/registration.ts | 250 + whatsapp_addon/Baileys/src/Socket/socket.ts | 156 +- .../Baileys/src/Store/make-in-memory-store.ts | 157 +- .../Baileys/src/Store/object-repository.ts | 32 + .../Baileys/src/Tests/test.key-store.ts | 92 + .../Baileys/src/Tests/test.libsignal.ts | 186 + whatsapp_addon/Baileys/src/Tests/utils.ts | 32 +- whatsapp_addon/Baileys/src/Types/Auth.ts | 23 +- whatsapp_addon/Baileys/src/Types/Chat.ts | 26 +- whatsapp_addon/Baileys/src/Types/Events.ts | 6 +- .../Baileys/src/Types/GroupMetadata.ts | 6 +- whatsapp_addon/Baileys/src/Types/Label.ts | 36 + .../Baileys/src/Types/LabelAssociation.ts | 35 + whatsapp_addon/Baileys/src/Types/Message.ts | 32 +- whatsapp_addon/Baileys/src/Types/Product.ts | 5 +- whatsapp_addon/Baileys/src/Types/Signal.ts | 68 + whatsapp_addon/Baileys/src/Types/Socket.ts | 51 +- whatsapp_addon/Baileys/src/Types/index.ts | 3 +- .../Baileys/src/Utils/auth-utils.ts | 93 +- whatsapp_addon/Baileys/src/Utils/business.ts | 4 +- .../Baileys/src/Utils/chat-utils.ts | 125 +- whatsapp_addon/Baileys/src/Utils/crypto.ts | 4 + .../Baileys/src/Utils/decode-wa-message.ts | 61 +- whatsapp_addon/Baileys/src/Utils/generics.ts | 28 +- whatsapp_addon/Baileys/src/Utils/index.ts | 35 +- .../Baileys/src/Utils/link-preview.ts | 14 +- .../Baileys/src/Utils/messages-media.ts | 100 +- whatsapp_addon/Baileys/src/Utils/messages.ts | 175 +- .../Baileys/src/Utils/noise-handler.ts | 34 +- .../Baileys/src/Utils/process-message.ts | 137 +- whatsapp_addon/Baileys/src/Utils/signal.ts | 164 +- .../src/Utils/use-single-file-auth-state.ts | 85 - .../Baileys/src/Utils/validate-connection.ts | 75 +- .../Baileys/src/WABinary/generic-utils.ts | 31 + whatsapp_addon/Baileys/typedoc.json | 3 +- whatsapp_addon/Baileys/yarn.lock | 3007 +++- whatsapp_addon/config.yaml | 2 +- whatsapp_addon/package.json | 2 +- 63 files changed, 35234 insertions(+), 4706 deletions(-) create mode 100644 .DS_Store create mode 100644 whatsapp_addon/Baileys/CHANGELOG.md create mode 100644 whatsapp_addon/Baileys/package-lock.json create mode 100644 whatsapp_addon/Baileys/src/Defaults/phonenumber-mcc.json create mode 100644 whatsapp_addon/Baileys/src/Signal/libsignal.ts create mode 100644 whatsapp_addon/Baileys/src/Socket/mobile-socket.ts create mode 100644 whatsapp_addon/Baileys/src/Socket/registration.ts create mode 100644 whatsapp_addon/Baileys/src/Store/object-repository.ts create mode 100644 whatsapp_addon/Baileys/src/Tests/test.key-store.ts create mode 100644 whatsapp_addon/Baileys/src/Tests/test.libsignal.ts create mode 100644 whatsapp_addon/Baileys/src/Types/Label.ts create mode 100644 whatsapp_addon/Baileys/src/Types/LabelAssociation.ts create mode 100644 whatsapp_addon/Baileys/src/Types/Signal.ts delete mode 100644 whatsapp_addon/Baileys/src/Utils/use-single-file-auth-state.ts diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..45f2dfa88e17067728569ff3ff434d6b6ebb7df2 GIT binary patch literal 6148 zcmeHK&1%~~5T141S|+sk&_a$2xf<%kZ6Wj`l=KCvkRFoaN|9+qRjsk)h+qslw=dKu z>GSlP-F0Z<_Slew88Q3q?#%4ZC$Xy`A{8yNJ)!{-1yIILAH`pU?W`Np@jYFjvSUo? zimJ4!W@)kEEgkof0e*KqiYTF+3i{*ynG}|v>8!}BdNlf_I$PZ*PkTWx*bY9$7p95p zq+V1}GC$?ku`xxut|#e9K5Zt07l)>-lf0bHZ9tw);d1sdFEi6bW>IF9jg6fl=m-7D zU}w49-#ZxU@%YVZsFw%(qoIC1e!E)rgO|In-hG&SExwiJyQ5O!tF!XV;~IXTa%)#v zbzY=cCA-`*UB>gWFy$9mc);h>&;whmo5DW7~OKeO@~in6m~d~MxHg$|_@284l|3~agPfbakJ|IYt!21!d8 z5C$F<1FCxzA4S-bzgssp$9JuUeulEJU+eHX1QmM~!CJzu~2NHo}wrt0|NsP3otMgFyt_#G8Cs2C+AEoRF?%wZ~z4=7!nzB zktLJz^K&*UGCyP4Y`|Q}w3(fQp95$dP~B)qu~2NHo}wr-0|Nsi1A_nqLn=chLvd1haY0hf#*NDv>p?Q?3{DJ* z44Di$$g=rKK$#s$1v#0;B?bo97@3$^SlQS)*g3d4VuLgC%Y#c2OG=BK5{sfiypa6- zoFo`KF)1uFwLD%x#5q5&Br!8DwFs;sGbI(MBqlsFFD1X+DZex?r8v4CNrr=ygEL-0 zqPp7H&|F8s*uuD0N1@u%$UsNI#MrF1mXkwNS>HM+K07BjFTV@uI3QpIdI}79p)`!@ z1~SmRl~SCXlLT}oNC{j@2;$|k;G(>o{JeCa6ywH?Z&)_7bMSKjgKy);@640=MRY|# Vnm~3nKxnYFn?po4Fi&h?0RRm>S$F^d diff --git a/whatsapp_addon/Baileys/CHANGELOG.md b/whatsapp_addon/Baileys/CHANGELOG.md new file mode 100644 index 0000000..37559d1 --- /dev/null +++ b/whatsapp_addon/Baileys/CHANGELOG.md @@ -0,0 +1,9 @@ +## 6.2.1 (2023-06-07) + + +### Bug Fixes + +* updated proto/version to v2.2323.4 ([#96](https://github.com/WhiskeySockets/Baileys/issues/96)) ([63575e9](https://github.com/WhiskeySockets/Baileys/commit/63575e9b85520bd7621bd16ac0508cdd523a3a43)) + + + diff --git a/whatsapp_addon/Baileys/Example/example.ts b/whatsapp_addon/Baileys/Example/example.ts index 9cb0ee3..10bd833 100644 --- a/whatsapp_addon/Baileys/Example/example.ts +++ b/whatsapp_addon/Baileys/Example/example.ts @@ -1,16 +1,20 @@ import { Boom } from '@hapi/boom' -import makeWASocket, { AnyMessageContent, delay, DisconnectReason, fetchLatestBaileysVersion, isJidBroadcast, makeCacheableSignalKeyStore, makeInMemoryStore, MessageRetryMap, useMultiFileAuthState } from '../src' +import parsePhoneNumber from 'libphonenumber-js' +import NodeCache from 'node-cache' +import readline from 'readline' +import makeWASocket, { AnyMessageContent, delay, DisconnectReason, fetchLatestBaileysVersion, getAggregateVotesInPollMessage, makeCacheableSignalKeyStore, makeInMemoryStore, PHONENUMBER_MCC, proto, useMultiFileAuthState, WAMessageContent, WAMessageKey } from '../src' import MAIN_LOGGER from '../src/Utils/logger' -const logger = MAIN_LOGGER.child({ }) +const logger = MAIN_LOGGER.child({}) logger.level = 'trace' const useStore = !process.argv.includes('--no-store') const doReplies = !process.argv.includes('--no-reply') +const useMobile = process.argv.includes('--mobile') // external map to store retry counts of messages when decryption/encryption fails // keep this out of the socket itself, so as to prevent a message decryption/encryption loop across socket restarts -const msgRetryCounterMap: MessageRetryMap = { } +const msgRetryCounterCache = new NodeCache() // the store maintains the data of the WA connection in memory // can be written out to a file & read from it @@ -32,31 +36,83 @@ const startSock = async() => { version, logger, printQRInTerminal: true, + mobile: useMobile, auth: { creds: state.creds, /** caching makes the store faster to send/recv messages */ keys: makeCacheableSignalKeyStore(state.keys, logger), }, - msgRetryCounterMap, + msgRetryCounterCache, generateHighQualityLinkPreview: true, // ignore all broadcast messages -- to receive the same // comment the line below out - shouldIgnoreJid: jid => isJidBroadcast(jid), - // implement to handle retries - getMessage: async key => { - if(store) { - const msg = await store.loadMessage(key.remoteJid!, key.id!) - return msg?.message || undefined + // shouldIgnoreJid: jid => isJidBroadcast(jid), + // implement to handle retries & poll updates + getMessage, + }) + + store?.bind(sock.ev) + + // If mobile was chosen, ask for the code + if(useMobile && !sock.authState.creds.registered) { + const question = (text: string) => new Promise((resolve) => rl.question(text, resolve)) + + const rl = readline.createInterface({ input: process.stdin, output: process.stdout }) + const { registration } = sock.authState.creds || { registration: {} } + + if(!registration.phoneNumber) { + registration.phoneNumber = await question('Please enter your mobile phone number:\n') + } + + const phoneNumber = parsePhoneNumber(registration!.phoneNumber) + if(!phoneNumber?.isValid()) { + throw new Error('Invalid phone number: ' + registration!.phoneNumber) + } + + registration.phoneNumber = phoneNumber.format('E.164') + registration.phoneNumberCountryCode = phoneNumber.countryCallingCode + registration.phoneNumberNationalNumber = phoneNumber.nationalNumber + const mcc = PHONENUMBER_MCC[phoneNumber.countryCallingCode] + if(!mcc) { + throw new Error('Could not find MCC for phone number: ' + registration!.phoneNumber + '\nPlease specify the MCC manually.') + } + + registration.phoneNumberMobileCountryCode = mcc + + async function enterCode() { + try { + const code = await question('Please enter the one time code:\n') + const response = await sock.register(code.replace(/["']/g, '').trim().toLowerCase()) + console.log('Successfully registered your phone number.') + console.log(response) + rl.close() + } catch(error) { + console.error('Failed to register your phone number. Please try again.\n', error) + await askForOTP() + } + } + + async function askForOTP() { + let code = await question('How would you like to receive the one time code for registration? "sms" or "voice"\n') + code = code.replace(/["']/g, '').trim().toLowerCase() + + if(code !== 'sms' && code !== 'voice') { + return await askForOTP() } - // only if store is present - return { - conversation: 'hello' + registration.method = code + + try { + await sock.requestRegistrationCode(registration) + await enterCode() + } catch(error) { + console.error('Failed to request registration code. Please try again.\n', error) + await askForOTP() } } - }) - store?.bind(sock.ev) + askForOTP() + } const sendMessageWTyping = async(msg: AnyMessageContent, jid: string) => { await sock.presenceSubscribe(jid) @@ -97,6 +153,15 @@ const startSock = async() => { await saveCreds() } + if(events['labels.association']) { + console.log(events['labels.association']) + } + + + if(events['labels.edit']) { + console.log(events['labels.edit']) + } + if(events.call) { console.log('recv call event', events.call) } @@ -125,7 +190,24 @@ const startSock = async() => { // messages updated like status delivered, message deleted etc. if(events['messages.update']) { - console.log(events['messages.update']) + console.log( + JSON.stringify(events['messages.update'], undefined, 2) + ) + + for(const { key, update } of events['messages.update']) { + if(update.pollUpdates) { + const pollCreation = await getMessage(key) + if(pollCreation) { + console.log( + 'got poll update, aggregation: ', + getAggregateVotesInPollMessage({ + message: pollCreation, + pollUpdates: update.pollUpdates, + }) + ) + } + } + } } if(events['message-receipt.update']) { @@ -164,6 +246,16 @@ const startSock = async() => { ) return sock + + async function getMessage(key: WAMessageKey): Promise { + if(store) { + const msg = await store.loadMessage(key.remoteJid!, key.id!) + return msg?.message || undefined + } + + // only if store is present + return proto.Message.fromObject({}) + } } startSock() \ No newline at end of file diff --git a/whatsapp_addon/Baileys/README.md b/whatsapp_addon/Baileys/README.md index 49939e2..c9aaa34 100644 --- a/whatsapp_addon/Baileys/README.md +++ b/whatsapp_addon/Baileys/README.md @@ -1,21 +1,19 @@ # Baileys - Typescript/Javascript WhatsApp Web API - - Baileys does not require Selenium or any other browser to be interface with WhatsApp Web, it does so directly using a **WebSocket**. Not running Selenium or Chromimum saves you like **half a gig** of ram :/ - - Baileys supports interacting with the multi-device & web versions of WhatsApp. - Thank you to [@pokearaujo](https://github.com/pokearaujo/multidevice) for writing his observations on the workings of WhatsApp Multi-Device. Also, thank you to [@Sigalor](https://github.com/sigalor/whatsapp-web-reveng) for writing his observations on the workings of WhatsApp Web and thanks to [@Rhymen](https://github.com/Rhymen/go-whatsapp/) for the __go__ implementation. - - Baileys is type-safe, extensible and simple to use. If you require more functionality than provided, it's super easy to write an extension. More on this [here](#WritingCustomFunctionality). +Baileys does not require Selenium or any other browser to be interface with WhatsApp Web, it does so directly using a **WebSocket**. +Not running Selenium or Chromimum saves you like **half a gig** of ram :/ +Baileys supports interacting with the multi-device & web versions of WhatsApp. +Thank you to [@pokearaujo](https://github.com/pokearaujo/multidevice) for writing his observations on the workings of WhatsApp Multi-Device. Also, thank you to [@Sigalor](https://github.com/sigalor/whatsapp-web-reveng) for writing his observations on the workings of WhatsApp Web and thanks to [@Rhymen](https://github.com/Rhymen/go-whatsapp/) for the __go__ implementation. - If you're interested in building a WhatsApp bot, you may wanna check out [WhatsAppInfoBot](https://github.com/adiwajshing/WhatsappInfoBot) and an actual bot built with it, [Messcat](https://github.com/ashokatechmin/Messcat). +## Please Read - **Read the docs [here](https://adiwajshing.github.io/Baileys)** +The original repository had to be removed by the original author - we now continue development in this repository here. +This is the only official repository and is maintained by the community. **Join the Discord [here](https://discord.gg/WeJM5FP9GG)** - + ## Example -Do check out & run [example.ts](https://github.com/adiwajshing/Baileys/blob/master/Example/example.ts) to see an example usage of the library. +Do check out & run [example.ts](Example/example.ts) to see an example usage of the library. The script covers most common use cases. To run the example script, download or clone the repo and then type the following in a terminal: 1. ``` cd path/to/Baileys ``` @@ -26,27 +24,29 @@ To run the example script, download or clone the repo and then type the followin Use the stable version: ``` -yarn add @adiwajshing/baileys +yarn add @whiskeysockets/baileys ``` Use the edge version (no guarantee of stability, but latest fixes + features) ``` -yarn add github:adiwajshing/baileys +yarn add github:WhiskeySockets/Baileys ``` Then import your code using: ``` ts -import makeWASocket from '@adiwajshing/baileys' +import makeWASocket from '@whiskeysockets/baileys' ``` ## Unit Tests TODO -## Connecting +## Connecting multi device (recommended) + +WhatsApp provides a multi-device API that allows Baileys to be authenticated as a second WhatsApp client by scanning a QR code with WhatsApp on your phone. ``` ts -import makeWASocket, { DisconnectReason } from '@adiwajshing/baileys' +import makeWASocket, { DisconnectReason } from '@whiskeysockets/baileys' import { Boom } from '@hapi/boom' async function connectToWhatsApp () { @@ -84,6 +84,12 @@ If the connection is successful, you will see a QR code printed on your terminal **Note:** the code to support the legacy version of WA Web (pre multi-device) has been removed in v5. Only the standard multi-device connection is now supported. This is done as WA seems to have completely dropped support for the legacy version. +## Connecting native mobile api + +Baileys also supports the native mobile API, which allows users to authenticate as a standalone WhatsApp client using their phone number. + +Run the [example](Example/example.ts) file with ``--mobile`` cli flag to use the native mobile API. + ## Configuring the Connection You can configure the connection by passing a `SocketConfig` object. @@ -176,7 +182,7 @@ You obviously don't want to keep scanning the QR code every time you want to con So, you can load the credentials to log back in: ``` ts -import makeWASocket, { BufferJSON, useMultiFileAuthState } from '@adiwajshing/baileys' +import makeWASocket, { BufferJSON, useMultiFileAuthState } from '@whiskeysockets/baileys' import * as fs from 'fs' // utility function to help save the auth state in a single folder @@ -241,6 +247,8 @@ export type BaileysEventMap = { 'chats.update': Partial[] /** delete chats with given ID */ 'chats.delete': string[] + 'labels.association': LabelAssociation + 'labels.edit': Label /** presence of contact in a chat updated */ 'presence.update': { id: string, presences: { [participant: string]: PresenceData } } @@ -289,7 +297,7 @@ Baileys does not come with a defacto storage for chats, contacts, or messages. H It can be used as follows: ``` ts -import makeWASocket, { makeInMemoryStore } from '@adiwajshing/baileys' +import makeWASocket, { makeInMemoryStore } from '@whiskeysockets/baileys' // the store maintains the data of the WA connection in memory // can be written out to a file & read from it const store = makeInMemoryStore({ }) @@ -328,7 +336,7 @@ The store also provides some simple functions such as `loadMessages` that utiliz ### Non-Media Messages ``` ts -import { MessageType, MessageOptions, Mimetype } from '@adiwajshing/baileys' +import { MessageType, MessageOptions, Mimetype } from '@whiskeysockets/baileys' const id = 'abcd@s.whatsapp.net' // the WhatsApp ID // send a simple text! @@ -446,7 +454,7 @@ Sending media (video, stickers, images) is easier & more efficient than ever. - When specifying a media url, Baileys never loads the entire buffer into memory; it even encrypts the media as a readable stream. ``` ts -import { MessageType, MessageOptions, Mimetype } from '@adiwajshing/baileys' +import { MessageType, MessageOptions, Mimetype } from '@whiskeysockets/baileys' // Sending gifs await sock.sendMessage( id, @@ -528,7 +536,7 @@ const sendMsg = await sock.sendMessage(id, templateMessage) Do not enter this field if you want to automatically generate a thumb */ mimetype: Mimetype.pdf, /* (for media messages) specify the type of media (optional for all media types except documents), - import {Mimetype} from '@adiwajshing/baileys' + import {Mimetype} from '@whiskeysockets/baileys' */ fileName: 'somefile.pdf', // (for media messages) file name for the media /* will send audio messages as voice notes, if set to true */ @@ -587,7 +595,7 @@ The presence expires after about 10 seconds. If you want to save the media you received ``` ts import { writeFile } from 'fs/promises' -import { downloadMediaMessage } from '@adiwajshing/baileys' +import { downloadMediaMessage } from '@whiskeysockets/baileys' sock.ev.on('messages.upsert', async ({ messages }) => { const m = messages[0] @@ -742,6 +750,11 @@ await sock.sendMessage( const jid = '111234567890-1594482450@g.us' // can be your own too await sock.updateProfilePicture(jid, { url: './new-profile-picture.jpeg' }) ``` +- To remove your display picture or a group's + ``` ts + const jid = '111234567890-1594482450@g.us' // can be your own too + await sock.removeProfilePicture(jid) + ``` - To get someone's presence (if they're typing or online) ``` ts // the presence update is fetched and called here @@ -833,7 +846,48 @@ Of course, replace ``` xyz ``` with an actual ID. console.log("joined to: " + response) ``` Of course, replace ``` xxx ``` with invitation code. - + +## Privacy +- To get the privacy settings + ``` ts + const privacySettings = await sock.fetchPrivacySettings(true) + console.log("privacy settings: " + privacySettings) + ``` +- To update the LastSeen privacy + ``` ts + const value = 'all' // 'contacts' | 'contact_blacklist' | 'none' + await sock.updateLastSeenPrivacy(value) + ``` +- To update the Online privacy + ``` ts + const value = 'all' // 'match_last_seen' + await sock.updateOnlinePrivacy(value) + ``` +- To update the Profile Picture privacy + ``` ts + const value = 'all' // 'contacts' | 'contact_blacklist' | 'none' + await sock.updateProfilePicturePrivacy(value) + ``` +- To update the Status privacy + ``` ts + const value = 'all' // 'contacts' | 'contact_blacklist' | 'none' + await sock.updateStatusPrivacy(value) + ``` +- To update the Read Receipts privacy + ``` ts + const value = 'all' // 'none' + await sock.updateReadReceiptsPrivacy(value) + ``` +- To update the Groups Add privacy + ``` ts + const value = 'all' // 'contacts' | 'contact_blacklist' | 'none' + await sock.updateGroupsAddPrivacy(value) + ``` +- To update the Default Disappearing Mode + ``` ts + const duration = 86400 // 604800 | 7776000 | 0 + await sock.updateDefaultDisappearingMode(duration) + ``` ## Broadcast Lists & Stories **Note:** messages currently cannot be sent to broadcast lists from the MD version. diff --git a/whatsapp_addon/Baileys/WAProto/WAProto.proto b/whatsapp_addon/Baileys/WAProto/WAProto.proto index 081bd6d..d463d63 100644 --- a/whatsapp_addon/Baileys/WAProto/WAProto.proto +++ b/whatsapp_addon/Baileys/WAProto/WAProto.proto @@ -5,13 +5,20 @@ message ADVDeviceIdentity { optional uint32 rawId = 1; optional uint64 timestamp = 2; optional uint32 keyIndex = 3; + optional ADVEncryptionType accountType = 4; + optional ADVEncryptionType deviceType = 5; } +enum ADVEncryptionType { + E2EE = 0; + HOSTED = 1; +} message ADVKeyIndexList { optional uint32 rawId = 1; optional uint64 timestamp = 2; optional uint32 currentIndex = 3; repeated uint32 validIndexes = 4 [packed=true]; + optional ADVEncryptionType accountType = 5; } message ADVSignedDeviceIdentity { @@ -110,16 +117,43 @@ message CertChain { } -message Chain { - optional bytes senderRatchetKey = 1; - optional bytes senderRatchetKeyPrivate = 2; - optional ChainKey chainKey = 3; - repeated MessageKey messageKeys = 4; -} - -message ChainKey { - optional uint32 index = 1; - optional bytes key = 2; +message ChatRowOpaqueData { + optional DraftMessage draftMessage = 1; + message DraftMessage { + optional string text = 1; + optional string omittedUrl = 2; + optional CtwaContextLinkData ctwaContextLinkData = 3; + optional CtwaContextData ctwaContext = 4; + optional int64 timestamp = 5; + message CtwaContextData { + optional string conversionSource = 1; + optional bytes conversionData = 2; + optional string sourceUrl = 3; + optional string sourceId = 4; + optional string sourceType = 5; + optional string title = 6; + optional string description = 7; + optional string thumbnail = 8; + optional string thumbnailUrl = 9; + optional ContextInfoExternalAdReplyInfoMediaType mediaType = 10; + optional string mediaUrl = 11; + optional bool isSuspiciousLink = 12; + enum ContextInfoExternalAdReplyInfoMediaType { + NONE = 0; + IMAGE = 1; + VIDEO = 2; + } + } + + message CtwaContextLinkData { + optional string context = 1; + optional string sourceUrl = 2; + optional string icebreaker = 3; + optional string phone = 4; + } + + } + } message ClientPayload { @@ -147,14 +181,9 @@ message ClientPayload { optional bytes fbDeviceId = 32; optional bool pull = 33; optional bytes paddingBytes = 34; - optional BizMarketSegment bizMarketSegment = 35; optional int32 yearClass = 36; optional int32 memClass = 37; - enum BizMarketSegment { - DEFAULT = 0; - DEVX = 1; - INBOX = 2; - } + optional InteropData interopData = 38; enum ConnectReason { PUSH = 0; USER_ACTIVATED = 1; @@ -162,6 +191,7 @@ message ClientPayload { ERROR_RECONNECT = 3; NETWORK_SWITCH = 4; PING_RECONNECT = 5; + UNKNOWN = 6; } enum ConnectType { CELLULAR_UNKNOWN = 0; @@ -208,9 +238,16 @@ message ClientPayload { SERVICE_EXTENSION = 1; INTENTS_EXTENSION = 2; } + message InteropData { + optional uint64 accountId = 1; + optional uint32 integratorId = 2; + optional bytes token = 3; + } + enum Product { WHATSAPP = 0; MESSENGER = 1; + INTEROP = 2; } message UserAgent { optional Platform platform = 1; @@ -226,6 +263,7 @@ message ClientPayload { optional string localeLanguageIso6391 = 11; optional string localeCountryIso31661Alpha2 = 12; optional string deviceBoard = 13; + optional string deviceExpId = 14; message AppVersion { optional uint32 primary = 1; optional uint32 secondary = 2; @@ -267,6 +305,8 @@ message ClientPayload { WEAROS = 29; ARDEVICE = 30; VRDEVICE = 31; + BLUE_WEB = 32; + IPAD = 33; } enum ReleaseChannel { RELEASE = 0; @@ -332,6 +372,9 @@ message ContextInfo { optional string parentGroupJid = 35; optional string trustBannerType = 37; optional uint32 trustBannerAction = 38; + optional bool isSampled = 39; + repeated GroupMention groupMentions = 40; + optional UTMInfo utm = 41; message AdReplyInfo { optional string advertiserName = 1; optional MediaType mediaType = 2; @@ -358,6 +401,7 @@ message ContextInfo { optional bool renderLargerThumbnail = 11; optional bool showAdAttribution = 12; optional string ctwaClid = 13; + optional string ref = 14; enum MediaType { NONE = 0; IMAGE = 1; @@ -365,6 +409,11 @@ message ContextInfo { } } + message UTMInfo { + optional string utmSource = 1; + optional string utmCampaign = 2; + } + } message Conversation { @@ -403,8 +452,8 @@ message Conversation { optional string description = 33; optional bool support = 34; optional bool isParentGroup = 35; - optional bool isDefaultSubgroup = 36; optional string parentGroupId = 37; + optional bool isDefaultSubgroup = 36; optional string displayName = 38; optional string pnJid = 39; optional bool shareOwnPn = 40; @@ -413,9 +462,15 @@ message Conversation { enum EndOfHistoryTransferType { COMPLETE_BUT_MORE_MESSAGES_REMAIN_ON_PRIMARY = 0; COMPLETE_AND_NO_MORE_MESSAGE_REMAIN_ON_PRIMARY = 1; + COMPLETE_ON_DEMAND_SYNC_BUT_MORE_MSG_REMAIN_ON_PRIMARY = 2; } } +message DeviceConsistencyCodeMessage { + optional uint32 generation = 1; + optional bytes signature = 2; +} + message DeviceListMetadata { optional bytes senderKeyHash = 1; optional uint64 senderTimestamp = 2; @@ -443,6 +498,8 @@ message DeviceProps { optional uint32 fullSyncDaysLimit = 1; optional uint32 fullSyncSizeMbLimit = 2; optional uint32 storageQuotaMb = 3; + optional bool inlineInitialPayloadInE2EeMsg = 4; + optional uint32 recentSyncDaysLimit = 5; } enum PlatformType { @@ -460,6 +517,13 @@ message DeviceProps { ALOHA = 11; CATALINA = 12; TCL_TV = 13; + IOS_PHONE = 14; + IOS_CATALYST = 15; + ANDROID_PHONE = 16; + ANDROID_AMBIGUOUS = 17; + WEAR_OS = 18; + AR_WRIST = 19; + AR_DEVICE = 20; } } @@ -503,6 +567,18 @@ message GlobalSettings { optional int32 disappearingModeDuration = 9; optional int64 disappearingModeTimestamp = 10; optional AvatarUserSettings avatarUserSettings = 11; + optional int32 fontSize = 12; + optional bool securityNotifications = 13; + optional bool autoUnarchiveChats = 14; + optional int32 videoQualityMode = 15; + optional int32 photoQualityMode = 16; + optional NotificationSettings individualNotificationSettings = 17; + optional NotificationSettings groupNotificationSettings = 18; +} + +message GroupMention { + optional string groupJid = 1; + optional string groupSubject = 2; } message GroupParticipant { @@ -557,6 +633,7 @@ message HistorySync { RECENT = 3; PUSH_NAME = 4; NON_BLOCKING_DATA = 5; + ON_DEMAND = 6; } } @@ -615,6 +692,14 @@ enum KeepType { KEEP_FOR_ALL = 1; UNDO_KEEP_FOR_ALL = 2; } +message KeyExchangeMessage { + optional uint32 id = 1; + optional bytes baseKey = 2; + optional bytes ratchetKey = 3; + optional bytes identityKey = 4; + optional bytes baseKeySignature = 5; +} + message KeyId { optional bytes id = 1; } @@ -702,6 +787,13 @@ message Message { optional EncReactionMessage encReactionMessage = 56; optional FutureProofMessage editedMessage = 58; optional FutureProofMessage viewOnceMessageV2Extension = 59; + optional PollCreationMessage pollCreationMessageV2 = 60; + optional ScheduledCallCreationMessage scheduledCallCreationMessage = 61; + optional FutureProofMessage groupMentionedMessage = 62; + optional PinInChatMessage pinInChatMessage = 63; + optional PollCreationMessage pollCreationMessageV3 = 64; + optional ScheduledCallEditMessage scheduledCallEditMessage = 65; + optional VideoMessage ptvMessage = 66; message AppStateFatalExceptionNotification { repeated string collectionNames = 1; optional int64 timestamp = 2; @@ -751,6 +843,7 @@ message Message { optional bytes streamingSidecar = 18; optional bytes waveform = 19; optional fixed32 backgroundArgb = 20; + optional bool viewOnce = 21; } message ButtonsMessage { @@ -910,6 +1003,11 @@ message Message { BRYNDAN_WRITE = 3; BEBASNEUE_REGULAR = 4; OSWALD_HEAVY = 5; + SYSTEM_BOLD = 6; + MORNINGBREEZE_REGULAR = 7; + CALISTOGA_REGULAR = 8; + EXO2_EXTRABOLD = 9; + COURIERPRIME_BOLD = 10; } enum InviteLinkGroupType { DEFAULT = 0; @@ -1012,6 +1110,8 @@ message Message { optional string originalMessageId = 8; optional uint32 progress = 9; optional int64 oldestMsgInChunkTimestampSec = 10; + optional bytes initialHistBootstrapInlinePayload = 11; + optional string peerDataRequestSessionId = 12; enum HistorySyncType { INITIAL_BOOTSTRAP = 0; INITIAL_STATUS_V3 = 1; @@ -1019,6 +1119,7 @@ message Message { RECENT = 3; PUSH_NAME = 4; NON_BLOCKING_DATA = 5; + ON_DEMAND = 6; } } @@ -1088,6 +1189,7 @@ message Message { Message.ImageMessage imageMessage = 4; bytes jpegThumbnail = 6; Message.VideoMessage videoMessage = 7; + Message.LocationMessage locationMessage = 8; } } @@ -1124,6 +1226,11 @@ message Message { } message Body { optional string text = 1; + optional Format format = 2; + enum Format { + DEFAULT = 0; + EXTENSIONS_1 = 1; + } } message NativeFlowResponseMessage { @@ -1284,12 +1391,27 @@ message Message { optional Message.PeerDataOperationRequestType peerDataOperationRequestType = 1; repeated RequestStickerReupload requestStickerReupload = 2; repeated RequestUrlPreview requestUrlPreview = 3; + optional HistorySyncOnDemandRequest historySyncOnDemandRequest = 4; + repeated PlaceholderMessageResendRequest placeholderMessageResendRequest = 5; + message HistorySyncOnDemandRequest { + optional string chatJid = 1; + optional string oldestMsgId = 2; + optional bool oldestMsgFromMe = 3; + optional int32 onDemandMsgCount = 4; + optional int64 oldestMsgTimestampMs = 5; + } + + message PlaceholderMessageResendRequest { + optional MessageKey messageKey = 1; + } + message RequestStickerReupload { optional string fileSha256 = 1; } message RequestUrlPreview { optional string url = 1; + optional bool includeHqThumbnail = 2; } } @@ -1302,6 +1424,7 @@ message Message { optional MediaRetryNotification.ResultType mediaUploadResult = 1; optional Message.StickerMessage stickerMessage = 2; optional LinkPreviewResponse linkPreviewResponse = 3; + optional PlaceholderMessageResendResponse placeholderMessageResendResponse = 4; message LinkPreviewResponse { optional string url = 1; optional string title = 2; @@ -1310,6 +1433,21 @@ message Message { optional string canonicalUrl = 5; optional string matchText = 6; optional string previewType = 7; + optional LinkPreviewHighQualityThumbnail hqThumbnail = 8; + message LinkPreviewHighQualityThumbnail { + optional string directPath = 1; + optional string thumbHash = 2; + optional string encThumbHash = 3; + optional bytes mediaKey = 4; + optional int64 mediaKeyTimestampMs = 5; + optional int32 thumbWidth = 6; + optional int32 thumbHeight = 7; + } + + } + + message PlaceholderMessageResendResponse { + optional bytes webMessageInfoBytes = 1; } } @@ -1320,7 +1458,20 @@ message Message { UPLOAD_STICKER = 0; SEND_RECENT_STICKER_BOOTSTRAP = 1; GENERATE_LINK_PREVIEW = 2; + HISTORY_SYNC_ON_DEMAND = 3; + PLACEHOLDER_MESSAGE_RESEND = 4; } + message PinInChatMessage { + optional MessageKey key = 1; + optional Type type = 2; + optional int64 senderTimestampMs = 3; + enum Type { + UNKNOWN_TYPE = 0; + PIN_FOR_ALL = 1; + UNPIN_FOR_ALL = 2; + } + } + message PollCreationMessage { optional bytes encKey = 1; optional string name = 2; @@ -1434,6 +1585,26 @@ message Message { optional ContextInfo contextInfo = 1; } + message ScheduledCallCreationMessage { + optional int64 scheduledTimestampMs = 1; + optional CallType callType = 2; + optional string title = 3; + enum CallType { + UNKNOWN = 0; + VOICE = 1; + VIDEO = 2; + } + } + + message ScheduledCallEditMessage { + optional MessageKey key = 1; + optional EditType editType = 2; + enum EditType { + UNKNOWN = 0; + CANCEL = 1; + } + } + message SendPaymentMessage { optional Message noteMessage = 2; optional MessageKey requestMessageKey = 3; @@ -1549,11 +1720,16 @@ message Message { } +message MessageAddOnContextInfo { + optional uint32 messageAddOnDurationInSecs = 1; +} + message MessageContextInfo { optional DeviceListMetadata deviceListMetadata = 1; optional int32 deviceListMetadataVersion = 2; optional bytes messageSecret = 3; optional bytes paddingBytes = 4; + optional uint32 messageAddOnDurationInSecs = 5; } message MessageKey { @@ -1592,6 +1768,10 @@ message MsgOpaqueData { optional int64 senderTimestampMs = 22; optional string pollUpdateParentKey = 23; optional PollEncValue encPollVote = 24; + optional bool isSentCagPollCreation = 28; + optional string encReactionTargetMessageKey = 25; + optional bytes encReactionEncPayload = 26; + optional bytes encReactionEncIv = 27; message PollOption { optional string name = 1; } @@ -1623,6 +1803,15 @@ message NotificationMessageInfo { optional string participant = 4; } +message NotificationSettings { + optional string messageVibrate = 1; + optional string messagePopup = 2; + optional string messageLight = 3; + optional bool lowPriorityNotifications = 4; + optional bool reactionsMuted = 5; + optional string callVibrate = 6; +} + message PastParticipant { optional string userJid = 1; optional LeaveReason leaveReason = 2; @@ -1731,28 +1920,25 @@ message PaymentInfo { } } -message PendingKeyExchange { - optional uint32 sequence = 1; - optional bytes localBaseKey = 2; - optional bytes localBaseKeyPrivate = 3; - optional bytes localRatchetKey = 4; - optional bytes localRatchetKeyPrivate = 5; - optional bytes localIdentityKey = 7; - optional bytes localIdentityKeyPrivate = 8; -} - -message PendingPreKey { - optional uint32 preKeyId = 1; - optional int32 signedPreKeyId = 3; - optional bytes baseKey = 2; -} - message PhotoChange { optional bytes oldPhoto = 1; optional bytes newPhoto = 2; optional uint32 newPhotoId = 3; } +message PinInChat { + optional Type type = 1; + optional MessageKey key = 2; + optional int64 senderTimestampMs = 3; + optional int64 serverTimestampMs = 4; + optional MessageAddOnContextInfo messageAddOnContextInfo = 5; + enum Type { + UNKNOWN_TYPE = 0; + PIN_FOR_ALL = 1; + UNPIN_FOR_ALL = 2; + } +} + message Point { optional int32 xDeprecated = 1; optional int32 yDeprecated = 2; @@ -1773,6 +1959,8 @@ message PollUpdate { optional MessageKey pollUpdateMessageKey = 1; optional Message.PollVoteMessage vote = 2; optional int64 senderTimestampMs = 3; + optional int64 serverTimestampMs = 4; + optional bool unread = 5; } message PreKeyRecordStructure { @@ -1781,6 +1969,15 @@ message PreKeyRecordStructure { optional bytes privateKey = 3; } +message PreKeySignalMessage { + optional uint32 registrationId = 5; + optional uint32 preKeyId = 1; + optional uint32 signedPreKeyId = 6; + optional bytes baseKey = 2; + optional bytes identityKey = 3; + optional bytes message = 4; +} + message Pushname { optional string id = 1; optional string pushname = 2; @@ -1804,9 +2001,17 @@ message RecordStructure { repeated SessionStructure previousSessions = 2; } -message SenderChainKey { - optional uint32 iteration = 1; - optional bytes seed = 2; +message SenderKeyDistributionMessage { + optional uint32 id = 1; + optional uint32 iteration = 2; + optional bytes chainKey = 3; + optional bytes signingKey = 4; +} + +message SenderKeyMessage { + optional uint32 id = 1; + optional uint32 iteration = 2; + optional bytes ciphertext = 3; } message SenderKeyRecordStructure { @@ -1818,16 +2023,21 @@ message SenderKeyStateStructure { optional SenderChainKey senderChainKey = 2; optional SenderSigningKey senderSigningKey = 3; repeated SenderMessageKey senderMessageKeys = 4; -} - -message SenderMessageKey { - optional uint32 iteration = 1; - optional bytes seed = 2; -} - -message SenderSigningKey { - optional bytes public = 1; - optional bytes private = 2; + message SenderChainKey { + optional uint32 iteration = 1; + optional bytes seed = 2; + } + + message SenderMessageKey { + optional uint32 iteration = 1; + optional bytes seed = 2; + } + + message SenderSigningKey { + optional bytes public = 1; + optional bytes private = 2; + } + } message ServerErrorReceipt { @@ -1848,6 +2058,48 @@ message SessionStructure { optional uint32 localRegistrationId = 11; optional bool needsRefresh = 12; optional bytes aliceBaseKey = 13; + message Chain { + optional bytes senderRatchetKey = 1; + optional bytes senderRatchetKeyPrivate = 2; + optional ChainKey chainKey = 3; + repeated MessageKey messageKeys = 4; + message ChainKey { + optional uint32 index = 1; + optional bytes key = 2; + } + + message MessageKey { + optional uint32 index = 1; + optional bytes cipherKey = 2; + optional bytes macKey = 3; + optional bytes iv = 4; + } + + } + + message PendingKeyExchange { + optional uint32 sequence = 1; + optional bytes localBaseKey = 2; + optional bytes localBaseKeyPrivate = 3; + optional bytes localRatchetKey = 4; + optional bytes localRatchetKeyPrivate = 5; + optional bytes localIdentityKey = 7; + optional bytes localIdentityKeyPrivate = 8; + } + + message PendingPreKey { + optional uint32 preKeyId = 1; + optional int32 signedPreKeyId = 3; + optional bytes baseKey = 2; + } + +} + +message SignalMessage { + optional bytes ratchetKey = 1; + optional uint32 counter = 2; + optional uint32 previousCounter = 3; + optional bytes ciphertext = 4; } message SignedPreKeyRecordStructure { @@ -1916,6 +2168,11 @@ message SyncActionValue { optional RemoveRecentStickerAction removeRecentStickerAction = 34; optional ChatAssignmentAction chatAssignment = 35; optional ChatAssignmentOpenedStatusAction chatAssignmentOpenedStatus = 36; + optional PnForLidChatAction pnForLidChatAction = 37; + optional MarketingMessageAction marketingMessageAction = 38; + optional MarketingMessageBroadcastAction marketingMessageBroadcastAction = 39; + optional ExternalWebBetaAction externalWebBetaAction = 40; + optional PrivacySettingRelayAllCalls privacySettingRelayAllCalls = 41; message AgentAction { optional string name = 1; optional int32 deviceID = 2; @@ -1958,6 +2215,10 @@ message SyncActionValue { optional int64 messageTimestamp = 2; } + message ExternalWebBetaAction { + optional bool isOptIn = 1; + } + message KeyExpiration { optional int32 expiredKeyEpoch = 1; } @@ -1982,6 +2243,23 @@ message SyncActionValue { optional SyncActionValue.SyncActionMessageRange messageRange = 2; } + message MarketingMessageAction { + optional string name = 1; + optional string message = 2; + optional MarketingMessagePrototypeType type = 3; + optional int64 createdAt = 4; + optional int64 lastSentAt = 5; + optional bool isDeleted = 6; + optional string mediaId = 7; + enum MarketingMessagePrototypeType { + PERSONALIZED = 0; + } + } + + message MarketingMessageBroadcastAction { + optional int32 repliedCount = 1; + } + message MuteAction { optional bool muted = 1; optional int64 muteEndTimestamp = 2; @@ -1996,6 +2274,10 @@ message SyncActionValue { optional bool pinned = 1; } + message PnForLidChatAction { + optional string pnJid = 1; + } + message PrimaryFeature { repeated string flags = 1; } @@ -2004,6 +2286,10 @@ message SyncActionValue { optional string version = 1; } + message PrivacySettingRelayAllCalls { + optional bool isEnabled = 1; + } + message PushNameSetting { optional string name = 1; } @@ -2275,6 +2561,7 @@ message WebMessageInfo { optional KeepInChat keepInChat = 50; optional string originalSelfAuthorUserJidString = 51; optional uint64 revokeMessageTimestamp = 52; + optional PinInChat pinInChat = 54; enum BizPrivacyStatus { E2EE = 0; FB = 2; @@ -2452,6 +2739,27 @@ message WebMessageInfo { CAG_INVITE_AUTO_ADD = 159; BIZ_CHAT_ASSIGNMENT_UNASSIGN = 160; CAG_INVITE_AUTO_JOINED = 161; + SCHEDULED_CALL_START_MESSAGE = 162; + COMMUNITY_INVITE_RICH = 163; + COMMUNITY_INVITE_AUTO_ADD_RICH = 164; + SUB_GROUP_INVITE_RICH = 165; + SUB_GROUP_PARTICIPANT_ADD_RICH = 166; + COMMUNITY_LINK_PARENT_GROUP_RICH = 167; + COMMUNITY_PARTICIPANT_ADD_RICH = 168; + SILENCED_UNKNOWN_CALLER_AUDIO = 169; + SILENCED_UNKNOWN_CALLER_VIDEO = 170; + GROUP_MEMBER_ADD_MODE = 171; + GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD = 172; + COMMUNITY_CHANGE_DESCRIPTION = 173; + SENDER_INVITE = 174; + RECEIVER_INVITE = 175; + COMMUNITY_ALLOW_MEMBER_ADDED_GROUPS = 176; + PINNED_MESSAGE_IN_CHAT = 177; + PAYMENT_INVITE_SETUP_INVITER = 178; + PAYMENT_INVITE_SETUP_INVITEE_RECEIVE_ONLY = 179; + PAYMENT_INVITE_SETUP_INVITEE_SEND_AND_RECEIVE = 180; + LINKED_GROUP_CALL_START = 181; + REPORT_TO_ADMIN_ENABLED_STATUS = 182; } } diff --git a/whatsapp_addon/Baileys/WAProto/index.d.ts b/whatsapp_addon/Baileys/WAProto/index.d.ts index 70d2bdd..9a61d22 100644 --- a/whatsapp_addon/Baileys/WAProto/index.d.ts +++ b/whatsapp_addon/Baileys/WAProto/index.d.ts @@ -13,6 +13,12 @@ export namespace proto { /** ADVDeviceIdentity keyIndex */ keyIndex?: (number|null); + + /** ADVDeviceIdentity accountType */ + accountType?: (proto.ADVEncryptionType|null); + + /** ADVDeviceIdentity deviceType */ + deviceType?: (proto.ADVEncryptionType|null); } /** Represents a ADVDeviceIdentity. */ @@ -33,6 +39,12 @@ export namespace proto { /** ADVDeviceIdentity keyIndex. */ public keyIndex: number; + /** ADVDeviceIdentity accountType. */ + public accountType: proto.ADVEncryptionType; + + /** ADVDeviceIdentity deviceType. */ + public deviceType: proto.ADVEncryptionType; + /** * Creates a new ADVDeviceIdentity instance using the specified properties. * @param [properties] Properties to set @@ -104,6 +116,12 @@ export namespace proto { public toJSON(): { [k: string]: any }; } + /** ADVEncryptionType enum. */ + enum ADVEncryptionType { + E2EE = 0, + HOSTED = 1 + } + /** Properties of a ADVKeyIndexList. */ interface IADVKeyIndexList { @@ -118,6 +136,9 @@ export namespace proto { /** ADVKeyIndexList validIndexes */ validIndexes?: (number[]|null); + + /** ADVKeyIndexList accountType */ + accountType?: (proto.ADVEncryptionType|null); } /** Represents a ADVKeyIndexList. */ @@ -141,6 +162,9 @@ export namespace proto { /** ADVKeyIndexList validIndexes. */ public validIndexes: number[]; + /** ADVKeyIndexList accountType. */ + public accountType: proto.ADVEncryptionType; + /** * Creates a new ADVKeyIndexList instance using the specified properties. * @param [properties] Properties to set @@ -1502,362 +1526,642 @@ export namespace proto { } } - /** Properties of a Chain. */ - interface IChain { + /** Properties of a ChatRowOpaqueData. */ + interface IChatRowOpaqueData { - /** Chain senderRatchetKey */ - senderRatchetKey?: (Uint8Array|null); - - /** Chain senderRatchetKeyPrivate */ - senderRatchetKeyPrivate?: (Uint8Array|null); - - /** Chain chainKey */ - chainKey?: (proto.IChainKey|null); - - /** Chain messageKeys */ - messageKeys?: (proto.IMessageKey[]|null); + /** ChatRowOpaqueData draftMessage */ + draftMessage?: (proto.ChatRowOpaqueData.IDraftMessage|null); } - /** Represents a Chain. */ - class Chain implements IChain { + /** Represents a ChatRowOpaqueData. */ + class ChatRowOpaqueData implements IChatRowOpaqueData { /** - * Constructs a new Chain. + * Constructs a new ChatRowOpaqueData. * @param [properties] Properties to set */ - constructor(properties?: proto.IChain); - - /** Chain senderRatchetKey. */ - public senderRatchetKey: Uint8Array; + constructor(properties?: proto.IChatRowOpaqueData); - /** Chain senderRatchetKeyPrivate. */ - public senderRatchetKeyPrivate: Uint8Array; - - /** Chain chainKey. */ - public chainKey?: (proto.IChainKey|null); - - /** Chain messageKeys. */ - public messageKeys: proto.IMessageKey[]; + /** ChatRowOpaqueData draftMessage. */ + public draftMessage?: (proto.ChatRowOpaqueData.IDraftMessage|null); /** - * Creates a new Chain instance using the specified properties. + * Creates a new ChatRowOpaqueData instance using the specified properties. * @param [properties] Properties to set - * @returns Chain instance + * @returns ChatRowOpaqueData instance */ - public static create(properties?: proto.IChain): proto.Chain; + public static create(properties?: proto.IChatRowOpaqueData): proto.ChatRowOpaqueData; /** - * Encodes the specified Chain message. Does not implicitly {@link proto.Chain.verify|verify} messages. - * @param message Chain message or plain object to encode + * Encodes the specified ChatRowOpaqueData message. Does not implicitly {@link proto.ChatRowOpaqueData.verify|verify} messages. + * @param message ChatRowOpaqueData message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: proto.IChain, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: proto.IChatRowOpaqueData, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Chain message, length delimited. Does not implicitly {@link proto.Chain.verify|verify} messages. - * @param message Chain message or plain object to encode + * Encodes the specified ChatRowOpaqueData message, length delimited. Does not implicitly {@link proto.ChatRowOpaqueData.verify|verify} messages. + * @param message ChatRowOpaqueData message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: proto.IChain, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: proto.IChatRowOpaqueData, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Chain message from the specified reader or buffer. + * Decodes a ChatRowOpaqueData message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Chain + * @returns ChatRowOpaqueData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Chain; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.ChatRowOpaqueData; /** - * Decodes a Chain message from the specified reader or buffer, length delimited. + * Decodes a ChatRowOpaqueData message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Chain + * @returns ChatRowOpaqueData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Chain; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.ChatRowOpaqueData; /** - * Verifies a Chain message. + * Verifies a ChatRowOpaqueData message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Chain message from a plain object. Also converts values to their respective internal types. + * Creates a ChatRowOpaqueData message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Chain + * @returns ChatRowOpaqueData */ - public static fromObject(object: { [k: string]: any }): proto.Chain; + public static fromObject(object: { [k: string]: any }): proto.ChatRowOpaqueData; /** - * Creates a plain object from a Chain message. Also converts values to other types if specified. - * @param message Chain + * Creates a plain object from a ChatRowOpaqueData message. Also converts values to other types if specified. + * @param message ChatRowOpaqueData * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: proto.Chain, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: proto.ChatRowOpaqueData, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Chain to JSON. + * Converts this ChatRowOpaqueData to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a ChainKey. */ - interface IChainKey { + namespace ChatRowOpaqueData { - /** ChainKey index */ - index?: (number|null); + /** Properties of a DraftMessage. */ + interface IDraftMessage { - /** ChainKey key */ - key?: (Uint8Array|null); - } + /** DraftMessage text */ + text?: (string|null); - /** Represents a ChainKey. */ - class ChainKey implements IChainKey { + /** DraftMessage omittedUrl */ + omittedUrl?: (string|null); - /** - * Constructs a new ChainKey. - * @param [properties] Properties to set - */ - constructor(properties?: proto.IChainKey); + /** DraftMessage ctwaContextLinkData */ + ctwaContextLinkData?: (proto.ChatRowOpaqueData.DraftMessage.ICtwaContextLinkData|null); - /** ChainKey index. */ - public index: number; + /** DraftMessage ctwaContext */ + ctwaContext?: (proto.ChatRowOpaqueData.DraftMessage.ICtwaContextData|null); - /** ChainKey key. */ - public key: Uint8Array; + /** DraftMessage timestamp */ + timestamp?: (number|Long|null); + } - /** - * Creates a new ChainKey instance using the specified properties. - * @param [properties] Properties to set - * @returns ChainKey instance - */ - public static create(properties?: proto.IChainKey): proto.ChainKey; + /** Represents a DraftMessage. */ + class DraftMessage implements IDraftMessage { - /** - * Encodes the specified ChainKey message. Does not implicitly {@link proto.ChainKey.verify|verify} messages. - * @param message ChainKey message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: proto.IChainKey, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Constructs a new DraftMessage. + * @param [properties] Properties to set + */ + constructor(properties?: proto.ChatRowOpaqueData.IDraftMessage); - /** - * Encodes the specified ChainKey message, length delimited. Does not implicitly {@link proto.ChainKey.verify|verify} messages. - * @param message ChainKey message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: proto.IChainKey, writer?: $protobuf.Writer): $protobuf.Writer; + /** DraftMessage text. */ + public text: string; - /** - * Decodes a ChainKey message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ChainKey - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.ChainKey; + /** DraftMessage omittedUrl. */ + public omittedUrl: string; - /** - * Decodes a ChainKey message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ChainKey - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.ChainKey; + /** DraftMessage ctwaContextLinkData. */ + public ctwaContextLinkData?: (proto.ChatRowOpaqueData.DraftMessage.ICtwaContextLinkData|null); - /** - * Verifies a ChainKey message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** DraftMessage ctwaContext. */ + public ctwaContext?: (proto.ChatRowOpaqueData.DraftMessage.ICtwaContextData|null); - /** - * Creates a ChainKey message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ChainKey - */ - public static fromObject(object: { [k: string]: any }): proto.ChainKey; + /** DraftMessage timestamp. */ + public timestamp: (number|Long); - /** - * Creates a plain object from a ChainKey message. Also converts values to other types if specified. - * @param message ChainKey - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: proto.ChainKey, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** + * Creates a new DraftMessage instance using the specified properties. + * @param [properties] Properties to set + * @returns DraftMessage instance + */ + public static create(properties?: proto.ChatRowOpaqueData.IDraftMessage): proto.ChatRowOpaqueData.DraftMessage; - /** - * Converts this ChainKey to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** + * Encodes the specified DraftMessage message. Does not implicitly {@link proto.ChatRowOpaqueData.DraftMessage.verify|verify} messages. + * @param message DraftMessage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.ChatRowOpaqueData.IDraftMessage, writer?: $protobuf.Writer): $protobuf.Writer; - /** Properties of a ClientPayload. */ - interface IClientPayload { + /** + * Encodes the specified DraftMessage message, length delimited. Does not implicitly {@link proto.ChatRowOpaqueData.DraftMessage.verify|verify} messages. + * @param message DraftMessage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.ChatRowOpaqueData.IDraftMessage, writer?: $protobuf.Writer): $protobuf.Writer; - /** ClientPayload username */ - username?: (number|Long|null); + /** + * Decodes a DraftMessage message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns DraftMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.ChatRowOpaqueData.DraftMessage; - /** ClientPayload passive */ - passive?: (boolean|null); + /** + * Decodes a DraftMessage message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns DraftMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.ChatRowOpaqueData.DraftMessage; - /** ClientPayload userAgent */ - userAgent?: (proto.ClientPayload.IUserAgent|null); + /** + * Verifies a DraftMessage message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** ClientPayload webInfo */ - webInfo?: (proto.ClientPayload.IWebInfo|null); + /** + * Creates a DraftMessage message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns DraftMessage + */ + public static fromObject(object: { [k: string]: any }): proto.ChatRowOpaqueData.DraftMessage; - /** ClientPayload pushName */ - pushName?: (string|null); + /** + * Creates a plain object from a DraftMessage message. Also converts values to other types if specified. + * @param message DraftMessage + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.ChatRowOpaqueData.DraftMessage, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** ClientPayload sessionId */ - sessionId?: (number|null); + /** + * Converts this DraftMessage to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** ClientPayload shortConnect */ - shortConnect?: (boolean|null); + namespace DraftMessage { - /** ClientPayload connectType */ - connectType?: (proto.ClientPayload.ConnectType|null); + /** Properties of a CtwaContextData. */ + interface ICtwaContextData { - /** ClientPayload connectReason */ - connectReason?: (proto.ClientPayload.ConnectReason|null); + /** CtwaContextData conversionSource */ + conversionSource?: (string|null); - /** ClientPayload shards */ - shards?: (number[]|null); + /** CtwaContextData conversionData */ + conversionData?: (Uint8Array|null); - /** ClientPayload dnsSource */ - dnsSource?: (proto.ClientPayload.IDNSSource|null); + /** CtwaContextData sourceUrl */ + sourceUrl?: (string|null); - /** ClientPayload connectAttemptCount */ - connectAttemptCount?: (number|null); + /** CtwaContextData sourceId */ + sourceId?: (string|null); - /** ClientPayload device */ - device?: (number|null); + /** CtwaContextData sourceType */ + sourceType?: (string|null); - /** ClientPayload devicePairingData */ - devicePairingData?: (proto.ClientPayload.IDevicePairingRegistrationData|null); + /** CtwaContextData title */ + title?: (string|null); - /** ClientPayload product */ - product?: (proto.ClientPayload.Product|null); + /** CtwaContextData description */ + description?: (string|null); - /** ClientPayload fbCat */ - fbCat?: (Uint8Array|null); + /** CtwaContextData thumbnail */ + thumbnail?: (string|null); - /** ClientPayload fbUserAgent */ - fbUserAgent?: (Uint8Array|null); + /** CtwaContextData thumbnailUrl */ + thumbnailUrl?: (string|null); - /** ClientPayload oc */ - oc?: (boolean|null); + /** CtwaContextData mediaType */ + mediaType?: (proto.ChatRowOpaqueData.DraftMessage.CtwaContextData.ContextInfoExternalAdReplyInfoMediaType|null); - /** ClientPayload lc */ - lc?: (number|null); + /** CtwaContextData mediaUrl */ + mediaUrl?: (string|null); - /** ClientPayload iosAppExtension */ - iosAppExtension?: (proto.ClientPayload.IOSAppExtension|null); + /** CtwaContextData isSuspiciousLink */ + isSuspiciousLink?: (boolean|null); + } - /** ClientPayload fbAppId */ - fbAppId?: (number|Long|null); + /** Represents a CtwaContextData. */ + class CtwaContextData implements ICtwaContextData { - /** ClientPayload fbDeviceId */ - fbDeviceId?: (Uint8Array|null); + /** + * Constructs a new CtwaContextData. + * @param [properties] Properties to set + */ + constructor(properties?: proto.ChatRowOpaqueData.DraftMessage.ICtwaContextData); - /** ClientPayload pull */ - pull?: (boolean|null); + /** CtwaContextData conversionSource. */ + public conversionSource: string; - /** ClientPayload paddingBytes */ - paddingBytes?: (Uint8Array|null); + /** CtwaContextData conversionData. */ + public conversionData: Uint8Array; - /** ClientPayload bizMarketSegment */ - bizMarketSegment?: (proto.ClientPayload.BizMarketSegment|null); + /** CtwaContextData sourceUrl. */ + public sourceUrl: string; - /** ClientPayload yearClass */ - yearClass?: (number|null); + /** CtwaContextData sourceId. */ + public sourceId: string; - /** ClientPayload memClass */ - memClass?: (number|null); - } + /** CtwaContextData sourceType. */ + public sourceType: string; - /** Represents a ClientPayload. */ - class ClientPayload implements IClientPayload { + /** CtwaContextData title. */ + public title: string; - /** - * Constructs a new ClientPayload. - * @param [properties] Properties to set - */ - constructor(properties?: proto.IClientPayload); + /** CtwaContextData description. */ + public description: string; - /** ClientPayload username. */ - public username: (number|Long); + /** CtwaContextData thumbnail. */ + public thumbnail: string; - /** ClientPayload passive. */ - public passive: boolean; + /** CtwaContextData thumbnailUrl. */ + public thumbnailUrl: string; - /** ClientPayload userAgent. */ - public userAgent?: (proto.ClientPayload.IUserAgent|null); + /** CtwaContextData mediaType. */ + public mediaType: proto.ChatRowOpaqueData.DraftMessage.CtwaContextData.ContextInfoExternalAdReplyInfoMediaType; - /** ClientPayload webInfo. */ - public webInfo?: (proto.ClientPayload.IWebInfo|null); + /** CtwaContextData mediaUrl. */ + public mediaUrl: string; - /** ClientPayload pushName. */ - public pushName: string; + /** CtwaContextData isSuspiciousLink. */ + public isSuspiciousLink: boolean; - /** ClientPayload sessionId. */ - public sessionId: number; + /** + * Creates a new CtwaContextData instance using the specified properties. + * @param [properties] Properties to set + * @returns CtwaContextData instance + */ + public static create(properties?: proto.ChatRowOpaqueData.DraftMessage.ICtwaContextData): proto.ChatRowOpaqueData.DraftMessage.CtwaContextData; - /** ClientPayload shortConnect. */ - public shortConnect: boolean; + /** + * Encodes the specified CtwaContextData message. Does not implicitly {@link proto.ChatRowOpaqueData.DraftMessage.CtwaContextData.verify|verify} messages. + * @param message CtwaContextData message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.ChatRowOpaqueData.DraftMessage.ICtwaContextData, writer?: $protobuf.Writer): $protobuf.Writer; - /** ClientPayload connectType. */ - public connectType: proto.ClientPayload.ConnectType; + /** + * Encodes the specified CtwaContextData message, length delimited. Does not implicitly {@link proto.ChatRowOpaqueData.DraftMessage.CtwaContextData.verify|verify} messages. + * @param message CtwaContextData message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.ChatRowOpaqueData.DraftMessage.ICtwaContextData, writer?: $protobuf.Writer): $protobuf.Writer; - /** ClientPayload connectReason. */ - public connectReason: proto.ClientPayload.ConnectReason; + /** + * Decodes a CtwaContextData message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CtwaContextData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.ChatRowOpaqueData.DraftMessage.CtwaContextData; - /** ClientPayload shards. */ - public shards: number[]; + /** + * Decodes a CtwaContextData message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CtwaContextData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.ChatRowOpaqueData.DraftMessage.CtwaContextData; - /** ClientPayload dnsSource. */ - public dnsSource?: (proto.ClientPayload.IDNSSource|null); + /** + * Verifies a CtwaContextData message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** ClientPayload connectAttemptCount. */ - public connectAttemptCount: number; + /** + * Creates a CtwaContextData message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CtwaContextData + */ + public static fromObject(object: { [k: string]: any }): proto.ChatRowOpaqueData.DraftMessage.CtwaContextData; - /** ClientPayload device. */ - public device: number; + /** + * Creates a plain object from a CtwaContextData message. Also converts values to other types if specified. + * @param message CtwaContextData + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.ChatRowOpaqueData.DraftMessage.CtwaContextData, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** ClientPayload devicePairingData. */ - public devicePairingData?: (proto.ClientPayload.IDevicePairingRegistrationData|null); + /** + * Converts this CtwaContextData to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** ClientPayload product. */ - public product: proto.ClientPayload.Product; + namespace CtwaContextData { - /** ClientPayload fbCat. */ - public fbCat: Uint8Array; + /** ContextInfoExternalAdReplyInfoMediaType enum. */ + enum ContextInfoExternalAdReplyInfoMediaType { + NONE = 0, + IMAGE = 1, + VIDEO = 2 + } + } - /** ClientPayload fbUserAgent. */ - public fbUserAgent: Uint8Array; + /** Properties of a CtwaContextLinkData. */ + interface ICtwaContextLinkData { - /** ClientPayload oc. */ - public oc: boolean; + /** CtwaContextLinkData context */ + context?: (string|null); - /** ClientPayload lc. */ - public lc: number; + /** CtwaContextLinkData sourceUrl */ + sourceUrl?: (string|null); - /** ClientPayload iosAppExtension. */ + /** CtwaContextLinkData icebreaker */ + icebreaker?: (string|null); + + /** CtwaContextLinkData phone */ + phone?: (string|null); + } + + /** Represents a CtwaContextLinkData. */ + class CtwaContextLinkData implements ICtwaContextLinkData { + + /** + * Constructs a new CtwaContextLinkData. + * @param [properties] Properties to set + */ + constructor(properties?: proto.ChatRowOpaqueData.DraftMessage.ICtwaContextLinkData); + + /** CtwaContextLinkData context. */ + public context: string; + + /** CtwaContextLinkData sourceUrl. */ + public sourceUrl: string; + + /** CtwaContextLinkData icebreaker. */ + public icebreaker: string; + + /** CtwaContextLinkData phone. */ + public phone: string; + + /** + * Creates a new CtwaContextLinkData instance using the specified properties. + * @param [properties] Properties to set + * @returns CtwaContextLinkData instance + */ + public static create(properties?: proto.ChatRowOpaqueData.DraftMessage.ICtwaContextLinkData): proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData; + + /** + * Encodes the specified CtwaContextLinkData message. Does not implicitly {@link proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData.verify|verify} messages. + * @param message CtwaContextLinkData message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.ChatRowOpaqueData.DraftMessage.ICtwaContextLinkData, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CtwaContextLinkData message, length delimited. Does not implicitly {@link proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData.verify|verify} messages. + * @param message CtwaContextLinkData message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.ChatRowOpaqueData.DraftMessage.ICtwaContextLinkData, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CtwaContextLinkData message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CtwaContextLinkData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData; + + /** + * Decodes a CtwaContextLinkData message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CtwaContextLinkData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData; + + /** + * Verifies a CtwaContextLinkData message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CtwaContextLinkData message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CtwaContextLinkData + */ + public static fromObject(object: { [k: string]: any }): proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData; + + /** + * Creates a plain object from a CtwaContextLinkData message. Also converts values to other types if specified. + * @param message CtwaContextLinkData + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CtwaContextLinkData to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + } + + /** Properties of a ClientPayload. */ + interface IClientPayload { + + /** ClientPayload username */ + username?: (number|Long|null); + + /** ClientPayload passive */ + passive?: (boolean|null); + + /** ClientPayload userAgent */ + userAgent?: (proto.ClientPayload.IUserAgent|null); + + /** ClientPayload webInfo */ + webInfo?: (proto.ClientPayload.IWebInfo|null); + + /** ClientPayload pushName */ + pushName?: (string|null); + + /** ClientPayload sessionId */ + sessionId?: (number|null); + + /** ClientPayload shortConnect */ + shortConnect?: (boolean|null); + + /** ClientPayload connectType */ + connectType?: (proto.ClientPayload.ConnectType|null); + + /** ClientPayload connectReason */ + connectReason?: (proto.ClientPayload.ConnectReason|null); + + /** ClientPayload shards */ + shards?: (number[]|null); + + /** ClientPayload dnsSource */ + dnsSource?: (proto.ClientPayload.IDNSSource|null); + + /** ClientPayload connectAttemptCount */ + connectAttemptCount?: (number|null); + + /** ClientPayload device */ + device?: (number|null); + + /** ClientPayload devicePairingData */ + devicePairingData?: (proto.ClientPayload.IDevicePairingRegistrationData|null); + + /** ClientPayload product */ + product?: (proto.ClientPayload.Product|null); + + /** ClientPayload fbCat */ + fbCat?: (Uint8Array|null); + + /** ClientPayload fbUserAgent */ + fbUserAgent?: (Uint8Array|null); + + /** ClientPayload oc */ + oc?: (boolean|null); + + /** ClientPayload lc */ + lc?: (number|null); + + /** ClientPayload iosAppExtension */ + iosAppExtension?: (proto.ClientPayload.IOSAppExtension|null); + + /** ClientPayload fbAppId */ + fbAppId?: (number|Long|null); + + /** ClientPayload fbDeviceId */ + fbDeviceId?: (Uint8Array|null); + + /** ClientPayload pull */ + pull?: (boolean|null); + + /** ClientPayload paddingBytes */ + paddingBytes?: (Uint8Array|null); + + /** ClientPayload yearClass */ + yearClass?: (number|null); + + /** ClientPayload memClass */ + memClass?: (number|null); + + /** ClientPayload interopData */ + interopData?: (proto.ClientPayload.IInteropData|null); + } + + /** Represents a ClientPayload. */ + class ClientPayload implements IClientPayload { + + /** + * Constructs a new ClientPayload. + * @param [properties] Properties to set + */ + constructor(properties?: proto.IClientPayload); + + /** ClientPayload username. */ + public username: (number|Long); + + /** ClientPayload passive. */ + public passive: boolean; + + /** ClientPayload userAgent. */ + public userAgent?: (proto.ClientPayload.IUserAgent|null); + + /** ClientPayload webInfo. */ + public webInfo?: (proto.ClientPayload.IWebInfo|null); + + /** ClientPayload pushName. */ + public pushName: string; + + /** ClientPayload sessionId. */ + public sessionId: number; + + /** ClientPayload shortConnect. */ + public shortConnect: boolean; + + /** ClientPayload connectType. */ + public connectType: proto.ClientPayload.ConnectType; + + /** ClientPayload connectReason. */ + public connectReason: proto.ClientPayload.ConnectReason; + + /** ClientPayload shards. */ + public shards: number[]; + + /** ClientPayload dnsSource. */ + public dnsSource?: (proto.ClientPayload.IDNSSource|null); + + /** ClientPayload connectAttemptCount. */ + public connectAttemptCount: number; + + /** ClientPayload device. */ + public device: number; + + /** ClientPayload devicePairingData. */ + public devicePairingData?: (proto.ClientPayload.IDevicePairingRegistrationData|null); + + /** ClientPayload product. */ + public product: proto.ClientPayload.Product; + + /** ClientPayload fbCat. */ + public fbCat: Uint8Array; + + /** ClientPayload fbUserAgent. */ + public fbUserAgent: Uint8Array; + + /** ClientPayload oc. */ + public oc: boolean; + + /** ClientPayload lc. */ + public lc: number; + + /** ClientPayload iosAppExtension. */ public iosAppExtension: proto.ClientPayload.IOSAppExtension; /** ClientPayload fbAppId. */ @@ -1872,15 +2176,15 @@ export namespace proto { /** ClientPayload paddingBytes. */ public paddingBytes: Uint8Array; - /** ClientPayload bizMarketSegment. */ - public bizMarketSegment: proto.ClientPayload.BizMarketSegment; - /** ClientPayload yearClass. */ public yearClass: number; /** ClientPayload memClass. */ public memClass: number; + /** ClientPayload interopData. */ + public interopData?: (proto.ClientPayload.IInteropData|null); + /** * Creates a new ClientPayload instance using the specified properties. * @param [properties] Properties to set @@ -1954,13 +2258,6 @@ export namespace proto { namespace ClientPayload { - /** BizMarketSegment enum. */ - enum BizMarketSegment { - DEFAULT = 0, - DEVX = 1, - INBOX = 2 - } - /** ConnectReason enum. */ enum ConnectReason { PUSH = 0, @@ -1968,7 +2265,8 @@ export namespace proto { SCHEDULED = 2, ERROR_RECONNECT = 3, NETWORK_SWITCH = 4, - PING_RECONNECT = 5 + PING_RECONNECT = 5, + UNKNOWN = 6 } /** ConnectType enum. */ @@ -2237,53 +2535,159 @@ export namespace proto { INTENTS_EXTENSION = 2 } - /** Product enum. */ - enum Product { - WHATSAPP = 0, - MESSENGER = 1 - } + /** Properties of an InteropData. */ + interface IInteropData { - /** Properties of a UserAgent. */ - interface IUserAgent { - - /** UserAgent platform */ - platform?: (proto.ClientPayload.UserAgent.Platform|null); + /** InteropData accountId */ + accountId?: (number|Long|null); - /** UserAgent appVersion */ - appVersion?: (proto.ClientPayload.UserAgent.IAppVersion|null); + /** InteropData integratorId */ + integratorId?: (number|null); - /** UserAgent mcc */ - mcc?: (string|null); + /** InteropData token */ + token?: (Uint8Array|null); + } - /** UserAgent mnc */ - mnc?: (string|null); + /** Represents an InteropData. */ + class InteropData implements IInteropData { - /** UserAgent osVersion */ - osVersion?: (string|null); + /** + * Constructs a new InteropData. + * @param [properties] Properties to set + */ + constructor(properties?: proto.ClientPayload.IInteropData); - /** UserAgent manufacturer */ - manufacturer?: (string|null); + /** InteropData accountId. */ + public accountId: (number|Long); - /** UserAgent device */ - device?: (string|null); + /** InteropData integratorId. */ + public integratorId: number; - /** UserAgent osBuildNumber */ - osBuildNumber?: (string|null); + /** InteropData token. */ + public token: Uint8Array; - /** UserAgent phoneId */ - phoneId?: (string|null); + /** + * Creates a new InteropData instance using the specified properties. + * @param [properties] Properties to set + * @returns InteropData instance + */ + public static create(properties?: proto.ClientPayload.IInteropData): proto.ClientPayload.InteropData; - /** UserAgent releaseChannel */ - releaseChannel?: (proto.ClientPayload.UserAgent.ReleaseChannel|null); + /** + * Encodes the specified InteropData message. Does not implicitly {@link proto.ClientPayload.InteropData.verify|verify} messages. + * @param message InteropData message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.ClientPayload.IInteropData, writer?: $protobuf.Writer): $protobuf.Writer; - /** UserAgent localeLanguageIso6391 */ - localeLanguageIso6391?: (string|null); + /** + * Encodes the specified InteropData message, length delimited. Does not implicitly {@link proto.ClientPayload.InteropData.verify|verify} messages. + * @param message InteropData message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.ClientPayload.IInteropData, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an InteropData message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns InteropData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.ClientPayload.InteropData; + + /** + * Decodes an InteropData message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns InteropData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.ClientPayload.InteropData; + + /** + * Verifies an InteropData message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an InteropData message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns InteropData + */ + public static fromObject(object: { [k: string]: any }): proto.ClientPayload.InteropData; + + /** + * Creates a plain object from an InteropData message. Also converts values to other types if specified. + * @param message InteropData + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.ClientPayload.InteropData, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this InteropData to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Product enum. */ + enum Product { + WHATSAPP = 0, + MESSENGER = 1, + INTEROP = 2 + } + + /** Properties of a UserAgent. */ + interface IUserAgent { + + /** UserAgent platform */ + platform?: (proto.ClientPayload.UserAgent.Platform|null); + + /** UserAgent appVersion */ + appVersion?: (proto.ClientPayload.UserAgent.IAppVersion|null); + + /** UserAgent mcc */ + mcc?: (string|null); + + /** UserAgent mnc */ + mnc?: (string|null); + + /** UserAgent osVersion */ + osVersion?: (string|null); + + /** UserAgent manufacturer */ + manufacturer?: (string|null); + + /** UserAgent device */ + device?: (string|null); + + /** UserAgent osBuildNumber */ + osBuildNumber?: (string|null); + + /** UserAgent phoneId */ + phoneId?: (string|null); + + /** UserAgent releaseChannel */ + releaseChannel?: (proto.ClientPayload.UserAgent.ReleaseChannel|null); + + /** UserAgent localeLanguageIso6391 */ + localeLanguageIso6391?: (string|null); /** UserAgent localeCountryIso31661Alpha2 */ localeCountryIso31661Alpha2?: (string|null); /** UserAgent deviceBoard */ deviceBoard?: (string|null); + + /** UserAgent deviceExpId */ + deviceExpId?: (string|null); } /** Represents a UserAgent. */ @@ -2334,6 +2738,9 @@ export namespace proto { /** UserAgent deviceBoard. */ public deviceBoard: string; + /** UserAgent deviceExpId. */ + public deviceExpId: string; + /** * Creates a new UserAgent instance using the specified properties. * @param [properties] Properties to set @@ -2554,7 +2961,9 @@ export namespace proto { CAPI = 28, WEAROS = 29, ARDEVICE = 30, - VRDEVICE = 31 + VRDEVICE = 31, + BLUE_WEB = 32, + IPAD = 33 } /** ReleaseChannel enum. */ @@ -2914,6 +3323,15 @@ export namespace proto { /** ContextInfo trustBannerAction */ trustBannerAction?: (number|null); + + /** ContextInfo isSampled */ + isSampled?: (boolean|null); + + /** ContextInfo groupMentions */ + groupMentions?: (proto.IGroupMention[]|null); + + /** ContextInfo utm */ + utm?: (proto.ContextInfo.IUTMInfo|null); } /** Represents a ContextInfo. */ @@ -3000,6 +3418,15 @@ export namespace proto { /** ContextInfo trustBannerAction. */ public trustBannerAction: number; + /** ContextInfo isSampled. */ + public isSampled: boolean; + + /** ContextInfo groupMentions. */ + public groupMentions: proto.IGroupMention[]; + + /** ContextInfo utm. */ + public utm?: (proto.ContextInfo.IUTMInfo|null); + /** * Creates a new ContextInfo instance using the specified properties. * @param [properties] Properties to set @@ -3232,6 +3659,9 @@ export namespace proto { /** ExternalAdReplyInfo ctwaClid */ ctwaClid?: (string|null); + + /** ExternalAdReplyInfo ref */ + ref?: (string|null); } /** Represents an ExternalAdReplyInfo. */ @@ -3282,6 +3712,9 @@ export namespace proto { /** ExternalAdReplyInfo ctwaClid. */ public ctwaClid: string; + /** ExternalAdReplyInfo ref. */ + public ref: string; + /** * Creates a new ExternalAdReplyInfo instance using the specified properties. * @param [properties] Properties to set @@ -3362,6 +3795,102 @@ export namespace proto { VIDEO = 2 } } + + /** Properties of a UTMInfo. */ + interface IUTMInfo { + + /** UTMInfo utmSource */ + utmSource?: (string|null); + + /** UTMInfo utmCampaign */ + utmCampaign?: (string|null); + } + + /** Represents a UTMInfo. */ + class UTMInfo implements IUTMInfo { + + /** + * Constructs a new UTMInfo. + * @param [properties] Properties to set + */ + constructor(properties?: proto.ContextInfo.IUTMInfo); + + /** UTMInfo utmSource. */ + public utmSource: string; + + /** UTMInfo utmCampaign. */ + public utmCampaign: string; + + /** + * Creates a new UTMInfo instance using the specified properties. + * @param [properties] Properties to set + * @returns UTMInfo instance + */ + public static create(properties?: proto.ContextInfo.IUTMInfo): proto.ContextInfo.UTMInfo; + + /** + * Encodes the specified UTMInfo message. Does not implicitly {@link proto.ContextInfo.UTMInfo.verify|verify} messages. + * @param message UTMInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.ContextInfo.IUTMInfo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified UTMInfo message, length delimited. Does not implicitly {@link proto.ContextInfo.UTMInfo.verify|verify} messages. + * @param message UTMInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.ContextInfo.IUTMInfo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a UTMInfo message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns UTMInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.ContextInfo.UTMInfo; + + /** + * Decodes a UTMInfo message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns UTMInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.ContextInfo.UTMInfo; + + /** + * Verifies a UTMInfo message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a UTMInfo message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns UTMInfo + */ + public static fromObject(object: { [k: string]: any }): proto.ContextInfo.UTMInfo; + + /** + * Creates a plain object from a UTMInfo message. Also converts values to other types if specified. + * @param message UTMInfo + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.ContextInfo.UTMInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this UTMInfo to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } } /** Properties of a Conversation. */ @@ -3472,12 +4001,12 @@ export namespace proto { /** Conversation isParentGroup */ isParentGroup?: (boolean|null); - /** Conversation isDefaultSubgroup */ - isDefaultSubgroup?: (boolean|null); - /** Conversation parentGroupId */ parentGroupId?: (string|null); + /** Conversation isDefaultSubgroup */ + isDefaultSubgroup?: (boolean|null); + /** Conversation displayName */ displayName?: (string|null); @@ -3608,12 +4137,12 @@ export namespace proto { /** Conversation isParentGroup. */ public isParentGroup: boolean; - /** Conversation isDefaultSubgroup. */ - public isDefaultSubgroup: boolean; - /** Conversation parentGroupId. */ public parentGroupId: string; + /** Conversation isDefaultSubgroup. */ + public isDefaultSubgroup: boolean; + /** Conversation displayName. */ public displayName: string; @@ -3705,10 +4234,107 @@ export namespace proto { /** EndOfHistoryTransferType enum. */ enum EndOfHistoryTransferType { COMPLETE_BUT_MORE_MESSAGES_REMAIN_ON_PRIMARY = 0, - COMPLETE_AND_NO_MORE_MESSAGE_REMAIN_ON_PRIMARY = 1 + COMPLETE_AND_NO_MORE_MESSAGE_REMAIN_ON_PRIMARY = 1, + COMPLETE_ON_DEMAND_SYNC_BUT_MORE_MSG_REMAIN_ON_PRIMARY = 2 } } + /** Properties of a DeviceConsistencyCodeMessage. */ + interface IDeviceConsistencyCodeMessage { + + /** DeviceConsistencyCodeMessage generation */ + generation?: (number|null); + + /** DeviceConsistencyCodeMessage signature */ + signature?: (Uint8Array|null); + } + + /** Represents a DeviceConsistencyCodeMessage. */ + class DeviceConsistencyCodeMessage implements IDeviceConsistencyCodeMessage { + + /** + * Constructs a new DeviceConsistencyCodeMessage. + * @param [properties] Properties to set + */ + constructor(properties?: proto.IDeviceConsistencyCodeMessage); + + /** DeviceConsistencyCodeMessage generation. */ + public generation: number; + + /** DeviceConsistencyCodeMessage signature. */ + public signature: Uint8Array; + + /** + * Creates a new DeviceConsistencyCodeMessage instance using the specified properties. + * @param [properties] Properties to set + * @returns DeviceConsistencyCodeMessage instance + */ + public static create(properties?: proto.IDeviceConsistencyCodeMessage): proto.DeviceConsistencyCodeMessage; + + /** + * Encodes the specified DeviceConsistencyCodeMessage message. Does not implicitly {@link proto.DeviceConsistencyCodeMessage.verify|verify} messages. + * @param message DeviceConsistencyCodeMessage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.IDeviceConsistencyCodeMessage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DeviceConsistencyCodeMessage message, length delimited. Does not implicitly {@link proto.DeviceConsistencyCodeMessage.verify|verify} messages. + * @param message DeviceConsistencyCodeMessage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.IDeviceConsistencyCodeMessage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DeviceConsistencyCodeMessage message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns DeviceConsistencyCodeMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.DeviceConsistencyCodeMessage; + + /** + * Decodes a DeviceConsistencyCodeMessage message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns DeviceConsistencyCodeMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.DeviceConsistencyCodeMessage; + + /** + * Verifies a DeviceConsistencyCodeMessage message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a DeviceConsistencyCodeMessage message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns DeviceConsistencyCodeMessage + */ + public static fromObject(object: { [k: string]: any }): proto.DeviceConsistencyCodeMessage; + + /** + * Creates a plain object from a DeviceConsistencyCodeMessage message. Also converts values to other types if specified. + * @param message DeviceConsistencyCodeMessage + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.DeviceConsistencyCodeMessage, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this DeviceConsistencyCodeMessage to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + /** Properties of a DeviceListMetadata. */ interface IDeviceListMetadata { @@ -4070,6 +4696,12 @@ export namespace proto { /** HistorySyncConfig storageQuotaMb */ storageQuotaMb?: (number|null); + + /** HistorySyncConfig inlineInitialPayloadInE2EeMsg */ + inlineInitialPayloadInE2EeMsg?: (boolean|null); + + /** HistorySyncConfig recentSyncDaysLimit */ + recentSyncDaysLimit?: (number|null); } /** Represents a HistorySyncConfig. */ @@ -4090,6 +4722,12 @@ export namespace proto { /** HistorySyncConfig storageQuotaMb. */ public storageQuotaMb: number; + /** HistorySyncConfig inlineInitialPayloadInE2EeMsg. */ + public inlineInitialPayloadInE2EeMsg: boolean; + + /** HistorySyncConfig recentSyncDaysLimit. */ + public recentSyncDaysLimit: number; + /** * Creates a new HistorySyncConfig instance using the specified properties. * @param [properties] Properties to set @@ -4176,7 +4814,14 @@ export namespace proto { OHANA = 10, ALOHA = 11, CATALINA = 12, - TCL_TV = 13 + TCL_TV = 13, + IOS_PHONE = 14, + IOS_CATALYST = 15, + ANDROID_PHONE = 16, + ANDROID_AMBIGUOUS = 17, + WEAR_OS = 18, + AR_WRIST = 19, + AR_DEVICE = 20 } } @@ -4627,6 +5272,27 @@ export namespace proto { /** GlobalSettings avatarUserSettings */ avatarUserSettings?: (proto.IAvatarUserSettings|null); + + /** GlobalSettings fontSize */ + fontSize?: (number|null); + + /** GlobalSettings securityNotifications */ + securityNotifications?: (boolean|null); + + /** GlobalSettings autoUnarchiveChats */ + autoUnarchiveChats?: (boolean|null); + + /** GlobalSettings videoQualityMode */ + videoQualityMode?: (number|null); + + /** GlobalSettings photoQualityMode */ + photoQualityMode?: (number|null); + + /** GlobalSettings individualNotificationSettings */ + individualNotificationSettings?: (proto.INotificationSettings|null); + + /** GlobalSettings groupNotificationSettings */ + groupNotificationSettings?: (proto.INotificationSettings|null); } /** Represents a GlobalSettings. */ @@ -4671,6 +5337,27 @@ export namespace proto { /** GlobalSettings avatarUserSettings. */ public avatarUserSettings?: (proto.IAvatarUserSettings|null); + /** GlobalSettings fontSize. */ + public fontSize: number; + + /** GlobalSettings securityNotifications. */ + public securityNotifications: boolean; + + /** GlobalSettings autoUnarchiveChats. */ + public autoUnarchiveChats: boolean; + + /** GlobalSettings videoQualityMode. */ + public videoQualityMode: number; + + /** GlobalSettings photoQualityMode. */ + public photoQualityMode: number; + + /** GlobalSettings individualNotificationSettings. */ + public individualNotificationSettings?: (proto.INotificationSettings|null); + + /** GlobalSettings groupNotificationSettings. */ + public groupNotificationSettings?: (proto.INotificationSettings|null); + /** * Creates a new GlobalSettings instance using the specified properties. * @param [properties] Properties to set @@ -4742,30 +5429,126 @@ export namespace proto { public toJSON(): { [k: string]: any }; } - /** Properties of a GroupParticipant. */ - interface IGroupParticipant { + /** Properties of a GroupMention. */ + interface IGroupMention { - /** GroupParticipant userJid */ - userJid: string; + /** GroupMention groupJid */ + groupJid?: (string|null); - /** GroupParticipant rank */ - rank?: (proto.GroupParticipant.Rank|null); + /** GroupMention groupSubject */ + groupSubject?: (string|null); } - /** Represents a GroupParticipant. */ - class GroupParticipant implements IGroupParticipant { + /** Represents a GroupMention. */ + class GroupMention implements IGroupMention { /** - * Constructs a new GroupParticipant. + * Constructs a new GroupMention. * @param [properties] Properties to set */ - constructor(properties?: proto.IGroupParticipant); + constructor(properties?: proto.IGroupMention); - /** GroupParticipant userJid. */ - public userJid: string; + /** GroupMention groupJid. */ + public groupJid: string; - /** GroupParticipant rank. */ - public rank: proto.GroupParticipant.Rank; + /** GroupMention groupSubject. */ + public groupSubject: string; + + /** + * Creates a new GroupMention instance using the specified properties. + * @param [properties] Properties to set + * @returns GroupMention instance + */ + public static create(properties?: proto.IGroupMention): proto.GroupMention; + + /** + * Encodes the specified GroupMention message. Does not implicitly {@link proto.GroupMention.verify|verify} messages. + * @param message GroupMention message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.IGroupMention, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GroupMention message, length delimited. Does not implicitly {@link proto.GroupMention.verify|verify} messages. + * @param message GroupMention message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.IGroupMention, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GroupMention message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GroupMention + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.GroupMention; + + /** + * Decodes a GroupMention message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GroupMention + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.GroupMention; + + /** + * Verifies a GroupMention message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a GroupMention message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GroupMention + */ + public static fromObject(object: { [k: string]: any }): proto.GroupMention; + + /** + * Creates a plain object from a GroupMention message. Also converts values to other types if specified. + * @param message GroupMention + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.GroupMention, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this GroupMention to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a GroupParticipant. */ + interface IGroupParticipant { + + /** GroupParticipant userJid */ + userJid: string; + + /** GroupParticipant rank */ + rank?: (proto.GroupParticipant.Rank|null); + } + + /** Represents a GroupParticipant. */ + class GroupParticipant implements IGroupParticipant { + + /** + * Constructs a new GroupParticipant. + * @param [properties] Properties to set + */ + constructor(properties?: proto.IGroupParticipant); + + /** GroupParticipant userJid. */ + public userJid: string; + + /** GroupParticipant rank. */ + public rank: proto.GroupParticipant.Rank; /** * Creates a new GroupParticipant instance using the specified properties. @@ -5412,7 +6195,8 @@ export namespace proto { FULL = 2, RECENT = 3, PUSH_NAME = 4, - NON_BLOCKING_DATA = 5 + NON_BLOCKING_DATA = 5, + ON_DEMAND = 6 } } @@ -6236,6 +7020,120 @@ export namespace proto { UNDO_KEEP_FOR_ALL = 2 } + /** Properties of a KeyExchangeMessage. */ + interface IKeyExchangeMessage { + + /** KeyExchangeMessage id */ + id?: (number|null); + + /** KeyExchangeMessage baseKey */ + baseKey?: (Uint8Array|null); + + /** KeyExchangeMessage ratchetKey */ + ratchetKey?: (Uint8Array|null); + + /** KeyExchangeMessage identityKey */ + identityKey?: (Uint8Array|null); + + /** KeyExchangeMessage baseKeySignature */ + baseKeySignature?: (Uint8Array|null); + } + + /** Represents a KeyExchangeMessage. */ + class KeyExchangeMessage implements IKeyExchangeMessage { + + /** + * Constructs a new KeyExchangeMessage. + * @param [properties] Properties to set + */ + constructor(properties?: proto.IKeyExchangeMessage); + + /** KeyExchangeMessage id. */ + public id: number; + + /** KeyExchangeMessage baseKey. */ + public baseKey: Uint8Array; + + /** KeyExchangeMessage ratchetKey. */ + public ratchetKey: Uint8Array; + + /** KeyExchangeMessage identityKey. */ + public identityKey: Uint8Array; + + /** KeyExchangeMessage baseKeySignature. */ + public baseKeySignature: Uint8Array; + + /** + * Creates a new KeyExchangeMessage instance using the specified properties. + * @param [properties] Properties to set + * @returns KeyExchangeMessage instance + */ + public static create(properties?: proto.IKeyExchangeMessage): proto.KeyExchangeMessage; + + /** + * Encodes the specified KeyExchangeMessage message. Does not implicitly {@link proto.KeyExchangeMessage.verify|verify} messages. + * @param message KeyExchangeMessage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.IKeyExchangeMessage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified KeyExchangeMessage message, length delimited. Does not implicitly {@link proto.KeyExchangeMessage.verify|verify} messages. + * @param message KeyExchangeMessage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.IKeyExchangeMessage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a KeyExchangeMessage message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns KeyExchangeMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.KeyExchangeMessage; + + /** + * Decodes a KeyExchangeMessage message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns KeyExchangeMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.KeyExchangeMessage; + + /** + * Verifies a KeyExchangeMessage message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a KeyExchangeMessage message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns KeyExchangeMessage + */ + public static fromObject(object: { [k: string]: any }): proto.KeyExchangeMessage; + + /** + * Creates a plain object from a KeyExchangeMessage message. Also converts values to other types if specified. + * @param message KeyExchangeMessage + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.KeyExchangeMessage, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this KeyExchangeMessage to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + /** Properties of a KeyId. */ interface IKeyId { @@ -6889,6 +7787,27 @@ export namespace proto { /** Message viewOnceMessageV2Extension */ viewOnceMessageV2Extension?: (proto.Message.IFutureProofMessage|null); + + /** Message pollCreationMessageV2 */ + pollCreationMessageV2?: (proto.Message.IPollCreationMessage|null); + + /** Message scheduledCallCreationMessage */ + scheduledCallCreationMessage?: (proto.Message.IScheduledCallCreationMessage|null); + + /** Message groupMentionedMessage */ + groupMentionedMessage?: (proto.Message.IFutureProofMessage|null); + + /** Message pinInChatMessage */ + pinInChatMessage?: (proto.Message.IPinInChatMessage|null); + + /** Message pollCreationMessageV3 */ + pollCreationMessageV3?: (proto.Message.IPollCreationMessage|null); + + /** Message scheduledCallEditMessage */ + scheduledCallEditMessage?: (proto.Message.IScheduledCallEditMessage|null); + + /** Message ptvMessage */ + ptvMessage?: (proto.Message.IVideoMessage|null); } /** Represents a Message. */ @@ -7047,6 +7966,27 @@ export namespace proto { /** Message viewOnceMessageV2Extension. */ public viewOnceMessageV2Extension?: (proto.Message.IFutureProofMessage|null); + /** Message pollCreationMessageV2. */ + public pollCreationMessageV2?: (proto.Message.IPollCreationMessage|null); + + /** Message scheduledCallCreationMessage. */ + public scheduledCallCreationMessage?: (proto.Message.IScheduledCallCreationMessage|null); + + /** Message groupMentionedMessage. */ + public groupMentionedMessage?: (proto.Message.IFutureProofMessage|null); + + /** Message pinInChatMessage. */ + public pinInChatMessage?: (proto.Message.IPinInChatMessage|null); + + /** Message pollCreationMessageV3. */ + public pollCreationMessageV3?: (proto.Message.IPollCreationMessage|null); + + /** Message scheduledCallEditMessage. */ + public scheduledCallEditMessage?: (proto.Message.IScheduledCallEditMessage|null); + + /** Message ptvMessage. */ + public ptvMessage?: (proto.Message.IVideoMessage|null); + /** * Creates a new Message instance using the specified properties. * @param [properties] Properties to set @@ -7830,6 +8770,9 @@ export namespace proto { /** AudioMessage backgroundArgb */ backgroundArgb?: (number|null); + + /** AudioMessage viewOnce */ + viewOnce?: (boolean|null); } /** Represents an AudioMessage. */ @@ -7883,6 +8826,9 @@ export namespace proto { /** AudioMessage backgroundArgb. */ public backgroundArgb: number; + /** AudioMessage viewOnce. */ + public viewOnce: boolean; + /** * Creates a new AudioMessage instance using the specified properties. * @param [properties] Properties to set @@ -9772,7 +10718,12 @@ export namespace proto { NORICAN_REGULAR = 2, BRYNDAN_WRITE = 3, BEBASNEUE_REGULAR = 4, - OSWALD_HEAVY = 5 + OSWALD_HEAVY = 5, + SYSTEM_BOLD = 6, + MORNINGBREEZE_REGULAR = 7, + CALISTOGA_REGULAR = 8, + EXO2_EXTRABOLD = 9, + COURIERPRIME_BOLD = 10 } /** InviteLinkGroupType enum. */ @@ -10736,6 +11687,12 @@ export namespace proto { /** HistorySyncNotification oldestMsgInChunkTimestampSec */ oldestMsgInChunkTimestampSec?: (number|Long|null); + + /** HistorySyncNotification initialHistBootstrapInlinePayload */ + initialHistBootstrapInlinePayload?: (Uint8Array|null); + + /** HistorySyncNotification peerDataRequestSessionId */ + peerDataRequestSessionId?: (string|null); } /** Represents a HistorySyncNotification. */ @@ -10777,6 +11734,12 @@ export namespace proto { /** HistorySyncNotification oldestMsgInChunkTimestampSec. */ public oldestMsgInChunkTimestampSec: (number|Long); + /** HistorySyncNotification initialHistBootstrapInlinePayload. */ + public initialHistBootstrapInlinePayload: Uint8Array; + + /** HistorySyncNotification peerDataRequestSessionId. */ + public peerDataRequestSessionId: string; + /** * Creates a new HistorySyncNotification instance using the specified properties. * @param [properties] Properties to set @@ -10857,7 +11820,8 @@ export namespace proto { FULL = 2, RECENT = 3, PUSH_NAME = 4, - NON_BLOCKING_DATA = 5 + NON_BLOCKING_DATA = 5, + ON_DEMAND = 6 } } @@ -11627,6 +12591,9 @@ export namespace proto { /** Header videoMessage */ videoMessage?: (proto.Message.IVideoMessage|null); + + /** Header locationMessage */ + locationMessage?: (proto.Message.ILocationMessage|null); } /** Represents a Header. */ @@ -11659,8 +12626,11 @@ export namespace proto { /** Header videoMessage. */ public videoMessage?: (proto.Message.IVideoMessage|null); + /** Header locationMessage. */ + public locationMessage?: (proto.Message.ILocationMessage|null); + /** Header media. */ - public media?: ("documentMessage"|"imageMessage"|"jpegThumbnail"|"videoMessage"); + public media?: ("documentMessage"|"imageMessage"|"jpegThumbnail"|"videoMessage"|"locationMessage"); /** * Creates a new Header instance using the specified properties. @@ -12160,6 +13130,9 @@ export namespace proto { /** Body text */ text?: (string|null); + + /** Body format */ + format?: (proto.Message.InteractiveResponseMessage.Body.Format|null); } /** Represents a Body. */ @@ -12174,6 +13147,9 @@ export namespace proto { /** Body text. */ public text: string; + /** Body format. */ + public format: proto.Message.InteractiveResponseMessage.Body.Format; + /** * Creates a new Body instance using the specified properties. * @param [properties] Properties to set @@ -12245,6 +13221,15 @@ export namespace proto { public toJSON(): { [k: string]: any }; } + namespace Body { + + /** Format enum. */ + enum Format { + DEFAULT = 0, + EXTENSIONS_1 = 1 + } + } + /** Properties of a NativeFlowResponseMessage. */ interface INativeFlowResponseMessage { @@ -14127,6 +15112,12 @@ export namespace proto { /** PeerDataOperationRequestMessage requestUrlPreview */ requestUrlPreview?: (proto.Message.PeerDataOperationRequestMessage.IRequestUrlPreview[]|null); + + /** PeerDataOperationRequestMessage historySyncOnDemandRequest */ + historySyncOnDemandRequest?: (proto.Message.PeerDataOperationRequestMessage.IHistorySyncOnDemandRequest|null); + + /** PeerDataOperationRequestMessage placeholderMessageResendRequest */ + placeholderMessageResendRequest?: (proto.Message.PeerDataOperationRequestMessage.IPlaceholderMessageResendRequest[]|null); } /** Represents a PeerDataOperationRequestMessage. */ @@ -14147,6 +15138,12 @@ export namespace proto { /** PeerDataOperationRequestMessage requestUrlPreview. */ public requestUrlPreview: proto.Message.PeerDataOperationRequestMessage.IRequestUrlPreview[]; + /** PeerDataOperationRequestMessage historySyncOnDemandRequest. */ + public historySyncOnDemandRequest?: (proto.Message.PeerDataOperationRequestMessage.IHistorySyncOnDemandRequest|null); + + /** PeerDataOperationRequestMessage placeholderMessageResendRequest. */ + public placeholderMessageResendRequest: proto.Message.PeerDataOperationRequestMessage.IPlaceholderMessageResendRequest[]; + /** * Creates a new PeerDataOperationRequestMessage instance using the specified properties. * @param [properties] Properties to set @@ -14220,189 +15217,399 @@ export namespace proto { namespace PeerDataOperationRequestMessage { - /** Properties of a RequestStickerReupload. */ - interface IRequestStickerReupload { + /** Properties of a HistorySyncOnDemandRequest. */ + interface IHistorySyncOnDemandRequest { - /** RequestStickerReupload fileSha256 */ - fileSha256?: (string|null); + /** HistorySyncOnDemandRequest chatJid */ + chatJid?: (string|null); + + /** HistorySyncOnDemandRequest oldestMsgId */ + oldestMsgId?: (string|null); + + /** HistorySyncOnDemandRequest oldestMsgFromMe */ + oldestMsgFromMe?: (boolean|null); + + /** HistorySyncOnDemandRequest onDemandMsgCount */ + onDemandMsgCount?: (number|null); + + /** HistorySyncOnDemandRequest oldestMsgTimestampMs */ + oldestMsgTimestampMs?: (number|Long|null); } - /** Represents a RequestStickerReupload. */ - class RequestStickerReupload implements IRequestStickerReupload { + /** Represents a HistorySyncOnDemandRequest. */ + class HistorySyncOnDemandRequest implements IHistorySyncOnDemandRequest { /** - * Constructs a new RequestStickerReupload. + * Constructs a new HistorySyncOnDemandRequest. * @param [properties] Properties to set */ - constructor(properties?: proto.Message.PeerDataOperationRequestMessage.IRequestStickerReupload); + constructor(properties?: proto.Message.PeerDataOperationRequestMessage.IHistorySyncOnDemandRequest); - /** RequestStickerReupload fileSha256. */ - public fileSha256: string; + /** HistorySyncOnDemandRequest chatJid. */ + public chatJid: string; + + /** HistorySyncOnDemandRequest oldestMsgId. */ + public oldestMsgId: string; + + /** HistorySyncOnDemandRequest oldestMsgFromMe. */ + public oldestMsgFromMe: boolean; + + /** HistorySyncOnDemandRequest onDemandMsgCount. */ + public onDemandMsgCount: number; + + /** HistorySyncOnDemandRequest oldestMsgTimestampMs. */ + public oldestMsgTimestampMs: (number|Long); /** - * Creates a new RequestStickerReupload instance using the specified properties. + * Creates a new HistorySyncOnDemandRequest instance using the specified properties. * @param [properties] Properties to set - * @returns RequestStickerReupload instance + * @returns HistorySyncOnDemandRequest instance */ - public static create(properties?: proto.Message.PeerDataOperationRequestMessage.IRequestStickerReupload): proto.Message.PeerDataOperationRequestMessage.RequestStickerReupload; + public static create(properties?: proto.Message.PeerDataOperationRequestMessage.IHistorySyncOnDemandRequest): proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest; /** - * Encodes the specified RequestStickerReupload message. Does not implicitly {@link proto.Message.PeerDataOperationRequestMessage.RequestStickerReupload.verify|verify} messages. - * @param message RequestStickerReupload message or plain object to encode + * Encodes the specified HistorySyncOnDemandRequest message. Does not implicitly {@link proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest.verify|verify} messages. + * @param message HistorySyncOnDemandRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: proto.Message.PeerDataOperationRequestMessage.IRequestStickerReupload, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: proto.Message.PeerDataOperationRequestMessage.IHistorySyncOnDemandRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified RequestStickerReupload message, length delimited. Does not implicitly {@link proto.Message.PeerDataOperationRequestMessage.RequestStickerReupload.verify|verify} messages. - * @param message RequestStickerReupload message or plain object to encode + * Encodes the specified HistorySyncOnDemandRequest message, length delimited. Does not implicitly {@link proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest.verify|verify} messages. + * @param message HistorySyncOnDemandRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: proto.Message.PeerDataOperationRequestMessage.IRequestStickerReupload, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: proto.Message.PeerDataOperationRequestMessage.IHistorySyncOnDemandRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a RequestStickerReupload message from the specified reader or buffer. + * Decodes a HistorySyncOnDemandRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns RequestStickerReupload + * @returns HistorySyncOnDemandRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PeerDataOperationRequestMessage.RequestStickerReupload; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest; /** - * Decodes a RequestStickerReupload message from the specified reader or buffer, length delimited. + * Decodes a HistorySyncOnDemandRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns RequestStickerReupload + * @returns HistorySyncOnDemandRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PeerDataOperationRequestMessage.RequestStickerReupload; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest; /** - * Verifies a RequestStickerReupload message. + * Verifies a HistorySyncOnDemandRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a RequestStickerReupload message from a plain object. Also converts values to their respective internal types. + * Creates a HistorySyncOnDemandRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns RequestStickerReupload + * @returns HistorySyncOnDemandRequest */ - public static fromObject(object: { [k: string]: any }): proto.Message.PeerDataOperationRequestMessage.RequestStickerReupload; + public static fromObject(object: { [k: string]: any }): proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest; /** - * Creates a plain object from a RequestStickerReupload message. Also converts values to other types if specified. - * @param message RequestStickerReupload + * Creates a plain object from a HistorySyncOnDemandRequest message. Also converts values to other types if specified. + * @param message HistorySyncOnDemandRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: proto.Message.PeerDataOperationRequestMessage.RequestStickerReupload, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this RequestStickerReupload to JSON. + * Converts this HistorySyncOnDemandRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a RequestUrlPreview. */ - interface IRequestUrlPreview { + /** Properties of a PlaceholderMessageResendRequest. */ + interface IPlaceholderMessageResendRequest { - /** RequestUrlPreview url */ - url?: (string|null); + /** PlaceholderMessageResendRequest messageKey */ + messageKey?: (proto.IMessageKey|null); } - /** Represents a RequestUrlPreview. */ - class RequestUrlPreview implements IRequestUrlPreview { + /** Represents a PlaceholderMessageResendRequest. */ + class PlaceholderMessageResendRequest implements IPlaceholderMessageResendRequest { /** - * Constructs a new RequestUrlPreview. + * Constructs a new PlaceholderMessageResendRequest. * @param [properties] Properties to set */ - constructor(properties?: proto.Message.PeerDataOperationRequestMessage.IRequestUrlPreview); + constructor(properties?: proto.Message.PeerDataOperationRequestMessage.IPlaceholderMessageResendRequest); - /** RequestUrlPreview url. */ - public url: string; + /** PlaceholderMessageResendRequest messageKey. */ + public messageKey?: (proto.IMessageKey|null); /** - * Creates a new RequestUrlPreview instance using the specified properties. + * Creates a new PlaceholderMessageResendRequest instance using the specified properties. * @param [properties] Properties to set - * @returns RequestUrlPreview instance + * @returns PlaceholderMessageResendRequest instance */ - public static create(properties?: proto.Message.PeerDataOperationRequestMessage.IRequestUrlPreview): proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview; + public static create(properties?: proto.Message.PeerDataOperationRequestMessage.IPlaceholderMessageResendRequest): proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest; /** - * Encodes the specified RequestUrlPreview message. Does not implicitly {@link proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview.verify|verify} messages. - * @param message RequestUrlPreview message or plain object to encode + * Encodes the specified PlaceholderMessageResendRequest message. Does not implicitly {@link proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest.verify|verify} messages. + * @param message PlaceholderMessageResendRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: proto.Message.PeerDataOperationRequestMessage.IRequestUrlPreview, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: proto.Message.PeerDataOperationRequestMessage.IPlaceholderMessageResendRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified RequestUrlPreview message, length delimited. Does not implicitly {@link proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview.verify|verify} messages. - * @param message RequestUrlPreview message or plain object to encode + * Encodes the specified PlaceholderMessageResendRequest message, length delimited. Does not implicitly {@link proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest.verify|verify} messages. + * @param message PlaceholderMessageResendRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: proto.Message.PeerDataOperationRequestMessage.IRequestUrlPreview, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: proto.Message.PeerDataOperationRequestMessage.IPlaceholderMessageResendRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a RequestUrlPreview message from the specified reader or buffer. + * Decodes a PlaceholderMessageResendRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns RequestUrlPreview + * @returns PlaceholderMessageResendRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest; /** - * Decodes a RequestUrlPreview message from the specified reader or buffer, length delimited. + * Decodes a PlaceholderMessageResendRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns RequestUrlPreview + * @returns PlaceholderMessageResendRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest; /** - * Verifies a RequestUrlPreview message. + * Verifies a PlaceholderMessageResendRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a RequestUrlPreview message from a plain object. Also converts values to their respective internal types. + * Creates a PlaceholderMessageResendRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns RequestUrlPreview + * @returns PlaceholderMessageResendRequest */ - public static fromObject(object: { [k: string]: any }): proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview; + public static fromObject(object: { [k: string]: any }): proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest; /** - * Creates a plain object from a RequestUrlPreview message. Also converts values to other types if specified. - * @param message RequestUrlPreview + * Creates a plain object from a PlaceholderMessageResendRequest message. Also converts values to other types if specified. + * @param message PlaceholderMessageResendRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this RequestUrlPreview to JSON. + * Converts this PlaceholderMessageResendRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - } - /** Properties of a PeerDataOperationRequestResponseMessage. */ - interface IPeerDataOperationRequestResponseMessage { + /** Properties of a RequestStickerReupload. */ + interface IRequestStickerReupload { + + /** RequestStickerReupload fileSha256 */ + fileSha256?: (string|null); + } + + /** Represents a RequestStickerReupload. */ + class RequestStickerReupload implements IRequestStickerReupload { + + /** + * Constructs a new RequestStickerReupload. + * @param [properties] Properties to set + */ + constructor(properties?: proto.Message.PeerDataOperationRequestMessage.IRequestStickerReupload); + + /** RequestStickerReupload fileSha256. */ + public fileSha256: string; + + /** + * Creates a new RequestStickerReupload instance using the specified properties. + * @param [properties] Properties to set + * @returns RequestStickerReupload instance + */ + public static create(properties?: proto.Message.PeerDataOperationRequestMessage.IRequestStickerReupload): proto.Message.PeerDataOperationRequestMessage.RequestStickerReupload; + + /** + * Encodes the specified RequestStickerReupload message. Does not implicitly {@link proto.Message.PeerDataOperationRequestMessage.RequestStickerReupload.verify|verify} messages. + * @param message RequestStickerReupload message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.Message.PeerDataOperationRequestMessage.IRequestStickerReupload, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RequestStickerReupload message, length delimited. Does not implicitly {@link proto.Message.PeerDataOperationRequestMessage.RequestStickerReupload.verify|verify} messages. + * @param message RequestStickerReupload message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.Message.PeerDataOperationRequestMessage.IRequestStickerReupload, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RequestStickerReupload message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RequestStickerReupload + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PeerDataOperationRequestMessage.RequestStickerReupload; + + /** + * Decodes a RequestStickerReupload message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RequestStickerReupload + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PeerDataOperationRequestMessage.RequestStickerReupload; + + /** + * Verifies a RequestStickerReupload message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RequestStickerReupload message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RequestStickerReupload + */ + public static fromObject(object: { [k: string]: any }): proto.Message.PeerDataOperationRequestMessage.RequestStickerReupload; + + /** + * Creates a plain object from a RequestStickerReupload message. Also converts values to other types if specified. + * @param message RequestStickerReupload + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.Message.PeerDataOperationRequestMessage.RequestStickerReupload, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RequestStickerReupload to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a RequestUrlPreview. */ + interface IRequestUrlPreview { + + /** RequestUrlPreview url */ + url?: (string|null); + + /** RequestUrlPreview includeHqThumbnail */ + includeHqThumbnail?: (boolean|null); + } + + /** Represents a RequestUrlPreview. */ + class RequestUrlPreview implements IRequestUrlPreview { + + /** + * Constructs a new RequestUrlPreview. + * @param [properties] Properties to set + */ + constructor(properties?: proto.Message.PeerDataOperationRequestMessage.IRequestUrlPreview); + + /** RequestUrlPreview url. */ + public url: string; + + /** RequestUrlPreview includeHqThumbnail. */ + public includeHqThumbnail: boolean; + + /** + * Creates a new RequestUrlPreview instance using the specified properties. + * @param [properties] Properties to set + * @returns RequestUrlPreview instance + */ + public static create(properties?: proto.Message.PeerDataOperationRequestMessage.IRequestUrlPreview): proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview; + + /** + * Encodes the specified RequestUrlPreview message. Does not implicitly {@link proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview.verify|verify} messages. + * @param message RequestUrlPreview message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.Message.PeerDataOperationRequestMessage.IRequestUrlPreview, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RequestUrlPreview message, length delimited. Does not implicitly {@link proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview.verify|verify} messages. + * @param message RequestUrlPreview message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.Message.PeerDataOperationRequestMessage.IRequestUrlPreview, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RequestUrlPreview message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RequestUrlPreview + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview; + + /** + * Decodes a RequestUrlPreview message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RequestUrlPreview + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview; + + /** + * Verifies a RequestUrlPreview message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RequestUrlPreview message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RequestUrlPreview + */ + public static fromObject(object: { [k: string]: any }): proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview; + + /** + * Creates a plain object from a RequestUrlPreview message. Also converts values to other types if specified. + * @param message RequestUrlPreview + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RequestUrlPreview to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of a PeerDataOperationRequestResponseMessage. */ + interface IPeerDataOperationRequestResponseMessage { /** PeerDataOperationRequestResponseMessage peerDataOperationRequestType */ peerDataOperationRequestType?: (proto.Message.PeerDataOperationRequestType|null); @@ -14516,6 +15723,9 @@ export namespace proto { /** PeerDataOperationResult linkPreviewResponse */ linkPreviewResponse?: (proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.ILinkPreviewResponse|null); + + /** PeerDataOperationResult placeholderMessageResendResponse */ + placeholderMessageResendResponse?: (proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.IPlaceholderMessageResendResponse|null); } /** Represents a PeerDataOperationResult. */ @@ -14536,6 +15746,9 @@ export namespace proto { /** PeerDataOperationResult linkPreviewResponse. */ public linkPreviewResponse?: (proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.ILinkPreviewResponse|null); + /** PeerDataOperationResult placeholderMessageResendResponse. */ + public placeholderMessageResendResponse?: (proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.IPlaceholderMessageResendResponse|null); + /** * Creates a new PeerDataOperationResult instance using the specified properties. * @param [properties] Properties to set @@ -14632,6 +15845,9 @@ export namespace proto { /** LinkPreviewResponse previewType */ previewType?: (string|null); + + /** LinkPreviewResponse hqThumbnail */ + hqThumbnail?: (proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.ILinkPreviewHighQualityThumbnail|null); } /** Represents a LinkPreviewResponse. */ @@ -14664,6 +15880,9 @@ export namespace proto { /** LinkPreviewResponse previewType. */ public previewType: string; + /** LinkPreviewResponse hqThumbnail. */ + public hqThumbnail?: (proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.ILinkPreviewHighQualityThumbnail|null); + /** * Creates a new LinkPreviewResponse instance using the specified properties. * @param [properties] Properties to set @@ -14734,506 +15953,839 @@ export namespace proto { */ public toJSON(): { [k: string]: any }; } - } - } - /** PeerDataOperationRequestType enum. */ - enum PeerDataOperationRequestType { - UPLOAD_STICKER = 0, - SEND_RECENT_STICKER_BOOTSTRAP = 1, - GENERATE_LINK_PREVIEW = 2 - } + namespace LinkPreviewResponse { - /** Properties of a PollCreationMessage. */ - interface IPollCreationMessage { + /** Properties of a LinkPreviewHighQualityThumbnail. */ + interface ILinkPreviewHighQualityThumbnail { - /** PollCreationMessage encKey */ - encKey?: (Uint8Array|null); + /** LinkPreviewHighQualityThumbnail directPath */ + directPath?: (string|null); - /** PollCreationMessage name */ - name?: (string|null); + /** LinkPreviewHighQualityThumbnail thumbHash */ + thumbHash?: (string|null); - /** PollCreationMessage options */ - options?: (proto.Message.PollCreationMessage.IOption[]|null); + /** LinkPreviewHighQualityThumbnail encThumbHash */ + encThumbHash?: (string|null); - /** PollCreationMessage selectableOptionsCount */ - selectableOptionsCount?: (number|null); + /** LinkPreviewHighQualityThumbnail mediaKey */ + mediaKey?: (Uint8Array|null); - /** PollCreationMessage contextInfo */ - contextInfo?: (proto.IContextInfo|null); - } + /** LinkPreviewHighQualityThumbnail mediaKeyTimestampMs */ + mediaKeyTimestampMs?: (number|Long|null); - /** Represents a PollCreationMessage. */ - class PollCreationMessage implements IPollCreationMessage { + /** LinkPreviewHighQualityThumbnail thumbWidth */ + thumbWidth?: (number|null); - /** - * Constructs a new PollCreationMessage. - * @param [properties] Properties to set - */ - constructor(properties?: proto.Message.IPollCreationMessage); + /** LinkPreviewHighQualityThumbnail thumbHeight */ + thumbHeight?: (number|null); + } - /** PollCreationMessage encKey. */ - public encKey: Uint8Array; + /** Represents a LinkPreviewHighQualityThumbnail. */ + class LinkPreviewHighQualityThumbnail implements ILinkPreviewHighQualityThumbnail { - /** PollCreationMessage name. */ - public name: string; + /** + * Constructs a new LinkPreviewHighQualityThumbnail. + * @param [properties] Properties to set + */ + constructor(properties?: proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.ILinkPreviewHighQualityThumbnail); - /** PollCreationMessage options. */ - public options: proto.Message.PollCreationMessage.IOption[]; + /** LinkPreviewHighQualityThumbnail directPath. */ + public directPath: string; - /** PollCreationMessage selectableOptionsCount. */ - public selectableOptionsCount: number; + /** LinkPreviewHighQualityThumbnail thumbHash. */ + public thumbHash: string; - /** PollCreationMessage contextInfo. */ - public contextInfo?: (proto.IContextInfo|null); + /** LinkPreviewHighQualityThumbnail encThumbHash. */ + public encThumbHash: string; - /** - * Creates a new PollCreationMessage instance using the specified properties. - * @param [properties] Properties to set - * @returns PollCreationMessage instance - */ - public static create(properties?: proto.Message.IPollCreationMessage): proto.Message.PollCreationMessage; + /** LinkPreviewHighQualityThumbnail mediaKey. */ + public mediaKey: Uint8Array; - /** - * Encodes the specified PollCreationMessage message. Does not implicitly {@link proto.Message.PollCreationMessage.verify|verify} messages. - * @param message PollCreationMessage message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: proto.Message.IPollCreationMessage, writer?: $protobuf.Writer): $protobuf.Writer; + /** LinkPreviewHighQualityThumbnail mediaKeyTimestampMs. */ + public mediaKeyTimestampMs: (number|Long); - /** - * Encodes the specified PollCreationMessage message, length delimited. Does not implicitly {@link proto.Message.PollCreationMessage.verify|verify} messages. - * @param message PollCreationMessage message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: proto.Message.IPollCreationMessage, writer?: $protobuf.Writer): $protobuf.Writer; + /** LinkPreviewHighQualityThumbnail thumbWidth. */ + public thumbWidth: number; - /** - * Decodes a PollCreationMessage message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PollCreationMessage - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PollCreationMessage; + /** LinkPreviewHighQualityThumbnail thumbHeight. */ + public thumbHeight: number; - /** - * Decodes a PollCreationMessage message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PollCreationMessage - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PollCreationMessage; + /** + * Creates a new LinkPreviewHighQualityThumbnail instance using the specified properties. + * @param [properties] Properties to set + * @returns LinkPreviewHighQualityThumbnail instance + */ + public static create(properties?: proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.ILinkPreviewHighQualityThumbnail): proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail; - /** - * Verifies a PollCreationMessage message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Encodes the specified LinkPreviewHighQualityThumbnail message. Does not implicitly {@link proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail.verify|verify} messages. + * @param message LinkPreviewHighQualityThumbnail message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.ILinkPreviewHighQualityThumbnail, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Creates a PollCreationMessage message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PollCreationMessage - */ - public static fromObject(object: { [k: string]: any }): proto.Message.PollCreationMessage; + /** + * Encodes the specified LinkPreviewHighQualityThumbnail message, length delimited. Does not implicitly {@link proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail.verify|verify} messages. + * @param message LinkPreviewHighQualityThumbnail message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.ILinkPreviewHighQualityThumbnail, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Creates a plain object from a PollCreationMessage message. Also converts values to other types if specified. - * @param message PollCreationMessage - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: proto.Message.PollCreationMessage, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** + * Decodes a LinkPreviewHighQualityThumbnail message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns LinkPreviewHighQualityThumbnail + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail; - /** - * Converts this PollCreationMessage to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** + * Decodes a LinkPreviewHighQualityThumbnail message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns LinkPreviewHighQualityThumbnail + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail; - namespace PollCreationMessage { + /** + * Verifies a LinkPreviewHighQualityThumbnail message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** Properties of an Option. */ - interface IOption { + /** + * Creates a LinkPreviewHighQualityThumbnail message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns LinkPreviewHighQualityThumbnail + */ + public static fromObject(object: { [k: string]: any }): proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail; - /** Option optionName */ - optionName?: (string|null); - } + /** + * Creates a plain object from a LinkPreviewHighQualityThumbnail message. Also converts values to other types if specified. + * @param message LinkPreviewHighQualityThumbnail + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** Represents an Option. */ - class Option implements IOption { + /** + * Converts this LinkPreviewHighQualityThumbnail to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } - /** - * Constructs a new Option. - * @param [properties] Properties to set - */ - constructor(properties?: proto.Message.PollCreationMessage.IOption); + /** Properties of a PlaceholderMessageResendResponse. */ + interface IPlaceholderMessageResendResponse { - /** Option optionName. */ - public optionName: string; + /** PlaceholderMessageResendResponse webMessageInfoBytes */ + webMessageInfoBytes?: (Uint8Array|null); + } - /** - * Creates a new Option instance using the specified properties. - * @param [properties] Properties to set - * @returns Option instance - */ - public static create(properties?: proto.Message.PollCreationMessage.IOption): proto.Message.PollCreationMessage.Option; + /** Represents a PlaceholderMessageResendResponse. */ + class PlaceholderMessageResendResponse implements IPlaceholderMessageResendResponse { - /** - * Encodes the specified Option message. Does not implicitly {@link proto.Message.PollCreationMessage.Option.verify|verify} messages. - * @param message Option message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: proto.Message.PollCreationMessage.IOption, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Constructs a new PlaceholderMessageResendResponse. + * @param [properties] Properties to set + */ + constructor(properties?: proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.IPlaceholderMessageResendResponse); - /** - * Encodes the specified Option message, length delimited. Does not implicitly {@link proto.Message.PollCreationMessage.Option.verify|verify} messages. - * @param message Option message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: proto.Message.PollCreationMessage.IOption, writer?: $protobuf.Writer): $protobuf.Writer; + /** PlaceholderMessageResendResponse webMessageInfoBytes. */ + public webMessageInfoBytes: Uint8Array; - /** - * Decodes an Option message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Option - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PollCreationMessage.Option; + /** + * Creates a new PlaceholderMessageResendResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns PlaceholderMessageResendResponse instance + */ + public static create(properties?: proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.IPlaceholderMessageResendResponse): proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse; - /** - * Decodes an Option message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Option - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PollCreationMessage.Option; + /** + * Encodes the specified PlaceholderMessageResendResponse message. Does not implicitly {@link proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse.verify|verify} messages. + * @param message PlaceholderMessageResendResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.IPlaceholderMessageResendResponse, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Verifies an Option message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Encodes the specified PlaceholderMessageResendResponse message, length delimited. Does not implicitly {@link proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse.verify|verify} messages. + * @param message PlaceholderMessageResendResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.IPlaceholderMessageResendResponse, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Creates an Option message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Option - */ - public static fromObject(object: { [k: string]: any }): proto.Message.PollCreationMessage.Option; + /** + * Decodes a PlaceholderMessageResendResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PlaceholderMessageResendResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse; - /** - * Creates a plain object from an Option message. Also converts values to other types if specified. - * @param message Option - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: proto.Message.PollCreationMessage.Option, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** + * Decodes a PlaceholderMessageResendResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PlaceholderMessageResendResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse; - /** - * Converts this Option to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + /** + * Verifies a PlaceholderMessageResendResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PlaceholderMessageResendResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PlaceholderMessageResendResponse + */ + public static fromObject(object: { [k: string]: any }): proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse; + + /** + * Creates a plain object from a PlaceholderMessageResendResponse message. Also converts values to other types if specified. + * @param message PlaceholderMessageResendResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PlaceholderMessageResendResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } } } - /** Properties of a PollEncValue. */ - interface IPollEncValue { + /** PeerDataOperationRequestType enum. */ + enum PeerDataOperationRequestType { + UPLOAD_STICKER = 0, + SEND_RECENT_STICKER_BOOTSTRAP = 1, + GENERATE_LINK_PREVIEW = 2, + HISTORY_SYNC_ON_DEMAND = 3, + PLACEHOLDER_MESSAGE_RESEND = 4 + } - /** PollEncValue encPayload */ - encPayload?: (Uint8Array|null); + /** Properties of a PinInChatMessage. */ + interface IPinInChatMessage { - /** PollEncValue encIv */ - encIv?: (Uint8Array|null); + /** PinInChatMessage key */ + key?: (proto.IMessageKey|null); + + /** PinInChatMessage type */ + type?: (proto.Message.PinInChatMessage.Type|null); + + /** PinInChatMessage senderTimestampMs */ + senderTimestampMs?: (number|Long|null); } - /** Represents a PollEncValue. */ - class PollEncValue implements IPollEncValue { + /** Represents a PinInChatMessage. */ + class PinInChatMessage implements IPinInChatMessage { /** - * Constructs a new PollEncValue. + * Constructs a new PinInChatMessage. * @param [properties] Properties to set */ - constructor(properties?: proto.Message.IPollEncValue); + constructor(properties?: proto.Message.IPinInChatMessage); - /** PollEncValue encPayload. */ - public encPayload: Uint8Array; + /** PinInChatMessage key. */ + public key?: (proto.IMessageKey|null); - /** PollEncValue encIv. */ - public encIv: Uint8Array; + /** PinInChatMessage type. */ + public type: proto.Message.PinInChatMessage.Type; + + /** PinInChatMessage senderTimestampMs. */ + public senderTimestampMs: (number|Long); /** - * Creates a new PollEncValue instance using the specified properties. + * Creates a new PinInChatMessage instance using the specified properties. * @param [properties] Properties to set - * @returns PollEncValue instance + * @returns PinInChatMessage instance */ - public static create(properties?: proto.Message.IPollEncValue): proto.Message.PollEncValue; + public static create(properties?: proto.Message.IPinInChatMessage): proto.Message.PinInChatMessage; /** - * Encodes the specified PollEncValue message. Does not implicitly {@link proto.Message.PollEncValue.verify|verify} messages. - * @param message PollEncValue message or plain object to encode + * Encodes the specified PinInChatMessage message. Does not implicitly {@link proto.Message.PinInChatMessage.verify|verify} messages. + * @param message PinInChatMessage message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: proto.Message.IPollEncValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: proto.Message.IPinInChatMessage, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified PollEncValue message, length delimited. Does not implicitly {@link proto.Message.PollEncValue.verify|verify} messages. - * @param message PollEncValue message or plain object to encode + * Encodes the specified PinInChatMessage message, length delimited. Does not implicitly {@link proto.Message.PinInChatMessage.verify|verify} messages. + * @param message PinInChatMessage message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: proto.Message.IPollEncValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: proto.Message.IPinInChatMessage, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a PollEncValue message from the specified reader or buffer. + * Decodes a PinInChatMessage message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns PollEncValue + * @returns PinInChatMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PollEncValue; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PinInChatMessage; /** - * Decodes a PollEncValue message from the specified reader or buffer, length delimited. + * Decodes a PinInChatMessage message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns PollEncValue + * @returns PinInChatMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PollEncValue; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PinInChatMessage; /** - * Verifies a PollEncValue message. + * Verifies a PinInChatMessage message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a PollEncValue message from a plain object. Also converts values to their respective internal types. + * Creates a PinInChatMessage message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns PollEncValue + * @returns PinInChatMessage */ - public static fromObject(object: { [k: string]: any }): proto.Message.PollEncValue; + public static fromObject(object: { [k: string]: any }): proto.Message.PinInChatMessage; /** - * Creates a plain object from a PollEncValue message. Also converts values to other types if specified. - * @param message PollEncValue + * Creates a plain object from a PinInChatMessage message. Also converts values to other types if specified. + * @param message PinInChatMessage * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: proto.Message.PollEncValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: proto.Message.PinInChatMessage, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this PollEncValue to JSON. + * Converts this PinInChatMessage to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a PollUpdateMessage. */ - interface IPollUpdateMessage { + namespace PinInChatMessage { - /** PollUpdateMessage pollCreationMessageKey */ - pollCreationMessageKey?: (proto.IMessageKey|null); + /** Type enum. */ + enum Type { + UNKNOWN_TYPE = 0, + PIN_FOR_ALL = 1, + UNPIN_FOR_ALL = 2 + } + } - /** PollUpdateMessage vote */ - vote?: (proto.Message.IPollEncValue|null); + /** Properties of a PollCreationMessage. */ + interface IPollCreationMessage { - /** PollUpdateMessage metadata */ - metadata?: (proto.Message.IPollUpdateMessageMetadata|null); + /** PollCreationMessage encKey */ + encKey?: (Uint8Array|null); - /** PollUpdateMessage senderTimestampMs */ - senderTimestampMs?: (number|Long|null); + /** PollCreationMessage name */ + name?: (string|null); + + /** PollCreationMessage options */ + options?: (proto.Message.PollCreationMessage.IOption[]|null); + + /** PollCreationMessage selectableOptionsCount */ + selectableOptionsCount?: (number|null); + + /** PollCreationMessage contextInfo */ + contextInfo?: (proto.IContextInfo|null); } - /** Represents a PollUpdateMessage. */ - class PollUpdateMessage implements IPollUpdateMessage { + /** Represents a PollCreationMessage. */ + class PollCreationMessage implements IPollCreationMessage { /** - * Constructs a new PollUpdateMessage. + * Constructs a new PollCreationMessage. * @param [properties] Properties to set */ - constructor(properties?: proto.Message.IPollUpdateMessage); + constructor(properties?: proto.Message.IPollCreationMessage); - /** PollUpdateMessage pollCreationMessageKey. */ - public pollCreationMessageKey?: (proto.IMessageKey|null); + /** PollCreationMessage encKey. */ + public encKey: Uint8Array; - /** PollUpdateMessage vote. */ - public vote?: (proto.Message.IPollEncValue|null); + /** PollCreationMessage name. */ + public name: string; - /** PollUpdateMessage metadata. */ - public metadata?: (proto.Message.IPollUpdateMessageMetadata|null); + /** PollCreationMessage options. */ + public options: proto.Message.PollCreationMessage.IOption[]; - /** PollUpdateMessage senderTimestampMs. */ - public senderTimestampMs: (number|Long); + /** PollCreationMessage selectableOptionsCount. */ + public selectableOptionsCount: number; + + /** PollCreationMessage contextInfo. */ + public contextInfo?: (proto.IContextInfo|null); /** - * Creates a new PollUpdateMessage instance using the specified properties. + * Creates a new PollCreationMessage instance using the specified properties. * @param [properties] Properties to set - * @returns PollUpdateMessage instance + * @returns PollCreationMessage instance */ - public static create(properties?: proto.Message.IPollUpdateMessage): proto.Message.PollUpdateMessage; + public static create(properties?: proto.Message.IPollCreationMessage): proto.Message.PollCreationMessage; /** - * Encodes the specified PollUpdateMessage message. Does not implicitly {@link proto.Message.PollUpdateMessage.verify|verify} messages. - * @param message PollUpdateMessage message or plain object to encode + * Encodes the specified PollCreationMessage message. Does not implicitly {@link proto.Message.PollCreationMessage.verify|verify} messages. + * @param message PollCreationMessage message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: proto.Message.IPollUpdateMessage, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: proto.Message.IPollCreationMessage, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified PollUpdateMessage message, length delimited. Does not implicitly {@link proto.Message.PollUpdateMessage.verify|verify} messages. - * @param message PollUpdateMessage message or plain object to encode + * Encodes the specified PollCreationMessage message, length delimited. Does not implicitly {@link proto.Message.PollCreationMessage.verify|verify} messages. + * @param message PollCreationMessage message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: proto.Message.IPollUpdateMessage, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: proto.Message.IPollCreationMessage, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a PollUpdateMessage message from the specified reader or buffer. + * Decodes a PollCreationMessage message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns PollUpdateMessage + * @returns PollCreationMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PollUpdateMessage; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PollCreationMessage; /** - * Decodes a PollUpdateMessage message from the specified reader or buffer, length delimited. + * Decodes a PollCreationMessage message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns PollUpdateMessage + * @returns PollCreationMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PollUpdateMessage; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PollCreationMessage; /** - * Verifies a PollUpdateMessage message. + * Verifies a PollCreationMessage message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a PollUpdateMessage message from a plain object. Also converts values to their respective internal types. + * Creates a PollCreationMessage message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns PollUpdateMessage + * @returns PollCreationMessage */ - public static fromObject(object: { [k: string]: any }): proto.Message.PollUpdateMessage; + public static fromObject(object: { [k: string]: any }): proto.Message.PollCreationMessage; /** - * Creates a plain object from a PollUpdateMessage message. Also converts values to other types if specified. - * @param message PollUpdateMessage + * Creates a plain object from a PollCreationMessage message. Also converts values to other types if specified. + * @param message PollCreationMessage * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: proto.Message.PollUpdateMessage, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: proto.Message.PollCreationMessage, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this PollUpdateMessage to JSON. + * Converts this PollCreationMessage to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a PollUpdateMessageMetadata. */ - interface IPollUpdateMessageMetadata { + namespace PollCreationMessage { + + /** Properties of an Option. */ + interface IOption { + + /** Option optionName */ + optionName?: (string|null); + } + + /** Represents an Option. */ + class Option implements IOption { + + /** + * Constructs a new Option. + * @param [properties] Properties to set + */ + constructor(properties?: proto.Message.PollCreationMessage.IOption); + + /** Option optionName. */ + public optionName: string; + + /** + * Creates a new Option instance using the specified properties. + * @param [properties] Properties to set + * @returns Option instance + */ + public static create(properties?: proto.Message.PollCreationMessage.IOption): proto.Message.PollCreationMessage.Option; + + /** + * Encodes the specified Option message. Does not implicitly {@link proto.Message.PollCreationMessage.Option.verify|verify} messages. + * @param message Option message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.Message.PollCreationMessage.IOption, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Option message, length delimited. Does not implicitly {@link proto.Message.PollCreationMessage.Option.verify|verify} messages. + * @param message Option message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.Message.PollCreationMessage.IOption, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Option message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Option + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PollCreationMessage.Option; + + /** + * Decodes an Option message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Option + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PollCreationMessage.Option; + + /** + * Verifies an Option message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an Option message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Option + */ + public static fromObject(object: { [k: string]: any }): proto.Message.PollCreationMessage.Option; + + /** + * Creates a plain object from an Option message. Also converts values to other types if specified. + * @param message Option + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.Message.PollCreationMessage.Option, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Option to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } } - /** Represents a PollUpdateMessageMetadata. */ - class PollUpdateMessageMetadata implements IPollUpdateMessageMetadata { + /** Properties of a PollEncValue. */ + interface IPollEncValue { + + /** PollEncValue encPayload */ + encPayload?: (Uint8Array|null); + + /** PollEncValue encIv */ + encIv?: (Uint8Array|null); + } + + /** Represents a PollEncValue. */ + class PollEncValue implements IPollEncValue { /** - * Constructs a new PollUpdateMessageMetadata. + * Constructs a new PollEncValue. * @param [properties] Properties to set */ - constructor(properties?: proto.Message.IPollUpdateMessageMetadata); + constructor(properties?: proto.Message.IPollEncValue); + + /** PollEncValue encPayload. */ + public encPayload: Uint8Array; + + /** PollEncValue encIv. */ + public encIv: Uint8Array; /** - * Creates a new PollUpdateMessageMetadata instance using the specified properties. + * Creates a new PollEncValue instance using the specified properties. * @param [properties] Properties to set - * @returns PollUpdateMessageMetadata instance + * @returns PollEncValue instance */ - public static create(properties?: proto.Message.IPollUpdateMessageMetadata): proto.Message.PollUpdateMessageMetadata; + public static create(properties?: proto.Message.IPollEncValue): proto.Message.PollEncValue; /** - * Encodes the specified PollUpdateMessageMetadata message. Does not implicitly {@link proto.Message.PollUpdateMessageMetadata.verify|verify} messages. - * @param message PollUpdateMessageMetadata message or plain object to encode + * Encodes the specified PollEncValue message. Does not implicitly {@link proto.Message.PollEncValue.verify|verify} messages. + * @param message PollEncValue message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: proto.Message.IPollUpdateMessageMetadata, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: proto.Message.IPollEncValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified PollUpdateMessageMetadata message, length delimited. Does not implicitly {@link proto.Message.PollUpdateMessageMetadata.verify|verify} messages. - * @param message PollUpdateMessageMetadata message or plain object to encode + * Encodes the specified PollEncValue message, length delimited. Does not implicitly {@link proto.Message.PollEncValue.verify|verify} messages. + * @param message PollEncValue message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: proto.Message.IPollUpdateMessageMetadata, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: proto.Message.IPollEncValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a PollUpdateMessageMetadata message from the specified reader or buffer. + * Decodes a PollEncValue message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns PollUpdateMessageMetadata + * @returns PollEncValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PollUpdateMessageMetadata; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PollEncValue; /** - * Decodes a PollUpdateMessageMetadata message from the specified reader or buffer, length delimited. + * Decodes a PollEncValue message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns PollUpdateMessageMetadata + * @returns PollEncValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PollUpdateMessageMetadata; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PollEncValue; /** - * Verifies a PollUpdateMessageMetadata message. + * Verifies a PollEncValue message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a PollUpdateMessageMetadata message from a plain object. Also converts values to their respective internal types. + * Creates a PollEncValue message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns PollUpdateMessageMetadata + * @returns PollEncValue */ - public static fromObject(object: { [k: string]: any }): proto.Message.PollUpdateMessageMetadata; + public static fromObject(object: { [k: string]: any }): proto.Message.PollEncValue; /** - * Creates a plain object from a PollUpdateMessageMetadata message. Also converts values to other types if specified. - * @param message PollUpdateMessageMetadata + * Creates a plain object from a PollEncValue message. Also converts values to other types if specified. + * @param message PollEncValue * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: proto.Message.PollUpdateMessageMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: proto.Message.PollEncValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this PollUpdateMessageMetadata to JSON. + * Converts this PollEncValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a PollUpdateMessage. */ + interface IPollUpdateMessage { + + /** PollUpdateMessage pollCreationMessageKey */ + pollCreationMessageKey?: (proto.IMessageKey|null); + + /** PollUpdateMessage vote */ + vote?: (proto.Message.IPollEncValue|null); + + /** PollUpdateMessage metadata */ + metadata?: (proto.Message.IPollUpdateMessageMetadata|null); + + /** PollUpdateMessage senderTimestampMs */ + senderTimestampMs?: (number|Long|null); + } + + /** Represents a PollUpdateMessage. */ + class PollUpdateMessage implements IPollUpdateMessage { + + /** + * Constructs a new PollUpdateMessage. + * @param [properties] Properties to set + */ + constructor(properties?: proto.Message.IPollUpdateMessage); + + /** PollUpdateMessage pollCreationMessageKey. */ + public pollCreationMessageKey?: (proto.IMessageKey|null); + + /** PollUpdateMessage vote. */ + public vote?: (proto.Message.IPollEncValue|null); + + /** PollUpdateMessage metadata. */ + public metadata?: (proto.Message.IPollUpdateMessageMetadata|null); + + /** PollUpdateMessage senderTimestampMs. */ + public senderTimestampMs: (number|Long); + + /** + * Creates a new PollUpdateMessage instance using the specified properties. + * @param [properties] Properties to set + * @returns PollUpdateMessage instance + */ + public static create(properties?: proto.Message.IPollUpdateMessage): proto.Message.PollUpdateMessage; + + /** + * Encodes the specified PollUpdateMessage message. Does not implicitly {@link proto.Message.PollUpdateMessage.verify|verify} messages. + * @param message PollUpdateMessage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.Message.IPollUpdateMessage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PollUpdateMessage message, length delimited. Does not implicitly {@link proto.Message.PollUpdateMessage.verify|verify} messages. + * @param message PollUpdateMessage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.Message.IPollUpdateMessage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PollUpdateMessage message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PollUpdateMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PollUpdateMessage; + + /** + * Decodes a PollUpdateMessage message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PollUpdateMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PollUpdateMessage; + + /** + * Verifies a PollUpdateMessage message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PollUpdateMessage message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PollUpdateMessage + */ + public static fromObject(object: { [k: string]: any }): proto.Message.PollUpdateMessage; + + /** + * Creates a plain object from a PollUpdateMessage message. Also converts values to other types if specified. + * @param message PollUpdateMessage + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.Message.PollUpdateMessage, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PollUpdateMessage to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a PollUpdateMessageMetadata. */ + interface IPollUpdateMessageMetadata { + } + + /** Represents a PollUpdateMessageMetadata. */ + class PollUpdateMessageMetadata implements IPollUpdateMessageMetadata { + + /** + * Constructs a new PollUpdateMessageMetadata. + * @param [properties] Properties to set + */ + constructor(properties?: proto.Message.IPollUpdateMessageMetadata); + + /** + * Creates a new PollUpdateMessageMetadata instance using the specified properties. + * @param [properties] Properties to set + * @returns PollUpdateMessageMetadata instance + */ + public static create(properties?: proto.Message.IPollUpdateMessageMetadata): proto.Message.PollUpdateMessageMetadata; + + /** + * Encodes the specified PollUpdateMessageMetadata message. Does not implicitly {@link proto.Message.PollUpdateMessageMetadata.verify|verify} messages. + * @param message PollUpdateMessageMetadata message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.Message.IPollUpdateMessageMetadata, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PollUpdateMessageMetadata message, length delimited. Does not implicitly {@link proto.Message.PollUpdateMessageMetadata.verify|verify} messages. + * @param message PollUpdateMessageMetadata message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.Message.IPollUpdateMessageMetadata, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PollUpdateMessageMetadata message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PollUpdateMessageMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.PollUpdateMessageMetadata; + + /** + * Decodes a PollUpdateMessageMetadata message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PollUpdateMessageMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.PollUpdateMessageMetadata; + + /** + * Verifies a PollUpdateMessageMetadata message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PollUpdateMessageMetadata message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PollUpdateMessageMetadata + */ + public static fromObject(object: { [k: string]: any }): proto.Message.PollUpdateMessageMetadata; + + /** + * Creates a plain object from a PollUpdateMessageMetadata message. Also converts values to other types if specified. + * @param message PollUpdateMessageMetadata + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.Message.PollUpdateMessageMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PollUpdateMessageMetadata to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; @@ -16216,131 +17768,348 @@ export namespace proto { public toJSON(): { [k: string]: any }; } - /** Properties of a SendPaymentMessage. */ - interface ISendPaymentMessage { + /** Properties of a ScheduledCallCreationMessage. */ + interface IScheduledCallCreationMessage { - /** SendPaymentMessage noteMessage */ - noteMessage?: (proto.IMessage|null); + /** ScheduledCallCreationMessage scheduledTimestampMs */ + scheduledTimestampMs?: (number|Long|null); - /** SendPaymentMessage requestMessageKey */ - requestMessageKey?: (proto.IMessageKey|null); + /** ScheduledCallCreationMessage callType */ + callType?: (proto.Message.ScheduledCallCreationMessage.CallType|null); - /** SendPaymentMessage background */ - background?: (proto.IPaymentBackground|null); + /** ScheduledCallCreationMessage title */ + title?: (string|null); } - /** Represents a SendPaymentMessage. */ - class SendPaymentMessage implements ISendPaymentMessage { + /** Represents a ScheduledCallCreationMessage. */ + class ScheduledCallCreationMessage implements IScheduledCallCreationMessage { /** - * Constructs a new SendPaymentMessage. + * Constructs a new ScheduledCallCreationMessage. * @param [properties] Properties to set */ - constructor(properties?: proto.Message.ISendPaymentMessage); + constructor(properties?: proto.Message.IScheduledCallCreationMessage); - /** SendPaymentMessage noteMessage. */ - public noteMessage?: (proto.IMessage|null); + /** ScheduledCallCreationMessage scheduledTimestampMs. */ + public scheduledTimestampMs: (number|Long); - /** SendPaymentMessage requestMessageKey. */ - public requestMessageKey?: (proto.IMessageKey|null); + /** ScheduledCallCreationMessage callType. */ + public callType: proto.Message.ScheduledCallCreationMessage.CallType; - /** SendPaymentMessage background. */ - public background?: (proto.IPaymentBackground|null); + /** ScheduledCallCreationMessage title. */ + public title: string; /** - * Creates a new SendPaymentMessage instance using the specified properties. + * Creates a new ScheduledCallCreationMessage instance using the specified properties. * @param [properties] Properties to set - * @returns SendPaymentMessage instance + * @returns ScheduledCallCreationMessage instance */ - public static create(properties?: proto.Message.ISendPaymentMessage): proto.Message.SendPaymentMessage; + public static create(properties?: proto.Message.IScheduledCallCreationMessage): proto.Message.ScheduledCallCreationMessage; /** - * Encodes the specified SendPaymentMessage message. Does not implicitly {@link proto.Message.SendPaymentMessage.verify|verify} messages. - * @param message SendPaymentMessage message or plain object to encode + * Encodes the specified ScheduledCallCreationMessage message. Does not implicitly {@link proto.Message.ScheduledCallCreationMessage.verify|verify} messages. + * @param message ScheduledCallCreationMessage message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: proto.Message.ISendPaymentMessage, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: proto.Message.IScheduledCallCreationMessage, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified SendPaymentMessage message, length delimited. Does not implicitly {@link proto.Message.SendPaymentMessage.verify|verify} messages. - * @param message SendPaymentMessage message or plain object to encode + * Encodes the specified ScheduledCallCreationMessage message, length delimited. Does not implicitly {@link proto.Message.ScheduledCallCreationMessage.verify|verify} messages. + * @param message ScheduledCallCreationMessage message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: proto.Message.ISendPaymentMessage, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: proto.Message.IScheduledCallCreationMessage, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a SendPaymentMessage message from the specified reader or buffer. + * Decodes a ScheduledCallCreationMessage message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns SendPaymentMessage + * @returns ScheduledCallCreationMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.SendPaymentMessage; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.ScheduledCallCreationMessage; /** - * Decodes a SendPaymentMessage message from the specified reader or buffer, length delimited. + * Decodes a ScheduledCallCreationMessage message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns SendPaymentMessage + * @returns ScheduledCallCreationMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.SendPaymentMessage; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.ScheduledCallCreationMessage; /** - * Verifies a SendPaymentMessage message. + * Verifies a ScheduledCallCreationMessage message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a SendPaymentMessage message from a plain object. Also converts values to their respective internal types. + * Creates a ScheduledCallCreationMessage message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns SendPaymentMessage + * @returns ScheduledCallCreationMessage */ - public static fromObject(object: { [k: string]: any }): proto.Message.SendPaymentMessage; + public static fromObject(object: { [k: string]: any }): proto.Message.ScheduledCallCreationMessage; /** - * Creates a plain object from a SendPaymentMessage message. Also converts values to other types if specified. - * @param message SendPaymentMessage + * Creates a plain object from a ScheduledCallCreationMessage message. Also converts values to other types if specified. + * @param message ScheduledCallCreationMessage * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: proto.Message.SendPaymentMessage, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: proto.Message.ScheduledCallCreationMessage, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this SendPaymentMessage to JSON. + * Converts this ScheduledCallCreationMessage to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a SenderKeyDistributionMessage. */ - interface ISenderKeyDistributionMessage { + namespace ScheduledCallCreationMessage { - /** SenderKeyDistributionMessage groupId */ - groupId?: (string|null); + /** CallType enum. */ + enum CallType { + UNKNOWN = 0, + VOICE = 1, + VIDEO = 2 + } + } - /** SenderKeyDistributionMessage axolotlSenderKeyDistributionMessage */ - axolotlSenderKeyDistributionMessage?: (Uint8Array|null); + /** Properties of a ScheduledCallEditMessage. */ + interface IScheduledCallEditMessage { + + /** ScheduledCallEditMessage key */ + key?: (proto.IMessageKey|null); + + /** ScheduledCallEditMessage editType */ + editType?: (proto.Message.ScheduledCallEditMessage.EditType|null); } - /** Represents a SenderKeyDistributionMessage. */ - class SenderKeyDistributionMessage implements ISenderKeyDistributionMessage { + /** Represents a ScheduledCallEditMessage. */ + class ScheduledCallEditMessage implements IScheduledCallEditMessage { /** - * Constructs a new SenderKeyDistributionMessage. + * Constructs a new ScheduledCallEditMessage. * @param [properties] Properties to set */ - constructor(properties?: proto.Message.ISenderKeyDistributionMessage); + constructor(properties?: proto.Message.IScheduledCallEditMessage); - /** SenderKeyDistributionMessage groupId. */ - public groupId: string; + /** ScheduledCallEditMessage key. */ + public key?: (proto.IMessageKey|null); - /** SenderKeyDistributionMessage axolotlSenderKeyDistributionMessage. */ + /** ScheduledCallEditMessage editType. */ + public editType: proto.Message.ScheduledCallEditMessage.EditType; + + /** + * Creates a new ScheduledCallEditMessage instance using the specified properties. + * @param [properties] Properties to set + * @returns ScheduledCallEditMessage instance + */ + public static create(properties?: proto.Message.IScheduledCallEditMessage): proto.Message.ScheduledCallEditMessage; + + /** + * Encodes the specified ScheduledCallEditMessage message. Does not implicitly {@link proto.Message.ScheduledCallEditMessage.verify|verify} messages. + * @param message ScheduledCallEditMessage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.Message.IScheduledCallEditMessage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ScheduledCallEditMessage message, length delimited. Does not implicitly {@link proto.Message.ScheduledCallEditMessage.verify|verify} messages. + * @param message ScheduledCallEditMessage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.Message.IScheduledCallEditMessage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ScheduledCallEditMessage message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ScheduledCallEditMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.ScheduledCallEditMessage; + + /** + * Decodes a ScheduledCallEditMessage message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ScheduledCallEditMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.ScheduledCallEditMessage; + + /** + * Verifies a ScheduledCallEditMessage message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ScheduledCallEditMessage message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ScheduledCallEditMessage + */ + public static fromObject(object: { [k: string]: any }): proto.Message.ScheduledCallEditMessage; + + /** + * Creates a plain object from a ScheduledCallEditMessage message. Also converts values to other types if specified. + * @param message ScheduledCallEditMessage + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.Message.ScheduledCallEditMessage, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ScheduledCallEditMessage to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace ScheduledCallEditMessage { + + /** EditType enum. */ + enum EditType { + UNKNOWN = 0, + CANCEL = 1 + } + } + + /** Properties of a SendPaymentMessage. */ + interface ISendPaymentMessage { + + /** SendPaymentMessage noteMessage */ + noteMessage?: (proto.IMessage|null); + + /** SendPaymentMessage requestMessageKey */ + requestMessageKey?: (proto.IMessageKey|null); + + /** SendPaymentMessage background */ + background?: (proto.IPaymentBackground|null); + } + + /** Represents a SendPaymentMessage. */ + class SendPaymentMessage implements ISendPaymentMessage { + + /** + * Constructs a new SendPaymentMessage. + * @param [properties] Properties to set + */ + constructor(properties?: proto.Message.ISendPaymentMessage); + + /** SendPaymentMessage noteMessage. */ + public noteMessage?: (proto.IMessage|null); + + /** SendPaymentMessage requestMessageKey. */ + public requestMessageKey?: (proto.IMessageKey|null); + + /** SendPaymentMessage background. */ + public background?: (proto.IPaymentBackground|null); + + /** + * Creates a new SendPaymentMessage instance using the specified properties. + * @param [properties] Properties to set + * @returns SendPaymentMessage instance + */ + public static create(properties?: proto.Message.ISendPaymentMessage): proto.Message.SendPaymentMessage; + + /** + * Encodes the specified SendPaymentMessage message. Does not implicitly {@link proto.Message.SendPaymentMessage.verify|verify} messages. + * @param message SendPaymentMessage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.Message.ISendPaymentMessage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SendPaymentMessage message, length delimited. Does not implicitly {@link proto.Message.SendPaymentMessage.verify|verify} messages. + * @param message SendPaymentMessage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.Message.ISendPaymentMessage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SendPaymentMessage message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SendPaymentMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.Message.SendPaymentMessage; + + /** + * Decodes a SendPaymentMessage message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SendPaymentMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.Message.SendPaymentMessage; + + /** + * Verifies a SendPaymentMessage message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a SendPaymentMessage message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SendPaymentMessage + */ + public static fromObject(object: { [k: string]: any }): proto.Message.SendPaymentMessage; + + /** + * Creates a plain object from a SendPaymentMessage message. Also converts values to other types if specified. + * @param message SendPaymentMessage + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.Message.SendPaymentMessage, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this SendPaymentMessage to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a SenderKeyDistributionMessage. */ + interface ISenderKeyDistributionMessage { + + /** SenderKeyDistributionMessage groupId */ + groupId?: (string|null); + + /** SenderKeyDistributionMessage axolotlSenderKeyDistributionMessage */ + axolotlSenderKeyDistributionMessage?: (Uint8Array|null); + } + + /** Represents a SenderKeyDistributionMessage. */ + class SenderKeyDistributionMessage implements ISenderKeyDistributionMessage { + + /** + * Constructs a new SenderKeyDistributionMessage. + * @param [properties] Properties to set + */ + constructor(properties?: proto.Message.ISenderKeyDistributionMessage); + + /** SenderKeyDistributionMessage groupId. */ + public groupId: string; + + /** SenderKeyDistributionMessage axolotlSenderKeyDistributionMessage. */ public axolotlSenderKeyDistributionMessage: Uint8Array; /** @@ -17445,6 +19214,96 @@ export namespace proto { } } + /** Properties of a MessageAddOnContextInfo. */ + interface IMessageAddOnContextInfo { + + /** MessageAddOnContextInfo messageAddOnDurationInSecs */ + messageAddOnDurationInSecs?: (number|null); + } + + /** Represents a MessageAddOnContextInfo. */ + class MessageAddOnContextInfo implements IMessageAddOnContextInfo { + + /** + * Constructs a new MessageAddOnContextInfo. + * @param [properties] Properties to set + */ + constructor(properties?: proto.IMessageAddOnContextInfo); + + /** MessageAddOnContextInfo messageAddOnDurationInSecs. */ + public messageAddOnDurationInSecs: number; + + /** + * Creates a new MessageAddOnContextInfo instance using the specified properties. + * @param [properties] Properties to set + * @returns MessageAddOnContextInfo instance + */ + public static create(properties?: proto.IMessageAddOnContextInfo): proto.MessageAddOnContextInfo; + + /** + * Encodes the specified MessageAddOnContextInfo message. Does not implicitly {@link proto.MessageAddOnContextInfo.verify|verify} messages. + * @param message MessageAddOnContextInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.IMessageAddOnContextInfo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MessageAddOnContextInfo message, length delimited. Does not implicitly {@link proto.MessageAddOnContextInfo.verify|verify} messages. + * @param message MessageAddOnContextInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.IMessageAddOnContextInfo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MessageAddOnContextInfo message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MessageAddOnContextInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.MessageAddOnContextInfo; + + /** + * Decodes a MessageAddOnContextInfo message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MessageAddOnContextInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.MessageAddOnContextInfo; + + /** + * Verifies a MessageAddOnContextInfo message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MessageAddOnContextInfo message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MessageAddOnContextInfo + */ + public static fromObject(object: { [k: string]: any }): proto.MessageAddOnContextInfo; + + /** + * Creates a plain object from a MessageAddOnContextInfo message. Also converts values to other types if specified. + * @param message MessageAddOnContextInfo + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.MessageAddOnContextInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MessageAddOnContextInfo to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + /** Properties of a MessageContextInfo. */ interface IMessageContextInfo { @@ -17459,6 +19318,9 @@ export namespace proto { /** MessageContextInfo paddingBytes */ paddingBytes?: (Uint8Array|null); + + /** MessageContextInfo messageAddOnDurationInSecs */ + messageAddOnDurationInSecs?: (number|null); } /** Represents a MessageContextInfo. */ @@ -17482,6 +19344,9 @@ export namespace proto { /** MessageContextInfo paddingBytes. */ public paddingBytes: Uint8Array; + /** MessageContextInfo messageAddOnDurationInSecs. */ + public messageAddOnDurationInSecs: number; + /** * Creates a new MessageContextInfo instance using the specified properties. * @param [properties] Properties to set @@ -17831,6 +19696,18 @@ export namespace proto { /** MsgOpaqueData encPollVote */ encPollVote?: (proto.IPollEncValue|null); + + /** MsgOpaqueData isSentCagPollCreation */ + isSentCagPollCreation?: (boolean|null); + + /** MsgOpaqueData encReactionTargetMessageKey */ + encReactionTargetMessageKey?: (string|null); + + /** MsgOpaqueData encReactionEncPayload */ + encReactionEncPayload?: (Uint8Array|null); + + /** MsgOpaqueData encReactionEncIv */ + encReactionEncIv?: (Uint8Array|null); } /** Represents a MsgOpaqueData. */ @@ -17908,6 +19785,18 @@ export namespace proto { /** MsgOpaqueData encPollVote. */ public encPollVote?: (proto.IPollEncValue|null); + /** MsgOpaqueData isSentCagPollCreation. */ + public isSentCagPollCreation: boolean; + + /** MsgOpaqueData encReactionTargetMessageKey. */ + public encReactionTargetMessageKey: string; + + /** MsgOpaqueData encReactionEncPayload. */ + public encReactionEncPayload: Uint8Array; + + /** MsgOpaqueData encReactionEncIv. */ + public encReactionEncIv: Uint8Array; + /** * Creates a new MsgOpaqueData instance using the specified properties. * @param [properties] Properties to set @@ -18489,20 +20378,140 @@ export namespace proto { public toJSON(): { [k: string]: any }; } - /** Properties of a PastParticipant. */ - interface IPastParticipant { + /** Properties of a NotificationSettings. */ + interface INotificationSettings { - /** PastParticipant userJid */ - userJid?: (string|null); + /** NotificationSettings messageVibrate */ + messageVibrate?: (string|null); - /** PastParticipant leaveReason */ - leaveReason?: (proto.PastParticipant.LeaveReason|null); + /** NotificationSettings messagePopup */ + messagePopup?: (string|null); - /** PastParticipant leaveTs */ - leaveTs?: (number|Long|null); - } + /** NotificationSettings messageLight */ + messageLight?: (string|null); - /** Represents a PastParticipant. */ + /** NotificationSettings lowPriorityNotifications */ + lowPriorityNotifications?: (boolean|null); + + /** NotificationSettings reactionsMuted */ + reactionsMuted?: (boolean|null); + + /** NotificationSettings callVibrate */ + callVibrate?: (string|null); + } + + /** Represents a NotificationSettings. */ + class NotificationSettings implements INotificationSettings { + + /** + * Constructs a new NotificationSettings. + * @param [properties] Properties to set + */ + constructor(properties?: proto.INotificationSettings); + + /** NotificationSettings messageVibrate. */ + public messageVibrate: string; + + /** NotificationSettings messagePopup. */ + public messagePopup: string; + + /** NotificationSettings messageLight. */ + public messageLight: string; + + /** NotificationSettings lowPriorityNotifications. */ + public lowPriorityNotifications: boolean; + + /** NotificationSettings reactionsMuted. */ + public reactionsMuted: boolean; + + /** NotificationSettings callVibrate. */ + public callVibrate: string; + + /** + * Creates a new NotificationSettings instance using the specified properties. + * @param [properties] Properties to set + * @returns NotificationSettings instance + */ + public static create(properties?: proto.INotificationSettings): proto.NotificationSettings; + + /** + * Encodes the specified NotificationSettings message. Does not implicitly {@link proto.NotificationSettings.verify|verify} messages. + * @param message NotificationSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.INotificationSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified NotificationSettings message, length delimited. Does not implicitly {@link proto.NotificationSettings.verify|verify} messages. + * @param message NotificationSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.INotificationSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a NotificationSettings message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns NotificationSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.NotificationSettings; + + /** + * Decodes a NotificationSettings message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns NotificationSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.NotificationSettings; + + /** + * Verifies a NotificationSettings message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a NotificationSettings message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns NotificationSettings + */ + public static fromObject(object: { [k: string]: any }): proto.NotificationSettings; + + /** + * Creates a plain object from a NotificationSettings message. Also converts values to other types if specified. + * @param message NotificationSettings + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.NotificationSettings, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this NotificationSettings to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a PastParticipant. */ + interface IPastParticipant { + + /** PastParticipant userJid */ + userJid?: (string|null); + + /** PastParticipant leaveReason */ + leaveReason?: (proto.PastParticipant.LeaveReason|null); + + /** PastParticipant leaveTs */ + leaveTs?: (number|Long|null); + } + + /** Represents a PastParticipant. */ class PastParticipant implements IPastParticipant { /** @@ -19186,336 +21195,232 @@ export namespace proto { } } - /** Properties of a PendingKeyExchange. */ - interface IPendingKeyExchange { - - /** PendingKeyExchange sequence */ - sequence?: (number|null); - - /** PendingKeyExchange localBaseKey */ - localBaseKey?: (Uint8Array|null); - - /** PendingKeyExchange localBaseKeyPrivate */ - localBaseKeyPrivate?: (Uint8Array|null); - - /** PendingKeyExchange localRatchetKey */ - localRatchetKey?: (Uint8Array|null); + /** Properties of a PhotoChange. */ + interface IPhotoChange { - /** PendingKeyExchange localRatchetKeyPrivate */ - localRatchetKeyPrivate?: (Uint8Array|null); + /** PhotoChange oldPhoto */ + oldPhoto?: (Uint8Array|null); - /** PendingKeyExchange localIdentityKey */ - localIdentityKey?: (Uint8Array|null); + /** PhotoChange newPhoto */ + newPhoto?: (Uint8Array|null); - /** PendingKeyExchange localIdentityKeyPrivate */ - localIdentityKeyPrivate?: (Uint8Array|null); + /** PhotoChange newPhotoId */ + newPhotoId?: (number|null); } - /** Represents a PendingKeyExchange. */ - class PendingKeyExchange implements IPendingKeyExchange { + /** Represents a PhotoChange. */ + class PhotoChange implements IPhotoChange { /** - * Constructs a new PendingKeyExchange. + * Constructs a new PhotoChange. * @param [properties] Properties to set */ - constructor(properties?: proto.IPendingKeyExchange); - - /** PendingKeyExchange sequence. */ - public sequence: number; - - /** PendingKeyExchange localBaseKey. */ - public localBaseKey: Uint8Array; - - /** PendingKeyExchange localBaseKeyPrivate. */ - public localBaseKeyPrivate: Uint8Array; - - /** PendingKeyExchange localRatchetKey. */ - public localRatchetKey: Uint8Array; + constructor(properties?: proto.IPhotoChange); - /** PendingKeyExchange localRatchetKeyPrivate. */ - public localRatchetKeyPrivate: Uint8Array; + /** PhotoChange oldPhoto. */ + public oldPhoto: Uint8Array; - /** PendingKeyExchange localIdentityKey. */ - public localIdentityKey: Uint8Array; + /** PhotoChange newPhoto. */ + public newPhoto: Uint8Array; - /** PendingKeyExchange localIdentityKeyPrivate. */ - public localIdentityKeyPrivate: Uint8Array; + /** PhotoChange newPhotoId. */ + public newPhotoId: number; /** - * Creates a new PendingKeyExchange instance using the specified properties. + * Creates a new PhotoChange instance using the specified properties. * @param [properties] Properties to set - * @returns PendingKeyExchange instance + * @returns PhotoChange instance */ - public static create(properties?: proto.IPendingKeyExchange): proto.PendingKeyExchange; + public static create(properties?: proto.IPhotoChange): proto.PhotoChange; /** - * Encodes the specified PendingKeyExchange message. Does not implicitly {@link proto.PendingKeyExchange.verify|verify} messages. - * @param message PendingKeyExchange message or plain object to encode + * Encodes the specified PhotoChange message. Does not implicitly {@link proto.PhotoChange.verify|verify} messages. + * @param message PhotoChange message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: proto.IPendingKeyExchange, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: proto.IPhotoChange, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified PendingKeyExchange message, length delimited. Does not implicitly {@link proto.PendingKeyExchange.verify|verify} messages. - * @param message PendingKeyExchange message or plain object to encode + * Encodes the specified PhotoChange message, length delimited. Does not implicitly {@link proto.PhotoChange.verify|verify} messages. + * @param message PhotoChange message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: proto.IPendingKeyExchange, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: proto.IPhotoChange, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a PendingKeyExchange message from the specified reader or buffer. + * Decodes a PhotoChange message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns PendingKeyExchange + * @returns PhotoChange * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.PendingKeyExchange; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.PhotoChange; /** - * Decodes a PendingKeyExchange message from the specified reader or buffer, length delimited. + * Decodes a PhotoChange message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns PendingKeyExchange + * @returns PhotoChange * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.PendingKeyExchange; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.PhotoChange; /** - * Verifies a PendingKeyExchange message. + * Verifies a PhotoChange message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a PendingKeyExchange message from a plain object. Also converts values to their respective internal types. + * Creates a PhotoChange message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns PendingKeyExchange + * @returns PhotoChange */ - public static fromObject(object: { [k: string]: any }): proto.PendingKeyExchange; + public static fromObject(object: { [k: string]: any }): proto.PhotoChange; /** - * Creates a plain object from a PendingKeyExchange message. Also converts values to other types if specified. - * @param message PendingKeyExchange + * Creates a plain object from a PhotoChange message. Also converts values to other types if specified. + * @param message PhotoChange * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: proto.PendingKeyExchange, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: proto.PhotoChange, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this PendingKeyExchange to JSON. + * Converts this PhotoChange to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a PendingPreKey. */ - interface IPendingPreKey { - - /** PendingPreKey preKeyId */ - preKeyId?: (number|null); - - /** PendingPreKey signedPreKeyId */ - signedPreKeyId?: (number|null); + /** Properties of a PinInChat. */ + interface IPinInChat { - /** PendingPreKey baseKey */ - baseKey?: (Uint8Array|null); - } + /** PinInChat type */ + type?: (proto.PinInChat.Type|null); - /** Represents a PendingPreKey. */ - class PendingPreKey implements IPendingPreKey { + /** PinInChat key */ + key?: (proto.IMessageKey|null); - /** - * Constructs a new PendingPreKey. - * @param [properties] Properties to set - */ - constructor(properties?: proto.IPendingPreKey); + /** PinInChat senderTimestampMs */ + senderTimestampMs?: (number|Long|null); - /** PendingPreKey preKeyId. */ - public preKeyId: number; + /** PinInChat serverTimestampMs */ + serverTimestampMs?: (number|Long|null); - /** PendingPreKey signedPreKeyId. */ - public signedPreKeyId: number; + /** PinInChat messageAddOnContextInfo */ + messageAddOnContextInfo?: (proto.IMessageAddOnContextInfo|null); + } - /** PendingPreKey baseKey. */ - public baseKey: Uint8Array; + /** Represents a PinInChat. */ + class PinInChat implements IPinInChat { /** - * Creates a new PendingPreKey instance using the specified properties. + * Constructs a new PinInChat. * @param [properties] Properties to set - * @returns PendingPreKey instance - */ - public static create(properties?: proto.IPendingPreKey): proto.PendingPreKey; - - /** - * Encodes the specified PendingPreKey message. Does not implicitly {@link proto.PendingPreKey.verify|verify} messages. - * @param message PendingPreKey message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: proto.IPendingPreKey, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified PendingPreKey message, length delimited. Does not implicitly {@link proto.PendingPreKey.verify|verify} messages. - * @param message PendingPreKey message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: proto.IPendingPreKey, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a PendingPreKey message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PendingPreKey - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.PendingPreKey; - - /** - * Decodes a PendingPreKey message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PendingPreKey - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.PendingPreKey; - - /** - * Verifies a PendingPreKey message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a PendingPreKey message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PendingPreKey - */ - public static fromObject(object: { [k: string]: any }): proto.PendingPreKey; - - /** - * Creates a plain object from a PendingPreKey message. Also converts values to other types if specified. - * @param message PendingPreKey - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: proto.PendingPreKey, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this PendingPreKey to JSON. - * @returns JSON object */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a PhotoChange. */ - interface IPhotoChange { - - /** PhotoChange oldPhoto */ - oldPhoto?: (Uint8Array|null); + constructor(properties?: proto.IPinInChat); - /** PhotoChange newPhoto */ - newPhoto?: (Uint8Array|null); - - /** PhotoChange newPhotoId */ - newPhotoId?: (number|null); - } - - /** Represents a PhotoChange. */ - class PhotoChange implements IPhotoChange { + /** PinInChat type. */ + public type: proto.PinInChat.Type; - /** - * Constructs a new PhotoChange. - * @param [properties] Properties to set - */ - constructor(properties?: proto.IPhotoChange); + /** PinInChat key. */ + public key?: (proto.IMessageKey|null); - /** PhotoChange oldPhoto. */ - public oldPhoto: Uint8Array; + /** PinInChat senderTimestampMs. */ + public senderTimestampMs: (number|Long); - /** PhotoChange newPhoto. */ - public newPhoto: Uint8Array; + /** PinInChat serverTimestampMs. */ + public serverTimestampMs: (number|Long); - /** PhotoChange newPhotoId. */ - public newPhotoId: number; + /** PinInChat messageAddOnContextInfo. */ + public messageAddOnContextInfo?: (proto.IMessageAddOnContextInfo|null); /** - * Creates a new PhotoChange instance using the specified properties. + * Creates a new PinInChat instance using the specified properties. * @param [properties] Properties to set - * @returns PhotoChange instance + * @returns PinInChat instance */ - public static create(properties?: proto.IPhotoChange): proto.PhotoChange; + public static create(properties?: proto.IPinInChat): proto.PinInChat; /** - * Encodes the specified PhotoChange message. Does not implicitly {@link proto.PhotoChange.verify|verify} messages. - * @param message PhotoChange message or plain object to encode + * Encodes the specified PinInChat message. Does not implicitly {@link proto.PinInChat.verify|verify} messages. + * @param message PinInChat message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: proto.IPhotoChange, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: proto.IPinInChat, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified PhotoChange message, length delimited. Does not implicitly {@link proto.PhotoChange.verify|verify} messages. - * @param message PhotoChange message or plain object to encode + * Encodes the specified PinInChat message, length delimited. Does not implicitly {@link proto.PinInChat.verify|verify} messages. + * @param message PinInChat message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: proto.IPhotoChange, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: proto.IPinInChat, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a PhotoChange message from the specified reader or buffer. + * Decodes a PinInChat message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns PhotoChange + * @returns PinInChat * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.PhotoChange; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.PinInChat; /** - * Decodes a PhotoChange message from the specified reader or buffer, length delimited. + * Decodes a PinInChat message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns PhotoChange + * @returns PinInChat * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.PhotoChange; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.PinInChat; /** - * Verifies a PhotoChange message. + * Verifies a PinInChat message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a PhotoChange message from a plain object. Also converts values to their respective internal types. + * Creates a PinInChat message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns PhotoChange + * @returns PinInChat */ - public static fromObject(object: { [k: string]: any }): proto.PhotoChange; + public static fromObject(object: { [k: string]: any }): proto.PinInChat; /** - * Creates a plain object from a PhotoChange message. Also converts values to other types if specified. - * @param message PhotoChange + * Creates a plain object from a PinInChat message. Also converts values to other types if specified. + * @param message PinInChat * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: proto.PhotoChange, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: proto.PinInChat, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this PhotoChange to JSON. + * Converts this PinInChat to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } + namespace PinInChat { + + /** Type enum. */ + enum Type { + UNKNOWN_TYPE = 0, + PIN_FOR_ALL = 1, + UNPIN_FOR_ALL = 2 + } + } + /** Properties of a Point. */ interface IPoint { @@ -19821,6 +21726,12 @@ export namespace proto { /** PollUpdate senderTimestampMs */ senderTimestampMs?: (number|Long|null); + + /** PollUpdate serverTimestampMs */ + serverTimestampMs?: (number|Long|null); + + /** PollUpdate unread */ + unread?: (boolean|null); } /** Represents a PollUpdate. */ @@ -19841,6 +21752,12 @@ export namespace proto { /** PollUpdate senderTimestampMs. */ public senderTimestampMs: (number|Long); + /** PollUpdate serverTimestampMs. */ + public serverTimestampMs: (number|Long); + + /** PollUpdate unread. */ + public unread: boolean; + /** * Creates a new PollUpdate instance using the specified properties. * @param [properties] Properties to set @@ -20014,11 +21931,131 @@ export namespace proto { public toJSON(): { [k: string]: any }; } - /** Properties of a Pushname. */ - interface IPushname { + /** Properties of a PreKeySignalMessage. */ + interface IPreKeySignalMessage { - /** Pushname id */ - id?: (string|null); + /** PreKeySignalMessage registrationId */ + registrationId?: (number|null); + + /** PreKeySignalMessage preKeyId */ + preKeyId?: (number|null); + + /** PreKeySignalMessage signedPreKeyId */ + signedPreKeyId?: (number|null); + + /** PreKeySignalMessage baseKey */ + baseKey?: (Uint8Array|null); + + /** PreKeySignalMessage identityKey */ + identityKey?: (Uint8Array|null); + + /** PreKeySignalMessage message */ + message?: (Uint8Array|null); + } + + /** Represents a PreKeySignalMessage. */ + class PreKeySignalMessage implements IPreKeySignalMessage { + + /** + * Constructs a new PreKeySignalMessage. + * @param [properties] Properties to set + */ + constructor(properties?: proto.IPreKeySignalMessage); + + /** PreKeySignalMessage registrationId. */ + public registrationId: number; + + /** PreKeySignalMessage preKeyId. */ + public preKeyId: number; + + /** PreKeySignalMessage signedPreKeyId. */ + public signedPreKeyId: number; + + /** PreKeySignalMessage baseKey. */ + public baseKey: Uint8Array; + + /** PreKeySignalMessage identityKey. */ + public identityKey: Uint8Array; + + /** PreKeySignalMessage message. */ + public message: Uint8Array; + + /** + * Creates a new PreKeySignalMessage instance using the specified properties. + * @param [properties] Properties to set + * @returns PreKeySignalMessage instance + */ + public static create(properties?: proto.IPreKeySignalMessage): proto.PreKeySignalMessage; + + /** + * Encodes the specified PreKeySignalMessage message. Does not implicitly {@link proto.PreKeySignalMessage.verify|verify} messages. + * @param message PreKeySignalMessage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.IPreKeySignalMessage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PreKeySignalMessage message, length delimited. Does not implicitly {@link proto.PreKeySignalMessage.verify|verify} messages. + * @param message PreKeySignalMessage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.IPreKeySignalMessage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PreKeySignalMessage message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PreKeySignalMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.PreKeySignalMessage; + + /** + * Decodes a PreKeySignalMessage message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PreKeySignalMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.PreKeySignalMessage; + + /** + * Verifies a PreKeySignalMessage message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PreKeySignalMessage message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PreKeySignalMessage + */ + public static fromObject(object: { [k: string]: any }): proto.PreKeySignalMessage; + + /** + * Creates a plain object from a PreKeySignalMessage message. Also converts values to other types if specified. + * @param message PreKeySignalMessage + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.PreKeySignalMessage, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PreKeySignalMessage to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Pushname. */ + interface IPushname { + + /** Pushname id */ + id?: (string|null); /** Pushname pushname */ pushname?: (string|null); @@ -20416,97 +22453,211 @@ export namespace proto { public toJSON(): { [k: string]: any }; } - /** Properties of a SenderChainKey. */ - interface ISenderChainKey { + /** Properties of a SenderKeyDistributionMessage. */ + interface ISenderKeyDistributionMessage { + + /** SenderKeyDistributionMessage id */ + id?: (number|null); + + /** SenderKeyDistributionMessage iteration */ + iteration?: (number|null); + + /** SenderKeyDistributionMessage chainKey */ + chainKey?: (Uint8Array|null); + + /** SenderKeyDistributionMessage signingKey */ + signingKey?: (Uint8Array|null); + } + + /** Represents a SenderKeyDistributionMessage. */ + class SenderKeyDistributionMessage implements ISenderKeyDistributionMessage { + + /** + * Constructs a new SenderKeyDistributionMessage. + * @param [properties] Properties to set + */ + constructor(properties?: proto.ISenderKeyDistributionMessage); + + /** SenderKeyDistributionMessage id. */ + public id: number; + + /** SenderKeyDistributionMessage iteration. */ + public iteration: number; + + /** SenderKeyDistributionMessage chainKey. */ + public chainKey: Uint8Array; + + /** SenderKeyDistributionMessage signingKey. */ + public signingKey: Uint8Array; + + /** + * Creates a new SenderKeyDistributionMessage instance using the specified properties. + * @param [properties] Properties to set + * @returns SenderKeyDistributionMessage instance + */ + public static create(properties?: proto.ISenderKeyDistributionMessage): proto.SenderKeyDistributionMessage; + + /** + * Encodes the specified SenderKeyDistributionMessage message. Does not implicitly {@link proto.SenderKeyDistributionMessage.verify|verify} messages. + * @param message SenderKeyDistributionMessage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.ISenderKeyDistributionMessage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SenderKeyDistributionMessage message, length delimited. Does not implicitly {@link proto.SenderKeyDistributionMessage.verify|verify} messages. + * @param message SenderKeyDistributionMessage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.ISenderKeyDistributionMessage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SenderKeyDistributionMessage message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SenderKeyDistributionMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SenderKeyDistributionMessage; + + /** + * Decodes a SenderKeyDistributionMessage message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SenderKeyDistributionMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SenderKeyDistributionMessage; + + /** + * Verifies a SenderKeyDistributionMessage message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a SenderKeyDistributionMessage message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SenderKeyDistributionMessage + */ + public static fromObject(object: { [k: string]: any }): proto.SenderKeyDistributionMessage; + + /** + * Creates a plain object from a SenderKeyDistributionMessage message. Also converts values to other types if specified. + * @param message SenderKeyDistributionMessage + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.SenderKeyDistributionMessage, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this SenderKeyDistributionMessage to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a SenderKeyMessage. */ + interface ISenderKeyMessage { - /** SenderChainKey iteration */ + /** SenderKeyMessage id */ + id?: (number|null); + + /** SenderKeyMessage iteration */ iteration?: (number|null); - /** SenderChainKey seed */ - seed?: (Uint8Array|null); + /** SenderKeyMessage ciphertext */ + ciphertext?: (Uint8Array|null); } - /** Represents a SenderChainKey. */ - class SenderChainKey implements ISenderChainKey { + /** Represents a SenderKeyMessage. */ + class SenderKeyMessage implements ISenderKeyMessage { /** - * Constructs a new SenderChainKey. + * Constructs a new SenderKeyMessage. * @param [properties] Properties to set */ - constructor(properties?: proto.ISenderChainKey); + constructor(properties?: proto.ISenderKeyMessage); + + /** SenderKeyMessage id. */ + public id: number; - /** SenderChainKey iteration. */ + /** SenderKeyMessage iteration. */ public iteration: number; - /** SenderChainKey seed. */ - public seed: Uint8Array; + /** SenderKeyMessage ciphertext. */ + public ciphertext: Uint8Array; /** - * Creates a new SenderChainKey instance using the specified properties. + * Creates a new SenderKeyMessage instance using the specified properties. * @param [properties] Properties to set - * @returns SenderChainKey instance + * @returns SenderKeyMessage instance */ - public static create(properties?: proto.ISenderChainKey): proto.SenderChainKey; + public static create(properties?: proto.ISenderKeyMessage): proto.SenderKeyMessage; /** - * Encodes the specified SenderChainKey message. Does not implicitly {@link proto.SenderChainKey.verify|verify} messages. - * @param message SenderChainKey message or plain object to encode + * Encodes the specified SenderKeyMessage message. Does not implicitly {@link proto.SenderKeyMessage.verify|verify} messages. + * @param message SenderKeyMessage message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: proto.ISenderChainKey, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: proto.ISenderKeyMessage, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified SenderChainKey message, length delimited. Does not implicitly {@link proto.SenderChainKey.verify|verify} messages. - * @param message SenderChainKey message or plain object to encode + * Encodes the specified SenderKeyMessage message, length delimited. Does not implicitly {@link proto.SenderKeyMessage.verify|verify} messages. + * @param message SenderKeyMessage message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: proto.ISenderChainKey, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: proto.ISenderKeyMessage, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a SenderChainKey message from the specified reader or buffer. + * Decodes a SenderKeyMessage message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns SenderChainKey + * @returns SenderKeyMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SenderChainKey; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SenderKeyMessage; /** - * Decodes a SenderChainKey message from the specified reader or buffer, length delimited. + * Decodes a SenderKeyMessage message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns SenderChainKey + * @returns SenderKeyMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SenderChainKey; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SenderKeyMessage; /** - * Verifies a SenderChainKey message. + * Verifies a SenderKeyMessage message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a SenderChainKey message from a plain object. Also converts values to their respective internal types. + * Creates a SenderKeyMessage message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns SenderChainKey + * @returns SenderKeyMessage */ - public static fromObject(object: { [k: string]: any }): proto.SenderChainKey; + public static fromObject(object: { [k: string]: any }): proto.SenderKeyMessage; /** - * Creates a plain object from a SenderChainKey message. Also converts values to other types if specified. - * @param message SenderChainKey + * Creates a plain object from a SenderKeyMessage message. Also converts values to other types if specified. + * @param message SenderKeyMessage * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: proto.SenderChainKey, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: proto.SenderKeyMessage, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this SenderChainKey to JSON. + * Converts this SenderKeyMessage to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; @@ -20609,13 +22760,13 @@ export namespace proto { senderKeyId?: (number|null); /** SenderKeyStateStructure senderChainKey */ - senderChainKey?: (proto.ISenderChainKey|null); + senderChainKey?: (proto.SenderKeyStateStructure.ISenderChainKey|null); /** SenderKeyStateStructure senderSigningKey */ - senderSigningKey?: (proto.ISenderSigningKey|null); + senderSigningKey?: (proto.SenderKeyStateStructure.ISenderSigningKey|null); /** SenderKeyStateStructure senderMessageKeys */ - senderMessageKeys?: (proto.ISenderMessageKey[]|null); + senderMessageKeys?: (proto.SenderKeyStateStructure.ISenderMessageKey[]|null); } /** Represents a SenderKeyStateStructure. */ @@ -20631,13 +22782,13 @@ export namespace proto { public senderKeyId: number; /** SenderKeyStateStructure senderChainKey. */ - public senderChainKey?: (proto.ISenderChainKey|null); + public senderChainKey?: (proto.SenderKeyStateStructure.ISenderChainKey|null); /** SenderKeyStateStructure senderSigningKey. */ - public senderSigningKey?: (proto.ISenderSigningKey|null); + public senderSigningKey?: (proto.SenderKeyStateStructure.ISenderSigningKey|null); /** SenderKeyStateStructure senderMessageKeys. */ - public senderMessageKeys: proto.ISenderMessageKey[]; + public senderMessageKeys: proto.SenderKeyStateStructure.ISenderMessageKey[]; /** * Creates a new SenderKeyStateStructure instance using the specified properties. @@ -20710,196 +22861,295 @@ export namespace proto { public toJSON(): { [k: string]: any }; } - /** Properties of a SenderMessageKey. */ - interface ISenderMessageKey { + namespace SenderKeyStateStructure { - /** SenderMessageKey iteration */ - iteration?: (number|null); + /** Properties of a SenderChainKey. */ + interface ISenderChainKey { - /** SenderMessageKey seed */ - seed?: (Uint8Array|null); - } + /** SenderChainKey iteration */ + iteration?: (number|null); - /** Represents a SenderMessageKey. */ - class SenderMessageKey implements ISenderMessageKey { + /** SenderChainKey seed */ + seed?: (Uint8Array|null); + } - /** - * Constructs a new SenderMessageKey. - * @param [properties] Properties to set - */ - constructor(properties?: proto.ISenderMessageKey); + /** Represents a SenderChainKey. */ + class SenderChainKey implements ISenderChainKey { - /** SenderMessageKey iteration. */ - public iteration: number; + /** + * Constructs a new SenderChainKey. + * @param [properties] Properties to set + */ + constructor(properties?: proto.SenderKeyStateStructure.ISenderChainKey); - /** SenderMessageKey seed. */ - public seed: Uint8Array; + /** SenderChainKey iteration. */ + public iteration: number; - /** - * Creates a new SenderMessageKey instance using the specified properties. - * @param [properties] Properties to set - * @returns SenderMessageKey instance - */ - public static create(properties?: proto.ISenderMessageKey): proto.SenderMessageKey; + /** SenderChainKey seed. */ + public seed: Uint8Array; - /** - * Encodes the specified SenderMessageKey message. Does not implicitly {@link proto.SenderMessageKey.verify|verify} messages. - * @param message SenderMessageKey message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: proto.ISenderMessageKey, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Creates a new SenderChainKey instance using the specified properties. + * @param [properties] Properties to set + * @returns SenderChainKey instance + */ + public static create(properties?: proto.SenderKeyStateStructure.ISenderChainKey): proto.SenderKeyStateStructure.SenderChainKey; - /** - * Encodes the specified SenderMessageKey message, length delimited. Does not implicitly {@link proto.SenderMessageKey.verify|verify} messages. - * @param message SenderMessageKey message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: proto.ISenderMessageKey, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Encodes the specified SenderChainKey message. Does not implicitly {@link proto.SenderKeyStateStructure.SenderChainKey.verify|verify} messages. + * @param message SenderChainKey message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.SenderKeyStateStructure.ISenderChainKey, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Decodes a SenderMessageKey message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns SenderMessageKey - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SenderMessageKey; + /** + * Encodes the specified SenderChainKey message, length delimited. Does not implicitly {@link proto.SenderKeyStateStructure.SenderChainKey.verify|verify} messages. + * @param message SenderChainKey message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.SenderKeyStateStructure.ISenderChainKey, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Decodes a SenderMessageKey message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns SenderMessageKey - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SenderMessageKey; + /** + * Decodes a SenderChainKey message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SenderChainKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SenderKeyStateStructure.SenderChainKey; - /** - * Verifies a SenderMessageKey message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Decodes a SenderChainKey message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SenderChainKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SenderKeyStateStructure.SenderChainKey; - /** - * Creates a SenderMessageKey message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns SenderMessageKey - */ - public static fromObject(object: { [k: string]: any }): proto.SenderMessageKey; + /** + * Verifies a SenderChainKey message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Creates a plain object from a SenderMessageKey message. Also converts values to other types if specified. - * @param message SenderMessageKey - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: proto.SenderMessageKey, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** + * Creates a SenderChainKey message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SenderChainKey + */ + public static fromObject(object: { [k: string]: any }): proto.SenderKeyStateStructure.SenderChainKey; - /** - * Converts this SenderMessageKey to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** + * Creates a plain object from a SenderChainKey message. Also converts values to other types if specified. + * @param message SenderChainKey + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.SenderKeyStateStructure.SenderChainKey, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** Properties of a SenderSigningKey. */ - interface ISenderSigningKey { + /** + * Converts this SenderChainKey to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** SenderSigningKey public */ - "public"?: (Uint8Array|null); + /** Properties of a SenderMessageKey. */ + interface ISenderMessageKey { - /** SenderSigningKey private */ - "private"?: (Uint8Array|null); - } + /** SenderMessageKey iteration */ + iteration?: (number|null); - /** Represents a SenderSigningKey. */ - class SenderSigningKey implements ISenderSigningKey { + /** SenderMessageKey seed */ + seed?: (Uint8Array|null); + } - /** - * Constructs a new SenderSigningKey. - * @param [properties] Properties to set - */ - constructor(properties?: proto.ISenderSigningKey); + /** Represents a SenderMessageKey. */ + class SenderMessageKey implements ISenderMessageKey { - /** SenderSigningKey public. */ - public public: Uint8Array; + /** + * Constructs a new SenderMessageKey. + * @param [properties] Properties to set + */ + constructor(properties?: proto.SenderKeyStateStructure.ISenderMessageKey); - /** SenderSigningKey private. */ - public private: Uint8Array; + /** SenderMessageKey iteration. */ + public iteration: number; - /** - * Creates a new SenderSigningKey instance using the specified properties. - * @param [properties] Properties to set - * @returns SenderSigningKey instance - */ - public static create(properties?: proto.ISenderSigningKey): proto.SenderSigningKey; + /** SenderMessageKey seed. */ + public seed: Uint8Array; - /** - * Encodes the specified SenderSigningKey message. Does not implicitly {@link proto.SenderSigningKey.verify|verify} messages. - * @param message SenderSigningKey message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: proto.ISenderSigningKey, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Creates a new SenderMessageKey instance using the specified properties. + * @param [properties] Properties to set + * @returns SenderMessageKey instance + */ + public static create(properties?: proto.SenderKeyStateStructure.ISenderMessageKey): proto.SenderKeyStateStructure.SenderMessageKey; - /** - * Encodes the specified SenderSigningKey message, length delimited. Does not implicitly {@link proto.SenderSigningKey.verify|verify} messages. - * @param message SenderSigningKey message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: proto.ISenderSigningKey, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Encodes the specified SenderMessageKey message. Does not implicitly {@link proto.SenderKeyStateStructure.SenderMessageKey.verify|verify} messages. + * @param message SenderMessageKey message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.SenderKeyStateStructure.ISenderMessageKey, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Decodes a SenderSigningKey message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns SenderSigningKey - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SenderSigningKey; + /** + * Encodes the specified SenderMessageKey message, length delimited. Does not implicitly {@link proto.SenderKeyStateStructure.SenderMessageKey.verify|verify} messages. + * @param message SenderMessageKey message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.SenderKeyStateStructure.ISenderMessageKey, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Decodes a SenderSigningKey message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns SenderSigningKey - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SenderSigningKey; + /** + * Decodes a SenderMessageKey message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SenderMessageKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SenderKeyStateStructure.SenderMessageKey; - /** - * Verifies a SenderSigningKey message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Decodes a SenderMessageKey message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SenderMessageKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SenderKeyStateStructure.SenderMessageKey; - /** - * Creates a SenderSigningKey message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns SenderSigningKey - */ - public static fromObject(object: { [k: string]: any }): proto.SenderSigningKey; + /** + * Verifies a SenderMessageKey message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Creates a plain object from a SenderSigningKey message. Also converts values to other types if specified. - * @param message SenderSigningKey - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: proto.SenderSigningKey, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** + * Creates a SenderMessageKey message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SenderMessageKey + */ + public static fromObject(object: { [k: string]: any }): proto.SenderKeyStateStructure.SenderMessageKey; - /** - * Converts this SenderSigningKey to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + /** + * Creates a plain object from a SenderMessageKey message. Also converts values to other types if specified. + * @param message SenderMessageKey + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.SenderKeyStateStructure.SenderMessageKey, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this SenderMessageKey to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a SenderSigningKey. */ + interface ISenderSigningKey { + + /** SenderSigningKey public */ + "public"?: (Uint8Array|null); + + /** SenderSigningKey private */ + "private"?: (Uint8Array|null); + } + + /** Represents a SenderSigningKey. */ + class SenderSigningKey implements ISenderSigningKey { + + /** + * Constructs a new SenderSigningKey. + * @param [properties] Properties to set + */ + constructor(properties?: proto.SenderKeyStateStructure.ISenderSigningKey); + + /** SenderSigningKey public. */ + public public: Uint8Array; + + /** SenderSigningKey private. */ + public private: Uint8Array; + + /** + * Creates a new SenderSigningKey instance using the specified properties. + * @param [properties] Properties to set + * @returns SenderSigningKey instance + */ + public static create(properties?: proto.SenderKeyStateStructure.ISenderSigningKey): proto.SenderKeyStateStructure.SenderSigningKey; + + /** + * Encodes the specified SenderSigningKey message. Does not implicitly {@link proto.SenderKeyStateStructure.SenderSigningKey.verify|verify} messages. + * @param message SenderSigningKey message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.SenderKeyStateStructure.ISenderSigningKey, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SenderSigningKey message, length delimited. Does not implicitly {@link proto.SenderKeyStateStructure.SenderSigningKey.verify|verify} messages. + * @param message SenderSigningKey message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.SenderKeyStateStructure.ISenderSigningKey, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SenderSigningKey message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SenderSigningKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SenderKeyStateStructure.SenderSigningKey; + + /** + * Decodes a SenderSigningKey message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SenderSigningKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SenderKeyStateStructure.SenderSigningKey; + + /** + * Verifies a SenderSigningKey message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a SenderSigningKey message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SenderSigningKey + */ + public static fromObject(object: { [k: string]: any }): proto.SenderKeyStateStructure.SenderSigningKey; + + /** + * Creates a plain object from a SenderSigningKey message. Also converts values to other types if specified. + * @param message SenderSigningKey + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.SenderKeyStateStructure.SenderSigningKey, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this SenderSigningKey to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } } /** Properties of a ServerErrorReceipt. */ @@ -20954,201 +23204,855 @@ export namespace proto { */ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.ServerErrorReceipt; - /** - * Decodes a ServerErrorReceipt message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ServerErrorReceipt - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.ServerErrorReceipt; + /** + * Decodes a ServerErrorReceipt message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ServerErrorReceipt + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.ServerErrorReceipt; + + /** + * Verifies a ServerErrorReceipt message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ServerErrorReceipt message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ServerErrorReceipt + */ + public static fromObject(object: { [k: string]: any }): proto.ServerErrorReceipt; + + /** + * Creates a plain object from a ServerErrorReceipt message. Also converts values to other types if specified. + * @param message ServerErrorReceipt + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.ServerErrorReceipt, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ServerErrorReceipt to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a SessionStructure. */ + interface ISessionStructure { + + /** SessionStructure sessionVersion */ + sessionVersion?: (number|null); + + /** SessionStructure localIdentityPublic */ + localIdentityPublic?: (Uint8Array|null); + + /** SessionStructure remoteIdentityPublic */ + remoteIdentityPublic?: (Uint8Array|null); + + /** SessionStructure rootKey */ + rootKey?: (Uint8Array|null); + + /** SessionStructure previousCounter */ + previousCounter?: (number|null); + + /** SessionStructure senderChain */ + senderChain?: (proto.SessionStructure.IChain|null); + + /** SessionStructure receiverChains */ + receiverChains?: (proto.SessionStructure.IChain[]|null); + + /** SessionStructure pendingKeyExchange */ + pendingKeyExchange?: (proto.SessionStructure.IPendingKeyExchange|null); + + /** SessionStructure pendingPreKey */ + pendingPreKey?: (proto.SessionStructure.IPendingPreKey|null); + + /** SessionStructure remoteRegistrationId */ + remoteRegistrationId?: (number|null); + + /** SessionStructure localRegistrationId */ + localRegistrationId?: (number|null); + + /** SessionStructure needsRefresh */ + needsRefresh?: (boolean|null); + + /** SessionStructure aliceBaseKey */ + aliceBaseKey?: (Uint8Array|null); + } + + /** Represents a SessionStructure. */ + class SessionStructure implements ISessionStructure { + + /** + * Constructs a new SessionStructure. + * @param [properties] Properties to set + */ + constructor(properties?: proto.ISessionStructure); + + /** SessionStructure sessionVersion. */ + public sessionVersion: number; + + /** SessionStructure localIdentityPublic. */ + public localIdentityPublic: Uint8Array; + + /** SessionStructure remoteIdentityPublic. */ + public remoteIdentityPublic: Uint8Array; + + /** SessionStructure rootKey. */ + public rootKey: Uint8Array; + + /** SessionStructure previousCounter. */ + public previousCounter: number; + + /** SessionStructure senderChain. */ + public senderChain?: (proto.SessionStructure.IChain|null); + + /** SessionStructure receiverChains. */ + public receiverChains: proto.SessionStructure.IChain[]; + + /** SessionStructure pendingKeyExchange. */ + public pendingKeyExchange?: (proto.SessionStructure.IPendingKeyExchange|null); + + /** SessionStructure pendingPreKey. */ + public pendingPreKey?: (proto.SessionStructure.IPendingPreKey|null); + + /** SessionStructure remoteRegistrationId. */ + public remoteRegistrationId: number; + + /** SessionStructure localRegistrationId. */ + public localRegistrationId: number; + + /** SessionStructure needsRefresh. */ + public needsRefresh: boolean; + + /** SessionStructure aliceBaseKey. */ + public aliceBaseKey: Uint8Array; + + /** + * Creates a new SessionStructure instance using the specified properties. + * @param [properties] Properties to set + * @returns SessionStructure instance + */ + public static create(properties?: proto.ISessionStructure): proto.SessionStructure; + + /** + * Encodes the specified SessionStructure message. Does not implicitly {@link proto.SessionStructure.verify|verify} messages. + * @param message SessionStructure message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.ISessionStructure, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SessionStructure message, length delimited. Does not implicitly {@link proto.SessionStructure.verify|verify} messages. + * @param message SessionStructure message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.ISessionStructure, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SessionStructure message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SessionStructure + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SessionStructure; + + /** + * Decodes a SessionStructure message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SessionStructure + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SessionStructure; + + /** + * Verifies a SessionStructure message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a SessionStructure message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SessionStructure + */ + public static fromObject(object: { [k: string]: any }): proto.SessionStructure; + + /** + * Creates a plain object from a SessionStructure message. Also converts values to other types if specified. + * @param message SessionStructure + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.SessionStructure, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this SessionStructure to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace SessionStructure { + + /** Properties of a Chain. */ + interface IChain { + + /** Chain senderRatchetKey */ + senderRatchetKey?: (Uint8Array|null); + + /** Chain senderRatchetKeyPrivate */ + senderRatchetKeyPrivate?: (Uint8Array|null); + + /** Chain chainKey */ + chainKey?: (proto.SessionStructure.Chain.IChainKey|null); + + /** Chain messageKeys */ + messageKeys?: (proto.SessionStructure.Chain.IMessageKey[]|null); + } + + /** Represents a Chain. */ + class Chain implements IChain { + + /** + * Constructs a new Chain. + * @param [properties] Properties to set + */ + constructor(properties?: proto.SessionStructure.IChain); + + /** Chain senderRatchetKey. */ + public senderRatchetKey: Uint8Array; + + /** Chain senderRatchetKeyPrivate. */ + public senderRatchetKeyPrivate: Uint8Array; + + /** Chain chainKey. */ + public chainKey?: (proto.SessionStructure.Chain.IChainKey|null); + + /** Chain messageKeys. */ + public messageKeys: proto.SessionStructure.Chain.IMessageKey[]; + + /** + * Creates a new Chain instance using the specified properties. + * @param [properties] Properties to set + * @returns Chain instance + */ + public static create(properties?: proto.SessionStructure.IChain): proto.SessionStructure.Chain; + + /** + * Encodes the specified Chain message. Does not implicitly {@link proto.SessionStructure.Chain.verify|verify} messages. + * @param message Chain message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.SessionStructure.IChain, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Chain message, length delimited. Does not implicitly {@link proto.SessionStructure.Chain.verify|verify} messages. + * @param message Chain message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.SessionStructure.IChain, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Chain message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Chain + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SessionStructure.Chain; + + /** + * Decodes a Chain message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Chain + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SessionStructure.Chain; + + /** + * Verifies a Chain message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Chain message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Chain + */ + public static fromObject(object: { [k: string]: any }): proto.SessionStructure.Chain; + + /** + * Creates a plain object from a Chain message. Also converts values to other types if specified. + * @param message Chain + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.SessionStructure.Chain, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Chain to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace Chain { + + /** Properties of a ChainKey. */ + interface IChainKey { + + /** ChainKey index */ + index?: (number|null); + + /** ChainKey key */ + key?: (Uint8Array|null); + } + + /** Represents a ChainKey. */ + class ChainKey implements IChainKey { + + /** + * Constructs a new ChainKey. + * @param [properties] Properties to set + */ + constructor(properties?: proto.SessionStructure.Chain.IChainKey); + + /** ChainKey index. */ + public index: number; + + /** ChainKey key. */ + public key: Uint8Array; + + /** + * Creates a new ChainKey instance using the specified properties. + * @param [properties] Properties to set + * @returns ChainKey instance + */ + public static create(properties?: proto.SessionStructure.Chain.IChainKey): proto.SessionStructure.Chain.ChainKey; + + /** + * Encodes the specified ChainKey message. Does not implicitly {@link proto.SessionStructure.Chain.ChainKey.verify|verify} messages. + * @param message ChainKey message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.SessionStructure.Chain.IChainKey, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ChainKey message, length delimited. Does not implicitly {@link proto.SessionStructure.Chain.ChainKey.verify|verify} messages. + * @param message ChainKey message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.SessionStructure.Chain.IChainKey, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ChainKey message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ChainKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SessionStructure.Chain.ChainKey; + + /** + * Decodes a ChainKey message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ChainKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SessionStructure.Chain.ChainKey; + + /** + * Verifies a ChainKey message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ChainKey message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ChainKey + */ + public static fromObject(object: { [k: string]: any }): proto.SessionStructure.Chain.ChainKey; + + /** + * Creates a plain object from a ChainKey message. Also converts values to other types if specified. + * @param message ChainKey + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.SessionStructure.Chain.ChainKey, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ChainKey to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a MessageKey. */ + interface IMessageKey { + + /** MessageKey index */ + index?: (number|null); + + /** MessageKey cipherKey */ + cipherKey?: (Uint8Array|null); + + /** MessageKey macKey */ + macKey?: (Uint8Array|null); + + /** MessageKey iv */ + iv?: (Uint8Array|null); + } + + /** Represents a MessageKey. */ + class MessageKey implements IMessageKey { + + /** + * Constructs a new MessageKey. + * @param [properties] Properties to set + */ + constructor(properties?: proto.SessionStructure.Chain.IMessageKey); + + /** MessageKey index. */ + public index: number; + + /** MessageKey cipherKey. */ + public cipherKey: Uint8Array; + + /** MessageKey macKey. */ + public macKey: Uint8Array; + + /** MessageKey iv. */ + public iv: Uint8Array; + + /** + * Creates a new MessageKey instance using the specified properties. + * @param [properties] Properties to set + * @returns MessageKey instance + */ + public static create(properties?: proto.SessionStructure.Chain.IMessageKey): proto.SessionStructure.Chain.MessageKey; + + /** + * Encodes the specified MessageKey message. Does not implicitly {@link proto.SessionStructure.Chain.MessageKey.verify|verify} messages. + * @param message MessageKey message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.SessionStructure.Chain.IMessageKey, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MessageKey message, length delimited. Does not implicitly {@link proto.SessionStructure.Chain.MessageKey.verify|verify} messages. + * @param message MessageKey message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.SessionStructure.Chain.IMessageKey, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MessageKey message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MessageKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SessionStructure.Chain.MessageKey; + + /** + * Decodes a MessageKey message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MessageKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SessionStructure.Chain.MessageKey; + + /** + * Verifies a MessageKey message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MessageKey message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MessageKey + */ + public static fromObject(object: { [k: string]: any }): proto.SessionStructure.Chain.MessageKey; + + /** + * Creates a plain object from a MessageKey message. Also converts values to other types if specified. + * @param message MessageKey + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.SessionStructure.Chain.MessageKey, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MessageKey to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of a PendingKeyExchange. */ + interface IPendingKeyExchange { + + /** PendingKeyExchange sequence */ + sequence?: (number|null); + + /** PendingKeyExchange localBaseKey */ + localBaseKey?: (Uint8Array|null); + + /** PendingKeyExchange localBaseKeyPrivate */ + localBaseKeyPrivate?: (Uint8Array|null); + + /** PendingKeyExchange localRatchetKey */ + localRatchetKey?: (Uint8Array|null); + + /** PendingKeyExchange localRatchetKeyPrivate */ + localRatchetKeyPrivate?: (Uint8Array|null); + + /** PendingKeyExchange localIdentityKey */ + localIdentityKey?: (Uint8Array|null); + + /** PendingKeyExchange localIdentityKeyPrivate */ + localIdentityKeyPrivate?: (Uint8Array|null); + } + + /** Represents a PendingKeyExchange. */ + class PendingKeyExchange implements IPendingKeyExchange { + + /** + * Constructs a new PendingKeyExchange. + * @param [properties] Properties to set + */ + constructor(properties?: proto.SessionStructure.IPendingKeyExchange); + + /** PendingKeyExchange sequence. */ + public sequence: number; + + /** PendingKeyExchange localBaseKey. */ + public localBaseKey: Uint8Array; + + /** PendingKeyExchange localBaseKeyPrivate. */ + public localBaseKeyPrivate: Uint8Array; + + /** PendingKeyExchange localRatchetKey. */ + public localRatchetKey: Uint8Array; + + /** PendingKeyExchange localRatchetKeyPrivate. */ + public localRatchetKeyPrivate: Uint8Array; + + /** PendingKeyExchange localIdentityKey. */ + public localIdentityKey: Uint8Array; + + /** PendingKeyExchange localIdentityKeyPrivate. */ + public localIdentityKeyPrivate: Uint8Array; + + /** + * Creates a new PendingKeyExchange instance using the specified properties. + * @param [properties] Properties to set + * @returns PendingKeyExchange instance + */ + public static create(properties?: proto.SessionStructure.IPendingKeyExchange): proto.SessionStructure.PendingKeyExchange; + + /** + * Encodes the specified PendingKeyExchange message. Does not implicitly {@link proto.SessionStructure.PendingKeyExchange.verify|verify} messages. + * @param message PendingKeyExchange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.SessionStructure.IPendingKeyExchange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PendingKeyExchange message, length delimited. Does not implicitly {@link proto.SessionStructure.PendingKeyExchange.verify|verify} messages. + * @param message PendingKeyExchange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.SessionStructure.IPendingKeyExchange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PendingKeyExchange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PendingKeyExchange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SessionStructure.PendingKeyExchange; + + /** + * Decodes a PendingKeyExchange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PendingKeyExchange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SessionStructure.PendingKeyExchange; - /** - * Verifies a ServerErrorReceipt message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Verifies a PendingKeyExchange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Creates a ServerErrorReceipt message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ServerErrorReceipt - */ - public static fromObject(object: { [k: string]: any }): proto.ServerErrorReceipt; + /** + * Creates a PendingKeyExchange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PendingKeyExchange + */ + public static fromObject(object: { [k: string]: any }): proto.SessionStructure.PendingKeyExchange; - /** - * Creates a plain object from a ServerErrorReceipt message. Also converts values to other types if specified. - * @param message ServerErrorReceipt - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: proto.ServerErrorReceipt, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** + * Creates a plain object from a PendingKeyExchange message. Also converts values to other types if specified. + * @param message PendingKeyExchange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.SessionStructure.PendingKeyExchange, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** - * Converts this ServerErrorReceipt to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** + * Converts this PendingKeyExchange to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** Properties of a SessionStructure. */ - interface ISessionStructure { + /** Properties of a PendingPreKey. */ + interface IPendingPreKey { - /** SessionStructure sessionVersion */ - sessionVersion?: (number|null); + /** PendingPreKey preKeyId */ + preKeyId?: (number|null); - /** SessionStructure localIdentityPublic */ - localIdentityPublic?: (Uint8Array|null); + /** PendingPreKey signedPreKeyId */ + signedPreKeyId?: (number|null); - /** SessionStructure remoteIdentityPublic */ - remoteIdentityPublic?: (Uint8Array|null); + /** PendingPreKey baseKey */ + baseKey?: (Uint8Array|null); + } - /** SessionStructure rootKey */ - rootKey?: (Uint8Array|null); + /** Represents a PendingPreKey. */ + class PendingPreKey implements IPendingPreKey { - /** SessionStructure previousCounter */ - previousCounter?: (number|null); + /** + * Constructs a new PendingPreKey. + * @param [properties] Properties to set + */ + constructor(properties?: proto.SessionStructure.IPendingPreKey); - /** SessionStructure senderChain */ - senderChain?: (proto.IChain|null); + /** PendingPreKey preKeyId. */ + public preKeyId: number; - /** SessionStructure receiverChains */ - receiverChains?: (proto.IChain[]|null); + /** PendingPreKey signedPreKeyId. */ + public signedPreKeyId: number; - /** SessionStructure pendingKeyExchange */ - pendingKeyExchange?: (proto.IPendingKeyExchange|null); + /** PendingPreKey baseKey. */ + public baseKey: Uint8Array; - /** SessionStructure pendingPreKey */ - pendingPreKey?: (proto.IPendingPreKey|null); + /** + * Creates a new PendingPreKey instance using the specified properties. + * @param [properties] Properties to set + * @returns PendingPreKey instance + */ + public static create(properties?: proto.SessionStructure.IPendingPreKey): proto.SessionStructure.PendingPreKey; - /** SessionStructure remoteRegistrationId */ - remoteRegistrationId?: (number|null); + /** + * Encodes the specified PendingPreKey message. Does not implicitly {@link proto.SessionStructure.PendingPreKey.verify|verify} messages. + * @param message PendingPreKey message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.SessionStructure.IPendingPreKey, writer?: $protobuf.Writer): $protobuf.Writer; - /** SessionStructure localRegistrationId */ - localRegistrationId?: (number|null); + /** + * Encodes the specified PendingPreKey message, length delimited. Does not implicitly {@link proto.SessionStructure.PendingPreKey.verify|verify} messages. + * @param message PendingPreKey message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.SessionStructure.IPendingPreKey, writer?: $protobuf.Writer): $protobuf.Writer; - /** SessionStructure needsRefresh */ - needsRefresh?: (boolean|null); + /** + * Decodes a PendingPreKey message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PendingPreKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SessionStructure.PendingPreKey; - /** SessionStructure aliceBaseKey */ - aliceBaseKey?: (Uint8Array|null); - } + /** + * Decodes a PendingPreKey message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PendingPreKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SessionStructure.PendingPreKey; - /** Represents a SessionStructure. */ - class SessionStructure implements ISessionStructure { + /** + * Verifies a PendingPreKey message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Constructs a new SessionStructure. - * @param [properties] Properties to set - */ - constructor(properties?: proto.ISessionStructure); + /** + * Creates a PendingPreKey message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PendingPreKey + */ + public static fromObject(object: { [k: string]: any }): proto.SessionStructure.PendingPreKey; - /** SessionStructure sessionVersion. */ - public sessionVersion: number; + /** + * Creates a plain object from a PendingPreKey message. Also converts values to other types if specified. + * @param message PendingPreKey + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.SessionStructure.PendingPreKey, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** SessionStructure localIdentityPublic. */ - public localIdentityPublic: Uint8Array; + /** + * Converts this PendingPreKey to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } - /** SessionStructure remoteIdentityPublic. */ - public remoteIdentityPublic: Uint8Array; + /** Properties of a SignalMessage. */ + interface ISignalMessage { - /** SessionStructure rootKey. */ - public rootKey: Uint8Array; + /** SignalMessage ratchetKey */ + ratchetKey?: (Uint8Array|null); - /** SessionStructure previousCounter. */ - public previousCounter: number; + /** SignalMessage counter */ + counter?: (number|null); - /** SessionStructure senderChain. */ - public senderChain?: (proto.IChain|null); + /** SignalMessage previousCounter */ + previousCounter?: (number|null); - /** SessionStructure receiverChains. */ - public receiverChains: proto.IChain[]; + /** SignalMessage ciphertext */ + ciphertext?: (Uint8Array|null); + } - /** SessionStructure pendingKeyExchange. */ - public pendingKeyExchange?: (proto.IPendingKeyExchange|null); + /** Represents a SignalMessage. */ + class SignalMessage implements ISignalMessage { - /** SessionStructure pendingPreKey. */ - public pendingPreKey?: (proto.IPendingPreKey|null); + /** + * Constructs a new SignalMessage. + * @param [properties] Properties to set + */ + constructor(properties?: proto.ISignalMessage); - /** SessionStructure remoteRegistrationId. */ - public remoteRegistrationId: number; + /** SignalMessage ratchetKey. */ + public ratchetKey: Uint8Array; - /** SessionStructure localRegistrationId. */ - public localRegistrationId: number; + /** SignalMessage counter. */ + public counter: number; - /** SessionStructure needsRefresh. */ - public needsRefresh: boolean; + /** SignalMessage previousCounter. */ + public previousCounter: number; - /** SessionStructure aliceBaseKey. */ - public aliceBaseKey: Uint8Array; + /** SignalMessage ciphertext. */ + public ciphertext: Uint8Array; /** - * Creates a new SessionStructure instance using the specified properties. + * Creates a new SignalMessage instance using the specified properties. * @param [properties] Properties to set - * @returns SessionStructure instance + * @returns SignalMessage instance */ - public static create(properties?: proto.ISessionStructure): proto.SessionStructure; + public static create(properties?: proto.ISignalMessage): proto.SignalMessage; /** - * Encodes the specified SessionStructure message. Does not implicitly {@link proto.SessionStructure.verify|verify} messages. - * @param message SessionStructure message or plain object to encode + * Encodes the specified SignalMessage message. Does not implicitly {@link proto.SignalMessage.verify|verify} messages. + * @param message SignalMessage message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: proto.ISessionStructure, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: proto.ISignalMessage, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified SessionStructure message, length delimited. Does not implicitly {@link proto.SessionStructure.verify|verify} messages. - * @param message SessionStructure message or plain object to encode + * Encodes the specified SignalMessage message, length delimited. Does not implicitly {@link proto.SignalMessage.verify|verify} messages. + * @param message SignalMessage message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: proto.ISessionStructure, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: proto.ISignalMessage, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a SessionStructure message from the specified reader or buffer. + * Decodes a SignalMessage message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns SessionStructure + * @returns SignalMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SessionStructure; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SignalMessage; /** - * Decodes a SessionStructure message from the specified reader or buffer, length delimited. + * Decodes a SignalMessage message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns SessionStructure + * @returns SignalMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SessionStructure; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SignalMessage; /** - * Verifies a SessionStructure message. + * Verifies a SignalMessage message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a SessionStructure message from a plain object. Also converts values to their respective internal types. + * Creates a SignalMessage message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns SessionStructure + * @returns SignalMessage */ - public static fromObject(object: { [k: string]: any }): proto.SessionStructure; + public static fromObject(object: { [k: string]: any }): proto.SignalMessage; /** - * Creates a plain object from a SessionStructure message. Also converts values to other types if specified. - * @param message SessionStructure + * Creates a plain object from a SignalMessage message. Also converts values to other types if specified. + * @param message SignalMessage * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: proto.SessionStructure, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: proto.SignalMessage, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this SessionStructure to JSON. + * Converts this SignalMessage to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; @@ -21717,6 +24621,21 @@ export namespace proto { /** SyncActionValue chatAssignmentOpenedStatus */ chatAssignmentOpenedStatus?: (proto.SyncActionValue.IChatAssignmentOpenedStatusAction|null); + + /** SyncActionValue pnForLidChatAction */ + pnForLidChatAction?: (proto.SyncActionValue.IPnForLidChatAction|null); + + /** SyncActionValue marketingMessageAction */ + marketingMessageAction?: (proto.SyncActionValue.IMarketingMessageAction|null); + + /** SyncActionValue marketingMessageBroadcastAction */ + marketingMessageBroadcastAction?: (proto.SyncActionValue.IMarketingMessageBroadcastAction|null); + + /** SyncActionValue externalWebBetaAction */ + externalWebBetaAction?: (proto.SyncActionValue.IExternalWebBetaAction|null); + + /** SyncActionValue privacySettingRelayAllCalls */ + privacySettingRelayAllCalls?: (proto.SyncActionValue.IPrivacySettingRelayAllCalls|null); } /** Represents a SyncActionValue. */ @@ -21821,6 +24740,21 @@ export namespace proto { /** SyncActionValue chatAssignmentOpenedStatus. */ public chatAssignmentOpenedStatus?: (proto.SyncActionValue.IChatAssignmentOpenedStatusAction|null); + /** SyncActionValue pnForLidChatAction. */ + public pnForLidChatAction?: (proto.SyncActionValue.IPnForLidChatAction|null); + + /** SyncActionValue marketingMessageAction. */ + public marketingMessageAction?: (proto.SyncActionValue.IMarketingMessageAction|null); + + /** SyncActionValue marketingMessageBroadcastAction. */ + public marketingMessageBroadcastAction?: (proto.SyncActionValue.IMarketingMessageBroadcastAction|null); + + /** SyncActionValue externalWebBetaAction. */ + public externalWebBetaAction?: (proto.SyncActionValue.IExternalWebBetaAction|null); + + /** SyncActionValue privacySettingRelayAllCalls. */ + public privacySettingRelayAllCalls?: (proto.SyncActionValue.IPrivacySettingRelayAllCalls|null); + /** * Creates a new SyncActionValue instance using the specified properties. * @param [properties] Properties to set @@ -22726,15 +25660,105 @@ export namespace proto { public static fromObject(object: { [k: string]: any }): proto.SyncActionValue.DeleteMessageForMeAction; /** - * Creates a plain object from a DeleteMessageForMeAction message. Also converts values to other types if specified. - * @param message DeleteMessageForMeAction + * Creates a plain object from a DeleteMessageForMeAction message. Also converts values to other types if specified. + * @param message DeleteMessageForMeAction + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.SyncActionValue.DeleteMessageForMeAction, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this DeleteMessageForMeAction to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an ExternalWebBetaAction. */ + interface IExternalWebBetaAction { + + /** ExternalWebBetaAction isOptIn */ + isOptIn?: (boolean|null); + } + + /** Represents an ExternalWebBetaAction. */ + class ExternalWebBetaAction implements IExternalWebBetaAction { + + /** + * Constructs a new ExternalWebBetaAction. + * @param [properties] Properties to set + */ + constructor(properties?: proto.SyncActionValue.IExternalWebBetaAction); + + /** ExternalWebBetaAction isOptIn. */ + public isOptIn: boolean; + + /** + * Creates a new ExternalWebBetaAction instance using the specified properties. + * @param [properties] Properties to set + * @returns ExternalWebBetaAction instance + */ + public static create(properties?: proto.SyncActionValue.IExternalWebBetaAction): proto.SyncActionValue.ExternalWebBetaAction; + + /** + * Encodes the specified ExternalWebBetaAction message. Does not implicitly {@link proto.SyncActionValue.ExternalWebBetaAction.verify|verify} messages. + * @param message ExternalWebBetaAction message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.SyncActionValue.IExternalWebBetaAction, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ExternalWebBetaAction message, length delimited. Does not implicitly {@link proto.SyncActionValue.ExternalWebBetaAction.verify|verify} messages. + * @param message ExternalWebBetaAction message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.SyncActionValue.IExternalWebBetaAction, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExternalWebBetaAction message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExternalWebBetaAction + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SyncActionValue.ExternalWebBetaAction; + + /** + * Decodes an ExternalWebBetaAction message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExternalWebBetaAction + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SyncActionValue.ExternalWebBetaAction; + + /** + * Verifies an ExternalWebBetaAction message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ExternalWebBetaAction message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExternalWebBetaAction + */ + public static fromObject(object: { [k: string]: any }): proto.SyncActionValue.ExternalWebBetaAction; + + /** + * Creates a plain object from an ExternalWebBetaAction message. Also converts values to other types if specified. + * @param message ExternalWebBetaAction * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: proto.SyncActionValue.DeleteMessageForMeAction, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: proto.SyncActionValue.ExternalWebBetaAction, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this DeleteMessageForMeAction to JSON. + * Converts this ExternalWebBetaAction to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; @@ -23214,6 +26238,230 @@ export namespace proto { public toJSON(): { [k: string]: any }; } + /** Properties of a MarketingMessageAction. */ + interface IMarketingMessageAction { + + /** MarketingMessageAction name */ + name?: (string|null); + + /** MarketingMessageAction message */ + message?: (string|null); + + /** MarketingMessageAction type */ + type?: (proto.SyncActionValue.MarketingMessageAction.MarketingMessagePrototypeType|null); + + /** MarketingMessageAction createdAt */ + createdAt?: (number|Long|null); + + /** MarketingMessageAction lastSentAt */ + lastSentAt?: (number|Long|null); + + /** MarketingMessageAction isDeleted */ + isDeleted?: (boolean|null); + + /** MarketingMessageAction mediaId */ + mediaId?: (string|null); + } + + /** Represents a MarketingMessageAction. */ + class MarketingMessageAction implements IMarketingMessageAction { + + /** + * Constructs a new MarketingMessageAction. + * @param [properties] Properties to set + */ + constructor(properties?: proto.SyncActionValue.IMarketingMessageAction); + + /** MarketingMessageAction name. */ + public name: string; + + /** MarketingMessageAction message. */ + public message: string; + + /** MarketingMessageAction type. */ + public type: proto.SyncActionValue.MarketingMessageAction.MarketingMessagePrototypeType; + + /** MarketingMessageAction createdAt. */ + public createdAt: (number|Long); + + /** MarketingMessageAction lastSentAt. */ + public lastSentAt: (number|Long); + + /** MarketingMessageAction isDeleted. */ + public isDeleted: boolean; + + /** MarketingMessageAction mediaId. */ + public mediaId: string; + + /** + * Creates a new MarketingMessageAction instance using the specified properties. + * @param [properties] Properties to set + * @returns MarketingMessageAction instance + */ + public static create(properties?: proto.SyncActionValue.IMarketingMessageAction): proto.SyncActionValue.MarketingMessageAction; + + /** + * Encodes the specified MarketingMessageAction message. Does not implicitly {@link proto.SyncActionValue.MarketingMessageAction.verify|verify} messages. + * @param message MarketingMessageAction message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.SyncActionValue.IMarketingMessageAction, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MarketingMessageAction message, length delimited. Does not implicitly {@link proto.SyncActionValue.MarketingMessageAction.verify|verify} messages. + * @param message MarketingMessageAction message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.SyncActionValue.IMarketingMessageAction, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MarketingMessageAction message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MarketingMessageAction + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SyncActionValue.MarketingMessageAction; + + /** + * Decodes a MarketingMessageAction message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MarketingMessageAction + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SyncActionValue.MarketingMessageAction; + + /** + * Verifies a MarketingMessageAction message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MarketingMessageAction message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MarketingMessageAction + */ + public static fromObject(object: { [k: string]: any }): proto.SyncActionValue.MarketingMessageAction; + + /** + * Creates a plain object from a MarketingMessageAction message. Also converts values to other types if specified. + * @param message MarketingMessageAction + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.SyncActionValue.MarketingMessageAction, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MarketingMessageAction to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace MarketingMessageAction { + + /** MarketingMessagePrototypeType enum. */ + enum MarketingMessagePrototypeType { + PERSONALIZED = 0 + } + } + + /** Properties of a MarketingMessageBroadcastAction. */ + interface IMarketingMessageBroadcastAction { + + /** MarketingMessageBroadcastAction repliedCount */ + repliedCount?: (number|null); + } + + /** Represents a MarketingMessageBroadcastAction. */ + class MarketingMessageBroadcastAction implements IMarketingMessageBroadcastAction { + + /** + * Constructs a new MarketingMessageBroadcastAction. + * @param [properties] Properties to set + */ + constructor(properties?: proto.SyncActionValue.IMarketingMessageBroadcastAction); + + /** MarketingMessageBroadcastAction repliedCount. */ + public repliedCount: number; + + /** + * Creates a new MarketingMessageBroadcastAction instance using the specified properties. + * @param [properties] Properties to set + * @returns MarketingMessageBroadcastAction instance + */ + public static create(properties?: proto.SyncActionValue.IMarketingMessageBroadcastAction): proto.SyncActionValue.MarketingMessageBroadcastAction; + + /** + * Encodes the specified MarketingMessageBroadcastAction message. Does not implicitly {@link proto.SyncActionValue.MarketingMessageBroadcastAction.verify|verify} messages. + * @param message MarketingMessageBroadcastAction message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.SyncActionValue.IMarketingMessageBroadcastAction, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MarketingMessageBroadcastAction message, length delimited. Does not implicitly {@link proto.SyncActionValue.MarketingMessageBroadcastAction.verify|verify} messages. + * @param message MarketingMessageBroadcastAction message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.SyncActionValue.IMarketingMessageBroadcastAction, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MarketingMessageBroadcastAction message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MarketingMessageBroadcastAction + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SyncActionValue.MarketingMessageBroadcastAction; + + /** + * Decodes a MarketingMessageBroadcastAction message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MarketingMessageBroadcastAction + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SyncActionValue.MarketingMessageBroadcastAction; + + /** + * Verifies a MarketingMessageBroadcastAction message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MarketingMessageBroadcastAction message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MarketingMessageBroadcastAction + */ + public static fromObject(object: { [k: string]: any }): proto.SyncActionValue.MarketingMessageBroadcastAction; + + /** + * Creates a plain object from a MarketingMessageBroadcastAction message. Also converts values to other types if specified. + * @param message MarketingMessageBroadcastAction + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.SyncActionValue.MarketingMessageBroadcastAction, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MarketingMessageBroadcastAction to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + /** Properties of a MuteAction. */ interface IMuteAction { @@ -23496,6 +26744,96 @@ export namespace proto { public toJSON(): { [k: string]: any }; } + /** Properties of a PnForLidChatAction. */ + interface IPnForLidChatAction { + + /** PnForLidChatAction pnJid */ + pnJid?: (string|null); + } + + /** Represents a PnForLidChatAction. */ + class PnForLidChatAction implements IPnForLidChatAction { + + /** + * Constructs a new PnForLidChatAction. + * @param [properties] Properties to set + */ + constructor(properties?: proto.SyncActionValue.IPnForLidChatAction); + + /** PnForLidChatAction pnJid. */ + public pnJid: string; + + /** + * Creates a new PnForLidChatAction instance using the specified properties. + * @param [properties] Properties to set + * @returns PnForLidChatAction instance + */ + public static create(properties?: proto.SyncActionValue.IPnForLidChatAction): proto.SyncActionValue.PnForLidChatAction; + + /** + * Encodes the specified PnForLidChatAction message. Does not implicitly {@link proto.SyncActionValue.PnForLidChatAction.verify|verify} messages. + * @param message PnForLidChatAction message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.SyncActionValue.IPnForLidChatAction, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PnForLidChatAction message, length delimited. Does not implicitly {@link proto.SyncActionValue.PnForLidChatAction.verify|verify} messages. + * @param message PnForLidChatAction message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.SyncActionValue.IPnForLidChatAction, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PnForLidChatAction message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PnForLidChatAction + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SyncActionValue.PnForLidChatAction; + + /** + * Decodes a PnForLidChatAction message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PnForLidChatAction + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SyncActionValue.PnForLidChatAction; + + /** + * Verifies a PnForLidChatAction message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PnForLidChatAction message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PnForLidChatAction + */ + public static fromObject(object: { [k: string]: any }): proto.SyncActionValue.PnForLidChatAction; + + /** + * Creates a plain object from a PnForLidChatAction message. Also converts values to other types if specified. + * @param message PnForLidChatAction + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.SyncActionValue.PnForLidChatAction, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PnForLidChatAction to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + /** Properties of a PrimaryFeature. */ interface IPrimaryFeature { @@ -23676,6 +27014,96 @@ export namespace proto { public toJSON(): { [k: string]: any }; } + /** Properties of a PrivacySettingRelayAllCalls. */ + interface IPrivacySettingRelayAllCalls { + + /** PrivacySettingRelayAllCalls isEnabled */ + isEnabled?: (boolean|null); + } + + /** Represents a PrivacySettingRelayAllCalls. */ + class PrivacySettingRelayAllCalls implements IPrivacySettingRelayAllCalls { + + /** + * Constructs a new PrivacySettingRelayAllCalls. + * @param [properties] Properties to set + */ + constructor(properties?: proto.SyncActionValue.IPrivacySettingRelayAllCalls); + + /** PrivacySettingRelayAllCalls isEnabled. */ + public isEnabled: boolean; + + /** + * Creates a new PrivacySettingRelayAllCalls instance using the specified properties. + * @param [properties] Properties to set + * @returns PrivacySettingRelayAllCalls instance + */ + public static create(properties?: proto.SyncActionValue.IPrivacySettingRelayAllCalls): proto.SyncActionValue.PrivacySettingRelayAllCalls; + + /** + * Encodes the specified PrivacySettingRelayAllCalls message. Does not implicitly {@link proto.SyncActionValue.PrivacySettingRelayAllCalls.verify|verify} messages. + * @param message PrivacySettingRelayAllCalls message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: proto.SyncActionValue.IPrivacySettingRelayAllCalls, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PrivacySettingRelayAllCalls message, length delimited. Does not implicitly {@link proto.SyncActionValue.PrivacySettingRelayAllCalls.verify|verify} messages. + * @param message PrivacySettingRelayAllCalls message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: proto.SyncActionValue.IPrivacySettingRelayAllCalls, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PrivacySettingRelayAllCalls message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PrivacySettingRelayAllCalls + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): proto.SyncActionValue.PrivacySettingRelayAllCalls; + + /** + * Decodes a PrivacySettingRelayAllCalls message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PrivacySettingRelayAllCalls + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): proto.SyncActionValue.PrivacySettingRelayAllCalls; + + /** + * Verifies a PrivacySettingRelayAllCalls message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PrivacySettingRelayAllCalls message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PrivacySettingRelayAllCalls + */ + public static fromObject(object: { [k: string]: any }): proto.SyncActionValue.PrivacySettingRelayAllCalls; + + /** + * Creates a plain object from a PrivacySettingRelayAllCalls message. Also converts values to other types if specified. + * @param message PrivacySettingRelayAllCalls + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: proto.SyncActionValue.PrivacySettingRelayAllCalls, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PrivacySettingRelayAllCalls to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + /** Properties of a PushNameSetting. */ interface IPushNameSetting { @@ -27095,6 +30523,9 @@ export namespace proto { /** WebMessageInfo revokeMessageTimestamp */ revokeMessageTimestamp?: (number|Long|null); + + /** WebMessageInfo pinInChat */ + pinInChat?: (proto.IPinInChat|null); } /** Represents a WebMessageInfo. */ @@ -27235,6 +30666,9 @@ export namespace proto { /** WebMessageInfo revokeMessageTimestamp. */ public revokeMessageTimestamp: (number|Long); + /** WebMessageInfo pinInChat. */ + public pinInChat?: (proto.IPinInChat|null); + /** * Creates a new WebMessageInfo instance using the specified properties. * @param [properties] Properties to set @@ -27489,7 +30923,28 @@ export namespace proto { COMMUNITY_PARENT_GROUP_SUBJECT_CHANGED = 158, CAG_INVITE_AUTO_ADD = 159, BIZ_CHAT_ASSIGNMENT_UNASSIGN = 160, - CAG_INVITE_AUTO_JOINED = 161 + CAG_INVITE_AUTO_JOINED = 161, + SCHEDULED_CALL_START_MESSAGE = 162, + COMMUNITY_INVITE_RICH = 163, + COMMUNITY_INVITE_AUTO_ADD_RICH = 164, + SUB_GROUP_INVITE_RICH = 165, + SUB_GROUP_PARTICIPANT_ADD_RICH = 166, + COMMUNITY_LINK_PARENT_GROUP_RICH = 167, + COMMUNITY_PARTICIPANT_ADD_RICH = 168, + SILENCED_UNKNOWN_CALLER_AUDIO = 169, + SILENCED_UNKNOWN_CALLER_VIDEO = 170, + GROUP_MEMBER_ADD_MODE = 171, + GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD = 172, + COMMUNITY_CHANGE_DESCRIPTION = 173, + SENDER_INVITE = 174, + RECEIVER_INVITE = 175, + COMMUNITY_ALLOW_MEMBER_ADDED_GROUPS = 176, + PINNED_MESSAGE_IN_CHAT = 177, + PAYMENT_INVITE_SETUP_INVITER = 178, + PAYMENT_INVITE_SETUP_INVITEE_RECEIVE_ONLY = 179, + PAYMENT_INVITE_SETUP_INVITEE_SEND_AND_RECEIVE = 180, + LINKED_GROUP_CALL_START = 181, + REPORT_TO_ADMIN_ENABLED_STATUS = 182 } } diff --git a/whatsapp_addon/Baileys/WAProto/index.js b/whatsapp_addon/Baileys/WAProto/index.js index bca23b3..134ec0d 100644 --- a/whatsapp_addon/Baileys/WAProto/index.js +++ b/whatsapp_addon/Baileys/WAProto/index.js @@ -27,6 +27,8 @@ $root.proto = (function() { * @property {number|null} [rawId] ADVDeviceIdentity rawId * @property {number|Long|null} [timestamp] ADVDeviceIdentity timestamp * @property {number|null} [keyIndex] ADVDeviceIdentity keyIndex + * @property {proto.ADVEncryptionType|null} [accountType] ADVDeviceIdentity accountType + * @property {proto.ADVEncryptionType|null} [deviceType] ADVDeviceIdentity deviceType */ /** @@ -68,6 +70,22 @@ $root.proto = (function() { */ ADVDeviceIdentity.prototype.keyIndex = 0; + /** + * ADVDeviceIdentity accountType. + * @member {proto.ADVEncryptionType} accountType + * @memberof proto.ADVDeviceIdentity + * @instance + */ + ADVDeviceIdentity.prototype.accountType = 0; + + /** + * ADVDeviceIdentity deviceType. + * @member {proto.ADVEncryptionType} deviceType + * @memberof proto.ADVDeviceIdentity + * @instance + */ + ADVDeviceIdentity.prototype.deviceType = 0; + /** * Creates a new ADVDeviceIdentity instance using the specified properties. * @function create @@ -98,6 +116,10 @@ $root.proto = (function() { writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.timestamp); if (message.keyIndex != null && Object.hasOwnProperty.call(message, "keyIndex")) writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.keyIndex); + if (message.accountType != null && Object.hasOwnProperty.call(message, "accountType")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.accountType); + if (message.deviceType != null && Object.hasOwnProperty.call(message, "deviceType")) + writer.uint32(/* id 5, wireType 0 =*/40).int32(message.deviceType); return writer; }; @@ -141,6 +163,12 @@ $root.proto = (function() { case 3: message.keyIndex = reader.uint32(); break; + case 4: + message.accountType = reader.int32(); + break; + case 5: + message.deviceType = reader.int32(); + break; default: reader.skipType(tag & 7); break; @@ -185,6 +213,22 @@ $root.proto = (function() { if (message.keyIndex != null && message.hasOwnProperty("keyIndex")) if (!$util.isInteger(message.keyIndex)) return "keyIndex: integer expected"; + if (message.accountType != null && message.hasOwnProperty("accountType")) + switch (message.accountType) { + default: + return "accountType: enum value expected"; + case 0: + case 1: + break; + } + if (message.deviceType != null && message.hasOwnProperty("deviceType")) + switch (message.deviceType) { + default: + return "deviceType: enum value expected"; + case 0: + case 1: + break; + } return null; }; @@ -213,6 +257,26 @@ $root.proto = (function() { message.timestamp = new $util.LongBits(object.timestamp.low >>> 0, object.timestamp.high >>> 0).toNumber(true); if (object.keyIndex != null) message.keyIndex = object.keyIndex >>> 0; + switch (object.accountType) { + case "E2EE": + case 0: + message.accountType = 0; + break; + case "HOSTED": + case 1: + message.accountType = 1; + break; + } + switch (object.deviceType) { + case "E2EE": + case 0: + message.deviceType = 0; + break; + case "HOSTED": + case 1: + message.deviceType = 1; + break; + } return message; }; @@ -237,6 +301,8 @@ $root.proto = (function() { } else object.timestamp = options.longs === String ? "0" : 0; object.keyIndex = 0; + object.accountType = options.enums === String ? "E2EE" : 0; + object.deviceType = options.enums === String ? "E2EE" : 0; } if (message.rawId != null && message.hasOwnProperty("rawId")) object.rawId = message.rawId; @@ -247,6 +313,10 @@ $root.proto = (function() { object.timestamp = options.longs === String ? $util.Long.prototype.toString.call(message.timestamp) : options.longs === Number ? new $util.LongBits(message.timestamp.low >>> 0, message.timestamp.high >>> 0).toNumber(true) : message.timestamp; if (message.keyIndex != null && message.hasOwnProperty("keyIndex")) object.keyIndex = message.keyIndex; + if (message.accountType != null && message.hasOwnProperty("accountType")) + object.accountType = options.enums === String ? $root.proto.ADVEncryptionType[message.accountType] : message.accountType; + if (message.deviceType != null && message.hasOwnProperty("deviceType")) + object.deviceType = options.enums === String ? $root.proto.ADVEncryptionType[message.deviceType] : message.deviceType; return object; }; @@ -264,6 +334,20 @@ $root.proto = (function() { return ADVDeviceIdentity; })(); + /** + * ADVEncryptionType enum. + * @name proto.ADVEncryptionType + * @enum {number} + * @property {number} E2EE=0 E2EE value + * @property {number} HOSTED=1 HOSTED value + */ + proto.ADVEncryptionType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "E2EE"] = 0; + values[valuesById[1] = "HOSTED"] = 1; + return values; + })(); + proto.ADVKeyIndexList = (function() { /** @@ -274,6 +358,7 @@ $root.proto = (function() { * @property {number|Long|null} [timestamp] ADVKeyIndexList timestamp * @property {number|null} [currentIndex] ADVKeyIndexList currentIndex * @property {Array.|null} [validIndexes] ADVKeyIndexList validIndexes + * @property {proto.ADVEncryptionType|null} [accountType] ADVKeyIndexList accountType */ /** @@ -324,6 +409,14 @@ $root.proto = (function() { */ ADVKeyIndexList.prototype.validIndexes = $util.emptyArray; + /** + * ADVKeyIndexList accountType. + * @member {proto.ADVEncryptionType} accountType + * @memberof proto.ADVKeyIndexList + * @instance + */ + ADVKeyIndexList.prototype.accountType = 0; + /** * Creates a new ADVKeyIndexList instance using the specified properties. * @function create @@ -360,6 +453,8 @@ $root.proto = (function() { writer.uint32(message.validIndexes[i]); writer.ldelim(); } + if (message.accountType != null && Object.hasOwnProperty.call(message, "accountType")) + writer.uint32(/* id 5, wireType 0 =*/40).int32(message.accountType); return writer; }; @@ -413,6 +508,9 @@ $root.proto = (function() { } else message.validIndexes.push(reader.uint32()); break; + case 5: + message.accountType = reader.int32(); + break; default: reader.skipType(tag & 7); break; @@ -464,6 +562,14 @@ $root.proto = (function() { if (!$util.isInteger(message.validIndexes[i])) return "validIndexes: integer[] expected"; } + if (message.accountType != null && message.hasOwnProperty("accountType")) + switch (message.accountType) { + default: + return "accountType: enum value expected"; + case 0: + case 1: + break; + } return null; }; @@ -499,6 +605,16 @@ $root.proto = (function() { for (var i = 0; i < object.validIndexes.length; ++i) message.validIndexes[i] = object.validIndexes[i] >>> 0; } + switch (object.accountType) { + case "E2EE": + case 0: + message.accountType = 0; + break; + case "HOSTED": + case 1: + message.accountType = 1; + break; + } return message; }; @@ -525,6 +641,7 @@ $root.proto = (function() { } else object.timestamp = options.longs === String ? "0" : 0; object.currentIndex = 0; + object.accountType = options.enums === String ? "E2EE" : 0; } if (message.rawId != null && message.hasOwnProperty("rawId")) object.rawId = message.rawId; @@ -540,6 +657,8 @@ $root.proto = (function() { for (var j = 0; j < message.validIndexes.length; ++j) object.validIndexes[j] = message.validIndexes[j]; } + if (message.accountType != null && message.hasOwnProperty("accountType")) + object.accountType = options.enums === String ? $root.proto.ADVEncryptionType[message.accountType] : message.accountType; return object; }; @@ -3776,28 +3895,24 @@ $root.proto = (function() { return CertChain; })(); - proto.Chain = (function() { + proto.ChatRowOpaqueData = (function() { /** - * Properties of a Chain. + * Properties of a ChatRowOpaqueData. * @memberof proto - * @interface IChain - * @property {Uint8Array|null} [senderRatchetKey] Chain senderRatchetKey - * @property {Uint8Array|null} [senderRatchetKeyPrivate] Chain senderRatchetKeyPrivate - * @property {proto.IChainKey|null} [chainKey] Chain chainKey - * @property {Array.|null} [messageKeys] Chain messageKeys + * @interface IChatRowOpaqueData + * @property {proto.ChatRowOpaqueData.IDraftMessage|null} [draftMessage] ChatRowOpaqueData draftMessage */ /** - * Constructs a new Chain. + * Constructs a new ChatRowOpaqueData. * @memberof proto - * @classdesc Represents a Chain. - * @implements IChain + * @classdesc Represents a ChatRowOpaqueData. + * @implements IChatRowOpaqueData * @constructor - * @param {proto.IChain=} [properties] Properties to set + * @param {proto.IChatRowOpaqueData=} [properties] Properties to set */ - function Chain(properties) { - this.messageKeys = []; + function ChatRowOpaqueData(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -3805,117 +3920,75 @@ $root.proto = (function() { } /** - * Chain senderRatchetKey. - * @member {Uint8Array} senderRatchetKey - * @memberof proto.Chain - * @instance - */ - Chain.prototype.senderRatchetKey = $util.newBuffer([]); - - /** - * Chain senderRatchetKeyPrivate. - * @member {Uint8Array} senderRatchetKeyPrivate - * @memberof proto.Chain - * @instance - */ - Chain.prototype.senderRatchetKeyPrivate = $util.newBuffer([]); - - /** - * Chain chainKey. - * @member {proto.IChainKey|null|undefined} chainKey - * @memberof proto.Chain - * @instance - */ - Chain.prototype.chainKey = null; - - /** - * Chain messageKeys. - * @member {Array.} messageKeys - * @memberof proto.Chain + * ChatRowOpaqueData draftMessage. + * @member {proto.ChatRowOpaqueData.IDraftMessage|null|undefined} draftMessage + * @memberof proto.ChatRowOpaqueData * @instance */ - Chain.prototype.messageKeys = $util.emptyArray; + ChatRowOpaqueData.prototype.draftMessage = null; /** - * Creates a new Chain instance using the specified properties. + * Creates a new ChatRowOpaqueData instance using the specified properties. * @function create - * @memberof proto.Chain + * @memberof proto.ChatRowOpaqueData * @static - * @param {proto.IChain=} [properties] Properties to set - * @returns {proto.Chain} Chain instance + * @param {proto.IChatRowOpaqueData=} [properties] Properties to set + * @returns {proto.ChatRowOpaqueData} ChatRowOpaqueData instance */ - Chain.create = function create(properties) { - return new Chain(properties); + ChatRowOpaqueData.create = function create(properties) { + return new ChatRowOpaqueData(properties); }; /** - * Encodes the specified Chain message. Does not implicitly {@link proto.Chain.verify|verify} messages. + * Encodes the specified ChatRowOpaqueData message. Does not implicitly {@link proto.ChatRowOpaqueData.verify|verify} messages. * @function encode - * @memberof proto.Chain + * @memberof proto.ChatRowOpaqueData * @static - * @param {proto.IChain} message Chain message or plain object to encode + * @param {proto.IChatRowOpaqueData} message ChatRowOpaqueData message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Chain.encode = function encode(message, writer) { + ChatRowOpaqueData.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.senderRatchetKey != null && Object.hasOwnProperty.call(message, "senderRatchetKey")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.senderRatchetKey); - if (message.senderRatchetKeyPrivate != null && Object.hasOwnProperty.call(message, "senderRatchetKeyPrivate")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.senderRatchetKeyPrivate); - if (message.chainKey != null && Object.hasOwnProperty.call(message, "chainKey")) - $root.proto.ChainKey.encode(message.chainKey, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.messageKeys != null && message.messageKeys.length) - for (var i = 0; i < message.messageKeys.length; ++i) - $root.proto.MessageKey.encode(message.messageKeys[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.draftMessage != null && Object.hasOwnProperty.call(message, "draftMessage")) + $root.proto.ChatRowOpaqueData.DraftMessage.encode(message.draftMessage, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Encodes the specified Chain message, length delimited. Does not implicitly {@link proto.Chain.verify|verify} messages. + * Encodes the specified ChatRowOpaqueData message, length delimited. Does not implicitly {@link proto.ChatRowOpaqueData.verify|verify} messages. * @function encodeDelimited - * @memberof proto.Chain + * @memberof proto.ChatRowOpaqueData * @static - * @param {proto.IChain} message Chain message or plain object to encode + * @param {proto.IChatRowOpaqueData} message ChatRowOpaqueData message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Chain.encodeDelimited = function encodeDelimited(message, writer) { + ChatRowOpaqueData.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Chain message from the specified reader or buffer. + * Decodes a ChatRowOpaqueData message from the specified reader or buffer. * @function decode - * @memberof proto.Chain + * @memberof proto.ChatRowOpaqueData * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {proto.Chain} Chain + * @returns {proto.ChatRowOpaqueData} ChatRowOpaqueData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Chain.decode = function decode(reader, length) { + ChatRowOpaqueData.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.Chain(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.ChatRowOpaqueData(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.senderRatchetKey = reader.bytes(); - break; - case 2: - message.senderRatchetKeyPrivate = reader.bytes(); - break; - case 3: - message.chainKey = $root.proto.ChainKey.decode(reader, reader.uint32()); - break; - case 4: - if (!(message.messageKeys && message.messageKeys.length)) - message.messageKeys = []; - message.messageKeys.push($root.proto.MessageKey.decode(reader, reader.uint32())); + message.draftMessage = $root.proto.ChatRowOpaqueData.DraftMessage.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -3926,459 +3999,1206 @@ $root.proto = (function() { }; /** - * Decodes a Chain message from the specified reader or buffer, length delimited. + * Decodes a ChatRowOpaqueData message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof proto.Chain + * @memberof proto.ChatRowOpaqueData * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {proto.Chain} Chain + * @returns {proto.ChatRowOpaqueData} ChatRowOpaqueData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Chain.decodeDelimited = function decodeDelimited(reader) { + ChatRowOpaqueData.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Chain message. + * Verifies a ChatRowOpaqueData message. * @function verify - * @memberof proto.Chain + * @memberof proto.ChatRowOpaqueData * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Chain.verify = function verify(message) { + ChatRowOpaqueData.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.senderRatchetKey != null && message.hasOwnProperty("senderRatchetKey")) - if (!(message.senderRatchetKey && typeof message.senderRatchetKey.length === "number" || $util.isString(message.senderRatchetKey))) - return "senderRatchetKey: buffer expected"; - if (message.senderRatchetKeyPrivate != null && message.hasOwnProperty("senderRatchetKeyPrivate")) - if (!(message.senderRatchetKeyPrivate && typeof message.senderRatchetKeyPrivate.length === "number" || $util.isString(message.senderRatchetKeyPrivate))) - return "senderRatchetKeyPrivate: buffer expected"; - if (message.chainKey != null && message.hasOwnProperty("chainKey")) { - var error = $root.proto.ChainKey.verify(message.chainKey); + if (message.draftMessage != null && message.hasOwnProperty("draftMessage")) { + var error = $root.proto.ChatRowOpaqueData.DraftMessage.verify(message.draftMessage); if (error) - return "chainKey." + error; - } - if (message.messageKeys != null && message.hasOwnProperty("messageKeys")) { - if (!Array.isArray(message.messageKeys)) - return "messageKeys: array expected"; - for (var i = 0; i < message.messageKeys.length; ++i) { - var error = $root.proto.MessageKey.verify(message.messageKeys[i]); - if (error) - return "messageKeys." + error; - } + return "draftMessage." + error; } return null; }; /** - * Creates a Chain message from a plain object. Also converts values to their respective internal types. + * Creates a ChatRowOpaqueData message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof proto.Chain + * @memberof proto.ChatRowOpaqueData * @static * @param {Object.} object Plain object - * @returns {proto.Chain} Chain + * @returns {proto.ChatRowOpaqueData} ChatRowOpaqueData */ - Chain.fromObject = function fromObject(object) { - if (object instanceof $root.proto.Chain) + ChatRowOpaqueData.fromObject = function fromObject(object) { + if (object instanceof $root.proto.ChatRowOpaqueData) return object; - var message = new $root.proto.Chain(); - if (object.senderRatchetKey != null) - if (typeof object.senderRatchetKey === "string") - $util.base64.decode(object.senderRatchetKey, message.senderRatchetKey = $util.newBuffer($util.base64.length(object.senderRatchetKey)), 0); - else if (object.senderRatchetKey.length) - message.senderRatchetKey = object.senderRatchetKey; - if (object.senderRatchetKeyPrivate != null) - if (typeof object.senderRatchetKeyPrivate === "string") - $util.base64.decode(object.senderRatchetKeyPrivate, message.senderRatchetKeyPrivate = $util.newBuffer($util.base64.length(object.senderRatchetKeyPrivate)), 0); - else if (object.senderRatchetKeyPrivate.length) - message.senderRatchetKeyPrivate = object.senderRatchetKeyPrivate; - if (object.chainKey != null) { - if (typeof object.chainKey !== "object") - throw TypeError(".proto.Chain.chainKey: object expected"); - message.chainKey = $root.proto.ChainKey.fromObject(object.chainKey); - } - if (object.messageKeys) { - if (!Array.isArray(object.messageKeys)) - throw TypeError(".proto.Chain.messageKeys: array expected"); - message.messageKeys = []; - for (var i = 0; i < object.messageKeys.length; ++i) { - if (typeof object.messageKeys[i] !== "object") - throw TypeError(".proto.Chain.messageKeys: object expected"); - message.messageKeys[i] = $root.proto.MessageKey.fromObject(object.messageKeys[i]); - } + var message = new $root.proto.ChatRowOpaqueData(); + if (object.draftMessage != null) { + if (typeof object.draftMessage !== "object") + throw TypeError(".proto.ChatRowOpaqueData.draftMessage: object expected"); + message.draftMessage = $root.proto.ChatRowOpaqueData.DraftMessage.fromObject(object.draftMessage); } return message; }; /** - * Creates a plain object from a Chain message. Also converts values to other types if specified. + * Creates a plain object from a ChatRowOpaqueData message. Also converts values to other types if specified. * @function toObject - * @memberof proto.Chain + * @memberof proto.ChatRowOpaqueData * @static - * @param {proto.Chain} message Chain + * @param {proto.ChatRowOpaqueData} message ChatRowOpaqueData * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Chain.toObject = function toObject(message, options) { + ChatRowOpaqueData.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.messageKeys = []; - if (options.defaults) { - if (options.bytes === String) - object.senderRatchetKey = ""; - else { - object.senderRatchetKey = []; - if (options.bytes !== Array) - object.senderRatchetKey = $util.newBuffer(object.senderRatchetKey); - } - if (options.bytes === String) - object.senderRatchetKeyPrivate = ""; - else { - object.senderRatchetKeyPrivate = []; - if (options.bytes !== Array) - object.senderRatchetKeyPrivate = $util.newBuffer(object.senderRatchetKeyPrivate); - } - object.chainKey = null; - } - if (message.senderRatchetKey != null && message.hasOwnProperty("senderRatchetKey")) - object.senderRatchetKey = options.bytes === String ? $util.base64.encode(message.senderRatchetKey, 0, message.senderRatchetKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.senderRatchetKey) : message.senderRatchetKey; - if (message.senderRatchetKeyPrivate != null && message.hasOwnProperty("senderRatchetKeyPrivate")) - object.senderRatchetKeyPrivate = options.bytes === String ? $util.base64.encode(message.senderRatchetKeyPrivate, 0, message.senderRatchetKeyPrivate.length) : options.bytes === Array ? Array.prototype.slice.call(message.senderRatchetKeyPrivate) : message.senderRatchetKeyPrivate; - if (message.chainKey != null && message.hasOwnProperty("chainKey")) - object.chainKey = $root.proto.ChainKey.toObject(message.chainKey, options); - if (message.messageKeys && message.messageKeys.length) { - object.messageKeys = []; - for (var j = 0; j < message.messageKeys.length; ++j) - object.messageKeys[j] = $root.proto.MessageKey.toObject(message.messageKeys[j], options); - } + if (options.defaults) + object.draftMessage = null; + if (message.draftMessage != null && message.hasOwnProperty("draftMessage")) + object.draftMessage = $root.proto.ChatRowOpaqueData.DraftMessage.toObject(message.draftMessage, options); return object; }; /** - * Converts this Chain to JSON. + * Converts this ChatRowOpaqueData to JSON. * @function toJSON - * @memberof proto.Chain + * @memberof proto.ChatRowOpaqueData * @instance * @returns {Object.} JSON object */ - Chain.prototype.toJSON = function toJSON() { + ChatRowOpaqueData.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return Chain; - })(); + ChatRowOpaqueData.DraftMessage = (function() { - proto.ChainKey = (function() { + /** + * Properties of a DraftMessage. + * @memberof proto.ChatRowOpaqueData + * @interface IDraftMessage + * @property {string|null} [text] DraftMessage text + * @property {string|null} [omittedUrl] DraftMessage omittedUrl + * @property {proto.ChatRowOpaqueData.DraftMessage.ICtwaContextLinkData|null} [ctwaContextLinkData] DraftMessage ctwaContextLinkData + * @property {proto.ChatRowOpaqueData.DraftMessage.ICtwaContextData|null} [ctwaContext] DraftMessage ctwaContext + * @property {number|Long|null} [timestamp] DraftMessage timestamp + */ - /** - * Properties of a ChainKey. - * @memberof proto - * @interface IChainKey - * @property {number|null} [index] ChainKey index - * @property {Uint8Array|null} [key] ChainKey key - */ + /** + * Constructs a new DraftMessage. + * @memberof proto.ChatRowOpaqueData + * @classdesc Represents a DraftMessage. + * @implements IDraftMessage + * @constructor + * @param {proto.ChatRowOpaqueData.IDraftMessage=} [properties] Properties to set + */ + function DraftMessage(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Constructs a new ChainKey. - * @memberof proto - * @classdesc Represents a ChainKey. - * @implements IChainKey - * @constructor - * @param {proto.IChainKey=} [properties] Properties to set - */ - function ChainKey(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * DraftMessage text. + * @member {string} text + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @instance + */ + DraftMessage.prototype.text = ""; - /** - * ChainKey index. - * @member {number} index - * @memberof proto.ChainKey - * @instance - */ - ChainKey.prototype.index = 0; + /** + * DraftMessage omittedUrl. + * @member {string} omittedUrl + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @instance + */ + DraftMessage.prototype.omittedUrl = ""; - /** - * ChainKey key. - * @member {Uint8Array} key - * @memberof proto.ChainKey - * @instance - */ - ChainKey.prototype.key = $util.newBuffer([]); + /** + * DraftMessage ctwaContextLinkData. + * @member {proto.ChatRowOpaqueData.DraftMessage.ICtwaContextLinkData|null|undefined} ctwaContextLinkData + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @instance + */ + DraftMessage.prototype.ctwaContextLinkData = null; - /** - * Creates a new ChainKey instance using the specified properties. - * @function create - * @memberof proto.ChainKey - * @static - * @param {proto.IChainKey=} [properties] Properties to set - * @returns {proto.ChainKey} ChainKey instance - */ - ChainKey.create = function create(properties) { - return new ChainKey(properties); - }; + /** + * DraftMessage ctwaContext. + * @member {proto.ChatRowOpaqueData.DraftMessage.ICtwaContextData|null|undefined} ctwaContext + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @instance + */ + DraftMessage.prototype.ctwaContext = null; - /** - * Encodes the specified ChainKey message. Does not implicitly {@link proto.ChainKey.verify|verify} messages. - * @function encode - * @memberof proto.ChainKey - * @static - * @param {proto.IChainKey} message ChainKey message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ChainKey.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.index != null && Object.hasOwnProperty.call(message, "index")) - writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.index); - if (message.key != null && Object.hasOwnProperty.call(message, "key")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.key); - return writer; - }; + /** + * DraftMessage timestamp. + * @member {number|Long} timestamp + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @instance + */ + DraftMessage.prototype.timestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - /** - * Encodes the specified ChainKey message, length delimited. Does not implicitly {@link proto.ChainKey.verify|verify} messages. - * @function encodeDelimited - * @memberof proto.ChainKey - * @static - * @param {proto.IChainKey} message ChainKey message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ChainKey.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Creates a new DraftMessage instance using the specified properties. + * @function create + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @static + * @param {proto.ChatRowOpaqueData.IDraftMessage=} [properties] Properties to set + * @returns {proto.ChatRowOpaqueData.DraftMessage} DraftMessage instance + */ + DraftMessage.create = function create(properties) { + return new DraftMessage(properties); + }; - /** - * Decodes a ChainKey message from the specified reader or buffer. - * @function decode - * @memberof proto.ChainKey - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {proto.ChainKey} ChainKey - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ChainKey.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.ChainKey(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.index = reader.uint32(); - break; - case 2: - message.key = reader.bytes(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + /** + * Encodes the specified DraftMessage message. Does not implicitly {@link proto.ChatRowOpaqueData.DraftMessage.verify|verify} messages. + * @function encode + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @static + * @param {proto.ChatRowOpaqueData.IDraftMessage} message DraftMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DraftMessage.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.text != null && Object.hasOwnProperty.call(message, "text")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.text); + if (message.omittedUrl != null && Object.hasOwnProperty.call(message, "omittedUrl")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.omittedUrl); + if (message.ctwaContextLinkData != null && Object.hasOwnProperty.call(message, "ctwaContextLinkData")) + $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData.encode(message.ctwaContextLinkData, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.ctwaContext != null && Object.hasOwnProperty.call(message, "ctwaContext")) + $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextData.encode(message.ctwaContext, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.timestamp != null && Object.hasOwnProperty.call(message, "timestamp")) + writer.uint32(/* id 5, wireType 0 =*/40).int64(message.timestamp); + return writer; + }; - /** - * Decodes a ChainKey message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof proto.ChainKey - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {proto.ChainKey} ChainKey - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ChainKey.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Encodes the specified DraftMessage message, length delimited. Does not implicitly {@link proto.ChatRowOpaqueData.DraftMessage.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @static + * @param {proto.ChatRowOpaqueData.IDraftMessage} message DraftMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DraftMessage.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Verifies a ChainKey message. - * @function verify - * @memberof proto.ChainKey - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ChainKey.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.index != null && message.hasOwnProperty("index")) - if (!$util.isInteger(message.index)) - return "index: integer expected"; - if (message.key != null && message.hasOwnProperty("key")) - if (!(message.key && typeof message.key.length === "number" || $util.isString(message.key))) - return "key: buffer expected"; - return null; - }; + /** + * Decodes a DraftMessage message from the specified reader or buffer. + * @function decode + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.ChatRowOpaqueData.DraftMessage} DraftMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DraftMessage.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.ChatRowOpaqueData.DraftMessage(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.text = reader.string(); + break; + case 2: + message.omittedUrl = reader.string(); + break; + case 3: + message.ctwaContextLinkData = $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData.decode(reader, reader.uint32()); + break; + case 4: + message.ctwaContext = $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextData.decode(reader, reader.uint32()); + break; + case 5: + message.timestamp = reader.int64(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - /** - * Creates a ChainKey message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof proto.ChainKey - * @static - * @param {Object.} object Plain object - * @returns {proto.ChainKey} ChainKey - */ - ChainKey.fromObject = function fromObject(object) { - if (object instanceof $root.proto.ChainKey) - return object; - var message = new $root.proto.ChainKey(); - if (object.index != null) - message.index = object.index >>> 0; - if (object.key != null) - if (typeof object.key === "string") - $util.base64.decode(object.key, message.key = $util.newBuffer($util.base64.length(object.key)), 0); - else if (object.key.length) - message.key = object.key; - return message; - }; + /** + * Decodes a DraftMessage message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.ChatRowOpaqueData.DraftMessage} DraftMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DraftMessage.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Creates a plain object from a ChainKey message. Also converts values to other types if specified. - * @function toObject - * @memberof proto.ChainKey - * @static - * @param {proto.ChainKey} message ChainKey - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - ChainKey.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.index = 0; - if (options.bytes === String) - object.key = ""; - else { - object.key = []; - if (options.bytes !== Array) - object.key = $util.newBuffer(object.key); + /** + * Verifies a DraftMessage message. + * @function verify + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DraftMessage.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.text != null && message.hasOwnProperty("text")) + if (!$util.isString(message.text)) + return "text: string expected"; + if (message.omittedUrl != null && message.hasOwnProperty("omittedUrl")) + if (!$util.isString(message.omittedUrl)) + return "omittedUrl: string expected"; + if (message.ctwaContextLinkData != null && message.hasOwnProperty("ctwaContextLinkData")) { + var error = $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData.verify(message.ctwaContextLinkData); + if (error) + return "ctwaContextLinkData." + error; } - } - if (message.index != null && message.hasOwnProperty("index")) - object.index = message.index; - if (message.key != null && message.hasOwnProperty("key")) - object.key = options.bytes === String ? $util.base64.encode(message.key, 0, message.key.length) : options.bytes === Array ? Array.prototype.slice.call(message.key) : message.key; - return object; - }; + if (message.ctwaContext != null && message.hasOwnProperty("ctwaContext")) { + var error = $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextData.verify(message.ctwaContext); + if (error) + return "ctwaContext." + error; + } + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + if (!$util.isInteger(message.timestamp) && !(message.timestamp && $util.isInteger(message.timestamp.low) && $util.isInteger(message.timestamp.high))) + return "timestamp: integer|Long expected"; + return null; + }; - /** - * Converts this ChainKey to JSON. - * @function toJSON - * @memberof proto.ChainKey - * @instance - * @returns {Object.} JSON object - */ - ChainKey.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Creates a DraftMessage message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @static + * @param {Object.} object Plain object + * @returns {proto.ChatRowOpaqueData.DraftMessage} DraftMessage + */ + DraftMessage.fromObject = function fromObject(object) { + if (object instanceof $root.proto.ChatRowOpaqueData.DraftMessage) + return object; + var message = new $root.proto.ChatRowOpaqueData.DraftMessage(); + if (object.text != null) + message.text = String(object.text); + if (object.omittedUrl != null) + message.omittedUrl = String(object.omittedUrl); + if (object.ctwaContextLinkData != null) { + if (typeof object.ctwaContextLinkData !== "object") + throw TypeError(".proto.ChatRowOpaqueData.DraftMessage.ctwaContextLinkData: object expected"); + message.ctwaContextLinkData = $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData.fromObject(object.ctwaContextLinkData); + } + if (object.ctwaContext != null) { + if (typeof object.ctwaContext !== "object") + throw TypeError(".proto.ChatRowOpaqueData.DraftMessage.ctwaContext: object expected"); + message.ctwaContext = $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextData.fromObject(object.ctwaContext); + } + if (object.timestamp != null) + if ($util.Long) + (message.timestamp = $util.Long.fromValue(object.timestamp)).unsigned = false; + else if (typeof object.timestamp === "string") + message.timestamp = parseInt(object.timestamp, 10); + else if (typeof object.timestamp === "number") + message.timestamp = object.timestamp; + else if (typeof object.timestamp === "object") + message.timestamp = new $util.LongBits(object.timestamp.low >>> 0, object.timestamp.high >>> 0).toNumber(); + return message; + }; - return ChainKey; - })(); + /** + * Creates a plain object from a DraftMessage message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @static + * @param {proto.ChatRowOpaqueData.DraftMessage} message DraftMessage + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DraftMessage.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.text = ""; + object.omittedUrl = ""; + object.ctwaContextLinkData = null; + object.ctwaContext = null; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.timestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.timestamp = options.longs === String ? "0" : 0; + } + if (message.text != null && message.hasOwnProperty("text")) + object.text = message.text; + if (message.omittedUrl != null && message.hasOwnProperty("omittedUrl")) + object.omittedUrl = message.omittedUrl; + if (message.ctwaContextLinkData != null && message.hasOwnProperty("ctwaContextLinkData")) + object.ctwaContextLinkData = $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData.toObject(message.ctwaContextLinkData, options); + if (message.ctwaContext != null && message.hasOwnProperty("ctwaContext")) + object.ctwaContext = $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextData.toObject(message.ctwaContext, options); + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + if (typeof message.timestamp === "number") + object.timestamp = options.longs === String ? String(message.timestamp) : message.timestamp; + else + object.timestamp = options.longs === String ? $util.Long.prototype.toString.call(message.timestamp) : options.longs === Number ? new $util.LongBits(message.timestamp.low >>> 0, message.timestamp.high >>> 0).toNumber() : message.timestamp; + return object; + }; - proto.ClientPayload = (function() { + /** + * Converts this DraftMessage to JSON. + * @function toJSON + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @instance + * @returns {Object.} JSON object + */ + DraftMessage.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Properties of a ClientPayload. - * @memberof proto - * @interface IClientPayload - * @property {number|Long|null} [username] ClientPayload username - * @property {boolean|null} [passive] ClientPayload passive - * @property {proto.ClientPayload.IUserAgent|null} [userAgent] ClientPayload userAgent - * @property {proto.ClientPayload.IWebInfo|null} [webInfo] ClientPayload webInfo - * @property {string|null} [pushName] ClientPayload pushName - * @property {number|null} [sessionId] ClientPayload sessionId - * @property {boolean|null} [shortConnect] ClientPayload shortConnect - * @property {proto.ClientPayload.ConnectType|null} [connectType] ClientPayload connectType - * @property {proto.ClientPayload.ConnectReason|null} [connectReason] ClientPayload connectReason - * @property {Array.|null} [shards] ClientPayload shards - * @property {proto.ClientPayload.IDNSSource|null} [dnsSource] ClientPayload dnsSource - * @property {number|null} [connectAttemptCount] ClientPayload connectAttemptCount - * @property {number|null} [device] ClientPayload device - * @property {proto.ClientPayload.IDevicePairingRegistrationData|null} [devicePairingData] ClientPayload devicePairingData - * @property {proto.ClientPayload.Product|null} [product] ClientPayload product - * @property {Uint8Array|null} [fbCat] ClientPayload fbCat - * @property {Uint8Array|null} [fbUserAgent] ClientPayload fbUserAgent - * @property {boolean|null} [oc] ClientPayload oc - * @property {number|null} [lc] ClientPayload lc - * @property {proto.ClientPayload.IOSAppExtension|null} [iosAppExtension] ClientPayload iosAppExtension - * @property {number|Long|null} [fbAppId] ClientPayload fbAppId - * @property {Uint8Array|null} [fbDeviceId] ClientPayload fbDeviceId - * @property {boolean|null} [pull] ClientPayload pull - * @property {Uint8Array|null} [paddingBytes] ClientPayload paddingBytes - * @property {proto.ClientPayload.BizMarketSegment|null} [bizMarketSegment] ClientPayload bizMarketSegment - * @property {number|null} [yearClass] ClientPayload yearClass - * @property {number|null} [memClass] ClientPayload memClass - */ + DraftMessage.CtwaContextData = (function() { - /** - * Constructs a new ClientPayload. - * @memberof proto - * @classdesc Represents a ClientPayload. - * @implements IClientPayload - * @constructor - * @param {proto.IClientPayload=} [properties] Properties to set - */ - function ClientPayload(properties) { - this.shards = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Properties of a CtwaContextData. + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @interface ICtwaContextData + * @property {string|null} [conversionSource] CtwaContextData conversionSource + * @property {Uint8Array|null} [conversionData] CtwaContextData conversionData + * @property {string|null} [sourceUrl] CtwaContextData sourceUrl + * @property {string|null} [sourceId] CtwaContextData sourceId + * @property {string|null} [sourceType] CtwaContextData sourceType + * @property {string|null} [title] CtwaContextData title + * @property {string|null} [description] CtwaContextData description + * @property {string|null} [thumbnail] CtwaContextData thumbnail + * @property {string|null} [thumbnailUrl] CtwaContextData thumbnailUrl + * @property {proto.ChatRowOpaqueData.DraftMessage.CtwaContextData.ContextInfoExternalAdReplyInfoMediaType|null} [mediaType] CtwaContextData mediaType + * @property {string|null} [mediaUrl] CtwaContextData mediaUrl + * @property {boolean|null} [isSuspiciousLink] CtwaContextData isSuspiciousLink + */ - /** - * ClientPayload username. - * @member {number|Long} username - * @memberof proto.ClientPayload - * @instance - */ - ClientPayload.prototype.username = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + /** + * Constructs a new CtwaContextData. + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @classdesc Represents a CtwaContextData. + * @implements ICtwaContextData + * @constructor + * @param {proto.ChatRowOpaqueData.DraftMessage.ICtwaContextData=} [properties] Properties to set + */ + function CtwaContextData(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * ClientPayload passive. - * @member {boolean} passive - * @memberof proto.ClientPayload - * @instance - */ - ClientPayload.prototype.passive = false; + /** + * CtwaContextData conversionSource. + * @member {string} conversionSource + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @instance + */ + CtwaContextData.prototype.conversionSource = ""; - /** - * ClientPayload userAgent. - * @member {proto.ClientPayload.IUserAgent|null|undefined} userAgent - * @memberof proto.ClientPayload - * @instance - */ - ClientPayload.prototype.userAgent = null; + /** + * CtwaContextData conversionData. + * @member {Uint8Array} conversionData + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @instance + */ + CtwaContextData.prototype.conversionData = $util.newBuffer([]); - /** - * ClientPayload webInfo. - * @member {proto.ClientPayload.IWebInfo|null|undefined} webInfo - * @memberof proto.ClientPayload - * @instance - */ - ClientPayload.prototype.webInfo = null; + /** + * CtwaContextData sourceUrl. + * @member {string} sourceUrl + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @instance + */ + CtwaContextData.prototype.sourceUrl = ""; - /** - * ClientPayload pushName. + /** + * CtwaContextData sourceId. + * @member {string} sourceId + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @instance + */ + CtwaContextData.prototype.sourceId = ""; + + /** + * CtwaContextData sourceType. + * @member {string} sourceType + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @instance + */ + CtwaContextData.prototype.sourceType = ""; + + /** + * CtwaContextData title. + * @member {string} title + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @instance + */ + CtwaContextData.prototype.title = ""; + + /** + * CtwaContextData description. + * @member {string} description + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @instance + */ + CtwaContextData.prototype.description = ""; + + /** + * CtwaContextData thumbnail. + * @member {string} thumbnail + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @instance + */ + CtwaContextData.prototype.thumbnail = ""; + + /** + * CtwaContextData thumbnailUrl. + * @member {string} thumbnailUrl + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @instance + */ + CtwaContextData.prototype.thumbnailUrl = ""; + + /** + * CtwaContextData mediaType. + * @member {proto.ChatRowOpaqueData.DraftMessage.CtwaContextData.ContextInfoExternalAdReplyInfoMediaType} mediaType + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @instance + */ + CtwaContextData.prototype.mediaType = 0; + + /** + * CtwaContextData mediaUrl. + * @member {string} mediaUrl + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @instance + */ + CtwaContextData.prototype.mediaUrl = ""; + + /** + * CtwaContextData isSuspiciousLink. + * @member {boolean} isSuspiciousLink + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @instance + */ + CtwaContextData.prototype.isSuspiciousLink = false; + + /** + * Creates a new CtwaContextData instance using the specified properties. + * @function create + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @static + * @param {proto.ChatRowOpaqueData.DraftMessage.ICtwaContextData=} [properties] Properties to set + * @returns {proto.ChatRowOpaqueData.DraftMessage.CtwaContextData} CtwaContextData instance + */ + CtwaContextData.create = function create(properties) { + return new CtwaContextData(properties); + }; + + /** + * Encodes the specified CtwaContextData message. Does not implicitly {@link proto.ChatRowOpaqueData.DraftMessage.CtwaContextData.verify|verify} messages. + * @function encode + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @static + * @param {proto.ChatRowOpaqueData.DraftMessage.ICtwaContextData} message CtwaContextData message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CtwaContextData.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.conversionSource != null && Object.hasOwnProperty.call(message, "conversionSource")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.conversionSource); + if (message.conversionData != null && Object.hasOwnProperty.call(message, "conversionData")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.conversionData); + if (message.sourceUrl != null && Object.hasOwnProperty.call(message, "sourceUrl")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.sourceUrl); + if (message.sourceId != null && Object.hasOwnProperty.call(message, "sourceId")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.sourceId); + if (message.sourceType != null && Object.hasOwnProperty.call(message, "sourceType")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.sourceType); + if (message.title != null && Object.hasOwnProperty.call(message, "title")) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.title); + if (message.description != null && Object.hasOwnProperty.call(message, "description")) + writer.uint32(/* id 7, wireType 2 =*/58).string(message.description); + if (message.thumbnail != null && Object.hasOwnProperty.call(message, "thumbnail")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.thumbnail); + if (message.thumbnailUrl != null && Object.hasOwnProperty.call(message, "thumbnailUrl")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.thumbnailUrl); + if (message.mediaType != null && Object.hasOwnProperty.call(message, "mediaType")) + writer.uint32(/* id 10, wireType 0 =*/80).int32(message.mediaType); + if (message.mediaUrl != null && Object.hasOwnProperty.call(message, "mediaUrl")) + writer.uint32(/* id 11, wireType 2 =*/90).string(message.mediaUrl); + if (message.isSuspiciousLink != null && Object.hasOwnProperty.call(message, "isSuspiciousLink")) + writer.uint32(/* id 12, wireType 0 =*/96).bool(message.isSuspiciousLink); + return writer; + }; + + /** + * Encodes the specified CtwaContextData message, length delimited. Does not implicitly {@link proto.ChatRowOpaqueData.DraftMessage.CtwaContextData.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @static + * @param {proto.ChatRowOpaqueData.DraftMessage.ICtwaContextData} message CtwaContextData message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CtwaContextData.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CtwaContextData message from the specified reader or buffer. + * @function decode + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.ChatRowOpaqueData.DraftMessage.CtwaContextData} CtwaContextData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CtwaContextData.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextData(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.conversionSource = reader.string(); + break; + case 2: + message.conversionData = reader.bytes(); + break; + case 3: + message.sourceUrl = reader.string(); + break; + case 4: + message.sourceId = reader.string(); + break; + case 5: + message.sourceType = reader.string(); + break; + case 6: + message.title = reader.string(); + break; + case 7: + message.description = reader.string(); + break; + case 8: + message.thumbnail = reader.string(); + break; + case 9: + message.thumbnailUrl = reader.string(); + break; + case 10: + message.mediaType = reader.int32(); + break; + case 11: + message.mediaUrl = reader.string(); + break; + case 12: + message.isSuspiciousLink = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CtwaContextData message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.ChatRowOpaqueData.DraftMessage.CtwaContextData} CtwaContextData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CtwaContextData.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CtwaContextData message. + * @function verify + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CtwaContextData.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.conversionSource != null && message.hasOwnProperty("conversionSource")) + if (!$util.isString(message.conversionSource)) + return "conversionSource: string expected"; + if (message.conversionData != null && message.hasOwnProperty("conversionData")) + if (!(message.conversionData && typeof message.conversionData.length === "number" || $util.isString(message.conversionData))) + return "conversionData: buffer expected"; + if (message.sourceUrl != null && message.hasOwnProperty("sourceUrl")) + if (!$util.isString(message.sourceUrl)) + return "sourceUrl: string expected"; + if (message.sourceId != null && message.hasOwnProperty("sourceId")) + if (!$util.isString(message.sourceId)) + return "sourceId: string expected"; + if (message.sourceType != null && message.hasOwnProperty("sourceType")) + if (!$util.isString(message.sourceType)) + return "sourceType: string expected"; + if (message.title != null && message.hasOwnProperty("title")) + if (!$util.isString(message.title)) + return "title: string expected"; + if (message.description != null && message.hasOwnProperty("description")) + if (!$util.isString(message.description)) + return "description: string expected"; + if (message.thumbnail != null && message.hasOwnProperty("thumbnail")) + if (!$util.isString(message.thumbnail)) + return "thumbnail: string expected"; + if (message.thumbnailUrl != null && message.hasOwnProperty("thumbnailUrl")) + if (!$util.isString(message.thumbnailUrl)) + return "thumbnailUrl: string expected"; + if (message.mediaType != null && message.hasOwnProperty("mediaType")) + switch (message.mediaType) { + default: + return "mediaType: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.mediaUrl != null && message.hasOwnProperty("mediaUrl")) + if (!$util.isString(message.mediaUrl)) + return "mediaUrl: string expected"; + if (message.isSuspiciousLink != null && message.hasOwnProperty("isSuspiciousLink")) + if (typeof message.isSuspiciousLink !== "boolean") + return "isSuspiciousLink: boolean expected"; + return null; + }; + + /** + * Creates a CtwaContextData message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @static + * @param {Object.} object Plain object + * @returns {proto.ChatRowOpaqueData.DraftMessage.CtwaContextData} CtwaContextData + */ + CtwaContextData.fromObject = function fromObject(object) { + if (object instanceof $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextData) + return object; + var message = new $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextData(); + if (object.conversionSource != null) + message.conversionSource = String(object.conversionSource); + if (object.conversionData != null) + if (typeof object.conversionData === "string") + $util.base64.decode(object.conversionData, message.conversionData = $util.newBuffer($util.base64.length(object.conversionData)), 0); + else if (object.conversionData.length) + message.conversionData = object.conversionData; + if (object.sourceUrl != null) + message.sourceUrl = String(object.sourceUrl); + if (object.sourceId != null) + message.sourceId = String(object.sourceId); + if (object.sourceType != null) + message.sourceType = String(object.sourceType); + if (object.title != null) + message.title = String(object.title); + if (object.description != null) + message.description = String(object.description); + if (object.thumbnail != null) + message.thumbnail = String(object.thumbnail); + if (object.thumbnailUrl != null) + message.thumbnailUrl = String(object.thumbnailUrl); + switch (object.mediaType) { + case "NONE": + case 0: + message.mediaType = 0; + break; + case "IMAGE": + case 1: + message.mediaType = 1; + break; + case "VIDEO": + case 2: + message.mediaType = 2; + break; + } + if (object.mediaUrl != null) + message.mediaUrl = String(object.mediaUrl); + if (object.isSuspiciousLink != null) + message.isSuspiciousLink = Boolean(object.isSuspiciousLink); + return message; + }; + + /** + * Creates a plain object from a CtwaContextData message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @static + * @param {proto.ChatRowOpaqueData.DraftMessage.CtwaContextData} message CtwaContextData + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CtwaContextData.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.conversionSource = ""; + if (options.bytes === String) + object.conversionData = ""; + else { + object.conversionData = []; + if (options.bytes !== Array) + object.conversionData = $util.newBuffer(object.conversionData); + } + object.sourceUrl = ""; + object.sourceId = ""; + object.sourceType = ""; + object.title = ""; + object.description = ""; + object.thumbnail = ""; + object.thumbnailUrl = ""; + object.mediaType = options.enums === String ? "NONE" : 0; + object.mediaUrl = ""; + object.isSuspiciousLink = false; + } + if (message.conversionSource != null && message.hasOwnProperty("conversionSource")) + object.conversionSource = message.conversionSource; + if (message.conversionData != null && message.hasOwnProperty("conversionData")) + object.conversionData = options.bytes === String ? $util.base64.encode(message.conversionData, 0, message.conversionData.length) : options.bytes === Array ? Array.prototype.slice.call(message.conversionData) : message.conversionData; + if (message.sourceUrl != null && message.hasOwnProperty("sourceUrl")) + object.sourceUrl = message.sourceUrl; + if (message.sourceId != null && message.hasOwnProperty("sourceId")) + object.sourceId = message.sourceId; + if (message.sourceType != null && message.hasOwnProperty("sourceType")) + object.sourceType = message.sourceType; + if (message.title != null && message.hasOwnProperty("title")) + object.title = message.title; + if (message.description != null && message.hasOwnProperty("description")) + object.description = message.description; + if (message.thumbnail != null && message.hasOwnProperty("thumbnail")) + object.thumbnail = message.thumbnail; + if (message.thumbnailUrl != null && message.hasOwnProperty("thumbnailUrl")) + object.thumbnailUrl = message.thumbnailUrl; + if (message.mediaType != null && message.hasOwnProperty("mediaType")) + object.mediaType = options.enums === String ? $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextData.ContextInfoExternalAdReplyInfoMediaType[message.mediaType] : message.mediaType; + if (message.mediaUrl != null && message.hasOwnProperty("mediaUrl")) + object.mediaUrl = message.mediaUrl; + if (message.isSuspiciousLink != null && message.hasOwnProperty("isSuspiciousLink")) + object.isSuspiciousLink = message.isSuspiciousLink; + return object; + }; + + /** + * Converts this CtwaContextData to JSON. + * @function toJSON + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextData + * @instance + * @returns {Object.} JSON object + */ + CtwaContextData.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * ContextInfoExternalAdReplyInfoMediaType enum. + * @name proto.ChatRowOpaqueData.DraftMessage.CtwaContextData.ContextInfoExternalAdReplyInfoMediaType + * @enum {number} + * @property {number} NONE=0 NONE value + * @property {number} IMAGE=1 IMAGE value + * @property {number} VIDEO=2 VIDEO value + */ + CtwaContextData.ContextInfoExternalAdReplyInfoMediaType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "NONE"] = 0; + values[valuesById[1] = "IMAGE"] = 1; + values[valuesById[2] = "VIDEO"] = 2; + return values; + })(); + + return CtwaContextData; + })(); + + DraftMessage.CtwaContextLinkData = (function() { + + /** + * Properties of a CtwaContextLinkData. + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @interface ICtwaContextLinkData + * @property {string|null} [context] CtwaContextLinkData context + * @property {string|null} [sourceUrl] CtwaContextLinkData sourceUrl + * @property {string|null} [icebreaker] CtwaContextLinkData icebreaker + * @property {string|null} [phone] CtwaContextLinkData phone + */ + + /** + * Constructs a new CtwaContextLinkData. + * @memberof proto.ChatRowOpaqueData.DraftMessage + * @classdesc Represents a CtwaContextLinkData. + * @implements ICtwaContextLinkData + * @constructor + * @param {proto.ChatRowOpaqueData.DraftMessage.ICtwaContextLinkData=} [properties] Properties to set + */ + function CtwaContextLinkData(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CtwaContextLinkData context. + * @member {string} context + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData + * @instance + */ + CtwaContextLinkData.prototype.context = ""; + + /** + * CtwaContextLinkData sourceUrl. + * @member {string} sourceUrl + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData + * @instance + */ + CtwaContextLinkData.prototype.sourceUrl = ""; + + /** + * CtwaContextLinkData icebreaker. + * @member {string} icebreaker + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData + * @instance + */ + CtwaContextLinkData.prototype.icebreaker = ""; + + /** + * CtwaContextLinkData phone. + * @member {string} phone + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData + * @instance + */ + CtwaContextLinkData.prototype.phone = ""; + + /** + * Creates a new CtwaContextLinkData instance using the specified properties. + * @function create + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData + * @static + * @param {proto.ChatRowOpaqueData.DraftMessage.ICtwaContextLinkData=} [properties] Properties to set + * @returns {proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData} CtwaContextLinkData instance + */ + CtwaContextLinkData.create = function create(properties) { + return new CtwaContextLinkData(properties); + }; + + /** + * Encodes the specified CtwaContextLinkData message. Does not implicitly {@link proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData.verify|verify} messages. + * @function encode + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData + * @static + * @param {proto.ChatRowOpaqueData.DraftMessage.ICtwaContextLinkData} message CtwaContextLinkData message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CtwaContextLinkData.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.context != null && Object.hasOwnProperty.call(message, "context")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.context); + if (message.sourceUrl != null && Object.hasOwnProperty.call(message, "sourceUrl")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.sourceUrl); + if (message.icebreaker != null && Object.hasOwnProperty.call(message, "icebreaker")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.icebreaker); + if (message.phone != null && Object.hasOwnProperty.call(message, "phone")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.phone); + return writer; + }; + + /** + * Encodes the specified CtwaContextLinkData message, length delimited. Does not implicitly {@link proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData + * @static + * @param {proto.ChatRowOpaqueData.DraftMessage.ICtwaContextLinkData} message CtwaContextLinkData message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CtwaContextLinkData.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CtwaContextLinkData message from the specified reader or buffer. + * @function decode + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData} CtwaContextLinkData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CtwaContextLinkData.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.context = reader.string(); + break; + case 2: + message.sourceUrl = reader.string(); + break; + case 3: + message.icebreaker = reader.string(); + break; + case 4: + message.phone = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CtwaContextLinkData message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData} CtwaContextLinkData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CtwaContextLinkData.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CtwaContextLinkData message. + * @function verify + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CtwaContextLinkData.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.context != null && message.hasOwnProperty("context")) + if (!$util.isString(message.context)) + return "context: string expected"; + if (message.sourceUrl != null && message.hasOwnProperty("sourceUrl")) + if (!$util.isString(message.sourceUrl)) + return "sourceUrl: string expected"; + if (message.icebreaker != null && message.hasOwnProperty("icebreaker")) + if (!$util.isString(message.icebreaker)) + return "icebreaker: string expected"; + if (message.phone != null && message.hasOwnProperty("phone")) + if (!$util.isString(message.phone)) + return "phone: string expected"; + return null; + }; + + /** + * Creates a CtwaContextLinkData message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData + * @static + * @param {Object.} object Plain object + * @returns {proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData} CtwaContextLinkData + */ + CtwaContextLinkData.fromObject = function fromObject(object) { + if (object instanceof $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData) + return object; + var message = new $root.proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData(); + if (object.context != null) + message.context = String(object.context); + if (object.sourceUrl != null) + message.sourceUrl = String(object.sourceUrl); + if (object.icebreaker != null) + message.icebreaker = String(object.icebreaker); + if (object.phone != null) + message.phone = String(object.phone); + return message; + }; + + /** + * Creates a plain object from a CtwaContextLinkData message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData + * @static + * @param {proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData} message CtwaContextLinkData + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CtwaContextLinkData.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.context = ""; + object.sourceUrl = ""; + object.icebreaker = ""; + object.phone = ""; + } + if (message.context != null && message.hasOwnProperty("context")) + object.context = message.context; + if (message.sourceUrl != null && message.hasOwnProperty("sourceUrl")) + object.sourceUrl = message.sourceUrl; + if (message.icebreaker != null && message.hasOwnProperty("icebreaker")) + object.icebreaker = message.icebreaker; + if (message.phone != null && message.hasOwnProperty("phone")) + object.phone = message.phone; + return object; + }; + + /** + * Converts this CtwaContextLinkData to JSON. + * @function toJSON + * @memberof proto.ChatRowOpaqueData.DraftMessage.CtwaContextLinkData + * @instance + * @returns {Object.} JSON object + */ + CtwaContextLinkData.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return CtwaContextLinkData; + })(); + + return DraftMessage; + })(); + + return ChatRowOpaqueData; + })(); + + proto.ClientPayload = (function() { + + /** + * Properties of a ClientPayload. + * @memberof proto + * @interface IClientPayload + * @property {number|Long|null} [username] ClientPayload username + * @property {boolean|null} [passive] ClientPayload passive + * @property {proto.ClientPayload.IUserAgent|null} [userAgent] ClientPayload userAgent + * @property {proto.ClientPayload.IWebInfo|null} [webInfo] ClientPayload webInfo + * @property {string|null} [pushName] ClientPayload pushName + * @property {number|null} [sessionId] ClientPayload sessionId + * @property {boolean|null} [shortConnect] ClientPayload shortConnect + * @property {proto.ClientPayload.ConnectType|null} [connectType] ClientPayload connectType + * @property {proto.ClientPayload.ConnectReason|null} [connectReason] ClientPayload connectReason + * @property {Array.|null} [shards] ClientPayload shards + * @property {proto.ClientPayload.IDNSSource|null} [dnsSource] ClientPayload dnsSource + * @property {number|null} [connectAttemptCount] ClientPayload connectAttemptCount + * @property {number|null} [device] ClientPayload device + * @property {proto.ClientPayload.IDevicePairingRegistrationData|null} [devicePairingData] ClientPayload devicePairingData + * @property {proto.ClientPayload.Product|null} [product] ClientPayload product + * @property {Uint8Array|null} [fbCat] ClientPayload fbCat + * @property {Uint8Array|null} [fbUserAgent] ClientPayload fbUserAgent + * @property {boolean|null} [oc] ClientPayload oc + * @property {number|null} [lc] ClientPayload lc + * @property {proto.ClientPayload.IOSAppExtension|null} [iosAppExtension] ClientPayload iosAppExtension + * @property {number|Long|null} [fbAppId] ClientPayload fbAppId + * @property {Uint8Array|null} [fbDeviceId] ClientPayload fbDeviceId + * @property {boolean|null} [pull] ClientPayload pull + * @property {Uint8Array|null} [paddingBytes] ClientPayload paddingBytes + * @property {number|null} [yearClass] ClientPayload yearClass + * @property {number|null} [memClass] ClientPayload memClass + * @property {proto.ClientPayload.IInteropData|null} [interopData] ClientPayload interopData + */ + + /** + * Constructs a new ClientPayload. + * @memberof proto + * @classdesc Represents a ClientPayload. + * @implements IClientPayload + * @constructor + * @param {proto.IClientPayload=} [properties] Properties to set + */ + function ClientPayload(properties) { + this.shards = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ClientPayload username. + * @member {number|Long} username + * @memberof proto.ClientPayload + * @instance + */ + ClientPayload.prototype.username = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * ClientPayload passive. + * @member {boolean} passive + * @memberof proto.ClientPayload + * @instance + */ + ClientPayload.prototype.passive = false; + + /** + * ClientPayload userAgent. + * @member {proto.ClientPayload.IUserAgent|null|undefined} userAgent + * @memberof proto.ClientPayload + * @instance + */ + ClientPayload.prototype.userAgent = null; + + /** + * ClientPayload webInfo. + * @member {proto.ClientPayload.IWebInfo|null|undefined} webInfo + * @memberof proto.ClientPayload + * @instance + */ + ClientPayload.prototype.webInfo = null; + + /** + * ClientPayload pushName. * @member {string} pushName * @memberof proto.ClientPayload * @instance @@ -4537,14 +5357,6 @@ $root.proto = (function() { */ ClientPayload.prototype.paddingBytes = $util.newBuffer([]); - /** - * ClientPayload bizMarketSegment. - * @member {proto.ClientPayload.BizMarketSegment} bizMarketSegment - * @memberof proto.ClientPayload - * @instance - */ - ClientPayload.prototype.bizMarketSegment = 0; - /** * ClientPayload yearClass. * @member {number} yearClass @@ -4561,6 +5373,14 @@ $root.proto = (function() { */ ClientPayload.prototype.memClass = 0; + /** + * ClientPayload interopData. + * @member {proto.ClientPayload.IInteropData|null|undefined} interopData + * @memberof proto.ClientPayload + * @instance + */ + ClientPayload.prototype.interopData = null; + /** * Creates a new ClientPayload instance using the specified properties. * @function create @@ -4634,12 +5454,12 @@ $root.proto = (function() { writer.uint32(/* id 33, wireType 0 =*/264).bool(message.pull); if (message.paddingBytes != null && Object.hasOwnProperty.call(message, "paddingBytes")) writer.uint32(/* id 34, wireType 2 =*/274).bytes(message.paddingBytes); - if (message.bizMarketSegment != null && Object.hasOwnProperty.call(message, "bizMarketSegment")) - writer.uint32(/* id 35, wireType 0 =*/280).int32(message.bizMarketSegment); if (message.yearClass != null && Object.hasOwnProperty.call(message, "yearClass")) writer.uint32(/* id 36, wireType 0 =*/288).int32(message.yearClass); if (message.memClass != null && Object.hasOwnProperty.call(message, "memClass")) writer.uint32(/* id 37, wireType 0 =*/296).int32(message.memClass); + if (message.interopData != null && Object.hasOwnProperty.call(message, "interopData")) + $root.proto.ClientPayload.InteropData.encode(message.interopData, writer.uint32(/* id 38, wireType 2 =*/306).fork()).ldelim(); return writer; }; @@ -4753,15 +5573,15 @@ $root.proto = (function() { case 34: message.paddingBytes = reader.bytes(); break; - case 35: - message.bizMarketSegment = reader.int32(); - break; case 36: message.yearClass = reader.int32(); break; case 37: message.memClass = reader.int32(); break; + case 38: + message.interopData = $root.proto.ClientPayload.InteropData.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -4853,6 +5673,7 @@ $root.proto = (function() { case 3: case 4: case 5: + case 6: break; } if (message.shards != null && message.hasOwnProperty("shards")) { @@ -4884,6 +5705,7 @@ $root.proto = (function() { return "product: enum value expected"; case 0: case 1: + case 2: break; } if (message.fbCat != null && message.hasOwnProperty("fbCat")) @@ -4919,21 +5741,17 @@ $root.proto = (function() { if (message.paddingBytes != null && message.hasOwnProperty("paddingBytes")) if (!(message.paddingBytes && typeof message.paddingBytes.length === "number" || $util.isString(message.paddingBytes))) return "paddingBytes: buffer expected"; - if (message.bizMarketSegment != null && message.hasOwnProperty("bizMarketSegment")) - switch (message.bizMarketSegment) { - default: - return "bizMarketSegment: enum value expected"; - case 0: - case 1: - case 2: - break; - } if (message.yearClass != null && message.hasOwnProperty("yearClass")) if (!$util.isInteger(message.yearClass)) return "yearClass: integer expected"; if (message.memClass != null && message.hasOwnProperty("memClass")) if (!$util.isInteger(message.memClass)) return "memClass: integer expected"; + if (message.interopData != null && message.hasOwnProperty("interopData")) { + var error = $root.proto.ClientPayload.InteropData.verify(message.interopData); + if (error) + return "interopData." + error; + } return null; }; @@ -5063,6 +5881,10 @@ $root.proto = (function() { case 5: message.connectReason = 5; break; + case "UNKNOWN": + case 6: + message.connectReason = 6; + break; } if (object.shards) { if (!Array.isArray(object.shards)) @@ -5094,6 +5916,10 @@ $root.proto = (function() { case 1: message.product = 1; break; + case "INTEROP": + case 2: + message.product = 2; + break; } if (object.fbCat != null) if (typeof object.fbCat === "string") @@ -5144,24 +5970,15 @@ $root.proto = (function() { $util.base64.decode(object.paddingBytes, message.paddingBytes = $util.newBuffer($util.base64.length(object.paddingBytes)), 0); else if (object.paddingBytes.length) message.paddingBytes = object.paddingBytes; - switch (object.bizMarketSegment) { - case "DEFAULT": - case 0: - message.bizMarketSegment = 0; - break; - case "DEVX": - case 1: - message.bizMarketSegment = 1; - break; - case "INBOX": - case 2: - message.bizMarketSegment = 2; - break; - } if (object.yearClass != null) message.yearClass = object.yearClass | 0; if (object.memClass != null) message.memClass = object.memClass | 0; + if (object.interopData != null) { + if (typeof object.interopData !== "object") + throw TypeError(".proto.ClientPayload.interopData: object expected"); + message.interopData = $root.proto.ClientPayload.InteropData.fromObject(object.interopData); + } return message; }; @@ -5236,9 +6053,9 @@ $root.proto = (function() { if (options.bytes !== Array) object.paddingBytes = $util.newBuffer(object.paddingBytes); } - object.bizMarketSegment = options.enums === String ? "DEFAULT" : 0; object.yearClass = 0; object.memClass = 0; + object.interopData = null; } if (message.username != null && message.hasOwnProperty("username")) if (typeof message.username === "number") @@ -5297,12 +6114,12 @@ $root.proto = (function() { object.pull = message.pull; if (message.paddingBytes != null && message.hasOwnProperty("paddingBytes")) object.paddingBytes = options.bytes === String ? $util.base64.encode(message.paddingBytes, 0, message.paddingBytes.length) : options.bytes === Array ? Array.prototype.slice.call(message.paddingBytes) : message.paddingBytes; - if (message.bizMarketSegment != null && message.hasOwnProperty("bizMarketSegment")) - object.bizMarketSegment = options.enums === String ? $root.proto.ClientPayload.BizMarketSegment[message.bizMarketSegment] : message.bizMarketSegment; if (message.yearClass != null && message.hasOwnProperty("yearClass")) object.yearClass = message.yearClass; if (message.memClass != null && message.hasOwnProperty("memClass")) object.memClass = message.memClass; + if (message.interopData != null && message.hasOwnProperty("interopData")) + object.interopData = $root.proto.ClientPayload.InteropData.toObject(message.interopData, options); return object; }; @@ -5317,22 +6134,6 @@ $root.proto = (function() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - /** - * BizMarketSegment enum. - * @name proto.ClientPayload.BizMarketSegment - * @enum {number} - * @property {number} DEFAULT=0 DEFAULT value - * @property {number} DEVX=1 DEVX value - * @property {number} INBOX=2 INBOX value - */ - ClientPayload.BizMarketSegment = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "DEFAULT"] = 0; - values[valuesById[1] = "DEVX"] = 1; - values[valuesById[2] = "INBOX"] = 2; - return values; - })(); - /** * ConnectReason enum. * @name proto.ClientPayload.ConnectReason @@ -5343,6 +6144,7 @@ $root.proto = (function() { * @property {number} ERROR_RECONNECT=3 ERROR_RECONNECT value * @property {number} NETWORK_SWITCH=4 NETWORK_SWITCH value * @property {number} PING_RECONNECT=5 PING_RECONNECT value + * @property {number} UNKNOWN=6 UNKNOWN value */ ClientPayload.ConnectReason = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -5352,6 +6154,7 @@ $root.proto = (function() { values[valuesById[3] = "ERROR_RECONNECT"] = 3; values[valuesById[4] = "NETWORK_SWITCH"] = 4; values[valuesById[5] = "PING_RECONNECT"] = 5; + values[valuesById[6] = "UNKNOWN"] = 6; return values; })(); @@ -6083,17 +6886,274 @@ $root.proto = (function() { return values; })(); + ClientPayload.InteropData = (function() { + + /** + * Properties of an InteropData. + * @memberof proto.ClientPayload + * @interface IInteropData + * @property {number|Long|null} [accountId] InteropData accountId + * @property {number|null} [integratorId] InteropData integratorId + * @property {Uint8Array|null} [token] InteropData token + */ + + /** + * Constructs a new InteropData. + * @memberof proto.ClientPayload + * @classdesc Represents an InteropData. + * @implements IInteropData + * @constructor + * @param {proto.ClientPayload.IInteropData=} [properties] Properties to set + */ + function InteropData(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * InteropData accountId. + * @member {number|Long} accountId + * @memberof proto.ClientPayload.InteropData + * @instance + */ + InteropData.prototype.accountId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * InteropData integratorId. + * @member {number} integratorId + * @memberof proto.ClientPayload.InteropData + * @instance + */ + InteropData.prototype.integratorId = 0; + + /** + * InteropData token. + * @member {Uint8Array} token + * @memberof proto.ClientPayload.InteropData + * @instance + */ + InteropData.prototype.token = $util.newBuffer([]); + + /** + * Creates a new InteropData instance using the specified properties. + * @function create + * @memberof proto.ClientPayload.InteropData + * @static + * @param {proto.ClientPayload.IInteropData=} [properties] Properties to set + * @returns {proto.ClientPayload.InteropData} InteropData instance + */ + InteropData.create = function create(properties) { + return new InteropData(properties); + }; + + /** + * Encodes the specified InteropData message. Does not implicitly {@link proto.ClientPayload.InteropData.verify|verify} messages. + * @function encode + * @memberof proto.ClientPayload.InteropData + * @static + * @param {proto.ClientPayload.IInteropData} message InteropData message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + InteropData.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.accountId != null && Object.hasOwnProperty.call(message, "accountId")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.accountId); + if (message.integratorId != null && Object.hasOwnProperty.call(message, "integratorId")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.integratorId); + if (message.token != null && Object.hasOwnProperty.call(message, "token")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.token); + return writer; + }; + + /** + * Encodes the specified InteropData message, length delimited. Does not implicitly {@link proto.ClientPayload.InteropData.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.ClientPayload.InteropData + * @static + * @param {proto.ClientPayload.IInteropData} message InteropData message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + InteropData.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an InteropData message from the specified reader or buffer. + * @function decode + * @memberof proto.ClientPayload.InteropData + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.ClientPayload.InteropData} InteropData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + InteropData.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.ClientPayload.InteropData(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.accountId = reader.uint64(); + break; + case 2: + message.integratorId = reader.uint32(); + break; + case 3: + message.token = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an InteropData message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.ClientPayload.InteropData + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.ClientPayload.InteropData} InteropData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + InteropData.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an InteropData message. + * @function verify + * @memberof proto.ClientPayload.InteropData + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + InteropData.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.accountId != null && message.hasOwnProperty("accountId")) + if (!$util.isInteger(message.accountId) && !(message.accountId && $util.isInteger(message.accountId.low) && $util.isInteger(message.accountId.high))) + return "accountId: integer|Long expected"; + if (message.integratorId != null && message.hasOwnProperty("integratorId")) + if (!$util.isInteger(message.integratorId)) + return "integratorId: integer expected"; + if (message.token != null && message.hasOwnProperty("token")) + if (!(message.token && typeof message.token.length === "number" || $util.isString(message.token))) + return "token: buffer expected"; + return null; + }; + + /** + * Creates an InteropData message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.ClientPayload.InteropData + * @static + * @param {Object.} object Plain object + * @returns {proto.ClientPayload.InteropData} InteropData + */ + InteropData.fromObject = function fromObject(object) { + if (object instanceof $root.proto.ClientPayload.InteropData) + return object; + var message = new $root.proto.ClientPayload.InteropData(); + if (object.accountId != null) + if ($util.Long) + (message.accountId = $util.Long.fromValue(object.accountId)).unsigned = true; + else if (typeof object.accountId === "string") + message.accountId = parseInt(object.accountId, 10); + else if (typeof object.accountId === "number") + message.accountId = object.accountId; + else if (typeof object.accountId === "object") + message.accountId = new $util.LongBits(object.accountId.low >>> 0, object.accountId.high >>> 0).toNumber(true); + if (object.integratorId != null) + message.integratorId = object.integratorId >>> 0; + if (object.token != null) + if (typeof object.token === "string") + $util.base64.decode(object.token, message.token = $util.newBuffer($util.base64.length(object.token)), 0); + else if (object.token.length) + message.token = object.token; + return message; + }; + + /** + * Creates a plain object from an InteropData message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.ClientPayload.InteropData + * @static + * @param {proto.ClientPayload.InteropData} message InteropData + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + InteropData.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.accountId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.accountId = options.longs === String ? "0" : 0; + object.integratorId = 0; + if (options.bytes === String) + object.token = ""; + else { + object.token = []; + if (options.bytes !== Array) + object.token = $util.newBuffer(object.token); + } + } + if (message.accountId != null && message.hasOwnProperty("accountId")) + if (typeof message.accountId === "number") + object.accountId = options.longs === String ? String(message.accountId) : message.accountId; + else + object.accountId = options.longs === String ? $util.Long.prototype.toString.call(message.accountId) : options.longs === Number ? new $util.LongBits(message.accountId.low >>> 0, message.accountId.high >>> 0).toNumber(true) : message.accountId; + if (message.integratorId != null && message.hasOwnProperty("integratorId")) + object.integratorId = message.integratorId; + if (message.token != null && message.hasOwnProperty("token")) + object.token = options.bytes === String ? $util.base64.encode(message.token, 0, message.token.length) : options.bytes === Array ? Array.prototype.slice.call(message.token) : message.token; + return object; + }; + + /** + * Converts this InteropData to JSON. + * @function toJSON + * @memberof proto.ClientPayload.InteropData + * @instance + * @returns {Object.} JSON object + */ + InteropData.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return InteropData; + })(); + /** * Product enum. * @name proto.ClientPayload.Product * @enum {number} * @property {number} WHATSAPP=0 WHATSAPP value * @property {number} MESSENGER=1 MESSENGER value + * @property {number} INTEROP=2 INTEROP value */ ClientPayload.Product = (function() { var valuesById = {}, values = Object.create(valuesById); values[valuesById[0] = "WHATSAPP"] = 0; values[valuesById[1] = "MESSENGER"] = 1; + values[valuesById[2] = "INTEROP"] = 2; return values; })(); @@ -6116,6 +7176,7 @@ $root.proto = (function() { * @property {string|null} [localeLanguageIso6391] UserAgent localeLanguageIso6391 * @property {string|null} [localeCountryIso31661Alpha2] UserAgent localeCountryIso31661Alpha2 * @property {string|null} [deviceBoard] UserAgent deviceBoard + * @property {string|null} [deviceExpId] UserAgent deviceExpId */ /** @@ -6237,6 +7298,14 @@ $root.proto = (function() { */ UserAgent.prototype.deviceBoard = ""; + /** + * UserAgent deviceExpId. + * @member {string} deviceExpId + * @memberof proto.ClientPayload.UserAgent + * @instance + */ + UserAgent.prototype.deviceExpId = ""; + /** * Creates a new UserAgent instance using the specified properties. * @function create @@ -6287,6 +7356,8 @@ $root.proto = (function() { writer.uint32(/* id 12, wireType 2 =*/98).string(message.localeCountryIso31661Alpha2); if (message.deviceBoard != null && Object.hasOwnProperty.call(message, "deviceBoard")) writer.uint32(/* id 13, wireType 2 =*/106).string(message.deviceBoard); + if (message.deviceExpId != null && Object.hasOwnProperty.call(message, "deviceExpId")) + writer.uint32(/* id 14, wireType 2 =*/114).string(message.deviceExpId); return writer; }; @@ -6360,6 +7431,9 @@ $root.proto = (function() { case 13: message.deviceBoard = reader.string(); break; + case 14: + message.deviceExpId = reader.string(); + break; default: reader.skipType(tag & 7); break; @@ -6431,6 +7505,8 @@ $root.proto = (function() { case 29: case 30: case 31: + case 32: + case 33: break; } if (message.appVersion != null && message.hasOwnProperty("appVersion")) { @@ -6478,6 +7554,9 @@ $root.proto = (function() { if (message.deviceBoard != null && message.hasOwnProperty("deviceBoard")) if (!$util.isString(message.deviceBoard)) return "deviceBoard: string expected"; + if (message.deviceExpId != null && message.hasOwnProperty("deviceExpId")) + if (!$util.isString(message.deviceExpId)) + return "deviceExpId: string expected"; return null; }; @@ -6622,6 +7701,14 @@ $root.proto = (function() { case 31: message.platform = 31; break; + case "BLUE_WEB": + case 32: + message.platform = 32; + break; + case "IPAD": + case 33: + message.platform = 33; + break; } if (object.appVersion != null) { if (typeof object.appVersion !== "object") @@ -6666,6 +7753,8 @@ $root.proto = (function() { message.localeCountryIso31661Alpha2 = String(object.localeCountryIso31661Alpha2); if (object.deviceBoard != null) message.deviceBoard = String(object.deviceBoard); + if (object.deviceExpId != null) + message.deviceExpId = String(object.deviceExpId); return message; }; @@ -6696,6 +7785,7 @@ $root.proto = (function() { object.localeLanguageIso6391 = ""; object.localeCountryIso31661Alpha2 = ""; object.deviceBoard = ""; + object.deviceExpId = ""; } if (message.platform != null && message.hasOwnProperty("platform")) object.platform = options.enums === String ? $root.proto.ClientPayload.UserAgent.Platform[message.platform] : message.platform; @@ -6723,6 +7813,8 @@ $root.proto = (function() { object.localeCountryIso31661Alpha2 = message.localeCountryIso31661Alpha2; if (message.deviceBoard != null && message.hasOwnProperty("deviceBoard")) object.deviceBoard = message.deviceBoard; + if (message.deviceExpId != null && message.hasOwnProperty("deviceExpId")) + object.deviceExpId = message.deviceExpId; return object; }; @@ -7049,6 +8141,8 @@ $root.proto = (function() { * @property {number} WEAROS=29 WEAROS value * @property {number} ARDEVICE=30 ARDEVICE value * @property {number} VRDEVICE=31 VRDEVICE value + * @property {number} BLUE_WEB=32 BLUE_WEB value + * @property {number} IPAD=33 IPAD value */ UserAgent.Platform = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -7084,6 +8178,8 @@ $root.proto = (function() { values[valuesById[29] = "WEAROS"] = 29; values[valuesById[30] = "ARDEVICE"] = 30; values[valuesById[31] = "VRDEVICE"] = 31; + values[valuesById[32] = "BLUE_WEB"] = 32; + values[valuesById[33] = "IPAD"] = 33; return values; })(); @@ -7866,6 +8962,9 @@ $root.proto = (function() { * @property {string|null} [parentGroupJid] ContextInfo parentGroupJid * @property {string|null} [trustBannerType] ContextInfo trustBannerType * @property {number|null} [trustBannerAction] ContextInfo trustBannerAction + * @property {boolean|null} [isSampled] ContextInfo isSampled + * @property {Array.|null} [groupMentions] ContextInfo groupMentions + * @property {proto.ContextInfo.IUTMInfo|null} [utm] ContextInfo utm */ /** @@ -7878,6 +8977,7 @@ $root.proto = (function() { */ function ContextInfo(properties) { this.mentionedJid = []; + this.groupMentions = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -8084,6 +9184,30 @@ $root.proto = (function() { */ ContextInfo.prototype.trustBannerAction = 0; + /** + * ContextInfo isSampled. + * @member {boolean} isSampled + * @memberof proto.ContextInfo + * @instance + */ + ContextInfo.prototype.isSampled = false; + + /** + * ContextInfo groupMentions. + * @member {Array.} groupMentions + * @memberof proto.ContextInfo + * @instance + */ + ContextInfo.prototype.groupMentions = $util.emptyArray; + + /** + * ContextInfo utm. + * @member {proto.ContextInfo.IUTMInfo|null|undefined} utm + * @memberof proto.ContextInfo + * @instance + */ + ContextInfo.prototype.utm = null; + /** * Creates a new ContextInfo instance using the specified properties. * @function create @@ -8159,6 +9283,13 @@ $root.proto = (function() { writer.uint32(/* id 37, wireType 2 =*/298).string(message.trustBannerType); if (message.trustBannerAction != null && Object.hasOwnProperty.call(message, "trustBannerAction")) writer.uint32(/* id 38, wireType 0 =*/304).uint32(message.trustBannerAction); + if (message.isSampled != null && Object.hasOwnProperty.call(message, "isSampled")) + writer.uint32(/* id 39, wireType 0 =*/312).bool(message.isSampled); + if (message.groupMentions != null && message.groupMentions.length) + for (var i = 0; i < message.groupMentions.length; ++i) + $root.proto.GroupMention.encode(message.groupMentions[i], writer.uint32(/* id 40, wireType 2 =*/322).fork()).ldelim(); + if (message.utm != null && Object.hasOwnProperty.call(message, "utm")) + $root.proto.ContextInfo.UTMInfo.encode(message.utm, writer.uint32(/* id 41, wireType 2 =*/330).fork()).ldelim(); return writer; }; @@ -8270,6 +9401,17 @@ $root.proto = (function() { case 38: message.trustBannerAction = reader.uint32(); break; + case 39: + message.isSampled = reader.bool(); + break; + case 40: + if (!(message.groupMentions && message.groupMentions.length)) + message.groupMentions = []; + message.groupMentions.push($root.proto.GroupMention.decode(reader, reader.uint32())); + break; + case 41: + message.utm = $root.proto.ContextInfo.UTMInfo.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -8396,6 +9538,23 @@ $root.proto = (function() { if (message.trustBannerAction != null && message.hasOwnProperty("trustBannerAction")) if (!$util.isInteger(message.trustBannerAction)) return "trustBannerAction: integer expected"; + if (message.isSampled != null && message.hasOwnProperty("isSampled")) + if (typeof message.isSampled !== "boolean") + return "isSampled: boolean expected"; + if (message.groupMentions != null && message.hasOwnProperty("groupMentions")) { + if (!Array.isArray(message.groupMentions)) + return "groupMentions: array expected"; + for (var i = 0; i < message.groupMentions.length; ++i) { + var error = $root.proto.GroupMention.verify(message.groupMentions[i]); + if (error) + return "groupMentions." + error; + } + } + if (message.utm != null && message.hasOwnProperty("utm")) { + var error = $root.proto.ContextInfo.UTMInfo.verify(message.utm); + if (error) + return "utm." + error; + } return null; }; @@ -8497,6 +9656,23 @@ $root.proto = (function() { message.trustBannerType = String(object.trustBannerType); if (object.trustBannerAction != null) message.trustBannerAction = object.trustBannerAction >>> 0; + if (object.isSampled != null) + message.isSampled = Boolean(object.isSampled); + if (object.groupMentions) { + if (!Array.isArray(object.groupMentions)) + throw TypeError(".proto.ContextInfo.groupMentions: array expected"); + message.groupMentions = []; + for (var i = 0; i < object.groupMentions.length; ++i) { + if (typeof object.groupMentions[i] !== "object") + throw TypeError(".proto.ContextInfo.groupMentions: object expected"); + message.groupMentions[i] = $root.proto.GroupMention.fromObject(object.groupMentions[i]); + } + } + if (object.utm != null) { + if (typeof object.utm !== "object") + throw TypeError(".proto.ContextInfo.utm: object expected"); + message.utm = $root.proto.ContextInfo.UTMInfo.fromObject(object.utm); + } return message; }; @@ -8513,8 +9689,10 @@ $root.proto = (function() { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) + if (options.arrays || options.defaults) { object.mentionedJid = []; + object.groupMentions = []; + } if (options.defaults) { object.stanzaId = ""; object.participant = ""; @@ -8556,6 +9734,8 @@ $root.proto = (function() { object.parentGroupJid = ""; object.trustBannerType = ""; object.trustBannerAction = 0; + object.isSampled = false; + object.utm = null; } if (message.stanzaId != null && message.hasOwnProperty("stanzaId")) object.stanzaId = message.stanzaId; @@ -8613,6 +9793,15 @@ $root.proto = (function() { object.trustBannerType = message.trustBannerType; if (message.trustBannerAction != null && message.hasOwnProperty("trustBannerAction")) object.trustBannerAction = message.trustBannerAction; + if (message.isSampled != null && message.hasOwnProperty("isSampled")) + object.isSampled = message.isSampled; + if (message.groupMentions && message.groupMentions.length) { + object.groupMentions = []; + for (var j = 0; j < message.groupMentions.length; ++j) + object.groupMentions[j] = $root.proto.GroupMention.toObject(message.groupMentions[j], options); + } + if (message.utm != null && message.hasOwnProperty("utm")) + object.utm = $root.proto.ContextInfo.UTMInfo.toObject(message.utm, options); return object; }; @@ -8943,6 +10132,7 @@ $root.proto = (function() { * @property {boolean|null} [renderLargerThumbnail] ExternalAdReplyInfo renderLargerThumbnail * @property {boolean|null} [showAdAttribution] ExternalAdReplyInfo showAdAttribution * @property {string|null} [ctwaClid] ExternalAdReplyInfo ctwaClid + * @property {string|null} [ref] ExternalAdReplyInfo ref */ /** @@ -9064,6 +10254,14 @@ $root.proto = (function() { */ ExternalAdReplyInfo.prototype.ctwaClid = ""; + /** + * ExternalAdReplyInfo ref. + * @member {string} ref + * @memberof proto.ContextInfo.ExternalAdReplyInfo + * @instance + */ + ExternalAdReplyInfo.prototype.ref = ""; + /** * Creates a new ExternalAdReplyInfo instance using the specified properties. * @function create @@ -9114,6 +10312,8 @@ $root.proto = (function() { writer.uint32(/* id 12, wireType 0 =*/96).bool(message.showAdAttribution); if (message.ctwaClid != null && Object.hasOwnProperty.call(message, "ctwaClid")) writer.uint32(/* id 13, wireType 2 =*/106).string(message.ctwaClid); + if (message.ref != null && Object.hasOwnProperty.call(message, "ref")) + writer.uint32(/* id 14, wireType 2 =*/114).string(message.ref); return writer; }; @@ -9187,6 +10387,9 @@ $root.proto = (function() { case 13: message.ctwaClid = reader.string(); break; + case 14: + message.ref = reader.string(); + break; default: reader.skipType(tag & 7); break; @@ -9267,6 +10470,9 @@ $root.proto = (function() { if (message.ctwaClid != null && message.hasOwnProperty("ctwaClid")) if (!$util.isString(message.ctwaClid)) return "ctwaClid: string expected"; + if (message.ref != null && message.hasOwnProperty("ref")) + if (!$util.isString(message.ref)) + return "ref: string expected"; return null; }; @@ -9323,6 +10529,8 @@ $root.proto = (function() { message.showAdAttribution = Boolean(object.showAdAttribution); if (object.ctwaClid != null) message.ctwaClid = String(object.ctwaClid); + if (object.ref != null) + message.ref = String(object.ref); return message; }; @@ -9359,6 +10567,7 @@ $root.proto = (function() { object.renderLargerThumbnail = false; object.showAdAttribution = false; object.ctwaClid = ""; + object.ref = ""; } if (message.title != null && message.hasOwnProperty("title")) object.title = message.title; @@ -9386,6 +10595,8 @@ $root.proto = (function() { object.showAdAttribution = message.showAdAttribution; if (message.ctwaClid != null && message.hasOwnProperty("ctwaClid")) object.ctwaClid = message.ctwaClid; + if (message.ref != null && message.hasOwnProperty("ref")) + object.ref = message.ref; return object; }; @@ -9419,6 +10630,216 @@ $root.proto = (function() { return ExternalAdReplyInfo; })(); + ContextInfo.UTMInfo = (function() { + + /** + * Properties of a UTMInfo. + * @memberof proto.ContextInfo + * @interface IUTMInfo + * @property {string|null} [utmSource] UTMInfo utmSource + * @property {string|null} [utmCampaign] UTMInfo utmCampaign + */ + + /** + * Constructs a new UTMInfo. + * @memberof proto.ContextInfo + * @classdesc Represents a UTMInfo. + * @implements IUTMInfo + * @constructor + * @param {proto.ContextInfo.IUTMInfo=} [properties] Properties to set + */ + function UTMInfo(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * UTMInfo utmSource. + * @member {string} utmSource + * @memberof proto.ContextInfo.UTMInfo + * @instance + */ + UTMInfo.prototype.utmSource = ""; + + /** + * UTMInfo utmCampaign. + * @member {string} utmCampaign + * @memberof proto.ContextInfo.UTMInfo + * @instance + */ + UTMInfo.prototype.utmCampaign = ""; + + /** + * Creates a new UTMInfo instance using the specified properties. + * @function create + * @memberof proto.ContextInfo.UTMInfo + * @static + * @param {proto.ContextInfo.IUTMInfo=} [properties] Properties to set + * @returns {proto.ContextInfo.UTMInfo} UTMInfo instance + */ + UTMInfo.create = function create(properties) { + return new UTMInfo(properties); + }; + + /** + * Encodes the specified UTMInfo message. Does not implicitly {@link proto.ContextInfo.UTMInfo.verify|verify} messages. + * @function encode + * @memberof proto.ContextInfo.UTMInfo + * @static + * @param {proto.ContextInfo.IUTMInfo} message UTMInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UTMInfo.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.utmSource != null && Object.hasOwnProperty.call(message, "utmSource")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.utmSource); + if (message.utmCampaign != null && Object.hasOwnProperty.call(message, "utmCampaign")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.utmCampaign); + return writer; + }; + + /** + * Encodes the specified UTMInfo message, length delimited. Does not implicitly {@link proto.ContextInfo.UTMInfo.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.ContextInfo.UTMInfo + * @static + * @param {proto.ContextInfo.IUTMInfo} message UTMInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UTMInfo.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a UTMInfo message from the specified reader or buffer. + * @function decode + * @memberof proto.ContextInfo.UTMInfo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.ContextInfo.UTMInfo} UTMInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + UTMInfo.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.ContextInfo.UTMInfo(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.utmSource = reader.string(); + break; + case 2: + message.utmCampaign = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a UTMInfo message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.ContextInfo.UTMInfo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.ContextInfo.UTMInfo} UTMInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + UTMInfo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a UTMInfo message. + * @function verify + * @memberof proto.ContextInfo.UTMInfo + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + UTMInfo.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.utmSource != null && message.hasOwnProperty("utmSource")) + if (!$util.isString(message.utmSource)) + return "utmSource: string expected"; + if (message.utmCampaign != null && message.hasOwnProperty("utmCampaign")) + if (!$util.isString(message.utmCampaign)) + return "utmCampaign: string expected"; + return null; + }; + + /** + * Creates a UTMInfo message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.ContextInfo.UTMInfo + * @static + * @param {Object.} object Plain object + * @returns {proto.ContextInfo.UTMInfo} UTMInfo + */ + UTMInfo.fromObject = function fromObject(object) { + if (object instanceof $root.proto.ContextInfo.UTMInfo) + return object; + var message = new $root.proto.ContextInfo.UTMInfo(); + if (object.utmSource != null) + message.utmSource = String(object.utmSource); + if (object.utmCampaign != null) + message.utmCampaign = String(object.utmCampaign); + return message; + }; + + /** + * Creates a plain object from a UTMInfo message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.ContextInfo.UTMInfo + * @static + * @param {proto.ContextInfo.UTMInfo} message UTMInfo + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + UTMInfo.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.utmSource = ""; + object.utmCampaign = ""; + } + if (message.utmSource != null && message.hasOwnProperty("utmSource")) + object.utmSource = message.utmSource; + if (message.utmCampaign != null && message.hasOwnProperty("utmCampaign")) + object.utmCampaign = message.utmCampaign; + return object; + }; + + /** + * Converts this UTMInfo to JSON. + * @function toJSON + * @memberof proto.ContextInfo.UTMInfo + * @instance + * @returns {Object.} JSON object + */ + UTMInfo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return UTMInfo; + })(); + return ContextInfo; })(); @@ -9463,8 +10884,8 @@ $root.proto = (function() { * @property {string|null} [description] Conversation description * @property {boolean|null} [support] Conversation support * @property {boolean|null} [isParentGroup] Conversation isParentGroup - * @property {boolean|null} [isDefaultSubgroup] Conversation isDefaultSubgroup * @property {string|null} [parentGroupId] Conversation parentGroupId + * @property {boolean|null} [isDefaultSubgroup] Conversation isDefaultSubgroup * @property {string|null} [displayName] Conversation displayName * @property {string|null} [pnJid] Conversation pnJid * @property {boolean|null} [shareOwnPn] Conversation shareOwnPn @@ -9770,20 +11191,20 @@ $root.proto = (function() { Conversation.prototype.isParentGroup = false; /** - * Conversation isDefaultSubgroup. - * @member {boolean} isDefaultSubgroup + * Conversation parentGroupId. + * @member {string} parentGroupId * @memberof proto.Conversation * @instance */ - Conversation.prototype.isDefaultSubgroup = false; + Conversation.prototype.parentGroupId = ""; /** - * Conversation parentGroupId. - * @member {string} parentGroupId + * Conversation isDefaultSubgroup. + * @member {boolean} isDefaultSubgroup * @memberof proto.Conversation * @instance */ - Conversation.prototype.parentGroupId = ""; + Conversation.prototype.isDefaultSubgroup = false; /** * Conversation displayName. @@ -10077,12 +11498,12 @@ $root.proto = (function() { case 35: message.isParentGroup = reader.bool(); break; - case 36: - message.isDefaultSubgroup = reader.bool(); - break; case 37: message.parentGroupId = reader.string(); break; + case 36: + message.isDefaultSubgroup = reader.bool(); + break; case 38: message.displayName = reader.string(); break; @@ -10176,6 +11597,7 @@ $root.proto = (function() { return "endOfHistoryTransferType: enum value expected"; case 0: case 1: + case 2: break; } if (message.conversationTimestamp != null && message.hasOwnProperty("conversationTimestamp")) @@ -10266,12 +11688,12 @@ $root.proto = (function() { if (message.isParentGroup != null && message.hasOwnProperty("isParentGroup")) if (typeof message.isParentGroup !== "boolean") return "isParentGroup: boolean expected"; - if (message.isDefaultSubgroup != null && message.hasOwnProperty("isDefaultSubgroup")) - if (typeof message.isDefaultSubgroup !== "boolean") - return "isDefaultSubgroup: boolean expected"; if (message.parentGroupId != null && message.hasOwnProperty("parentGroupId")) if (!$util.isString(message.parentGroupId)) return "parentGroupId: string expected"; + if (message.isDefaultSubgroup != null && message.hasOwnProperty("isDefaultSubgroup")) + if (typeof message.isDefaultSubgroup !== "boolean") + return "isDefaultSubgroup: boolean expected"; if (message.displayName != null && message.hasOwnProperty("displayName")) if (!$util.isString(message.displayName)) return "displayName: string expected"; @@ -10353,6 +11775,10 @@ $root.proto = (function() { case 1: message.endOfHistoryTransferType = 1; break; + case "COMPLETE_ON_DEMAND_SYNC_BUT_MORE_MSG_REMAIN_ON_PRIMARY": + case 2: + message.endOfHistoryTransferType = 2; + break; } if (object.conversationTimestamp != null) if ($util.Long) @@ -10469,10 +11895,10 @@ $root.proto = (function() { message.support = Boolean(object.support); if (object.isParentGroup != null) message.isParentGroup = Boolean(object.isParentGroup); - if (object.isDefaultSubgroup != null) - message.isDefaultSubgroup = Boolean(object.isDefaultSubgroup); if (object.parentGroupId != null) message.parentGroupId = String(object.parentGroupId); + if (object.isDefaultSubgroup != null) + message.isDefaultSubgroup = Boolean(object.isDefaultSubgroup); if (object.displayName != null) message.displayName = String(object.displayName); if (object.pnJid != null) @@ -10716,17 +12142,238 @@ $root.proto = (function() { * @enum {number} * @property {number} COMPLETE_BUT_MORE_MESSAGES_REMAIN_ON_PRIMARY=0 COMPLETE_BUT_MORE_MESSAGES_REMAIN_ON_PRIMARY value * @property {number} COMPLETE_AND_NO_MORE_MESSAGE_REMAIN_ON_PRIMARY=1 COMPLETE_AND_NO_MORE_MESSAGE_REMAIN_ON_PRIMARY value + * @property {number} COMPLETE_ON_DEMAND_SYNC_BUT_MORE_MSG_REMAIN_ON_PRIMARY=2 COMPLETE_ON_DEMAND_SYNC_BUT_MORE_MSG_REMAIN_ON_PRIMARY value */ Conversation.EndOfHistoryTransferType = (function() { var valuesById = {}, values = Object.create(valuesById); values[valuesById[0] = "COMPLETE_BUT_MORE_MESSAGES_REMAIN_ON_PRIMARY"] = 0; values[valuesById[1] = "COMPLETE_AND_NO_MORE_MESSAGE_REMAIN_ON_PRIMARY"] = 1; + values[valuesById[2] = "COMPLETE_ON_DEMAND_SYNC_BUT_MORE_MSG_REMAIN_ON_PRIMARY"] = 2; return values; })(); return Conversation; })(); + proto.DeviceConsistencyCodeMessage = (function() { + + /** + * Properties of a DeviceConsistencyCodeMessage. + * @memberof proto + * @interface IDeviceConsistencyCodeMessage + * @property {number|null} [generation] DeviceConsistencyCodeMessage generation + * @property {Uint8Array|null} [signature] DeviceConsistencyCodeMessage signature + */ + + /** + * Constructs a new DeviceConsistencyCodeMessage. + * @memberof proto + * @classdesc Represents a DeviceConsistencyCodeMessage. + * @implements IDeviceConsistencyCodeMessage + * @constructor + * @param {proto.IDeviceConsistencyCodeMessage=} [properties] Properties to set + */ + function DeviceConsistencyCodeMessage(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DeviceConsistencyCodeMessage generation. + * @member {number} generation + * @memberof proto.DeviceConsistencyCodeMessage + * @instance + */ + DeviceConsistencyCodeMessage.prototype.generation = 0; + + /** + * DeviceConsistencyCodeMessage signature. + * @member {Uint8Array} signature + * @memberof proto.DeviceConsistencyCodeMessage + * @instance + */ + DeviceConsistencyCodeMessage.prototype.signature = $util.newBuffer([]); + + /** + * Creates a new DeviceConsistencyCodeMessage instance using the specified properties. + * @function create + * @memberof proto.DeviceConsistencyCodeMessage + * @static + * @param {proto.IDeviceConsistencyCodeMessage=} [properties] Properties to set + * @returns {proto.DeviceConsistencyCodeMessage} DeviceConsistencyCodeMessage instance + */ + DeviceConsistencyCodeMessage.create = function create(properties) { + return new DeviceConsistencyCodeMessage(properties); + }; + + /** + * Encodes the specified DeviceConsistencyCodeMessage message. Does not implicitly {@link proto.DeviceConsistencyCodeMessage.verify|verify} messages. + * @function encode + * @memberof proto.DeviceConsistencyCodeMessage + * @static + * @param {proto.IDeviceConsistencyCodeMessage} message DeviceConsistencyCodeMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DeviceConsistencyCodeMessage.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.generation != null && Object.hasOwnProperty.call(message, "generation")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.generation); + if (message.signature != null && Object.hasOwnProperty.call(message, "signature")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.signature); + return writer; + }; + + /** + * Encodes the specified DeviceConsistencyCodeMessage message, length delimited. Does not implicitly {@link proto.DeviceConsistencyCodeMessage.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.DeviceConsistencyCodeMessage + * @static + * @param {proto.IDeviceConsistencyCodeMessage} message DeviceConsistencyCodeMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DeviceConsistencyCodeMessage.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DeviceConsistencyCodeMessage message from the specified reader or buffer. + * @function decode + * @memberof proto.DeviceConsistencyCodeMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.DeviceConsistencyCodeMessage} DeviceConsistencyCodeMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DeviceConsistencyCodeMessage.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.DeviceConsistencyCodeMessage(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.generation = reader.uint32(); + break; + case 2: + message.signature = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DeviceConsistencyCodeMessage message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.DeviceConsistencyCodeMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.DeviceConsistencyCodeMessage} DeviceConsistencyCodeMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DeviceConsistencyCodeMessage.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DeviceConsistencyCodeMessage message. + * @function verify + * @memberof proto.DeviceConsistencyCodeMessage + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DeviceConsistencyCodeMessage.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.generation != null && message.hasOwnProperty("generation")) + if (!$util.isInteger(message.generation)) + return "generation: integer expected"; + if (message.signature != null && message.hasOwnProperty("signature")) + if (!(message.signature && typeof message.signature.length === "number" || $util.isString(message.signature))) + return "signature: buffer expected"; + return null; + }; + + /** + * Creates a DeviceConsistencyCodeMessage message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.DeviceConsistencyCodeMessage + * @static + * @param {Object.} object Plain object + * @returns {proto.DeviceConsistencyCodeMessage} DeviceConsistencyCodeMessage + */ + DeviceConsistencyCodeMessage.fromObject = function fromObject(object) { + if (object instanceof $root.proto.DeviceConsistencyCodeMessage) + return object; + var message = new $root.proto.DeviceConsistencyCodeMessage(); + if (object.generation != null) + message.generation = object.generation >>> 0; + if (object.signature != null) + if (typeof object.signature === "string") + $util.base64.decode(object.signature, message.signature = $util.newBuffer($util.base64.length(object.signature)), 0); + else if (object.signature.length) + message.signature = object.signature; + return message; + }; + + /** + * Creates a plain object from a DeviceConsistencyCodeMessage message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.DeviceConsistencyCodeMessage + * @static + * @param {proto.DeviceConsistencyCodeMessage} message DeviceConsistencyCodeMessage + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DeviceConsistencyCodeMessage.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.generation = 0; + if (options.bytes === String) + object.signature = ""; + else { + object.signature = []; + if (options.bytes !== Array) + object.signature = $util.newBuffer(object.signature); + } + } + if (message.generation != null && message.hasOwnProperty("generation")) + object.generation = message.generation; + if (message.signature != null && message.hasOwnProperty("signature")) + object.signature = options.bytes === String ? $util.base64.encode(message.signature, 0, message.signature.length) : options.bytes === Array ? Array.prototype.slice.call(message.signature) : message.signature; + return object; + }; + + /** + * Converts this DeviceConsistencyCodeMessage to JSON. + * @function toJSON + * @memberof proto.DeviceConsistencyCodeMessage + * @instance + * @returns {Object.} JSON object + */ + DeviceConsistencyCodeMessage.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return DeviceConsistencyCodeMessage; + })(); + proto.DeviceListMetadata = (function() { /** @@ -11333,6 +12980,13 @@ $root.proto = (function() { case 11: case 12: case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + case 20: break; } if (message.requireFullSync != null && message.hasOwnProperty("requireFullSync")) @@ -11422,6 +13076,34 @@ $root.proto = (function() { case 13: message.platformType = 13; break; + case "IOS_PHONE": + case 14: + message.platformType = 14; + break; + case "IOS_CATALYST": + case 15: + message.platformType = 15; + break; + case "ANDROID_PHONE": + case 16: + message.platformType = 16; + break; + case "ANDROID_AMBIGUOUS": + case 17: + message.platformType = 17; + break; + case "WEAR_OS": + case 18: + message.platformType = 18; + break; + case "AR_WRIST": + case 19: + message.platformType = 19; + break; + case "AR_DEVICE": + case 20: + message.platformType = 20; + break; } if (object.requireFullSync != null) message.requireFullSync = Boolean(object.requireFullSync); @@ -11762,6 +13444,8 @@ $root.proto = (function() { * @property {number|null} [fullSyncDaysLimit] HistorySyncConfig fullSyncDaysLimit * @property {number|null} [fullSyncSizeMbLimit] HistorySyncConfig fullSyncSizeMbLimit * @property {number|null} [storageQuotaMb] HistorySyncConfig storageQuotaMb + * @property {boolean|null} [inlineInitialPayloadInE2EeMsg] HistorySyncConfig inlineInitialPayloadInE2EeMsg + * @property {number|null} [recentSyncDaysLimit] HistorySyncConfig recentSyncDaysLimit */ /** @@ -11803,6 +13487,22 @@ $root.proto = (function() { */ HistorySyncConfig.prototype.storageQuotaMb = 0; + /** + * HistorySyncConfig inlineInitialPayloadInE2EeMsg. + * @member {boolean} inlineInitialPayloadInE2EeMsg + * @memberof proto.DeviceProps.HistorySyncConfig + * @instance + */ + HistorySyncConfig.prototype.inlineInitialPayloadInE2EeMsg = false; + + /** + * HistorySyncConfig recentSyncDaysLimit. + * @member {number} recentSyncDaysLimit + * @memberof proto.DeviceProps.HistorySyncConfig + * @instance + */ + HistorySyncConfig.prototype.recentSyncDaysLimit = 0; + /** * Creates a new HistorySyncConfig instance using the specified properties. * @function create @@ -11833,6 +13533,10 @@ $root.proto = (function() { writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.fullSyncSizeMbLimit); if (message.storageQuotaMb != null && Object.hasOwnProperty.call(message, "storageQuotaMb")) writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.storageQuotaMb); + if (message.inlineInitialPayloadInE2EeMsg != null && Object.hasOwnProperty.call(message, "inlineInitialPayloadInE2EeMsg")) + writer.uint32(/* id 4, wireType 0 =*/32).bool(message.inlineInitialPayloadInE2EeMsg); + if (message.recentSyncDaysLimit != null && Object.hasOwnProperty.call(message, "recentSyncDaysLimit")) + writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.recentSyncDaysLimit); return writer; }; @@ -11876,6 +13580,12 @@ $root.proto = (function() { case 3: message.storageQuotaMb = reader.uint32(); break; + case 4: + message.inlineInitialPayloadInE2EeMsg = reader.bool(); + break; + case 5: + message.recentSyncDaysLimit = reader.uint32(); + break; default: reader.skipType(tag & 7); break; @@ -11920,6 +13630,12 @@ $root.proto = (function() { if (message.storageQuotaMb != null && message.hasOwnProperty("storageQuotaMb")) if (!$util.isInteger(message.storageQuotaMb)) return "storageQuotaMb: integer expected"; + if (message.inlineInitialPayloadInE2EeMsg != null && message.hasOwnProperty("inlineInitialPayloadInE2EeMsg")) + if (typeof message.inlineInitialPayloadInE2EeMsg !== "boolean") + return "inlineInitialPayloadInE2EeMsg: boolean expected"; + if (message.recentSyncDaysLimit != null && message.hasOwnProperty("recentSyncDaysLimit")) + if (!$util.isInteger(message.recentSyncDaysLimit)) + return "recentSyncDaysLimit: integer expected"; return null; }; @@ -11941,6 +13657,10 @@ $root.proto = (function() { message.fullSyncSizeMbLimit = object.fullSyncSizeMbLimit >>> 0; if (object.storageQuotaMb != null) message.storageQuotaMb = object.storageQuotaMb >>> 0; + if (object.inlineInitialPayloadInE2EeMsg != null) + message.inlineInitialPayloadInE2EeMsg = Boolean(object.inlineInitialPayloadInE2EeMsg); + if (object.recentSyncDaysLimit != null) + message.recentSyncDaysLimit = object.recentSyncDaysLimit >>> 0; return message; }; @@ -11961,6 +13681,8 @@ $root.proto = (function() { object.fullSyncDaysLimit = 0; object.fullSyncSizeMbLimit = 0; object.storageQuotaMb = 0; + object.inlineInitialPayloadInE2EeMsg = false; + object.recentSyncDaysLimit = 0; } if (message.fullSyncDaysLimit != null && message.hasOwnProperty("fullSyncDaysLimit")) object.fullSyncDaysLimit = message.fullSyncDaysLimit; @@ -11968,6 +13690,10 @@ $root.proto = (function() { object.fullSyncSizeMbLimit = message.fullSyncSizeMbLimit; if (message.storageQuotaMb != null && message.hasOwnProperty("storageQuotaMb")) object.storageQuotaMb = message.storageQuotaMb; + if (message.inlineInitialPayloadInE2EeMsg != null && message.hasOwnProperty("inlineInitialPayloadInE2EeMsg")) + object.inlineInitialPayloadInE2EeMsg = message.inlineInitialPayloadInE2EeMsg; + if (message.recentSyncDaysLimit != null && message.hasOwnProperty("recentSyncDaysLimit")) + object.recentSyncDaysLimit = message.recentSyncDaysLimit; return object; }; @@ -12003,6 +13729,13 @@ $root.proto = (function() { * @property {number} ALOHA=11 ALOHA value * @property {number} CATALINA=12 CATALINA value * @property {number} TCL_TV=13 TCL_TV value + * @property {number} IOS_PHONE=14 IOS_PHONE value + * @property {number} IOS_CATALYST=15 IOS_CATALYST value + * @property {number} ANDROID_PHONE=16 ANDROID_PHONE value + * @property {number} ANDROID_AMBIGUOUS=17 ANDROID_AMBIGUOUS value + * @property {number} WEAR_OS=18 WEAR_OS value + * @property {number} AR_WRIST=19 AR_WRIST value + * @property {number} AR_DEVICE=20 AR_DEVICE value */ DeviceProps.PlatformType = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -12020,6 +13753,13 @@ $root.proto = (function() { values[valuesById[11] = "ALOHA"] = 11; values[valuesById[12] = "CATALINA"] = 12; values[valuesById[13] = "TCL_TV"] = 13; + values[valuesById[14] = "IOS_PHONE"] = 14; + values[valuesById[15] = "IOS_CATALYST"] = 15; + values[valuesById[16] = "ANDROID_PHONE"] = 16; + values[valuesById[17] = "ANDROID_AMBIGUOUS"] = 17; + values[valuesById[18] = "WEAR_OS"] = 18; + values[valuesById[19] = "AR_WRIST"] = 19; + values[valuesById[20] = "AR_DEVICE"] = 20; return values; })(); @@ -13051,6 +14791,13 @@ $root.proto = (function() { * @property {number|null} [disappearingModeDuration] GlobalSettings disappearingModeDuration * @property {number|Long|null} [disappearingModeTimestamp] GlobalSettings disappearingModeTimestamp * @property {proto.IAvatarUserSettings|null} [avatarUserSettings] GlobalSettings avatarUserSettings + * @property {number|null} [fontSize] GlobalSettings fontSize + * @property {boolean|null} [securityNotifications] GlobalSettings securityNotifications + * @property {boolean|null} [autoUnarchiveChats] GlobalSettings autoUnarchiveChats + * @property {number|null} [videoQualityMode] GlobalSettings videoQualityMode + * @property {number|null} [photoQualityMode] GlobalSettings photoQualityMode + * @property {proto.INotificationSettings|null} [individualNotificationSettings] GlobalSettings individualNotificationSettings + * @property {proto.INotificationSettings|null} [groupNotificationSettings] GlobalSettings groupNotificationSettings */ /** @@ -13156,6 +14903,62 @@ $root.proto = (function() { */ GlobalSettings.prototype.avatarUserSettings = null; + /** + * GlobalSettings fontSize. + * @member {number} fontSize + * @memberof proto.GlobalSettings + * @instance + */ + GlobalSettings.prototype.fontSize = 0; + + /** + * GlobalSettings securityNotifications. + * @member {boolean} securityNotifications + * @memberof proto.GlobalSettings + * @instance + */ + GlobalSettings.prototype.securityNotifications = false; + + /** + * GlobalSettings autoUnarchiveChats. + * @member {boolean} autoUnarchiveChats + * @memberof proto.GlobalSettings + * @instance + */ + GlobalSettings.prototype.autoUnarchiveChats = false; + + /** + * GlobalSettings videoQualityMode. + * @member {number} videoQualityMode + * @memberof proto.GlobalSettings + * @instance + */ + GlobalSettings.prototype.videoQualityMode = 0; + + /** + * GlobalSettings photoQualityMode. + * @member {number} photoQualityMode + * @memberof proto.GlobalSettings + * @instance + */ + GlobalSettings.prototype.photoQualityMode = 0; + + /** + * GlobalSettings individualNotificationSettings. + * @member {proto.INotificationSettings|null|undefined} individualNotificationSettings + * @memberof proto.GlobalSettings + * @instance + */ + GlobalSettings.prototype.individualNotificationSettings = null; + + /** + * GlobalSettings groupNotificationSettings. + * @member {proto.INotificationSettings|null|undefined} groupNotificationSettings + * @memberof proto.GlobalSettings + * @instance + */ + GlobalSettings.prototype.groupNotificationSettings = null; + /** * Creates a new GlobalSettings instance using the specified properties. * @function create @@ -13202,6 +15005,20 @@ $root.proto = (function() { writer.uint32(/* id 10, wireType 0 =*/80).int64(message.disappearingModeTimestamp); if (message.avatarUserSettings != null && Object.hasOwnProperty.call(message, "avatarUserSettings")) $root.proto.AvatarUserSettings.encode(message.avatarUserSettings, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + if (message.fontSize != null && Object.hasOwnProperty.call(message, "fontSize")) + writer.uint32(/* id 12, wireType 0 =*/96).int32(message.fontSize); + if (message.securityNotifications != null && Object.hasOwnProperty.call(message, "securityNotifications")) + writer.uint32(/* id 13, wireType 0 =*/104).bool(message.securityNotifications); + if (message.autoUnarchiveChats != null && Object.hasOwnProperty.call(message, "autoUnarchiveChats")) + writer.uint32(/* id 14, wireType 0 =*/112).bool(message.autoUnarchiveChats); + if (message.videoQualityMode != null && Object.hasOwnProperty.call(message, "videoQualityMode")) + writer.uint32(/* id 15, wireType 0 =*/120).int32(message.videoQualityMode); + if (message.photoQualityMode != null && Object.hasOwnProperty.call(message, "photoQualityMode")) + writer.uint32(/* id 16, wireType 0 =*/128).int32(message.photoQualityMode); + if (message.individualNotificationSettings != null && Object.hasOwnProperty.call(message, "individualNotificationSettings")) + $root.proto.NotificationSettings.encode(message.individualNotificationSettings, writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim(); + if (message.groupNotificationSettings != null && Object.hasOwnProperty.call(message, "groupNotificationSettings")) + $root.proto.NotificationSettings.encode(message.groupNotificationSettings, writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim(); return writer; }; @@ -13269,6 +15086,27 @@ $root.proto = (function() { case 11: message.avatarUserSettings = $root.proto.AvatarUserSettings.decode(reader, reader.uint32()); break; + case 12: + message.fontSize = reader.int32(); + break; + case 13: + message.securityNotifications = reader.bool(); + break; + case 14: + message.autoUnarchiveChats = reader.bool(); + break; + case 15: + message.videoQualityMode = reader.int32(); + break; + case 16: + message.photoQualityMode = reader.int32(); + break; + case 17: + message.individualNotificationSettings = $root.proto.NotificationSettings.decode(reader, reader.uint32()); + break; + case 18: + message.groupNotificationSettings = $root.proto.NotificationSettings.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -13355,6 +15193,31 @@ $root.proto = (function() { if (error) return "avatarUserSettings." + error; } + if (message.fontSize != null && message.hasOwnProperty("fontSize")) + if (!$util.isInteger(message.fontSize)) + return "fontSize: integer expected"; + if (message.securityNotifications != null && message.hasOwnProperty("securityNotifications")) + if (typeof message.securityNotifications !== "boolean") + return "securityNotifications: boolean expected"; + if (message.autoUnarchiveChats != null && message.hasOwnProperty("autoUnarchiveChats")) + if (typeof message.autoUnarchiveChats !== "boolean") + return "autoUnarchiveChats: boolean expected"; + if (message.videoQualityMode != null && message.hasOwnProperty("videoQualityMode")) + if (!$util.isInteger(message.videoQualityMode)) + return "videoQualityMode: integer expected"; + if (message.photoQualityMode != null && message.hasOwnProperty("photoQualityMode")) + if (!$util.isInteger(message.photoQualityMode)) + return "photoQualityMode: integer expected"; + if (message.individualNotificationSettings != null && message.hasOwnProperty("individualNotificationSettings")) { + var error = $root.proto.NotificationSettings.verify(message.individualNotificationSettings); + if (error) + return "individualNotificationSettings." + error; + } + if (message.groupNotificationSettings != null && message.hasOwnProperty("groupNotificationSettings")) { + var error = $root.proto.NotificationSettings.verify(message.groupNotificationSettings); + if (error) + return "groupNotificationSettings." + error; + } return null; }; @@ -13429,6 +15292,26 @@ $root.proto = (function() { throw TypeError(".proto.GlobalSettings.avatarUserSettings: object expected"); message.avatarUserSettings = $root.proto.AvatarUserSettings.fromObject(object.avatarUserSettings); } + if (object.fontSize != null) + message.fontSize = object.fontSize | 0; + if (object.securityNotifications != null) + message.securityNotifications = Boolean(object.securityNotifications); + if (object.autoUnarchiveChats != null) + message.autoUnarchiveChats = Boolean(object.autoUnarchiveChats); + if (object.videoQualityMode != null) + message.videoQualityMode = object.videoQualityMode | 0; + if (object.photoQualityMode != null) + message.photoQualityMode = object.photoQualityMode | 0; + if (object.individualNotificationSettings != null) { + if (typeof object.individualNotificationSettings !== "object") + throw TypeError(".proto.GlobalSettings.individualNotificationSettings: object expected"); + message.individualNotificationSettings = $root.proto.NotificationSettings.fromObject(object.individualNotificationSettings); + } + if (object.groupNotificationSettings != null) { + if (typeof object.groupNotificationSettings !== "object") + throw TypeError(".proto.GlobalSettings.groupNotificationSettings: object expected"); + message.groupNotificationSettings = $root.proto.NotificationSettings.fromObject(object.groupNotificationSettings); + } return message; }; @@ -13461,6 +15344,13 @@ $root.proto = (function() { } else object.disappearingModeTimestamp = options.longs === String ? "0" : 0; object.avatarUserSettings = null; + object.fontSize = 0; + object.securityNotifications = false; + object.autoUnarchiveChats = false; + object.videoQualityMode = 0; + object.photoQualityMode = 0; + object.individualNotificationSettings = null; + object.groupNotificationSettings = null; } if (message.lightThemeWallpaper != null && message.hasOwnProperty("lightThemeWallpaper")) object.lightThemeWallpaper = $root.proto.WallpaperSettings.toObject(message.lightThemeWallpaper, options); @@ -13487,6 +15377,20 @@ $root.proto = (function() { object.disappearingModeTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.disappearingModeTimestamp) : options.longs === Number ? new $util.LongBits(message.disappearingModeTimestamp.low >>> 0, message.disappearingModeTimestamp.high >>> 0).toNumber() : message.disappearingModeTimestamp; if (message.avatarUserSettings != null && message.hasOwnProperty("avatarUserSettings")) object.avatarUserSettings = $root.proto.AvatarUserSettings.toObject(message.avatarUserSettings, options); + if (message.fontSize != null && message.hasOwnProperty("fontSize")) + object.fontSize = message.fontSize; + if (message.securityNotifications != null && message.hasOwnProperty("securityNotifications")) + object.securityNotifications = message.securityNotifications; + if (message.autoUnarchiveChats != null && message.hasOwnProperty("autoUnarchiveChats")) + object.autoUnarchiveChats = message.autoUnarchiveChats; + if (message.videoQualityMode != null && message.hasOwnProperty("videoQualityMode")) + object.videoQualityMode = message.videoQualityMode; + if (message.photoQualityMode != null && message.hasOwnProperty("photoQualityMode")) + object.photoQualityMode = message.photoQualityMode; + if (message.individualNotificationSettings != null && message.hasOwnProperty("individualNotificationSettings")) + object.individualNotificationSettings = $root.proto.NotificationSettings.toObject(message.individualNotificationSettings, options); + if (message.groupNotificationSettings != null && message.hasOwnProperty("groupNotificationSettings")) + object.groupNotificationSettings = $root.proto.NotificationSettings.toObject(message.groupNotificationSettings, options); return object; }; @@ -13504,6 +15408,216 @@ $root.proto = (function() { return GlobalSettings; })(); + proto.GroupMention = (function() { + + /** + * Properties of a GroupMention. + * @memberof proto + * @interface IGroupMention + * @property {string|null} [groupJid] GroupMention groupJid + * @property {string|null} [groupSubject] GroupMention groupSubject + */ + + /** + * Constructs a new GroupMention. + * @memberof proto + * @classdesc Represents a GroupMention. + * @implements IGroupMention + * @constructor + * @param {proto.IGroupMention=} [properties] Properties to set + */ + function GroupMention(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * GroupMention groupJid. + * @member {string} groupJid + * @memberof proto.GroupMention + * @instance + */ + GroupMention.prototype.groupJid = ""; + + /** + * GroupMention groupSubject. + * @member {string} groupSubject + * @memberof proto.GroupMention + * @instance + */ + GroupMention.prototype.groupSubject = ""; + + /** + * Creates a new GroupMention instance using the specified properties. + * @function create + * @memberof proto.GroupMention + * @static + * @param {proto.IGroupMention=} [properties] Properties to set + * @returns {proto.GroupMention} GroupMention instance + */ + GroupMention.create = function create(properties) { + return new GroupMention(properties); + }; + + /** + * Encodes the specified GroupMention message. Does not implicitly {@link proto.GroupMention.verify|verify} messages. + * @function encode + * @memberof proto.GroupMention + * @static + * @param {proto.IGroupMention} message GroupMention message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GroupMention.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.groupJid != null && Object.hasOwnProperty.call(message, "groupJid")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.groupJid); + if (message.groupSubject != null && Object.hasOwnProperty.call(message, "groupSubject")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.groupSubject); + return writer; + }; + + /** + * Encodes the specified GroupMention message, length delimited. Does not implicitly {@link proto.GroupMention.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.GroupMention + * @static + * @param {proto.IGroupMention} message GroupMention message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GroupMention.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a GroupMention message from the specified reader or buffer. + * @function decode + * @memberof proto.GroupMention + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.GroupMention} GroupMention + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GroupMention.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.GroupMention(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.groupJid = reader.string(); + break; + case 2: + message.groupSubject = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a GroupMention message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.GroupMention + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.GroupMention} GroupMention + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GroupMention.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a GroupMention message. + * @function verify + * @memberof proto.GroupMention + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + GroupMention.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.groupJid != null && message.hasOwnProperty("groupJid")) + if (!$util.isString(message.groupJid)) + return "groupJid: string expected"; + if (message.groupSubject != null && message.hasOwnProperty("groupSubject")) + if (!$util.isString(message.groupSubject)) + return "groupSubject: string expected"; + return null; + }; + + /** + * Creates a GroupMention message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.GroupMention + * @static + * @param {Object.} object Plain object + * @returns {proto.GroupMention} GroupMention + */ + GroupMention.fromObject = function fromObject(object) { + if (object instanceof $root.proto.GroupMention) + return object; + var message = new $root.proto.GroupMention(); + if (object.groupJid != null) + message.groupJid = String(object.groupJid); + if (object.groupSubject != null) + message.groupSubject = String(object.groupSubject); + return message; + }; + + /** + * Creates a plain object from a GroupMention message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.GroupMention + * @static + * @param {proto.GroupMention} message GroupMention + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GroupMention.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.groupJid = ""; + object.groupSubject = ""; + } + if (message.groupJid != null && message.hasOwnProperty("groupJid")) + object.groupJid = message.groupJid; + if (message.groupSubject != null && message.hasOwnProperty("groupSubject")) + object.groupSubject = message.groupSubject; + return object; + }; + + /** + * Converts this GroupMention to JSON. + * @function toJSON + * @memberof proto.GroupMention + * @instance + * @returns {Object.} JSON object + */ + GroupMention.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return GroupMention; + })(); + proto.GroupParticipant = (function() { /** @@ -15041,6 +17155,7 @@ $root.proto = (function() { case 3: case 4: case 5: + case 6: break; } if (message.conversations != null && message.hasOwnProperty("conversations")) { @@ -15145,6 +17260,10 @@ $root.proto = (function() { case 5: message.syncType = 5; break; + case "ON_DEMAND": + case 6: + message.syncType = 6; + break; } if (object.conversations) { if (!Array.isArray(object.conversations)) @@ -15310,6 +17429,7 @@ $root.proto = (function() { * @property {number} RECENT=3 RECENT value * @property {number} PUSH_NAME=4 PUSH_NAME value * @property {number} NON_BLOCKING_DATA=5 NON_BLOCKING_DATA value + * @property {number} ON_DEMAND=6 ON_DEMAND value */ HistorySync.HistorySyncType = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -15319,6 +17439,7 @@ $root.proto = (function() { values[valuesById[3] = "RECENT"] = 3; values[valuesById[4] = "PUSH_NAME"] = 4; values[valuesById[5] = "NON_BLOCKING_DATA"] = 5; + values[valuesById[6] = "ON_DEMAND"] = 6; return values; })(); @@ -17348,6 +19469,318 @@ $root.proto = (function() { return values; })(); + proto.KeyExchangeMessage = (function() { + + /** + * Properties of a KeyExchangeMessage. + * @memberof proto + * @interface IKeyExchangeMessage + * @property {number|null} [id] KeyExchangeMessage id + * @property {Uint8Array|null} [baseKey] KeyExchangeMessage baseKey + * @property {Uint8Array|null} [ratchetKey] KeyExchangeMessage ratchetKey + * @property {Uint8Array|null} [identityKey] KeyExchangeMessage identityKey + * @property {Uint8Array|null} [baseKeySignature] KeyExchangeMessage baseKeySignature + */ + + /** + * Constructs a new KeyExchangeMessage. + * @memberof proto + * @classdesc Represents a KeyExchangeMessage. + * @implements IKeyExchangeMessage + * @constructor + * @param {proto.IKeyExchangeMessage=} [properties] Properties to set + */ + function KeyExchangeMessage(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * KeyExchangeMessage id. + * @member {number} id + * @memberof proto.KeyExchangeMessage + * @instance + */ + KeyExchangeMessage.prototype.id = 0; + + /** + * KeyExchangeMessage baseKey. + * @member {Uint8Array} baseKey + * @memberof proto.KeyExchangeMessage + * @instance + */ + KeyExchangeMessage.prototype.baseKey = $util.newBuffer([]); + + /** + * KeyExchangeMessage ratchetKey. + * @member {Uint8Array} ratchetKey + * @memberof proto.KeyExchangeMessage + * @instance + */ + KeyExchangeMessage.prototype.ratchetKey = $util.newBuffer([]); + + /** + * KeyExchangeMessage identityKey. + * @member {Uint8Array} identityKey + * @memberof proto.KeyExchangeMessage + * @instance + */ + KeyExchangeMessage.prototype.identityKey = $util.newBuffer([]); + + /** + * KeyExchangeMessage baseKeySignature. + * @member {Uint8Array} baseKeySignature + * @memberof proto.KeyExchangeMessage + * @instance + */ + KeyExchangeMessage.prototype.baseKeySignature = $util.newBuffer([]); + + /** + * Creates a new KeyExchangeMessage instance using the specified properties. + * @function create + * @memberof proto.KeyExchangeMessage + * @static + * @param {proto.IKeyExchangeMessage=} [properties] Properties to set + * @returns {proto.KeyExchangeMessage} KeyExchangeMessage instance + */ + KeyExchangeMessage.create = function create(properties) { + return new KeyExchangeMessage(properties); + }; + + /** + * Encodes the specified KeyExchangeMessage message. Does not implicitly {@link proto.KeyExchangeMessage.verify|verify} messages. + * @function encode + * @memberof proto.KeyExchangeMessage + * @static + * @param {proto.IKeyExchangeMessage} message KeyExchangeMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KeyExchangeMessage.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id); + if (message.baseKey != null && Object.hasOwnProperty.call(message, "baseKey")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.baseKey); + if (message.ratchetKey != null && Object.hasOwnProperty.call(message, "ratchetKey")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.ratchetKey); + if (message.identityKey != null && Object.hasOwnProperty.call(message, "identityKey")) + writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.identityKey); + if (message.baseKeySignature != null && Object.hasOwnProperty.call(message, "baseKeySignature")) + writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.baseKeySignature); + return writer; + }; + + /** + * Encodes the specified KeyExchangeMessage message, length delimited. Does not implicitly {@link proto.KeyExchangeMessage.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.KeyExchangeMessage + * @static + * @param {proto.IKeyExchangeMessage} message KeyExchangeMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KeyExchangeMessage.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a KeyExchangeMessage message from the specified reader or buffer. + * @function decode + * @memberof proto.KeyExchangeMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.KeyExchangeMessage} KeyExchangeMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KeyExchangeMessage.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.KeyExchangeMessage(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = reader.uint32(); + break; + case 2: + message.baseKey = reader.bytes(); + break; + case 3: + message.ratchetKey = reader.bytes(); + break; + case 4: + message.identityKey = reader.bytes(); + break; + case 5: + message.baseKeySignature = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a KeyExchangeMessage message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.KeyExchangeMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.KeyExchangeMessage} KeyExchangeMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KeyExchangeMessage.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a KeyExchangeMessage message. + * @function verify + * @memberof proto.KeyExchangeMessage + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + KeyExchangeMessage.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.baseKey != null && message.hasOwnProperty("baseKey")) + if (!(message.baseKey && typeof message.baseKey.length === "number" || $util.isString(message.baseKey))) + return "baseKey: buffer expected"; + if (message.ratchetKey != null && message.hasOwnProperty("ratchetKey")) + if (!(message.ratchetKey && typeof message.ratchetKey.length === "number" || $util.isString(message.ratchetKey))) + return "ratchetKey: buffer expected"; + if (message.identityKey != null && message.hasOwnProperty("identityKey")) + if (!(message.identityKey && typeof message.identityKey.length === "number" || $util.isString(message.identityKey))) + return "identityKey: buffer expected"; + if (message.baseKeySignature != null && message.hasOwnProperty("baseKeySignature")) + if (!(message.baseKeySignature && typeof message.baseKeySignature.length === "number" || $util.isString(message.baseKeySignature))) + return "baseKeySignature: buffer expected"; + return null; + }; + + /** + * Creates a KeyExchangeMessage message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.KeyExchangeMessage + * @static + * @param {Object.} object Plain object + * @returns {proto.KeyExchangeMessage} KeyExchangeMessage + */ + KeyExchangeMessage.fromObject = function fromObject(object) { + if (object instanceof $root.proto.KeyExchangeMessage) + return object; + var message = new $root.proto.KeyExchangeMessage(); + if (object.id != null) + message.id = object.id >>> 0; + if (object.baseKey != null) + if (typeof object.baseKey === "string") + $util.base64.decode(object.baseKey, message.baseKey = $util.newBuffer($util.base64.length(object.baseKey)), 0); + else if (object.baseKey.length) + message.baseKey = object.baseKey; + if (object.ratchetKey != null) + if (typeof object.ratchetKey === "string") + $util.base64.decode(object.ratchetKey, message.ratchetKey = $util.newBuffer($util.base64.length(object.ratchetKey)), 0); + else if (object.ratchetKey.length) + message.ratchetKey = object.ratchetKey; + if (object.identityKey != null) + if (typeof object.identityKey === "string") + $util.base64.decode(object.identityKey, message.identityKey = $util.newBuffer($util.base64.length(object.identityKey)), 0); + else if (object.identityKey.length) + message.identityKey = object.identityKey; + if (object.baseKeySignature != null) + if (typeof object.baseKeySignature === "string") + $util.base64.decode(object.baseKeySignature, message.baseKeySignature = $util.newBuffer($util.base64.length(object.baseKeySignature)), 0); + else if (object.baseKeySignature.length) + message.baseKeySignature = object.baseKeySignature; + return message; + }; + + /** + * Creates a plain object from a KeyExchangeMessage message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.KeyExchangeMessage + * @static + * @param {proto.KeyExchangeMessage} message KeyExchangeMessage + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KeyExchangeMessage.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.id = 0; + if (options.bytes === String) + object.baseKey = ""; + else { + object.baseKey = []; + if (options.bytes !== Array) + object.baseKey = $util.newBuffer(object.baseKey); + } + if (options.bytes === String) + object.ratchetKey = ""; + else { + object.ratchetKey = []; + if (options.bytes !== Array) + object.ratchetKey = $util.newBuffer(object.ratchetKey); + } + if (options.bytes === String) + object.identityKey = ""; + else { + object.identityKey = []; + if (options.bytes !== Array) + object.identityKey = $util.newBuffer(object.identityKey); + } + if (options.bytes === String) + object.baseKeySignature = ""; + else { + object.baseKeySignature = []; + if (options.bytes !== Array) + object.baseKeySignature = $util.newBuffer(object.baseKeySignature); + } + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.baseKey != null && message.hasOwnProperty("baseKey")) + object.baseKey = options.bytes === String ? $util.base64.encode(message.baseKey, 0, message.baseKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.baseKey) : message.baseKey; + if (message.ratchetKey != null && message.hasOwnProperty("ratchetKey")) + object.ratchetKey = options.bytes === String ? $util.base64.encode(message.ratchetKey, 0, message.ratchetKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.ratchetKey) : message.ratchetKey; + if (message.identityKey != null && message.hasOwnProperty("identityKey")) + object.identityKey = options.bytes === String ? $util.base64.encode(message.identityKey, 0, message.identityKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.identityKey) : message.identityKey; + if (message.baseKeySignature != null && message.hasOwnProperty("baseKeySignature")) + object.baseKeySignature = options.bytes === String ? $util.base64.encode(message.baseKeySignature, 0, message.baseKeySignature.length) : options.bytes === Array ? Array.prototype.slice.call(message.baseKeySignature) : message.baseKeySignature; + return object; + }; + + /** + * Converts this KeyExchangeMessage to JSON. + * @function toJSON + * @memberof proto.KeyExchangeMessage + * @instance + * @returns {Object.} JSON object + */ + KeyExchangeMessage.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return KeyExchangeMessage; + })(); + proto.KeyId = (function() { /** @@ -18539,6 +20972,13 @@ $root.proto = (function() { * @property {proto.Message.IEncReactionMessage|null} [encReactionMessage] Message encReactionMessage * @property {proto.Message.IFutureProofMessage|null} [editedMessage] Message editedMessage * @property {proto.Message.IFutureProofMessage|null} [viewOnceMessageV2Extension] Message viewOnceMessageV2Extension + * @property {proto.Message.IPollCreationMessage|null} [pollCreationMessageV2] Message pollCreationMessageV2 + * @property {proto.Message.IScheduledCallCreationMessage|null} [scheduledCallCreationMessage] Message scheduledCallCreationMessage + * @property {proto.Message.IFutureProofMessage|null} [groupMentionedMessage] Message groupMentionedMessage + * @property {proto.Message.IPinInChatMessage|null} [pinInChatMessage] Message pinInChatMessage + * @property {proto.Message.IPollCreationMessage|null} [pollCreationMessageV3] Message pollCreationMessageV3 + * @property {proto.Message.IScheduledCallEditMessage|null} [scheduledCallEditMessage] Message scheduledCallEditMessage + * @property {proto.Message.IVideoMessage|null} [ptvMessage] Message ptvMessage */ /** @@ -18948,6 +21388,62 @@ $root.proto = (function() { */ Message.prototype.viewOnceMessageV2Extension = null; + /** + * Message pollCreationMessageV2. + * @member {proto.Message.IPollCreationMessage|null|undefined} pollCreationMessageV2 + * @memberof proto.Message + * @instance + */ + Message.prototype.pollCreationMessageV2 = null; + + /** + * Message scheduledCallCreationMessage. + * @member {proto.Message.IScheduledCallCreationMessage|null|undefined} scheduledCallCreationMessage + * @memberof proto.Message + * @instance + */ + Message.prototype.scheduledCallCreationMessage = null; + + /** + * Message groupMentionedMessage. + * @member {proto.Message.IFutureProofMessage|null|undefined} groupMentionedMessage + * @memberof proto.Message + * @instance + */ + Message.prototype.groupMentionedMessage = null; + + /** + * Message pinInChatMessage. + * @member {proto.Message.IPinInChatMessage|null|undefined} pinInChatMessage + * @memberof proto.Message + * @instance + */ + Message.prototype.pinInChatMessage = null; + + /** + * Message pollCreationMessageV3. + * @member {proto.Message.IPollCreationMessage|null|undefined} pollCreationMessageV3 + * @memberof proto.Message + * @instance + */ + Message.prototype.pollCreationMessageV3 = null; + + /** + * Message scheduledCallEditMessage. + * @member {proto.Message.IScheduledCallEditMessage|null|undefined} scheduledCallEditMessage + * @memberof proto.Message + * @instance + */ + Message.prototype.scheduledCallEditMessage = null; + + /** + * Message ptvMessage. + * @member {proto.Message.IVideoMessage|null|undefined} ptvMessage + * @memberof proto.Message + * @instance + */ + Message.prototype.ptvMessage = null; + /** * Creates a new Message instance using the specified properties. * @function create @@ -19070,6 +21566,20 @@ $root.proto = (function() { $root.proto.Message.FutureProofMessage.encode(message.editedMessage, writer.uint32(/* id 58, wireType 2 =*/466).fork()).ldelim(); if (message.viewOnceMessageV2Extension != null && Object.hasOwnProperty.call(message, "viewOnceMessageV2Extension")) $root.proto.Message.FutureProofMessage.encode(message.viewOnceMessageV2Extension, writer.uint32(/* id 59, wireType 2 =*/474).fork()).ldelim(); + if (message.pollCreationMessageV2 != null && Object.hasOwnProperty.call(message, "pollCreationMessageV2")) + $root.proto.Message.PollCreationMessage.encode(message.pollCreationMessageV2, writer.uint32(/* id 60, wireType 2 =*/482).fork()).ldelim(); + if (message.scheduledCallCreationMessage != null && Object.hasOwnProperty.call(message, "scheduledCallCreationMessage")) + $root.proto.Message.ScheduledCallCreationMessage.encode(message.scheduledCallCreationMessage, writer.uint32(/* id 61, wireType 2 =*/490).fork()).ldelim(); + if (message.groupMentionedMessage != null && Object.hasOwnProperty.call(message, "groupMentionedMessage")) + $root.proto.Message.FutureProofMessage.encode(message.groupMentionedMessage, writer.uint32(/* id 62, wireType 2 =*/498).fork()).ldelim(); + if (message.pinInChatMessage != null && Object.hasOwnProperty.call(message, "pinInChatMessage")) + $root.proto.Message.PinInChatMessage.encode(message.pinInChatMessage, writer.uint32(/* id 63, wireType 2 =*/506).fork()).ldelim(); + if (message.pollCreationMessageV3 != null && Object.hasOwnProperty.call(message, "pollCreationMessageV3")) + $root.proto.Message.PollCreationMessage.encode(message.pollCreationMessageV3, writer.uint32(/* id 64, wireType 2 =*/514).fork()).ldelim(); + if (message.scheduledCallEditMessage != null && Object.hasOwnProperty.call(message, "scheduledCallEditMessage")) + $root.proto.Message.ScheduledCallEditMessage.encode(message.scheduledCallEditMessage, writer.uint32(/* id 65, wireType 2 =*/522).fork()).ldelim(); + if (message.ptvMessage != null && Object.hasOwnProperty.call(message, "ptvMessage")) + $root.proto.Message.VideoMessage.encode(message.ptvMessage, writer.uint32(/* id 66, wireType 2 =*/530).fork()).ldelim(); return writer; }; @@ -19251,6 +21761,27 @@ $root.proto = (function() { case 59: message.viewOnceMessageV2Extension = $root.proto.Message.FutureProofMessage.decode(reader, reader.uint32()); break; + case 60: + message.pollCreationMessageV2 = $root.proto.Message.PollCreationMessage.decode(reader, reader.uint32()); + break; + case 61: + message.scheduledCallCreationMessage = $root.proto.Message.ScheduledCallCreationMessage.decode(reader, reader.uint32()); + break; + case 62: + message.groupMentionedMessage = $root.proto.Message.FutureProofMessage.decode(reader, reader.uint32()); + break; + case 63: + message.pinInChatMessage = $root.proto.Message.PinInChatMessage.decode(reader, reader.uint32()); + break; + case 64: + message.pollCreationMessageV3 = $root.proto.Message.PollCreationMessage.decode(reader, reader.uint32()); + break; + case 65: + message.scheduledCallEditMessage = $root.proto.Message.ScheduledCallEditMessage.decode(reader, reader.uint32()); + break; + case 66: + message.ptvMessage = $root.proto.Message.VideoMessage.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -19529,6 +22060,41 @@ $root.proto = (function() { if (error) return "viewOnceMessageV2Extension." + error; } + if (message.pollCreationMessageV2 != null && message.hasOwnProperty("pollCreationMessageV2")) { + var error = $root.proto.Message.PollCreationMessage.verify(message.pollCreationMessageV2); + if (error) + return "pollCreationMessageV2." + error; + } + if (message.scheduledCallCreationMessage != null && message.hasOwnProperty("scheduledCallCreationMessage")) { + var error = $root.proto.Message.ScheduledCallCreationMessage.verify(message.scheduledCallCreationMessage); + if (error) + return "scheduledCallCreationMessage." + error; + } + if (message.groupMentionedMessage != null && message.hasOwnProperty("groupMentionedMessage")) { + var error = $root.proto.Message.FutureProofMessage.verify(message.groupMentionedMessage); + if (error) + return "groupMentionedMessage." + error; + } + if (message.pinInChatMessage != null && message.hasOwnProperty("pinInChatMessage")) { + var error = $root.proto.Message.PinInChatMessage.verify(message.pinInChatMessage); + if (error) + return "pinInChatMessage." + error; + } + if (message.pollCreationMessageV3 != null && message.hasOwnProperty("pollCreationMessageV3")) { + var error = $root.proto.Message.PollCreationMessage.verify(message.pollCreationMessageV3); + if (error) + return "pollCreationMessageV3." + error; + } + if (message.scheduledCallEditMessage != null && message.hasOwnProperty("scheduledCallEditMessage")) { + var error = $root.proto.Message.ScheduledCallEditMessage.verify(message.scheduledCallEditMessage); + if (error) + return "scheduledCallEditMessage." + error; + } + if (message.ptvMessage != null && message.hasOwnProperty("ptvMessage")) { + var error = $root.proto.Message.VideoMessage.verify(message.ptvMessage); + if (error) + return "ptvMessage." + error; + } return null; }; @@ -19786,6 +22352,41 @@ $root.proto = (function() { throw TypeError(".proto.Message.viewOnceMessageV2Extension: object expected"); message.viewOnceMessageV2Extension = $root.proto.Message.FutureProofMessage.fromObject(object.viewOnceMessageV2Extension); } + if (object.pollCreationMessageV2 != null) { + if (typeof object.pollCreationMessageV2 !== "object") + throw TypeError(".proto.Message.pollCreationMessageV2: object expected"); + message.pollCreationMessageV2 = $root.proto.Message.PollCreationMessage.fromObject(object.pollCreationMessageV2); + } + if (object.scheduledCallCreationMessage != null) { + if (typeof object.scheduledCallCreationMessage !== "object") + throw TypeError(".proto.Message.scheduledCallCreationMessage: object expected"); + message.scheduledCallCreationMessage = $root.proto.Message.ScheduledCallCreationMessage.fromObject(object.scheduledCallCreationMessage); + } + if (object.groupMentionedMessage != null) { + if (typeof object.groupMentionedMessage !== "object") + throw TypeError(".proto.Message.groupMentionedMessage: object expected"); + message.groupMentionedMessage = $root.proto.Message.FutureProofMessage.fromObject(object.groupMentionedMessage); + } + if (object.pinInChatMessage != null) { + if (typeof object.pinInChatMessage !== "object") + throw TypeError(".proto.Message.pinInChatMessage: object expected"); + message.pinInChatMessage = $root.proto.Message.PinInChatMessage.fromObject(object.pinInChatMessage); + } + if (object.pollCreationMessageV3 != null) { + if (typeof object.pollCreationMessageV3 !== "object") + throw TypeError(".proto.Message.pollCreationMessageV3: object expected"); + message.pollCreationMessageV3 = $root.proto.Message.PollCreationMessage.fromObject(object.pollCreationMessageV3); + } + if (object.scheduledCallEditMessage != null) { + if (typeof object.scheduledCallEditMessage !== "object") + throw TypeError(".proto.Message.scheduledCallEditMessage: object expected"); + message.scheduledCallEditMessage = $root.proto.Message.ScheduledCallEditMessage.fromObject(object.scheduledCallEditMessage); + } + if (object.ptvMessage != null) { + if (typeof object.ptvMessage !== "object") + throw TypeError(".proto.Message.ptvMessage: object expected"); + message.ptvMessage = $root.proto.Message.VideoMessage.fromObject(object.ptvMessage); + } return message; }; @@ -19852,6 +22453,13 @@ $root.proto = (function() { object.encReactionMessage = null; object.editedMessage = null; object.viewOnceMessageV2Extension = null; + object.pollCreationMessageV2 = null; + object.scheduledCallCreationMessage = null; + object.groupMentionedMessage = null; + object.pinInChatMessage = null; + object.pollCreationMessageV3 = null; + object.scheduledCallEditMessage = null; + object.ptvMessage = null; } if (message.conversation != null && message.hasOwnProperty("conversation")) object.conversation = message.conversation; @@ -19951,6 +22559,20 @@ $root.proto = (function() { object.editedMessage = $root.proto.Message.FutureProofMessage.toObject(message.editedMessage, options); if (message.viewOnceMessageV2Extension != null && message.hasOwnProperty("viewOnceMessageV2Extension")) object.viewOnceMessageV2Extension = $root.proto.Message.FutureProofMessage.toObject(message.viewOnceMessageV2Extension, options); + if (message.pollCreationMessageV2 != null && message.hasOwnProperty("pollCreationMessageV2")) + object.pollCreationMessageV2 = $root.proto.Message.PollCreationMessage.toObject(message.pollCreationMessageV2, options); + if (message.scheduledCallCreationMessage != null && message.hasOwnProperty("scheduledCallCreationMessage")) + object.scheduledCallCreationMessage = $root.proto.Message.ScheduledCallCreationMessage.toObject(message.scheduledCallCreationMessage, options); + if (message.groupMentionedMessage != null && message.hasOwnProperty("groupMentionedMessage")) + object.groupMentionedMessage = $root.proto.Message.FutureProofMessage.toObject(message.groupMentionedMessage, options); + if (message.pinInChatMessage != null && message.hasOwnProperty("pinInChatMessage")) + object.pinInChatMessage = $root.proto.Message.PinInChatMessage.toObject(message.pinInChatMessage, options); + if (message.pollCreationMessageV3 != null && message.hasOwnProperty("pollCreationMessageV3")) + object.pollCreationMessageV3 = $root.proto.Message.PollCreationMessage.toObject(message.pollCreationMessageV3, options); + if (message.scheduledCallEditMessage != null && message.hasOwnProperty("scheduledCallEditMessage")) + object.scheduledCallEditMessage = $root.proto.Message.ScheduledCallEditMessage.toObject(message.scheduledCallEditMessage, options); + if (message.ptvMessage != null && message.hasOwnProperty("ptvMessage")) + object.ptvMessage = $root.proto.Message.VideoMessage.toObject(message.ptvMessage, options); return object; }; @@ -21574,6 +24196,7 @@ $root.proto = (function() { * @property {Uint8Array|null} [streamingSidecar] AudioMessage streamingSidecar * @property {Uint8Array|null} [waveform] AudioMessage waveform * @property {number|null} [backgroundArgb] AudioMessage backgroundArgb + * @property {boolean|null} [viewOnce] AudioMessage viewOnce */ /** @@ -21703,6 +24326,14 @@ $root.proto = (function() { */ AudioMessage.prototype.backgroundArgb = 0; + /** + * AudioMessage viewOnce. + * @member {boolean} viewOnce + * @memberof proto.Message.AudioMessage + * @instance + */ + AudioMessage.prototype.viewOnce = false; + /** * Creates a new AudioMessage instance using the specified properties. * @function create @@ -21755,6 +24386,8 @@ $root.proto = (function() { writer.uint32(/* id 19, wireType 2 =*/154).bytes(message.waveform); if (message.backgroundArgb != null && Object.hasOwnProperty.call(message, "backgroundArgb")) writer.uint32(/* id 20, wireType 5 =*/165).fixed32(message.backgroundArgb); + if (message.viewOnce != null && Object.hasOwnProperty.call(message, "viewOnce")) + writer.uint32(/* id 21, wireType 0 =*/168).bool(message.viewOnce); return writer; }; @@ -21831,6 +24464,9 @@ $root.proto = (function() { case 20: message.backgroundArgb = reader.fixed32(); break; + case 21: + message.viewOnce = reader.bool(); + break; default: reader.skipType(tag & 7); break; @@ -21910,6 +24546,9 @@ $root.proto = (function() { if (message.backgroundArgb != null && message.hasOwnProperty("backgroundArgb")) if (!$util.isInteger(message.backgroundArgb)) return "backgroundArgb: integer expected"; + if (message.viewOnce != null && message.hasOwnProperty("viewOnce")) + if (typeof message.viewOnce !== "boolean") + return "viewOnce: boolean expected"; return null; }; @@ -21985,6 +24624,8 @@ $root.proto = (function() { message.waveform = object.waveform; if (object.backgroundArgb != null) message.backgroundArgb = object.backgroundArgb >>> 0; + if (object.viewOnce != null) + message.viewOnce = Boolean(object.viewOnce); return message; }; @@ -22054,6 +24695,7 @@ $root.proto = (function() { object.waveform = $util.newBuffer(object.waveform); } object.backgroundArgb = 0; + object.viewOnce = false; } if (message.url != null && message.hasOwnProperty("url")) object.url = message.url; @@ -22089,6 +24731,8 @@ $root.proto = (function() { object.waveform = options.bytes === String ? $util.base64.encode(message.waveform, 0, message.waveform.length) : options.bytes === Array ? Array.prototype.slice.call(message.waveform) : message.waveform; if (message.backgroundArgb != null && message.hasOwnProperty("backgroundArgb")) object.backgroundArgb = message.backgroundArgb; + if (message.viewOnce != null && message.hasOwnProperty("viewOnce")) + object.viewOnce = message.viewOnce; return object; }; @@ -26678,6 +29322,11 @@ $root.proto = (function() { case 3: case 4: case 5: + case 6: + case 7: + case 8: + case 9: + case 10: break; } if (message.previewType != null && message.hasOwnProperty("previewType")) @@ -26803,6 +29452,26 @@ $root.proto = (function() { case 5: message.font = 5; break; + case "SYSTEM_BOLD": + case 6: + message.font = 6; + break; + case "MORNINGBREEZE_REGULAR": + case 7: + message.font = 7; + break; + case "CALISTOGA_REGULAR": + case 8: + message.font = 8; + break; + case "EXO2_EXTRABOLD": + case 9: + message.font = 9; + break; + case "COURIERPRIME_BOLD": + case 10: + message.font = 10; + break; } switch (object.previewType) { case "NONE": @@ -27052,6 +29721,11 @@ $root.proto = (function() { * @property {number} BRYNDAN_WRITE=3 BRYNDAN_WRITE value * @property {number} BEBASNEUE_REGULAR=4 BEBASNEUE_REGULAR value * @property {number} OSWALD_HEAVY=5 OSWALD_HEAVY value + * @property {number} SYSTEM_BOLD=6 SYSTEM_BOLD value + * @property {number} MORNINGBREEZE_REGULAR=7 MORNINGBREEZE_REGULAR value + * @property {number} CALISTOGA_REGULAR=8 CALISTOGA_REGULAR value + * @property {number} EXO2_EXTRABOLD=9 EXO2_EXTRABOLD value + * @property {number} COURIERPRIME_BOLD=10 COURIERPRIME_BOLD value */ ExtendedTextMessage.FontType = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -27061,6 +29735,11 @@ $root.proto = (function() { values[valuesById[3] = "BRYNDAN_WRITE"] = 3; values[valuesById[4] = "BEBASNEUE_REGULAR"] = 4; values[valuesById[5] = "OSWALD_HEAVY"] = 5; + values[valuesById[6] = "SYSTEM_BOLD"] = 6; + values[valuesById[7] = "MORNINGBREEZE_REGULAR"] = 7; + values[valuesById[8] = "CALISTOGA_REGULAR"] = 8; + values[valuesById[9] = "EXO2_EXTRABOLD"] = 9; + values[valuesById[10] = "COURIERPRIME_BOLD"] = 10; return values; })(); @@ -29459,6 +32138,8 @@ $root.proto = (function() { * @property {string|null} [originalMessageId] HistorySyncNotification originalMessageId * @property {number|null} [progress] HistorySyncNotification progress * @property {number|Long|null} [oldestMsgInChunkTimestampSec] HistorySyncNotification oldestMsgInChunkTimestampSec + * @property {Uint8Array|null} [initialHistBootstrapInlinePayload] HistorySyncNotification initialHistBootstrapInlinePayload + * @property {string|null} [peerDataRequestSessionId] HistorySyncNotification peerDataRequestSessionId */ /** @@ -29556,6 +32237,22 @@ $root.proto = (function() { */ HistorySyncNotification.prototype.oldestMsgInChunkTimestampSec = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + /** + * HistorySyncNotification initialHistBootstrapInlinePayload. + * @member {Uint8Array} initialHistBootstrapInlinePayload + * @memberof proto.Message.HistorySyncNotification + * @instance + */ + HistorySyncNotification.prototype.initialHistBootstrapInlinePayload = $util.newBuffer([]); + + /** + * HistorySyncNotification peerDataRequestSessionId. + * @member {string} peerDataRequestSessionId + * @memberof proto.Message.HistorySyncNotification + * @instance + */ + HistorySyncNotification.prototype.peerDataRequestSessionId = ""; + /** * Creates a new HistorySyncNotification instance using the specified properties. * @function create @@ -29600,6 +32297,10 @@ $root.proto = (function() { writer.uint32(/* id 9, wireType 0 =*/72).uint32(message.progress); if (message.oldestMsgInChunkTimestampSec != null && Object.hasOwnProperty.call(message, "oldestMsgInChunkTimestampSec")) writer.uint32(/* id 10, wireType 0 =*/80).int64(message.oldestMsgInChunkTimestampSec); + if (message.initialHistBootstrapInlinePayload != null && Object.hasOwnProperty.call(message, "initialHistBootstrapInlinePayload")) + writer.uint32(/* id 11, wireType 2 =*/90).bytes(message.initialHistBootstrapInlinePayload); + if (message.peerDataRequestSessionId != null && Object.hasOwnProperty.call(message, "peerDataRequestSessionId")) + writer.uint32(/* id 12, wireType 2 =*/98).string(message.peerDataRequestSessionId); return writer; }; @@ -29664,6 +32365,12 @@ $root.proto = (function() { case 10: message.oldestMsgInChunkTimestampSec = reader.int64(); break; + case 11: + message.initialHistBootstrapInlinePayload = reader.bytes(); + break; + case 12: + message.peerDataRequestSessionId = reader.string(); + break; default: reader.skipType(tag & 7); break; @@ -29724,6 +32431,7 @@ $root.proto = (function() { case 3: case 4: case 5: + case 6: break; } if (message.chunkOrder != null && message.hasOwnProperty("chunkOrder")) @@ -29738,6 +32446,12 @@ $root.proto = (function() { if (message.oldestMsgInChunkTimestampSec != null && message.hasOwnProperty("oldestMsgInChunkTimestampSec")) if (!$util.isInteger(message.oldestMsgInChunkTimestampSec) && !(message.oldestMsgInChunkTimestampSec && $util.isInteger(message.oldestMsgInChunkTimestampSec.low) && $util.isInteger(message.oldestMsgInChunkTimestampSec.high))) return "oldestMsgInChunkTimestampSec: integer|Long expected"; + if (message.initialHistBootstrapInlinePayload != null && message.hasOwnProperty("initialHistBootstrapInlinePayload")) + if (!(message.initialHistBootstrapInlinePayload && typeof message.initialHistBootstrapInlinePayload.length === "number" || $util.isString(message.initialHistBootstrapInlinePayload))) + return "initialHistBootstrapInlinePayload: buffer expected"; + if (message.peerDataRequestSessionId != null && message.hasOwnProperty("peerDataRequestSessionId")) + if (!$util.isString(message.peerDataRequestSessionId)) + return "peerDataRequestSessionId: string expected"; return null; }; @@ -29804,6 +32518,10 @@ $root.proto = (function() { case 5: message.syncType = 5; break; + case "ON_DEMAND": + case 6: + message.syncType = 6; + break; } if (object.chunkOrder != null) message.chunkOrder = object.chunkOrder >>> 0; @@ -29820,6 +32538,13 @@ $root.proto = (function() { message.oldestMsgInChunkTimestampSec = object.oldestMsgInChunkTimestampSec; else if (typeof object.oldestMsgInChunkTimestampSec === "object") message.oldestMsgInChunkTimestampSec = new $util.LongBits(object.oldestMsgInChunkTimestampSec.low >>> 0, object.oldestMsgInChunkTimestampSec.high >>> 0).toNumber(); + if (object.initialHistBootstrapInlinePayload != null) + if (typeof object.initialHistBootstrapInlinePayload === "string") + $util.base64.decode(object.initialHistBootstrapInlinePayload, message.initialHistBootstrapInlinePayload = $util.newBuffer($util.base64.length(object.initialHistBootstrapInlinePayload)), 0); + else if (object.initialHistBootstrapInlinePayload.length) + message.initialHistBootstrapInlinePayload = object.initialHistBootstrapInlinePayload; + if (object.peerDataRequestSessionId != null) + message.peerDataRequestSessionId = String(object.peerDataRequestSessionId); return message; }; @@ -29873,6 +32598,14 @@ $root.proto = (function() { object.oldestMsgInChunkTimestampSec = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; } else object.oldestMsgInChunkTimestampSec = options.longs === String ? "0" : 0; + if (options.bytes === String) + object.initialHistBootstrapInlinePayload = ""; + else { + object.initialHistBootstrapInlinePayload = []; + if (options.bytes !== Array) + object.initialHistBootstrapInlinePayload = $util.newBuffer(object.initialHistBootstrapInlinePayload); + } + object.peerDataRequestSessionId = ""; } if (message.fileSha256 != null && message.hasOwnProperty("fileSha256")) object.fileSha256 = options.bytes === String ? $util.base64.encode(message.fileSha256, 0, message.fileSha256.length) : options.bytes === Array ? Array.prototype.slice.call(message.fileSha256) : message.fileSha256; @@ -29900,6 +32633,10 @@ $root.proto = (function() { object.oldestMsgInChunkTimestampSec = options.longs === String ? String(message.oldestMsgInChunkTimestampSec) : message.oldestMsgInChunkTimestampSec; else object.oldestMsgInChunkTimestampSec = options.longs === String ? $util.Long.prototype.toString.call(message.oldestMsgInChunkTimestampSec) : options.longs === Number ? new $util.LongBits(message.oldestMsgInChunkTimestampSec.low >>> 0, message.oldestMsgInChunkTimestampSec.high >>> 0).toNumber() : message.oldestMsgInChunkTimestampSec; + if (message.initialHistBootstrapInlinePayload != null && message.hasOwnProperty("initialHistBootstrapInlinePayload")) + object.initialHistBootstrapInlinePayload = options.bytes === String ? $util.base64.encode(message.initialHistBootstrapInlinePayload, 0, message.initialHistBootstrapInlinePayload.length) : options.bytes === Array ? Array.prototype.slice.call(message.initialHistBootstrapInlinePayload) : message.initialHistBootstrapInlinePayload; + if (message.peerDataRequestSessionId != null && message.hasOwnProperty("peerDataRequestSessionId")) + object.peerDataRequestSessionId = message.peerDataRequestSessionId; return object; }; @@ -29924,6 +32661,7 @@ $root.proto = (function() { * @property {number} RECENT=3 RECENT value * @property {number} PUSH_NAME=4 PUSH_NAME value * @property {number} NON_BLOCKING_DATA=5 NON_BLOCKING_DATA value + * @property {number} ON_DEMAND=6 ON_DEMAND value */ HistorySyncNotification.HistorySyncType = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -29933,6 +32671,7 @@ $root.proto = (function() { values[valuesById[3] = "RECENT"] = 3; values[valuesById[4] = "PUSH_NAME"] = 4; values[valuesById[5] = "NON_BLOCKING_DATA"] = 5; + values[valuesById[6] = "ON_DEMAND"] = 6; return values; })(); @@ -32036,6 +34775,7 @@ $root.proto = (function() { * @property {proto.Message.IImageMessage|null} [imageMessage] Header imageMessage * @property {Uint8Array|null} [jpegThumbnail] Header jpegThumbnail * @property {proto.Message.IVideoMessage|null} [videoMessage] Header videoMessage + * @property {proto.Message.ILocationMessage|null} [locationMessage] Header locationMessage */ /** @@ -32109,17 +34849,25 @@ $root.proto = (function() { */ Header.prototype.videoMessage = null; + /** + * Header locationMessage. + * @member {proto.Message.ILocationMessage|null|undefined} locationMessage + * @memberof proto.Message.InteractiveMessage.Header + * @instance + */ + Header.prototype.locationMessage = null; + // OneOf field names bound to virtual getters and setters var $oneOfFields; /** * Header media. - * @member {"documentMessage"|"imageMessage"|"jpegThumbnail"|"videoMessage"|undefined} media + * @member {"documentMessage"|"imageMessage"|"jpegThumbnail"|"videoMessage"|"locationMessage"|undefined} media * @memberof proto.Message.InteractiveMessage.Header * @instance */ Object.defineProperty(Header.prototype, "media", { - get: $util.oneOfGetter($oneOfFields = ["documentMessage", "imageMessage", "jpegThumbnail", "videoMessage"]), + get: $util.oneOfGetter($oneOfFields = ["documentMessage", "imageMessage", "jpegThumbnail", "videoMessage", "locationMessage"]), set: $util.oneOfSetter($oneOfFields) }); @@ -32161,6 +34909,8 @@ $root.proto = (function() { writer.uint32(/* id 6, wireType 2 =*/50).bytes(message.jpegThumbnail); if (message.videoMessage != null && Object.hasOwnProperty.call(message, "videoMessage")) $root.proto.Message.VideoMessage.encode(message.videoMessage, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.locationMessage != null && Object.hasOwnProperty.call(message, "locationMessage")) + $root.proto.Message.LocationMessage.encode(message.locationMessage, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); return writer; }; @@ -32216,6 +34966,9 @@ $root.proto = (function() { case 7: message.videoMessage = $root.proto.Message.VideoMessage.decode(reader, reader.uint32()); break; + case 8: + message.locationMessage = $root.proto.Message.LocationMessage.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -32296,6 +35049,16 @@ $root.proto = (function() { return "videoMessage." + error; } } + if (message.locationMessage != null && message.hasOwnProperty("locationMessage")) { + if (properties.media === 1) + return "media: multiple values"; + properties.media = 1; + { + var error = $root.proto.Message.LocationMessage.verify(message.locationMessage); + if (error) + return "locationMessage." + error; + } + } return null; }; @@ -32337,6 +35100,11 @@ $root.proto = (function() { throw TypeError(".proto.Message.InteractiveMessage.Header.videoMessage: object expected"); message.videoMessage = $root.proto.Message.VideoMessage.fromObject(object.videoMessage); } + if (object.locationMessage != null) { + if (typeof object.locationMessage !== "object") + throw TypeError(".proto.Message.InteractiveMessage.Header.locationMessage: object expected"); + message.locationMessage = $root.proto.Message.LocationMessage.fromObject(object.locationMessage); + } return message; }; @@ -32384,6 +35152,11 @@ $root.proto = (function() { if (options.oneofs) object.media = "videoMessage"; } + if (message.locationMessage != null && message.hasOwnProperty("locationMessage")) { + object.locationMessage = $root.proto.Message.LocationMessage.toObject(message.locationMessage, options); + if (options.oneofs) + object.media = "locationMessage"; + } return object; }; @@ -33412,6 +36185,7 @@ $root.proto = (function() { * @memberof proto.Message.InteractiveResponseMessage * @interface IBody * @property {string|null} [text] Body text + * @property {proto.Message.InteractiveResponseMessage.Body.Format|null} [format] Body format */ /** @@ -33437,6 +36211,14 @@ $root.proto = (function() { */ Body.prototype.text = ""; + /** + * Body format. + * @member {proto.Message.InteractiveResponseMessage.Body.Format} format + * @memberof proto.Message.InteractiveResponseMessage.Body + * @instance + */ + Body.prototype.format = 0; + /** * Creates a new Body instance using the specified properties. * @function create @@ -33463,6 +36245,8 @@ $root.proto = (function() { writer = $Writer.create(); if (message.text != null && Object.hasOwnProperty.call(message, "text")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.text); + if (message.format != null && Object.hasOwnProperty.call(message, "format")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.format); return writer; }; @@ -33500,6 +36284,9 @@ $root.proto = (function() { case 1: message.text = reader.string(); break; + case 2: + message.format = reader.int32(); + break; default: reader.skipType(tag & 7); break; @@ -33538,6 +36325,14 @@ $root.proto = (function() { if (message.text != null && message.hasOwnProperty("text")) if (!$util.isString(message.text)) return "text: string expected"; + if (message.format != null && message.hasOwnProperty("format")) + switch (message.format) { + default: + return "format: enum value expected"; + case 0: + case 1: + break; + } return null; }; @@ -33555,6 +36350,16 @@ $root.proto = (function() { var message = new $root.proto.Message.InteractiveResponseMessage.Body(); if (object.text != null) message.text = String(object.text); + switch (object.format) { + case "DEFAULT": + case 0: + message.format = 0; + break; + case "EXTENSIONS_1": + case 1: + message.format = 1; + break; + } return message; }; @@ -33571,10 +36376,14 @@ $root.proto = (function() { if (!options) options = {}; var object = {}; - if (options.defaults) + if (options.defaults) { object.text = ""; + object.format = options.enums === String ? "DEFAULT" : 0; + } if (message.text != null && message.hasOwnProperty("text")) object.text = message.text; + if (message.format != null && message.hasOwnProperty("format")) + object.format = options.enums === String ? $root.proto.Message.InteractiveResponseMessage.Body.Format[message.format] : message.format; return object; }; @@ -33589,6 +36398,20 @@ $root.proto = (function() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Format enum. + * @name proto.Message.InteractiveResponseMessage.Body.Format + * @enum {number} + * @property {number} DEFAULT=0 DEFAULT value + * @property {number} EXTENSIONS_1=1 EXTENSIONS_1 value + */ + Body.Format = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "DEFAULT"] = 0; + values[valuesById[1] = "EXTENSIONS_1"] = 1; + return values; + })(); + return Body; })(); @@ -38456,6 +41279,8 @@ $root.proto = (function() { * @property {proto.Message.PeerDataOperationRequestType|null} [peerDataOperationRequestType] PeerDataOperationRequestMessage peerDataOperationRequestType * @property {Array.|null} [requestStickerReupload] PeerDataOperationRequestMessage requestStickerReupload * @property {Array.|null} [requestUrlPreview] PeerDataOperationRequestMessage requestUrlPreview + * @property {proto.Message.PeerDataOperationRequestMessage.IHistorySyncOnDemandRequest|null} [historySyncOnDemandRequest] PeerDataOperationRequestMessage historySyncOnDemandRequest + * @property {Array.|null} [placeholderMessageResendRequest] PeerDataOperationRequestMessage placeholderMessageResendRequest */ /** @@ -38469,6 +41294,7 @@ $root.proto = (function() { function PeerDataOperationRequestMessage(properties) { this.requestStickerReupload = []; this.requestUrlPreview = []; + this.placeholderMessageResendRequest = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -38499,6 +41325,22 @@ $root.proto = (function() { */ PeerDataOperationRequestMessage.prototype.requestUrlPreview = $util.emptyArray; + /** + * PeerDataOperationRequestMessage historySyncOnDemandRequest. + * @member {proto.Message.PeerDataOperationRequestMessage.IHistorySyncOnDemandRequest|null|undefined} historySyncOnDemandRequest + * @memberof proto.Message.PeerDataOperationRequestMessage + * @instance + */ + PeerDataOperationRequestMessage.prototype.historySyncOnDemandRequest = null; + + /** + * PeerDataOperationRequestMessage placeholderMessageResendRequest. + * @member {Array.} placeholderMessageResendRequest + * @memberof proto.Message.PeerDataOperationRequestMessage + * @instance + */ + PeerDataOperationRequestMessage.prototype.placeholderMessageResendRequest = $util.emptyArray; + /** * Creates a new PeerDataOperationRequestMessage instance using the specified properties. * @function create @@ -38531,6 +41373,11 @@ $root.proto = (function() { if (message.requestUrlPreview != null && message.requestUrlPreview.length) for (var i = 0; i < message.requestUrlPreview.length; ++i) $root.proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview.encode(message.requestUrlPreview[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.historySyncOnDemandRequest != null && Object.hasOwnProperty.call(message, "historySyncOnDemandRequest")) + $root.proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest.encode(message.historySyncOnDemandRequest, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.placeholderMessageResendRequest != null && message.placeholderMessageResendRequest.length) + for (var i = 0; i < message.placeholderMessageResendRequest.length; ++i) + $root.proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest.encode(message.placeholderMessageResendRequest[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; @@ -38578,6 +41425,14 @@ $root.proto = (function() { message.requestUrlPreview = []; message.requestUrlPreview.push($root.proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview.decode(reader, reader.uint32())); break; + case 4: + message.historySyncOnDemandRequest = $root.proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest.decode(reader, reader.uint32()); + break; + case 5: + if (!(message.placeholderMessageResendRequest && message.placeholderMessageResendRequest.length)) + message.placeholderMessageResendRequest = []; + message.placeholderMessageResendRequest.push($root.proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest.decode(reader, reader.uint32())); + break; default: reader.skipType(tag & 7); break; @@ -38620,6 +41475,8 @@ $root.proto = (function() { case 0: case 1: case 2: + case 3: + case 4: break; } if (message.requestStickerReupload != null && message.hasOwnProperty("requestStickerReupload")) { @@ -38640,6 +41497,20 @@ $root.proto = (function() { return "requestUrlPreview." + error; } } + if (message.historySyncOnDemandRequest != null && message.hasOwnProperty("historySyncOnDemandRequest")) { + var error = $root.proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest.verify(message.historySyncOnDemandRequest); + if (error) + return "historySyncOnDemandRequest." + error; + } + if (message.placeholderMessageResendRequest != null && message.hasOwnProperty("placeholderMessageResendRequest")) { + if (!Array.isArray(message.placeholderMessageResendRequest)) + return "placeholderMessageResendRequest: array expected"; + for (var i = 0; i < message.placeholderMessageResendRequest.length; ++i) { + var error = $root.proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest.verify(message.placeholderMessageResendRequest[i]); + if (error) + return "placeholderMessageResendRequest." + error; + } + } return null; }; @@ -38668,6 +41539,14 @@ $root.proto = (function() { case 2: message.peerDataOperationRequestType = 2; break; + case "HISTORY_SYNC_ON_DEMAND": + case 3: + message.peerDataOperationRequestType = 3; + break; + case "PLACEHOLDER_MESSAGE_RESEND": + case 4: + message.peerDataOperationRequestType = 4; + break; } if (object.requestStickerReupload) { if (!Array.isArray(object.requestStickerReupload)) @@ -38689,6 +41568,21 @@ $root.proto = (function() { message.requestUrlPreview[i] = $root.proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview.fromObject(object.requestUrlPreview[i]); } } + if (object.historySyncOnDemandRequest != null) { + if (typeof object.historySyncOnDemandRequest !== "object") + throw TypeError(".proto.Message.PeerDataOperationRequestMessage.historySyncOnDemandRequest: object expected"); + message.historySyncOnDemandRequest = $root.proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest.fromObject(object.historySyncOnDemandRequest); + } + if (object.placeholderMessageResendRequest) { + if (!Array.isArray(object.placeholderMessageResendRequest)) + throw TypeError(".proto.Message.PeerDataOperationRequestMessage.placeholderMessageResendRequest: array expected"); + message.placeholderMessageResendRequest = []; + for (var i = 0; i < object.placeholderMessageResendRequest.length; ++i) { + if (typeof object.placeholderMessageResendRequest[i] !== "object") + throw TypeError(".proto.Message.PeerDataOperationRequestMessage.placeholderMessageResendRequest: object expected"); + message.placeholderMessageResendRequest[i] = $root.proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest.fromObject(object.placeholderMessageResendRequest[i]); + } + } return message; }; @@ -38708,9 +41602,12 @@ $root.proto = (function() { if (options.arrays || options.defaults) { object.requestStickerReupload = []; object.requestUrlPreview = []; + object.placeholderMessageResendRequest = []; } - if (options.defaults) + if (options.defaults) { object.peerDataOperationRequestType = options.enums === String ? "UPLOAD_STICKER" : 0; + object.historySyncOnDemandRequest = null; + } if (message.peerDataOperationRequestType != null && message.hasOwnProperty("peerDataOperationRequestType")) object.peerDataOperationRequestType = options.enums === String ? $root.proto.Message.PeerDataOperationRequestType[message.peerDataOperationRequestType] : message.peerDataOperationRequestType; if (message.requestStickerReupload && message.requestStickerReupload.length) { @@ -38723,6 +41620,13 @@ $root.proto = (function() { for (var j = 0; j < message.requestUrlPreview.length; ++j) object.requestUrlPreview[j] = $root.proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview.toObject(message.requestUrlPreview[j], options); } + if (message.historySyncOnDemandRequest != null && message.hasOwnProperty("historySyncOnDemandRequest")) + object.historySyncOnDemandRequest = $root.proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest.toObject(message.historySyncOnDemandRequest, options); + if (message.placeholderMessageResendRequest && message.placeholderMessageResendRequest.length) { + object.placeholderMessageResendRequest = []; + for (var j = 0; j < message.placeholderMessageResendRequest.length; ++j) + object.placeholderMessageResendRequest[j] = $root.proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest.toObject(message.placeholderMessageResendRequest[j], options); + } return object; }; @@ -38737,6 +41641,488 @@ $root.proto = (function() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + PeerDataOperationRequestMessage.HistorySyncOnDemandRequest = (function() { + + /** + * Properties of a HistorySyncOnDemandRequest. + * @memberof proto.Message.PeerDataOperationRequestMessage + * @interface IHistorySyncOnDemandRequest + * @property {string|null} [chatJid] HistorySyncOnDemandRequest chatJid + * @property {string|null} [oldestMsgId] HistorySyncOnDemandRequest oldestMsgId + * @property {boolean|null} [oldestMsgFromMe] HistorySyncOnDemandRequest oldestMsgFromMe + * @property {number|null} [onDemandMsgCount] HistorySyncOnDemandRequest onDemandMsgCount + * @property {number|Long|null} [oldestMsgTimestampMs] HistorySyncOnDemandRequest oldestMsgTimestampMs + */ + + /** + * Constructs a new HistorySyncOnDemandRequest. + * @memberof proto.Message.PeerDataOperationRequestMessage + * @classdesc Represents a HistorySyncOnDemandRequest. + * @implements IHistorySyncOnDemandRequest + * @constructor + * @param {proto.Message.PeerDataOperationRequestMessage.IHistorySyncOnDemandRequest=} [properties] Properties to set + */ + function HistorySyncOnDemandRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * HistorySyncOnDemandRequest chatJid. + * @member {string} chatJid + * @memberof proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + * @instance + */ + HistorySyncOnDemandRequest.prototype.chatJid = ""; + + /** + * HistorySyncOnDemandRequest oldestMsgId. + * @member {string} oldestMsgId + * @memberof proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + * @instance + */ + HistorySyncOnDemandRequest.prototype.oldestMsgId = ""; + + /** + * HistorySyncOnDemandRequest oldestMsgFromMe. + * @member {boolean} oldestMsgFromMe + * @memberof proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + * @instance + */ + HistorySyncOnDemandRequest.prototype.oldestMsgFromMe = false; + + /** + * HistorySyncOnDemandRequest onDemandMsgCount. + * @member {number} onDemandMsgCount + * @memberof proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + * @instance + */ + HistorySyncOnDemandRequest.prototype.onDemandMsgCount = 0; + + /** + * HistorySyncOnDemandRequest oldestMsgTimestampMs. + * @member {number|Long} oldestMsgTimestampMs + * @memberof proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + * @instance + */ + HistorySyncOnDemandRequest.prototype.oldestMsgTimestampMs = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * Creates a new HistorySyncOnDemandRequest instance using the specified properties. + * @function create + * @memberof proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + * @static + * @param {proto.Message.PeerDataOperationRequestMessage.IHistorySyncOnDemandRequest=} [properties] Properties to set + * @returns {proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest} HistorySyncOnDemandRequest instance + */ + HistorySyncOnDemandRequest.create = function create(properties) { + return new HistorySyncOnDemandRequest(properties); + }; + + /** + * Encodes the specified HistorySyncOnDemandRequest message. Does not implicitly {@link proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest.verify|verify} messages. + * @function encode + * @memberof proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + * @static + * @param {proto.Message.PeerDataOperationRequestMessage.IHistorySyncOnDemandRequest} message HistorySyncOnDemandRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + HistorySyncOnDemandRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.chatJid != null && Object.hasOwnProperty.call(message, "chatJid")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.chatJid); + if (message.oldestMsgId != null && Object.hasOwnProperty.call(message, "oldestMsgId")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.oldestMsgId); + if (message.oldestMsgFromMe != null && Object.hasOwnProperty.call(message, "oldestMsgFromMe")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.oldestMsgFromMe); + if (message.onDemandMsgCount != null && Object.hasOwnProperty.call(message, "onDemandMsgCount")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.onDemandMsgCount); + if (message.oldestMsgTimestampMs != null && Object.hasOwnProperty.call(message, "oldestMsgTimestampMs")) + writer.uint32(/* id 5, wireType 0 =*/40).int64(message.oldestMsgTimestampMs); + return writer; + }; + + /** + * Encodes the specified HistorySyncOnDemandRequest message, length delimited. Does not implicitly {@link proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + * @static + * @param {proto.Message.PeerDataOperationRequestMessage.IHistorySyncOnDemandRequest} message HistorySyncOnDemandRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + HistorySyncOnDemandRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a HistorySyncOnDemandRequest message from the specified reader or buffer. + * @function decode + * @memberof proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest} HistorySyncOnDemandRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + HistorySyncOnDemandRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.chatJid = reader.string(); + break; + case 2: + message.oldestMsgId = reader.string(); + break; + case 3: + message.oldestMsgFromMe = reader.bool(); + break; + case 4: + message.onDemandMsgCount = reader.int32(); + break; + case 5: + message.oldestMsgTimestampMs = reader.int64(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a HistorySyncOnDemandRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest} HistorySyncOnDemandRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + HistorySyncOnDemandRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a HistorySyncOnDemandRequest message. + * @function verify + * @memberof proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + HistorySyncOnDemandRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.chatJid != null && message.hasOwnProperty("chatJid")) + if (!$util.isString(message.chatJid)) + return "chatJid: string expected"; + if (message.oldestMsgId != null && message.hasOwnProperty("oldestMsgId")) + if (!$util.isString(message.oldestMsgId)) + return "oldestMsgId: string expected"; + if (message.oldestMsgFromMe != null && message.hasOwnProperty("oldestMsgFromMe")) + if (typeof message.oldestMsgFromMe !== "boolean") + return "oldestMsgFromMe: boolean expected"; + if (message.onDemandMsgCount != null && message.hasOwnProperty("onDemandMsgCount")) + if (!$util.isInteger(message.onDemandMsgCount)) + return "onDemandMsgCount: integer expected"; + if (message.oldestMsgTimestampMs != null && message.hasOwnProperty("oldestMsgTimestampMs")) + if (!$util.isInteger(message.oldestMsgTimestampMs) && !(message.oldestMsgTimestampMs && $util.isInteger(message.oldestMsgTimestampMs.low) && $util.isInteger(message.oldestMsgTimestampMs.high))) + return "oldestMsgTimestampMs: integer|Long expected"; + return null; + }; + + /** + * Creates a HistorySyncOnDemandRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + * @static + * @param {Object.} object Plain object + * @returns {proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest} HistorySyncOnDemandRequest + */ + HistorySyncOnDemandRequest.fromObject = function fromObject(object) { + if (object instanceof $root.proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest) + return object; + var message = new $root.proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest(); + if (object.chatJid != null) + message.chatJid = String(object.chatJid); + if (object.oldestMsgId != null) + message.oldestMsgId = String(object.oldestMsgId); + if (object.oldestMsgFromMe != null) + message.oldestMsgFromMe = Boolean(object.oldestMsgFromMe); + if (object.onDemandMsgCount != null) + message.onDemandMsgCount = object.onDemandMsgCount | 0; + if (object.oldestMsgTimestampMs != null) + if ($util.Long) + (message.oldestMsgTimestampMs = $util.Long.fromValue(object.oldestMsgTimestampMs)).unsigned = false; + else if (typeof object.oldestMsgTimestampMs === "string") + message.oldestMsgTimestampMs = parseInt(object.oldestMsgTimestampMs, 10); + else if (typeof object.oldestMsgTimestampMs === "number") + message.oldestMsgTimestampMs = object.oldestMsgTimestampMs; + else if (typeof object.oldestMsgTimestampMs === "object") + message.oldestMsgTimestampMs = new $util.LongBits(object.oldestMsgTimestampMs.low >>> 0, object.oldestMsgTimestampMs.high >>> 0).toNumber(); + return message; + }; + + /** + * Creates a plain object from a HistorySyncOnDemandRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + * @static + * @param {proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest} message HistorySyncOnDemandRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + HistorySyncOnDemandRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.chatJid = ""; + object.oldestMsgId = ""; + object.oldestMsgFromMe = false; + object.onDemandMsgCount = 0; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.oldestMsgTimestampMs = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.oldestMsgTimestampMs = options.longs === String ? "0" : 0; + } + if (message.chatJid != null && message.hasOwnProperty("chatJid")) + object.chatJid = message.chatJid; + if (message.oldestMsgId != null && message.hasOwnProperty("oldestMsgId")) + object.oldestMsgId = message.oldestMsgId; + if (message.oldestMsgFromMe != null && message.hasOwnProperty("oldestMsgFromMe")) + object.oldestMsgFromMe = message.oldestMsgFromMe; + if (message.onDemandMsgCount != null && message.hasOwnProperty("onDemandMsgCount")) + object.onDemandMsgCount = message.onDemandMsgCount; + if (message.oldestMsgTimestampMs != null && message.hasOwnProperty("oldestMsgTimestampMs")) + if (typeof message.oldestMsgTimestampMs === "number") + object.oldestMsgTimestampMs = options.longs === String ? String(message.oldestMsgTimestampMs) : message.oldestMsgTimestampMs; + else + object.oldestMsgTimestampMs = options.longs === String ? $util.Long.prototype.toString.call(message.oldestMsgTimestampMs) : options.longs === Number ? new $util.LongBits(message.oldestMsgTimestampMs.low >>> 0, message.oldestMsgTimestampMs.high >>> 0).toNumber() : message.oldestMsgTimestampMs; + return object; + }; + + /** + * Converts this HistorySyncOnDemandRequest to JSON. + * @function toJSON + * @memberof proto.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + * @instance + * @returns {Object.} JSON object + */ + HistorySyncOnDemandRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return HistorySyncOnDemandRequest; + })(); + + PeerDataOperationRequestMessage.PlaceholderMessageResendRequest = (function() { + + /** + * Properties of a PlaceholderMessageResendRequest. + * @memberof proto.Message.PeerDataOperationRequestMessage + * @interface IPlaceholderMessageResendRequest + * @property {proto.IMessageKey|null} [messageKey] PlaceholderMessageResendRequest messageKey + */ + + /** + * Constructs a new PlaceholderMessageResendRequest. + * @memberof proto.Message.PeerDataOperationRequestMessage + * @classdesc Represents a PlaceholderMessageResendRequest. + * @implements IPlaceholderMessageResendRequest + * @constructor + * @param {proto.Message.PeerDataOperationRequestMessage.IPlaceholderMessageResendRequest=} [properties] Properties to set + */ + function PlaceholderMessageResendRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PlaceholderMessageResendRequest messageKey. + * @member {proto.IMessageKey|null|undefined} messageKey + * @memberof proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest + * @instance + */ + PlaceholderMessageResendRequest.prototype.messageKey = null; + + /** + * Creates a new PlaceholderMessageResendRequest instance using the specified properties. + * @function create + * @memberof proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest + * @static + * @param {proto.Message.PeerDataOperationRequestMessage.IPlaceholderMessageResendRequest=} [properties] Properties to set + * @returns {proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest} PlaceholderMessageResendRequest instance + */ + PlaceholderMessageResendRequest.create = function create(properties) { + return new PlaceholderMessageResendRequest(properties); + }; + + /** + * Encodes the specified PlaceholderMessageResendRequest message. Does not implicitly {@link proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest.verify|verify} messages. + * @function encode + * @memberof proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest + * @static + * @param {proto.Message.PeerDataOperationRequestMessage.IPlaceholderMessageResendRequest} message PlaceholderMessageResendRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlaceholderMessageResendRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.messageKey != null && Object.hasOwnProperty.call(message, "messageKey")) + $root.proto.MessageKey.encode(message.messageKey, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PlaceholderMessageResendRequest message, length delimited. Does not implicitly {@link proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest + * @static + * @param {proto.Message.PeerDataOperationRequestMessage.IPlaceholderMessageResendRequest} message PlaceholderMessageResendRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlaceholderMessageResendRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PlaceholderMessageResendRequest message from the specified reader or buffer. + * @function decode + * @memberof proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest} PlaceholderMessageResendRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlaceholderMessageResendRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.messageKey = $root.proto.MessageKey.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PlaceholderMessageResendRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest} PlaceholderMessageResendRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlaceholderMessageResendRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PlaceholderMessageResendRequest message. + * @function verify + * @memberof proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PlaceholderMessageResendRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.messageKey != null && message.hasOwnProperty("messageKey")) { + var error = $root.proto.MessageKey.verify(message.messageKey); + if (error) + return "messageKey." + error; + } + return null; + }; + + /** + * Creates a PlaceholderMessageResendRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest + * @static + * @param {Object.} object Plain object + * @returns {proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest} PlaceholderMessageResendRequest + */ + PlaceholderMessageResendRequest.fromObject = function fromObject(object) { + if (object instanceof $root.proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest) + return object; + var message = new $root.proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest(); + if (object.messageKey != null) { + if (typeof object.messageKey !== "object") + throw TypeError(".proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest.messageKey: object expected"); + message.messageKey = $root.proto.MessageKey.fromObject(object.messageKey); + } + return message; + }; + + /** + * Creates a plain object from a PlaceholderMessageResendRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest + * @static + * @param {proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest} message PlaceholderMessageResendRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PlaceholderMessageResendRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.messageKey = null; + if (message.messageKey != null && message.hasOwnProperty("messageKey")) + object.messageKey = $root.proto.MessageKey.toObject(message.messageKey, options); + return object; + }; + + /** + * Converts this PlaceholderMessageResendRequest to JSON. + * @function toJSON + * @memberof proto.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest + * @instance + * @returns {Object.} JSON object + */ + PlaceholderMessageResendRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PlaceholderMessageResendRequest; + })(); + PeerDataOperationRequestMessage.RequestStickerReupload = (function() { /** @@ -38931,6 +42317,7 @@ $root.proto = (function() { * @memberof proto.Message.PeerDataOperationRequestMessage * @interface IRequestUrlPreview * @property {string|null} [url] RequestUrlPreview url + * @property {boolean|null} [includeHqThumbnail] RequestUrlPreview includeHqThumbnail */ /** @@ -38956,6 +42343,14 @@ $root.proto = (function() { */ RequestUrlPreview.prototype.url = ""; + /** + * RequestUrlPreview includeHqThumbnail. + * @member {boolean} includeHqThumbnail + * @memberof proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview + * @instance + */ + RequestUrlPreview.prototype.includeHqThumbnail = false; + /** * Creates a new RequestUrlPreview instance using the specified properties. * @function create @@ -38982,6 +42377,8 @@ $root.proto = (function() { writer = $Writer.create(); if (message.url != null && Object.hasOwnProperty.call(message, "url")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.url); + if (message.includeHqThumbnail != null && Object.hasOwnProperty.call(message, "includeHqThumbnail")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.includeHqThumbnail); return writer; }; @@ -39019,6 +42416,9 @@ $root.proto = (function() { case 1: message.url = reader.string(); break; + case 2: + message.includeHqThumbnail = reader.bool(); + break; default: reader.skipType(tag & 7); break; @@ -39057,6 +42457,9 @@ $root.proto = (function() { if (message.url != null && message.hasOwnProperty("url")) if (!$util.isString(message.url)) return "url: string expected"; + if (message.includeHqThumbnail != null && message.hasOwnProperty("includeHqThumbnail")) + if (typeof message.includeHqThumbnail !== "boolean") + return "includeHqThumbnail: boolean expected"; return null; }; @@ -39074,6 +42477,8 @@ $root.proto = (function() { var message = new $root.proto.Message.PeerDataOperationRequestMessage.RequestUrlPreview(); if (object.url != null) message.url = String(object.url); + if (object.includeHqThumbnail != null) + message.includeHqThumbnail = Boolean(object.includeHqThumbnail); return message; }; @@ -39090,10 +42495,14 @@ $root.proto = (function() { if (!options) options = {}; var object = {}; - if (options.defaults) + if (options.defaults) { object.url = ""; + object.includeHqThumbnail = false; + } if (message.url != null && message.hasOwnProperty("url")) object.url = message.url; + if (message.includeHqThumbnail != null && message.hasOwnProperty("includeHqThumbnail")) + object.includeHqThumbnail = message.includeHqThumbnail; return object; }; @@ -39283,6 +42692,8 @@ $root.proto = (function() { case 0: case 1: case 2: + case 3: + case 4: break; } if (message.stanzaId != null && message.hasOwnProperty("stanzaId")) @@ -39325,6 +42736,14 @@ $root.proto = (function() { case 2: message.peerDataOperationRequestType = 2; break; + case "HISTORY_SYNC_ON_DEMAND": + case 3: + message.peerDataOperationRequestType = 3; + break; + case "PLACEHOLDER_MESSAGE_RESEND": + case 4: + message.peerDataOperationRequestType = 4; + break; } if (object.stanzaId != null) message.stanzaId = String(object.stanzaId); @@ -39392,6 +42811,7 @@ $root.proto = (function() { * @property {proto.MediaRetryNotification.ResultType|null} [mediaUploadResult] PeerDataOperationResult mediaUploadResult * @property {proto.Message.IStickerMessage|null} [stickerMessage] PeerDataOperationResult stickerMessage * @property {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.ILinkPreviewResponse|null} [linkPreviewResponse] PeerDataOperationResult linkPreviewResponse + * @property {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.IPlaceholderMessageResendResponse|null} [placeholderMessageResendResponse] PeerDataOperationResult placeholderMessageResendResponse */ /** @@ -39433,6 +42853,14 @@ $root.proto = (function() { */ PeerDataOperationResult.prototype.linkPreviewResponse = null; + /** + * PeerDataOperationResult placeholderMessageResendResponse. + * @member {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.IPlaceholderMessageResendResponse|null|undefined} placeholderMessageResendResponse + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult + * @instance + */ + PeerDataOperationResult.prototype.placeholderMessageResendResponse = null; + /** * Creates a new PeerDataOperationResult instance using the specified properties. * @function create @@ -39463,6 +42891,8 @@ $root.proto = (function() { $root.proto.Message.StickerMessage.encode(message.stickerMessage, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.linkPreviewResponse != null && Object.hasOwnProperty.call(message, "linkPreviewResponse")) $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.encode(message.linkPreviewResponse, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.placeholderMessageResendResponse != null && Object.hasOwnProperty.call(message, "placeholderMessageResendResponse")) + $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse.encode(message.placeholderMessageResendResponse, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); return writer; }; @@ -39506,6 +42936,9 @@ $root.proto = (function() { case 3: message.linkPreviewResponse = $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.decode(reader, reader.uint32()); break; + case 4: + message.placeholderMessageResendResponse = $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -39561,6 +42994,11 @@ $root.proto = (function() { if (error) return "linkPreviewResponse." + error; } + if (message.placeholderMessageResendResponse != null && message.hasOwnProperty("placeholderMessageResendResponse")) { + var error = $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse.verify(message.placeholderMessageResendResponse); + if (error) + return "placeholderMessageResendResponse." + error; + } return null; }; @@ -39604,6 +43042,11 @@ $root.proto = (function() { throw TypeError(".proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.linkPreviewResponse: object expected"); message.linkPreviewResponse = $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.fromObject(object.linkPreviewResponse); } + if (object.placeholderMessageResendResponse != null) { + if (typeof object.placeholderMessageResendResponse !== "object") + throw TypeError(".proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.placeholderMessageResendResponse: object expected"); + message.placeholderMessageResendResponse = $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse.fromObject(object.placeholderMessageResendResponse); + } return message; }; @@ -39624,6 +43067,7 @@ $root.proto = (function() { object.mediaUploadResult = options.enums === String ? "GENERAL_ERROR" : 0; object.stickerMessage = null; object.linkPreviewResponse = null; + object.placeholderMessageResendResponse = null; } if (message.mediaUploadResult != null && message.hasOwnProperty("mediaUploadResult")) object.mediaUploadResult = options.enums === String ? $root.proto.MediaRetryNotification.ResultType[message.mediaUploadResult] : message.mediaUploadResult; @@ -39631,6 +43075,8 @@ $root.proto = (function() { object.stickerMessage = $root.proto.Message.StickerMessage.toObject(message.stickerMessage, options); if (message.linkPreviewResponse != null && message.hasOwnProperty("linkPreviewResponse")) object.linkPreviewResponse = $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.toObject(message.linkPreviewResponse, options); + if (message.placeholderMessageResendResponse != null && message.hasOwnProperty("placeholderMessageResendResponse")) + object.placeholderMessageResendResponse = $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse.toObject(message.placeholderMessageResendResponse, options); return object; }; @@ -39658,6 +43104,7 @@ $root.proto = (function() { * @property {string|null} [canonicalUrl] LinkPreviewResponse canonicalUrl * @property {string|null} [matchText] LinkPreviewResponse matchText * @property {string|null} [previewType] LinkPreviewResponse previewType + * @property {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.ILinkPreviewHighQualityThumbnail|null} [hqThumbnail] LinkPreviewResponse hqThumbnail */ /** @@ -39731,6 +43178,14 @@ $root.proto = (function() { */ LinkPreviewResponse.prototype.previewType = ""; + /** + * LinkPreviewResponse hqThumbnail. + * @member {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.ILinkPreviewHighQualityThumbnail|null|undefined} hqThumbnail + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse + * @instance + */ + LinkPreviewResponse.prototype.hqThumbnail = null; + /** * Creates a new LinkPreviewResponse instance using the specified properties. * @function create @@ -39769,6 +43224,8 @@ $root.proto = (function() { writer.uint32(/* id 6, wireType 2 =*/50).string(message.matchText); if (message.previewType != null && Object.hasOwnProperty.call(message, "previewType")) writer.uint32(/* id 7, wireType 2 =*/58).string(message.previewType); + if (message.hqThumbnail != null && Object.hasOwnProperty.call(message, "hqThumbnail")) + $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail.encode(message.hqThumbnail, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); return writer; }; @@ -39824,6 +43281,9 @@ $root.proto = (function() { case 7: message.previewType = reader.string(); break; + case 8: + message.hqThumbnail = $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -39880,6 +43340,11 @@ $root.proto = (function() { if (message.previewType != null && message.hasOwnProperty("previewType")) if (!$util.isString(message.previewType)) return "previewType: string expected"; + if (message.hqThumbnail != null && message.hasOwnProperty("hqThumbnail")) { + var error = $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail.verify(message.hqThumbnail); + if (error) + return "hqThumbnail." + error; + } return null; }; @@ -39912,6 +43377,11 @@ $root.proto = (function() { message.matchText = String(object.matchText); if (object.previewType != null) message.previewType = String(object.previewType); + if (object.hqThumbnail != null) { + if (typeof object.hqThumbnail !== "object") + throw TypeError(".proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.hqThumbnail: object expected"); + message.hqThumbnail = $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail.fromObject(object.hqThumbnail); + } return message; }; @@ -39942,6 +43412,7 @@ $root.proto = (function() { object.canonicalUrl = ""; object.matchText = ""; object.previewType = ""; + object.hqThumbnail = null; } if (message.url != null && message.hasOwnProperty("url")) object.url = message.url; @@ -39957,6 +43428,8 @@ $root.proto = (function() { object.matchText = message.matchText; if (message.previewType != null && message.hasOwnProperty("previewType")) object.previewType = message.previewType; + if (message.hqThumbnail != null && message.hasOwnProperty("hqThumbnail")) + object.hqThumbnail = $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail.toObject(message.hqThumbnail, options); return object; }; @@ -39971,9 +43444,548 @@ $root.proto = (function() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + LinkPreviewResponse.LinkPreviewHighQualityThumbnail = (function() { + + /** + * Properties of a LinkPreviewHighQualityThumbnail. + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse + * @interface ILinkPreviewHighQualityThumbnail + * @property {string|null} [directPath] LinkPreviewHighQualityThumbnail directPath + * @property {string|null} [thumbHash] LinkPreviewHighQualityThumbnail thumbHash + * @property {string|null} [encThumbHash] LinkPreviewHighQualityThumbnail encThumbHash + * @property {Uint8Array|null} [mediaKey] LinkPreviewHighQualityThumbnail mediaKey + * @property {number|Long|null} [mediaKeyTimestampMs] LinkPreviewHighQualityThumbnail mediaKeyTimestampMs + * @property {number|null} [thumbWidth] LinkPreviewHighQualityThumbnail thumbWidth + * @property {number|null} [thumbHeight] LinkPreviewHighQualityThumbnail thumbHeight + */ + + /** + * Constructs a new LinkPreviewHighQualityThumbnail. + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse + * @classdesc Represents a LinkPreviewHighQualityThumbnail. + * @implements ILinkPreviewHighQualityThumbnail + * @constructor + * @param {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.ILinkPreviewHighQualityThumbnail=} [properties] Properties to set + */ + function LinkPreviewHighQualityThumbnail(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * LinkPreviewHighQualityThumbnail directPath. + * @member {string} directPath + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + * @instance + */ + LinkPreviewHighQualityThumbnail.prototype.directPath = ""; + + /** + * LinkPreviewHighQualityThumbnail thumbHash. + * @member {string} thumbHash + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + * @instance + */ + LinkPreviewHighQualityThumbnail.prototype.thumbHash = ""; + + /** + * LinkPreviewHighQualityThumbnail encThumbHash. + * @member {string} encThumbHash + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + * @instance + */ + LinkPreviewHighQualityThumbnail.prototype.encThumbHash = ""; + + /** + * LinkPreviewHighQualityThumbnail mediaKey. + * @member {Uint8Array} mediaKey + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + * @instance + */ + LinkPreviewHighQualityThumbnail.prototype.mediaKey = $util.newBuffer([]); + + /** + * LinkPreviewHighQualityThumbnail mediaKeyTimestampMs. + * @member {number|Long} mediaKeyTimestampMs + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + * @instance + */ + LinkPreviewHighQualityThumbnail.prototype.mediaKeyTimestampMs = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * LinkPreviewHighQualityThumbnail thumbWidth. + * @member {number} thumbWidth + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + * @instance + */ + LinkPreviewHighQualityThumbnail.prototype.thumbWidth = 0; + + /** + * LinkPreviewHighQualityThumbnail thumbHeight. + * @member {number} thumbHeight + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + * @instance + */ + LinkPreviewHighQualityThumbnail.prototype.thumbHeight = 0; + + /** + * Creates a new LinkPreviewHighQualityThumbnail instance using the specified properties. + * @function create + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + * @static + * @param {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.ILinkPreviewHighQualityThumbnail=} [properties] Properties to set + * @returns {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail} LinkPreviewHighQualityThumbnail instance + */ + LinkPreviewHighQualityThumbnail.create = function create(properties) { + return new LinkPreviewHighQualityThumbnail(properties); + }; + + /** + * Encodes the specified LinkPreviewHighQualityThumbnail message. Does not implicitly {@link proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail.verify|verify} messages. + * @function encode + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + * @static + * @param {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.ILinkPreviewHighQualityThumbnail} message LinkPreviewHighQualityThumbnail message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LinkPreviewHighQualityThumbnail.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.directPath != null && Object.hasOwnProperty.call(message, "directPath")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.directPath); + if (message.thumbHash != null && Object.hasOwnProperty.call(message, "thumbHash")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.thumbHash); + if (message.encThumbHash != null && Object.hasOwnProperty.call(message, "encThumbHash")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.encThumbHash); + if (message.mediaKey != null && Object.hasOwnProperty.call(message, "mediaKey")) + writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.mediaKey); + if (message.mediaKeyTimestampMs != null && Object.hasOwnProperty.call(message, "mediaKeyTimestampMs")) + writer.uint32(/* id 5, wireType 0 =*/40).int64(message.mediaKeyTimestampMs); + if (message.thumbWidth != null && Object.hasOwnProperty.call(message, "thumbWidth")) + writer.uint32(/* id 6, wireType 0 =*/48).int32(message.thumbWidth); + if (message.thumbHeight != null && Object.hasOwnProperty.call(message, "thumbHeight")) + writer.uint32(/* id 7, wireType 0 =*/56).int32(message.thumbHeight); + return writer; + }; + + /** + * Encodes the specified LinkPreviewHighQualityThumbnail message, length delimited. Does not implicitly {@link proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + * @static + * @param {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.ILinkPreviewHighQualityThumbnail} message LinkPreviewHighQualityThumbnail message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LinkPreviewHighQualityThumbnail.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a LinkPreviewHighQualityThumbnail message from the specified reader or buffer. + * @function decode + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail} LinkPreviewHighQualityThumbnail + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LinkPreviewHighQualityThumbnail.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.directPath = reader.string(); + break; + case 2: + message.thumbHash = reader.string(); + break; + case 3: + message.encThumbHash = reader.string(); + break; + case 4: + message.mediaKey = reader.bytes(); + break; + case 5: + message.mediaKeyTimestampMs = reader.int64(); + break; + case 6: + message.thumbWidth = reader.int32(); + break; + case 7: + message.thumbHeight = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a LinkPreviewHighQualityThumbnail message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail} LinkPreviewHighQualityThumbnail + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LinkPreviewHighQualityThumbnail.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a LinkPreviewHighQualityThumbnail message. + * @function verify + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + LinkPreviewHighQualityThumbnail.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.directPath != null && message.hasOwnProperty("directPath")) + if (!$util.isString(message.directPath)) + return "directPath: string expected"; + if (message.thumbHash != null && message.hasOwnProperty("thumbHash")) + if (!$util.isString(message.thumbHash)) + return "thumbHash: string expected"; + if (message.encThumbHash != null && message.hasOwnProperty("encThumbHash")) + if (!$util.isString(message.encThumbHash)) + return "encThumbHash: string expected"; + if (message.mediaKey != null && message.hasOwnProperty("mediaKey")) + if (!(message.mediaKey && typeof message.mediaKey.length === "number" || $util.isString(message.mediaKey))) + return "mediaKey: buffer expected"; + if (message.mediaKeyTimestampMs != null && message.hasOwnProperty("mediaKeyTimestampMs")) + if (!$util.isInteger(message.mediaKeyTimestampMs) && !(message.mediaKeyTimestampMs && $util.isInteger(message.mediaKeyTimestampMs.low) && $util.isInteger(message.mediaKeyTimestampMs.high))) + return "mediaKeyTimestampMs: integer|Long expected"; + if (message.thumbWidth != null && message.hasOwnProperty("thumbWidth")) + if (!$util.isInteger(message.thumbWidth)) + return "thumbWidth: integer expected"; + if (message.thumbHeight != null && message.hasOwnProperty("thumbHeight")) + if (!$util.isInteger(message.thumbHeight)) + return "thumbHeight: integer expected"; + return null; + }; + + /** + * Creates a LinkPreviewHighQualityThumbnail message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + * @static + * @param {Object.} object Plain object + * @returns {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail} LinkPreviewHighQualityThumbnail + */ + LinkPreviewHighQualityThumbnail.fromObject = function fromObject(object) { + if (object instanceof $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail) + return object; + var message = new $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail(); + if (object.directPath != null) + message.directPath = String(object.directPath); + if (object.thumbHash != null) + message.thumbHash = String(object.thumbHash); + if (object.encThumbHash != null) + message.encThumbHash = String(object.encThumbHash); + if (object.mediaKey != null) + if (typeof object.mediaKey === "string") + $util.base64.decode(object.mediaKey, message.mediaKey = $util.newBuffer($util.base64.length(object.mediaKey)), 0); + else if (object.mediaKey.length) + message.mediaKey = object.mediaKey; + if (object.mediaKeyTimestampMs != null) + if ($util.Long) + (message.mediaKeyTimestampMs = $util.Long.fromValue(object.mediaKeyTimestampMs)).unsigned = false; + else if (typeof object.mediaKeyTimestampMs === "string") + message.mediaKeyTimestampMs = parseInt(object.mediaKeyTimestampMs, 10); + else if (typeof object.mediaKeyTimestampMs === "number") + message.mediaKeyTimestampMs = object.mediaKeyTimestampMs; + else if (typeof object.mediaKeyTimestampMs === "object") + message.mediaKeyTimestampMs = new $util.LongBits(object.mediaKeyTimestampMs.low >>> 0, object.mediaKeyTimestampMs.high >>> 0).toNumber(); + if (object.thumbWidth != null) + message.thumbWidth = object.thumbWidth | 0; + if (object.thumbHeight != null) + message.thumbHeight = object.thumbHeight | 0; + return message; + }; + + /** + * Creates a plain object from a LinkPreviewHighQualityThumbnail message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + * @static + * @param {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail} message LinkPreviewHighQualityThumbnail + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LinkPreviewHighQualityThumbnail.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.directPath = ""; + object.thumbHash = ""; + object.encThumbHash = ""; + if (options.bytes === String) + object.mediaKey = ""; + else { + object.mediaKey = []; + if (options.bytes !== Array) + object.mediaKey = $util.newBuffer(object.mediaKey); + } + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.mediaKeyTimestampMs = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.mediaKeyTimestampMs = options.longs === String ? "0" : 0; + object.thumbWidth = 0; + object.thumbHeight = 0; + } + if (message.directPath != null && message.hasOwnProperty("directPath")) + object.directPath = message.directPath; + if (message.thumbHash != null && message.hasOwnProperty("thumbHash")) + object.thumbHash = message.thumbHash; + if (message.encThumbHash != null && message.hasOwnProperty("encThumbHash")) + object.encThumbHash = message.encThumbHash; + if (message.mediaKey != null && message.hasOwnProperty("mediaKey")) + object.mediaKey = options.bytes === String ? $util.base64.encode(message.mediaKey, 0, message.mediaKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.mediaKey) : message.mediaKey; + if (message.mediaKeyTimestampMs != null && message.hasOwnProperty("mediaKeyTimestampMs")) + if (typeof message.mediaKeyTimestampMs === "number") + object.mediaKeyTimestampMs = options.longs === String ? String(message.mediaKeyTimestampMs) : message.mediaKeyTimestampMs; + else + object.mediaKeyTimestampMs = options.longs === String ? $util.Long.prototype.toString.call(message.mediaKeyTimestampMs) : options.longs === Number ? new $util.LongBits(message.mediaKeyTimestampMs.low >>> 0, message.mediaKeyTimestampMs.high >>> 0).toNumber() : message.mediaKeyTimestampMs; + if (message.thumbWidth != null && message.hasOwnProperty("thumbWidth")) + object.thumbWidth = message.thumbWidth; + if (message.thumbHeight != null && message.hasOwnProperty("thumbHeight")) + object.thumbHeight = message.thumbHeight; + return object; + }; + + /** + * Converts this LinkPreviewHighQualityThumbnail to JSON. + * @function toJSON + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + * @instance + * @returns {Object.} JSON object + */ + LinkPreviewHighQualityThumbnail.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return LinkPreviewHighQualityThumbnail; + })(); + return LinkPreviewResponse; })(); + PeerDataOperationResult.PlaceholderMessageResendResponse = (function() { + + /** + * Properties of a PlaceholderMessageResendResponse. + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult + * @interface IPlaceholderMessageResendResponse + * @property {Uint8Array|null} [webMessageInfoBytes] PlaceholderMessageResendResponse webMessageInfoBytes + */ + + /** + * Constructs a new PlaceholderMessageResendResponse. + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult + * @classdesc Represents a PlaceholderMessageResendResponse. + * @implements IPlaceholderMessageResendResponse + * @constructor + * @param {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.IPlaceholderMessageResendResponse=} [properties] Properties to set + */ + function PlaceholderMessageResendResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PlaceholderMessageResendResponse webMessageInfoBytes. + * @member {Uint8Array} webMessageInfoBytes + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse + * @instance + */ + PlaceholderMessageResendResponse.prototype.webMessageInfoBytes = $util.newBuffer([]); + + /** + * Creates a new PlaceholderMessageResendResponse instance using the specified properties. + * @function create + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse + * @static + * @param {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.IPlaceholderMessageResendResponse=} [properties] Properties to set + * @returns {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse} PlaceholderMessageResendResponse instance + */ + PlaceholderMessageResendResponse.create = function create(properties) { + return new PlaceholderMessageResendResponse(properties); + }; + + /** + * Encodes the specified PlaceholderMessageResendResponse message. Does not implicitly {@link proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse.verify|verify} messages. + * @function encode + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse + * @static + * @param {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.IPlaceholderMessageResendResponse} message PlaceholderMessageResendResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlaceholderMessageResendResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.webMessageInfoBytes != null && Object.hasOwnProperty.call(message, "webMessageInfoBytes")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.webMessageInfoBytes); + return writer; + }; + + /** + * Encodes the specified PlaceholderMessageResendResponse message, length delimited. Does not implicitly {@link proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse + * @static + * @param {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.IPlaceholderMessageResendResponse} message PlaceholderMessageResendResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlaceholderMessageResendResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PlaceholderMessageResendResponse message from the specified reader or buffer. + * @function decode + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse} PlaceholderMessageResendResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlaceholderMessageResendResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.webMessageInfoBytes = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PlaceholderMessageResendResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse} PlaceholderMessageResendResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlaceholderMessageResendResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PlaceholderMessageResendResponse message. + * @function verify + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PlaceholderMessageResendResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.webMessageInfoBytes != null && message.hasOwnProperty("webMessageInfoBytes")) + if (!(message.webMessageInfoBytes && typeof message.webMessageInfoBytes.length === "number" || $util.isString(message.webMessageInfoBytes))) + return "webMessageInfoBytes: buffer expected"; + return null; + }; + + /** + * Creates a PlaceholderMessageResendResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse + * @static + * @param {Object.} object Plain object + * @returns {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse} PlaceholderMessageResendResponse + */ + PlaceholderMessageResendResponse.fromObject = function fromObject(object) { + if (object instanceof $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse) + return object; + var message = new $root.proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse(); + if (object.webMessageInfoBytes != null) + if (typeof object.webMessageInfoBytes === "string") + $util.base64.decode(object.webMessageInfoBytes, message.webMessageInfoBytes = $util.newBuffer($util.base64.length(object.webMessageInfoBytes)), 0); + else if (object.webMessageInfoBytes.length) + message.webMessageInfoBytes = object.webMessageInfoBytes; + return message; + }; + + /** + * Creates a plain object from a PlaceholderMessageResendResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse + * @static + * @param {proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse} message PlaceholderMessageResendResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PlaceholderMessageResendResponse.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if (options.bytes === String) + object.webMessageInfoBytes = ""; + else { + object.webMessageInfoBytes = []; + if (options.bytes !== Array) + object.webMessageInfoBytes = $util.newBuffer(object.webMessageInfoBytes); + } + if (message.webMessageInfoBytes != null && message.hasOwnProperty("webMessageInfoBytes")) + object.webMessageInfoBytes = options.bytes === String ? $util.base64.encode(message.webMessageInfoBytes, 0, message.webMessageInfoBytes.length) : options.bytes === Array ? Array.prototype.slice.call(message.webMessageInfoBytes) : message.webMessageInfoBytes; + return object; + }; + + /** + * Converts this PlaceholderMessageResendResponse to JSON. + * @function toJSON + * @memberof proto.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse + * @instance + * @returns {Object.} JSON object + */ + PlaceholderMessageResendResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PlaceholderMessageResendResponse; + })(); + return PeerDataOperationResult; })(); @@ -39987,15 +43999,304 @@ $root.proto = (function() { * @property {number} UPLOAD_STICKER=0 UPLOAD_STICKER value * @property {number} SEND_RECENT_STICKER_BOOTSTRAP=1 SEND_RECENT_STICKER_BOOTSTRAP value * @property {number} GENERATE_LINK_PREVIEW=2 GENERATE_LINK_PREVIEW value + * @property {number} HISTORY_SYNC_ON_DEMAND=3 HISTORY_SYNC_ON_DEMAND value + * @property {number} PLACEHOLDER_MESSAGE_RESEND=4 PLACEHOLDER_MESSAGE_RESEND value */ Message.PeerDataOperationRequestType = (function() { var valuesById = {}, values = Object.create(valuesById); values[valuesById[0] = "UPLOAD_STICKER"] = 0; values[valuesById[1] = "SEND_RECENT_STICKER_BOOTSTRAP"] = 1; values[valuesById[2] = "GENERATE_LINK_PREVIEW"] = 2; + values[valuesById[3] = "HISTORY_SYNC_ON_DEMAND"] = 3; + values[valuesById[4] = "PLACEHOLDER_MESSAGE_RESEND"] = 4; return values; })(); + Message.PinInChatMessage = (function() { + + /** + * Properties of a PinInChatMessage. + * @memberof proto.Message + * @interface IPinInChatMessage + * @property {proto.IMessageKey|null} [key] PinInChatMessage key + * @property {proto.Message.PinInChatMessage.Type|null} [type] PinInChatMessage type + * @property {number|Long|null} [senderTimestampMs] PinInChatMessage senderTimestampMs + */ + + /** + * Constructs a new PinInChatMessage. + * @memberof proto.Message + * @classdesc Represents a PinInChatMessage. + * @implements IPinInChatMessage + * @constructor + * @param {proto.Message.IPinInChatMessage=} [properties] Properties to set + */ + function PinInChatMessage(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PinInChatMessage key. + * @member {proto.IMessageKey|null|undefined} key + * @memberof proto.Message.PinInChatMessage + * @instance + */ + PinInChatMessage.prototype.key = null; + + /** + * PinInChatMessage type. + * @member {proto.Message.PinInChatMessage.Type} type + * @memberof proto.Message.PinInChatMessage + * @instance + */ + PinInChatMessage.prototype.type = 0; + + /** + * PinInChatMessage senderTimestampMs. + * @member {number|Long} senderTimestampMs + * @memberof proto.Message.PinInChatMessage + * @instance + */ + PinInChatMessage.prototype.senderTimestampMs = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * Creates a new PinInChatMessage instance using the specified properties. + * @function create + * @memberof proto.Message.PinInChatMessage + * @static + * @param {proto.Message.IPinInChatMessage=} [properties] Properties to set + * @returns {proto.Message.PinInChatMessage} PinInChatMessage instance + */ + PinInChatMessage.create = function create(properties) { + return new PinInChatMessage(properties); + }; + + /** + * Encodes the specified PinInChatMessage message. Does not implicitly {@link proto.Message.PinInChatMessage.verify|verify} messages. + * @function encode + * @memberof proto.Message.PinInChatMessage + * @static + * @param {proto.Message.IPinInChatMessage} message PinInChatMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PinInChatMessage.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.key != null && Object.hasOwnProperty.call(message, "key")) + $root.proto.MessageKey.encode(message.key, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.type != null && Object.hasOwnProperty.call(message, "type")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.type); + if (message.senderTimestampMs != null && Object.hasOwnProperty.call(message, "senderTimestampMs")) + writer.uint32(/* id 3, wireType 0 =*/24).int64(message.senderTimestampMs); + return writer; + }; + + /** + * Encodes the specified PinInChatMessage message, length delimited. Does not implicitly {@link proto.Message.PinInChatMessage.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.Message.PinInChatMessage + * @static + * @param {proto.Message.IPinInChatMessage} message PinInChatMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PinInChatMessage.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PinInChatMessage message from the specified reader or buffer. + * @function decode + * @memberof proto.Message.PinInChatMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.Message.PinInChatMessage} PinInChatMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PinInChatMessage.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.Message.PinInChatMessage(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.key = $root.proto.MessageKey.decode(reader, reader.uint32()); + break; + case 2: + message.type = reader.int32(); + break; + case 3: + message.senderTimestampMs = reader.int64(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PinInChatMessage message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.Message.PinInChatMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.Message.PinInChatMessage} PinInChatMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PinInChatMessage.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PinInChatMessage message. + * @function verify + * @memberof proto.Message.PinInChatMessage + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PinInChatMessage.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.key != null && message.hasOwnProperty("key")) { + var error = $root.proto.MessageKey.verify(message.key); + if (error) + return "key." + error; + } + if (message.type != null && message.hasOwnProperty("type")) + switch (message.type) { + default: + return "type: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.senderTimestampMs != null && message.hasOwnProperty("senderTimestampMs")) + if (!$util.isInteger(message.senderTimestampMs) && !(message.senderTimestampMs && $util.isInteger(message.senderTimestampMs.low) && $util.isInteger(message.senderTimestampMs.high))) + return "senderTimestampMs: integer|Long expected"; + return null; + }; + + /** + * Creates a PinInChatMessage message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.Message.PinInChatMessage + * @static + * @param {Object.} object Plain object + * @returns {proto.Message.PinInChatMessage} PinInChatMessage + */ + PinInChatMessage.fromObject = function fromObject(object) { + if (object instanceof $root.proto.Message.PinInChatMessage) + return object; + var message = new $root.proto.Message.PinInChatMessage(); + if (object.key != null) { + if (typeof object.key !== "object") + throw TypeError(".proto.Message.PinInChatMessage.key: object expected"); + message.key = $root.proto.MessageKey.fromObject(object.key); + } + switch (object.type) { + case "UNKNOWN_TYPE": + case 0: + message.type = 0; + break; + case "PIN_FOR_ALL": + case 1: + message.type = 1; + break; + case "UNPIN_FOR_ALL": + case 2: + message.type = 2; + break; + } + if (object.senderTimestampMs != null) + if ($util.Long) + (message.senderTimestampMs = $util.Long.fromValue(object.senderTimestampMs)).unsigned = false; + else if (typeof object.senderTimestampMs === "string") + message.senderTimestampMs = parseInt(object.senderTimestampMs, 10); + else if (typeof object.senderTimestampMs === "number") + message.senderTimestampMs = object.senderTimestampMs; + else if (typeof object.senderTimestampMs === "object") + message.senderTimestampMs = new $util.LongBits(object.senderTimestampMs.low >>> 0, object.senderTimestampMs.high >>> 0).toNumber(); + return message; + }; + + /** + * Creates a plain object from a PinInChatMessage message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.Message.PinInChatMessage + * @static + * @param {proto.Message.PinInChatMessage} message PinInChatMessage + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PinInChatMessage.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.key = null; + object.type = options.enums === String ? "UNKNOWN_TYPE" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.senderTimestampMs = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.senderTimestampMs = options.longs === String ? "0" : 0; + } + if (message.key != null && message.hasOwnProperty("key")) + object.key = $root.proto.MessageKey.toObject(message.key, options); + if (message.type != null && message.hasOwnProperty("type")) + object.type = options.enums === String ? $root.proto.Message.PinInChatMessage.Type[message.type] : message.type; + if (message.senderTimestampMs != null && message.hasOwnProperty("senderTimestampMs")) + if (typeof message.senderTimestampMs === "number") + object.senderTimestampMs = options.longs === String ? String(message.senderTimestampMs) : message.senderTimestampMs; + else + object.senderTimestampMs = options.longs === String ? $util.Long.prototype.toString.call(message.senderTimestampMs) : options.longs === Number ? new $util.LongBits(message.senderTimestampMs.low >>> 0, message.senderTimestampMs.high >>> 0).toNumber() : message.senderTimestampMs; + return object; + }; + + /** + * Converts this PinInChatMessage to JSON. + * @function toJSON + * @memberof proto.Message.PinInChatMessage + * @instance + * @returns {Object.} JSON object + */ + PinInChatMessage.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Type enum. + * @name proto.Message.PinInChatMessage.Type + * @enum {number} + * @property {number} UNKNOWN_TYPE=0 UNKNOWN_TYPE value + * @property {number} PIN_FOR_ALL=1 PIN_FOR_ALL value + * @property {number} UNPIN_FOR_ALL=2 UNPIN_FOR_ALL value + */ + PinInChatMessage.Type = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN_TYPE"] = 0; + values[valuesById[1] = "PIN_FOR_ALL"] = 1; + values[valuesById[2] = "UNPIN_FOR_ALL"] = 2; + return values; + })(); + + return PinInChatMessage; + })(); + Message.PollCreationMessage = (function() { /** @@ -43847,26 +48148,26 @@ $root.proto = (function() { return RequestPhoneNumberMessage; })(); - Message.SendPaymentMessage = (function() { + Message.ScheduledCallCreationMessage = (function() { /** - * Properties of a SendPaymentMessage. + * Properties of a ScheduledCallCreationMessage. * @memberof proto.Message - * @interface ISendPaymentMessage - * @property {proto.IMessage|null} [noteMessage] SendPaymentMessage noteMessage - * @property {proto.IMessageKey|null} [requestMessageKey] SendPaymentMessage requestMessageKey - * @property {proto.IPaymentBackground|null} [background] SendPaymentMessage background + * @interface IScheduledCallCreationMessage + * @property {number|Long|null} [scheduledTimestampMs] ScheduledCallCreationMessage scheduledTimestampMs + * @property {proto.Message.ScheduledCallCreationMessage.CallType|null} [callType] ScheduledCallCreationMessage callType + * @property {string|null} [title] ScheduledCallCreationMessage title */ /** - * Constructs a new SendPaymentMessage. + * Constructs a new ScheduledCallCreationMessage. * @memberof proto.Message - * @classdesc Represents a SendPaymentMessage. - * @implements ISendPaymentMessage + * @classdesc Represents a ScheduledCallCreationMessage. + * @implements IScheduledCallCreationMessage * @constructor - * @param {proto.Message.ISendPaymentMessage=} [properties] Properties to set + * @param {proto.Message.IScheduledCallCreationMessage=} [properties] Properties to set */ - function SendPaymentMessage(properties) { + function ScheduledCallCreationMessage(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -43874,101 +48175,101 @@ $root.proto = (function() { } /** - * SendPaymentMessage noteMessage. - * @member {proto.IMessage|null|undefined} noteMessage - * @memberof proto.Message.SendPaymentMessage + * ScheduledCallCreationMessage scheduledTimestampMs. + * @member {number|Long} scheduledTimestampMs + * @memberof proto.Message.ScheduledCallCreationMessage * @instance */ - SendPaymentMessage.prototype.noteMessage = null; + ScheduledCallCreationMessage.prototype.scheduledTimestampMs = $util.Long ? $util.Long.fromBits(0,0,false) : 0; /** - * SendPaymentMessage requestMessageKey. - * @member {proto.IMessageKey|null|undefined} requestMessageKey - * @memberof proto.Message.SendPaymentMessage + * ScheduledCallCreationMessage callType. + * @member {proto.Message.ScheduledCallCreationMessage.CallType} callType + * @memberof proto.Message.ScheduledCallCreationMessage * @instance */ - SendPaymentMessage.prototype.requestMessageKey = null; + ScheduledCallCreationMessage.prototype.callType = 0; /** - * SendPaymentMessage background. - * @member {proto.IPaymentBackground|null|undefined} background - * @memberof proto.Message.SendPaymentMessage + * ScheduledCallCreationMessage title. + * @member {string} title + * @memberof proto.Message.ScheduledCallCreationMessage * @instance */ - SendPaymentMessage.prototype.background = null; + ScheduledCallCreationMessage.prototype.title = ""; /** - * Creates a new SendPaymentMessage instance using the specified properties. + * Creates a new ScheduledCallCreationMessage instance using the specified properties. * @function create - * @memberof proto.Message.SendPaymentMessage + * @memberof proto.Message.ScheduledCallCreationMessage * @static - * @param {proto.Message.ISendPaymentMessage=} [properties] Properties to set - * @returns {proto.Message.SendPaymentMessage} SendPaymentMessage instance + * @param {proto.Message.IScheduledCallCreationMessage=} [properties] Properties to set + * @returns {proto.Message.ScheduledCallCreationMessage} ScheduledCallCreationMessage instance */ - SendPaymentMessage.create = function create(properties) { - return new SendPaymentMessage(properties); + ScheduledCallCreationMessage.create = function create(properties) { + return new ScheduledCallCreationMessage(properties); }; /** - * Encodes the specified SendPaymentMessage message. Does not implicitly {@link proto.Message.SendPaymentMessage.verify|verify} messages. + * Encodes the specified ScheduledCallCreationMessage message. Does not implicitly {@link proto.Message.ScheduledCallCreationMessage.verify|verify} messages. * @function encode - * @memberof proto.Message.SendPaymentMessage + * @memberof proto.Message.ScheduledCallCreationMessage * @static - * @param {proto.Message.ISendPaymentMessage} message SendPaymentMessage message or plain object to encode + * @param {proto.Message.IScheduledCallCreationMessage} message ScheduledCallCreationMessage message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SendPaymentMessage.encode = function encode(message, writer) { + ScheduledCallCreationMessage.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.noteMessage != null && Object.hasOwnProperty.call(message, "noteMessage")) - $root.proto.Message.encode(message.noteMessage, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.requestMessageKey != null && Object.hasOwnProperty.call(message, "requestMessageKey")) - $root.proto.MessageKey.encode(message.requestMessageKey, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.background != null && Object.hasOwnProperty.call(message, "background")) - $root.proto.PaymentBackground.encode(message.background, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.scheduledTimestampMs != null && Object.hasOwnProperty.call(message, "scheduledTimestampMs")) + writer.uint32(/* id 1, wireType 0 =*/8).int64(message.scheduledTimestampMs); + if (message.callType != null && Object.hasOwnProperty.call(message, "callType")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.callType); + if (message.title != null && Object.hasOwnProperty.call(message, "title")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.title); return writer; }; /** - * Encodes the specified SendPaymentMessage message, length delimited. Does not implicitly {@link proto.Message.SendPaymentMessage.verify|verify} messages. + * Encodes the specified ScheduledCallCreationMessage message, length delimited. Does not implicitly {@link proto.Message.ScheduledCallCreationMessage.verify|verify} messages. * @function encodeDelimited - * @memberof proto.Message.SendPaymentMessage + * @memberof proto.Message.ScheduledCallCreationMessage * @static - * @param {proto.Message.ISendPaymentMessage} message SendPaymentMessage message or plain object to encode + * @param {proto.Message.IScheduledCallCreationMessage} message ScheduledCallCreationMessage message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SendPaymentMessage.encodeDelimited = function encodeDelimited(message, writer) { + ScheduledCallCreationMessage.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a SendPaymentMessage message from the specified reader or buffer. + * Decodes a ScheduledCallCreationMessage message from the specified reader or buffer. * @function decode - * @memberof proto.Message.SendPaymentMessage + * @memberof proto.Message.ScheduledCallCreationMessage * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {proto.Message.SendPaymentMessage} SendPaymentMessage + * @returns {proto.Message.ScheduledCallCreationMessage} ScheduledCallCreationMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SendPaymentMessage.decode = function decode(reader, length) { + ScheduledCallCreationMessage.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.Message.SendPaymentMessage(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.Message.ScheduledCallCreationMessage(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 1: + message.scheduledTimestampMs = reader.int64(); + break; case 2: - message.noteMessage = $root.proto.Message.decode(reader, reader.uint32()); + message.callType = reader.int32(); break; case 3: - message.requestMessageKey = $root.proto.MessageKey.decode(reader, reader.uint32()); - break; - case 4: - message.background = $root.proto.PaymentBackground.decode(reader, reader.uint32()); + message.title = reader.string(); break; default: reader.skipType(tag & 7); @@ -43979,140 +48280,173 @@ $root.proto = (function() { }; /** - * Decodes a SendPaymentMessage message from the specified reader or buffer, length delimited. + * Decodes a ScheduledCallCreationMessage message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof proto.Message.SendPaymentMessage + * @memberof proto.Message.ScheduledCallCreationMessage * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {proto.Message.SendPaymentMessage} SendPaymentMessage + * @returns {proto.Message.ScheduledCallCreationMessage} ScheduledCallCreationMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SendPaymentMessage.decodeDelimited = function decodeDelimited(reader) { + ScheduledCallCreationMessage.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a SendPaymentMessage message. + * Verifies a ScheduledCallCreationMessage message. * @function verify - * @memberof proto.Message.SendPaymentMessage + * @memberof proto.Message.ScheduledCallCreationMessage * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - SendPaymentMessage.verify = function verify(message) { + ScheduledCallCreationMessage.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.noteMessage != null && message.hasOwnProperty("noteMessage")) { - var error = $root.proto.Message.verify(message.noteMessage); - if (error) - return "noteMessage." + error; - } - if (message.requestMessageKey != null && message.hasOwnProperty("requestMessageKey")) { - var error = $root.proto.MessageKey.verify(message.requestMessageKey); - if (error) - return "requestMessageKey." + error; - } - if (message.background != null && message.hasOwnProperty("background")) { - var error = $root.proto.PaymentBackground.verify(message.background); - if (error) - return "background." + error; - } + if (message.scheduledTimestampMs != null && message.hasOwnProperty("scheduledTimestampMs")) + if (!$util.isInteger(message.scheduledTimestampMs) && !(message.scheduledTimestampMs && $util.isInteger(message.scheduledTimestampMs.low) && $util.isInteger(message.scheduledTimestampMs.high))) + return "scheduledTimestampMs: integer|Long expected"; + if (message.callType != null && message.hasOwnProperty("callType")) + switch (message.callType) { + default: + return "callType: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.title != null && message.hasOwnProperty("title")) + if (!$util.isString(message.title)) + return "title: string expected"; return null; }; /** - * Creates a SendPaymentMessage message from a plain object. Also converts values to their respective internal types. + * Creates a ScheduledCallCreationMessage message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof proto.Message.SendPaymentMessage + * @memberof proto.Message.ScheduledCallCreationMessage * @static * @param {Object.} object Plain object - * @returns {proto.Message.SendPaymentMessage} SendPaymentMessage + * @returns {proto.Message.ScheduledCallCreationMessage} ScheduledCallCreationMessage */ - SendPaymentMessage.fromObject = function fromObject(object) { - if (object instanceof $root.proto.Message.SendPaymentMessage) + ScheduledCallCreationMessage.fromObject = function fromObject(object) { + if (object instanceof $root.proto.Message.ScheduledCallCreationMessage) return object; - var message = new $root.proto.Message.SendPaymentMessage(); - if (object.noteMessage != null) { - if (typeof object.noteMessage !== "object") - throw TypeError(".proto.Message.SendPaymentMessage.noteMessage: object expected"); - message.noteMessage = $root.proto.Message.fromObject(object.noteMessage); - } - if (object.requestMessageKey != null) { - if (typeof object.requestMessageKey !== "object") - throw TypeError(".proto.Message.SendPaymentMessage.requestMessageKey: object expected"); - message.requestMessageKey = $root.proto.MessageKey.fromObject(object.requestMessageKey); - } - if (object.background != null) { - if (typeof object.background !== "object") - throw TypeError(".proto.Message.SendPaymentMessage.background: object expected"); - message.background = $root.proto.PaymentBackground.fromObject(object.background); + var message = new $root.proto.Message.ScheduledCallCreationMessage(); + if (object.scheduledTimestampMs != null) + if ($util.Long) + (message.scheduledTimestampMs = $util.Long.fromValue(object.scheduledTimestampMs)).unsigned = false; + else if (typeof object.scheduledTimestampMs === "string") + message.scheduledTimestampMs = parseInt(object.scheduledTimestampMs, 10); + else if (typeof object.scheduledTimestampMs === "number") + message.scheduledTimestampMs = object.scheduledTimestampMs; + else if (typeof object.scheduledTimestampMs === "object") + message.scheduledTimestampMs = new $util.LongBits(object.scheduledTimestampMs.low >>> 0, object.scheduledTimestampMs.high >>> 0).toNumber(); + switch (object.callType) { + case "UNKNOWN": + case 0: + message.callType = 0; + break; + case "VOICE": + case 1: + message.callType = 1; + break; + case "VIDEO": + case 2: + message.callType = 2; + break; } + if (object.title != null) + message.title = String(object.title); return message; }; /** - * Creates a plain object from a SendPaymentMessage message. Also converts values to other types if specified. + * Creates a plain object from a ScheduledCallCreationMessage message. Also converts values to other types if specified. * @function toObject - * @memberof proto.Message.SendPaymentMessage + * @memberof proto.Message.ScheduledCallCreationMessage * @static - * @param {proto.Message.SendPaymentMessage} message SendPaymentMessage + * @param {proto.Message.ScheduledCallCreationMessage} message ScheduledCallCreationMessage * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - SendPaymentMessage.toObject = function toObject(message, options) { + ScheduledCallCreationMessage.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { - object.noteMessage = null; - object.requestMessageKey = null; - object.background = null; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.scheduledTimestampMs = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.scheduledTimestampMs = options.longs === String ? "0" : 0; + object.callType = options.enums === String ? "UNKNOWN" : 0; + object.title = ""; } - if (message.noteMessage != null && message.hasOwnProperty("noteMessage")) - object.noteMessage = $root.proto.Message.toObject(message.noteMessage, options); - if (message.requestMessageKey != null && message.hasOwnProperty("requestMessageKey")) - object.requestMessageKey = $root.proto.MessageKey.toObject(message.requestMessageKey, options); - if (message.background != null && message.hasOwnProperty("background")) - object.background = $root.proto.PaymentBackground.toObject(message.background, options); + if (message.scheduledTimestampMs != null && message.hasOwnProperty("scheduledTimestampMs")) + if (typeof message.scheduledTimestampMs === "number") + object.scheduledTimestampMs = options.longs === String ? String(message.scheduledTimestampMs) : message.scheduledTimestampMs; + else + object.scheduledTimestampMs = options.longs === String ? $util.Long.prototype.toString.call(message.scheduledTimestampMs) : options.longs === Number ? new $util.LongBits(message.scheduledTimestampMs.low >>> 0, message.scheduledTimestampMs.high >>> 0).toNumber() : message.scheduledTimestampMs; + if (message.callType != null && message.hasOwnProperty("callType")) + object.callType = options.enums === String ? $root.proto.Message.ScheduledCallCreationMessage.CallType[message.callType] : message.callType; + if (message.title != null && message.hasOwnProperty("title")) + object.title = message.title; return object; }; /** - * Converts this SendPaymentMessage to JSON. + * Converts this ScheduledCallCreationMessage to JSON. * @function toJSON - * @memberof proto.Message.SendPaymentMessage + * @memberof proto.Message.ScheduledCallCreationMessage * @instance * @returns {Object.} JSON object */ - SendPaymentMessage.prototype.toJSON = function toJSON() { + ScheduledCallCreationMessage.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return SendPaymentMessage; + /** + * CallType enum. + * @name proto.Message.ScheduledCallCreationMessage.CallType + * @enum {number} + * @property {number} UNKNOWN=0 UNKNOWN value + * @property {number} VOICE=1 VOICE value + * @property {number} VIDEO=2 VIDEO value + */ + ScheduledCallCreationMessage.CallType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN"] = 0; + values[valuesById[1] = "VOICE"] = 1; + values[valuesById[2] = "VIDEO"] = 2; + return values; + })(); + + return ScheduledCallCreationMessage; })(); - Message.SenderKeyDistributionMessage = (function() { + Message.ScheduledCallEditMessage = (function() { /** - * Properties of a SenderKeyDistributionMessage. + * Properties of a ScheduledCallEditMessage. * @memberof proto.Message - * @interface ISenderKeyDistributionMessage - * @property {string|null} [groupId] SenderKeyDistributionMessage groupId - * @property {Uint8Array|null} [axolotlSenderKeyDistributionMessage] SenderKeyDistributionMessage axolotlSenderKeyDistributionMessage + * @interface IScheduledCallEditMessage + * @property {proto.IMessageKey|null} [key] ScheduledCallEditMessage key + * @property {proto.Message.ScheduledCallEditMessage.EditType|null} [editType] ScheduledCallEditMessage editType */ /** - * Constructs a new SenderKeyDistributionMessage. + * Constructs a new ScheduledCallEditMessage. * @memberof proto.Message - * @classdesc Represents a SenderKeyDistributionMessage. - * @implements ISenderKeyDistributionMessage + * @classdesc Represents a ScheduledCallEditMessage. + * @implements IScheduledCallEditMessage * @constructor - * @param {proto.Message.ISenderKeyDistributionMessage=} [properties] Properties to set + * @param {proto.Message.IScheduledCallEditMessage=} [properties] Properties to set */ - function SenderKeyDistributionMessage(properties) { + function ScheduledCallEditMessage(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -44120,88 +48454,88 @@ $root.proto = (function() { } /** - * SenderKeyDistributionMessage groupId. - * @member {string} groupId - * @memberof proto.Message.SenderKeyDistributionMessage + * ScheduledCallEditMessage key. + * @member {proto.IMessageKey|null|undefined} key + * @memberof proto.Message.ScheduledCallEditMessage * @instance */ - SenderKeyDistributionMessage.prototype.groupId = ""; + ScheduledCallEditMessage.prototype.key = null; /** - * SenderKeyDistributionMessage axolotlSenderKeyDistributionMessage. - * @member {Uint8Array} axolotlSenderKeyDistributionMessage - * @memberof proto.Message.SenderKeyDistributionMessage + * ScheduledCallEditMessage editType. + * @member {proto.Message.ScheduledCallEditMessage.EditType} editType + * @memberof proto.Message.ScheduledCallEditMessage * @instance */ - SenderKeyDistributionMessage.prototype.axolotlSenderKeyDistributionMessage = $util.newBuffer([]); + ScheduledCallEditMessage.prototype.editType = 0; /** - * Creates a new SenderKeyDistributionMessage instance using the specified properties. + * Creates a new ScheduledCallEditMessage instance using the specified properties. * @function create - * @memberof proto.Message.SenderKeyDistributionMessage + * @memberof proto.Message.ScheduledCallEditMessage * @static - * @param {proto.Message.ISenderKeyDistributionMessage=} [properties] Properties to set - * @returns {proto.Message.SenderKeyDistributionMessage} SenderKeyDistributionMessage instance + * @param {proto.Message.IScheduledCallEditMessage=} [properties] Properties to set + * @returns {proto.Message.ScheduledCallEditMessage} ScheduledCallEditMessage instance */ - SenderKeyDistributionMessage.create = function create(properties) { - return new SenderKeyDistributionMessage(properties); + ScheduledCallEditMessage.create = function create(properties) { + return new ScheduledCallEditMessage(properties); }; /** - * Encodes the specified SenderKeyDistributionMessage message. Does not implicitly {@link proto.Message.SenderKeyDistributionMessage.verify|verify} messages. + * Encodes the specified ScheduledCallEditMessage message. Does not implicitly {@link proto.Message.ScheduledCallEditMessage.verify|verify} messages. * @function encode - * @memberof proto.Message.SenderKeyDistributionMessage + * @memberof proto.Message.ScheduledCallEditMessage * @static - * @param {proto.Message.ISenderKeyDistributionMessage} message SenderKeyDistributionMessage message or plain object to encode + * @param {proto.Message.IScheduledCallEditMessage} message ScheduledCallEditMessage message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SenderKeyDistributionMessage.encode = function encode(message, writer) { + ScheduledCallEditMessage.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.groupId != null && Object.hasOwnProperty.call(message, "groupId")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.groupId); - if (message.axolotlSenderKeyDistributionMessage != null && Object.hasOwnProperty.call(message, "axolotlSenderKeyDistributionMessage")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.axolotlSenderKeyDistributionMessage); + if (message.key != null && Object.hasOwnProperty.call(message, "key")) + $root.proto.MessageKey.encode(message.key, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.editType != null && Object.hasOwnProperty.call(message, "editType")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.editType); return writer; }; /** - * Encodes the specified SenderKeyDistributionMessage message, length delimited. Does not implicitly {@link proto.Message.SenderKeyDistributionMessage.verify|verify} messages. + * Encodes the specified ScheduledCallEditMessage message, length delimited. Does not implicitly {@link proto.Message.ScheduledCallEditMessage.verify|verify} messages. * @function encodeDelimited - * @memberof proto.Message.SenderKeyDistributionMessage + * @memberof proto.Message.ScheduledCallEditMessage * @static - * @param {proto.Message.ISenderKeyDistributionMessage} message SenderKeyDistributionMessage message or plain object to encode + * @param {proto.Message.IScheduledCallEditMessage} message ScheduledCallEditMessage message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SenderKeyDistributionMessage.encodeDelimited = function encodeDelimited(message, writer) { + ScheduledCallEditMessage.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a SenderKeyDistributionMessage message from the specified reader or buffer. + * Decodes a ScheduledCallEditMessage message from the specified reader or buffer. * @function decode - * @memberof proto.Message.SenderKeyDistributionMessage + * @memberof proto.Message.ScheduledCallEditMessage * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {proto.Message.SenderKeyDistributionMessage} SenderKeyDistributionMessage + * @returns {proto.Message.ScheduledCallEditMessage} ScheduledCallEditMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SenderKeyDistributionMessage.decode = function decode(reader, length) { + ScheduledCallEditMessage.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.Message.SenderKeyDistributionMessage(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.Message.ScheduledCallEditMessage(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.groupId = reader.string(); + message.key = $root.proto.MessageKey.decode(reader, reader.uint32()); break; case 2: - message.axolotlSenderKeyDistributionMessage = reader.bytes(); + message.editType = reader.int32(); break; default: reader.skipType(tag & 7); @@ -44212,131 +48546,620 @@ $root.proto = (function() { }; /** - * Decodes a SenderKeyDistributionMessage message from the specified reader or buffer, length delimited. + * Decodes a ScheduledCallEditMessage message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof proto.Message.SenderKeyDistributionMessage + * @memberof proto.Message.ScheduledCallEditMessage * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {proto.Message.SenderKeyDistributionMessage} SenderKeyDistributionMessage + * @returns {proto.Message.ScheduledCallEditMessage} ScheduledCallEditMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SenderKeyDistributionMessage.decodeDelimited = function decodeDelimited(reader) { + ScheduledCallEditMessage.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a SenderKeyDistributionMessage message. + * Verifies a ScheduledCallEditMessage message. * @function verify - * @memberof proto.Message.SenderKeyDistributionMessage + * @memberof proto.Message.ScheduledCallEditMessage * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - SenderKeyDistributionMessage.verify = function verify(message) { + ScheduledCallEditMessage.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.groupId != null && message.hasOwnProperty("groupId")) - if (!$util.isString(message.groupId)) - return "groupId: string expected"; - if (message.axolotlSenderKeyDistributionMessage != null && message.hasOwnProperty("axolotlSenderKeyDistributionMessage")) - if (!(message.axolotlSenderKeyDistributionMessage && typeof message.axolotlSenderKeyDistributionMessage.length === "number" || $util.isString(message.axolotlSenderKeyDistributionMessage))) - return "axolotlSenderKeyDistributionMessage: buffer expected"; + if (message.key != null && message.hasOwnProperty("key")) { + var error = $root.proto.MessageKey.verify(message.key); + if (error) + return "key." + error; + } + if (message.editType != null && message.hasOwnProperty("editType")) + switch (message.editType) { + default: + return "editType: enum value expected"; + case 0: + case 1: + break; + } return null; }; /** - * Creates a SenderKeyDistributionMessage message from a plain object. Also converts values to their respective internal types. + * Creates a ScheduledCallEditMessage message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof proto.Message.SenderKeyDistributionMessage + * @memberof proto.Message.ScheduledCallEditMessage * @static * @param {Object.} object Plain object - * @returns {proto.Message.SenderKeyDistributionMessage} SenderKeyDistributionMessage + * @returns {proto.Message.ScheduledCallEditMessage} ScheduledCallEditMessage */ - SenderKeyDistributionMessage.fromObject = function fromObject(object) { - if (object instanceof $root.proto.Message.SenderKeyDistributionMessage) + ScheduledCallEditMessage.fromObject = function fromObject(object) { + if (object instanceof $root.proto.Message.ScheduledCallEditMessage) return object; - var message = new $root.proto.Message.SenderKeyDistributionMessage(); - if (object.groupId != null) - message.groupId = String(object.groupId); - if (object.axolotlSenderKeyDistributionMessage != null) - if (typeof object.axolotlSenderKeyDistributionMessage === "string") - $util.base64.decode(object.axolotlSenderKeyDistributionMessage, message.axolotlSenderKeyDistributionMessage = $util.newBuffer($util.base64.length(object.axolotlSenderKeyDistributionMessage)), 0); - else if (object.axolotlSenderKeyDistributionMessage.length) - message.axolotlSenderKeyDistributionMessage = object.axolotlSenderKeyDistributionMessage; + var message = new $root.proto.Message.ScheduledCallEditMessage(); + if (object.key != null) { + if (typeof object.key !== "object") + throw TypeError(".proto.Message.ScheduledCallEditMessage.key: object expected"); + message.key = $root.proto.MessageKey.fromObject(object.key); + } + switch (object.editType) { + case "UNKNOWN": + case 0: + message.editType = 0; + break; + case "CANCEL": + case 1: + message.editType = 1; + break; + } return message; }; /** - * Creates a plain object from a SenderKeyDistributionMessage message. Also converts values to other types if specified. + * Creates a plain object from a ScheduledCallEditMessage message. Also converts values to other types if specified. * @function toObject - * @memberof proto.Message.SenderKeyDistributionMessage + * @memberof proto.Message.ScheduledCallEditMessage * @static - * @param {proto.Message.SenderKeyDistributionMessage} message SenderKeyDistributionMessage + * @param {proto.Message.ScheduledCallEditMessage} message ScheduledCallEditMessage * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - SenderKeyDistributionMessage.toObject = function toObject(message, options) { + ScheduledCallEditMessage.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { - object.groupId = ""; - if (options.bytes === String) - object.axolotlSenderKeyDistributionMessage = ""; - else { - object.axolotlSenderKeyDistributionMessage = []; - if (options.bytes !== Array) - object.axolotlSenderKeyDistributionMessage = $util.newBuffer(object.axolotlSenderKeyDistributionMessage); - } + object.key = null; + object.editType = options.enums === String ? "UNKNOWN" : 0; } - if (message.groupId != null && message.hasOwnProperty("groupId")) - object.groupId = message.groupId; - if (message.axolotlSenderKeyDistributionMessage != null && message.hasOwnProperty("axolotlSenderKeyDistributionMessage")) - object.axolotlSenderKeyDistributionMessage = options.bytes === String ? $util.base64.encode(message.axolotlSenderKeyDistributionMessage, 0, message.axolotlSenderKeyDistributionMessage.length) : options.bytes === Array ? Array.prototype.slice.call(message.axolotlSenderKeyDistributionMessage) : message.axolotlSenderKeyDistributionMessage; + if (message.key != null && message.hasOwnProperty("key")) + object.key = $root.proto.MessageKey.toObject(message.key, options); + if (message.editType != null && message.hasOwnProperty("editType")) + object.editType = options.enums === String ? $root.proto.Message.ScheduledCallEditMessage.EditType[message.editType] : message.editType; return object; }; /** - * Converts this SenderKeyDistributionMessage to JSON. + * Converts this ScheduledCallEditMessage to JSON. * @function toJSON - * @memberof proto.Message.SenderKeyDistributionMessage + * @memberof proto.Message.ScheduledCallEditMessage * @instance * @returns {Object.} JSON object */ - SenderKeyDistributionMessage.prototype.toJSON = function toJSON() { + ScheduledCallEditMessage.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return SenderKeyDistributionMessage; + /** + * EditType enum. + * @name proto.Message.ScheduledCallEditMessage.EditType + * @enum {number} + * @property {number} UNKNOWN=0 UNKNOWN value + * @property {number} CANCEL=1 CANCEL value + */ + ScheduledCallEditMessage.EditType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN"] = 0; + values[valuesById[1] = "CANCEL"] = 1; + return values; + })(); + + return ScheduledCallEditMessage; })(); - Message.StickerMessage = (function() { + Message.SendPaymentMessage = (function() { /** - * Properties of a StickerMessage. + * Properties of a SendPaymentMessage. * @memberof proto.Message - * @interface IStickerMessage - * @property {string|null} [url] StickerMessage url - * @property {Uint8Array|null} [fileSha256] StickerMessage fileSha256 - * @property {Uint8Array|null} [fileEncSha256] StickerMessage fileEncSha256 - * @property {Uint8Array|null} [mediaKey] StickerMessage mediaKey - * @property {string|null} [mimetype] StickerMessage mimetype - * @property {number|null} [height] StickerMessage height - * @property {number|null} [width] StickerMessage width - * @property {string|null} [directPath] StickerMessage directPath - * @property {number|Long|null} [fileLength] StickerMessage fileLength - * @property {number|Long|null} [mediaKeyTimestamp] StickerMessage mediaKeyTimestamp - * @property {number|null} [firstFrameLength] StickerMessage firstFrameLength - * @property {Uint8Array|null} [firstFrameSidecar] StickerMessage firstFrameSidecar - * @property {boolean|null} [isAnimated] StickerMessage isAnimated - * @property {Uint8Array|null} [pngThumbnail] StickerMessage pngThumbnail - * @property {proto.IContextInfo|null} [contextInfo] StickerMessage contextInfo - * @property {number|Long|null} [stickerSentTs] StickerMessage stickerSentTs - * @property {boolean|null} [isAvatar] StickerMessage isAvatar - */ + * @interface ISendPaymentMessage + * @property {proto.IMessage|null} [noteMessage] SendPaymentMessage noteMessage + * @property {proto.IMessageKey|null} [requestMessageKey] SendPaymentMessage requestMessageKey + * @property {proto.IPaymentBackground|null} [background] SendPaymentMessage background + */ + + /** + * Constructs a new SendPaymentMessage. + * @memberof proto.Message + * @classdesc Represents a SendPaymentMessage. + * @implements ISendPaymentMessage + * @constructor + * @param {proto.Message.ISendPaymentMessage=} [properties] Properties to set + */ + function SendPaymentMessage(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SendPaymentMessage noteMessage. + * @member {proto.IMessage|null|undefined} noteMessage + * @memberof proto.Message.SendPaymentMessage + * @instance + */ + SendPaymentMessage.prototype.noteMessage = null; + + /** + * SendPaymentMessage requestMessageKey. + * @member {proto.IMessageKey|null|undefined} requestMessageKey + * @memberof proto.Message.SendPaymentMessage + * @instance + */ + SendPaymentMessage.prototype.requestMessageKey = null; + + /** + * SendPaymentMessage background. + * @member {proto.IPaymentBackground|null|undefined} background + * @memberof proto.Message.SendPaymentMessage + * @instance + */ + SendPaymentMessage.prototype.background = null; + + /** + * Creates a new SendPaymentMessage instance using the specified properties. + * @function create + * @memberof proto.Message.SendPaymentMessage + * @static + * @param {proto.Message.ISendPaymentMessage=} [properties] Properties to set + * @returns {proto.Message.SendPaymentMessage} SendPaymentMessage instance + */ + SendPaymentMessage.create = function create(properties) { + return new SendPaymentMessage(properties); + }; + + /** + * Encodes the specified SendPaymentMessage message. Does not implicitly {@link proto.Message.SendPaymentMessage.verify|verify} messages. + * @function encode + * @memberof proto.Message.SendPaymentMessage + * @static + * @param {proto.Message.ISendPaymentMessage} message SendPaymentMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SendPaymentMessage.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.noteMessage != null && Object.hasOwnProperty.call(message, "noteMessage")) + $root.proto.Message.encode(message.noteMessage, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.requestMessageKey != null && Object.hasOwnProperty.call(message, "requestMessageKey")) + $root.proto.MessageKey.encode(message.requestMessageKey, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.background != null && Object.hasOwnProperty.call(message, "background")) + $root.proto.PaymentBackground.encode(message.background, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified SendPaymentMessage message, length delimited. Does not implicitly {@link proto.Message.SendPaymentMessage.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.Message.SendPaymentMessage + * @static + * @param {proto.Message.ISendPaymentMessage} message SendPaymentMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SendPaymentMessage.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SendPaymentMessage message from the specified reader or buffer. + * @function decode + * @memberof proto.Message.SendPaymentMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.Message.SendPaymentMessage} SendPaymentMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SendPaymentMessage.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.Message.SendPaymentMessage(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + message.noteMessage = $root.proto.Message.decode(reader, reader.uint32()); + break; + case 3: + message.requestMessageKey = $root.proto.MessageKey.decode(reader, reader.uint32()); + break; + case 4: + message.background = $root.proto.PaymentBackground.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SendPaymentMessage message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.Message.SendPaymentMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.Message.SendPaymentMessage} SendPaymentMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SendPaymentMessage.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SendPaymentMessage message. + * @function verify + * @memberof proto.Message.SendPaymentMessage + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SendPaymentMessage.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.noteMessage != null && message.hasOwnProperty("noteMessage")) { + var error = $root.proto.Message.verify(message.noteMessage); + if (error) + return "noteMessage." + error; + } + if (message.requestMessageKey != null && message.hasOwnProperty("requestMessageKey")) { + var error = $root.proto.MessageKey.verify(message.requestMessageKey); + if (error) + return "requestMessageKey." + error; + } + if (message.background != null && message.hasOwnProperty("background")) { + var error = $root.proto.PaymentBackground.verify(message.background); + if (error) + return "background." + error; + } + return null; + }; + + /** + * Creates a SendPaymentMessage message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.Message.SendPaymentMessage + * @static + * @param {Object.} object Plain object + * @returns {proto.Message.SendPaymentMessage} SendPaymentMessage + */ + SendPaymentMessage.fromObject = function fromObject(object) { + if (object instanceof $root.proto.Message.SendPaymentMessage) + return object; + var message = new $root.proto.Message.SendPaymentMessage(); + if (object.noteMessage != null) { + if (typeof object.noteMessage !== "object") + throw TypeError(".proto.Message.SendPaymentMessage.noteMessage: object expected"); + message.noteMessage = $root.proto.Message.fromObject(object.noteMessage); + } + if (object.requestMessageKey != null) { + if (typeof object.requestMessageKey !== "object") + throw TypeError(".proto.Message.SendPaymentMessage.requestMessageKey: object expected"); + message.requestMessageKey = $root.proto.MessageKey.fromObject(object.requestMessageKey); + } + if (object.background != null) { + if (typeof object.background !== "object") + throw TypeError(".proto.Message.SendPaymentMessage.background: object expected"); + message.background = $root.proto.PaymentBackground.fromObject(object.background); + } + return message; + }; + + /** + * Creates a plain object from a SendPaymentMessage message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.Message.SendPaymentMessage + * @static + * @param {proto.Message.SendPaymentMessage} message SendPaymentMessage + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SendPaymentMessage.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.noteMessage = null; + object.requestMessageKey = null; + object.background = null; + } + if (message.noteMessage != null && message.hasOwnProperty("noteMessage")) + object.noteMessage = $root.proto.Message.toObject(message.noteMessage, options); + if (message.requestMessageKey != null && message.hasOwnProperty("requestMessageKey")) + object.requestMessageKey = $root.proto.MessageKey.toObject(message.requestMessageKey, options); + if (message.background != null && message.hasOwnProperty("background")) + object.background = $root.proto.PaymentBackground.toObject(message.background, options); + return object; + }; + + /** + * Converts this SendPaymentMessage to JSON. + * @function toJSON + * @memberof proto.Message.SendPaymentMessage + * @instance + * @returns {Object.} JSON object + */ + SendPaymentMessage.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return SendPaymentMessage; + })(); + + Message.SenderKeyDistributionMessage = (function() { + + /** + * Properties of a SenderKeyDistributionMessage. + * @memberof proto.Message + * @interface ISenderKeyDistributionMessage + * @property {string|null} [groupId] SenderKeyDistributionMessage groupId + * @property {Uint8Array|null} [axolotlSenderKeyDistributionMessage] SenderKeyDistributionMessage axolotlSenderKeyDistributionMessage + */ + + /** + * Constructs a new SenderKeyDistributionMessage. + * @memberof proto.Message + * @classdesc Represents a SenderKeyDistributionMessage. + * @implements ISenderKeyDistributionMessage + * @constructor + * @param {proto.Message.ISenderKeyDistributionMessage=} [properties] Properties to set + */ + function SenderKeyDistributionMessage(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SenderKeyDistributionMessage groupId. + * @member {string} groupId + * @memberof proto.Message.SenderKeyDistributionMessage + * @instance + */ + SenderKeyDistributionMessage.prototype.groupId = ""; + + /** + * SenderKeyDistributionMessage axolotlSenderKeyDistributionMessage. + * @member {Uint8Array} axolotlSenderKeyDistributionMessage + * @memberof proto.Message.SenderKeyDistributionMessage + * @instance + */ + SenderKeyDistributionMessage.prototype.axolotlSenderKeyDistributionMessage = $util.newBuffer([]); + + /** + * Creates a new SenderKeyDistributionMessage instance using the specified properties. + * @function create + * @memberof proto.Message.SenderKeyDistributionMessage + * @static + * @param {proto.Message.ISenderKeyDistributionMessage=} [properties] Properties to set + * @returns {proto.Message.SenderKeyDistributionMessage} SenderKeyDistributionMessage instance + */ + SenderKeyDistributionMessage.create = function create(properties) { + return new SenderKeyDistributionMessage(properties); + }; + + /** + * Encodes the specified SenderKeyDistributionMessage message. Does not implicitly {@link proto.Message.SenderKeyDistributionMessage.verify|verify} messages. + * @function encode + * @memberof proto.Message.SenderKeyDistributionMessage + * @static + * @param {proto.Message.ISenderKeyDistributionMessage} message SenderKeyDistributionMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SenderKeyDistributionMessage.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.groupId != null && Object.hasOwnProperty.call(message, "groupId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.groupId); + if (message.axolotlSenderKeyDistributionMessage != null && Object.hasOwnProperty.call(message, "axolotlSenderKeyDistributionMessage")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.axolotlSenderKeyDistributionMessage); + return writer; + }; + + /** + * Encodes the specified SenderKeyDistributionMessage message, length delimited. Does not implicitly {@link proto.Message.SenderKeyDistributionMessage.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.Message.SenderKeyDistributionMessage + * @static + * @param {proto.Message.ISenderKeyDistributionMessage} message SenderKeyDistributionMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SenderKeyDistributionMessage.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SenderKeyDistributionMessage message from the specified reader or buffer. + * @function decode + * @memberof proto.Message.SenderKeyDistributionMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.Message.SenderKeyDistributionMessage} SenderKeyDistributionMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SenderKeyDistributionMessage.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.Message.SenderKeyDistributionMessage(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.groupId = reader.string(); + break; + case 2: + message.axolotlSenderKeyDistributionMessage = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SenderKeyDistributionMessage message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.Message.SenderKeyDistributionMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.Message.SenderKeyDistributionMessage} SenderKeyDistributionMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SenderKeyDistributionMessage.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SenderKeyDistributionMessage message. + * @function verify + * @memberof proto.Message.SenderKeyDistributionMessage + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SenderKeyDistributionMessage.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.groupId != null && message.hasOwnProperty("groupId")) + if (!$util.isString(message.groupId)) + return "groupId: string expected"; + if (message.axolotlSenderKeyDistributionMessage != null && message.hasOwnProperty("axolotlSenderKeyDistributionMessage")) + if (!(message.axolotlSenderKeyDistributionMessage && typeof message.axolotlSenderKeyDistributionMessage.length === "number" || $util.isString(message.axolotlSenderKeyDistributionMessage))) + return "axolotlSenderKeyDistributionMessage: buffer expected"; + return null; + }; + + /** + * Creates a SenderKeyDistributionMessage message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.Message.SenderKeyDistributionMessage + * @static + * @param {Object.} object Plain object + * @returns {proto.Message.SenderKeyDistributionMessage} SenderKeyDistributionMessage + */ + SenderKeyDistributionMessage.fromObject = function fromObject(object) { + if (object instanceof $root.proto.Message.SenderKeyDistributionMessage) + return object; + var message = new $root.proto.Message.SenderKeyDistributionMessage(); + if (object.groupId != null) + message.groupId = String(object.groupId); + if (object.axolotlSenderKeyDistributionMessage != null) + if (typeof object.axolotlSenderKeyDistributionMessage === "string") + $util.base64.decode(object.axolotlSenderKeyDistributionMessage, message.axolotlSenderKeyDistributionMessage = $util.newBuffer($util.base64.length(object.axolotlSenderKeyDistributionMessage)), 0); + else if (object.axolotlSenderKeyDistributionMessage.length) + message.axolotlSenderKeyDistributionMessage = object.axolotlSenderKeyDistributionMessage; + return message; + }; + + /** + * Creates a plain object from a SenderKeyDistributionMessage message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.Message.SenderKeyDistributionMessage + * @static + * @param {proto.Message.SenderKeyDistributionMessage} message SenderKeyDistributionMessage + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SenderKeyDistributionMessage.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.groupId = ""; + if (options.bytes === String) + object.axolotlSenderKeyDistributionMessage = ""; + else { + object.axolotlSenderKeyDistributionMessage = []; + if (options.bytes !== Array) + object.axolotlSenderKeyDistributionMessage = $util.newBuffer(object.axolotlSenderKeyDistributionMessage); + } + } + if (message.groupId != null && message.hasOwnProperty("groupId")) + object.groupId = message.groupId; + if (message.axolotlSenderKeyDistributionMessage != null && message.hasOwnProperty("axolotlSenderKeyDistributionMessage")) + object.axolotlSenderKeyDistributionMessage = options.bytes === String ? $util.base64.encode(message.axolotlSenderKeyDistributionMessage, 0, message.axolotlSenderKeyDistributionMessage.length) : options.bytes === Array ? Array.prototype.slice.call(message.axolotlSenderKeyDistributionMessage) : message.axolotlSenderKeyDistributionMessage; + return object; + }; + + /** + * Converts this SenderKeyDistributionMessage to JSON. + * @function toJSON + * @memberof proto.Message.SenderKeyDistributionMessage + * @instance + * @returns {Object.} JSON object + */ + SenderKeyDistributionMessage.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return SenderKeyDistributionMessage; + })(); + + Message.StickerMessage = (function() { + + /** + * Properties of a StickerMessage. + * @memberof proto.Message + * @interface IStickerMessage + * @property {string|null} [url] StickerMessage url + * @property {Uint8Array|null} [fileSha256] StickerMessage fileSha256 + * @property {Uint8Array|null} [fileEncSha256] StickerMessage fileEncSha256 + * @property {Uint8Array|null} [mediaKey] StickerMessage mediaKey + * @property {string|null} [mimetype] StickerMessage mimetype + * @property {number|null} [height] StickerMessage height + * @property {number|null} [width] StickerMessage width + * @property {string|null} [directPath] StickerMessage directPath + * @property {number|Long|null} [fileLength] StickerMessage fileLength + * @property {number|Long|null} [mediaKeyTimestamp] StickerMessage mediaKeyTimestamp + * @property {number|null} [firstFrameLength] StickerMessage firstFrameLength + * @property {Uint8Array|null} [firstFrameSidecar] StickerMessage firstFrameSidecar + * @property {boolean|null} [isAnimated] StickerMessage isAnimated + * @property {Uint8Array|null} [pngThumbnail] StickerMessage pngThumbnail + * @property {proto.IContextInfo|null} [contextInfo] StickerMessage contextInfo + * @property {number|Long|null} [stickerSentTs] StickerMessage stickerSentTs + * @property {boolean|null} [isAvatar] StickerMessage isAvatar + */ /** * Constructs a new StickerMessage. @@ -47551,6 +52374,193 @@ $root.proto = (function() { return Message; })(); + proto.MessageAddOnContextInfo = (function() { + + /** + * Properties of a MessageAddOnContextInfo. + * @memberof proto + * @interface IMessageAddOnContextInfo + * @property {number|null} [messageAddOnDurationInSecs] MessageAddOnContextInfo messageAddOnDurationInSecs + */ + + /** + * Constructs a new MessageAddOnContextInfo. + * @memberof proto + * @classdesc Represents a MessageAddOnContextInfo. + * @implements IMessageAddOnContextInfo + * @constructor + * @param {proto.IMessageAddOnContextInfo=} [properties] Properties to set + */ + function MessageAddOnContextInfo(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MessageAddOnContextInfo messageAddOnDurationInSecs. + * @member {number} messageAddOnDurationInSecs + * @memberof proto.MessageAddOnContextInfo + * @instance + */ + MessageAddOnContextInfo.prototype.messageAddOnDurationInSecs = 0; + + /** + * Creates a new MessageAddOnContextInfo instance using the specified properties. + * @function create + * @memberof proto.MessageAddOnContextInfo + * @static + * @param {proto.IMessageAddOnContextInfo=} [properties] Properties to set + * @returns {proto.MessageAddOnContextInfo} MessageAddOnContextInfo instance + */ + MessageAddOnContextInfo.create = function create(properties) { + return new MessageAddOnContextInfo(properties); + }; + + /** + * Encodes the specified MessageAddOnContextInfo message. Does not implicitly {@link proto.MessageAddOnContextInfo.verify|verify} messages. + * @function encode + * @memberof proto.MessageAddOnContextInfo + * @static + * @param {proto.IMessageAddOnContextInfo} message MessageAddOnContextInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MessageAddOnContextInfo.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.messageAddOnDurationInSecs != null && Object.hasOwnProperty.call(message, "messageAddOnDurationInSecs")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.messageAddOnDurationInSecs); + return writer; + }; + + /** + * Encodes the specified MessageAddOnContextInfo message, length delimited. Does not implicitly {@link proto.MessageAddOnContextInfo.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.MessageAddOnContextInfo + * @static + * @param {proto.IMessageAddOnContextInfo} message MessageAddOnContextInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MessageAddOnContextInfo.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MessageAddOnContextInfo message from the specified reader or buffer. + * @function decode + * @memberof proto.MessageAddOnContextInfo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.MessageAddOnContextInfo} MessageAddOnContextInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MessageAddOnContextInfo.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.MessageAddOnContextInfo(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.messageAddOnDurationInSecs = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MessageAddOnContextInfo message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.MessageAddOnContextInfo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.MessageAddOnContextInfo} MessageAddOnContextInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MessageAddOnContextInfo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MessageAddOnContextInfo message. + * @function verify + * @memberof proto.MessageAddOnContextInfo + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MessageAddOnContextInfo.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.messageAddOnDurationInSecs != null && message.hasOwnProperty("messageAddOnDurationInSecs")) + if (!$util.isInteger(message.messageAddOnDurationInSecs)) + return "messageAddOnDurationInSecs: integer expected"; + return null; + }; + + /** + * Creates a MessageAddOnContextInfo message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.MessageAddOnContextInfo + * @static + * @param {Object.} object Plain object + * @returns {proto.MessageAddOnContextInfo} MessageAddOnContextInfo + */ + MessageAddOnContextInfo.fromObject = function fromObject(object) { + if (object instanceof $root.proto.MessageAddOnContextInfo) + return object; + var message = new $root.proto.MessageAddOnContextInfo(); + if (object.messageAddOnDurationInSecs != null) + message.messageAddOnDurationInSecs = object.messageAddOnDurationInSecs >>> 0; + return message; + }; + + /** + * Creates a plain object from a MessageAddOnContextInfo message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.MessageAddOnContextInfo + * @static + * @param {proto.MessageAddOnContextInfo} message MessageAddOnContextInfo + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MessageAddOnContextInfo.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.messageAddOnDurationInSecs = 0; + if (message.messageAddOnDurationInSecs != null && message.hasOwnProperty("messageAddOnDurationInSecs")) + object.messageAddOnDurationInSecs = message.messageAddOnDurationInSecs; + return object; + }; + + /** + * Converts this MessageAddOnContextInfo to JSON. + * @function toJSON + * @memberof proto.MessageAddOnContextInfo + * @instance + * @returns {Object.} JSON object + */ + MessageAddOnContextInfo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return MessageAddOnContextInfo; + })(); + proto.MessageContextInfo = (function() { /** @@ -47561,6 +52571,7 @@ $root.proto = (function() { * @property {number|null} [deviceListMetadataVersion] MessageContextInfo deviceListMetadataVersion * @property {Uint8Array|null} [messageSecret] MessageContextInfo messageSecret * @property {Uint8Array|null} [paddingBytes] MessageContextInfo paddingBytes + * @property {number|null} [messageAddOnDurationInSecs] MessageContextInfo messageAddOnDurationInSecs */ /** @@ -47610,6 +52621,14 @@ $root.proto = (function() { */ MessageContextInfo.prototype.paddingBytes = $util.newBuffer([]); + /** + * MessageContextInfo messageAddOnDurationInSecs. + * @member {number} messageAddOnDurationInSecs + * @memberof proto.MessageContextInfo + * @instance + */ + MessageContextInfo.prototype.messageAddOnDurationInSecs = 0; + /** * Creates a new MessageContextInfo instance using the specified properties. * @function create @@ -47642,6 +52661,8 @@ $root.proto = (function() { writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.messageSecret); if (message.paddingBytes != null && Object.hasOwnProperty.call(message, "paddingBytes")) writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.paddingBytes); + if (message.messageAddOnDurationInSecs != null && Object.hasOwnProperty.call(message, "messageAddOnDurationInSecs")) + writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.messageAddOnDurationInSecs); return writer; }; @@ -47688,6 +52709,9 @@ $root.proto = (function() { case 4: message.paddingBytes = reader.bytes(); break; + case 5: + message.messageAddOnDurationInSecs = reader.uint32(); + break; default: reader.skipType(tag & 7); break; @@ -47737,6 +52761,9 @@ $root.proto = (function() { if (message.paddingBytes != null && message.hasOwnProperty("paddingBytes")) if (!(message.paddingBytes && typeof message.paddingBytes.length === "number" || $util.isString(message.paddingBytes))) return "paddingBytes: buffer expected"; + if (message.messageAddOnDurationInSecs != null && message.hasOwnProperty("messageAddOnDurationInSecs")) + if (!$util.isInteger(message.messageAddOnDurationInSecs)) + return "messageAddOnDurationInSecs: integer expected"; return null; }; @@ -47769,6 +52796,8 @@ $root.proto = (function() { $util.base64.decode(object.paddingBytes, message.paddingBytes = $util.newBuffer($util.base64.length(object.paddingBytes)), 0); else if (object.paddingBytes.length) message.paddingBytes = object.paddingBytes; + if (object.messageAddOnDurationInSecs != null) + message.messageAddOnDurationInSecs = object.messageAddOnDurationInSecs >>> 0; return message; }; @@ -47802,6 +52831,7 @@ $root.proto = (function() { if (options.bytes !== Array) object.paddingBytes = $util.newBuffer(object.paddingBytes); } + object.messageAddOnDurationInSecs = 0; } if (message.deviceListMetadata != null && message.hasOwnProperty("deviceListMetadata")) object.deviceListMetadata = $root.proto.DeviceListMetadata.toObject(message.deviceListMetadata, options); @@ -47811,6 +52841,8 @@ $root.proto = (function() { object.messageSecret = options.bytes === String ? $util.base64.encode(message.messageSecret, 0, message.messageSecret.length) : options.bytes === Array ? Array.prototype.slice.call(message.messageSecret) : message.messageSecret; if (message.paddingBytes != null && message.hasOwnProperty("paddingBytes")) object.paddingBytes = options.bytes === String ? $util.base64.encode(message.paddingBytes, 0, message.paddingBytes.length) : options.bytes === Array ? Array.prototype.slice.call(message.paddingBytes) : message.paddingBytes; + if (message.messageAddOnDurationInSecs != null && message.hasOwnProperty("messageAddOnDurationInSecs")) + object.messageAddOnDurationInSecs = message.messageAddOnDurationInSecs; return object; }; @@ -48356,6 +53388,10 @@ $root.proto = (function() { * @property {number|Long|null} [senderTimestampMs] MsgOpaqueData senderTimestampMs * @property {string|null} [pollUpdateParentKey] MsgOpaqueData pollUpdateParentKey * @property {proto.IPollEncValue|null} [encPollVote] MsgOpaqueData encPollVote + * @property {boolean|null} [isSentCagPollCreation] MsgOpaqueData isSentCagPollCreation + * @property {string|null} [encReactionTargetMessageKey] MsgOpaqueData encReactionTargetMessageKey + * @property {Uint8Array|null} [encReactionEncPayload] MsgOpaqueData encReactionEncPayload + * @property {Uint8Array|null} [encReactionEncIv] MsgOpaqueData encReactionEncIv */ /** @@ -48550,6 +53586,38 @@ $root.proto = (function() { */ MsgOpaqueData.prototype.encPollVote = null; + /** + * MsgOpaqueData isSentCagPollCreation. + * @member {boolean} isSentCagPollCreation + * @memberof proto.MsgOpaqueData + * @instance + */ + MsgOpaqueData.prototype.isSentCagPollCreation = false; + + /** + * MsgOpaqueData encReactionTargetMessageKey. + * @member {string} encReactionTargetMessageKey + * @memberof proto.MsgOpaqueData + * @instance + */ + MsgOpaqueData.prototype.encReactionTargetMessageKey = ""; + + /** + * MsgOpaqueData encReactionEncPayload. + * @member {Uint8Array} encReactionEncPayload + * @memberof proto.MsgOpaqueData + * @instance + */ + MsgOpaqueData.prototype.encReactionEncPayload = $util.newBuffer([]); + + /** + * MsgOpaqueData encReactionEncIv. + * @member {Uint8Array} encReactionEncIv + * @memberof proto.MsgOpaqueData + * @instance + */ + MsgOpaqueData.prototype.encReactionEncIv = $util.newBuffer([]); + /** * Creates a new MsgOpaqueData instance using the specified properties. * @function create @@ -48617,6 +53685,14 @@ $root.proto = (function() { writer.uint32(/* id 23, wireType 2 =*/186).string(message.pollUpdateParentKey); if (message.encPollVote != null && Object.hasOwnProperty.call(message, "encPollVote")) $root.proto.PollEncValue.encode(message.encPollVote, writer.uint32(/* id 24, wireType 2 =*/194).fork()).ldelim(); + if (message.encReactionTargetMessageKey != null && Object.hasOwnProperty.call(message, "encReactionTargetMessageKey")) + writer.uint32(/* id 25, wireType 2 =*/202).string(message.encReactionTargetMessageKey); + if (message.encReactionEncPayload != null && Object.hasOwnProperty.call(message, "encReactionEncPayload")) + writer.uint32(/* id 26, wireType 2 =*/210).bytes(message.encReactionEncPayload); + if (message.encReactionEncIv != null && Object.hasOwnProperty.call(message, "encReactionEncIv")) + writer.uint32(/* id 27, wireType 2 =*/218).bytes(message.encReactionEncIv); + if (message.isSentCagPollCreation != null && Object.hasOwnProperty.call(message, "isSentCagPollCreation")) + writer.uint32(/* id 28, wireType 0 =*/224).bool(message.isSentCagPollCreation); if (message.originalSelfAuthor != null && Object.hasOwnProperty.call(message, "originalSelfAuthor")) writer.uint32(/* id 51, wireType 2 =*/410).string(message.originalSelfAuthor); return writer; @@ -48721,6 +53797,18 @@ $root.proto = (function() { case 24: message.encPollVote = $root.proto.PollEncValue.decode(reader, reader.uint32()); break; + case 28: + message.isSentCagPollCreation = reader.bool(); + break; + case 25: + message.encReactionTargetMessageKey = reader.string(); + break; + case 26: + message.encReactionEncPayload = reader.bytes(); + break; + case 27: + message.encReactionEncIv = reader.bytes(); + break; default: reader.skipType(tag & 7); break; @@ -48830,6 +53918,18 @@ $root.proto = (function() { if (error) return "encPollVote." + error; } + if (message.isSentCagPollCreation != null && message.hasOwnProperty("isSentCagPollCreation")) + if (typeof message.isSentCagPollCreation !== "boolean") + return "isSentCagPollCreation: boolean expected"; + if (message.encReactionTargetMessageKey != null && message.hasOwnProperty("encReactionTargetMessageKey")) + if (!$util.isString(message.encReactionTargetMessageKey)) + return "encReactionTargetMessageKey: string expected"; + if (message.encReactionEncPayload != null && message.hasOwnProperty("encReactionEncPayload")) + if (!(message.encReactionEncPayload && typeof message.encReactionEncPayload.length === "number" || $util.isString(message.encReactionEncPayload))) + return "encReactionEncPayload: buffer expected"; + if (message.encReactionEncIv != null && message.hasOwnProperty("encReactionEncIv")) + if (!(message.encReactionEncIv && typeof message.encReactionEncIv.length === "number" || $util.isString(message.encReactionEncIv))) + return "encReactionEncIv: buffer expected"; return null; }; @@ -48913,6 +54013,20 @@ $root.proto = (function() { throw TypeError(".proto.MsgOpaqueData.encPollVote: object expected"); message.encPollVote = $root.proto.PollEncValue.fromObject(object.encPollVote); } + if (object.isSentCagPollCreation != null) + message.isSentCagPollCreation = Boolean(object.isSentCagPollCreation); + if (object.encReactionTargetMessageKey != null) + message.encReactionTargetMessageKey = String(object.encReactionTargetMessageKey); + if (object.encReactionEncPayload != null) + if (typeof object.encReactionEncPayload === "string") + $util.base64.decode(object.encReactionEncPayload, message.encReactionEncPayload = $util.newBuffer($util.base64.length(object.encReactionEncPayload)), 0); + else if (object.encReactionEncPayload.length) + message.encReactionEncPayload = object.encReactionEncPayload; + if (object.encReactionEncIv != null) + if (typeof object.encReactionEncIv === "string") + $util.base64.decode(object.encReactionEncIv, message.encReactionEncIv = $util.newBuffer($util.base64.length(object.encReactionEncIv)), 0); + else if (object.encReactionEncIv.length) + message.encReactionEncIv = object.encReactionEncIv; return message; }; @@ -48968,6 +54082,22 @@ $root.proto = (function() { object.senderTimestampMs = options.longs === String ? "0" : 0; object.pollUpdateParentKey = ""; object.encPollVote = null; + object.encReactionTargetMessageKey = ""; + if (options.bytes === String) + object.encReactionEncPayload = ""; + else { + object.encReactionEncPayload = []; + if (options.bytes !== Array) + object.encReactionEncPayload = $util.newBuffer(object.encReactionEncPayload); + } + if (options.bytes === String) + object.encReactionEncIv = ""; + else { + object.encReactionEncIv = []; + if (options.bytes !== Array) + object.encReactionEncIv = $util.newBuffer(object.encReactionEncIv); + } + object.isSentCagPollCreation = false; object.originalSelfAuthor = ""; } if (message.body != null && message.hasOwnProperty("body")) @@ -49018,6 +54148,14 @@ $root.proto = (function() { object.pollUpdateParentKey = message.pollUpdateParentKey; if (message.encPollVote != null && message.hasOwnProperty("encPollVote")) object.encPollVote = $root.proto.PollEncValue.toObject(message.encPollVote, options); + if (message.encReactionTargetMessageKey != null && message.hasOwnProperty("encReactionTargetMessageKey")) + object.encReactionTargetMessageKey = message.encReactionTargetMessageKey; + if (message.encReactionEncPayload != null && message.hasOwnProperty("encReactionEncPayload")) + object.encReactionEncPayload = options.bytes === String ? $util.base64.encode(message.encReactionEncPayload, 0, message.encReactionEncPayload.length) : options.bytes === Array ? Array.prototype.slice.call(message.encReactionEncPayload) : message.encReactionEncPayload; + if (message.encReactionEncIv != null && message.hasOwnProperty("encReactionEncIv")) + object.encReactionEncIv = options.bytes === String ? $util.base64.encode(message.encReactionEncIv, 0, message.encReactionEncIv.length) : options.bytes === Array ? Array.prototype.slice.call(message.encReactionEncIv) : message.encReactionEncIv; + if (message.isSentCagPollCreation != null && message.hasOwnProperty("isSentCagPollCreation")) + object.isSentCagPollCreation = message.isSentCagPollCreation; if (message.originalSelfAuthor != null && message.hasOwnProperty("originalSelfAuthor")) object.originalSelfAuthor = message.originalSelfAuthor; return object; @@ -50249,6 +55387,304 @@ $root.proto = (function() { return NotificationMessageInfo; })(); + proto.NotificationSettings = (function() { + + /** + * Properties of a NotificationSettings. + * @memberof proto + * @interface INotificationSettings + * @property {string|null} [messageVibrate] NotificationSettings messageVibrate + * @property {string|null} [messagePopup] NotificationSettings messagePopup + * @property {string|null} [messageLight] NotificationSettings messageLight + * @property {boolean|null} [lowPriorityNotifications] NotificationSettings lowPriorityNotifications + * @property {boolean|null} [reactionsMuted] NotificationSettings reactionsMuted + * @property {string|null} [callVibrate] NotificationSettings callVibrate + */ + + /** + * Constructs a new NotificationSettings. + * @memberof proto + * @classdesc Represents a NotificationSettings. + * @implements INotificationSettings + * @constructor + * @param {proto.INotificationSettings=} [properties] Properties to set + */ + function NotificationSettings(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * NotificationSettings messageVibrate. + * @member {string} messageVibrate + * @memberof proto.NotificationSettings + * @instance + */ + NotificationSettings.prototype.messageVibrate = ""; + + /** + * NotificationSettings messagePopup. + * @member {string} messagePopup + * @memberof proto.NotificationSettings + * @instance + */ + NotificationSettings.prototype.messagePopup = ""; + + /** + * NotificationSettings messageLight. + * @member {string} messageLight + * @memberof proto.NotificationSettings + * @instance + */ + NotificationSettings.prototype.messageLight = ""; + + /** + * NotificationSettings lowPriorityNotifications. + * @member {boolean} lowPriorityNotifications + * @memberof proto.NotificationSettings + * @instance + */ + NotificationSettings.prototype.lowPriorityNotifications = false; + + /** + * NotificationSettings reactionsMuted. + * @member {boolean} reactionsMuted + * @memberof proto.NotificationSettings + * @instance + */ + NotificationSettings.prototype.reactionsMuted = false; + + /** + * NotificationSettings callVibrate. + * @member {string} callVibrate + * @memberof proto.NotificationSettings + * @instance + */ + NotificationSettings.prototype.callVibrate = ""; + + /** + * Creates a new NotificationSettings instance using the specified properties. + * @function create + * @memberof proto.NotificationSettings + * @static + * @param {proto.INotificationSettings=} [properties] Properties to set + * @returns {proto.NotificationSettings} NotificationSettings instance + */ + NotificationSettings.create = function create(properties) { + return new NotificationSettings(properties); + }; + + /** + * Encodes the specified NotificationSettings message. Does not implicitly {@link proto.NotificationSettings.verify|verify} messages. + * @function encode + * @memberof proto.NotificationSettings + * @static + * @param {proto.INotificationSettings} message NotificationSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NotificationSettings.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.messageVibrate != null && Object.hasOwnProperty.call(message, "messageVibrate")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.messageVibrate); + if (message.messagePopup != null && Object.hasOwnProperty.call(message, "messagePopup")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.messagePopup); + if (message.messageLight != null && Object.hasOwnProperty.call(message, "messageLight")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.messageLight); + if (message.lowPriorityNotifications != null && Object.hasOwnProperty.call(message, "lowPriorityNotifications")) + writer.uint32(/* id 4, wireType 0 =*/32).bool(message.lowPriorityNotifications); + if (message.reactionsMuted != null && Object.hasOwnProperty.call(message, "reactionsMuted")) + writer.uint32(/* id 5, wireType 0 =*/40).bool(message.reactionsMuted); + if (message.callVibrate != null && Object.hasOwnProperty.call(message, "callVibrate")) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.callVibrate); + return writer; + }; + + /** + * Encodes the specified NotificationSettings message, length delimited. Does not implicitly {@link proto.NotificationSettings.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.NotificationSettings + * @static + * @param {proto.INotificationSettings} message NotificationSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NotificationSettings.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a NotificationSettings message from the specified reader or buffer. + * @function decode + * @memberof proto.NotificationSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.NotificationSettings} NotificationSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NotificationSettings.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.NotificationSettings(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.messageVibrate = reader.string(); + break; + case 2: + message.messagePopup = reader.string(); + break; + case 3: + message.messageLight = reader.string(); + break; + case 4: + message.lowPriorityNotifications = reader.bool(); + break; + case 5: + message.reactionsMuted = reader.bool(); + break; + case 6: + message.callVibrate = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a NotificationSettings message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.NotificationSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.NotificationSettings} NotificationSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NotificationSettings.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a NotificationSettings message. + * @function verify + * @memberof proto.NotificationSettings + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + NotificationSettings.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.messageVibrate != null && message.hasOwnProperty("messageVibrate")) + if (!$util.isString(message.messageVibrate)) + return "messageVibrate: string expected"; + if (message.messagePopup != null && message.hasOwnProperty("messagePopup")) + if (!$util.isString(message.messagePopup)) + return "messagePopup: string expected"; + if (message.messageLight != null && message.hasOwnProperty("messageLight")) + if (!$util.isString(message.messageLight)) + return "messageLight: string expected"; + if (message.lowPriorityNotifications != null && message.hasOwnProperty("lowPriorityNotifications")) + if (typeof message.lowPriorityNotifications !== "boolean") + return "lowPriorityNotifications: boolean expected"; + if (message.reactionsMuted != null && message.hasOwnProperty("reactionsMuted")) + if (typeof message.reactionsMuted !== "boolean") + return "reactionsMuted: boolean expected"; + if (message.callVibrate != null && message.hasOwnProperty("callVibrate")) + if (!$util.isString(message.callVibrate)) + return "callVibrate: string expected"; + return null; + }; + + /** + * Creates a NotificationSettings message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.NotificationSettings + * @static + * @param {Object.} object Plain object + * @returns {proto.NotificationSettings} NotificationSettings + */ + NotificationSettings.fromObject = function fromObject(object) { + if (object instanceof $root.proto.NotificationSettings) + return object; + var message = new $root.proto.NotificationSettings(); + if (object.messageVibrate != null) + message.messageVibrate = String(object.messageVibrate); + if (object.messagePopup != null) + message.messagePopup = String(object.messagePopup); + if (object.messageLight != null) + message.messageLight = String(object.messageLight); + if (object.lowPriorityNotifications != null) + message.lowPriorityNotifications = Boolean(object.lowPriorityNotifications); + if (object.reactionsMuted != null) + message.reactionsMuted = Boolean(object.reactionsMuted); + if (object.callVibrate != null) + message.callVibrate = String(object.callVibrate); + return message; + }; + + /** + * Creates a plain object from a NotificationSettings message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.NotificationSettings + * @static + * @param {proto.NotificationSettings} message NotificationSettings + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NotificationSettings.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.messageVibrate = ""; + object.messagePopup = ""; + object.messageLight = ""; + object.lowPriorityNotifications = false; + object.reactionsMuted = false; + object.callVibrate = ""; + } + if (message.messageVibrate != null && message.hasOwnProperty("messageVibrate")) + object.messageVibrate = message.messageVibrate; + if (message.messagePopup != null && message.hasOwnProperty("messagePopup")) + object.messagePopup = message.messagePopup; + if (message.messageLight != null && message.hasOwnProperty("messageLight")) + object.messageLight = message.messageLight; + if (message.lowPriorityNotifications != null && message.hasOwnProperty("lowPriorityNotifications")) + object.lowPriorityNotifications = message.lowPriorityNotifications; + if (message.reactionsMuted != null && message.hasOwnProperty("reactionsMuted")) + object.reactionsMuted = message.reactionsMuted; + if (message.callVibrate != null && message.hasOwnProperty("callVibrate")) + object.callVibrate = message.callVibrate; + return object; + }; + + /** + * Converts this NotificationSettings to JSON. + * @function toJSON + * @memberof proto.NotificationSettings + * @instance + * @returns {Object.} JSON object + */ + NotificationSettings.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return NotificationSettings; + })(); + proto.PastParticipant = (function() { /** @@ -52372,30 +57808,26 @@ $root.proto = (function() { return PaymentInfo; })(); - proto.PendingKeyExchange = (function() { + proto.PhotoChange = (function() { /** - * Properties of a PendingKeyExchange. + * Properties of a PhotoChange. * @memberof proto - * @interface IPendingKeyExchange - * @property {number|null} [sequence] PendingKeyExchange sequence - * @property {Uint8Array|null} [localBaseKey] PendingKeyExchange localBaseKey - * @property {Uint8Array|null} [localBaseKeyPrivate] PendingKeyExchange localBaseKeyPrivate - * @property {Uint8Array|null} [localRatchetKey] PendingKeyExchange localRatchetKey - * @property {Uint8Array|null} [localRatchetKeyPrivate] PendingKeyExchange localRatchetKeyPrivate - * @property {Uint8Array|null} [localIdentityKey] PendingKeyExchange localIdentityKey - * @property {Uint8Array|null} [localIdentityKeyPrivate] PendingKeyExchange localIdentityKeyPrivate + * @interface IPhotoChange + * @property {Uint8Array|null} [oldPhoto] PhotoChange oldPhoto + * @property {Uint8Array|null} [newPhoto] PhotoChange newPhoto + * @property {number|null} [newPhotoId] PhotoChange newPhotoId */ /** - * Constructs a new PendingKeyExchange. + * Constructs a new PhotoChange. * @memberof proto - * @classdesc Represents a PendingKeyExchange. - * @implements IPendingKeyExchange + * @classdesc Represents a PhotoChange. + * @implements IPhotoChange * @constructor - * @param {proto.IPendingKeyExchange=} [properties] Properties to set + * @param {proto.IPhotoChange=} [properties] Properties to set */ - function PendingKeyExchange(properties) { + function PhotoChange(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -52403,153 +57835,101 @@ $root.proto = (function() { } /** - * PendingKeyExchange sequence. - * @member {number} sequence - * @memberof proto.PendingKeyExchange - * @instance - */ - PendingKeyExchange.prototype.sequence = 0; - - /** - * PendingKeyExchange localBaseKey. - * @member {Uint8Array} localBaseKey - * @memberof proto.PendingKeyExchange - * @instance - */ - PendingKeyExchange.prototype.localBaseKey = $util.newBuffer([]); - - /** - * PendingKeyExchange localBaseKeyPrivate. - * @member {Uint8Array} localBaseKeyPrivate - * @memberof proto.PendingKeyExchange - * @instance - */ - PendingKeyExchange.prototype.localBaseKeyPrivate = $util.newBuffer([]); - - /** - * PendingKeyExchange localRatchetKey. - * @member {Uint8Array} localRatchetKey - * @memberof proto.PendingKeyExchange - * @instance - */ - PendingKeyExchange.prototype.localRatchetKey = $util.newBuffer([]); - - /** - * PendingKeyExchange localRatchetKeyPrivate. - * @member {Uint8Array} localRatchetKeyPrivate - * @memberof proto.PendingKeyExchange + * PhotoChange oldPhoto. + * @member {Uint8Array} oldPhoto + * @memberof proto.PhotoChange * @instance */ - PendingKeyExchange.prototype.localRatchetKeyPrivate = $util.newBuffer([]); + PhotoChange.prototype.oldPhoto = $util.newBuffer([]); /** - * PendingKeyExchange localIdentityKey. - * @member {Uint8Array} localIdentityKey - * @memberof proto.PendingKeyExchange + * PhotoChange newPhoto. + * @member {Uint8Array} newPhoto + * @memberof proto.PhotoChange * @instance */ - PendingKeyExchange.prototype.localIdentityKey = $util.newBuffer([]); + PhotoChange.prototype.newPhoto = $util.newBuffer([]); /** - * PendingKeyExchange localIdentityKeyPrivate. - * @member {Uint8Array} localIdentityKeyPrivate - * @memberof proto.PendingKeyExchange + * PhotoChange newPhotoId. + * @member {number} newPhotoId + * @memberof proto.PhotoChange * @instance */ - PendingKeyExchange.prototype.localIdentityKeyPrivate = $util.newBuffer([]); + PhotoChange.prototype.newPhotoId = 0; /** - * Creates a new PendingKeyExchange instance using the specified properties. + * Creates a new PhotoChange instance using the specified properties. * @function create - * @memberof proto.PendingKeyExchange + * @memberof proto.PhotoChange * @static - * @param {proto.IPendingKeyExchange=} [properties] Properties to set - * @returns {proto.PendingKeyExchange} PendingKeyExchange instance + * @param {proto.IPhotoChange=} [properties] Properties to set + * @returns {proto.PhotoChange} PhotoChange instance */ - PendingKeyExchange.create = function create(properties) { - return new PendingKeyExchange(properties); + PhotoChange.create = function create(properties) { + return new PhotoChange(properties); }; /** - * Encodes the specified PendingKeyExchange message. Does not implicitly {@link proto.PendingKeyExchange.verify|verify} messages. + * Encodes the specified PhotoChange message. Does not implicitly {@link proto.PhotoChange.verify|verify} messages. * @function encode - * @memberof proto.PendingKeyExchange + * @memberof proto.PhotoChange * @static - * @param {proto.IPendingKeyExchange} message PendingKeyExchange message or plain object to encode + * @param {proto.IPhotoChange} message PhotoChange message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PendingKeyExchange.encode = function encode(message, writer) { + PhotoChange.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.sequence != null && Object.hasOwnProperty.call(message, "sequence")) - writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.sequence); - if (message.localBaseKey != null && Object.hasOwnProperty.call(message, "localBaseKey")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.localBaseKey); - if (message.localBaseKeyPrivate != null && Object.hasOwnProperty.call(message, "localBaseKeyPrivate")) - writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.localBaseKeyPrivate); - if (message.localRatchetKey != null && Object.hasOwnProperty.call(message, "localRatchetKey")) - writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.localRatchetKey); - if (message.localRatchetKeyPrivate != null && Object.hasOwnProperty.call(message, "localRatchetKeyPrivate")) - writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.localRatchetKeyPrivate); - if (message.localIdentityKey != null && Object.hasOwnProperty.call(message, "localIdentityKey")) - writer.uint32(/* id 7, wireType 2 =*/58).bytes(message.localIdentityKey); - if (message.localIdentityKeyPrivate != null && Object.hasOwnProperty.call(message, "localIdentityKeyPrivate")) - writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.localIdentityKeyPrivate); + if (message.oldPhoto != null && Object.hasOwnProperty.call(message, "oldPhoto")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.oldPhoto); + if (message.newPhoto != null && Object.hasOwnProperty.call(message, "newPhoto")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.newPhoto); + if (message.newPhotoId != null && Object.hasOwnProperty.call(message, "newPhotoId")) + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.newPhotoId); return writer; }; /** - * Encodes the specified PendingKeyExchange message, length delimited. Does not implicitly {@link proto.PendingKeyExchange.verify|verify} messages. + * Encodes the specified PhotoChange message, length delimited. Does not implicitly {@link proto.PhotoChange.verify|verify} messages. * @function encodeDelimited - * @memberof proto.PendingKeyExchange + * @memberof proto.PhotoChange * @static - * @param {proto.IPendingKeyExchange} message PendingKeyExchange message or plain object to encode + * @param {proto.IPhotoChange} message PhotoChange message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PendingKeyExchange.encodeDelimited = function encodeDelimited(message, writer) { + PhotoChange.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a PendingKeyExchange message from the specified reader or buffer. + * Decodes a PhotoChange message from the specified reader or buffer. * @function decode - * @memberof proto.PendingKeyExchange + * @memberof proto.PhotoChange * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {proto.PendingKeyExchange} PendingKeyExchange + * @returns {proto.PhotoChange} PhotoChange * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PendingKeyExchange.decode = function decode(reader, length) { + PhotoChange.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.PendingKeyExchange(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.PhotoChange(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.sequence = reader.uint32(); + message.oldPhoto = reader.bytes(); break; case 2: - message.localBaseKey = reader.bytes(); + message.newPhoto = reader.bytes(); break; case 3: - message.localBaseKeyPrivate = reader.bytes(); - break; - case 4: - message.localRatchetKey = reader.bytes(); - break; - case 5: - message.localRatchetKeyPrivate = reader.bytes(); - break; - case 7: - message.localIdentityKey = reader.bytes(); - break; - case 8: - message.localIdentityKeyPrivate = reader.bytes(); + message.newPhotoId = reader.uint32(); break; default: reader.skipType(tag & 7); @@ -52560,212 +57940,146 @@ $root.proto = (function() { }; /** - * Decodes a PendingKeyExchange message from the specified reader or buffer, length delimited. + * Decodes a PhotoChange message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof proto.PendingKeyExchange + * @memberof proto.PhotoChange * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {proto.PendingKeyExchange} PendingKeyExchange + * @returns {proto.PhotoChange} PhotoChange * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PendingKeyExchange.decodeDelimited = function decodeDelimited(reader) { + PhotoChange.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a PendingKeyExchange message. + * Verifies a PhotoChange message. * @function verify - * @memberof proto.PendingKeyExchange + * @memberof proto.PhotoChange * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - PendingKeyExchange.verify = function verify(message) { + PhotoChange.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.sequence != null && message.hasOwnProperty("sequence")) - if (!$util.isInteger(message.sequence)) - return "sequence: integer expected"; - if (message.localBaseKey != null && message.hasOwnProperty("localBaseKey")) - if (!(message.localBaseKey && typeof message.localBaseKey.length === "number" || $util.isString(message.localBaseKey))) - return "localBaseKey: buffer expected"; - if (message.localBaseKeyPrivate != null && message.hasOwnProperty("localBaseKeyPrivate")) - if (!(message.localBaseKeyPrivate && typeof message.localBaseKeyPrivate.length === "number" || $util.isString(message.localBaseKeyPrivate))) - return "localBaseKeyPrivate: buffer expected"; - if (message.localRatchetKey != null && message.hasOwnProperty("localRatchetKey")) - if (!(message.localRatchetKey && typeof message.localRatchetKey.length === "number" || $util.isString(message.localRatchetKey))) - return "localRatchetKey: buffer expected"; - if (message.localRatchetKeyPrivate != null && message.hasOwnProperty("localRatchetKeyPrivate")) - if (!(message.localRatchetKeyPrivate && typeof message.localRatchetKeyPrivate.length === "number" || $util.isString(message.localRatchetKeyPrivate))) - return "localRatchetKeyPrivate: buffer expected"; - if (message.localIdentityKey != null && message.hasOwnProperty("localIdentityKey")) - if (!(message.localIdentityKey && typeof message.localIdentityKey.length === "number" || $util.isString(message.localIdentityKey))) - return "localIdentityKey: buffer expected"; - if (message.localIdentityKeyPrivate != null && message.hasOwnProperty("localIdentityKeyPrivate")) - if (!(message.localIdentityKeyPrivate && typeof message.localIdentityKeyPrivate.length === "number" || $util.isString(message.localIdentityKeyPrivate))) - return "localIdentityKeyPrivate: buffer expected"; + if (message.oldPhoto != null && message.hasOwnProperty("oldPhoto")) + if (!(message.oldPhoto && typeof message.oldPhoto.length === "number" || $util.isString(message.oldPhoto))) + return "oldPhoto: buffer expected"; + if (message.newPhoto != null && message.hasOwnProperty("newPhoto")) + if (!(message.newPhoto && typeof message.newPhoto.length === "number" || $util.isString(message.newPhoto))) + return "newPhoto: buffer expected"; + if (message.newPhotoId != null && message.hasOwnProperty("newPhotoId")) + if (!$util.isInteger(message.newPhotoId)) + return "newPhotoId: integer expected"; return null; }; /** - * Creates a PendingKeyExchange message from a plain object. Also converts values to their respective internal types. + * Creates a PhotoChange message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof proto.PendingKeyExchange + * @memberof proto.PhotoChange * @static * @param {Object.} object Plain object - * @returns {proto.PendingKeyExchange} PendingKeyExchange + * @returns {proto.PhotoChange} PhotoChange */ - PendingKeyExchange.fromObject = function fromObject(object) { - if (object instanceof $root.proto.PendingKeyExchange) + PhotoChange.fromObject = function fromObject(object) { + if (object instanceof $root.proto.PhotoChange) return object; - var message = new $root.proto.PendingKeyExchange(); - if (object.sequence != null) - message.sequence = object.sequence >>> 0; - if (object.localBaseKey != null) - if (typeof object.localBaseKey === "string") - $util.base64.decode(object.localBaseKey, message.localBaseKey = $util.newBuffer($util.base64.length(object.localBaseKey)), 0); - else if (object.localBaseKey.length) - message.localBaseKey = object.localBaseKey; - if (object.localBaseKeyPrivate != null) - if (typeof object.localBaseKeyPrivate === "string") - $util.base64.decode(object.localBaseKeyPrivate, message.localBaseKeyPrivate = $util.newBuffer($util.base64.length(object.localBaseKeyPrivate)), 0); - else if (object.localBaseKeyPrivate.length) - message.localBaseKeyPrivate = object.localBaseKeyPrivate; - if (object.localRatchetKey != null) - if (typeof object.localRatchetKey === "string") - $util.base64.decode(object.localRatchetKey, message.localRatchetKey = $util.newBuffer($util.base64.length(object.localRatchetKey)), 0); - else if (object.localRatchetKey.length) - message.localRatchetKey = object.localRatchetKey; - if (object.localRatchetKeyPrivate != null) - if (typeof object.localRatchetKeyPrivate === "string") - $util.base64.decode(object.localRatchetKeyPrivate, message.localRatchetKeyPrivate = $util.newBuffer($util.base64.length(object.localRatchetKeyPrivate)), 0); - else if (object.localRatchetKeyPrivate.length) - message.localRatchetKeyPrivate = object.localRatchetKeyPrivate; - if (object.localIdentityKey != null) - if (typeof object.localIdentityKey === "string") - $util.base64.decode(object.localIdentityKey, message.localIdentityKey = $util.newBuffer($util.base64.length(object.localIdentityKey)), 0); - else if (object.localIdentityKey.length) - message.localIdentityKey = object.localIdentityKey; - if (object.localIdentityKeyPrivate != null) - if (typeof object.localIdentityKeyPrivate === "string") - $util.base64.decode(object.localIdentityKeyPrivate, message.localIdentityKeyPrivate = $util.newBuffer($util.base64.length(object.localIdentityKeyPrivate)), 0); - else if (object.localIdentityKeyPrivate.length) - message.localIdentityKeyPrivate = object.localIdentityKeyPrivate; + var message = new $root.proto.PhotoChange(); + if (object.oldPhoto != null) + if (typeof object.oldPhoto === "string") + $util.base64.decode(object.oldPhoto, message.oldPhoto = $util.newBuffer($util.base64.length(object.oldPhoto)), 0); + else if (object.oldPhoto.length) + message.oldPhoto = object.oldPhoto; + if (object.newPhoto != null) + if (typeof object.newPhoto === "string") + $util.base64.decode(object.newPhoto, message.newPhoto = $util.newBuffer($util.base64.length(object.newPhoto)), 0); + else if (object.newPhoto.length) + message.newPhoto = object.newPhoto; + if (object.newPhotoId != null) + message.newPhotoId = object.newPhotoId >>> 0; return message; }; /** - * Creates a plain object from a PendingKeyExchange message. Also converts values to other types if specified. + * Creates a plain object from a PhotoChange message. Also converts values to other types if specified. * @function toObject - * @memberof proto.PendingKeyExchange + * @memberof proto.PhotoChange * @static - * @param {proto.PendingKeyExchange} message PendingKeyExchange + * @param {proto.PhotoChange} message PhotoChange * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PendingKeyExchange.toObject = function toObject(message, options) { + PhotoChange.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { - object.sequence = 0; - if (options.bytes === String) - object.localBaseKey = ""; - else { - object.localBaseKey = []; - if (options.bytes !== Array) - object.localBaseKey = $util.newBuffer(object.localBaseKey); - } - if (options.bytes === String) - object.localBaseKeyPrivate = ""; - else { - object.localBaseKeyPrivate = []; - if (options.bytes !== Array) - object.localBaseKeyPrivate = $util.newBuffer(object.localBaseKeyPrivate); - } - if (options.bytes === String) - object.localRatchetKey = ""; - else { - object.localRatchetKey = []; - if (options.bytes !== Array) - object.localRatchetKey = $util.newBuffer(object.localRatchetKey); - } if (options.bytes === String) - object.localRatchetKeyPrivate = ""; + object.oldPhoto = ""; else { - object.localRatchetKeyPrivate = []; + object.oldPhoto = []; if (options.bytes !== Array) - object.localRatchetKeyPrivate = $util.newBuffer(object.localRatchetKeyPrivate); + object.oldPhoto = $util.newBuffer(object.oldPhoto); } if (options.bytes === String) - object.localIdentityKey = ""; + object.newPhoto = ""; else { - object.localIdentityKey = []; + object.newPhoto = []; if (options.bytes !== Array) - object.localIdentityKey = $util.newBuffer(object.localIdentityKey); + object.newPhoto = $util.newBuffer(object.newPhoto); } - if (options.bytes === String) - object.localIdentityKeyPrivate = ""; - else { - object.localIdentityKeyPrivate = []; - if (options.bytes !== Array) - object.localIdentityKeyPrivate = $util.newBuffer(object.localIdentityKeyPrivate); - } - } - if (message.sequence != null && message.hasOwnProperty("sequence")) - object.sequence = message.sequence; - if (message.localBaseKey != null && message.hasOwnProperty("localBaseKey")) - object.localBaseKey = options.bytes === String ? $util.base64.encode(message.localBaseKey, 0, message.localBaseKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.localBaseKey) : message.localBaseKey; - if (message.localBaseKeyPrivate != null && message.hasOwnProperty("localBaseKeyPrivate")) - object.localBaseKeyPrivate = options.bytes === String ? $util.base64.encode(message.localBaseKeyPrivate, 0, message.localBaseKeyPrivate.length) : options.bytes === Array ? Array.prototype.slice.call(message.localBaseKeyPrivate) : message.localBaseKeyPrivate; - if (message.localRatchetKey != null && message.hasOwnProperty("localRatchetKey")) - object.localRatchetKey = options.bytes === String ? $util.base64.encode(message.localRatchetKey, 0, message.localRatchetKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.localRatchetKey) : message.localRatchetKey; - if (message.localRatchetKeyPrivate != null && message.hasOwnProperty("localRatchetKeyPrivate")) - object.localRatchetKeyPrivate = options.bytes === String ? $util.base64.encode(message.localRatchetKeyPrivate, 0, message.localRatchetKeyPrivate.length) : options.bytes === Array ? Array.prototype.slice.call(message.localRatchetKeyPrivate) : message.localRatchetKeyPrivate; - if (message.localIdentityKey != null && message.hasOwnProperty("localIdentityKey")) - object.localIdentityKey = options.bytes === String ? $util.base64.encode(message.localIdentityKey, 0, message.localIdentityKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.localIdentityKey) : message.localIdentityKey; - if (message.localIdentityKeyPrivate != null && message.hasOwnProperty("localIdentityKeyPrivate")) - object.localIdentityKeyPrivate = options.bytes === String ? $util.base64.encode(message.localIdentityKeyPrivate, 0, message.localIdentityKeyPrivate.length) : options.bytes === Array ? Array.prototype.slice.call(message.localIdentityKeyPrivate) : message.localIdentityKeyPrivate; + object.newPhotoId = 0; + } + if (message.oldPhoto != null && message.hasOwnProperty("oldPhoto")) + object.oldPhoto = options.bytes === String ? $util.base64.encode(message.oldPhoto, 0, message.oldPhoto.length) : options.bytes === Array ? Array.prototype.slice.call(message.oldPhoto) : message.oldPhoto; + if (message.newPhoto != null && message.hasOwnProperty("newPhoto")) + object.newPhoto = options.bytes === String ? $util.base64.encode(message.newPhoto, 0, message.newPhoto.length) : options.bytes === Array ? Array.prototype.slice.call(message.newPhoto) : message.newPhoto; + if (message.newPhotoId != null && message.hasOwnProperty("newPhotoId")) + object.newPhotoId = message.newPhotoId; return object; }; /** - * Converts this PendingKeyExchange to JSON. + * Converts this PhotoChange to JSON. * @function toJSON - * @memberof proto.PendingKeyExchange + * @memberof proto.PhotoChange * @instance * @returns {Object.} JSON object */ - PendingKeyExchange.prototype.toJSON = function toJSON() { + PhotoChange.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return PendingKeyExchange; + return PhotoChange; })(); - proto.PendingPreKey = (function() { + proto.PinInChat = (function() { /** - * Properties of a PendingPreKey. + * Properties of a PinInChat. * @memberof proto - * @interface IPendingPreKey - * @property {number|null} [preKeyId] PendingPreKey preKeyId - * @property {number|null} [signedPreKeyId] PendingPreKey signedPreKeyId - * @property {Uint8Array|null} [baseKey] PendingPreKey baseKey + * @interface IPinInChat + * @property {proto.PinInChat.Type|null} [type] PinInChat type + * @property {proto.IMessageKey|null} [key] PinInChat key + * @property {number|Long|null} [senderTimestampMs] PinInChat senderTimestampMs + * @property {number|Long|null} [serverTimestampMs] PinInChat serverTimestampMs + * @property {proto.IMessageAddOnContextInfo|null} [messageAddOnContextInfo] PinInChat messageAddOnContextInfo */ /** - * Constructs a new PendingPreKey. + * Constructs a new PinInChat. * @memberof proto - * @classdesc Represents a PendingPreKey. - * @implements IPendingPreKey + * @classdesc Represents a PinInChat. + * @implements IPinInChat * @constructor - * @param {proto.IPendingPreKey=} [properties] Properties to set + * @param {proto.IPinInChat=} [properties] Properties to set */ - function PendingPreKey(properties) { + function PinInChat(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -52773,101 +58087,127 @@ $root.proto = (function() { } /** - * PendingPreKey preKeyId. - * @member {number} preKeyId - * @memberof proto.PendingPreKey + * PinInChat type. + * @member {proto.PinInChat.Type} type + * @memberof proto.PinInChat * @instance */ - PendingPreKey.prototype.preKeyId = 0; + PinInChat.prototype.type = 0; /** - * PendingPreKey signedPreKeyId. - * @member {number} signedPreKeyId - * @memberof proto.PendingPreKey + * PinInChat key. + * @member {proto.IMessageKey|null|undefined} key + * @memberof proto.PinInChat * @instance */ - PendingPreKey.prototype.signedPreKeyId = 0; + PinInChat.prototype.key = null; /** - * PendingPreKey baseKey. - * @member {Uint8Array} baseKey - * @memberof proto.PendingPreKey + * PinInChat senderTimestampMs. + * @member {number|Long} senderTimestampMs + * @memberof proto.PinInChat + * @instance + */ + PinInChat.prototype.senderTimestampMs = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * PinInChat serverTimestampMs. + * @member {number|Long} serverTimestampMs + * @memberof proto.PinInChat + * @instance + */ + PinInChat.prototype.serverTimestampMs = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * PinInChat messageAddOnContextInfo. + * @member {proto.IMessageAddOnContextInfo|null|undefined} messageAddOnContextInfo + * @memberof proto.PinInChat * @instance */ - PendingPreKey.prototype.baseKey = $util.newBuffer([]); + PinInChat.prototype.messageAddOnContextInfo = null; /** - * Creates a new PendingPreKey instance using the specified properties. + * Creates a new PinInChat instance using the specified properties. * @function create - * @memberof proto.PendingPreKey + * @memberof proto.PinInChat * @static - * @param {proto.IPendingPreKey=} [properties] Properties to set - * @returns {proto.PendingPreKey} PendingPreKey instance + * @param {proto.IPinInChat=} [properties] Properties to set + * @returns {proto.PinInChat} PinInChat instance */ - PendingPreKey.create = function create(properties) { - return new PendingPreKey(properties); + PinInChat.create = function create(properties) { + return new PinInChat(properties); }; /** - * Encodes the specified PendingPreKey message. Does not implicitly {@link proto.PendingPreKey.verify|verify} messages. + * Encodes the specified PinInChat message. Does not implicitly {@link proto.PinInChat.verify|verify} messages. * @function encode - * @memberof proto.PendingPreKey + * @memberof proto.PinInChat * @static - * @param {proto.IPendingPreKey} message PendingPreKey message or plain object to encode + * @param {proto.IPinInChat} message PinInChat message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PendingPreKey.encode = function encode(message, writer) { + PinInChat.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.preKeyId != null && Object.hasOwnProperty.call(message, "preKeyId")) - writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.preKeyId); - if (message.baseKey != null && Object.hasOwnProperty.call(message, "baseKey")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.baseKey); - if (message.signedPreKeyId != null && Object.hasOwnProperty.call(message, "signedPreKeyId")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.signedPreKeyId); + if (message.type != null && Object.hasOwnProperty.call(message, "type")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type); + if (message.key != null && Object.hasOwnProperty.call(message, "key")) + $root.proto.MessageKey.encode(message.key, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.senderTimestampMs != null && Object.hasOwnProperty.call(message, "senderTimestampMs")) + writer.uint32(/* id 3, wireType 0 =*/24).int64(message.senderTimestampMs); + if (message.serverTimestampMs != null && Object.hasOwnProperty.call(message, "serverTimestampMs")) + writer.uint32(/* id 4, wireType 0 =*/32).int64(message.serverTimestampMs); + if (message.messageAddOnContextInfo != null && Object.hasOwnProperty.call(message, "messageAddOnContextInfo")) + $root.proto.MessageAddOnContextInfo.encode(message.messageAddOnContextInfo, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; /** - * Encodes the specified PendingPreKey message, length delimited. Does not implicitly {@link proto.PendingPreKey.verify|verify} messages. + * Encodes the specified PinInChat message, length delimited. Does not implicitly {@link proto.PinInChat.verify|verify} messages. * @function encodeDelimited - * @memberof proto.PendingPreKey + * @memberof proto.PinInChat * @static - * @param {proto.IPendingPreKey} message PendingPreKey message or plain object to encode + * @param {proto.IPinInChat} message PinInChat message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PendingPreKey.encodeDelimited = function encodeDelimited(message, writer) { + PinInChat.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a PendingPreKey message from the specified reader or buffer. + * Decodes a PinInChat message from the specified reader or buffer. * @function decode - * @memberof proto.PendingPreKey + * @memberof proto.PinInChat * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {proto.PendingPreKey} PendingPreKey + * @returns {proto.PinInChat} PinInChat * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PendingPreKey.decode = function decode(reader, length) { + PinInChat.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.PendingPreKey(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.PinInChat(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.preKeyId = reader.uint32(); + message.type = reader.int32(); + break; + case 2: + message.key = $root.proto.MessageKey.decode(reader, reader.uint32()); break; case 3: - message.signedPreKeyId = reader.int32(); + message.senderTimestampMs = reader.int64(); break; - case 2: - message.baseKey = reader.bytes(); + case 4: + message.serverTimestampMs = reader.int64(); + break; + case 5: + message.messageAddOnContextInfo = $root.proto.MessageAddOnContextInfo.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -52878,135 +58218,215 @@ $root.proto = (function() { }; /** - * Decodes a PendingPreKey message from the specified reader or buffer, length delimited. + * Decodes a PinInChat message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof proto.PendingPreKey + * @memberof proto.PinInChat * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {proto.PendingPreKey} PendingPreKey + * @returns {proto.PinInChat} PinInChat * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PendingPreKey.decodeDelimited = function decodeDelimited(reader) { + PinInChat.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a PendingPreKey message. + * Verifies a PinInChat message. * @function verify - * @memberof proto.PendingPreKey + * @memberof proto.PinInChat * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - PendingPreKey.verify = function verify(message) { + PinInChat.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.preKeyId != null && message.hasOwnProperty("preKeyId")) - if (!$util.isInteger(message.preKeyId)) - return "preKeyId: integer expected"; - if (message.signedPreKeyId != null && message.hasOwnProperty("signedPreKeyId")) - if (!$util.isInteger(message.signedPreKeyId)) - return "signedPreKeyId: integer expected"; - if (message.baseKey != null && message.hasOwnProperty("baseKey")) - if (!(message.baseKey && typeof message.baseKey.length === "number" || $util.isString(message.baseKey))) - return "baseKey: buffer expected"; + if (message.type != null && message.hasOwnProperty("type")) + switch (message.type) { + default: + return "type: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.key != null && message.hasOwnProperty("key")) { + var error = $root.proto.MessageKey.verify(message.key); + if (error) + return "key." + error; + } + if (message.senderTimestampMs != null && message.hasOwnProperty("senderTimestampMs")) + if (!$util.isInteger(message.senderTimestampMs) && !(message.senderTimestampMs && $util.isInteger(message.senderTimestampMs.low) && $util.isInteger(message.senderTimestampMs.high))) + return "senderTimestampMs: integer|Long expected"; + if (message.serverTimestampMs != null && message.hasOwnProperty("serverTimestampMs")) + if (!$util.isInteger(message.serverTimestampMs) && !(message.serverTimestampMs && $util.isInteger(message.serverTimestampMs.low) && $util.isInteger(message.serverTimestampMs.high))) + return "serverTimestampMs: integer|Long expected"; + if (message.messageAddOnContextInfo != null && message.hasOwnProperty("messageAddOnContextInfo")) { + var error = $root.proto.MessageAddOnContextInfo.verify(message.messageAddOnContextInfo); + if (error) + return "messageAddOnContextInfo." + error; + } return null; }; /** - * Creates a PendingPreKey message from a plain object. Also converts values to their respective internal types. + * Creates a PinInChat message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof proto.PendingPreKey + * @memberof proto.PinInChat * @static * @param {Object.} object Plain object - * @returns {proto.PendingPreKey} PendingPreKey + * @returns {proto.PinInChat} PinInChat */ - PendingPreKey.fromObject = function fromObject(object) { - if (object instanceof $root.proto.PendingPreKey) + PinInChat.fromObject = function fromObject(object) { + if (object instanceof $root.proto.PinInChat) return object; - var message = new $root.proto.PendingPreKey(); - if (object.preKeyId != null) - message.preKeyId = object.preKeyId >>> 0; - if (object.signedPreKeyId != null) - message.signedPreKeyId = object.signedPreKeyId | 0; - if (object.baseKey != null) - if (typeof object.baseKey === "string") - $util.base64.decode(object.baseKey, message.baseKey = $util.newBuffer($util.base64.length(object.baseKey)), 0); - else if (object.baseKey.length) - message.baseKey = object.baseKey; + var message = new $root.proto.PinInChat(); + switch (object.type) { + case "UNKNOWN_TYPE": + case 0: + message.type = 0; + break; + case "PIN_FOR_ALL": + case 1: + message.type = 1; + break; + case "UNPIN_FOR_ALL": + case 2: + message.type = 2; + break; + } + if (object.key != null) { + if (typeof object.key !== "object") + throw TypeError(".proto.PinInChat.key: object expected"); + message.key = $root.proto.MessageKey.fromObject(object.key); + } + if (object.senderTimestampMs != null) + if ($util.Long) + (message.senderTimestampMs = $util.Long.fromValue(object.senderTimestampMs)).unsigned = false; + else if (typeof object.senderTimestampMs === "string") + message.senderTimestampMs = parseInt(object.senderTimestampMs, 10); + else if (typeof object.senderTimestampMs === "number") + message.senderTimestampMs = object.senderTimestampMs; + else if (typeof object.senderTimestampMs === "object") + message.senderTimestampMs = new $util.LongBits(object.senderTimestampMs.low >>> 0, object.senderTimestampMs.high >>> 0).toNumber(); + if (object.serverTimestampMs != null) + if ($util.Long) + (message.serverTimestampMs = $util.Long.fromValue(object.serverTimestampMs)).unsigned = false; + else if (typeof object.serverTimestampMs === "string") + message.serverTimestampMs = parseInt(object.serverTimestampMs, 10); + else if (typeof object.serverTimestampMs === "number") + message.serverTimestampMs = object.serverTimestampMs; + else if (typeof object.serverTimestampMs === "object") + message.serverTimestampMs = new $util.LongBits(object.serverTimestampMs.low >>> 0, object.serverTimestampMs.high >>> 0).toNumber(); + if (object.messageAddOnContextInfo != null) { + if (typeof object.messageAddOnContextInfo !== "object") + throw TypeError(".proto.PinInChat.messageAddOnContextInfo: object expected"); + message.messageAddOnContextInfo = $root.proto.MessageAddOnContextInfo.fromObject(object.messageAddOnContextInfo); + } return message; }; /** - * Creates a plain object from a PendingPreKey message. Also converts values to other types if specified. + * Creates a plain object from a PinInChat message. Also converts values to other types if specified. * @function toObject - * @memberof proto.PendingPreKey + * @memberof proto.PinInChat * @static - * @param {proto.PendingPreKey} message PendingPreKey + * @param {proto.PinInChat} message PinInChat * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PendingPreKey.toObject = function toObject(message, options) { + PinInChat.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { - object.preKeyId = 0; - if (options.bytes === String) - object.baseKey = ""; - else { - object.baseKey = []; - if (options.bytes !== Array) - object.baseKey = $util.newBuffer(object.baseKey); - } - object.signedPreKeyId = 0; + object.type = options.enums === String ? "UNKNOWN_TYPE" : 0; + object.key = null; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.senderTimestampMs = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.senderTimestampMs = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.serverTimestampMs = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.serverTimestampMs = options.longs === String ? "0" : 0; + object.messageAddOnContextInfo = null; } - if (message.preKeyId != null && message.hasOwnProperty("preKeyId")) - object.preKeyId = message.preKeyId; - if (message.baseKey != null && message.hasOwnProperty("baseKey")) - object.baseKey = options.bytes === String ? $util.base64.encode(message.baseKey, 0, message.baseKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.baseKey) : message.baseKey; - if (message.signedPreKeyId != null && message.hasOwnProperty("signedPreKeyId")) - object.signedPreKeyId = message.signedPreKeyId; + if (message.type != null && message.hasOwnProperty("type")) + object.type = options.enums === String ? $root.proto.PinInChat.Type[message.type] : message.type; + if (message.key != null && message.hasOwnProperty("key")) + object.key = $root.proto.MessageKey.toObject(message.key, options); + if (message.senderTimestampMs != null && message.hasOwnProperty("senderTimestampMs")) + if (typeof message.senderTimestampMs === "number") + object.senderTimestampMs = options.longs === String ? String(message.senderTimestampMs) : message.senderTimestampMs; + else + object.senderTimestampMs = options.longs === String ? $util.Long.prototype.toString.call(message.senderTimestampMs) : options.longs === Number ? new $util.LongBits(message.senderTimestampMs.low >>> 0, message.senderTimestampMs.high >>> 0).toNumber() : message.senderTimestampMs; + if (message.serverTimestampMs != null && message.hasOwnProperty("serverTimestampMs")) + if (typeof message.serverTimestampMs === "number") + object.serverTimestampMs = options.longs === String ? String(message.serverTimestampMs) : message.serverTimestampMs; + else + object.serverTimestampMs = options.longs === String ? $util.Long.prototype.toString.call(message.serverTimestampMs) : options.longs === Number ? new $util.LongBits(message.serverTimestampMs.low >>> 0, message.serverTimestampMs.high >>> 0).toNumber() : message.serverTimestampMs; + if (message.messageAddOnContextInfo != null && message.hasOwnProperty("messageAddOnContextInfo")) + object.messageAddOnContextInfo = $root.proto.MessageAddOnContextInfo.toObject(message.messageAddOnContextInfo, options); return object; }; /** - * Converts this PendingPreKey to JSON. + * Converts this PinInChat to JSON. * @function toJSON - * @memberof proto.PendingPreKey + * @memberof proto.PinInChat * @instance * @returns {Object.} JSON object */ - PendingPreKey.prototype.toJSON = function toJSON() { + PinInChat.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return PendingPreKey; + /** + * Type enum. + * @name proto.PinInChat.Type + * @enum {number} + * @property {number} UNKNOWN_TYPE=0 UNKNOWN_TYPE value + * @property {number} PIN_FOR_ALL=1 PIN_FOR_ALL value + * @property {number} UNPIN_FOR_ALL=2 UNPIN_FOR_ALL value + */ + PinInChat.Type = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN_TYPE"] = 0; + values[valuesById[1] = "PIN_FOR_ALL"] = 1; + values[valuesById[2] = "UNPIN_FOR_ALL"] = 2; + return values; + })(); + + return PinInChat; })(); - proto.PhotoChange = (function() { + proto.Point = (function() { /** - * Properties of a PhotoChange. + * Properties of a Point. * @memberof proto - * @interface IPhotoChange - * @property {Uint8Array|null} [oldPhoto] PhotoChange oldPhoto - * @property {Uint8Array|null} [newPhoto] PhotoChange newPhoto - * @property {number|null} [newPhotoId] PhotoChange newPhotoId + * @interface IPoint + * @property {number|null} [xDeprecated] Point xDeprecated + * @property {number|null} [yDeprecated] Point yDeprecated + * @property {number|null} [x] Point x + * @property {number|null} [y] Point y */ /** - * Constructs a new PhotoChange. + * Constructs a new Point. * @memberof proto - * @classdesc Represents a PhotoChange. - * @implements IPhotoChange + * @classdesc Represents a Point. + * @implements IPoint * @constructor - * @param {proto.IPhotoChange=} [properties] Properties to set + * @param {proto.IPoint=} [properties] Properties to set */ - function PhotoChange(properties) { + function Point(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -53014,101 +58434,114 @@ $root.proto = (function() { } /** - * PhotoChange oldPhoto. - * @member {Uint8Array} oldPhoto - * @memberof proto.PhotoChange + * Point xDeprecated. + * @member {number} xDeprecated + * @memberof proto.Point * @instance */ - PhotoChange.prototype.oldPhoto = $util.newBuffer([]); + Point.prototype.xDeprecated = 0; /** - * PhotoChange newPhoto. - * @member {Uint8Array} newPhoto - * @memberof proto.PhotoChange + * Point yDeprecated. + * @member {number} yDeprecated + * @memberof proto.Point * @instance */ - PhotoChange.prototype.newPhoto = $util.newBuffer([]); + Point.prototype.yDeprecated = 0; /** - * PhotoChange newPhotoId. - * @member {number} newPhotoId - * @memberof proto.PhotoChange + * Point x. + * @member {number} x + * @memberof proto.Point * @instance */ - PhotoChange.prototype.newPhotoId = 0; + Point.prototype.x = 0; /** - * Creates a new PhotoChange instance using the specified properties. + * Point y. + * @member {number} y + * @memberof proto.Point + * @instance + */ + Point.prototype.y = 0; + + /** + * Creates a new Point instance using the specified properties. * @function create - * @memberof proto.PhotoChange + * @memberof proto.Point * @static - * @param {proto.IPhotoChange=} [properties] Properties to set - * @returns {proto.PhotoChange} PhotoChange instance + * @param {proto.IPoint=} [properties] Properties to set + * @returns {proto.Point} Point instance */ - PhotoChange.create = function create(properties) { - return new PhotoChange(properties); + Point.create = function create(properties) { + return new Point(properties); }; /** - * Encodes the specified PhotoChange message. Does not implicitly {@link proto.PhotoChange.verify|verify} messages. + * Encodes the specified Point message. Does not implicitly {@link proto.Point.verify|verify} messages. * @function encode - * @memberof proto.PhotoChange + * @memberof proto.Point * @static - * @param {proto.IPhotoChange} message PhotoChange message or plain object to encode + * @param {proto.IPoint} message Point message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PhotoChange.encode = function encode(message, writer) { + Point.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.oldPhoto != null && Object.hasOwnProperty.call(message, "oldPhoto")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.oldPhoto); - if (message.newPhoto != null && Object.hasOwnProperty.call(message, "newPhoto")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.newPhoto); - if (message.newPhotoId != null && Object.hasOwnProperty.call(message, "newPhotoId")) - writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.newPhotoId); + if (message.xDeprecated != null && Object.hasOwnProperty.call(message, "xDeprecated")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.xDeprecated); + if (message.yDeprecated != null && Object.hasOwnProperty.call(message, "yDeprecated")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.yDeprecated); + if (message.x != null && Object.hasOwnProperty.call(message, "x")) + writer.uint32(/* id 3, wireType 1 =*/25).double(message.x); + if (message.y != null && Object.hasOwnProperty.call(message, "y")) + writer.uint32(/* id 4, wireType 1 =*/33).double(message.y); return writer; }; /** - * Encodes the specified PhotoChange message, length delimited. Does not implicitly {@link proto.PhotoChange.verify|verify} messages. + * Encodes the specified Point message, length delimited. Does not implicitly {@link proto.Point.verify|verify} messages. * @function encodeDelimited - * @memberof proto.PhotoChange + * @memberof proto.Point * @static - * @param {proto.IPhotoChange} message PhotoChange message or plain object to encode + * @param {proto.IPoint} message Point message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PhotoChange.encodeDelimited = function encodeDelimited(message, writer) { + Point.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a PhotoChange message from the specified reader or buffer. + * Decodes a Point message from the specified reader or buffer. * @function decode - * @memberof proto.PhotoChange + * @memberof proto.Point * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {proto.PhotoChange} PhotoChange + * @returns {proto.Point} Point * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PhotoChange.decode = function decode(reader, length) { + Point.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.PhotoChange(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.Point(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.oldPhoto = reader.bytes(); + message.xDeprecated = reader.int32(); break; case 2: - message.newPhoto = reader.bytes(); + message.yDeprecated = reader.int32(); break; case 3: - message.newPhotoId = reader.uint32(); + message.x = reader.double(); + break; + case 4: + message.y = reader.double(); break; default: reader.skipType(tag & 7); @@ -53119,352 +58552,88 @@ $root.proto = (function() { }; /** - * Decodes a PhotoChange message from the specified reader or buffer, length delimited. + * Decodes a Point message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof proto.PhotoChange + * @memberof proto.Point * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {proto.PhotoChange} PhotoChange + * @returns {proto.Point} Point * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PhotoChange.decodeDelimited = function decodeDelimited(reader) { + Point.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a PhotoChange message. + * Verifies a Point message. * @function verify - * @memberof proto.PhotoChange + * @memberof proto.Point * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - PhotoChange.verify = function verify(message) { + Point.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.oldPhoto != null && message.hasOwnProperty("oldPhoto")) - if (!(message.oldPhoto && typeof message.oldPhoto.length === "number" || $util.isString(message.oldPhoto))) - return "oldPhoto: buffer expected"; - if (message.newPhoto != null && message.hasOwnProperty("newPhoto")) - if (!(message.newPhoto && typeof message.newPhoto.length === "number" || $util.isString(message.newPhoto))) - return "newPhoto: buffer expected"; - if (message.newPhotoId != null && message.hasOwnProperty("newPhotoId")) - if (!$util.isInteger(message.newPhotoId)) - return "newPhotoId: integer expected"; + if (message.xDeprecated != null && message.hasOwnProperty("xDeprecated")) + if (!$util.isInteger(message.xDeprecated)) + return "xDeprecated: integer expected"; + if (message.yDeprecated != null && message.hasOwnProperty("yDeprecated")) + if (!$util.isInteger(message.yDeprecated)) + return "yDeprecated: integer expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (typeof message.x !== "number") + return "x: number expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (typeof message.y !== "number") + return "y: number expected"; return null; }; /** - * Creates a PhotoChange message from a plain object. Also converts values to their respective internal types. + * Creates a Point message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof proto.PhotoChange + * @memberof proto.Point * @static * @param {Object.} object Plain object - * @returns {proto.PhotoChange} PhotoChange + * @returns {proto.Point} Point */ - PhotoChange.fromObject = function fromObject(object) { - if (object instanceof $root.proto.PhotoChange) + Point.fromObject = function fromObject(object) { + if (object instanceof $root.proto.Point) return object; - var message = new $root.proto.PhotoChange(); - if (object.oldPhoto != null) - if (typeof object.oldPhoto === "string") - $util.base64.decode(object.oldPhoto, message.oldPhoto = $util.newBuffer($util.base64.length(object.oldPhoto)), 0); - else if (object.oldPhoto.length) - message.oldPhoto = object.oldPhoto; - if (object.newPhoto != null) - if (typeof object.newPhoto === "string") - $util.base64.decode(object.newPhoto, message.newPhoto = $util.newBuffer($util.base64.length(object.newPhoto)), 0); - else if (object.newPhoto.length) - message.newPhoto = object.newPhoto; - if (object.newPhotoId != null) - message.newPhotoId = object.newPhotoId >>> 0; + var message = new $root.proto.Point(); + if (object.xDeprecated != null) + message.xDeprecated = object.xDeprecated | 0; + if (object.yDeprecated != null) + message.yDeprecated = object.yDeprecated | 0; + if (object.x != null) + message.x = Number(object.x); + if (object.y != null) + message.y = Number(object.y); return message; }; /** - * Creates a plain object from a PhotoChange message. Also converts values to other types if specified. + * Creates a plain object from a Point message. Also converts values to other types if specified. * @function toObject - * @memberof proto.PhotoChange + * @memberof proto.Point * @static - * @param {proto.PhotoChange} message PhotoChange + * @param {proto.Point} message Point * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PhotoChange.toObject = function toObject(message, options) { + Point.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { - if (options.bytes === String) - object.oldPhoto = ""; - else { - object.oldPhoto = []; - if (options.bytes !== Array) - object.oldPhoto = $util.newBuffer(object.oldPhoto); - } - if (options.bytes === String) - object.newPhoto = ""; - else { - object.newPhoto = []; - if (options.bytes !== Array) - object.newPhoto = $util.newBuffer(object.newPhoto); - } - object.newPhotoId = 0; - } - if (message.oldPhoto != null && message.hasOwnProperty("oldPhoto")) - object.oldPhoto = options.bytes === String ? $util.base64.encode(message.oldPhoto, 0, message.oldPhoto.length) : options.bytes === Array ? Array.prototype.slice.call(message.oldPhoto) : message.oldPhoto; - if (message.newPhoto != null && message.hasOwnProperty("newPhoto")) - object.newPhoto = options.bytes === String ? $util.base64.encode(message.newPhoto, 0, message.newPhoto.length) : options.bytes === Array ? Array.prototype.slice.call(message.newPhoto) : message.newPhoto; - if (message.newPhotoId != null && message.hasOwnProperty("newPhotoId")) - object.newPhotoId = message.newPhotoId; - return object; - }; - - /** - * Converts this PhotoChange to JSON. - * @function toJSON - * @memberof proto.PhotoChange - * @instance - * @returns {Object.} JSON object - */ - PhotoChange.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return PhotoChange; - })(); - - proto.Point = (function() { - - /** - * Properties of a Point. - * @memberof proto - * @interface IPoint - * @property {number|null} [xDeprecated] Point xDeprecated - * @property {number|null} [yDeprecated] Point yDeprecated - * @property {number|null} [x] Point x - * @property {number|null} [y] Point y - */ - - /** - * Constructs a new Point. - * @memberof proto - * @classdesc Represents a Point. - * @implements IPoint - * @constructor - * @param {proto.IPoint=} [properties] Properties to set - */ - function Point(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Point xDeprecated. - * @member {number} xDeprecated - * @memberof proto.Point - * @instance - */ - Point.prototype.xDeprecated = 0; - - /** - * Point yDeprecated. - * @member {number} yDeprecated - * @memberof proto.Point - * @instance - */ - Point.prototype.yDeprecated = 0; - - /** - * Point x. - * @member {number} x - * @memberof proto.Point - * @instance - */ - Point.prototype.x = 0; - - /** - * Point y. - * @member {number} y - * @memberof proto.Point - * @instance - */ - Point.prototype.y = 0; - - /** - * Creates a new Point instance using the specified properties. - * @function create - * @memberof proto.Point - * @static - * @param {proto.IPoint=} [properties] Properties to set - * @returns {proto.Point} Point instance - */ - Point.create = function create(properties) { - return new Point(properties); - }; - - /** - * Encodes the specified Point message. Does not implicitly {@link proto.Point.verify|verify} messages. - * @function encode - * @memberof proto.Point - * @static - * @param {proto.IPoint} message Point message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Point.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.xDeprecated != null && Object.hasOwnProperty.call(message, "xDeprecated")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.xDeprecated); - if (message.yDeprecated != null && Object.hasOwnProperty.call(message, "yDeprecated")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.yDeprecated); - if (message.x != null && Object.hasOwnProperty.call(message, "x")) - writer.uint32(/* id 3, wireType 1 =*/25).double(message.x); - if (message.y != null && Object.hasOwnProperty.call(message, "y")) - writer.uint32(/* id 4, wireType 1 =*/33).double(message.y); - return writer; - }; - - /** - * Encodes the specified Point message, length delimited. Does not implicitly {@link proto.Point.verify|verify} messages. - * @function encodeDelimited - * @memberof proto.Point - * @static - * @param {proto.IPoint} message Point message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Point.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a Point message from the specified reader or buffer. - * @function decode - * @memberof proto.Point - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {proto.Point} Point - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Point.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.Point(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.xDeprecated = reader.int32(); - break; - case 2: - message.yDeprecated = reader.int32(); - break; - case 3: - message.x = reader.double(); - break; - case 4: - message.y = reader.double(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a Point message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof proto.Point - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {proto.Point} Point - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Point.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a Point message. - * @function verify - * @memberof proto.Point - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - Point.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.xDeprecated != null && message.hasOwnProperty("xDeprecated")) - if (!$util.isInteger(message.xDeprecated)) - return "xDeprecated: integer expected"; - if (message.yDeprecated != null && message.hasOwnProperty("yDeprecated")) - if (!$util.isInteger(message.yDeprecated)) - return "yDeprecated: integer expected"; - if (message.x != null && message.hasOwnProperty("x")) - if (typeof message.x !== "number") - return "x: number expected"; - if (message.y != null && message.hasOwnProperty("y")) - if (typeof message.y !== "number") - return "y: number expected"; - return null; - }; - - /** - * Creates a Point message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof proto.Point - * @static - * @param {Object.} object Plain object - * @returns {proto.Point} Point - */ - Point.fromObject = function fromObject(object) { - if (object instanceof $root.proto.Point) - return object; - var message = new $root.proto.Point(); - if (object.xDeprecated != null) - message.xDeprecated = object.xDeprecated | 0; - if (object.yDeprecated != null) - message.yDeprecated = object.yDeprecated | 0; - if (object.x != null) - message.x = Number(object.x); - if (object.y != null) - message.y = Number(object.y); - return message; - }; - - /** - * Creates a plain object from a Point message. Also converts values to other types if specified. - * @function toObject - * @memberof proto.Point - * @static - * @param {proto.Point} message Point - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - Point.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.xDeprecated = 0; - object.yDeprecated = 0; - object.x = 0; - object.y = 0; + object.xDeprecated = 0; + object.yDeprecated = 0; + object.x = 0; + object.y = 0; } if (message.xDeprecated != null && message.hasOwnProperty("xDeprecated")) object.xDeprecated = message.xDeprecated; @@ -53915,6 +59084,8 @@ $root.proto = (function() { * @property {proto.IMessageKey|null} [pollUpdateMessageKey] PollUpdate pollUpdateMessageKey * @property {proto.Message.IPollVoteMessage|null} [vote] PollUpdate vote * @property {number|Long|null} [senderTimestampMs] PollUpdate senderTimestampMs + * @property {number|Long|null} [serverTimestampMs] PollUpdate serverTimestampMs + * @property {boolean|null} [unread] PollUpdate unread */ /** @@ -53956,6 +59127,22 @@ $root.proto = (function() { */ PollUpdate.prototype.senderTimestampMs = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + /** + * PollUpdate serverTimestampMs. + * @member {number|Long} serverTimestampMs + * @memberof proto.PollUpdate + * @instance + */ + PollUpdate.prototype.serverTimestampMs = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * PollUpdate unread. + * @member {boolean} unread + * @memberof proto.PollUpdate + * @instance + */ + PollUpdate.prototype.unread = false; + /** * Creates a new PollUpdate instance using the specified properties. * @function create @@ -53986,6 +59173,10 @@ $root.proto = (function() { $root.proto.Message.PollVoteMessage.encode(message.vote, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.senderTimestampMs != null && Object.hasOwnProperty.call(message, "senderTimestampMs")) writer.uint32(/* id 3, wireType 0 =*/24).int64(message.senderTimestampMs); + if (message.serverTimestampMs != null && Object.hasOwnProperty.call(message, "serverTimestampMs")) + writer.uint32(/* id 4, wireType 0 =*/32).int64(message.serverTimestampMs); + if (message.unread != null && Object.hasOwnProperty.call(message, "unread")) + writer.uint32(/* id 5, wireType 0 =*/40).bool(message.unread); return writer; }; @@ -54029,6 +59220,12 @@ $root.proto = (function() { case 3: message.senderTimestampMs = reader.int64(); break; + case 4: + message.serverTimestampMs = reader.int64(); + break; + case 5: + message.unread = reader.bool(); + break; default: reader.skipType(tag & 7); break; @@ -54077,6 +59274,12 @@ $root.proto = (function() { if (message.senderTimestampMs != null && message.hasOwnProperty("senderTimestampMs")) if (!$util.isInteger(message.senderTimestampMs) && !(message.senderTimestampMs && $util.isInteger(message.senderTimestampMs.low) && $util.isInteger(message.senderTimestampMs.high))) return "senderTimestampMs: integer|Long expected"; + if (message.serverTimestampMs != null && message.hasOwnProperty("serverTimestampMs")) + if (!$util.isInteger(message.serverTimestampMs) && !(message.serverTimestampMs && $util.isInteger(message.serverTimestampMs.low) && $util.isInteger(message.serverTimestampMs.high))) + return "serverTimestampMs: integer|Long expected"; + if (message.unread != null && message.hasOwnProperty("unread")) + if (typeof message.unread !== "boolean") + return "unread: boolean expected"; return null; }; @@ -54111,6 +59314,17 @@ $root.proto = (function() { message.senderTimestampMs = object.senderTimestampMs; else if (typeof object.senderTimestampMs === "object") message.senderTimestampMs = new $util.LongBits(object.senderTimestampMs.low >>> 0, object.senderTimestampMs.high >>> 0).toNumber(); + if (object.serverTimestampMs != null) + if ($util.Long) + (message.serverTimestampMs = $util.Long.fromValue(object.serverTimestampMs)).unsigned = false; + else if (typeof object.serverTimestampMs === "string") + message.serverTimestampMs = parseInt(object.serverTimestampMs, 10); + else if (typeof object.serverTimestampMs === "number") + message.serverTimestampMs = object.serverTimestampMs; + else if (typeof object.serverTimestampMs === "object") + message.serverTimestampMs = new $util.LongBits(object.serverTimestampMs.low >>> 0, object.serverTimestampMs.high >>> 0).toNumber(); + if (object.unread != null) + message.unread = Boolean(object.unread); return message; }; @@ -54135,6 +59349,12 @@ $root.proto = (function() { object.senderTimestampMs = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; } else object.senderTimestampMs = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.serverTimestampMs = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.serverTimestampMs = options.longs === String ? "0" : 0; + object.unread = false; } if (message.pollUpdateMessageKey != null && message.hasOwnProperty("pollUpdateMessageKey")) object.pollUpdateMessageKey = $root.proto.MessageKey.toObject(message.pollUpdateMessageKey, options); @@ -54145,6 +59365,13 @@ $root.proto = (function() { object.senderTimestampMs = options.longs === String ? String(message.senderTimestampMs) : message.senderTimestampMs; else object.senderTimestampMs = options.longs === String ? $util.Long.prototype.toString.call(message.senderTimestampMs) : options.longs === Number ? new $util.LongBits(message.senderTimestampMs.low >>> 0, message.senderTimestampMs.high >>> 0).toNumber() : message.senderTimestampMs; + if (message.serverTimestampMs != null && message.hasOwnProperty("serverTimestampMs")) + if (typeof message.serverTimestampMs === "number") + object.serverTimestampMs = options.longs === String ? String(message.serverTimestampMs) : message.serverTimestampMs; + else + object.serverTimestampMs = options.longs === String ? $util.Long.prototype.toString.call(message.serverTimestampMs) : options.longs === Number ? new $util.LongBits(message.serverTimestampMs.low >>> 0, message.serverTimestampMs.high >>> 0).toNumber() : message.serverTimestampMs; + if (message.unread != null && message.hasOwnProperty("unread")) + object.unread = message.unread; return object; }; @@ -54412,6 +59639,331 @@ $root.proto = (function() { return PreKeyRecordStructure; })(); + proto.PreKeySignalMessage = (function() { + + /** + * Properties of a PreKeySignalMessage. + * @memberof proto + * @interface IPreKeySignalMessage + * @property {number|null} [registrationId] PreKeySignalMessage registrationId + * @property {number|null} [preKeyId] PreKeySignalMessage preKeyId + * @property {number|null} [signedPreKeyId] PreKeySignalMessage signedPreKeyId + * @property {Uint8Array|null} [baseKey] PreKeySignalMessage baseKey + * @property {Uint8Array|null} [identityKey] PreKeySignalMessage identityKey + * @property {Uint8Array|null} [message] PreKeySignalMessage message + */ + + /** + * Constructs a new PreKeySignalMessage. + * @memberof proto + * @classdesc Represents a PreKeySignalMessage. + * @implements IPreKeySignalMessage + * @constructor + * @param {proto.IPreKeySignalMessage=} [properties] Properties to set + */ + function PreKeySignalMessage(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PreKeySignalMessage registrationId. + * @member {number} registrationId + * @memberof proto.PreKeySignalMessage + * @instance + */ + PreKeySignalMessage.prototype.registrationId = 0; + + /** + * PreKeySignalMessage preKeyId. + * @member {number} preKeyId + * @memberof proto.PreKeySignalMessage + * @instance + */ + PreKeySignalMessage.prototype.preKeyId = 0; + + /** + * PreKeySignalMessage signedPreKeyId. + * @member {number} signedPreKeyId + * @memberof proto.PreKeySignalMessage + * @instance + */ + PreKeySignalMessage.prototype.signedPreKeyId = 0; + + /** + * PreKeySignalMessage baseKey. + * @member {Uint8Array} baseKey + * @memberof proto.PreKeySignalMessage + * @instance + */ + PreKeySignalMessage.prototype.baseKey = $util.newBuffer([]); + + /** + * PreKeySignalMessage identityKey. + * @member {Uint8Array} identityKey + * @memberof proto.PreKeySignalMessage + * @instance + */ + PreKeySignalMessage.prototype.identityKey = $util.newBuffer([]); + + /** + * PreKeySignalMessage message. + * @member {Uint8Array} message + * @memberof proto.PreKeySignalMessage + * @instance + */ + PreKeySignalMessage.prototype.message = $util.newBuffer([]); + + /** + * Creates a new PreKeySignalMessage instance using the specified properties. + * @function create + * @memberof proto.PreKeySignalMessage + * @static + * @param {proto.IPreKeySignalMessage=} [properties] Properties to set + * @returns {proto.PreKeySignalMessage} PreKeySignalMessage instance + */ + PreKeySignalMessage.create = function create(properties) { + return new PreKeySignalMessage(properties); + }; + + /** + * Encodes the specified PreKeySignalMessage message. Does not implicitly {@link proto.PreKeySignalMessage.verify|verify} messages. + * @function encode + * @memberof proto.PreKeySignalMessage + * @static + * @param {proto.IPreKeySignalMessage} message PreKeySignalMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PreKeySignalMessage.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.preKeyId != null && Object.hasOwnProperty.call(message, "preKeyId")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.preKeyId); + if (message.baseKey != null && Object.hasOwnProperty.call(message, "baseKey")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.baseKey); + if (message.identityKey != null && Object.hasOwnProperty.call(message, "identityKey")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.identityKey); + if (message.message != null && Object.hasOwnProperty.call(message, "message")) + writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.message); + if (message.registrationId != null && Object.hasOwnProperty.call(message, "registrationId")) + writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.registrationId); + if (message.signedPreKeyId != null && Object.hasOwnProperty.call(message, "signedPreKeyId")) + writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.signedPreKeyId); + return writer; + }; + + /** + * Encodes the specified PreKeySignalMessage message, length delimited. Does not implicitly {@link proto.PreKeySignalMessage.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.PreKeySignalMessage + * @static + * @param {proto.IPreKeySignalMessage} message PreKeySignalMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PreKeySignalMessage.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PreKeySignalMessage message from the specified reader or buffer. + * @function decode + * @memberof proto.PreKeySignalMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.PreKeySignalMessage} PreKeySignalMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PreKeySignalMessage.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.PreKeySignalMessage(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 5: + message.registrationId = reader.uint32(); + break; + case 1: + message.preKeyId = reader.uint32(); + break; + case 6: + message.signedPreKeyId = reader.uint32(); + break; + case 2: + message.baseKey = reader.bytes(); + break; + case 3: + message.identityKey = reader.bytes(); + break; + case 4: + message.message = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PreKeySignalMessage message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.PreKeySignalMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.PreKeySignalMessage} PreKeySignalMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PreKeySignalMessage.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PreKeySignalMessage message. + * @function verify + * @memberof proto.PreKeySignalMessage + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PreKeySignalMessage.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.registrationId != null && message.hasOwnProperty("registrationId")) + if (!$util.isInteger(message.registrationId)) + return "registrationId: integer expected"; + if (message.preKeyId != null && message.hasOwnProperty("preKeyId")) + if (!$util.isInteger(message.preKeyId)) + return "preKeyId: integer expected"; + if (message.signedPreKeyId != null && message.hasOwnProperty("signedPreKeyId")) + if (!$util.isInteger(message.signedPreKeyId)) + return "signedPreKeyId: integer expected"; + if (message.baseKey != null && message.hasOwnProperty("baseKey")) + if (!(message.baseKey && typeof message.baseKey.length === "number" || $util.isString(message.baseKey))) + return "baseKey: buffer expected"; + if (message.identityKey != null && message.hasOwnProperty("identityKey")) + if (!(message.identityKey && typeof message.identityKey.length === "number" || $util.isString(message.identityKey))) + return "identityKey: buffer expected"; + if (message.message != null && message.hasOwnProperty("message")) + if (!(message.message && typeof message.message.length === "number" || $util.isString(message.message))) + return "message: buffer expected"; + return null; + }; + + /** + * Creates a PreKeySignalMessage message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.PreKeySignalMessage + * @static + * @param {Object.} object Plain object + * @returns {proto.PreKeySignalMessage} PreKeySignalMessage + */ + PreKeySignalMessage.fromObject = function fromObject(object) { + if (object instanceof $root.proto.PreKeySignalMessage) + return object; + var message = new $root.proto.PreKeySignalMessage(); + if (object.registrationId != null) + message.registrationId = object.registrationId >>> 0; + if (object.preKeyId != null) + message.preKeyId = object.preKeyId >>> 0; + if (object.signedPreKeyId != null) + message.signedPreKeyId = object.signedPreKeyId >>> 0; + if (object.baseKey != null) + if (typeof object.baseKey === "string") + $util.base64.decode(object.baseKey, message.baseKey = $util.newBuffer($util.base64.length(object.baseKey)), 0); + else if (object.baseKey.length) + message.baseKey = object.baseKey; + if (object.identityKey != null) + if (typeof object.identityKey === "string") + $util.base64.decode(object.identityKey, message.identityKey = $util.newBuffer($util.base64.length(object.identityKey)), 0); + else if (object.identityKey.length) + message.identityKey = object.identityKey; + if (object.message != null) + if (typeof object.message === "string") + $util.base64.decode(object.message, message.message = $util.newBuffer($util.base64.length(object.message)), 0); + else if (object.message.length) + message.message = object.message; + return message; + }; + + /** + * Creates a plain object from a PreKeySignalMessage message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.PreKeySignalMessage + * @static + * @param {proto.PreKeySignalMessage} message PreKeySignalMessage + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PreKeySignalMessage.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.preKeyId = 0; + if (options.bytes === String) + object.baseKey = ""; + else { + object.baseKey = []; + if (options.bytes !== Array) + object.baseKey = $util.newBuffer(object.baseKey); + } + if (options.bytes === String) + object.identityKey = ""; + else { + object.identityKey = []; + if (options.bytes !== Array) + object.identityKey = $util.newBuffer(object.identityKey); + } + if (options.bytes === String) + object.message = ""; + else { + object.message = []; + if (options.bytes !== Array) + object.message = $util.newBuffer(object.message); + } + object.registrationId = 0; + object.signedPreKeyId = 0; + } + if (message.preKeyId != null && message.hasOwnProperty("preKeyId")) + object.preKeyId = message.preKeyId; + if (message.baseKey != null && message.hasOwnProperty("baseKey")) + object.baseKey = options.bytes === String ? $util.base64.encode(message.baseKey, 0, message.baseKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.baseKey) : message.baseKey; + if (message.identityKey != null && message.hasOwnProperty("identityKey")) + object.identityKey = options.bytes === String ? $util.base64.encode(message.identityKey, 0, message.identityKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.identityKey) : message.identityKey; + if (message.message != null && message.hasOwnProperty("message")) + object.message = options.bytes === String ? $util.base64.encode(message.message, 0, message.message.length) : options.bytes === Array ? Array.prototype.slice.call(message.message) : message.message; + if (message.registrationId != null && message.hasOwnProperty("registrationId")) + object.registrationId = message.registrationId; + if (message.signedPreKeyId != null && message.hasOwnProperty("signedPreKeyId")) + object.signedPreKeyId = message.signedPreKeyId; + return object; + }; + + /** + * Converts this PreKeySignalMessage to JSON. + * @function toJSON + * @memberof proto.PreKeySignalMessage + * @instance + * @returns {Object.} JSON object + */ + PreKeySignalMessage.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PreKeySignalMessage; + })(); + proto.Pushname = (function() { /** @@ -55363,25 +60915,27 @@ $root.proto = (function() { return RecordStructure; })(); - proto.SenderChainKey = (function() { + proto.SenderKeyDistributionMessage = (function() { /** - * Properties of a SenderChainKey. + * Properties of a SenderKeyDistributionMessage. * @memberof proto - * @interface ISenderChainKey - * @property {number|null} [iteration] SenderChainKey iteration - * @property {Uint8Array|null} [seed] SenderChainKey seed + * @interface ISenderKeyDistributionMessage + * @property {number|null} [id] SenderKeyDistributionMessage id + * @property {number|null} [iteration] SenderKeyDistributionMessage iteration + * @property {Uint8Array|null} [chainKey] SenderKeyDistributionMessage chainKey + * @property {Uint8Array|null} [signingKey] SenderKeyDistributionMessage signingKey */ /** - * Constructs a new SenderChainKey. + * Constructs a new SenderKeyDistributionMessage. * @memberof proto - * @classdesc Represents a SenderChainKey. - * @implements ISenderChainKey + * @classdesc Represents a SenderKeyDistributionMessage. + * @implements ISenderKeyDistributionMessage * @constructor - * @param {proto.ISenderChainKey=} [properties] Properties to set + * @param {proto.ISenderKeyDistributionMessage=} [properties] Properties to set */ - function SenderChainKey(properties) { + function SenderKeyDistributionMessage(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -55389,88 +60943,372 @@ $root.proto = (function() { } /** - * SenderChainKey iteration. + * SenderKeyDistributionMessage id. + * @member {number} id + * @memberof proto.SenderKeyDistributionMessage + * @instance + */ + SenderKeyDistributionMessage.prototype.id = 0; + + /** + * SenderKeyDistributionMessage iteration. * @member {number} iteration - * @memberof proto.SenderChainKey + * @memberof proto.SenderKeyDistributionMessage + * @instance + */ + SenderKeyDistributionMessage.prototype.iteration = 0; + + /** + * SenderKeyDistributionMessage chainKey. + * @member {Uint8Array} chainKey + * @memberof proto.SenderKeyDistributionMessage * @instance */ - SenderChainKey.prototype.iteration = 0; + SenderKeyDistributionMessage.prototype.chainKey = $util.newBuffer([]); /** - * SenderChainKey seed. - * @member {Uint8Array} seed - * @memberof proto.SenderChainKey + * SenderKeyDistributionMessage signingKey. + * @member {Uint8Array} signingKey + * @memberof proto.SenderKeyDistributionMessage * @instance */ - SenderChainKey.prototype.seed = $util.newBuffer([]); + SenderKeyDistributionMessage.prototype.signingKey = $util.newBuffer([]); /** - * Creates a new SenderChainKey instance using the specified properties. + * Creates a new SenderKeyDistributionMessage instance using the specified properties. * @function create - * @memberof proto.SenderChainKey + * @memberof proto.SenderKeyDistributionMessage * @static - * @param {proto.ISenderChainKey=} [properties] Properties to set - * @returns {proto.SenderChainKey} SenderChainKey instance + * @param {proto.ISenderKeyDistributionMessage=} [properties] Properties to set + * @returns {proto.SenderKeyDistributionMessage} SenderKeyDistributionMessage instance */ - SenderChainKey.create = function create(properties) { - return new SenderChainKey(properties); + SenderKeyDistributionMessage.create = function create(properties) { + return new SenderKeyDistributionMessage(properties); }; /** - * Encodes the specified SenderChainKey message. Does not implicitly {@link proto.SenderChainKey.verify|verify} messages. + * Encodes the specified SenderKeyDistributionMessage message. Does not implicitly {@link proto.SenderKeyDistributionMessage.verify|verify} messages. * @function encode - * @memberof proto.SenderChainKey + * @memberof proto.SenderKeyDistributionMessage * @static - * @param {proto.ISenderChainKey} message SenderChainKey message or plain object to encode + * @param {proto.ISenderKeyDistributionMessage} message SenderKeyDistributionMessage message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SenderChainKey.encode = function encode(message, writer) { + SenderKeyDistributionMessage.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id); if (message.iteration != null && Object.hasOwnProperty.call(message, "iteration")) - writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.iteration); - if (message.seed != null && Object.hasOwnProperty.call(message, "seed")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.seed); + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.iteration); + if (message.chainKey != null && Object.hasOwnProperty.call(message, "chainKey")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.chainKey); + if (message.signingKey != null && Object.hasOwnProperty.call(message, "signingKey")) + writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.signingKey); return writer; }; /** - * Encodes the specified SenderChainKey message, length delimited. Does not implicitly {@link proto.SenderChainKey.verify|verify} messages. + * Encodes the specified SenderKeyDistributionMessage message, length delimited. Does not implicitly {@link proto.SenderKeyDistributionMessage.verify|verify} messages. * @function encodeDelimited - * @memberof proto.SenderChainKey + * @memberof proto.SenderKeyDistributionMessage * @static - * @param {proto.ISenderChainKey} message SenderChainKey message or plain object to encode + * @param {proto.ISenderKeyDistributionMessage} message SenderKeyDistributionMessage message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SenderChainKey.encodeDelimited = function encodeDelimited(message, writer) { + SenderKeyDistributionMessage.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a SenderChainKey message from the specified reader or buffer. + * Decodes a SenderKeyDistributionMessage message from the specified reader or buffer. * @function decode - * @memberof proto.SenderChainKey + * @memberof proto.SenderKeyDistributionMessage * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {proto.SenderChainKey} SenderChainKey + * @returns {proto.SenderKeyDistributionMessage} SenderKeyDistributionMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SenderChainKey.decode = function decode(reader, length) { + SenderKeyDistributionMessage.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SenderChainKey(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SenderKeyDistributionMessage(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: + message.id = reader.uint32(); + break; + case 2: message.iteration = reader.uint32(); break; + case 3: + message.chainKey = reader.bytes(); + break; + case 4: + message.signingKey = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SenderKeyDistributionMessage message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.SenderKeyDistributionMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.SenderKeyDistributionMessage} SenderKeyDistributionMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SenderKeyDistributionMessage.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SenderKeyDistributionMessage message. + * @function verify + * @memberof proto.SenderKeyDistributionMessage + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SenderKeyDistributionMessage.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.iteration != null && message.hasOwnProperty("iteration")) + if (!$util.isInteger(message.iteration)) + return "iteration: integer expected"; + if (message.chainKey != null && message.hasOwnProperty("chainKey")) + if (!(message.chainKey && typeof message.chainKey.length === "number" || $util.isString(message.chainKey))) + return "chainKey: buffer expected"; + if (message.signingKey != null && message.hasOwnProperty("signingKey")) + if (!(message.signingKey && typeof message.signingKey.length === "number" || $util.isString(message.signingKey))) + return "signingKey: buffer expected"; + return null; + }; + + /** + * Creates a SenderKeyDistributionMessage message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.SenderKeyDistributionMessage + * @static + * @param {Object.} object Plain object + * @returns {proto.SenderKeyDistributionMessage} SenderKeyDistributionMessage + */ + SenderKeyDistributionMessage.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SenderKeyDistributionMessage) + return object; + var message = new $root.proto.SenderKeyDistributionMessage(); + if (object.id != null) + message.id = object.id >>> 0; + if (object.iteration != null) + message.iteration = object.iteration >>> 0; + if (object.chainKey != null) + if (typeof object.chainKey === "string") + $util.base64.decode(object.chainKey, message.chainKey = $util.newBuffer($util.base64.length(object.chainKey)), 0); + else if (object.chainKey.length) + message.chainKey = object.chainKey; + if (object.signingKey != null) + if (typeof object.signingKey === "string") + $util.base64.decode(object.signingKey, message.signingKey = $util.newBuffer($util.base64.length(object.signingKey)), 0); + else if (object.signingKey.length) + message.signingKey = object.signingKey; + return message; + }; + + /** + * Creates a plain object from a SenderKeyDistributionMessage message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.SenderKeyDistributionMessage + * @static + * @param {proto.SenderKeyDistributionMessage} message SenderKeyDistributionMessage + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SenderKeyDistributionMessage.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.id = 0; + object.iteration = 0; + if (options.bytes === String) + object.chainKey = ""; + else { + object.chainKey = []; + if (options.bytes !== Array) + object.chainKey = $util.newBuffer(object.chainKey); + } + if (options.bytes === String) + object.signingKey = ""; + else { + object.signingKey = []; + if (options.bytes !== Array) + object.signingKey = $util.newBuffer(object.signingKey); + } + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.iteration != null && message.hasOwnProperty("iteration")) + object.iteration = message.iteration; + if (message.chainKey != null && message.hasOwnProperty("chainKey")) + object.chainKey = options.bytes === String ? $util.base64.encode(message.chainKey, 0, message.chainKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.chainKey) : message.chainKey; + if (message.signingKey != null && message.hasOwnProperty("signingKey")) + object.signingKey = options.bytes === String ? $util.base64.encode(message.signingKey, 0, message.signingKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.signingKey) : message.signingKey; + return object; + }; + + /** + * Converts this SenderKeyDistributionMessage to JSON. + * @function toJSON + * @memberof proto.SenderKeyDistributionMessage + * @instance + * @returns {Object.} JSON object + */ + SenderKeyDistributionMessage.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return SenderKeyDistributionMessage; + })(); + + proto.SenderKeyMessage = (function() { + + /** + * Properties of a SenderKeyMessage. + * @memberof proto + * @interface ISenderKeyMessage + * @property {number|null} [id] SenderKeyMessage id + * @property {number|null} [iteration] SenderKeyMessage iteration + * @property {Uint8Array|null} [ciphertext] SenderKeyMessage ciphertext + */ + + /** + * Constructs a new SenderKeyMessage. + * @memberof proto + * @classdesc Represents a SenderKeyMessage. + * @implements ISenderKeyMessage + * @constructor + * @param {proto.ISenderKeyMessage=} [properties] Properties to set + */ + function SenderKeyMessage(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SenderKeyMessage id. + * @member {number} id + * @memberof proto.SenderKeyMessage + * @instance + */ + SenderKeyMessage.prototype.id = 0; + + /** + * SenderKeyMessage iteration. + * @member {number} iteration + * @memberof proto.SenderKeyMessage + * @instance + */ + SenderKeyMessage.prototype.iteration = 0; + + /** + * SenderKeyMessage ciphertext. + * @member {Uint8Array} ciphertext + * @memberof proto.SenderKeyMessage + * @instance + */ + SenderKeyMessage.prototype.ciphertext = $util.newBuffer([]); + + /** + * Creates a new SenderKeyMessage instance using the specified properties. + * @function create + * @memberof proto.SenderKeyMessage + * @static + * @param {proto.ISenderKeyMessage=} [properties] Properties to set + * @returns {proto.SenderKeyMessage} SenderKeyMessage instance + */ + SenderKeyMessage.create = function create(properties) { + return new SenderKeyMessage(properties); + }; + + /** + * Encodes the specified SenderKeyMessage message. Does not implicitly {@link proto.SenderKeyMessage.verify|verify} messages. + * @function encode + * @memberof proto.SenderKeyMessage + * @static + * @param {proto.ISenderKeyMessage} message SenderKeyMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SenderKeyMessage.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id); + if (message.iteration != null && Object.hasOwnProperty.call(message, "iteration")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.iteration); + if (message.ciphertext != null && Object.hasOwnProperty.call(message, "ciphertext")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.ciphertext); + return writer; + }; + + /** + * Encodes the specified SenderKeyMessage message, length delimited. Does not implicitly {@link proto.SenderKeyMessage.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.SenderKeyMessage + * @static + * @param {proto.ISenderKeyMessage} message SenderKeyMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SenderKeyMessage.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SenderKeyMessage message from the specified reader or buffer. + * @function decode + * @memberof proto.SenderKeyMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.SenderKeyMessage} SenderKeyMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SenderKeyMessage.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SenderKeyMessage(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = reader.uint32(); + break; case 2: - message.seed = reader.bytes(); + message.iteration = reader.uint32(); + break; + case 3: + message.ciphertext = reader.bytes(); break; default: reader.skipType(tag & 7); @@ -55481,105 +61319,113 @@ $root.proto = (function() { }; /** - * Decodes a SenderChainKey message from the specified reader or buffer, length delimited. + * Decodes a SenderKeyMessage message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof proto.SenderChainKey + * @memberof proto.SenderKeyMessage * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {proto.SenderChainKey} SenderChainKey + * @returns {proto.SenderKeyMessage} SenderKeyMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SenderChainKey.decodeDelimited = function decodeDelimited(reader) { + SenderKeyMessage.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a SenderChainKey message. + * Verifies a SenderKeyMessage message. * @function verify - * @memberof proto.SenderChainKey + * @memberof proto.SenderKeyMessage * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - SenderChainKey.verify = function verify(message) { + SenderKeyMessage.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; if (message.iteration != null && message.hasOwnProperty("iteration")) if (!$util.isInteger(message.iteration)) return "iteration: integer expected"; - if (message.seed != null && message.hasOwnProperty("seed")) - if (!(message.seed && typeof message.seed.length === "number" || $util.isString(message.seed))) - return "seed: buffer expected"; + if (message.ciphertext != null && message.hasOwnProperty("ciphertext")) + if (!(message.ciphertext && typeof message.ciphertext.length === "number" || $util.isString(message.ciphertext))) + return "ciphertext: buffer expected"; return null; }; /** - * Creates a SenderChainKey message from a plain object. Also converts values to their respective internal types. + * Creates a SenderKeyMessage message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof proto.SenderChainKey + * @memberof proto.SenderKeyMessage * @static * @param {Object.} object Plain object - * @returns {proto.SenderChainKey} SenderChainKey + * @returns {proto.SenderKeyMessage} SenderKeyMessage */ - SenderChainKey.fromObject = function fromObject(object) { - if (object instanceof $root.proto.SenderChainKey) + SenderKeyMessage.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SenderKeyMessage) return object; - var message = new $root.proto.SenderChainKey(); + var message = new $root.proto.SenderKeyMessage(); + if (object.id != null) + message.id = object.id >>> 0; if (object.iteration != null) message.iteration = object.iteration >>> 0; - if (object.seed != null) - if (typeof object.seed === "string") - $util.base64.decode(object.seed, message.seed = $util.newBuffer($util.base64.length(object.seed)), 0); - else if (object.seed.length) - message.seed = object.seed; + if (object.ciphertext != null) + if (typeof object.ciphertext === "string") + $util.base64.decode(object.ciphertext, message.ciphertext = $util.newBuffer($util.base64.length(object.ciphertext)), 0); + else if (object.ciphertext.length) + message.ciphertext = object.ciphertext; return message; }; /** - * Creates a plain object from a SenderChainKey message. Also converts values to other types if specified. + * Creates a plain object from a SenderKeyMessage message. Also converts values to other types if specified. * @function toObject - * @memberof proto.SenderChainKey + * @memberof proto.SenderKeyMessage * @static - * @param {proto.SenderChainKey} message SenderChainKey + * @param {proto.SenderKeyMessage} message SenderKeyMessage * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - SenderChainKey.toObject = function toObject(message, options) { + SenderKeyMessage.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { + object.id = 0; object.iteration = 0; if (options.bytes === String) - object.seed = ""; + object.ciphertext = ""; else { - object.seed = []; + object.ciphertext = []; if (options.bytes !== Array) - object.seed = $util.newBuffer(object.seed); + object.ciphertext = $util.newBuffer(object.ciphertext); } } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; if (message.iteration != null && message.hasOwnProperty("iteration")) object.iteration = message.iteration; - if (message.seed != null && message.hasOwnProperty("seed")) - object.seed = options.bytes === String ? $util.base64.encode(message.seed, 0, message.seed.length) : options.bytes === Array ? Array.prototype.slice.call(message.seed) : message.seed; + if (message.ciphertext != null && message.hasOwnProperty("ciphertext")) + object.ciphertext = options.bytes === String ? $util.base64.encode(message.ciphertext, 0, message.ciphertext.length) : options.bytes === Array ? Array.prototype.slice.call(message.ciphertext) : message.ciphertext; return object; }; /** - * Converts this SenderChainKey to JSON. + * Converts this SenderKeyMessage to JSON. * @function toJSON - * @memberof proto.SenderChainKey + * @memberof proto.SenderKeyMessage * @instance * @returns {Object.} JSON object */ - SenderChainKey.prototype.toJSON = function toJSON() { + SenderKeyMessage.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return SenderChainKey; + return SenderKeyMessage; })(); proto.SenderKeyRecordStructure = (function() { @@ -55797,9 +61643,9 @@ $root.proto = (function() { * @memberof proto * @interface ISenderKeyStateStructure * @property {number|null} [senderKeyId] SenderKeyStateStructure senderKeyId - * @property {proto.ISenderChainKey|null} [senderChainKey] SenderKeyStateStructure senderChainKey - * @property {proto.ISenderSigningKey|null} [senderSigningKey] SenderKeyStateStructure senderSigningKey - * @property {Array.|null} [senderMessageKeys] SenderKeyStateStructure senderMessageKeys + * @property {proto.SenderKeyStateStructure.ISenderChainKey|null} [senderChainKey] SenderKeyStateStructure senderChainKey + * @property {proto.SenderKeyStateStructure.ISenderSigningKey|null} [senderSigningKey] SenderKeyStateStructure senderSigningKey + * @property {Array.|null} [senderMessageKeys] SenderKeyStateStructure senderMessageKeys */ /** @@ -55828,7 +61674,7 @@ $root.proto = (function() { /** * SenderKeyStateStructure senderChainKey. - * @member {proto.ISenderChainKey|null|undefined} senderChainKey + * @member {proto.SenderKeyStateStructure.ISenderChainKey|null|undefined} senderChainKey * @memberof proto.SenderKeyStateStructure * @instance */ @@ -55836,7 +61682,7 @@ $root.proto = (function() { /** * SenderKeyStateStructure senderSigningKey. - * @member {proto.ISenderSigningKey|null|undefined} senderSigningKey + * @member {proto.SenderKeyStateStructure.ISenderSigningKey|null|undefined} senderSigningKey * @memberof proto.SenderKeyStateStructure * @instance */ @@ -55844,7 +61690,7 @@ $root.proto = (function() { /** * SenderKeyStateStructure senderMessageKeys. - * @member {Array.} senderMessageKeys + * @member {Array.} senderMessageKeys * @memberof proto.SenderKeyStateStructure * @instance */ @@ -55877,12 +61723,12 @@ $root.proto = (function() { if (message.senderKeyId != null && Object.hasOwnProperty.call(message, "senderKeyId")) writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.senderKeyId); if (message.senderChainKey != null && Object.hasOwnProperty.call(message, "senderChainKey")) - $root.proto.SenderChainKey.encode(message.senderChainKey, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.proto.SenderKeyStateStructure.SenderChainKey.encode(message.senderChainKey, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.senderSigningKey != null && Object.hasOwnProperty.call(message, "senderSigningKey")) - $root.proto.SenderSigningKey.encode(message.senderSigningKey, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.proto.SenderKeyStateStructure.SenderSigningKey.encode(message.senderSigningKey, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); if (message.senderMessageKeys != null && message.senderMessageKeys.length) for (var i = 0; i < message.senderMessageKeys.length; ++i) - $root.proto.SenderMessageKey.encode(message.senderMessageKeys[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.proto.SenderKeyStateStructure.SenderMessageKey.encode(message.senderMessageKeys[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); return writer; }; @@ -55921,15 +61767,15 @@ $root.proto = (function() { message.senderKeyId = reader.uint32(); break; case 2: - message.senderChainKey = $root.proto.SenderChainKey.decode(reader, reader.uint32()); + message.senderChainKey = $root.proto.SenderKeyStateStructure.SenderChainKey.decode(reader, reader.uint32()); break; case 3: - message.senderSigningKey = $root.proto.SenderSigningKey.decode(reader, reader.uint32()); + message.senderSigningKey = $root.proto.SenderKeyStateStructure.SenderSigningKey.decode(reader, reader.uint32()); break; case 4: if (!(message.senderMessageKeys && message.senderMessageKeys.length)) message.senderMessageKeys = []; - message.senderMessageKeys.push($root.proto.SenderMessageKey.decode(reader, reader.uint32())); + message.senderMessageKeys.push($root.proto.SenderKeyStateStructure.SenderMessageKey.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -55970,12 +61816,12 @@ $root.proto = (function() { if (!$util.isInteger(message.senderKeyId)) return "senderKeyId: integer expected"; if (message.senderChainKey != null && message.hasOwnProperty("senderChainKey")) { - var error = $root.proto.SenderChainKey.verify(message.senderChainKey); + var error = $root.proto.SenderKeyStateStructure.SenderChainKey.verify(message.senderChainKey); if (error) return "senderChainKey." + error; } if (message.senderSigningKey != null && message.hasOwnProperty("senderSigningKey")) { - var error = $root.proto.SenderSigningKey.verify(message.senderSigningKey); + var error = $root.proto.SenderKeyStateStructure.SenderSigningKey.verify(message.senderSigningKey); if (error) return "senderSigningKey." + error; } @@ -55983,7 +61829,7 @@ $root.proto = (function() { if (!Array.isArray(message.senderMessageKeys)) return "senderMessageKeys: array expected"; for (var i = 0; i < message.senderMessageKeys.length; ++i) { - var error = $root.proto.SenderMessageKey.verify(message.senderMessageKeys[i]); + var error = $root.proto.SenderKeyStateStructure.SenderMessageKey.verify(message.senderMessageKeys[i]); if (error) return "senderMessageKeys." + error; } @@ -56008,12 +61854,12 @@ $root.proto = (function() { if (object.senderChainKey != null) { if (typeof object.senderChainKey !== "object") throw TypeError(".proto.SenderKeyStateStructure.senderChainKey: object expected"); - message.senderChainKey = $root.proto.SenderChainKey.fromObject(object.senderChainKey); + message.senderChainKey = $root.proto.SenderKeyStateStructure.SenderChainKey.fromObject(object.senderChainKey); } if (object.senderSigningKey != null) { if (typeof object.senderSigningKey !== "object") throw TypeError(".proto.SenderKeyStateStructure.senderSigningKey: object expected"); - message.senderSigningKey = $root.proto.SenderSigningKey.fromObject(object.senderSigningKey); + message.senderSigningKey = $root.proto.SenderKeyStateStructure.SenderSigningKey.fromObject(object.senderSigningKey); } if (object.senderMessageKeys) { if (!Array.isArray(object.senderMessageKeys)) @@ -56022,7 +61868,7 @@ $root.proto = (function() { for (var i = 0; i < object.senderMessageKeys.length; ++i) { if (typeof object.senderMessageKeys[i] !== "object") throw TypeError(".proto.SenderKeyStateStructure.senderMessageKeys: object expected"); - message.senderMessageKeys[i] = $root.proto.SenderMessageKey.fromObject(object.senderMessageKeys[i]); + message.senderMessageKeys[i] = $root.proto.SenderKeyStateStructure.SenderMessageKey.fromObject(object.senderMessageKeys[i]); } } return message; @@ -56051,13 +61897,13 @@ $root.proto = (function() { if (message.senderKeyId != null && message.hasOwnProperty("senderKeyId")) object.senderKeyId = message.senderKeyId; if (message.senderChainKey != null && message.hasOwnProperty("senderChainKey")) - object.senderChainKey = $root.proto.SenderChainKey.toObject(message.senderChainKey, options); + object.senderChainKey = $root.proto.SenderKeyStateStructure.SenderChainKey.toObject(message.senderChainKey, options); if (message.senderSigningKey != null && message.hasOwnProperty("senderSigningKey")) - object.senderSigningKey = $root.proto.SenderSigningKey.toObject(message.senderSigningKey, options); + object.senderSigningKey = $root.proto.SenderKeyStateStructure.SenderSigningKey.toObject(message.senderSigningKey, options); if (message.senderMessageKeys && message.senderMessageKeys.length) { object.senderMessageKeys = []; for (var j = 0; j < message.senderMessageKeys.length; ++j) - object.senderMessageKeys[j] = $root.proto.SenderMessageKey.toObject(message.senderMessageKeys[j], options); + object.senderMessageKeys[j] = $root.proto.SenderKeyStateStructure.SenderMessageKey.toObject(message.senderMessageKeys[j], options); } return object; }; @@ -56073,454 +61919,673 @@ $root.proto = (function() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return SenderKeyStateStructure; - })(); - - proto.SenderMessageKey = (function() { + SenderKeyStateStructure.SenderChainKey = (function() { - /** - * Properties of a SenderMessageKey. - * @memberof proto - * @interface ISenderMessageKey - * @property {number|null} [iteration] SenderMessageKey iteration - * @property {Uint8Array|null} [seed] SenderMessageKey seed - */ + /** + * Properties of a SenderChainKey. + * @memberof proto.SenderKeyStateStructure + * @interface ISenderChainKey + * @property {number|null} [iteration] SenderChainKey iteration + * @property {Uint8Array|null} [seed] SenderChainKey seed + */ - /** - * Constructs a new SenderMessageKey. - * @memberof proto - * @classdesc Represents a SenderMessageKey. - * @implements ISenderMessageKey - * @constructor - * @param {proto.ISenderMessageKey=} [properties] Properties to set - */ - function SenderMessageKey(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Constructs a new SenderChainKey. + * @memberof proto.SenderKeyStateStructure + * @classdesc Represents a SenderChainKey. + * @implements ISenderChainKey + * @constructor + * @param {proto.SenderKeyStateStructure.ISenderChainKey=} [properties] Properties to set + */ + function SenderChainKey(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * SenderMessageKey iteration. - * @member {number} iteration - * @memberof proto.SenderMessageKey - * @instance - */ - SenderMessageKey.prototype.iteration = 0; + /** + * SenderChainKey iteration. + * @member {number} iteration + * @memberof proto.SenderKeyStateStructure.SenderChainKey + * @instance + */ + SenderChainKey.prototype.iteration = 0; - /** - * SenderMessageKey seed. - * @member {Uint8Array} seed - * @memberof proto.SenderMessageKey - * @instance - */ - SenderMessageKey.prototype.seed = $util.newBuffer([]); + /** + * SenderChainKey seed. + * @member {Uint8Array} seed + * @memberof proto.SenderKeyStateStructure.SenderChainKey + * @instance + */ + SenderChainKey.prototype.seed = $util.newBuffer([]); - /** - * Creates a new SenderMessageKey instance using the specified properties. - * @function create - * @memberof proto.SenderMessageKey - * @static - * @param {proto.ISenderMessageKey=} [properties] Properties to set - * @returns {proto.SenderMessageKey} SenderMessageKey instance - */ - SenderMessageKey.create = function create(properties) { - return new SenderMessageKey(properties); - }; + /** + * Creates a new SenderChainKey instance using the specified properties. + * @function create + * @memberof proto.SenderKeyStateStructure.SenderChainKey + * @static + * @param {proto.SenderKeyStateStructure.ISenderChainKey=} [properties] Properties to set + * @returns {proto.SenderKeyStateStructure.SenderChainKey} SenderChainKey instance + */ + SenderChainKey.create = function create(properties) { + return new SenderChainKey(properties); + }; - /** - * Encodes the specified SenderMessageKey message. Does not implicitly {@link proto.SenderMessageKey.verify|verify} messages. - * @function encode - * @memberof proto.SenderMessageKey - * @static - * @param {proto.ISenderMessageKey} message SenderMessageKey message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SenderMessageKey.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.iteration != null && Object.hasOwnProperty.call(message, "iteration")) - writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.iteration); - if (message.seed != null && Object.hasOwnProperty.call(message, "seed")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.seed); - return writer; - }; + /** + * Encodes the specified SenderChainKey message. Does not implicitly {@link proto.SenderKeyStateStructure.SenderChainKey.verify|verify} messages. + * @function encode + * @memberof proto.SenderKeyStateStructure.SenderChainKey + * @static + * @param {proto.SenderKeyStateStructure.ISenderChainKey} message SenderChainKey message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SenderChainKey.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.iteration != null && Object.hasOwnProperty.call(message, "iteration")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.iteration); + if (message.seed != null && Object.hasOwnProperty.call(message, "seed")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.seed); + return writer; + }; - /** - * Encodes the specified SenderMessageKey message, length delimited. Does not implicitly {@link proto.SenderMessageKey.verify|verify} messages. - * @function encodeDelimited - * @memberof proto.SenderMessageKey - * @static - * @param {proto.ISenderMessageKey} message SenderMessageKey message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SenderMessageKey.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Encodes the specified SenderChainKey message, length delimited. Does not implicitly {@link proto.SenderKeyStateStructure.SenderChainKey.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.SenderKeyStateStructure.SenderChainKey + * @static + * @param {proto.SenderKeyStateStructure.ISenderChainKey} message SenderChainKey message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SenderChainKey.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Decodes a SenderMessageKey message from the specified reader or buffer. - * @function decode - * @memberof proto.SenderMessageKey - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {proto.SenderMessageKey} SenderMessageKey - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SenderMessageKey.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SenderMessageKey(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.iteration = reader.uint32(); - break; - case 2: - message.seed = reader.bytes(); - break; - default: - reader.skipType(tag & 7); - break; + /** + * Decodes a SenderChainKey message from the specified reader or buffer. + * @function decode + * @memberof proto.SenderKeyStateStructure.SenderChainKey + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.SenderKeyStateStructure.SenderChainKey} SenderChainKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SenderChainKey.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SenderKeyStateStructure.SenderChainKey(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.iteration = reader.uint32(); + break; + case 2: + message.seed = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } } - } - return message; - }; + return message; + }; - /** - * Decodes a SenderMessageKey message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof proto.SenderMessageKey - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {proto.SenderMessageKey} SenderMessageKey - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SenderMessageKey.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Decodes a SenderChainKey message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.SenderKeyStateStructure.SenderChainKey + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.SenderKeyStateStructure.SenderChainKey} SenderChainKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SenderChainKey.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Verifies a SenderMessageKey message. - * @function verify - * @memberof proto.SenderMessageKey - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SenderMessageKey.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.iteration != null && message.hasOwnProperty("iteration")) - if (!$util.isInteger(message.iteration)) - return "iteration: integer expected"; - if (message.seed != null && message.hasOwnProperty("seed")) - if (!(message.seed && typeof message.seed.length === "number" || $util.isString(message.seed))) - return "seed: buffer expected"; - return null; - }; + /** + * Verifies a SenderChainKey message. + * @function verify + * @memberof proto.SenderKeyStateStructure.SenderChainKey + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SenderChainKey.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.iteration != null && message.hasOwnProperty("iteration")) + if (!$util.isInteger(message.iteration)) + return "iteration: integer expected"; + if (message.seed != null && message.hasOwnProperty("seed")) + if (!(message.seed && typeof message.seed.length === "number" || $util.isString(message.seed))) + return "seed: buffer expected"; + return null; + }; - /** - * Creates a SenderMessageKey message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof proto.SenderMessageKey - * @static - * @param {Object.} object Plain object - * @returns {proto.SenderMessageKey} SenderMessageKey - */ - SenderMessageKey.fromObject = function fromObject(object) { - if (object instanceof $root.proto.SenderMessageKey) - return object; - var message = new $root.proto.SenderMessageKey(); - if (object.iteration != null) - message.iteration = object.iteration >>> 0; - if (object.seed != null) - if (typeof object.seed === "string") - $util.base64.decode(object.seed, message.seed = $util.newBuffer($util.base64.length(object.seed)), 0); - else if (object.seed.length) - message.seed = object.seed; - return message; - }; + /** + * Creates a SenderChainKey message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.SenderKeyStateStructure.SenderChainKey + * @static + * @param {Object.} object Plain object + * @returns {proto.SenderKeyStateStructure.SenderChainKey} SenderChainKey + */ + SenderChainKey.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SenderKeyStateStructure.SenderChainKey) + return object; + var message = new $root.proto.SenderKeyStateStructure.SenderChainKey(); + if (object.iteration != null) + message.iteration = object.iteration >>> 0; + if (object.seed != null) + if (typeof object.seed === "string") + $util.base64.decode(object.seed, message.seed = $util.newBuffer($util.base64.length(object.seed)), 0); + else if (object.seed.length) + message.seed = object.seed; + return message; + }; - /** - * Creates a plain object from a SenderMessageKey message. Also converts values to other types if specified. - * @function toObject - * @memberof proto.SenderMessageKey - * @static - * @param {proto.SenderMessageKey} message SenderMessageKey - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SenderMessageKey.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.iteration = 0; - if (options.bytes === String) - object.seed = ""; - else { - object.seed = []; - if (options.bytes !== Array) - object.seed = $util.newBuffer(object.seed); + /** + * Creates a plain object from a SenderChainKey message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.SenderKeyStateStructure.SenderChainKey + * @static + * @param {proto.SenderKeyStateStructure.SenderChainKey} message SenderChainKey + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SenderChainKey.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.iteration = 0; + if (options.bytes === String) + object.seed = ""; + else { + object.seed = []; + if (options.bytes !== Array) + object.seed = $util.newBuffer(object.seed); + } } - } - if (message.iteration != null && message.hasOwnProperty("iteration")) - object.iteration = message.iteration; - if (message.seed != null && message.hasOwnProperty("seed")) - object.seed = options.bytes === String ? $util.base64.encode(message.seed, 0, message.seed.length) : options.bytes === Array ? Array.prototype.slice.call(message.seed) : message.seed; - return object; - }; + if (message.iteration != null && message.hasOwnProperty("iteration")) + object.iteration = message.iteration; + if (message.seed != null && message.hasOwnProperty("seed")) + object.seed = options.bytes === String ? $util.base64.encode(message.seed, 0, message.seed.length) : options.bytes === Array ? Array.prototype.slice.call(message.seed) : message.seed; + return object; + }; - /** - * Converts this SenderMessageKey to JSON. - * @function toJSON - * @memberof proto.SenderMessageKey - * @instance - * @returns {Object.} JSON object - */ - SenderMessageKey.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Converts this SenderChainKey to JSON. + * @function toJSON + * @memberof proto.SenderKeyStateStructure.SenderChainKey + * @instance + * @returns {Object.} JSON object + */ + SenderChainKey.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - return SenderMessageKey; - })(); + return SenderChainKey; + })(); - proto.SenderSigningKey = (function() { + SenderKeyStateStructure.SenderMessageKey = (function() { - /** - * Properties of a SenderSigningKey. - * @memberof proto - * @interface ISenderSigningKey - * @property {Uint8Array|null} ["public"] SenderSigningKey public - * @property {Uint8Array|null} ["private"] SenderSigningKey private - */ + /** + * Properties of a SenderMessageKey. + * @memberof proto.SenderKeyStateStructure + * @interface ISenderMessageKey + * @property {number|null} [iteration] SenderMessageKey iteration + * @property {Uint8Array|null} [seed] SenderMessageKey seed + */ - /** - * Constructs a new SenderSigningKey. - * @memberof proto - * @classdesc Represents a SenderSigningKey. - * @implements ISenderSigningKey - * @constructor - * @param {proto.ISenderSigningKey=} [properties] Properties to set - */ - function SenderSigningKey(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Constructs a new SenderMessageKey. + * @memberof proto.SenderKeyStateStructure + * @classdesc Represents a SenderMessageKey. + * @implements ISenderMessageKey + * @constructor + * @param {proto.SenderKeyStateStructure.ISenderMessageKey=} [properties] Properties to set + */ + function SenderMessageKey(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * SenderSigningKey public. - * @member {Uint8Array} public - * @memberof proto.SenderSigningKey - * @instance - */ - SenderSigningKey.prototype["public"] = $util.newBuffer([]); + /** + * SenderMessageKey iteration. + * @member {number} iteration + * @memberof proto.SenderKeyStateStructure.SenderMessageKey + * @instance + */ + SenderMessageKey.prototype.iteration = 0; - /** - * SenderSigningKey private. - * @member {Uint8Array} private - * @memberof proto.SenderSigningKey - * @instance - */ - SenderSigningKey.prototype["private"] = $util.newBuffer([]); + /** + * SenderMessageKey seed. + * @member {Uint8Array} seed + * @memberof proto.SenderKeyStateStructure.SenderMessageKey + * @instance + */ + SenderMessageKey.prototype.seed = $util.newBuffer([]); - /** - * Creates a new SenderSigningKey instance using the specified properties. - * @function create - * @memberof proto.SenderSigningKey - * @static - * @param {proto.ISenderSigningKey=} [properties] Properties to set - * @returns {proto.SenderSigningKey} SenderSigningKey instance - */ - SenderSigningKey.create = function create(properties) { - return new SenderSigningKey(properties); - }; + /** + * Creates a new SenderMessageKey instance using the specified properties. + * @function create + * @memberof proto.SenderKeyStateStructure.SenderMessageKey + * @static + * @param {proto.SenderKeyStateStructure.ISenderMessageKey=} [properties] Properties to set + * @returns {proto.SenderKeyStateStructure.SenderMessageKey} SenderMessageKey instance + */ + SenderMessageKey.create = function create(properties) { + return new SenderMessageKey(properties); + }; - /** - * Encodes the specified SenderSigningKey message. Does not implicitly {@link proto.SenderSigningKey.verify|verify} messages. - * @function encode - * @memberof proto.SenderSigningKey - * @static - * @param {proto.ISenderSigningKey} message SenderSigningKey message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SenderSigningKey.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message["public"] != null && Object.hasOwnProperty.call(message, "public")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message["public"]); - if (message["private"] != null && Object.hasOwnProperty.call(message, "private")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message["private"]); - return writer; - }; + /** + * Encodes the specified SenderMessageKey message. Does not implicitly {@link proto.SenderKeyStateStructure.SenderMessageKey.verify|verify} messages. + * @function encode + * @memberof proto.SenderKeyStateStructure.SenderMessageKey + * @static + * @param {proto.SenderKeyStateStructure.ISenderMessageKey} message SenderMessageKey message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SenderMessageKey.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.iteration != null && Object.hasOwnProperty.call(message, "iteration")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.iteration); + if (message.seed != null && Object.hasOwnProperty.call(message, "seed")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.seed); + return writer; + }; - /** - * Encodes the specified SenderSigningKey message, length delimited. Does not implicitly {@link proto.SenderSigningKey.verify|verify} messages. - * @function encodeDelimited - * @memberof proto.SenderSigningKey - * @static - * @param {proto.ISenderSigningKey} message SenderSigningKey message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SenderSigningKey.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Encodes the specified SenderMessageKey message, length delimited. Does not implicitly {@link proto.SenderKeyStateStructure.SenderMessageKey.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.SenderKeyStateStructure.SenderMessageKey + * @static + * @param {proto.SenderKeyStateStructure.ISenderMessageKey} message SenderMessageKey message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SenderMessageKey.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Decodes a SenderSigningKey message from the specified reader or buffer. - * @function decode - * @memberof proto.SenderSigningKey - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {proto.SenderSigningKey} SenderSigningKey - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SenderSigningKey.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SenderSigningKey(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message["public"] = reader.bytes(); - break; - case 2: - message["private"] = reader.bytes(); - break; - default: - reader.skipType(tag & 7); - break; + /** + * Decodes a SenderMessageKey message from the specified reader or buffer. + * @function decode + * @memberof proto.SenderKeyStateStructure.SenderMessageKey + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.SenderKeyStateStructure.SenderMessageKey} SenderMessageKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SenderMessageKey.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SenderKeyStateStructure.SenderMessageKey(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.iteration = reader.uint32(); + break; + case 2: + message.seed = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } } - } - return message; - }; + return message; + }; - /** - * Decodes a SenderSigningKey message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof proto.SenderSigningKey - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {proto.SenderSigningKey} SenderSigningKey - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SenderSigningKey.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Decodes a SenderMessageKey message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.SenderKeyStateStructure.SenderMessageKey + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.SenderKeyStateStructure.SenderMessageKey} SenderMessageKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SenderMessageKey.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Verifies a SenderSigningKey message. - * @function verify - * @memberof proto.SenderSigningKey - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SenderSigningKey.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message["public"] != null && message.hasOwnProperty("public")) - if (!(message["public"] && typeof message["public"].length === "number" || $util.isString(message["public"]))) - return "public: buffer expected"; - if (message["private"] != null && message.hasOwnProperty("private")) - if (!(message["private"] && typeof message["private"].length === "number" || $util.isString(message["private"]))) - return "private: buffer expected"; - return null; - }; + /** + * Verifies a SenderMessageKey message. + * @function verify + * @memberof proto.SenderKeyStateStructure.SenderMessageKey + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SenderMessageKey.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.iteration != null && message.hasOwnProperty("iteration")) + if (!$util.isInteger(message.iteration)) + return "iteration: integer expected"; + if (message.seed != null && message.hasOwnProperty("seed")) + if (!(message.seed && typeof message.seed.length === "number" || $util.isString(message.seed))) + return "seed: buffer expected"; + return null; + }; - /** - * Creates a SenderSigningKey message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof proto.SenderSigningKey - * @static - * @param {Object.} object Plain object - * @returns {proto.SenderSigningKey} SenderSigningKey - */ - SenderSigningKey.fromObject = function fromObject(object) { - if (object instanceof $root.proto.SenderSigningKey) + /** + * Creates a SenderMessageKey message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.SenderKeyStateStructure.SenderMessageKey + * @static + * @param {Object.} object Plain object + * @returns {proto.SenderKeyStateStructure.SenderMessageKey} SenderMessageKey + */ + SenderMessageKey.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SenderKeyStateStructure.SenderMessageKey) + return object; + var message = new $root.proto.SenderKeyStateStructure.SenderMessageKey(); + if (object.iteration != null) + message.iteration = object.iteration >>> 0; + if (object.seed != null) + if (typeof object.seed === "string") + $util.base64.decode(object.seed, message.seed = $util.newBuffer($util.base64.length(object.seed)), 0); + else if (object.seed.length) + message.seed = object.seed; + return message; + }; + + /** + * Creates a plain object from a SenderMessageKey message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.SenderKeyStateStructure.SenderMessageKey + * @static + * @param {proto.SenderKeyStateStructure.SenderMessageKey} message SenderMessageKey + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SenderMessageKey.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.iteration = 0; + if (options.bytes === String) + object.seed = ""; + else { + object.seed = []; + if (options.bytes !== Array) + object.seed = $util.newBuffer(object.seed); + } + } + if (message.iteration != null && message.hasOwnProperty("iteration")) + object.iteration = message.iteration; + if (message.seed != null && message.hasOwnProperty("seed")) + object.seed = options.bytes === String ? $util.base64.encode(message.seed, 0, message.seed.length) : options.bytes === Array ? Array.prototype.slice.call(message.seed) : message.seed; return object; - var message = new $root.proto.SenderSigningKey(); - if (object["public"] != null) - if (typeof object["public"] === "string") - $util.base64.decode(object["public"], message["public"] = $util.newBuffer($util.base64.length(object["public"])), 0); - else if (object["public"].length) - message["public"] = object["public"]; - if (object["private"] != null) - if (typeof object["private"] === "string") - $util.base64.decode(object["private"], message["private"] = $util.newBuffer($util.base64.length(object["private"])), 0); - else if (object["private"].length) - message["private"] = object["private"]; - return message; - }; + }; - /** - * Creates a plain object from a SenderSigningKey message. Also converts values to other types if specified. - * @function toObject - * @memberof proto.SenderSigningKey - * @static - * @param {proto.SenderSigningKey} message SenderSigningKey - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SenderSigningKey.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - if (options.bytes === String) - object["public"] = ""; - else { - object["public"] = []; - if (options.bytes !== Array) - object["public"] = $util.newBuffer(object["public"]); + /** + * Converts this SenderMessageKey to JSON. + * @function toJSON + * @memberof proto.SenderKeyStateStructure.SenderMessageKey + * @instance + * @returns {Object.} JSON object + */ + SenderMessageKey.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return SenderMessageKey; + })(); + + SenderKeyStateStructure.SenderSigningKey = (function() { + + /** + * Properties of a SenderSigningKey. + * @memberof proto.SenderKeyStateStructure + * @interface ISenderSigningKey + * @property {Uint8Array|null} ["public"] SenderSigningKey public + * @property {Uint8Array|null} ["private"] SenderSigningKey private + */ + + /** + * Constructs a new SenderSigningKey. + * @memberof proto.SenderKeyStateStructure + * @classdesc Represents a SenderSigningKey. + * @implements ISenderSigningKey + * @constructor + * @param {proto.SenderKeyStateStructure.ISenderSigningKey=} [properties] Properties to set + */ + function SenderSigningKey(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SenderSigningKey public. + * @member {Uint8Array} public + * @memberof proto.SenderKeyStateStructure.SenderSigningKey + * @instance + */ + SenderSigningKey.prototype["public"] = $util.newBuffer([]); + + /** + * SenderSigningKey private. + * @member {Uint8Array} private + * @memberof proto.SenderKeyStateStructure.SenderSigningKey + * @instance + */ + SenderSigningKey.prototype["private"] = $util.newBuffer([]); + + /** + * Creates a new SenderSigningKey instance using the specified properties. + * @function create + * @memberof proto.SenderKeyStateStructure.SenderSigningKey + * @static + * @param {proto.SenderKeyStateStructure.ISenderSigningKey=} [properties] Properties to set + * @returns {proto.SenderKeyStateStructure.SenderSigningKey} SenderSigningKey instance + */ + SenderSigningKey.create = function create(properties) { + return new SenderSigningKey(properties); + }; + + /** + * Encodes the specified SenderSigningKey message. Does not implicitly {@link proto.SenderKeyStateStructure.SenderSigningKey.verify|verify} messages. + * @function encode + * @memberof proto.SenderKeyStateStructure.SenderSigningKey + * @static + * @param {proto.SenderKeyStateStructure.ISenderSigningKey} message SenderSigningKey message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SenderSigningKey.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message["public"] != null && Object.hasOwnProperty.call(message, "public")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message["public"]); + if (message["private"] != null && Object.hasOwnProperty.call(message, "private")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message["private"]); + return writer; + }; + + /** + * Encodes the specified SenderSigningKey message, length delimited. Does not implicitly {@link proto.SenderKeyStateStructure.SenderSigningKey.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.SenderKeyStateStructure.SenderSigningKey + * @static + * @param {proto.SenderKeyStateStructure.ISenderSigningKey} message SenderSigningKey message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SenderSigningKey.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SenderSigningKey message from the specified reader or buffer. + * @function decode + * @memberof proto.SenderKeyStateStructure.SenderSigningKey + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.SenderKeyStateStructure.SenderSigningKey} SenderSigningKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SenderSigningKey.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SenderKeyStateStructure.SenderSigningKey(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message["public"] = reader.bytes(); + break; + case 2: + message["private"] = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } } - if (options.bytes === String) - object["private"] = ""; - else { - object["private"] = []; - if (options.bytes !== Array) - object["private"] = $util.newBuffer(object["private"]); + return message; + }; + + /** + * Decodes a SenderSigningKey message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.SenderKeyStateStructure.SenderSigningKey + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.SenderKeyStateStructure.SenderSigningKey} SenderSigningKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SenderSigningKey.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SenderSigningKey message. + * @function verify + * @memberof proto.SenderKeyStateStructure.SenderSigningKey + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SenderSigningKey.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message["public"] != null && message.hasOwnProperty("public")) + if (!(message["public"] && typeof message["public"].length === "number" || $util.isString(message["public"]))) + return "public: buffer expected"; + if (message["private"] != null && message.hasOwnProperty("private")) + if (!(message["private"] && typeof message["private"].length === "number" || $util.isString(message["private"]))) + return "private: buffer expected"; + return null; + }; + + /** + * Creates a SenderSigningKey message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.SenderKeyStateStructure.SenderSigningKey + * @static + * @param {Object.} object Plain object + * @returns {proto.SenderKeyStateStructure.SenderSigningKey} SenderSigningKey + */ + SenderSigningKey.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SenderKeyStateStructure.SenderSigningKey) + return object; + var message = new $root.proto.SenderKeyStateStructure.SenderSigningKey(); + if (object["public"] != null) + if (typeof object["public"] === "string") + $util.base64.decode(object["public"], message["public"] = $util.newBuffer($util.base64.length(object["public"])), 0); + else if (object["public"].length) + message["public"] = object["public"]; + if (object["private"] != null) + if (typeof object["private"] === "string") + $util.base64.decode(object["private"], message["private"] = $util.newBuffer($util.base64.length(object["private"])), 0); + else if (object["private"].length) + message["private"] = object["private"]; + return message; + }; + + /** + * Creates a plain object from a SenderSigningKey message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.SenderKeyStateStructure.SenderSigningKey + * @static + * @param {proto.SenderKeyStateStructure.SenderSigningKey} message SenderSigningKey + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SenderSigningKey.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if (options.bytes === String) + object["public"] = ""; + else { + object["public"] = []; + if (options.bytes !== Array) + object["public"] = $util.newBuffer(object["public"]); + } + if (options.bytes === String) + object["private"] = ""; + else { + object["private"] = []; + if (options.bytes !== Array) + object["private"] = $util.newBuffer(object["private"]); + } } - } - if (message["public"] != null && message.hasOwnProperty("public")) - object["public"] = options.bytes === String ? $util.base64.encode(message["public"], 0, message["public"].length) : options.bytes === Array ? Array.prototype.slice.call(message["public"]) : message["public"]; - if (message["private"] != null && message.hasOwnProperty("private")) - object["private"] = options.bytes === String ? $util.base64.encode(message["private"], 0, message["private"].length) : options.bytes === Array ? Array.prototype.slice.call(message["private"]) : message["private"]; - return object; - }; + if (message["public"] != null && message.hasOwnProperty("public")) + object["public"] = options.bytes === String ? $util.base64.encode(message["public"], 0, message["public"].length) : options.bytes === Array ? Array.prototype.slice.call(message["public"]) : message["public"]; + if (message["private"] != null && message.hasOwnProperty("private")) + object["private"] = options.bytes === String ? $util.base64.encode(message["private"], 0, message["private"].length) : options.bytes === Array ? Array.prototype.slice.call(message["private"]) : message["private"]; + return object; + }; - /** - * Converts this SenderSigningKey to JSON. - * @function toJSON - * @memberof proto.SenderSigningKey - * @instance - * @returns {Object.} JSON object - */ - SenderSigningKey.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Converts this SenderSigningKey to JSON. + * @function toJSON + * @memberof proto.SenderKeyStateStructure.SenderSigningKey + * @instance + * @returns {Object.} JSON object + */ + SenderSigningKey.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return SenderSigningKey; + })(); - return SenderSigningKey; + return SenderKeyStateStructure; })(); proto.ServerErrorReceipt = (function() { @@ -56710,37 +62775,1966 @@ $root.proto = (function() { return ServerErrorReceipt; })(); - proto.SessionStructure = (function() { + proto.SessionStructure = (function() { + + /** + * Properties of a SessionStructure. + * @memberof proto + * @interface ISessionStructure + * @property {number|null} [sessionVersion] SessionStructure sessionVersion + * @property {Uint8Array|null} [localIdentityPublic] SessionStructure localIdentityPublic + * @property {Uint8Array|null} [remoteIdentityPublic] SessionStructure remoteIdentityPublic + * @property {Uint8Array|null} [rootKey] SessionStructure rootKey + * @property {number|null} [previousCounter] SessionStructure previousCounter + * @property {proto.SessionStructure.IChain|null} [senderChain] SessionStructure senderChain + * @property {Array.|null} [receiverChains] SessionStructure receiverChains + * @property {proto.SessionStructure.IPendingKeyExchange|null} [pendingKeyExchange] SessionStructure pendingKeyExchange + * @property {proto.SessionStructure.IPendingPreKey|null} [pendingPreKey] SessionStructure pendingPreKey + * @property {number|null} [remoteRegistrationId] SessionStructure remoteRegistrationId + * @property {number|null} [localRegistrationId] SessionStructure localRegistrationId + * @property {boolean|null} [needsRefresh] SessionStructure needsRefresh + * @property {Uint8Array|null} [aliceBaseKey] SessionStructure aliceBaseKey + */ + + /** + * Constructs a new SessionStructure. + * @memberof proto + * @classdesc Represents a SessionStructure. + * @implements ISessionStructure + * @constructor + * @param {proto.ISessionStructure=} [properties] Properties to set + */ + function SessionStructure(properties) { + this.receiverChains = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SessionStructure sessionVersion. + * @member {number} sessionVersion + * @memberof proto.SessionStructure + * @instance + */ + SessionStructure.prototype.sessionVersion = 0; + + /** + * SessionStructure localIdentityPublic. + * @member {Uint8Array} localIdentityPublic + * @memberof proto.SessionStructure + * @instance + */ + SessionStructure.prototype.localIdentityPublic = $util.newBuffer([]); + + /** + * SessionStructure remoteIdentityPublic. + * @member {Uint8Array} remoteIdentityPublic + * @memberof proto.SessionStructure + * @instance + */ + SessionStructure.prototype.remoteIdentityPublic = $util.newBuffer([]); + + /** + * SessionStructure rootKey. + * @member {Uint8Array} rootKey + * @memberof proto.SessionStructure + * @instance + */ + SessionStructure.prototype.rootKey = $util.newBuffer([]); + + /** + * SessionStructure previousCounter. + * @member {number} previousCounter + * @memberof proto.SessionStructure + * @instance + */ + SessionStructure.prototype.previousCounter = 0; + + /** + * SessionStructure senderChain. + * @member {proto.SessionStructure.IChain|null|undefined} senderChain + * @memberof proto.SessionStructure + * @instance + */ + SessionStructure.prototype.senderChain = null; + + /** + * SessionStructure receiverChains. + * @member {Array.} receiverChains + * @memberof proto.SessionStructure + * @instance + */ + SessionStructure.prototype.receiverChains = $util.emptyArray; + + /** + * SessionStructure pendingKeyExchange. + * @member {proto.SessionStructure.IPendingKeyExchange|null|undefined} pendingKeyExchange + * @memberof proto.SessionStructure + * @instance + */ + SessionStructure.prototype.pendingKeyExchange = null; + + /** + * SessionStructure pendingPreKey. + * @member {proto.SessionStructure.IPendingPreKey|null|undefined} pendingPreKey + * @memberof proto.SessionStructure + * @instance + */ + SessionStructure.prototype.pendingPreKey = null; + + /** + * SessionStructure remoteRegistrationId. + * @member {number} remoteRegistrationId + * @memberof proto.SessionStructure + * @instance + */ + SessionStructure.prototype.remoteRegistrationId = 0; + + /** + * SessionStructure localRegistrationId. + * @member {number} localRegistrationId + * @memberof proto.SessionStructure + * @instance + */ + SessionStructure.prototype.localRegistrationId = 0; + + /** + * SessionStructure needsRefresh. + * @member {boolean} needsRefresh + * @memberof proto.SessionStructure + * @instance + */ + SessionStructure.prototype.needsRefresh = false; + + /** + * SessionStructure aliceBaseKey. + * @member {Uint8Array} aliceBaseKey + * @memberof proto.SessionStructure + * @instance + */ + SessionStructure.prototype.aliceBaseKey = $util.newBuffer([]); + + /** + * Creates a new SessionStructure instance using the specified properties. + * @function create + * @memberof proto.SessionStructure + * @static + * @param {proto.ISessionStructure=} [properties] Properties to set + * @returns {proto.SessionStructure} SessionStructure instance + */ + SessionStructure.create = function create(properties) { + return new SessionStructure(properties); + }; + + /** + * Encodes the specified SessionStructure message. Does not implicitly {@link proto.SessionStructure.verify|verify} messages. + * @function encode + * @memberof proto.SessionStructure + * @static + * @param {proto.ISessionStructure} message SessionStructure message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SessionStructure.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.sessionVersion != null && Object.hasOwnProperty.call(message, "sessionVersion")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.sessionVersion); + if (message.localIdentityPublic != null && Object.hasOwnProperty.call(message, "localIdentityPublic")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.localIdentityPublic); + if (message.remoteIdentityPublic != null && Object.hasOwnProperty.call(message, "remoteIdentityPublic")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.remoteIdentityPublic); + if (message.rootKey != null && Object.hasOwnProperty.call(message, "rootKey")) + writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.rootKey); + if (message.previousCounter != null && Object.hasOwnProperty.call(message, "previousCounter")) + writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.previousCounter); + if (message.senderChain != null && Object.hasOwnProperty.call(message, "senderChain")) + $root.proto.SessionStructure.Chain.encode(message.senderChain, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.receiverChains != null && message.receiverChains.length) + for (var i = 0; i < message.receiverChains.length; ++i) + $root.proto.SessionStructure.Chain.encode(message.receiverChains[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.pendingKeyExchange != null && Object.hasOwnProperty.call(message, "pendingKeyExchange")) + $root.proto.SessionStructure.PendingKeyExchange.encode(message.pendingKeyExchange, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.pendingPreKey != null && Object.hasOwnProperty.call(message, "pendingPreKey")) + $root.proto.SessionStructure.PendingPreKey.encode(message.pendingPreKey, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.remoteRegistrationId != null && Object.hasOwnProperty.call(message, "remoteRegistrationId")) + writer.uint32(/* id 10, wireType 0 =*/80).uint32(message.remoteRegistrationId); + if (message.localRegistrationId != null && Object.hasOwnProperty.call(message, "localRegistrationId")) + writer.uint32(/* id 11, wireType 0 =*/88).uint32(message.localRegistrationId); + if (message.needsRefresh != null && Object.hasOwnProperty.call(message, "needsRefresh")) + writer.uint32(/* id 12, wireType 0 =*/96).bool(message.needsRefresh); + if (message.aliceBaseKey != null && Object.hasOwnProperty.call(message, "aliceBaseKey")) + writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.aliceBaseKey); + return writer; + }; + + /** + * Encodes the specified SessionStructure message, length delimited. Does not implicitly {@link proto.SessionStructure.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.SessionStructure + * @static + * @param {proto.ISessionStructure} message SessionStructure message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SessionStructure.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SessionStructure message from the specified reader or buffer. + * @function decode + * @memberof proto.SessionStructure + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.SessionStructure} SessionStructure + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SessionStructure.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SessionStructure(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.sessionVersion = reader.uint32(); + break; + case 2: + message.localIdentityPublic = reader.bytes(); + break; + case 3: + message.remoteIdentityPublic = reader.bytes(); + break; + case 4: + message.rootKey = reader.bytes(); + break; + case 5: + message.previousCounter = reader.uint32(); + break; + case 6: + message.senderChain = $root.proto.SessionStructure.Chain.decode(reader, reader.uint32()); + break; + case 7: + if (!(message.receiverChains && message.receiverChains.length)) + message.receiverChains = []; + message.receiverChains.push($root.proto.SessionStructure.Chain.decode(reader, reader.uint32())); + break; + case 8: + message.pendingKeyExchange = $root.proto.SessionStructure.PendingKeyExchange.decode(reader, reader.uint32()); + break; + case 9: + message.pendingPreKey = $root.proto.SessionStructure.PendingPreKey.decode(reader, reader.uint32()); + break; + case 10: + message.remoteRegistrationId = reader.uint32(); + break; + case 11: + message.localRegistrationId = reader.uint32(); + break; + case 12: + message.needsRefresh = reader.bool(); + break; + case 13: + message.aliceBaseKey = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SessionStructure message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.SessionStructure + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.SessionStructure} SessionStructure + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SessionStructure.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SessionStructure message. + * @function verify + * @memberof proto.SessionStructure + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SessionStructure.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.sessionVersion != null && message.hasOwnProperty("sessionVersion")) + if (!$util.isInteger(message.sessionVersion)) + return "sessionVersion: integer expected"; + if (message.localIdentityPublic != null && message.hasOwnProperty("localIdentityPublic")) + if (!(message.localIdentityPublic && typeof message.localIdentityPublic.length === "number" || $util.isString(message.localIdentityPublic))) + return "localIdentityPublic: buffer expected"; + if (message.remoteIdentityPublic != null && message.hasOwnProperty("remoteIdentityPublic")) + if (!(message.remoteIdentityPublic && typeof message.remoteIdentityPublic.length === "number" || $util.isString(message.remoteIdentityPublic))) + return "remoteIdentityPublic: buffer expected"; + if (message.rootKey != null && message.hasOwnProperty("rootKey")) + if (!(message.rootKey && typeof message.rootKey.length === "number" || $util.isString(message.rootKey))) + return "rootKey: buffer expected"; + if (message.previousCounter != null && message.hasOwnProperty("previousCounter")) + if (!$util.isInteger(message.previousCounter)) + return "previousCounter: integer expected"; + if (message.senderChain != null && message.hasOwnProperty("senderChain")) { + var error = $root.proto.SessionStructure.Chain.verify(message.senderChain); + if (error) + return "senderChain." + error; + } + if (message.receiverChains != null && message.hasOwnProperty("receiverChains")) { + if (!Array.isArray(message.receiverChains)) + return "receiverChains: array expected"; + for (var i = 0; i < message.receiverChains.length; ++i) { + var error = $root.proto.SessionStructure.Chain.verify(message.receiverChains[i]); + if (error) + return "receiverChains." + error; + } + } + if (message.pendingKeyExchange != null && message.hasOwnProperty("pendingKeyExchange")) { + var error = $root.proto.SessionStructure.PendingKeyExchange.verify(message.pendingKeyExchange); + if (error) + return "pendingKeyExchange." + error; + } + if (message.pendingPreKey != null && message.hasOwnProperty("pendingPreKey")) { + var error = $root.proto.SessionStructure.PendingPreKey.verify(message.pendingPreKey); + if (error) + return "pendingPreKey." + error; + } + if (message.remoteRegistrationId != null && message.hasOwnProperty("remoteRegistrationId")) + if (!$util.isInteger(message.remoteRegistrationId)) + return "remoteRegistrationId: integer expected"; + if (message.localRegistrationId != null && message.hasOwnProperty("localRegistrationId")) + if (!$util.isInteger(message.localRegistrationId)) + return "localRegistrationId: integer expected"; + if (message.needsRefresh != null && message.hasOwnProperty("needsRefresh")) + if (typeof message.needsRefresh !== "boolean") + return "needsRefresh: boolean expected"; + if (message.aliceBaseKey != null && message.hasOwnProperty("aliceBaseKey")) + if (!(message.aliceBaseKey && typeof message.aliceBaseKey.length === "number" || $util.isString(message.aliceBaseKey))) + return "aliceBaseKey: buffer expected"; + return null; + }; + + /** + * Creates a SessionStructure message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.SessionStructure + * @static + * @param {Object.} object Plain object + * @returns {proto.SessionStructure} SessionStructure + */ + SessionStructure.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SessionStructure) + return object; + var message = new $root.proto.SessionStructure(); + if (object.sessionVersion != null) + message.sessionVersion = object.sessionVersion >>> 0; + if (object.localIdentityPublic != null) + if (typeof object.localIdentityPublic === "string") + $util.base64.decode(object.localIdentityPublic, message.localIdentityPublic = $util.newBuffer($util.base64.length(object.localIdentityPublic)), 0); + else if (object.localIdentityPublic.length) + message.localIdentityPublic = object.localIdentityPublic; + if (object.remoteIdentityPublic != null) + if (typeof object.remoteIdentityPublic === "string") + $util.base64.decode(object.remoteIdentityPublic, message.remoteIdentityPublic = $util.newBuffer($util.base64.length(object.remoteIdentityPublic)), 0); + else if (object.remoteIdentityPublic.length) + message.remoteIdentityPublic = object.remoteIdentityPublic; + if (object.rootKey != null) + if (typeof object.rootKey === "string") + $util.base64.decode(object.rootKey, message.rootKey = $util.newBuffer($util.base64.length(object.rootKey)), 0); + else if (object.rootKey.length) + message.rootKey = object.rootKey; + if (object.previousCounter != null) + message.previousCounter = object.previousCounter >>> 0; + if (object.senderChain != null) { + if (typeof object.senderChain !== "object") + throw TypeError(".proto.SessionStructure.senderChain: object expected"); + message.senderChain = $root.proto.SessionStructure.Chain.fromObject(object.senderChain); + } + if (object.receiverChains) { + if (!Array.isArray(object.receiverChains)) + throw TypeError(".proto.SessionStructure.receiverChains: array expected"); + message.receiverChains = []; + for (var i = 0; i < object.receiverChains.length; ++i) { + if (typeof object.receiverChains[i] !== "object") + throw TypeError(".proto.SessionStructure.receiverChains: object expected"); + message.receiverChains[i] = $root.proto.SessionStructure.Chain.fromObject(object.receiverChains[i]); + } + } + if (object.pendingKeyExchange != null) { + if (typeof object.pendingKeyExchange !== "object") + throw TypeError(".proto.SessionStructure.pendingKeyExchange: object expected"); + message.pendingKeyExchange = $root.proto.SessionStructure.PendingKeyExchange.fromObject(object.pendingKeyExchange); + } + if (object.pendingPreKey != null) { + if (typeof object.pendingPreKey !== "object") + throw TypeError(".proto.SessionStructure.pendingPreKey: object expected"); + message.pendingPreKey = $root.proto.SessionStructure.PendingPreKey.fromObject(object.pendingPreKey); + } + if (object.remoteRegistrationId != null) + message.remoteRegistrationId = object.remoteRegistrationId >>> 0; + if (object.localRegistrationId != null) + message.localRegistrationId = object.localRegistrationId >>> 0; + if (object.needsRefresh != null) + message.needsRefresh = Boolean(object.needsRefresh); + if (object.aliceBaseKey != null) + if (typeof object.aliceBaseKey === "string") + $util.base64.decode(object.aliceBaseKey, message.aliceBaseKey = $util.newBuffer($util.base64.length(object.aliceBaseKey)), 0); + else if (object.aliceBaseKey.length) + message.aliceBaseKey = object.aliceBaseKey; + return message; + }; + + /** + * Creates a plain object from a SessionStructure message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.SessionStructure + * @static + * @param {proto.SessionStructure} message SessionStructure + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SessionStructure.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.receiverChains = []; + if (options.defaults) { + object.sessionVersion = 0; + if (options.bytes === String) + object.localIdentityPublic = ""; + else { + object.localIdentityPublic = []; + if (options.bytes !== Array) + object.localIdentityPublic = $util.newBuffer(object.localIdentityPublic); + } + if (options.bytes === String) + object.remoteIdentityPublic = ""; + else { + object.remoteIdentityPublic = []; + if (options.bytes !== Array) + object.remoteIdentityPublic = $util.newBuffer(object.remoteIdentityPublic); + } + if (options.bytes === String) + object.rootKey = ""; + else { + object.rootKey = []; + if (options.bytes !== Array) + object.rootKey = $util.newBuffer(object.rootKey); + } + object.previousCounter = 0; + object.senderChain = null; + object.pendingKeyExchange = null; + object.pendingPreKey = null; + object.remoteRegistrationId = 0; + object.localRegistrationId = 0; + object.needsRefresh = false; + if (options.bytes === String) + object.aliceBaseKey = ""; + else { + object.aliceBaseKey = []; + if (options.bytes !== Array) + object.aliceBaseKey = $util.newBuffer(object.aliceBaseKey); + } + } + if (message.sessionVersion != null && message.hasOwnProperty("sessionVersion")) + object.sessionVersion = message.sessionVersion; + if (message.localIdentityPublic != null && message.hasOwnProperty("localIdentityPublic")) + object.localIdentityPublic = options.bytes === String ? $util.base64.encode(message.localIdentityPublic, 0, message.localIdentityPublic.length) : options.bytes === Array ? Array.prototype.slice.call(message.localIdentityPublic) : message.localIdentityPublic; + if (message.remoteIdentityPublic != null && message.hasOwnProperty("remoteIdentityPublic")) + object.remoteIdentityPublic = options.bytes === String ? $util.base64.encode(message.remoteIdentityPublic, 0, message.remoteIdentityPublic.length) : options.bytes === Array ? Array.prototype.slice.call(message.remoteIdentityPublic) : message.remoteIdentityPublic; + if (message.rootKey != null && message.hasOwnProperty("rootKey")) + object.rootKey = options.bytes === String ? $util.base64.encode(message.rootKey, 0, message.rootKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.rootKey) : message.rootKey; + if (message.previousCounter != null && message.hasOwnProperty("previousCounter")) + object.previousCounter = message.previousCounter; + if (message.senderChain != null && message.hasOwnProperty("senderChain")) + object.senderChain = $root.proto.SessionStructure.Chain.toObject(message.senderChain, options); + if (message.receiverChains && message.receiverChains.length) { + object.receiverChains = []; + for (var j = 0; j < message.receiverChains.length; ++j) + object.receiverChains[j] = $root.proto.SessionStructure.Chain.toObject(message.receiverChains[j], options); + } + if (message.pendingKeyExchange != null && message.hasOwnProperty("pendingKeyExchange")) + object.pendingKeyExchange = $root.proto.SessionStructure.PendingKeyExchange.toObject(message.pendingKeyExchange, options); + if (message.pendingPreKey != null && message.hasOwnProperty("pendingPreKey")) + object.pendingPreKey = $root.proto.SessionStructure.PendingPreKey.toObject(message.pendingPreKey, options); + if (message.remoteRegistrationId != null && message.hasOwnProperty("remoteRegistrationId")) + object.remoteRegistrationId = message.remoteRegistrationId; + if (message.localRegistrationId != null && message.hasOwnProperty("localRegistrationId")) + object.localRegistrationId = message.localRegistrationId; + if (message.needsRefresh != null && message.hasOwnProperty("needsRefresh")) + object.needsRefresh = message.needsRefresh; + if (message.aliceBaseKey != null && message.hasOwnProperty("aliceBaseKey")) + object.aliceBaseKey = options.bytes === String ? $util.base64.encode(message.aliceBaseKey, 0, message.aliceBaseKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.aliceBaseKey) : message.aliceBaseKey; + return object; + }; + + /** + * Converts this SessionStructure to JSON. + * @function toJSON + * @memberof proto.SessionStructure + * @instance + * @returns {Object.} JSON object + */ + SessionStructure.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + SessionStructure.Chain = (function() { + + /** + * Properties of a Chain. + * @memberof proto.SessionStructure + * @interface IChain + * @property {Uint8Array|null} [senderRatchetKey] Chain senderRatchetKey + * @property {Uint8Array|null} [senderRatchetKeyPrivate] Chain senderRatchetKeyPrivate + * @property {proto.SessionStructure.Chain.IChainKey|null} [chainKey] Chain chainKey + * @property {Array.|null} [messageKeys] Chain messageKeys + */ + + /** + * Constructs a new Chain. + * @memberof proto.SessionStructure + * @classdesc Represents a Chain. + * @implements IChain + * @constructor + * @param {proto.SessionStructure.IChain=} [properties] Properties to set + */ + function Chain(properties) { + this.messageKeys = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Chain senderRatchetKey. + * @member {Uint8Array} senderRatchetKey + * @memberof proto.SessionStructure.Chain + * @instance + */ + Chain.prototype.senderRatchetKey = $util.newBuffer([]); + + /** + * Chain senderRatchetKeyPrivate. + * @member {Uint8Array} senderRatchetKeyPrivate + * @memberof proto.SessionStructure.Chain + * @instance + */ + Chain.prototype.senderRatchetKeyPrivate = $util.newBuffer([]); + + /** + * Chain chainKey. + * @member {proto.SessionStructure.Chain.IChainKey|null|undefined} chainKey + * @memberof proto.SessionStructure.Chain + * @instance + */ + Chain.prototype.chainKey = null; + + /** + * Chain messageKeys. + * @member {Array.} messageKeys + * @memberof proto.SessionStructure.Chain + * @instance + */ + Chain.prototype.messageKeys = $util.emptyArray; + + /** + * Creates a new Chain instance using the specified properties. + * @function create + * @memberof proto.SessionStructure.Chain + * @static + * @param {proto.SessionStructure.IChain=} [properties] Properties to set + * @returns {proto.SessionStructure.Chain} Chain instance + */ + Chain.create = function create(properties) { + return new Chain(properties); + }; + + /** + * Encodes the specified Chain message. Does not implicitly {@link proto.SessionStructure.Chain.verify|verify} messages. + * @function encode + * @memberof proto.SessionStructure.Chain + * @static + * @param {proto.SessionStructure.IChain} message Chain message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Chain.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.senderRatchetKey != null && Object.hasOwnProperty.call(message, "senderRatchetKey")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.senderRatchetKey); + if (message.senderRatchetKeyPrivate != null && Object.hasOwnProperty.call(message, "senderRatchetKeyPrivate")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.senderRatchetKeyPrivate); + if (message.chainKey != null && Object.hasOwnProperty.call(message, "chainKey")) + $root.proto.SessionStructure.Chain.ChainKey.encode(message.chainKey, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.messageKeys != null && message.messageKeys.length) + for (var i = 0; i < message.messageKeys.length; ++i) + $root.proto.SessionStructure.Chain.MessageKey.encode(message.messageKeys[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Chain message, length delimited. Does not implicitly {@link proto.SessionStructure.Chain.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.SessionStructure.Chain + * @static + * @param {proto.SessionStructure.IChain} message Chain message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Chain.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Chain message from the specified reader or buffer. + * @function decode + * @memberof proto.SessionStructure.Chain + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.SessionStructure.Chain} Chain + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Chain.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SessionStructure.Chain(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.senderRatchetKey = reader.bytes(); + break; + case 2: + message.senderRatchetKeyPrivate = reader.bytes(); + break; + case 3: + message.chainKey = $root.proto.SessionStructure.Chain.ChainKey.decode(reader, reader.uint32()); + break; + case 4: + if (!(message.messageKeys && message.messageKeys.length)) + message.messageKeys = []; + message.messageKeys.push($root.proto.SessionStructure.Chain.MessageKey.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Chain message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.SessionStructure.Chain + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.SessionStructure.Chain} Chain + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Chain.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Chain message. + * @function verify + * @memberof proto.SessionStructure.Chain + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Chain.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.senderRatchetKey != null && message.hasOwnProperty("senderRatchetKey")) + if (!(message.senderRatchetKey && typeof message.senderRatchetKey.length === "number" || $util.isString(message.senderRatchetKey))) + return "senderRatchetKey: buffer expected"; + if (message.senderRatchetKeyPrivate != null && message.hasOwnProperty("senderRatchetKeyPrivate")) + if (!(message.senderRatchetKeyPrivate && typeof message.senderRatchetKeyPrivate.length === "number" || $util.isString(message.senderRatchetKeyPrivate))) + return "senderRatchetKeyPrivate: buffer expected"; + if (message.chainKey != null && message.hasOwnProperty("chainKey")) { + var error = $root.proto.SessionStructure.Chain.ChainKey.verify(message.chainKey); + if (error) + return "chainKey." + error; + } + if (message.messageKeys != null && message.hasOwnProperty("messageKeys")) { + if (!Array.isArray(message.messageKeys)) + return "messageKeys: array expected"; + for (var i = 0; i < message.messageKeys.length; ++i) { + var error = $root.proto.SessionStructure.Chain.MessageKey.verify(message.messageKeys[i]); + if (error) + return "messageKeys." + error; + } + } + return null; + }; + + /** + * Creates a Chain message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.SessionStructure.Chain + * @static + * @param {Object.} object Plain object + * @returns {proto.SessionStructure.Chain} Chain + */ + Chain.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SessionStructure.Chain) + return object; + var message = new $root.proto.SessionStructure.Chain(); + if (object.senderRatchetKey != null) + if (typeof object.senderRatchetKey === "string") + $util.base64.decode(object.senderRatchetKey, message.senderRatchetKey = $util.newBuffer($util.base64.length(object.senderRatchetKey)), 0); + else if (object.senderRatchetKey.length) + message.senderRatchetKey = object.senderRatchetKey; + if (object.senderRatchetKeyPrivate != null) + if (typeof object.senderRatchetKeyPrivate === "string") + $util.base64.decode(object.senderRatchetKeyPrivate, message.senderRatchetKeyPrivate = $util.newBuffer($util.base64.length(object.senderRatchetKeyPrivate)), 0); + else if (object.senderRatchetKeyPrivate.length) + message.senderRatchetKeyPrivate = object.senderRatchetKeyPrivate; + if (object.chainKey != null) { + if (typeof object.chainKey !== "object") + throw TypeError(".proto.SessionStructure.Chain.chainKey: object expected"); + message.chainKey = $root.proto.SessionStructure.Chain.ChainKey.fromObject(object.chainKey); + } + if (object.messageKeys) { + if (!Array.isArray(object.messageKeys)) + throw TypeError(".proto.SessionStructure.Chain.messageKeys: array expected"); + message.messageKeys = []; + for (var i = 0; i < object.messageKeys.length; ++i) { + if (typeof object.messageKeys[i] !== "object") + throw TypeError(".proto.SessionStructure.Chain.messageKeys: object expected"); + message.messageKeys[i] = $root.proto.SessionStructure.Chain.MessageKey.fromObject(object.messageKeys[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a Chain message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.SessionStructure.Chain + * @static + * @param {proto.SessionStructure.Chain} message Chain + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Chain.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.messageKeys = []; + if (options.defaults) { + if (options.bytes === String) + object.senderRatchetKey = ""; + else { + object.senderRatchetKey = []; + if (options.bytes !== Array) + object.senderRatchetKey = $util.newBuffer(object.senderRatchetKey); + } + if (options.bytes === String) + object.senderRatchetKeyPrivate = ""; + else { + object.senderRatchetKeyPrivate = []; + if (options.bytes !== Array) + object.senderRatchetKeyPrivate = $util.newBuffer(object.senderRatchetKeyPrivate); + } + object.chainKey = null; + } + if (message.senderRatchetKey != null && message.hasOwnProperty("senderRatchetKey")) + object.senderRatchetKey = options.bytes === String ? $util.base64.encode(message.senderRatchetKey, 0, message.senderRatchetKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.senderRatchetKey) : message.senderRatchetKey; + if (message.senderRatchetKeyPrivate != null && message.hasOwnProperty("senderRatchetKeyPrivate")) + object.senderRatchetKeyPrivate = options.bytes === String ? $util.base64.encode(message.senderRatchetKeyPrivate, 0, message.senderRatchetKeyPrivate.length) : options.bytes === Array ? Array.prototype.slice.call(message.senderRatchetKeyPrivate) : message.senderRatchetKeyPrivate; + if (message.chainKey != null && message.hasOwnProperty("chainKey")) + object.chainKey = $root.proto.SessionStructure.Chain.ChainKey.toObject(message.chainKey, options); + if (message.messageKeys && message.messageKeys.length) { + object.messageKeys = []; + for (var j = 0; j < message.messageKeys.length; ++j) + object.messageKeys[j] = $root.proto.SessionStructure.Chain.MessageKey.toObject(message.messageKeys[j], options); + } + return object; + }; + + /** + * Converts this Chain to JSON. + * @function toJSON + * @memberof proto.SessionStructure.Chain + * @instance + * @returns {Object.} JSON object + */ + Chain.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + Chain.ChainKey = (function() { + + /** + * Properties of a ChainKey. + * @memberof proto.SessionStructure.Chain + * @interface IChainKey + * @property {number|null} [index] ChainKey index + * @property {Uint8Array|null} [key] ChainKey key + */ + + /** + * Constructs a new ChainKey. + * @memberof proto.SessionStructure.Chain + * @classdesc Represents a ChainKey. + * @implements IChainKey + * @constructor + * @param {proto.SessionStructure.Chain.IChainKey=} [properties] Properties to set + */ + function ChainKey(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ChainKey index. + * @member {number} index + * @memberof proto.SessionStructure.Chain.ChainKey + * @instance + */ + ChainKey.prototype.index = 0; + + /** + * ChainKey key. + * @member {Uint8Array} key + * @memberof proto.SessionStructure.Chain.ChainKey + * @instance + */ + ChainKey.prototype.key = $util.newBuffer([]); + + /** + * Creates a new ChainKey instance using the specified properties. + * @function create + * @memberof proto.SessionStructure.Chain.ChainKey + * @static + * @param {proto.SessionStructure.Chain.IChainKey=} [properties] Properties to set + * @returns {proto.SessionStructure.Chain.ChainKey} ChainKey instance + */ + ChainKey.create = function create(properties) { + return new ChainKey(properties); + }; + + /** + * Encodes the specified ChainKey message. Does not implicitly {@link proto.SessionStructure.Chain.ChainKey.verify|verify} messages. + * @function encode + * @memberof proto.SessionStructure.Chain.ChainKey + * @static + * @param {proto.SessionStructure.Chain.IChainKey} message ChainKey message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ChainKey.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.index != null && Object.hasOwnProperty.call(message, "index")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.index); + if (message.key != null && Object.hasOwnProperty.call(message, "key")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.key); + return writer; + }; + + /** + * Encodes the specified ChainKey message, length delimited. Does not implicitly {@link proto.SessionStructure.Chain.ChainKey.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.SessionStructure.Chain.ChainKey + * @static + * @param {proto.SessionStructure.Chain.IChainKey} message ChainKey message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ChainKey.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ChainKey message from the specified reader or buffer. + * @function decode + * @memberof proto.SessionStructure.Chain.ChainKey + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.SessionStructure.Chain.ChainKey} ChainKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ChainKey.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SessionStructure.Chain.ChainKey(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.index = reader.uint32(); + break; + case 2: + message.key = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ChainKey message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.SessionStructure.Chain.ChainKey + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.SessionStructure.Chain.ChainKey} ChainKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ChainKey.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ChainKey message. + * @function verify + * @memberof proto.SessionStructure.Chain.ChainKey + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ChainKey.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.index != null && message.hasOwnProperty("index")) + if (!$util.isInteger(message.index)) + return "index: integer expected"; + if (message.key != null && message.hasOwnProperty("key")) + if (!(message.key && typeof message.key.length === "number" || $util.isString(message.key))) + return "key: buffer expected"; + return null; + }; + + /** + * Creates a ChainKey message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.SessionStructure.Chain.ChainKey + * @static + * @param {Object.} object Plain object + * @returns {proto.SessionStructure.Chain.ChainKey} ChainKey + */ + ChainKey.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SessionStructure.Chain.ChainKey) + return object; + var message = new $root.proto.SessionStructure.Chain.ChainKey(); + if (object.index != null) + message.index = object.index >>> 0; + if (object.key != null) + if (typeof object.key === "string") + $util.base64.decode(object.key, message.key = $util.newBuffer($util.base64.length(object.key)), 0); + else if (object.key.length) + message.key = object.key; + return message; + }; + + /** + * Creates a plain object from a ChainKey message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.SessionStructure.Chain.ChainKey + * @static + * @param {proto.SessionStructure.Chain.ChainKey} message ChainKey + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ChainKey.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.index = 0; + if (options.bytes === String) + object.key = ""; + else { + object.key = []; + if (options.bytes !== Array) + object.key = $util.newBuffer(object.key); + } + } + if (message.index != null && message.hasOwnProperty("index")) + object.index = message.index; + if (message.key != null && message.hasOwnProperty("key")) + object.key = options.bytes === String ? $util.base64.encode(message.key, 0, message.key.length) : options.bytes === Array ? Array.prototype.slice.call(message.key) : message.key; + return object; + }; + + /** + * Converts this ChainKey to JSON. + * @function toJSON + * @memberof proto.SessionStructure.Chain.ChainKey + * @instance + * @returns {Object.} JSON object + */ + ChainKey.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ChainKey; + })(); + + Chain.MessageKey = (function() { + + /** + * Properties of a MessageKey. + * @memberof proto.SessionStructure.Chain + * @interface IMessageKey + * @property {number|null} [index] MessageKey index + * @property {Uint8Array|null} [cipherKey] MessageKey cipherKey + * @property {Uint8Array|null} [macKey] MessageKey macKey + * @property {Uint8Array|null} [iv] MessageKey iv + */ + + /** + * Constructs a new MessageKey. + * @memberof proto.SessionStructure.Chain + * @classdesc Represents a MessageKey. + * @implements IMessageKey + * @constructor + * @param {proto.SessionStructure.Chain.IMessageKey=} [properties] Properties to set + */ + function MessageKey(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MessageKey index. + * @member {number} index + * @memberof proto.SessionStructure.Chain.MessageKey + * @instance + */ + MessageKey.prototype.index = 0; + + /** + * MessageKey cipherKey. + * @member {Uint8Array} cipherKey + * @memberof proto.SessionStructure.Chain.MessageKey + * @instance + */ + MessageKey.prototype.cipherKey = $util.newBuffer([]); + + /** + * MessageKey macKey. + * @member {Uint8Array} macKey + * @memberof proto.SessionStructure.Chain.MessageKey + * @instance + */ + MessageKey.prototype.macKey = $util.newBuffer([]); + + /** + * MessageKey iv. + * @member {Uint8Array} iv + * @memberof proto.SessionStructure.Chain.MessageKey + * @instance + */ + MessageKey.prototype.iv = $util.newBuffer([]); + + /** + * Creates a new MessageKey instance using the specified properties. + * @function create + * @memberof proto.SessionStructure.Chain.MessageKey + * @static + * @param {proto.SessionStructure.Chain.IMessageKey=} [properties] Properties to set + * @returns {proto.SessionStructure.Chain.MessageKey} MessageKey instance + */ + MessageKey.create = function create(properties) { + return new MessageKey(properties); + }; + + /** + * Encodes the specified MessageKey message. Does not implicitly {@link proto.SessionStructure.Chain.MessageKey.verify|verify} messages. + * @function encode + * @memberof proto.SessionStructure.Chain.MessageKey + * @static + * @param {proto.SessionStructure.Chain.IMessageKey} message MessageKey message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MessageKey.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.index != null && Object.hasOwnProperty.call(message, "index")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.index); + if (message.cipherKey != null && Object.hasOwnProperty.call(message, "cipherKey")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.cipherKey); + if (message.macKey != null && Object.hasOwnProperty.call(message, "macKey")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.macKey); + if (message.iv != null && Object.hasOwnProperty.call(message, "iv")) + writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.iv); + return writer; + }; + + /** + * Encodes the specified MessageKey message, length delimited. Does not implicitly {@link proto.SessionStructure.Chain.MessageKey.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.SessionStructure.Chain.MessageKey + * @static + * @param {proto.SessionStructure.Chain.IMessageKey} message MessageKey message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MessageKey.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MessageKey message from the specified reader or buffer. + * @function decode + * @memberof proto.SessionStructure.Chain.MessageKey + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.SessionStructure.Chain.MessageKey} MessageKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MessageKey.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SessionStructure.Chain.MessageKey(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.index = reader.uint32(); + break; + case 2: + message.cipherKey = reader.bytes(); + break; + case 3: + message.macKey = reader.bytes(); + break; + case 4: + message.iv = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MessageKey message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.SessionStructure.Chain.MessageKey + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.SessionStructure.Chain.MessageKey} MessageKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MessageKey.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MessageKey message. + * @function verify + * @memberof proto.SessionStructure.Chain.MessageKey + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MessageKey.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.index != null && message.hasOwnProperty("index")) + if (!$util.isInteger(message.index)) + return "index: integer expected"; + if (message.cipherKey != null && message.hasOwnProperty("cipherKey")) + if (!(message.cipherKey && typeof message.cipherKey.length === "number" || $util.isString(message.cipherKey))) + return "cipherKey: buffer expected"; + if (message.macKey != null && message.hasOwnProperty("macKey")) + if (!(message.macKey && typeof message.macKey.length === "number" || $util.isString(message.macKey))) + return "macKey: buffer expected"; + if (message.iv != null && message.hasOwnProperty("iv")) + if (!(message.iv && typeof message.iv.length === "number" || $util.isString(message.iv))) + return "iv: buffer expected"; + return null; + }; + + /** + * Creates a MessageKey message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.SessionStructure.Chain.MessageKey + * @static + * @param {Object.} object Plain object + * @returns {proto.SessionStructure.Chain.MessageKey} MessageKey + */ + MessageKey.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SessionStructure.Chain.MessageKey) + return object; + var message = new $root.proto.SessionStructure.Chain.MessageKey(); + if (object.index != null) + message.index = object.index >>> 0; + if (object.cipherKey != null) + if (typeof object.cipherKey === "string") + $util.base64.decode(object.cipherKey, message.cipherKey = $util.newBuffer($util.base64.length(object.cipherKey)), 0); + else if (object.cipherKey.length) + message.cipherKey = object.cipherKey; + if (object.macKey != null) + if (typeof object.macKey === "string") + $util.base64.decode(object.macKey, message.macKey = $util.newBuffer($util.base64.length(object.macKey)), 0); + else if (object.macKey.length) + message.macKey = object.macKey; + if (object.iv != null) + if (typeof object.iv === "string") + $util.base64.decode(object.iv, message.iv = $util.newBuffer($util.base64.length(object.iv)), 0); + else if (object.iv.length) + message.iv = object.iv; + return message; + }; + + /** + * Creates a plain object from a MessageKey message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.SessionStructure.Chain.MessageKey + * @static + * @param {proto.SessionStructure.Chain.MessageKey} message MessageKey + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MessageKey.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.index = 0; + if (options.bytes === String) + object.cipherKey = ""; + else { + object.cipherKey = []; + if (options.bytes !== Array) + object.cipherKey = $util.newBuffer(object.cipherKey); + } + if (options.bytes === String) + object.macKey = ""; + else { + object.macKey = []; + if (options.bytes !== Array) + object.macKey = $util.newBuffer(object.macKey); + } + if (options.bytes === String) + object.iv = ""; + else { + object.iv = []; + if (options.bytes !== Array) + object.iv = $util.newBuffer(object.iv); + } + } + if (message.index != null && message.hasOwnProperty("index")) + object.index = message.index; + if (message.cipherKey != null && message.hasOwnProperty("cipherKey")) + object.cipherKey = options.bytes === String ? $util.base64.encode(message.cipherKey, 0, message.cipherKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.cipherKey) : message.cipherKey; + if (message.macKey != null && message.hasOwnProperty("macKey")) + object.macKey = options.bytes === String ? $util.base64.encode(message.macKey, 0, message.macKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.macKey) : message.macKey; + if (message.iv != null && message.hasOwnProperty("iv")) + object.iv = options.bytes === String ? $util.base64.encode(message.iv, 0, message.iv.length) : options.bytes === Array ? Array.prototype.slice.call(message.iv) : message.iv; + return object; + }; + + /** + * Converts this MessageKey to JSON. + * @function toJSON + * @memberof proto.SessionStructure.Chain.MessageKey + * @instance + * @returns {Object.} JSON object + */ + MessageKey.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return MessageKey; + })(); + + return Chain; + })(); + + SessionStructure.PendingKeyExchange = (function() { + + /** + * Properties of a PendingKeyExchange. + * @memberof proto.SessionStructure + * @interface IPendingKeyExchange + * @property {number|null} [sequence] PendingKeyExchange sequence + * @property {Uint8Array|null} [localBaseKey] PendingKeyExchange localBaseKey + * @property {Uint8Array|null} [localBaseKeyPrivate] PendingKeyExchange localBaseKeyPrivate + * @property {Uint8Array|null} [localRatchetKey] PendingKeyExchange localRatchetKey + * @property {Uint8Array|null} [localRatchetKeyPrivate] PendingKeyExchange localRatchetKeyPrivate + * @property {Uint8Array|null} [localIdentityKey] PendingKeyExchange localIdentityKey + * @property {Uint8Array|null} [localIdentityKeyPrivate] PendingKeyExchange localIdentityKeyPrivate + */ + + /** + * Constructs a new PendingKeyExchange. + * @memberof proto.SessionStructure + * @classdesc Represents a PendingKeyExchange. + * @implements IPendingKeyExchange + * @constructor + * @param {proto.SessionStructure.IPendingKeyExchange=} [properties] Properties to set + */ + function PendingKeyExchange(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PendingKeyExchange sequence. + * @member {number} sequence + * @memberof proto.SessionStructure.PendingKeyExchange + * @instance + */ + PendingKeyExchange.prototype.sequence = 0; + + /** + * PendingKeyExchange localBaseKey. + * @member {Uint8Array} localBaseKey + * @memberof proto.SessionStructure.PendingKeyExchange + * @instance + */ + PendingKeyExchange.prototype.localBaseKey = $util.newBuffer([]); + + /** + * PendingKeyExchange localBaseKeyPrivate. + * @member {Uint8Array} localBaseKeyPrivate + * @memberof proto.SessionStructure.PendingKeyExchange + * @instance + */ + PendingKeyExchange.prototype.localBaseKeyPrivate = $util.newBuffer([]); + + /** + * PendingKeyExchange localRatchetKey. + * @member {Uint8Array} localRatchetKey + * @memberof proto.SessionStructure.PendingKeyExchange + * @instance + */ + PendingKeyExchange.prototype.localRatchetKey = $util.newBuffer([]); + + /** + * PendingKeyExchange localRatchetKeyPrivate. + * @member {Uint8Array} localRatchetKeyPrivate + * @memberof proto.SessionStructure.PendingKeyExchange + * @instance + */ + PendingKeyExchange.prototype.localRatchetKeyPrivate = $util.newBuffer([]); + + /** + * PendingKeyExchange localIdentityKey. + * @member {Uint8Array} localIdentityKey + * @memberof proto.SessionStructure.PendingKeyExchange + * @instance + */ + PendingKeyExchange.prototype.localIdentityKey = $util.newBuffer([]); + + /** + * PendingKeyExchange localIdentityKeyPrivate. + * @member {Uint8Array} localIdentityKeyPrivate + * @memberof proto.SessionStructure.PendingKeyExchange + * @instance + */ + PendingKeyExchange.prototype.localIdentityKeyPrivate = $util.newBuffer([]); + + /** + * Creates a new PendingKeyExchange instance using the specified properties. + * @function create + * @memberof proto.SessionStructure.PendingKeyExchange + * @static + * @param {proto.SessionStructure.IPendingKeyExchange=} [properties] Properties to set + * @returns {proto.SessionStructure.PendingKeyExchange} PendingKeyExchange instance + */ + PendingKeyExchange.create = function create(properties) { + return new PendingKeyExchange(properties); + }; + + /** + * Encodes the specified PendingKeyExchange message. Does not implicitly {@link proto.SessionStructure.PendingKeyExchange.verify|verify} messages. + * @function encode + * @memberof proto.SessionStructure.PendingKeyExchange + * @static + * @param {proto.SessionStructure.IPendingKeyExchange} message PendingKeyExchange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PendingKeyExchange.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.sequence != null && Object.hasOwnProperty.call(message, "sequence")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.sequence); + if (message.localBaseKey != null && Object.hasOwnProperty.call(message, "localBaseKey")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.localBaseKey); + if (message.localBaseKeyPrivate != null && Object.hasOwnProperty.call(message, "localBaseKeyPrivate")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.localBaseKeyPrivate); + if (message.localRatchetKey != null && Object.hasOwnProperty.call(message, "localRatchetKey")) + writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.localRatchetKey); + if (message.localRatchetKeyPrivate != null && Object.hasOwnProperty.call(message, "localRatchetKeyPrivate")) + writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.localRatchetKeyPrivate); + if (message.localIdentityKey != null && Object.hasOwnProperty.call(message, "localIdentityKey")) + writer.uint32(/* id 7, wireType 2 =*/58).bytes(message.localIdentityKey); + if (message.localIdentityKeyPrivate != null && Object.hasOwnProperty.call(message, "localIdentityKeyPrivate")) + writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.localIdentityKeyPrivate); + return writer; + }; + + /** + * Encodes the specified PendingKeyExchange message, length delimited. Does not implicitly {@link proto.SessionStructure.PendingKeyExchange.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.SessionStructure.PendingKeyExchange + * @static + * @param {proto.SessionStructure.IPendingKeyExchange} message PendingKeyExchange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PendingKeyExchange.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PendingKeyExchange message from the specified reader or buffer. + * @function decode + * @memberof proto.SessionStructure.PendingKeyExchange + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.SessionStructure.PendingKeyExchange} PendingKeyExchange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PendingKeyExchange.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SessionStructure.PendingKeyExchange(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.sequence = reader.uint32(); + break; + case 2: + message.localBaseKey = reader.bytes(); + break; + case 3: + message.localBaseKeyPrivate = reader.bytes(); + break; + case 4: + message.localRatchetKey = reader.bytes(); + break; + case 5: + message.localRatchetKeyPrivate = reader.bytes(); + break; + case 7: + message.localIdentityKey = reader.bytes(); + break; + case 8: + message.localIdentityKeyPrivate = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PendingKeyExchange message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.SessionStructure.PendingKeyExchange + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.SessionStructure.PendingKeyExchange} PendingKeyExchange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PendingKeyExchange.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PendingKeyExchange message. + * @function verify + * @memberof proto.SessionStructure.PendingKeyExchange + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PendingKeyExchange.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.sequence != null && message.hasOwnProperty("sequence")) + if (!$util.isInteger(message.sequence)) + return "sequence: integer expected"; + if (message.localBaseKey != null && message.hasOwnProperty("localBaseKey")) + if (!(message.localBaseKey && typeof message.localBaseKey.length === "number" || $util.isString(message.localBaseKey))) + return "localBaseKey: buffer expected"; + if (message.localBaseKeyPrivate != null && message.hasOwnProperty("localBaseKeyPrivate")) + if (!(message.localBaseKeyPrivate && typeof message.localBaseKeyPrivate.length === "number" || $util.isString(message.localBaseKeyPrivate))) + return "localBaseKeyPrivate: buffer expected"; + if (message.localRatchetKey != null && message.hasOwnProperty("localRatchetKey")) + if (!(message.localRatchetKey && typeof message.localRatchetKey.length === "number" || $util.isString(message.localRatchetKey))) + return "localRatchetKey: buffer expected"; + if (message.localRatchetKeyPrivate != null && message.hasOwnProperty("localRatchetKeyPrivate")) + if (!(message.localRatchetKeyPrivate && typeof message.localRatchetKeyPrivate.length === "number" || $util.isString(message.localRatchetKeyPrivate))) + return "localRatchetKeyPrivate: buffer expected"; + if (message.localIdentityKey != null && message.hasOwnProperty("localIdentityKey")) + if (!(message.localIdentityKey && typeof message.localIdentityKey.length === "number" || $util.isString(message.localIdentityKey))) + return "localIdentityKey: buffer expected"; + if (message.localIdentityKeyPrivate != null && message.hasOwnProperty("localIdentityKeyPrivate")) + if (!(message.localIdentityKeyPrivate && typeof message.localIdentityKeyPrivate.length === "number" || $util.isString(message.localIdentityKeyPrivate))) + return "localIdentityKeyPrivate: buffer expected"; + return null; + }; + + /** + * Creates a PendingKeyExchange message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.SessionStructure.PendingKeyExchange + * @static + * @param {Object.} object Plain object + * @returns {proto.SessionStructure.PendingKeyExchange} PendingKeyExchange + */ + PendingKeyExchange.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SessionStructure.PendingKeyExchange) + return object; + var message = new $root.proto.SessionStructure.PendingKeyExchange(); + if (object.sequence != null) + message.sequence = object.sequence >>> 0; + if (object.localBaseKey != null) + if (typeof object.localBaseKey === "string") + $util.base64.decode(object.localBaseKey, message.localBaseKey = $util.newBuffer($util.base64.length(object.localBaseKey)), 0); + else if (object.localBaseKey.length) + message.localBaseKey = object.localBaseKey; + if (object.localBaseKeyPrivate != null) + if (typeof object.localBaseKeyPrivate === "string") + $util.base64.decode(object.localBaseKeyPrivate, message.localBaseKeyPrivate = $util.newBuffer($util.base64.length(object.localBaseKeyPrivate)), 0); + else if (object.localBaseKeyPrivate.length) + message.localBaseKeyPrivate = object.localBaseKeyPrivate; + if (object.localRatchetKey != null) + if (typeof object.localRatchetKey === "string") + $util.base64.decode(object.localRatchetKey, message.localRatchetKey = $util.newBuffer($util.base64.length(object.localRatchetKey)), 0); + else if (object.localRatchetKey.length) + message.localRatchetKey = object.localRatchetKey; + if (object.localRatchetKeyPrivate != null) + if (typeof object.localRatchetKeyPrivate === "string") + $util.base64.decode(object.localRatchetKeyPrivate, message.localRatchetKeyPrivate = $util.newBuffer($util.base64.length(object.localRatchetKeyPrivate)), 0); + else if (object.localRatchetKeyPrivate.length) + message.localRatchetKeyPrivate = object.localRatchetKeyPrivate; + if (object.localIdentityKey != null) + if (typeof object.localIdentityKey === "string") + $util.base64.decode(object.localIdentityKey, message.localIdentityKey = $util.newBuffer($util.base64.length(object.localIdentityKey)), 0); + else if (object.localIdentityKey.length) + message.localIdentityKey = object.localIdentityKey; + if (object.localIdentityKeyPrivate != null) + if (typeof object.localIdentityKeyPrivate === "string") + $util.base64.decode(object.localIdentityKeyPrivate, message.localIdentityKeyPrivate = $util.newBuffer($util.base64.length(object.localIdentityKeyPrivate)), 0); + else if (object.localIdentityKeyPrivate.length) + message.localIdentityKeyPrivate = object.localIdentityKeyPrivate; + return message; + }; + + /** + * Creates a plain object from a PendingKeyExchange message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.SessionStructure.PendingKeyExchange + * @static + * @param {proto.SessionStructure.PendingKeyExchange} message PendingKeyExchange + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PendingKeyExchange.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.sequence = 0; + if (options.bytes === String) + object.localBaseKey = ""; + else { + object.localBaseKey = []; + if (options.bytes !== Array) + object.localBaseKey = $util.newBuffer(object.localBaseKey); + } + if (options.bytes === String) + object.localBaseKeyPrivate = ""; + else { + object.localBaseKeyPrivate = []; + if (options.bytes !== Array) + object.localBaseKeyPrivate = $util.newBuffer(object.localBaseKeyPrivate); + } + if (options.bytes === String) + object.localRatchetKey = ""; + else { + object.localRatchetKey = []; + if (options.bytes !== Array) + object.localRatchetKey = $util.newBuffer(object.localRatchetKey); + } + if (options.bytes === String) + object.localRatchetKeyPrivate = ""; + else { + object.localRatchetKeyPrivate = []; + if (options.bytes !== Array) + object.localRatchetKeyPrivate = $util.newBuffer(object.localRatchetKeyPrivate); + } + if (options.bytes === String) + object.localIdentityKey = ""; + else { + object.localIdentityKey = []; + if (options.bytes !== Array) + object.localIdentityKey = $util.newBuffer(object.localIdentityKey); + } + if (options.bytes === String) + object.localIdentityKeyPrivate = ""; + else { + object.localIdentityKeyPrivate = []; + if (options.bytes !== Array) + object.localIdentityKeyPrivate = $util.newBuffer(object.localIdentityKeyPrivate); + } + } + if (message.sequence != null && message.hasOwnProperty("sequence")) + object.sequence = message.sequence; + if (message.localBaseKey != null && message.hasOwnProperty("localBaseKey")) + object.localBaseKey = options.bytes === String ? $util.base64.encode(message.localBaseKey, 0, message.localBaseKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.localBaseKey) : message.localBaseKey; + if (message.localBaseKeyPrivate != null && message.hasOwnProperty("localBaseKeyPrivate")) + object.localBaseKeyPrivate = options.bytes === String ? $util.base64.encode(message.localBaseKeyPrivate, 0, message.localBaseKeyPrivate.length) : options.bytes === Array ? Array.prototype.slice.call(message.localBaseKeyPrivate) : message.localBaseKeyPrivate; + if (message.localRatchetKey != null && message.hasOwnProperty("localRatchetKey")) + object.localRatchetKey = options.bytes === String ? $util.base64.encode(message.localRatchetKey, 0, message.localRatchetKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.localRatchetKey) : message.localRatchetKey; + if (message.localRatchetKeyPrivate != null && message.hasOwnProperty("localRatchetKeyPrivate")) + object.localRatchetKeyPrivate = options.bytes === String ? $util.base64.encode(message.localRatchetKeyPrivate, 0, message.localRatchetKeyPrivate.length) : options.bytes === Array ? Array.prototype.slice.call(message.localRatchetKeyPrivate) : message.localRatchetKeyPrivate; + if (message.localIdentityKey != null && message.hasOwnProperty("localIdentityKey")) + object.localIdentityKey = options.bytes === String ? $util.base64.encode(message.localIdentityKey, 0, message.localIdentityKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.localIdentityKey) : message.localIdentityKey; + if (message.localIdentityKeyPrivate != null && message.hasOwnProperty("localIdentityKeyPrivate")) + object.localIdentityKeyPrivate = options.bytes === String ? $util.base64.encode(message.localIdentityKeyPrivate, 0, message.localIdentityKeyPrivate.length) : options.bytes === Array ? Array.prototype.slice.call(message.localIdentityKeyPrivate) : message.localIdentityKeyPrivate; + return object; + }; + + /** + * Converts this PendingKeyExchange to JSON. + * @function toJSON + * @memberof proto.SessionStructure.PendingKeyExchange + * @instance + * @returns {Object.} JSON object + */ + PendingKeyExchange.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PendingKeyExchange; + })(); + + SessionStructure.PendingPreKey = (function() { + + /** + * Properties of a PendingPreKey. + * @memberof proto.SessionStructure + * @interface IPendingPreKey + * @property {number|null} [preKeyId] PendingPreKey preKeyId + * @property {number|null} [signedPreKeyId] PendingPreKey signedPreKeyId + * @property {Uint8Array|null} [baseKey] PendingPreKey baseKey + */ + + /** + * Constructs a new PendingPreKey. + * @memberof proto.SessionStructure + * @classdesc Represents a PendingPreKey. + * @implements IPendingPreKey + * @constructor + * @param {proto.SessionStructure.IPendingPreKey=} [properties] Properties to set + */ + function PendingPreKey(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PendingPreKey preKeyId. + * @member {number} preKeyId + * @memberof proto.SessionStructure.PendingPreKey + * @instance + */ + PendingPreKey.prototype.preKeyId = 0; + + /** + * PendingPreKey signedPreKeyId. + * @member {number} signedPreKeyId + * @memberof proto.SessionStructure.PendingPreKey + * @instance + */ + PendingPreKey.prototype.signedPreKeyId = 0; + + /** + * PendingPreKey baseKey. + * @member {Uint8Array} baseKey + * @memberof proto.SessionStructure.PendingPreKey + * @instance + */ + PendingPreKey.prototype.baseKey = $util.newBuffer([]); + + /** + * Creates a new PendingPreKey instance using the specified properties. + * @function create + * @memberof proto.SessionStructure.PendingPreKey + * @static + * @param {proto.SessionStructure.IPendingPreKey=} [properties] Properties to set + * @returns {proto.SessionStructure.PendingPreKey} PendingPreKey instance + */ + PendingPreKey.create = function create(properties) { + return new PendingPreKey(properties); + }; + + /** + * Encodes the specified PendingPreKey message. Does not implicitly {@link proto.SessionStructure.PendingPreKey.verify|verify} messages. + * @function encode + * @memberof proto.SessionStructure.PendingPreKey + * @static + * @param {proto.SessionStructure.IPendingPreKey} message PendingPreKey message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PendingPreKey.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.preKeyId != null && Object.hasOwnProperty.call(message, "preKeyId")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.preKeyId); + if (message.baseKey != null && Object.hasOwnProperty.call(message, "baseKey")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.baseKey); + if (message.signedPreKeyId != null && Object.hasOwnProperty.call(message, "signedPreKeyId")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.signedPreKeyId); + return writer; + }; + + /** + * Encodes the specified PendingPreKey message, length delimited. Does not implicitly {@link proto.SessionStructure.PendingPreKey.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.SessionStructure.PendingPreKey + * @static + * @param {proto.SessionStructure.IPendingPreKey} message PendingPreKey message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PendingPreKey.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PendingPreKey message from the specified reader or buffer. + * @function decode + * @memberof proto.SessionStructure.PendingPreKey + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.SessionStructure.PendingPreKey} PendingPreKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PendingPreKey.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SessionStructure.PendingPreKey(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.preKeyId = reader.uint32(); + break; + case 3: + message.signedPreKeyId = reader.int32(); + break; + case 2: + message.baseKey = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PendingPreKey message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.SessionStructure.PendingPreKey + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.SessionStructure.PendingPreKey} PendingPreKey + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PendingPreKey.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PendingPreKey message. + * @function verify + * @memberof proto.SessionStructure.PendingPreKey + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PendingPreKey.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.preKeyId != null && message.hasOwnProperty("preKeyId")) + if (!$util.isInteger(message.preKeyId)) + return "preKeyId: integer expected"; + if (message.signedPreKeyId != null && message.hasOwnProperty("signedPreKeyId")) + if (!$util.isInteger(message.signedPreKeyId)) + return "signedPreKeyId: integer expected"; + if (message.baseKey != null && message.hasOwnProperty("baseKey")) + if (!(message.baseKey && typeof message.baseKey.length === "number" || $util.isString(message.baseKey))) + return "baseKey: buffer expected"; + return null; + }; + + /** + * Creates a PendingPreKey message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.SessionStructure.PendingPreKey + * @static + * @param {Object.} object Plain object + * @returns {proto.SessionStructure.PendingPreKey} PendingPreKey + */ + PendingPreKey.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SessionStructure.PendingPreKey) + return object; + var message = new $root.proto.SessionStructure.PendingPreKey(); + if (object.preKeyId != null) + message.preKeyId = object.preKeyId >>> 0; + if (object.signedPreKeyId != null) + message.signedPreKeyId = object.signedPreKeyId | 0; + if (object.baseKey != null) + if (typeof object.baseKey === "string") + $util.base64.decode(object.baseKey, message.baseKey = $util.newBuffer($util.base64.length(object.baseKey)), 0); + else if (object.baseKey.length) + message.baseKey = object.baseKey; + return message; + }; + + /** + * Creates a plain object from a PendingPreKey message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.SessionStructure.PendingPreKey + * @static + * @param {proto.SessionStructure.PendingPreKey} message PendingPreKey + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PendingPreKey.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.preKeyId = 0; + if (options.bytes === String) + object.baseKey = ""; + else { + object.baseKey = []; + if (options.bytes !== Array) + object.baseKey = $util.newBuffer(object.baseKey); + } + object.signedPreKeyId = 0; + } + if (message.preKeyId != null && message.hasOwnProperty("preKeyId")) + object.preKeyId = message.preKeyId; + if (message.baseKey != null && message.hasOwnProperty("baseKey")) + object.baseKey = options.bytes === String ? $util.base64.encode(message.baseKey, 0, message.baseKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.baseKey) : message.baseKey; + if (message.signedPreKeyId != null && message.hasOwnProperty("signedPreKeyId")) + object.signedPreKeyId = message.signedPreKeyId; + return object; + }; + + /** + * Converts this PendingPreKey to JSON. + * @function toJSON + * @memberof proto.SessionStructure.PendingPreKey + * @instance + * @returns {Object.} JSON object + */ + PendingPreKey.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PendingPreKey; + })(); + + return SessionStructure; + })(); + + proto.SignalMessage = (function() { /** - * Properties of a SessionStructure. + * Properties of a SignalMessage. * @memberof proto - * @interface ISessionStructure - * @property {number|null} [sessionVersion] SessionStructure sessionVersion - * @property {Uint8Array|null} [localIdentityPublic] SessionStructure localIdentityPublic - * @property {Uint8Array|null} [remoteIdentityPublic] SessionStructure remoteIdentityPublic - * @property {Uint8Array|null} [rootKey] SessionStructure rootKey - * @property {number|null} [previousCounter] SessionStructure previousCounter - * @property {proto.IChain|null} [senderChain] SessionStructure senderChain - * @property {Array.|null} [receiverChains] SessionStructure receiverChains - * @property {proto.IPendingKeyExchange|null} [pendingKeyExchange] SessionStructure pendingKeyExchange - * @property {proto.IPendingPreKey|null} [pendingPreKey] SessionStructure pendingPreKey - * @property {number|null} [remoteRegistrationId] SessionStructure remoteRegistrationId - * @property {number|null} [localRegistrationId] SessionStructure localRegistrationId - * @property {boolean|null} [needsRefresh] SessionStructure needsRefresh - * @property {Uint8Array|null} [aliceBaseKey] SessionStructure aliceBaseKey + * @interface ISignalMessage + * @property {Uint8Array|null} [ratchetKey] SignalMessage ratchetKey + * @property {number|null} [counter] SignalMessage counter + * @property {number|null} [previousCounter] SignalMessage previousCounter + * @property {Uint8Array|null} [ciphertext] SignalMessage ciphertext */ /** - * Constructs a new SessionStructure. + * Constructs a new SignalMessage. * @memberof proto - * @classdesc Represents a SessionStructure. - * @implements ISessionStructure + * @classdesc Represents a SignalMessage. + * @implements ISignalMessage * @constructor - * @param {proto.ISessionStructure=} [properties] Properties to set + * @param {proto.ISignalMessage=} [properties] Properties to set */ - function SessionStructure(properties) { - this.receiverChains = []; + function SignalMessage(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -56748,234 +64742,114 @@ $root.proto = (function() { } /** - * SessionStructure sessionVersion. - * @member {number} sessionVersion - * @memberof proto.SessionStructure - * @instance - */ - SessionStructure.prototype.sessionVersion = 0; - - /** - * SessionStructure localIdentityPublic. - * @member {Uint8Array} localIdentityPublic - * @memberof proto.SessionStructure - * @instance - */ - SessionStructure.prototype.localIdentityPublic = $util.newBuffer([]); - - /** - * SessionStructure remoteIdentityPublic. - * @member {Uint8Array} remoteIdentityPublic - * @memberof proto.SessionStructure + * SignalMessage ratchetKey. + * @member {Uint8Array} ratchetKey + * @memberof proto.SignalMessage * @instance */ - SessionStructure.prototype.remoteIdentityPublic = $util.newBuffer([]); + SignalMessage.prototype.ratchetKey = $util.newBuffer([]); /** - * SessionStructure rootKey. - * @member {Uint8Array} rootKey - * @memberof proto.SessionStructure + * SignalMessage counter. + * @member {number} counter + * @memberof proto.SignalMessage * @instance */ - SessionStructure.prototype.rootKey = $util.newBuffer([]); + SignalMessage.prototype.counter = 0; /** - * SessionStructure previousCounter. + * SignalMessage previousCounter. * @member {number} previousCounter - * @memberof proto.SessionStructure - * @instance - */ - SessionStructure.prototype.previousCounter = 0; - - /** - * SessionStructure senderChain. - * @member {proto.IChain|null|undefined} senderChain - * @memberof proto.SessionStructure - * @instance - */ - SessionStructure.prototype.senderChain = null; - - /** - * SessionStructure receiverChains. - * @member {Array.} receiverChains - * @memberof proto.SessionStructure - * @instance - */ - SessionStructure.prototype.receiverChains = $util.emptyArray; - - /** - * SessionStructure pendingKeyExchange. - * @member {proto.IPendingKeyExchange|null|undefined} pendingKeyExchange - * @memberof proto.SessionStructure - * @instance - */ - SessionStructure.prototype.pendingKeyExchange = null; - - /** - * SessionStructure pendingPreKey. - * @member {proto.IPendingPreKey|null|undefined} pendingPreKey - * @memberof proto.SessionStructure - * @instance - */ - SessionStructure.prototype.pendingPreKey = null; - - /** - * SessionStructure remoteRegistrationId. - * @member {number} remoteRegistrationId - * @memberof proto.SessionStructure - * @instance - */ - SessionStructure.prototype.remoteRegistrationId = 0; - - /** - * SessionStructure localRegistrationId. - * @member {number} localRegistrationId - * @memberof proto.SessionStructure - * @instance - */ - SessionStructure.prototype.localRegistrationId = 0; - - /** - * SessionStructure needsRefresh. - * @member {boolean} needsRefresh - * @memberof proto.SessionStructure + * @memberof proto.SignalMessage * @instance */ - SessionStructure.prototype.needsRefresh = false; + SignalMessage.prototype.previousCounter = 0; /** - * SessionStructure aliceBaseKey. - * @member {Uint8Array} aliceBaseKey - * @memberof proto.SessionStructure + * SignalMessage ciphertext. + * @member {Uint8Array} ciphertext + * @memberof proto.SignalMessage * @instance */ - SessionStructure.prototype.aliceBaseKey = $util.newBuffer([]); + SignalMessage.prototype.ciphertext = $util.newBuffer([]); /** - * Creates a new SessionStructure instance using the specified properties. + * Creates a new SignalMessage instance using the specified properties. * @function create - * @memberof proto.SessionStructure + * @memberof proto.SignalMessage * @static - * @param {proto.ISessionStructure=} [properties] Properties to set - * @returns {proto.SessionStructure} SessionStructure instance + * @param {proto.ISignalMessage=} [properties] Properties to set + * @returns {proto.SignalMessage} SignalMessage instance */ - SessionStructure.create = function create(properties) { - return new SessionStructure(properties); + SignalMessage.create = function create(properties) { + return new SignalMessage(properties); }; /** - * Encodes the specified SessionStructure message. Does not implicitly {@link proto.SessionStructure.verify|verify} messages. + * Encodes the specified SignalMessage message. Does not implicitly {@link proto.SignalMessage.verify|verify} messages. * @function encode - * @memberof proto.SessionStructure + * @memberof proto.SignalMessage * @static - * @param {proto.ISessionStructure} message SessionStructure message or plain object to encode + * @param {proto.ISignalMessage} message SignalMessage message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SessionStructure.encode = function encode(message, writer) { + SignalMessage.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.sessionVersion != null && Object.hasOwnProperty.call(message, "sessionVersion")) - writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.sessionVersion); - if (message.localIdentityPublic != null && Object.hasOwnProperty.call(message, "localIdentityPublic")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.localIdentityPublic); - if (message.remoteIdentityPublic != null && Object.hasOwnProperty.call(message, "remoteIdentityPublic")) - writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.remoteIdentityPublic); - if (message.rootKey != null && Object.hasOwnProperty.call(message, "rootKey")) - writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.rootKey); + if (message.ratchetKey != null && Object.hasOwnProperty.call(message, "ratchetKey")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.ratchetKey); + if (message.counter != null && Object.hasOwnProperty.call(message, "counter")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.counter); if (message.previousCounter != null && Object.hasOwnProperty.call(message, "previousCounter")) - writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.previousCounter); - if (message.senderChain != null && Object.hasOwnProperty.call(message, "senderChain")) - $root.proto.Chain.encode(message.senderChain, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.receiverChains != null && message.receiverChains.length) - for (var i = 0; i < message.receiverChains.length; ++i) - $root.proto.Chain.encode(message.receiverChains[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - if (message.pendingKeyExchange != null && Object.hasOwnProperty.call(message, "pendingKeyExchange")) - $root.proto.PendingKeyExchange.encode(message.pendingKeyExchange, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); - if (message.pendingPreKey != null && Object.hasOwnProperty.call(message, "pendingPreKey")) - $root.proto.PendingPreKey.encode(message.pendingPreKey, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); - if (message.remoteRegistrationId != null && Object.hasOwnProperty.call(message, "remoteRegistrationId")) - writer.uint32(/* id 10, wireType 0 =*/80).uint32(message.remoteRegistrationId); - if (message.localRegistrationId != null && Object.hasOwnProperty.call(message, "localRegistrationId")) - writer.uint32(/* id 11, wireType 0 =*/88).uint32(message.localRegistrationId); - if (message.needsRefresh != null && Object.hasOwnProperty.call(message, "needsRefresh")) - writer.uint32(/* id 12, wireType 0 =*/96).bool(message.needsRefresh); - if (message.aliceBaseKey != null && Object.hasOwnProperty.call(message, "aliceBaseKey")) - writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.aliceBaseKey); + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.previousCounter); + if (message.ciphertext != null && Object.hasOwnProperty.call(message, "ciphertext")) + writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.ciphertext); return writer; }; /** - * Encodes the specified SessionStructure message, length delimited. Does not implicitly {@link proto.SessionStructure.verify|verify} messages. + * Encodes the specified SignalMessage message, length delimited. Does not implicitly {@link proto.SignalMessage.verify|verify} messages. * @function encodeDelimited - * @memberof proto.SessionStructure + * @memberof proto.SignalMessage * @static - * @param {proto.ISessionStructure} message SessionStructure message or plain object to encode + * @param {proto.ISignalMessage} message SignalMessage message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SessionStructure.encodeDelimited = function encodeDelimited(message, writer) { + SignalMessage.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a SessionStructure message from the specified reader or buffer. + * Decodes a SignalMessage message from the specified reader or buffer. * @function decode - * @memberof proto.SessionStructure + * @memberof proto.SignalMessage * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {proto.SessionStructure} SessionStructure + * @returns {proto.SignalMessage} SignalMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SessionStructure.decode = function decode(reader, length) { + SignalMessage.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SessionStructure(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SignalMessage(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.sessionVersion = reader.uint32(); + message.ratchetKey = reader.bytes(); break; case 2: - message.localIdentityPublic = reader.bytes(); + message.counter = reader.uint32(); break; case 3: - message.remoteIdentityPublic = reader.bytes(); - break; - case 4: - message.rootKey = reader.bytes(); - break; - case 5: message.previousCounter = reader.uint32(); break; - case 6: - message.senderChain = $root.proto.Chain.decode(reader, reader.uint32()); - break; - case 7: - if (!(message.receiverChains && message.receiverChains.length)) - message.receiverChains = []; - message.receiverChains.push($root.proto.Chain.decode(reader, reader.uint32())); - break; - case 8: - message.pendingKeyExchange = $root.proto.PendingKeyExchange.decode(reader, reader.uint32()); - break; - case 9: - message.pendingPreKey = $root.proto.PendingPreKey.decode(reader, reader.uint32()); - break; - case 10: - message.remoteRegistrationId = reader.uint32(); - break; - case 11: - message.localRegistrationId = reader.uint32(); - break; - case 12: - message.needsRefresh = reader.bool(); - break; - case 13: - message.aliceBaseKey = reader.bytes(); + case 4: + message.ciphertext = reader.bytes(); break; default: reader.skipType(tag & 7); @@ -56986,253 +64860,130 @@ $root.proto = (function() { }; /** - * Decodes a SessionStructure message from the specified reader or buffer, length delimited. + * Decodes a SignalMessage message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof proto.SessionStructure + * @memberof proto.SignalMessage * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {proto.SessionStructure} SessionStructure + * @returns {proto.SignalMessage} SignalMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SessionStructure.decodeDelimited = function decodeDelimited(reader) { + SignalMessage.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a SessionStructure message. + * Verifies a SignalMessage message. * @function verify - * @memberof proto.SessionStructure + * @memberof proto.SignalMessage * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - SessionStructure.verify = function verify(message) { + SignalMessage.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.sessionVersion != null && message.hasOwnProperty("sessionVersion")) - if (!$util.isInteger(message.sessionVersion)) - return "sessionVersion: integer expected"; - if (message.localIdentityPublic != null && message.hasOwnProperty("localIdentityPublic")) - if (!(message.localIdentityPublic && typeof message.localIdentityPublic.length === "number" || $util.isString(message.localIdentityPublic))) - return "localIdentityPublic: buffer expected"; - if (message.remoteIdentityPublic != null && message.hasOwnProperty("remoteIdentityPublic")) - if (!(message.remoteIdentityPublic && typeof message.remoteIdentityPublic.length === "number" || $util.isString(message.remoteIdentityPublic))) - return "remoteIdentityPublic: buffer expected"; - if (message.rootKey != null && message.hasOwnProperty("rootKey")) - if (!(message.rootKey && typeof message.rootKey.length === "number" || $util.isString(message.rootKey))) - return "rootKey: buffer expected"; + if (message.ratchetKey != null && message.hasOwnProperty("ratchetKey")) + if (!(message.ratchetKey && typeof message.ratchetKey.length === "number" || $util.isString(message.ratchetKey))) + return "ratchetKey: buffer expected"; + if (message.counter != null && message.hasOwnProperty("counter")) + if (!$util.isInteger(message.counter)) + return "counter: integer expected"; if (message.previousCounter != null && message.hasOwnProperty("previousCounter")) if (!$util.isInteger(message.previousCounter)) return "previousCounter: integer expected"; - if (message.senderChain != null && message.hasOwnProperty("senderChain")) { - var error = $root.proto.Chain.verify(message.senderChain); - if (error) - return "senderChain." + error; - } - if (message.receiverChains != null && message.hasOwnProperty("receiverChains")) { - if (!Array.isArray(message.receiverChains)) - return "receiverChains: array expected"; - for (var i = 0; i < message.receiverChains.length; ++i) { - var error = $root.proto.Chain.verify(message.receiverChains[i]); - if (error) - return "receiverChains." + error; - } - } - if (message.pendingKeyExchange != null && message.hasOwnProperty("pendingKeyExchange")) { - var error = $root.proto.PendingKeyExchange.verify(message.pendingKeyExchange); - if (error) - return "pendingKeyExchange." + error; - } - if (message.pendingPreKey != null && message.hasOwnProperty("pendingPreKey")) { - var error = $root.proto.PendingPreKey.verify(message.pendingPreKey); - if (error) - return "pendingPreKey." + error; - } - if (message.remoteRegistrationId != null && message.hasOwnProperty("remoteRegistrationId")) - if (!$util.isInteger(message.remoteRegistrationId)) - return "remoteRegistrationId: integer expected"; - if (message.localRegistrationId != null && message.hasOwnProperty("localRegistrationId")) - if (!$util.isInteger(message.localRegistrationId)) - return "localRegistrationId: integer expected"; - if (message.needsRefresh != null && message.hasOwnProperty("needsRefresh")) - if (typeof message.needsRefresh !== "boolean") - return "needsRefresh: boolean expected"; - if (message.aliceBaseKey != null && message.hasOwnProperty("aliceBaseKey")) - if (!(message.aliceBaseKey && typeof message.aliceBaseKey.length === "number" || $util.isString(message.aliceBaseKey))) - return "aliceBaseKey: buffer expected"; + if (message.ciphertext != null && message.hasOwnProperty("ciphertext")) + if (!(message.ciphertext && typeof message.ciphertext.length === "number" || $util.isString(message.ciphertext))) + return "ciphertext: buffer expected"; return null; }; /** - * Creates a SessionStructure message from a plain object. Also converts values to their respective internal types. + * Creates a SignalMessage message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof proto.SessionStructure + * @memberof proto.SignalMessage * @static * @param {Object.} object Plain object - * @returns {proto.SessionStructure} SessionStructure + * @returns {proto.SignalMessage} SignalMessage */ - SessionStructure.fromObject = function fromObject(object) { - if (object instanceof $root.proto.SessionStructure) + SignalMessage.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SignalMessage) return object; - var message = new $root.proto.SessionStructure(); - if (object.sessionVersion != null) - message.sessionVersion = object.sessionVersion >>> 0; - if (object.localIdentityPublic != null) - if (typeof object.localIdentityPublic === "string") - $util.base64.decode(object.localIdentityPublic, message.localIdentityPublic = $util.newBuffer($util.base64.length(object.localIdentityPublic)), 0); - else if (object.localIdentityPublic.length) - message.localIdentityPublic = object.localIdentityPublic; - if (object.remoteIdentityPublic != null) - if (typeof object.remoteIdentityPublic === "string") - $util.base64.decode(object.remoteIdentityPublic, message.remoteIdentityPublic = $util.newBuffer($util.base64.length(object.remoteIdentityPublic)), 0); - else if (object.remoteIdentityPublic.length) - message.remoteIdentityPublic = object.remoteIdentityPublic; - if (object.rootKey != null) - if (typeof object.rootKey === "string") - $util.base64.decode(object.rootKey, message.rootKey = $util.newBuffer($util.base64.length(object.rootKey)), 0); - else if (object.rootKey.length) - message.rootKey = object.rootKey; + var message = new $root.proto.SignalMessage(); + if (object.ratchetKey != null) + if (typeof object.ratchetKey === "string") + $util.base64.decode(object.ratchetKey, message.ratchetKey = $util.newBuffer($util.base64.length(object.ratchetKey)), 0); + else if (object.ratchetKey.length) + message.ratchetKey = object.ratchetKey; + if (object.counter != null) + message.counter = object.counter >>> 0; if (object.previousCounter != null) message.previousCounter = object.previousCounter >>> 0; - if (object.senderChain != null) { - if (typeof object.senderChain !== "object") - throw TypeError(".proto.SessionStructure.senderChain: object expected"); - message.senderChain = $root.proto.Chain.fromObject(object.senderChain); - } - if (object.receiverChains) { - if (!Array.isArray(object.receiverChains)) - throw TypeError(".proto.SessionStructure.receiverChains: array expected"); - message.receiverChains = []; - for (var i = 0; i < object.receiverChains.length; ++i) { - if (typeof object.receiverChains[i] !== "object") - throw TypeError(".proto.SessionStructure.receiverChains: object expected"); - message.receiverChains[i] = $root.proto.Chain.fromObject(object.receiverChains[i]); - } - } - if (object.pendingKeyExchange != null) { - if (typeof object.pendingKeyExchange !== "object") - throw TypeError(".proto.SessionStructure.pendingKeyExchange: object expected"); - message.pendingKeyExchange = $root.proto.PendingKeyExchange.fromObject(object.pendingKeyExchange); - } - if (object.pendingPreKey != null) { - if (typeof object.pendingPreKey !== "object") - throw TypeError(".proto.SessionStructure.pendingPreKey: object expected"); - message.pendingPreKey = $root.proto.PendingPreKey.fromObject(object.pendingPreKey); - } - if (object.remoteRegistrationId != null) - message.remoteRegistrationId = object.remoteRegistrationId >>> 0; - if (object.localRegistrationId != null) - message.localRegistrationId = object.localRegistrationId >>> 0; - if (object.needsRefresh != null) - message.needsRefresh = Boolean(object.needsRefresh); - if (object.aliceBaseKey != null) - if (typeof object.aliceBaseKey === "string") - $util.base64.decode(object.aliceBaseKey, message.aliceBaseKey = $util.newBuffer($util.base64.length(object.aliceBaseKey)), 0); - else if (object.aliceBaseKey.length) - message.aliceBaseKey = object.aliceBaseKey; + if (object.ciphertext != null) + if (typeof object.ciphertext === "string") + $util.base64.decode(object.ciphertext, message.ciphertext = $util.newBuffer($util.base64.length(object.ciphertext)), 0); + else if (object.ciphertext.length) + message.ciphertext = object.ciphertext; return message; }; /** - * Creates a plain object from a SessionStructure message. Also converts values to other types if specified. + * Creates a plain object from a SignalMessage message. Also converts values to other types if specified. * @function toObject - * @memberof proto.SessionStructure + * @memberof proto.SignalMessage * @static - * @param {proto.SessionStructure} message SessionStructure + * @param {proto.SignalMessage} message SignalMessage * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - SessionStructure.toObject = function toObject(message, options) { + SignalMessage.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.receiverChains = []; if (options.defaults) { - object.sessionVersion = 0; - if (options.bytes === String) - object.localIdentityPublic = ""; - else { - object.localIdentityPublic = []; - if (options.bytes !== Array) - object.localIdentityPublic = $util.newBuffer(object.localIdentityPublic); - } - if (options.bytes === String) - object.remoteIdentityPublic = ""; - else { - object.remoteIdentityPublic = []; - if (options.bytes !== Array) - object.remoteIdentityPublic = $util.newBuffer(object.remoteIdentityPublic); - } if (options.bytes === String) - object.rootKey = ""; + object.ratchetKey = ""; else { - object.rootKey = []; + object.ratchetKey = []; if (options.bytes !== Array) - object.rootKey = $util.newBuffer(object.rootKey); + object.ratchetKey = $util.newBuffer(object.ratchetKey); } + object.counter = 0; object.previousCounter = 0; - object.senderChain = null; - object.pendingKeyExchange = null; - object.pendingPreKey = null; - object.remoteRegistrationId = 0; - object.localRegistrationId = 0; - object.needsRefresh = false; if (options.bytes === String) - object.aliceBaseKey = ""; + object.ciphertext = ""; else { - object.aliceBaseKey = []; + object.ciphertext = []; if (options.bytes !== Array) - object.aliceBaseKey = $util.newBuffer(object.aliceBaseKey); + object.ciphertext = $util.newBuffer(object.ciphertext); } } - if (message.sessionVersion != null && message.hasOwnProperty("sessionVersion")) - object.sessionVersion = message.sessionVersion; - if (message.localIdentityPublic != null && message.hasOwnProperty("localIdentityPublic")) - object.localIdentityPublic = options.bytes === String ? $util.base64.encode(message.localIdentityPublic, 0, message.localIdentityPublic.length) : options.bytes === Array ? Array.prototype.slice.call(message.localIdentityPublic) : message.localIdentityPublic; - if (message.remoteIdentityPublic != null && message.hasOwnProperty("remoteIdentityPublic")) - object.remoteIdentityPublic = options.bytes === String ? $util.base64.encode(message.remoteIdentityPublic, 0, message.remoteIdentityPublic.length) : options.bytes === Array ? Array.prototype.slice.call(message.remoteIdentityPublic) : message.remoteIdentityPublic; - if (message.rootKey != null && message.hasOwnProperty("rootKey")) - object.rootKey = options.bytes === String ? $util.base64.encode(message.rootKey, 0, message.rootKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.rootKey) : message.rootKey; + if (message.ratchetKey != null && message.hasOwnProperty("ratchetKey")) + object.ratchetKey = options.bytes === String ? $util.base64.encode(message.ratchetKey, 0, message.ratchetKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.ratchetKey) : message.ratchetKey; + if (message.counter != null && message.hasOwnProperty("counter")) + object.counter = message.counter; if (message.previousCounter != null && message.hasOwnProperty("previousCounter")) object.previousCounter = message.previousCounter; - if (message.senderChain != null && message.hasOwnProperty("senderChain")) - object.senderChain = $root.proto.Chain.toObject(message.senderChain, options); - if (message.receiverChains && message.receiverChains.length) { - object.receiverChains = []; - for (var j = 0; j < message.receiverChains.length; ++j) - object.receiverChains[j] = $root.proto.Chain.toObject(message.receiverChains[j], options); - } - if (message.pendingKeyExchange != null && message.hasOwnProperty("pendingKeyExchange")) - object.pendingKeyExchange = $root.proto.PendingKeyExchange.toObject(message.pendingKeyExchange, options); - if (message.pendingPreKey != null && message.hasOwnProperty("pendingPreKey")) - object.pendingPreKey = $root.proto.PendingPreKey.toObject(message.pendingPreKey, options); - if (message.remoteRegistrationId != null && message.hasOwnProperty("remoteRegistrationId")) - object.remoteRegistrationId = message.remoteRegistrationId; - if (message.localRegistrationId != null && message.hasOwnProperty("localRegistrationId")) - object.localRegistrationId = message.localRegistrationId; - if (message.needsRefresh != null && message.hasOwnProperty("needsRefresh")) - object.needsRefresh = message.needsRefresh; - if (message.aliceBaseKey != null && message.hasOwnProperty("aliceBaseKey")) - object.aliceBaseKey = options.bytes === String ? $util.base64.encode(message.aliceBaseKey, 0, message.aliceBaseKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.aliceBaseKey) : message.aliceBaseKey; + if (message.ciphertext != null && message.hasOwnProperty("ciphertext")) + object.ciphertext = options.bytes === String ? $util.base64.encode(message.ciphertext, 0, message.ciphertext.length) : options.bytes === Array ? Array.prototype.slice.call(message.ciphertext) : message.ciphertext; return object; }; /** - * Converts this SessionStructure to JSON. + * Converts this SignalMessage to JSON. * @function toJSON - * @memberof proto.SessionStructure + * @memberof proto.SignalMessage * @instance * @returns {Object.} JSON object */ - SessionStructure.prototype.toJSON = function toJSON() { + SignalMessage.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return SessionStructure; + return SignalMessage; })(); proto.SignedPreKeyRecordStructure = (function() { @@ -58567,6 +66318,11 @@ $root.proto = (function() { * @property {proto.SyncActionValue.IRemoveRecentStickerAction|null} [removeRecentStickerAction] SyncActionValue removeRecentStickerAction * @property {proto.SyncActionValue.IChatAssignmentAction|null} [chatAssignment] SyncActionValue chatAssignment * @property {proto.SyncActionValue.IChatAssignmentOpenedStatusAction|null} [chatAssignmentOpenedStatus] SyncActionValue chatAssignmentOpenedStatus + * @property {proto.SyncActionValue.IPnForLidChatAction|null} [pnForLidChatAction] SyncActionValue pnForLidChatAction + * @property {proto.SyncActionValue.IMarketingMessageAction|null} [marketingMessageAction] SyncActionValue marketingMessageAction + * @property {proto.SyncActionValue.IMarketingMessageBroadcastAction|null} [marketingMessageBroadcastAction] SyncActionValue marketingMessageBroadcastAction + * @property {proto.SyncActionValue.IExternalWebBetaAction|null} [externalWebBetaAction] SyncActionValue externalWebBetaAction + * @property {proto.SyncActionValue.IPrivacySettingRelayAllCalls|null} [privacySettingRelayAllCalls] SyncActionValue privacySettingRelayAllCalls */ /** @@ -58832,6 +66588,46 @@ $root.proto = (function() { */ SyncActionValue.prototype.chatAssignmentOpenedStatus = null; + /** + * SyncActionValue pnForLidChatAction. + * @member {proto.SyncActionValue.IPnForLidChatAction|null|undefined} pnForLidChatAction + * @memberof proto.SyncActionValue + * @instance + */ + SyncActionValue.prototype.pnForLidChatAction = null; + + /** + * SyncActionValue marketingMessageAction. + * @member {proto.SyncActionValue.IMarketingMessageAction|null|undefined} marketingMessageAction + * @memberof proto.SyncActionValue + * @instance + */ + SyncActionValue.prototype.marketingMessageAction = null; + + /** + * SyncActionValue marketingMessageBroadcastAction. + * @member {proto.SyncActionValue.IMarketingMessageBroadcastAction|null|undefined} marketingMessageBroadcastAction + * @memberof proto.SyncActionValue + * @instance + */ + SyncActionValue.prototype.marketingMessageBroadcastAction = null; + + /** + * SyncActionValue externalWebBetaAction. + * @member {proto.SyncActionValue.IExternalWebBetaAction|null|undefined} externalWebBetaAction + * @memberof proto.SyncActionValue + * @instance + */ + SyncActionValue.prototype.externalWebBetaAction = null; + + /** + * SyncActionValue privacySettingRelayAllCalls. + * @member {proto.SyncActionValue.IPrivacySettingRelayAllCalls|null|undefined} privacySettingRelayAllCalls + * @memberof proto.SyncActionValue + * @instance + */ + SyncActionValue.prototype.privacySettingRelayAllCalls = null; + /** * Creates a new SyncActionValue instance using the specified properties. * @function create @@ -58918,6 +66714,16 @@ $root.proto = (function() { $root.proto.SyncActionValue.ChatAssignmentAction.encode(message.chatAssignment, writer.uint32(/* id 35, wireType 2 =*/282).fork()).ldelim(); if (message.chatAssignmentOpenedStatus != null && Object.hasOwnProperty.call(message, "chatAssignmentOpenedStatus")) $root.proto.SyncActionValue.ChatAssignmentOpenedStatusAction.encode(message.chatAssignmentOpenedStatus, writer.uint32(/* id 36, wireType 2 =*/290).fork()).ldelim(); + if (message.pnForLidChatAction != null && Object.hasOwnProperty.call(message, "pnForLidChatAction")) + $root.proto.SyncActionValue.PnForLidChatAction.encode(message.pnForLidChatAction, writer.uint32(/* id 37, wireType 2 =*/298).fork()).ldelim(); + if (message.marketingMessageAction != null && Object.hasOwnProperty.call(message, "marketingMessageAction")) + $root.proto.SyncActionValue.MarketingMessageAction.encode(message.marketingMessageAction, writer.uint32(/* id 38, wireType 2 =*/306).fork()).ldelim(); + if (message.marketingMessageBroadcastAction != null && Object.hasOwnProperty.call(message, "marketingMessageBroadcastAction")) + $root.proto.SyncActionValue.MarketingMessageBroadcastAction.encode(message.marketingMessageBroadcastAction, writer.uint32(/* id 39, wireType 2 =*/314).fork()).ldelim(); + if (message.externalWebBetaAction != null && Object.hasOwnProperty.call(message, "externalWebBetaAction")) + $root.proto.SyncActionValue.ExternalWebBetaAction.encode(message.externalWebBetaAction, writer.uint32(/* id 40, wireType 2 =*/322).fork()).ldelim(); + if (message.privacySettingRelayAllCalls != null && Object.hasOwnProperty.call(message, "privacySettingRelayAllCalls")) + $root.proto.SyncActionValue.PrivacySettingRelayAllCalls.encode(message.privacySettingRelayAllCalls, writer.uint32(/* id 41, wireType 2 =*/330).fork()).ldelim(); return writer; }; @@ -59045,6 +66851,21 @@ $root.proto = (function() { case 36: message.chatAssignmentOpenedStatus = $root.proto.SyncActionValue.ChatAssignmentOpenedStatusAction.decode(reader, reader.uint32()); break; + case 37: + message.pnForLidChatAction = $root.proto.SyncActionValue.PnForLidChatAction.decode(reader, reader.uint32()); + break; + case 38: + message.marketingMessageAction = $root.proto.SyncActionValue.MarketingMessageAction.decode(reader, reader.uint32()); + break; + case 39: + message.marketingMessageBroadcastAction = $root.proto.SyncActionValue.MarketingMessageBroadcastAction.decode(reader, reader.uint32()); + break; + case 40: + message.externalWebBetaAction = $root.proto.SyncActionValue.ExternalWebBetaAction.decode(reader, reader.uint32()); + break; + case 41: + message.privacySettingRelayAllCalls = $root.proto.SyncActionValue.PrivacySettingRelayAllCalls.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -59233,6 +67054,31 @@ $root.proto = (function() { if (error) return "chatAssignmentOpenedStatus." + error; } + if (message.pnForLidChatAction != null && message.hasOwnProperty("pnForLidChatAction")) { + var error = $root.proto.SyncActionValue.PnForLidChatAction.verify(message.pnForLidChatAction); + if (error) + return "pnForLidChatAction." + error; + } + if (message.marketingMessageAction != null && message.hasOwnProperty("marketingMessageAction")) { + var error = $root.proto.SyncActionValue.MarketingMessageAction.verify(message.marketingMessageAction); + if (error) + return "marketingMessageAction." + error; + } + if (message.marketingMessageBroadcastAction != null && message.hasOwnProperty("marketingMessageBroadcastAction")) { + var error = $root.proto.SyncActionValue.MarketingMessageBroadcastAction.verify(message.marketingMessageBroadcastAction); + if (error) + return "marketingMessageBroadcastAction." + error; + } + if (message.externalWebBetaAction != null && message.hasOwnProperty("externalWebBetaAction")) { + var error = $root.proto.SyncActionValue.ExternalWebBetaAction.verify(message.externalWebBetaAction); + if (error) + return "externalWebBetaAction." + error; + } + if (message.privacySettingRelayAllCalls != null && message.hasOwnProperty("privacySettingRelayAllCalls")) { + var error = $root.proto.SyncActionValue.PrivacySettingRelayAllCalls.verify(message.privacySettingRelayAllCalls); + if (error) + return "privacySettingRelayAllCalls." + error; + } return null; }; @@ -59407,6 +67253,31 @@ $root.proto = (function() { throw TypeError(".proto.SyncActionValue.chatAssignmentOpenedStatus: object expected"); message.chatAssignmentOpenedStatus = $root.proto.SyncActionValue.ChatAssignmentOpenedStatusAction.fromObject(object.chatAssignmentOpenedStatus); } + if (object.pnForLidChatAction != null) { + if (typeof object.pnForLidChatAction !== "object") + throw TypeError(".proto.SyncActionValue.pnForLidChatAction: object expected"); + message.pnForLidChatAction = $root.proto.SyncActionValue.PnForLidChatAction.fromObject(object.pnForLidChatAction); + } + if (object.marketingMessageAction != null) { + if (typeof object.marketingMessageAction !== "object") + throw TypeError(".proto.SyncActionValue.marketingMessageAction: object expected"); + message.marketingMessageAction = $root.proto.SyncActionValue.MarketingMessageAction.fromObject(object.marketingMessageAction); + } + if (object.marketingMessageBroadcastAction != null) { + if (typeof object.marketingMessageBroadcastAction !== "object") + throw TypeError(".proto.SyncActionValue.marketingMessageBroadcastAction: object expected"); + message.marketingMessageBroadcastAction = $root.proto.SyncActionValue.MarketingMessageBroadcastAction.fromObject(object.marketingMessageBroadcastAction); + } + if (object.externalWebBetaAction != null) { + if (typeof object.externalWebBetaAction !== "object") + throw TypeError(".proto.SyncActionValue.externalWebBetaAction: object expected"); + message.externalWebBetaAction = $root.proto.SyncActionValue.ExternalWebBetaAction.fromObject(object.externalWebBetaAction); + } + if (object.privacySettingRelayAllCalls != null) { + if (typeof object.privacySettingRelayAllCalls !== "object") + throw TypeError(".proto.SyncActionValue.privacySettingRelayAllCalls: object expected"); + message.privacySettingRelayAllCalls = $root.proto.SyncActionValue.PrivacySettingRelayAllCalls.fromObject(object.privacySettingRelayAllCalls); + } return message; }; @@ -59459,6 +67330,11 @@ $root.proto = (function() { object.removeRecentStickerAction = null; object.chatAssignment = null; object.chatAssignmentOpenedStatus = null; + object.pnForLidChatAction = null; + object.marketingMessageAction = null; + object.marketingMessageBroadcastAction = null; + object.externalWebBetaAction = null; + object.privacySettingRelayAllCalls = null; } if (message.timestamp != null && message.hasOwnProperty("timestamp")) if (typeof message.timestamp === "number") @@ -59525,6 +67401,16 @@ $root.proto = (function() { object.chatAssignment = $root.proto.SyncActionValue.ChatAssignmentAction.toObject(message.chatAssignment, options); if (message.chatAssignmentOpenedStatus != null && message.hasOwnProperty("chatAssignmentOpenedStatus")) object.chatAssignmentOpenedStatus = $root.proto.SyncActionValue.ChatAssignmentOpenedStatusAction.toObject(message.chatAssignmentOpenedStatus, options); + if (message.pnForLidChatAction != null && message.hasOwnProperty("pnForLidChatAction")) + object.pnForLidChatAction = $root.proto.SyncActionValue.PnForLidChatAction.toObject(message.pnForLidChatAction, options); + if (message.marketingMessageAction != null && message.hasOwnProperty("marketingMessageAction")) + object.marketingMessageAction = $root.proto.SyncActionValue.MarketingMessageAction.toObject(message.marketingMessageAction, options); + if (message.marketingMessageBroadcastAction != null && message.hasOwnProperty("marketingMessageBroadcastAction")) + object.marketingMessageBroadcastAction = $root.proto.SyncActionValue.MarketingMessageBroadcastAction.toObject(message.marketingMessageBroadcastAction, options); + if (message.externalWebBetaAction != null && message.hasOwnProperty("externalWebBetaAction")) + object.externalWebBetaAction = $root.proto.SyncActionValue.ExternalWebBetaAction.toObject(message.externalWebBetaAction, options); + if (message.privacySettingRelayAllCalls != null && message.hasOwnProperty("privacySettingRelayAllCalls")) + object.privacySettingRelayAllCalls = $root.proto.SyncActionValue.PrivacySettingRelayAllCalls.toObject(message.privacySettingRelayAllCalls, options); return object; }; @@ -61387,6 +69273,193 @@ $root.proto = (function() { return DeleteMessageForMeAction; })(); + SyncActionValue.ExternalWebBetaAction = (function() { + + /** + * Properties of an ExternalWebBetaAction. + * @memberof proto.SyncActionValue + * @interface IExternalWebBetaAction + * @property {boolean|null} [isOptIn] ExternalWebBetaAction isOptIn + */ + + /** + * Constructs a new ExternalWebBetaAction. + * @memberof proto.SyncActionValue + * @classdesc Represents an ExternalWebBetaAction. + * @implements IExternalWebBetaAction + * @constructor + * @param {proto.SyncActionValue.IExternalWebBetaAction=} [properties] Properties to set + */ + function ExternalWebBetaAction(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ExternalWebBetaAction isOptIn. + * @member {boolean} isOptIn + * @memberof proto.SyncActionValue.ExternalWebBetaAction + * @instance + */ + ExternalWebBetaAction.prototype.isOptIn = false; + + /** + * Creates a new ExternalWebBetaAction instance using the specified properties. + * @function create + * @memberof proto.SyncActionValue.ExternalWebBetaAction + * @static + * @param {proto.SyncActionValue.IExternalWebBetaAction=} [properties] Properties to set + * @returns {proto.SyncActionValue.ExternalWebBetaAction} ExternalWebBetaAction instance + */ + ExternalWebBetaAction.create = function create(properties) { + return new ExternalWebBetaAction(properties); + }; + + /** + * Encodes the specified ExternalWebBetaAction message. Does not implicitly {@link proto.SyncActionValue.ExternalWebBetaAction.verify|verify} messages. + * @function encode + * @memberof proto.SyncActionValue.ExternalWebBetaAction + * @static + * @param {proto.SyncActionValue.IExternalWebBetaAction} message ExternalWebBetaAction message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExternalWebBetaAction.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.isOptIn != null && Object.hasOwnProperty.call(message, "isOptIn")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.isOptIn); + return writer; + }; + + /** + * Encodes the specified ExternalWebBetaAction message, length delimited. Does not implicitly {@link proto.SyncActionValue.ExternalWebBetaAction.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.SyncActionValue.ExternalWebBetaAction + * @static + * @param {proto.SyncActionValue.IExternalWebBetaAction} message ExternalWebBetaAction message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExternalWebBetaAction.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ExternalWebBetaAction message from the specified reader or buffer. + * @function decode + * @memberof proto.SyncActionValue.ExternalWebBetaAction + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.SyncActionValue.ExternalWebBetaAction} ExternalWebBetaAction + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExternalWebBetaAction.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SyncActionValue.ExternalWebBetaAction(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.isOptIn = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ExternalWebBetaAction message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.SyncActionValue.ExternalWebBetaAction + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.SyncActionValue.ExternalWebBetaAction} ExternalWebBetaAction + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExternalWebBetaAction.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ExternalWebBetaAction message. + * @function verify + * @memberof proto.SyncActionValue.ExternalWebBetaAction + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ExternalWebBetaAction.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.isOptIn != null && message.hasOwnProperty("isOptIn")) + if (typeof message.isOptIn !== "boolean") + return "isOptIn: boolean expected"; + return null; + }; + + /** + * Creates an ExternalWebBetaAction message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.SyncActionValue.ExternalWebBetaAction + * @static + * @param {Object.} object Plain object + * @returns {proto.SyncActionValue.ExternalWebBetaAction} ExternalWebBetaAction + */ + ExternalWebBetaAction.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SyncActionValue.ExternalWebBetaAction) + return object; + var message = new $root.proto.SyncActionValue.ExternalWebBetaAction(); + if (object.isOptIn != null) + message.isOptIn = Boolean(object.isOptIn); + return message; + }; + + /** + * Creates a plain object from an ExternalWebBetaAction message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.SyncActionValue.ExternalWebBetaAction + * @static + * @param {proto.SyncActionValue.ExternalWebBetaAction} message ExternalWebBetaAction + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExternalWebBetaAction.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.isOptIn = false; + if (message.isOptIn != null && message.hasOwnProperty("isOptIn")) + object.isOptIn = message.isOptIn; + return object; + }; + + /** + * Converts this ExternalWebBetaAction to JSON. + * @function toJSON + * @memberof proto.SyncActionValue.ExternalWebBetaAction + * @instance + * @returns {Object.} JSON object + */ + ExternalWebBetaAction.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ExternalWebBetaAction; + })(); + SyncActionValue.KeyExpiration = (function() { /** @@ -62417,6 +70490,561 @@ $root.proto = (function() { return MarkChatAsReadAction; })(); + SyncActionValue.MarketingMessageAction = (function() { + + /** + * Properties of a MarketingMessageAction. + * @memberof proto.SyncActionValue + * @interface IMarketingMessageAction + * @property {string|null} [name] MarketingMessageAction name + * @property {string|null} [message] MarketingMessageAction message + * @property {proto.SyncActionValue.MarketingMessageAction.MarketingMessagePrototypeType|null} [type] MarketingMessageAction type + * @property {number|Long|null} [createdAt] MarketingMessageAction createdAt + * @property {number|Long|null} [lastSentAt] MarketingMessageAction lastSentAt + * @property {boolean|null} [isDeleted] MarketingMessageAction isDeleted + * @property {string|null} [mediaId] MarketingMessageAction mediaId + */ + + /** + * Constructs a new MarketingMessageAction. + * @memberof proto.SyncActionValue + * @classdesc Represents a MarketingMessageAction. + * @implements IMarketingMessageAction + * @constructor + * @param {proto.SyncActionValue.IMarketingMessageAction=} [properties] Properties to set + */ + function MarketingMessageAction(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MarketingMessageAction name. + * @member {string} name + * @memberof proto.SyncActionValue.MarketingMessageAction + * @instance + */ + MarketingMessageAction.prototype.name = ""; + + /** + * MarketingMessageAction message. + * @member {string} message + * @memberof proto.SyncActionValue.MarketingMessageAction + * @instance + */ + MarketingMessageAction.prototype.message = ""; + + /** + * MarketingMessageAction type. + * @member {proto.SyncActionValue.MarketingMessageAction.MarketingMessagePrototypeType} type + * @memberof proto.SyncActionValue.MarketingMessageAction + * @instance + */ + MarketingMessageAction.prototype.type = 0; + + /** + * MarketingMessageAction createdAt. + * @member {number|Long} createdAt + * @memberof proto.SyncActionValue.MarketingMessageAction + * @instance + */ + MarketingMessageAction.prototype.createdAt = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * MarketingMessageAction lastSentAt. + * @member {number|Long} lastSentAt + * @memberof proto.SyncActionValue.MarketingMessageAction + * @instance + */ + MarketingMessageAction.prototype.lastSentAt = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * MarketingMessageAction isDeleted. + * @member {boolean} isDeleted + * @memberof proto.SyncActionValue.MarketingMessageAction + * @instance + */ + MarketingMessageAction.prototype.isDeleted = false; + + /** + * MarketingMessageAction mediaId. + * @member {string} mediaId + * @memberof proto.SyncActionValue.MarketingMessageAction + * @instance + */ + MarketingMessageAction.prototype.mediaId = ""; + + /** + * Creates a new MarketingMessageAction instance using the specified properties. + * @function create + * @memberof proto.SyncActionValue.MarketingMessageAction + * @static + * @param {proto.SyncActionValue.IMarketingMessageAction=} [properties] Properties to set + * @returns {proto.SyncActionValue.MarketingMessageAction} MarketingMessageAction instance + */ + MarketingMessageAction.create = function create(properties) { + return new MarketingMessageAction(properties); + }; + + /** + * Encodes the specified MarketingMessageAction message. Does not implicitly {@link proto.SyncActionValue.MarketingMessageAction.verify|verify} messages. + * @function encode + * @memberof proto.SyncActionValue.MarketingMessageAction + * @static + * @param {proto.SyncActionValue.IMarketingMessageAction} message MarketingMessageAction message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MarketingMessageAction.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.message != null && Object.hasOwnProperty.call(message, "message")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.message); + if (message.type != null && Object.hasOwnProperty.call(message, "type")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.type); + if (message.createdAt != null && Object.hasOwnProperty.call(message, "createdAt")) + writer.uint32(/* id 4, wireType 0 =*/32).int64(message.createdAt); + if (message.lastSentAt != null && Object.hasOwnProperty.call(message, "lastSentAt")) + writer.uint32(/* id 5, wireType 0 =*/40).int64(message.lastSentAt); + if (message.isDeleted != null && Object.hasOwnProperty.call(message, "isDeleted")) + writer.uint32(/* id 6, wireType 0 =*/48).bool(message.isDeleted); + if (message.mediaId != null && Object.hasOwnProperty.call(message, "mediaId")) + writer.uint32(/* id 7, wireType 2 =*/58).string(message.mediaId); + return writer; + }; + + /** + * Encodes the specified MarketingMessageAction message, length delimited. Does not implicitly {@link proto.SyncActionValue.MarketingMessageAction.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.SyncActionValue.MarketingMessageAction + * @static + * @param {proto.SyncActionValue.IMarketingMessageAction} message MarketingMessageAction message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MarketingMessageAction.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MarketingMessageAction message from the specified reader or buffer. + * @function decode + * @memberof proto.SyncActionValue.MarketingMessageAction + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.SyncActionValue.MarketingMessageAction} MarketingMessageAction + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MarketingMessageAction.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SyncActionValue.MarketingMessageAction(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.message = reader.string(); + break; + case 3: + message.type = reader.int32(); + break; + case 4: + message.createdAt = reader.int64(); + break; + case 5: + message.lastSentAt = reader.int64(); + break; + case 6: + message.isDeleted = reader.bool(); + break; + case 7: + message.mediaId = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MarketingMessageAction message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.SyncActionValue.MarketingMessageAction + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.SyncActionValue.MarketingMessageAction} MarketingMessageAction + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MarketingMessageAction.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MarketingMessageAction message. + * @function verify + * @memberof proto.SyncActionValue.MarketingMessageAction + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MarketingMessageAction.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.message != null && message.hasOwnProperty("message")) + if (!$util.isString(message.message)) + return "message: string expected"; + if (message.type != null && message.hasOwnProperty("type")) + switch (message.type) { + default: + return "type: enum value expected"; + case 0: + break; + } + if (message.createdAt != null && message.hasOwnProperty("createdAt")) + if (!$util.isInteger(message.createdAt) && !(message.createdAt && $util.isInteger(message.createdAt.low) && $util.isInteger(message.createdAt.high))) + return "createdAt: integer|Long expected"; + if (message.lastSentAt != null && message.hasOwnProperty("lastSentAt")) + if (!$util.isInteger(message.lastSentAt) && !(message.lastSentAt && $util.isInteger(message.lastSentAt.low) && $util.isInteger(message.lastSentAt.high))) + return "lastSentAt: integer|Long expected"; + if (message.isDeleted != null && message.hasOwnProperty("isDeleted")) + if (typeof message.isDeleted !== "boolean") + return "isDeleted: boolean expected"; + if (message.mediaId != null && message.hasOwnProperty("mediaId")) + if (!$util.isString(message.mediaId)) + return "mediaId: string expected"; + return null; + }; + + /** + * Creates a MarketingMessageAction message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.SyncActionValue.MarketingMessageAction + * @static + * @param {Object.} object Plain object + * @returns {proto.SyncActionValue.MarketingMessageAction} MarketingMessageAction + */ + MarketingMessageAction.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SyncActionValue.MarketingMessageAction) + return object; + var message = new $root.proto.SyncActionValue.MarketingMessageAction(); + if (object.name != null) + message.name = String(object.name); + if (object.message != null) + message.message = String(object.message); + switch (object.type) { + case "PERSONALIZED": + case 0: + message.type = 0; + break; + } + if (object.createdAt != null) + if ($util.Long) + (message.createdAt = $util.Long.fromValue(object.createdAt)).unsigned = false; + else if (typeof object.createdAt === "string") + message.createdAt = parseInt(object.createdAt, 10); + else if (typeof object.createdAt === "number") + message.createdAt = object.createdAt; + else if (typeof object.createdAt === "object") + message.createdAt = new $util.LongBits(object.createdAt.low >>> 0, object.createdAt.high >>> 0).toNumber(); + if (object.lastSentAt != null) + if ($util.Long) + (message.lastSentAt = $util.Long.fromValue(object.lastSentAt)).unsigned = false; + else if (typeof object.lastSentAt === "string") + message.lastSentAt = parseInt(object.lastSentAt, 10); + else if (typeof object.lastSentAt === "number") + message.lastSentAt = object.lastSentAt; + else if (typeof object.lastSentAt === "object") + message.lastSentAt = new $util.LongBits(object.lastSentAt.low >>> 0, object.lastSentAt.high >>> 0).toNumber(); + if (object.isDeleted != null) + message.isDeleted = Boolean(object.isDeleted); + if (object.mediaId != null) + message.mediaId = String(object.mediaId); + return message; + }; + + /** + * Creates a plain object from a MarketingMessageAction message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.SyncActionValue.MarketingMessageAction + * @static + * @param {proto.SyncActionValue.MarketingMessageAction} message MarketingMessageAction + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MarketingMessageAction.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.name = ""; + object.message = ""; + object.type = options.enums === String ? "PERSONALIZED" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.createdAt = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.createdAt = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.lastSentAt = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.lastSentAt = options.longs === String ? "0" : 0; + object.isDeleted = false; + object.mediaId = ""; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.message != null && message.hasOwnProperty("message")) + object.message = message.message; + if (message.type != null && message.hasOwnProperty("type")) + object.type = options.enums === String ? $root.proto.SyncActionValue.MarketingMessageAction.MarketingMessagePrototypeType[message.type] : message.type; + if (message.createdAt != null && message.hasOwnProperty("createdAt")) + if (typeof message.createdAt === "number") + object.createdAt = options.longs === String ? String(message.createdAt) : message.createdAt; + else + object.createdAt = options.longs === String ? $util.Long.prototype.toString.call(message.createdAt) : options.longs === Number ? new $util.LongBits(message.createdAt.low >>> 0, message.createdAt.high >>> 0).toNumber() : message.createdAt; + if (message.lastSentAt != null && message.hasOwnProperty("lastSentAt")) + if (typeof message.lastSentAt === "number") + object.lastSentAt = options.longs === String ? String(message.lastSentAt) : message.lastSentAt; + else + object.lastSentAt = options.longs === String ? $util.Long.prototype.toString.call(message.lastSentAt) : options.longs === Number ? new $util.LongBits(message.lastSentAt.low >>> 0, message.lastSentAt.high >>> 0).toNumber() : message.lastSentAt; + if (message.isDeleted != null && message.hasOwnProperty("isDeleted")) + object.isDeleted = message.isDeleted; + if (message.mediaId != null && message.hasOwnProperty("mediaId")) + object.mediaId = message.mediaId; + return object; + }; + + /** + * Converts this MarketingMessageAction to JSON. + * @function toJSON + * @memberof proto.SyncActionValue.MarketingMessageAction + * @instance + * @returns {Object.} JSON object + */ + MarketingMessageAction.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * MarketingMessagePrototypeType enum. + * @name proto.SyncActionValue.MarketingMessageAction.MarketingMessagePrototypeType + * @enum {number} + * @property {number} PERSONALIZED=0 PERSONALIZED value + */ + MarketingMessageAction.MarketingMessagePrototypeType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "PERSONALIZED"] = 0; + return values; + })(); + + return MarketingMessageAction; + })(); + + SyncActionValue.MarketingMessageBroadcastAction = (function() { + + /** + * Properties of a MarketingMessageBroadcastAction. + * @memberof proto.SyncActionValue + * @interface IMarketingMessageBroadcastAction + * @property {number|null} [repliedCount] MarketingMessageBroadcastAction repliedCount + */ + + /** + * Constructs a new MarketingMessageBroadcastAction. + * @memberof proto.SyncActionValue + * @classdesc Represents a MarketingMessageBroadcastAction. + * @implements IMarketingMessageBroadcastAction + * @constructor + * @param {proto.SyncActionValue.IMarketingMessageBroadcastAction=} [properties] Properties to set + */ + function MarketingMessageBroadcastAction(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MarketingMessageBroadcastAction repliedCount. + * @member {number} repliedCount + * @memberof proto.SyncActionValue.MarketingMessageBroadcastAction + * @instance + */ + MarketingMessageBroadcastAction.prototype.repliedCount = 0; + + /** + * Creates a new MarketingMessageBroadcastAction instance using the specified properties. + * @function create + * @memberof proto.SyncActionValue.MarketingMessageBroadcastAction + * @static + * @param {proto.SyncActionValue.IMarketingMessageBroadcastAction=} [properties] Properties to set + * @returns {proto.SyncActionValue.MarketingMessageBroadcastAction} MarketingMessageBroadcastAction instance + */ + MarketingMessageBroadcastAction.create = function create(properties) { + return new MarketingMessageBroadcastAction(properties); + }; + + /** + * Encodes the specified MarketingMessageBroadcastAction message. Does not implicitly {@link proto.SyncActionValue.MarketingMessageBroadcastAction.verify|verify} messages. + * @function encode + * @memberof proto.SyncActionValue.MarketingMessageBroadcastAction + * @static + * @param {proto.SyncActionValue.IMarketingMessageBroadcastAction} message MarketingMessageBroadcastAction message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MarketingMessageBroadcastAction.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.repliedCount != null && Object.hasOwnProperty.call(message, "repliedCount")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.repliedCount); + return writer; + }; + + /** + * Encodes the specified MarketingMessageBroadcastAction message, length delimited. Does not implicitly {@link proto.SyncActionValue.MarketingMessageBroadcastAction.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.SyncActionValue.MarketingMessageBroadcastAction + * @static + * @param {proto.SyncActionValue.IMarketingMessageBroadcastAction} message MarketingMessageBroadcastAction message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MarketingMessageBroadcastAction.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MarketingMessageBroadcastAction message from the specified reader or buffer. + * @function decode + * @memberof proto.SyncActionValue.MarketingMessageBroadcastAction + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.SyncActionValue.MarketingMessageBroadcastAction} MarketingMessageBroadcastAction + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MarketingMessageBroadcastAction.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SyncActionValue.MarketingMessageBroadcastAction(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.repliedCount = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MarketingMessageBroadcastAction message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.SyncActionValue.MarketingMessageBroadcastAction + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.SyncActionValue.MarketingMessageBroadcastAction} MarketingMessageBroadcastAction + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MarketingMessageBroadcastAction.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MarketingMessageBroadcastAction message. + * @function verify + * @memberof proto.SyncActionValue.MarketingMessageBroadcastAction + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MarketingMessageBroadcastAction.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.repliedCount != null && message.hasOwnProperty("repliedCount")) + if (!$util.isInteger(message.repliedCount)) + return "repliedCount: integer expected"; + return null; + }; + + /** + * Creates a MarketingMessageBroadcastAction message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.SyncActionValue.MarketingMessageBroadcastAction + * @static + * @param {Object.} object Plain object + * @returns {proto.SyncActionValue.MarketingMessageBroadcastAction} MarketingMessageBroadcastAction + */ + MarketingMessageBroadcastAction.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SyncActionValue.MarketingMessageBroadcastAction) + return object; + var message = new $root.proto.SyncActionValue.MarketingMessageBroadcastAction(); + if (object.repliedCount != null) + message.repliedCount = object.repliedCount | 0; + return message; + }; + + /** + * Creates a plain object from a MarketingMessageBroadcastAction message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.SyncActionValue.MarketingMessageBroadcastAction + * @static + * @param {proto.SyncActionValue.MarketingMessageBroadcastAction} message MarketingMessageBroadcastAction + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MarketingMessageBroadcastAction.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.repliedCount = 0; + if (message.repliedCount != null && message.hasOwnProperty("repliedCount")) + object.repliedCount = message.repliedCount; + return object; + }; + + /** + * Converts this MarketingMessageBroadcastAction to JSON. + * @function toJSON + * @memberof proto.SyncActionValue.MarketingMessageBroadcastAction + * @instance + * @returns {Object.} JSON object + */ + MarketingMessageBroadcastAction.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return MarketingMessageBroadcastAction; + })(); + SyncActionValue.MuteAction = (function() { /** @@ -63037,6 +71665,193 @@ $root.proto = (function() { return PinAction; })(); + SyncActionValue.PnForLidChatAction = (function() { + + /** + * Properties of a PnForLidChatAction. + * @memberof proto.SyncActionValue + * @interface IPnForLidChatAction + * @property {string|null} [pnJid] PnForLidChatAction pnJid + */ + + /** + * Constructs a new PnForLidChatAction. + * @memberof proto.SyncActionValue + * @classdesc Represents a PnForLidChatAction. + * @implements IPnForLidChatAction + * @constructor + * @param {proto.SyncActionValue.IPnForLidChatAction=} [properties] Properties to set + */ + function PnForLidChatAction(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PnForLidChatAction pnJid. + * @member {string} pnJid + * @memberof proto.SyncActionValue.PnForLidChatAction + * @instance + */ + PnForLidChatAction.prototype.pnJid = ""; + + /** + * Creates a new PnForLidChatAction instance using the specified properties. + * @function create + * @memberof proto.SyncActionValue.PnForLidChatAction + * @static + * @param {proto.SyncActionValue.IPnForLidChatAction=} [properties] Properties to set + * @returns {proto.SyncActionValue.PnForLidChatAction} PnForLidChatAction instance + */ + PnForLidChatAction.create = function create(properties) { + return new PnForLidChatAction(properties); + }; + + /** + * Encodes the specified PnForLidChatAction message. Does not implicitly {@link proto.SyncActionValue.PnForLidChatAction.verify|verify} messages. + * @function encode + * @memberof proto.SyncActionValue.PnForLidChatAction + * @static + * @param {proto.SyncActionValue.IPnForLidChatAction} message PnForLidChatAction message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PnForLidChatAction.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.pnJid != null && Object.hasOwnProperty.call(message, "pnJid")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.pnJid); + return writer; + }; + + /** + * Encodes the specified PnForLidChatAction message, length delimited. Does not implicitly {@link proto.SyncActionValue.PnForLidChatAction.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.SyncActionValue.PnForLidChatAction + * @static + * @param {proto.SyncActionValue.IPnForLidChatAction} message PnForLidChatAction message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PnForLidChatAction.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PnForLidChatAction message from the specified reader or buffer. + * @function decode + * @memberof proto.SyncActionValue.PnForLidChatAction + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.SyncActionValue.PnForLidChatAction} PnForLidChatAction + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PnForLidChatAction.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SyncActionValue.PnForLidChatAction(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.pnJid = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PnForLidChatAction message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.SyncActionValue.PnForLidChatAction + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.SyncActionValue.PnForLidChatAction} PnForLidChatAction + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PnForLidChatAction.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PnForLidChatAction message. + * @function verify + * @memberof proto.SyncActionValue.PnForLidChatAction + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PnForLidChatAction.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.pnJid != null && message.hasOwnProperty("pnJid")) + if (!$util.isString(message.pnJid)) + return "pnJid: string expected"; + return null; + }; + + /** + * Creates a PnForLidChatAction message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.SyncActionValue.PnForLidChatAction + * @static + * @param {Object.} object Plain object + * @returns {proto.SyncActionValue.PnForLidChatAction} PnForLidChatAction + */ + PnForLidChatAction.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SyncActionValue.PnForLidChatAction) + return object; + var message = new $root.proto.SyncActionValue.PnForLidChatAction(); + if (object.pnJid != null) + message.pnJid = String(object.pnJid); + return message; + }; + + /** + * Creates a plain object from a PnForLidChatAction message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.SyncActionValue.PnForLidChatAction + * @static + * @param {proto.SyncActionValue.PnForLidChatAction} message PnForLidChatAction + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PnForLidChatAction.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.pnJid = ""; + if (message.pnJid != null && message.hasOwnProperty("pnJid")) + object.pnJid = message.pnJid; + return object; + }; + + /** + * Converts this PnForLidChatAction to JSON. + * @function toJSON + * @memberof proto.SyncActionValue.PnForLidChatAction + * @instance + * @returns {Object.} JSON object + */ + PnForLidChatAction.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PnForLidChatAction; + })(); + SyncActionValue.PrimaryFeature = (function() { /** @@ -63427,6 +72242,193 @@ $root.proto = (function() { return PrimaryVersionAction; })(); + SyncActionValue.PrivacySettingRelayAllCalls = (function() { + + /** + * Properties of a PrivacySettingRelayAllCalls. + * @memberof proto.SyncActionValue + * @interface IPrivacySettingRelayAllCalls + * @property {boolean|null} [isEnabled] PrivacySettingRelayAllCalls isEnabled + */ + + /** + * Constructs a new PrivacySettingRelayAllCalls. + * @memberof proto.SyncActionValue + * @classdesc Represents a PrivacySettingRelayAllCalls. + * @implements IPrivacySettingRelayAllCalls + * @constructor + * @param {proto.SyncActionValue.IPrivacySettingRelayAllCalls=} [properties] Properties to set + */ + function PrivacySettingRelayAllCalls(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PrivacySettingRelayAllCalls isEnabled. + * @member {boolean} isEnabled + * @memberof proto.SyncActionValue.PrivacySettingRelayAllCalls + * @instance + */ + PrivacySettingRelayAllCalls.prototype.isEnabled = false; + + /** + * Creates a new PrivacySettingRelayAllCalls instance using the specified properties. + * @function create + * @memberof proto.SyncActionValue.PrivacySettingRelayAllCalls + * @static + * @param {proto.SyncActionValue.IPrivacySettingRelayAllCalls=} [properties] Properties to set + * @returns {proto.SyncActionValue.PrivacySettingRelayAllCalls} PrivacySettingRelayAllCalls instance + */ + PrivacySettingRelayAllCalls.create = function create(properties) { + return new PrivacySettingRelayAllCalls(properties); + }; + + /** + * Encodes the specified PrivacySettingRelayAllCalls message. Does not implicitly {@link proto.SyncActionValue.PrivacySettingRelayAllCalls.verify|verify} messages. + * @function encode + * @memberof proto.SyncActionValue.PrivacySettingRelayAllCalls + * @static + * @param {proto.SyncActionValue.IPrivacySettingRelayAllCalls} message PrivacySettingRelayAllCalls message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PrivacySettingRelayAllCalls.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.isEnabled != null && Object.hasOwnProperty.call(message, "isEnabled")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.isEnabled); + return writer; + }; + + /** + * Encodes the specified PrivacySettingRelayAllCalls message, length delimited. Does not implicitly {@link proto.SyncActionValue.PrivacySettingRelayAllCalls.verify|verify} messages. + * @function encodeDelimited + * @memberof proto.SyncActionValue.PrivacySettingRelayAllCalls + * @static + * @param {proto.SyncActionValue.IPrivacySettingRelayAllCalls} message PrivacySettingRelayAllCalls message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PrivacySettingRelayAllCalls.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PrivacySettingRelayAllCalls message from the specified reader or buffer. + * @function decode + * @memberof proto.SyncActionValue.PrivacySettingRelayAllCalls + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {proto.SyncActionValue.PrivacySettingRelayAllCalls} PrivacySettingRelayAllCalls + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PrivacySettingRelayAllCalls.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.proto.SyncActionValue.PrivacySettingRelayAllCalls(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.isEnabled = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PrivacySettingRelayAllCalls message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof proto.SyncActionValue.PrivacySettingRelayAllCalls + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {proto.SyncActionValue.PrivacySettingRelayAllCalls} PrivacySettingRelayAllCalls + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PrivacySettingRelayAllCalls.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PrivacySettingRelayAllCalls message. + * @function verify + * @memberof proto.SyncActionValue.PrivacySettingRelayAllCalls + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PrivacySettingRelayAllCalls.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.isEnabled != null && message.hasOwnProperty("isEnabled")) + if (typeof message.isEnabled !== "boolean") + return "isEnabled: boolean expected"; + return null; + }; + + /** + * Creates a PrivacySettingRelayAllCalls message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof proto.SyncActionValue.PrivacySettingRelayAllCalls + * @static + * @param {Object.} object Plain object + * @returns {proto.SyncActionValue.PrivacySettingRelayAllCalls} PrivacySettingRelayAllCalls + */ + PrivacySettingRelayAllCalls.fromObject = function fromObject(object) { + if (object instanceof $root.proto.SyncActionValue.PrivacySettingRelayAllCalls) + return object; + var message = new $root.proto.SyncActionValue.PrivacySettingRelayAllCalls(); + if (object.isEnabled != null) + message.isEnabled = Boolean(object.isEnabled); + return message; + }; + + /** + * Creates a plain object from a PrivacySettingRelayAllCalls message. Also converts values to other types if specified. + * @function toObject + * @memberof proto.SyncActionValue.PrivacySettingRelayAllCalls + * @static + * @param {proto.SyncActionValue.PrivacySettingRelayAllCalls} message PrivacySettingRelayAllCalls + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PrivacySettingRelayAllCalls.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.isEnabled = false; + if (message.isEnabled != null && message.hasOwnProperty("isEnabled")) + object.isEnabled = message.isEnabled; + return object; + }; + + /** + * Converts this PrivacySettingRelayAllCalls to JSON. + * @function toJSON + * @memberof proto.SyncActionValue.PrivacySettingRelayAllCalls + * @instance + * @returns {Object.} JSON object + */ + PrivacySettingRelayAllCalls.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PrivacySettingRelayAllCalls; + })(); + SyncActionValue.PushNameSetting = (function() { /** @@ -72800,6 +81802,7 @@ $root.proto = (function() { * @property {proto.IKeepInChat|null} [keepInChat] WebMessageInfo keepInChat * @property {string|null} [originalSelfAuthorUserJidString] WebMessageInfo originalSelfAuthorUserJidString * @property {number|Long|null} [revokeMessageTimestamp] WebMessageInfo revokeMessageTimestamp + * @property {proto.IPinInChat|null} [pinInChat] WebMessageInfo pinInChat */ /** @@ -73166,6 +82169,14 @@ $root.proto = (function() { */ WebMessageInfo.prototype.revokeMessageTimestamp = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + /** + * WebMessageInfo pinInChat. + * @member {proto.IPinInChat|null|undefined} pinInChat + * @memberof proto.WebMessageInfo + * @instance + */ + WebMessageInfo.prototype.pinInChat = null; + /** * Creates a new WebMessageInfo instance using the specified properties. * @function create @@ -73280,6 +82291,8 @@ $root.proto = (function() { writer.uint32(/* id 51, wireType 2 =*/410).string(message.originalSelfAuthorUserJidString); if (message.revokeMessageTimestamp != null && Object.hasOwnProperty.call(message, "revokeMessageTimestamp")) writer.uint32(/* id 52, wireType 0 =*/416).uint64(message.revokeMessageTimestamp); + if (message.pinInChat != null && Object.hasOwnProperty.call(message, "pinInChat")) + $root.proto.PinInChat.encode(message.pinInChat, writer.uint32(/* id 54, wireType 2 =*/434).fork()).ldelim(); return writer; }; @@ -73453,6 +82466,9 @@ $root.proto = (function() { case 52: message.revokeMessageTimestamp = reader.uint64(); break; + case 54: + message.pinInChat = $root.proto.PinInChat.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -73711,6 +82727,27 @@ $root.proto = (function() { case 159: case 160: case 161: + case 162: + case 163: + case 164: + case 165: + case 166: + case 167: + case 168: + case 169: + case 170: + case 171: + case 172: + case 173: + case 174: + case 175: + case 176: + case 177: + case 178: + case 179: + case 180: + case 181: + case 182: break; } if (message.clearMedia != null && message.hasOwnProperty("clearMedia")) @@ -73848,6 +82885,11 @@ $root.proto = (function() { if (message.revokeMessageTimestamp != null && message.hasOwnProperty("revokeMessageTimestamp")) if (!$util.isInteger(message.revokeMessageTimestamp) && !(message.revokeMessageTimestamp && $util.isInteger(message.revokeMessageTimestamp.low) && $util.isInteger(message.revokeMessageTimestamp.high))) return "revokeMessageTimestamp: integer|Long expected"; + if (message.pinInChat != null && message.hasOwnProperty("pinInChat")) { + var error = $root.proto.PinInChat.verify(message.pinInChat); + if (error) + return "pinInChat." + error; + } return null; }; @@ -74587,6 +83629,90 @@ $root.proto = (function() { case 161: message.messageStubType = 161; break; + case "SCHEDULED_CALL_START_MESSAGE": + case 162: + message.messageStubType = 162; + break; + case "COMMUNITY_INVITE_RICH": + case 163: + message.messageStubType = 163; + break; + case "COMMUNITY_INVITE_AUTO_ADD_RICH": + case 164: + message.messageStubType = 164; + break; + case "SUB_GROUP_INVITE_RICH": + case 165: + message.messageStubType = 165; + break; + case "SUB_GROUP_PARTICIPANT_ADD_RICH": + case 166: + message.messageStubType = 166; + break; + case "COMMUNITY_LINK_PARENT_GROUP_RICH": + case 167: + message.messageStubType = 167; + break; + case "COMMUNITY_PARTICIPANT_ADD_RICH": + case 168: + message.messageStubType = 168; + break; + case "SILENCED_UNKNOWN_CALLER_AUDIO": + case 169: + message.messageStubType = 169; + break; + case "SILENCED_UNKNOWN_CALLER_VIDEO": + case 170: + message.messageStubType = 170; + break; + case "GROUP_MEMBER_ADD_MODE": + case 171: + message.messageStubType = 171; + break; + case "GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD": + case 172: + message.messageStubType = 172; + break; + case "COMMUNITY_CHANGE_DESCRIPTION": + case 173: + message.messageStubType = 173; + break; + case "SENDER_INVITE": + case 174: + message.messageStubType = 174; + break; + case "RECEIVER_INVITE": + case 175: + message.messageStubType = 175; + break; + case "COMMUNITY_ALLOW_MEMBER_ADDED_GROUPS": + case 176: + message.messageStubType = 176; + break; + case "PINNED_MESSAGE_IN_CHAT": + case 177: + message.messageStubType = 177; + break; + case "PAYMENT_INVITE_SETUP_INVITER": + case 178: + message.messageStubType = 178; + break; + case "PAYMENT_INVITE_SETUP_INVITEE_RECEIVE_ONLY": + case 179: + message.messageStubType = 179; + break; + case "PAYMENT_INVITE_SETUP_INVITEE_SEND_AND_RECEIVE": + case 180: + message.messageStubType = 180; + break; + case "LINKED_GROUP_CALL_START": + case 181: + message.messageStubType = 181; + break; + case "REPORT_TO_ADMIN_ENABLED_STATUS": + case 182: + message.messageStubType = 182; + break; } if (object.clearMedia != null) message.clearMedia = Boolean(object.clearMedia); @@ -74741,6 +83867,11 @@ $root.proto = (function() { message.revokeMessageTimestamp = object.revokeMessageTimestamp; else if (typeof object.revokeMessageTimestamp === "object") message.revokeMessageTimestamp = new $util.LongBits(object.revokeMessageTimestamp.low >>> 0, object.revokeMessageTimestamp.high >>> 0).toNumber(true); + if (object.pinInChat != null) { + if (typeof object.pinInChat !== "object") + throw TypeError(".proto.WebMessageInfo.pinInChat: object expected"); + message.pinInChat = $root.proto.PinInChat.fromObject(object.pinInChat); + } return message; }; @@ -74837,6 +83968,7 @@ $root.proto = (function() { object.revokeMessageTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; } else object.revokeMessageTimestamp = options.longs === String ? "0" : 0; + object.pinInChat = null; } if (message.key != null && message.hasOwnProperty("key")) object.key = $root.proto.MessageKey.toObject(message.key, options); @@ -74951,6 +84083,8 @@ $root.proto = (function() { object.revokeMessageTimestamp = options.longs === String ? String(message.revokeMessageTimestamp) : message.revokeMessageTimestamp; else object.revokeMessageTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.revokeMessageTimestamp) : options.longs === Number ? new $util.LongBits(message.revokeMessageTimestamp.low >>> 0, message.revokeMessageTimestamp.high >>> 0).toNumber(true) : message.revokeMessageTimestamp; + if (message.pinInChat != null && message.hasOwnProperty("pinInChat")) + object.pinInChat = $root.proto.PinInChat.toObject(message.pinInChat, options); return object; }; @@ -75171,6 +84305,27 @@ $root.proto = (function() { * @property {number} CAG_INVITE_AUTO_ADD=159 CAG_INVITE_AUTO_ADD value * @property {number} BIZ_CHAT_ASSIGNMENT_UNASSIGN=160 BIZ_CHAT_ASSIGNMENT_UNASSIGN value * @property {number} CAG_INVITE_AUTO_JOINED=161 CAG_INVITE_AUTO_JOINED value + * @property {number} SCHEDULED_CALL_START_MESSAGE=162 SCHEDULED_CALL_START_MESSAGE value + * @property {number} COMMUNITY_INVITE_RICH=163 COMMUNITY_INVITE_RICH value + * @property {number} COMMUNITY_INVITE_AUTO_ADD_RICH=164 COMMUNITY_INVITE_AUTO_ADD_RICH value + * @property {number} SUB_GROUP_INVITE_RICH=165 SUB_GROUP_INVITE_RICH value + * @property {number} SUB_GROUP_PARTICIPANT_ADD_RICH=166 SUB_GROUP_PARTICIPANT_ADD_RICH value + * @property {number} COMMUNITY_LINK_PARENT_GROUP_RICH=167 COMMUNITY_LINK_PARENT_GROUP_RICH value + * @property {number} COMMUNITY_PARTICIPANT_ADD_RICH=168 COMMUNITY_PARTICIPANT_ADD_RICH value + * @property {number} SILENCED_UNKNOWN_CALLER_AUDIO=169 SILENCED_UNKNOWN_CALLER_AUDIO value + * @property {number} SILENCED_UNKNOWN_CALLER_VIDEO=170 SILENCED_UNKNOWN_CALLER_VIDEO value + * @property {number} GROUP_MEMBER_ADD_MODE=171 GROUP_MEMBER_ADD_MODE value + * @property {number} GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD=172 GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD value + * @property {number} COMMUNITY_CHANGE_DESCRIPTION=173 COMMUNITY_CHANGE_DESCRIPTION value + * @property {number} SENDER_INVITE=174 SENDER_INVITE value + * @property {number} RECEIVER_INVITE=175 RECEIVER_INVITE value + * @property {number} COMMUNITY_ALLOW_MEMBER_ADDED_GROUPS=176 COMMUNITY_ALLOW_MEMBER_ADDED_GROUPS value + * @property {number} PINNED_MESSAGE_IN_CHAT=177 PINNED_MESSAGE_IN_CHAT value + * @property {number} PAYMENT_INVITE_SETUP_INVITER=178 PAYMENT_INVITE_SETUP_INVITER value + * @property {number} PAYMENT_INVITE_SETUP_INVITEE_RECEIVE_ONLY=179 PAYMENT_INVITE_SETUP_INVITEE_RECEIVE_ONLY value + * @property {number} PAYMENT_INVITE_SETUP_INVITEE_SEND_AND_RECEIVE=180 PAYMENT_INVITE_SETUP_INVITEE_SEND_AND_RECEIVE value + * @property {number} LINKED_GROUP_CALL_START=181 LINKED_GROUP_CALL_START value + * @property {number} REPORT_TO_ADMIN_ENABLED_STATUS=182 REPORT_TO_ADMIN_ENABLED_STATUS value */ WebMessageInfo.StubType = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -75336,6 +84491,27 @@ $root.proto = (function() { values[valuesById[159] = "CAG_INVITE_AUTO_ADD"] = 159; values[valuesById[160] = "BIZ_CHAT_ASSIGNMENT_UNASSIGN"] = 160; values[valuesById[161] = "CAG_INVITE_AUTO_JOINED"] = 161; + values[valuesById[162] = "SCHEDULED_CALL_START_MESSAGE"] = 162; + values[valuesById[163] = "COMMUNITY_INVITE_RICH"] = 163; + values[valuesById[164] = "COMMUNITY_INVITE_AUTO_ADD_RICH"] = 164; + values[valuesById[165] = "SUB_GROUP_INVITE_RICH"] = 165; + values[valuesById[166] = "SUB_GROUP_PARTICIPANT_ADD_RICH"] = 166; + values[valuesById[167] = "COMMUNITY_LINK_PARENT_GROUP_RICH"] = 167; + values[valuesById[168] = "COMMUNITY_PARTICIPANT_ADD_RICH"] = 168; + values[valuesById[169] = "SILENCED_UNKNOWN_CALLER_AUDIO"] = 169; + values[valuesById[170] = "SILENCED_UNKNOWN_CALLER_VIDEO"] = 170; + values[valuesById[171] = "GROUP_MEMBER_ADD_MODE"] = 171; + values[valuesById[172] = "GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD"] = 172; + values[valuesById[173] = "COMMUNITY_CHANGE_DESCRIPTION"] = 173; + values[valuesById[174] = "SENDER_INVITE"] = 174; + values[valuesById[175] = "RECEIVER_INVITE"] = 175; + values[valuesById[176] = "COMMUNITY_ALLOW_MEMBER_ADDED_GROUPS"] = 176; + values[valuesById[177] = "PINNED_MESSAGE_IN_CHAT"] = 177; + values[valuesById[178] = "PAYMENT_INVITE_SETUP_INVITER"] = 178; + values[valuesById[179] = "PAYMENT_INVITE_SETUP_INVITEE_RECEIVE_ONLY"] = 179; + values[valuesById[180] = "PAYMENT_INVITE_SETUP_INVITEE_SEND_AND_RECEIVE"] = 180; + values[valuesById[181] = "LINKED_GROUP_CALL_START"] = 181; + values[valuesById[182] = "REPORT_TO_ADMIN_ENABLED_STATUS"] = 182; return values; })(); diff --git a/whatsapp_addon/Baileys/WASignalGroup/group_cipher.js b/whatsapp_addon/Baileys/WASignalGroup/group_cipher.js index a10de25..3c126f4 100644 --- a/whatsapp_addon/Baileys/WASignalGroup/group_cipher.js +++ b/whatsapp_addon/Baileys/WASignalGroup/group_cipher.js @@ -41,7 +41,7 @@ class GroupCipher { const senderKeyMessage = new SenderKeyMessage(null, null, null, null, senderKeyMessageBytes); const senderKeyState = record.getSenderKeyState(senderKeyMessage.getKeyId()); - //senderKeyMessage.verifySignature(senderKeyState.getSigningKeyPublic()); + senderKeyMessage.verifySignature(senderKeyState.getSigningKeyPublic()); const senderKey = this.getSenderKey(senderKeyState, senderKeyMessage.getIteration()); // senderKeyState.senderKeyStateStructure.senderSigningKey.private = diff --git a/whatsapp_addon/Baileys/WASignalGroup/sender_key_message.js b/whatsapp_addon/Baileys/WASignalGroup/sender_key_message.js index 80683a6..288aeba 100644 --- a/whatsapp_addon/Baileys/WASignalGroup/sender_key_message.js +++ b/whatsapp_addon/Baileys/WASignalGroup/sender_key_message.js @@ -64,7 +64,7 @@ class SenderKeyMessage extends CiphertextMessage { } verifySignature(signatureKey) { - const part1 = this.serialized.slice(0, this.serialized.length - this.SIGNATURE_LENGTH + 1); + const part1 = this.serialized.slice(0, this.serialized.length - this.SIGNATURE_LENGTH); const part2 = this.serialized.slice(-1 * this.SIGNATURE_LENGTH); const res = curve.verifySignature(signatureKey, part1, part2); if (!res) throw new Error('Invalid signature!'); diff --git a/whatsapp_addon/Baileys/jest.config.js b/whatsapp_addon/Baileys/jest.config.js index af9e3d4..9d83927 100644 --- a/whatsapp_addon/Baileys/jest.config.js +++ b/whatsapp_addon/Baileys/jest.config.js @@ -1,11 +1,14 @@ module.exports = { - "roots": [ - "/src" + 'roots': [ + '/src' ], - "testMatch": [ - "**/Tests/test.*.+(ts|tsx|js)", + 'testMatch': [ + '**/Tests/test.*.+(ts|tsx|js)', ], - "transform": { - "^.+\\.(ts|tsx)$": "ts-jest" + 'transform': { + '^.+\\.(ts|tsx)$': 'ts-jest' + }, + moduleNameMapper: { + '^axios$': require.resolve('axios'), }, } \ No newline at end of file diff --git a/whatsapp_addon/Baileys/package-lock.json b/whatsapp_addon/Baileys/package-lock.json new file mode 100644 index 0000000..c56169f --- /dev/null +++ b/whatsapp_addon/Baileys/package-lock.json @@ -0,0 +1,13003 @@ +{ + "name": "@whiskeysockets/baileys", + "version": "6.2.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@whiskeysockets/baileys", + "version": "6.2.1", + "license": "MIT", + "dependencies": { + "@hapi/boom": "^9.1.3", + "axios": "^1.3.3", + "futoin-hkdf": "^1.5.1", + "libphonenumber-js": "^1.10.20", + "libsignal": "git+https://github.com/giuseppecastaldo/libsignal-node", + "music-metadata": "^7.12.3", + "node-cache": "^5.1.2", + "pino": "^7.0.0", + "protobufjs": "^6.11.3", + "uuid": "^9.0.0", + "ws": "^8.0.0" + }, + "devDependencies": { + "@adiwajshing/eslint-config": "https://github.com/adiwajshing/eslint-config.git", + "@adiwajshing/keyed-db": "^0.2.4", + "@types/got": "^9.6.11", + "@types/jest": "^27.5.1", + "@types/node": "^16.0.0", + "@types/sharp": "^0.29.4", + "@types/ws": "^8.0.0", + "conventional-changelog-cli": "^2.2.2", + "eslint": "^8.0.0", + "jest": "^27.0.6", + "jimp": "^0.16.1", + "link-preview-js": "^3.0.0", + "qrcode-terminal": "^0.12.0", + "release-it": "^15.10.3", + "sharp": "^0.30.5", + "ts-jest": "^27.0.3", + "ts-node": "^10.8.1", + "typedoc": "^0.24.7", + "typescript": "^4.0.0" + }, + "peerDependencies": { + "@adiwajshing/keyed-db": "^0.2.4", + "jimp": "^0.16.1", + "link-preview-js": "^3.0.0", + "qrcode-terminal": "^0.12.0", + "sharp": "^0.30.5" + }, + "peerDependenciesMeta": { + "@adiwajshing/keyed-db": { + "optional": true + }, + "jimp": { + "optional": true + }, + "link-preview-js": { + "optional": true + }, + "qrcode-terminal": { + "optional": true + }, + "sharp": { + "optional": true + } + } + }, + "node_modules/@adiwajshing/eslint-config": { + "version": "1.0.0", + "resolved": "git+ssh://git@github.com/adiwajshing/eslint-config.git", + "integrity": "sha512-b1+RNsL07xJ2h1RCJLtC6rSY0/sbRRQUorXXPLxhNpmwgCsq7A08IwW5SQZ94zhEAwuNIcKz/cVOgsnCU3AFeQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^5.33.1", + "@typescript-eslint/parser": "^5.59.0", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-simple-import-sort": "^10.0.0" + }, + "peerDependencies": { + "eslint": "*", + "typescript": ">=4" + } + }, + "node_modules/@adiwajshing/keyed-db": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@adiwajshing/keyed-db/-/keyed-db-0.2.4.tgz", + "integrity": "sha512-yprSnAtj80/VKuDqRcFFLDYltoNV8tChNwFfIgcf6PGD4sjzWIBgs08pRuTqGH5mk5wgL6PBRSsMCZqtZwzFEw==", + "dev": true + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", + "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.2", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", + "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0= sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.3.tgz", + "integrity": "sha512-rL50YcEuHbbauAFAysNsJA4/f89fGTOBRNs9P81sniKnKAr4xULe5AecolcsKbi88xu0ByWYDj/S1AJ3FSFuSQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz", + "integrity": "sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", + "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", + "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.18.0", + "@babel/types": "^7.18.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.2.tgz", + "integrity": "sha512-0On6B8A4/+mFUto5WERt3EEuG1NznDirvwca1O8UwXQHVY8g3R7OzYgxXdOfMwLO08UrpUD/2+3Bclyq+/C94Q==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", + "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@hapi/boom": { + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz", + "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==", + "dependencies": { + "@hapi/hoek": "9.x.x" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jimp/bmp": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.1.tgz", + "integrity": "sha512-iwyNYQeBawrdg/f24x3pQ5rEx+/GwjZcCXd3Kgc+ZUd+Ivia7sIqBsOnDaMZdKCBPlfW364ekexnlOqyVa0NWg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "bmp-js": "^0.1.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/core": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.1.tgz", + "integrity": "sha512-la7kQia31V6kQ4q1kI/uLimu8FXx7imWVajDGtwUG8fzePLWDFJyZl0fdIXVCL1JW2nBcRHidUot6jvlRDi2+g==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "node_modules/@jimp/custom": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.1.tgz", + "integrity": "sha512-DNUAHNSiUI/j9hmbatD6WN/EBIyeq4AO0frl5ETtt51VN1SvE4t4v83ZA/V6ikxEf3hxLju4tQ5Pc3zmZkN/3A==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.1" + } + }, + "node_modules/@jimp/gif": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.1.tgz", + "integrity": "sha512-r/1+GzIW1D5zrP4tNrfW+3y4vqD935WBXSc8X/wm23QTY9aJO9Lw6PEdzpYCEY+SOklIFKaJYUAq/Nvgm/9ryw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/jpeg": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.1.tgz", + "integrity": "sha512-8352zrdlCCLFdZ/J+JjBslDvml+fS3Z8gttdml0We759PnnZGqrnPRhkOEOJbNUlE+dD4ckLeIe6NPxlS/7U+w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "jpeg-js": "0.4.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blit": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.1.tgz", + "integrity": "sha512-fKFNARm32RoLSokJ8WZXHHH2CGzz6ire2n1Jh6u+XQLhk9TweT1DcLHIXwQMh8oR12KgjbgsMGvrMVlVknmOAg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blur": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.1.tgz", + "integrity": "sha512-1WhuLGGj9MypFKRcPvmW45ht7nXkOKu+lg3n2VBzIB7r4kKNVchuI59bXaCYQumOLEqVK7JdB4glaDAbCQCLyw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-circle": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.1.tgz", + "integrity": "sha512-JK7yi1CIU7/XL8hdahjcbGA3V7c+F+Iw+mhMQhLEi7Q0tCnZ69YJBTamMiNg3fWPVfMuvWJJKOBRVpwNTuaZRg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-color": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.1.tgz", + "integrity": "sha512-9yQttBAO5SEFj7S6nJK54f+1BnuBG4c28q+iyzm1JjtnehjqMg6Ljw4gCSDCvoCQ3jBSYHN66pmwTV74SU1B7A==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "tinycolor2": "^1.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-contain": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.1.tgz", + "integrity": "sha512-44F3dUIjBDHN+Ym/vEfg+jtjMjAqd2uw9nssN67/n4FdpuZUVs7E7wadKY1RRNuJO+WgcD5aDQcsvurXMETQTg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-cover": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.1.tgz", + "integrity": "sha512-YztWCIldBAVo0zxcQXR+a/uk3/TtYnpKU2CanOPJ7baIuDlWPsG+YE4xTsswZZc12H9Kl7CiziEbDtvF9kwA/Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-crop": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.1.tgz", + "integrity": "sha512-UQdva9oQzCVadkyo3T5Tv2CUZbf0klm2cD4cWMlASuTOYgaGaFHhT9st+kmfvXjKL8q3STkBu/zUPV6PbuV3ew==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-displace": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.1.tgz", + "integrity": "sha512-iVAWuz2+G6Heu8gVZksUz+4hQYpR4R0R/RtBzpWEl8ItBe7O6QjORAkhxzg+WdYLL2A/Yd4ekTpvK0/qW8hTVw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-dither": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.1.tgz", + "integrity": "sha512-tADKVd+HDC9EhJRUDwMvzBXPz4GLoU6s5P7xkVq46tskExYSptgj5713J5Thj3NMgH9Rsqu22jNg1H/7tr3V9Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-fisheye": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.1.tgz", + "integrity": "sha512-BWHnc5hVobviTyIRHhIy9VxI1ACf4CeSuCfURB6JZm87YuyvgQh5aX5UDKtOz/3haMHXBLP61ZBxlNpMD8CG4A==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-flip": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.1.tgz", + "integrity": "sha512-KdxTf0zErfZ8DyHkImDTnQBuHby+a5YFdoKI/G3GpBl3qxLBvC+PWkS2F/iN3H7wszP7/TKxTEvWL927pypT0w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-rotate": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-gaussian": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.1.tgz", + "integrity": "sha512-u9n4wjskh3N1mSqketbL6tVcLU2S5TEaFPR40K6TDv4phPLZALi1Of7reUmYpVm8mBDHt1I6kGhuCJiWvzfGyg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-invert": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.1.tgz", + "integrity": "sha512-2DKuyVXANH8WDpW9NG+PYFbehzJfweZszFYyxcaewaPLN0GxvxVLOGOPP1NuUTcHkOdMFbE0nHDuB7f+sYF/2w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-mask": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.1.tgz", + "integrity": "sha512-snfiqHlVuj4bSFS0v96vo2PpqCDMe4JB+O++sMo5jF5mvGcGL6AIeLo8cYqPNpdO6BZpBJ8MY5El0Veckhr39Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-normalize": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.1.tgz", + "integrity": "sha512-dOQfIOvGLKDKXPU8xXWzaUeB0nvkosHw6Xg1WhS1Z5Q0PazByhaxOQkSKgUryNN/H+X7UdbDvlyh/yHf3ITRaw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-print": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.1.tgz", + "integrity": "sha512-ceWgYN40jbN4cWRxixym+csyVymvrryuKBQ+zoIvN5iE6OyS+2d7Mn4zlNgumSczb9GGyZZESIgVcBDA1ezq0Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "load-bmfont": "^1.4.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-resize": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.1.tgz", + "integrity": "sha512-u4JBLdRI7dargC04p2Ha24kofQBk3vhaf0q8FwSYgnCRwxfvh2RxvhJZk9H7Q91JZp6wgjz/SjvEAYjGCEgAwQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-rotate": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.1.tgz", + "integrity": "sha512-ZUU415gDQ0VjYutmVgAYYxC9Og9ixu2jAGMCU54mSMfuIlmohYfwARQmI7h4QB84M76c9hVLdONWjuo+rip/zg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-scale": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.1.tgz", + "integrity": "sha512-jM2QlgThIDIc4rcyughD5O7sOYezxdafg/2Xtd1csfK3z6fba3asxDwthqPZAgitrLgiKBDp6XfzC07Y/CefUw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-shadow": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.1.tgz", + "integrity": "sha512-MeD2Is17oKzXLnsphAa1sDstTu6nxscugxAEk3ji0GV1FohCvpHBcec0nAq6/czg4WzqfDts+fcPfC79qWmqrA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blur": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-threshold": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.1.tgz", + "integrity": "sha512-iGW8U/wiCSR0+6syrPioVGoSzQFt4Z91SsCRbgNKTAk7D+XQv6OI78jvvYg4o0c2FOlwGhqz147HZV5utoSLxA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-color": ">=0.8.0", + "@jimp/plugin-resize": ">=0.8.0" + } + }, + "node_modules/@jimp/plugins": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.1.tgz", + "integrity": "sha512-c+lCqa25b+4q6mJZSetlxhMoYuiltyS+ValLzdwK/47+aYsq+kcJNl+TuxIEKf59yr9+5rkbpsPkZHLF/V7FFA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.1", + "@jimp/plugin-blur": "^0.16.1", + "@jimp/plugin-circle": "^0.16.1", + "@jimp/plugin-color": "^0.16.1", + "@jimp/plugin-contain": "^0.16.1", + "@jimp/plugin-cover": "^0.16.1", + "@jimp/plugin-crop": "^0.16.1", + "@jimp/plugin-displace": "^0.16.1", + "@jimp/plugin-dither": "^0.16.1", + "@jimp/plugin-fisheye": "^0.16.1", + "@jimp/plugin-flip": "^0.16.1", + "@jimp/plugin-gaussian": "^0.16.1", + "@jimp/plugin-invert": "^0.16.1", + "@jimp/plugin-mask": "^0.16.1", + "@jimp/plugin-normalize": "^0.16.1", + "@jimp/plugin-print": "^0.16.1", + "@jimp/plugin-resize": "^0.16.1", + "@jimp/plugin-rotate": "^0.16.1", + "@jimp/plugin-scale": "^0.16.1", + "@jimp/plugin-shadow": "^0.16.1", + "@jimp/plugin-threshold": "^0.16.1", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/png": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.1.tgz", + "integrity": "sha512-iyWoCxEBTW0OUWWn6SveD4LePW89kO7ZOy5sCfYeDM/oTPLpR8iMIGvZpZUz1b8kvzFr27vPst4E5rJhGjwsdw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "pngjs": "^3.3.3" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/tiff": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.1.tgz", + "integrity": "sha512-3K3+xpJS79RmSkAvFMgqY5dhSB+/sxhwTFA9f4AVHUK0oKW+u6r52Z1L0tMXHnpbAdR9EJ+xaAl2D4x19XShkQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.1.tgz", + "integrity": "sha512-g1w/+NfWqiVW4CaXSJyD28JQqZtm2eyKMWPhBBDCJN9nLCN12/Az0WFF3JUAktzdsEC2KRN2AqB1a2oMZBNgSQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.1", + "@jimp/gif": "^0.16.1", + "@jimp/jpeg": "^0.16.1", + "@jimp/png": "^0.16.1", + "@jimp/tiff": "^0.16.1", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/utils": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.1.tgz", + "integrity": "sha512-8fULQjB0x4LzUSiSYG6ZtQl355sZjxbv8r9PPAuYHzS9sGiSHJQavNqK/nKnpDsVkU88/vRGcE7t3nMU0dEnVw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@octokit/auth-token": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.3.tgz", + "integrity": "sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==", + "dev": true, + "dependencies": { + "@octokit/types": "^9.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/core": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.0.tgz", + "integrity": "sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg==", + "dev": true, + "dependencies": { + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/endpoint": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.5.tgz", + "integrity": "sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==", + "dev": true, + "dependencies": { + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/graphql": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.5.tgz", + "integrity": "sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ==", + "dev": true, + "dependencies": { + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-17.1.1.tgz", + "integrity": "sha512-/X7Gh/qWiWaooJmUnYD48SYy72fyrk2ceisOSe89JojK7r0j8YrTwYpDi76kI+c6QiqX1KSgdoBTMJvktsDkYw==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.0.0.tgz", + "integrity": "sha512-Sq5VU1PfT6/JyuXPyt04KZNVsFOSBaYOAq2QRZUwzVlI10KFvcbUo8lR258AAQL1Et60b0WuVik+zOWKLuDZxw==", + "dev": true, + "dependencies": { + "@octokit/types": "^9.0.0" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=4" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.0.1.tgz", + "integrity": "sha512-pnCaLwZBudK5xCdrR823xHGNgqOzRnJ/mpC/76YPpNP7DybdsJtP7mdOwh+wYZxK5jqeQuhu59ogMI4NRlBUvA==", + "dev": true, + "dependencies": { + "@octokit/types": "^9.0.0", + "deprecation": "^2.3.1" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/request": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.3.tgz", + "integrity": "sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/request-error": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", + "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", + "dev": true, + "dependencies": { + "@octokit/types": "^9.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/rest": { + "version": "19.0.7", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.7.tgz", + "integrity": "sha512-HRtSfjrWmWVNp2uAkEpQnuGMJsu/+dBr47dRc5QVgsCbnIc1+GFEaoKBWkYG+zjrsHpSqcAElMio+n10c0b5JA==", + "dev": true, + "dependencies": { + "@octokit/core": "^4.1.0", + "@octokit/plugin-paginate-rest": "^6.0.0", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^7.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/types": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.2.1.tgz", + "integrity": "sha512-Vx4keMiD/CAiwVFasLcH0xBSVbKIHebIZke9i7ZbUWGNN4vJFWSYH6Nvga7UY9NIJCGa6x3QG849XTbi5wYmkA==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^17.1.1" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "dev": true, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dev": true, + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.0.tgz", + "integrity": "sha512-roLI1ul/GwzwcfcVpZYPdrgW2W/drLriObl1h+yLF5syc8/5ULWw2ALbCHUWF+4YltIqA3xFSbG4IwyJz37e9g==", + "dev": true, + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@sindresorhus/is": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", + "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", + "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/got": { + "version": "9.6.12", + "resolved": "https://registry.npmjs.org/@types/got/-/got-9.6.12.tgz", + "integrity": "sha512-X4pj/HGHbXVLqTpKjA2ahI4rV/nNBc9mGO2I/0CgAra+F2dKgMXnENv2SRpemScBzBAI4vMelIVYViQxlSE6xA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-fUy7YRpT+rHXto1YlL+J9rs0uLGyiqVt3ZOTQR+4ROc47yNl8WLdVLgUloBRhOxP1PZvguHl44T3H0wAWxahYQ==", + "dev": true, + "dependencies": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.11.38", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.38.tgz", + "integrity": "sha512-hjO/0K140An3GWDw2HJfq7gko3wWeznbjXgg+rzPdVzhe198hp4x2i1dgveAOEiFKd8sOilAxzoSJiVv5P/CUg==" + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", + "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/@types/sharp": { + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@types/sharp/-/sharp-0.29.5.tgz", + "integrity": "sha512-3TC+S3H5RwnJmLYMHrcdfNjz/CaApKmujjY9b6PU/pE6n0qfooi99YqXGWoW8frU9EWYj/XTI35Pzxa+ThAZ5Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", + "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", + "dev": true + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.0.tgz", + "integrity": "sha512-p0QgrEyrxAWBecR56gyn3wkG15TJdI//eetInP3zYRewDh0XS+DhB3VUAd3QqvziFsfaQIoIuZMxZRB7vXYaYw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.0", + "@typescript-eslint/type-utils": "5.59.0", + "@typescript-eslint/utils": "5.59.0", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.9.tgz", + "integrity": "sha512-FsPkRvBtcLQ/eVK1ivDiNYBjn3TGJdXy2fhXX+rc7czWl4ARwnpArwbihSOHI2Peg9WbtGHrbThfBUkZZGTtvQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.59.9", + "@typescript-eslint/types": "5.59.9", + "@typescript-eslint/typescript-estree": "5.59.9", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.9.tgz", + "integrity": "sha512-8RA+E+w78z1+2dzvK/tGZ2cpGigBZ58VMEHDZtpE1v+LLjzrYGc8mMaTONSxKyEkz3IuXFM0IqYiGHlCsmlZxQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.9", + "@typescript-eslint/visitor-keys": "5.59.9" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.9.tgz", + "integrity": "sha512-bT7s0td97KMaLwpEBckbzj/YohnvXtqbe2XgqNvTl6RJVakY5mvENOTPvw5u66nljfZxthESpDozs86U+oLY8Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.9", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.0.tgz", + "integrity": "sha512-tsoldKaMh7izN6BvkK6zRMINj4Z2d6gGhO2UsI8zGZY3XhLq1DndP3Ycjhi1JwdwPRwtLMW4EFPgpuKhbCGOvQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.0", + "@typescript-eslint/visitor-keys": "5.59.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": { + "version": "5.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.0.tgz", + "integrity": "sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.0.tgz", + "integrity": "sha512-d/B6VSWnZwu70kcKQSCqjcXpVH+7ABKH8P1KNn4K7j5PXXuycZTPXF44Nui0TEm6rbWGi8kc78xRgOC4n7xFgA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.59.0", + "@typescript-eslint/utils": "5.59.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "5.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.0.tgz", + "integrity": "sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.0.tgz", + "integrity": "sha512-sUNnktjmI8DyGzPdZ8dRwW741zopGxltGs/SAPgGL/AAgDpiLsCFLcMNSpbfXfmnNeHmK9h3wGmCkGRGAoUZAg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.0", + "@typescript-eslint/visitor-keys": "5.59.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.9.tgz", + "integrity": "sha512-uW8H5NRgTVneSVTfiCVffBb8AbwWSKg7qcA4Ot3JI3MPCJGsB4Db4BhvAODIIYE5mNj7Q+VJkK7JxmRhk2Lyjw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.9.tgz", + "integrity": "sha512-pmM0/VQ7kUhd1QyIxgS+aRvMgw+ZljB3eDb+jYyp6d2bC0mQWLzUDF+DLwCTkQ3tlNyVsvZRXjFyV0LkU/aXjA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.9", + "@typescript-eslint/visitor-keys": "5.59.9", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.9.tgz", + "integrity": "sha512-bT7s0td97KMaLwpEBckbzj/YohnvXtqbe2XgqNvTl6RJVakY5mvENOTPvw5u66nljfZxthESpDozs86U+oLY8Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.9", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.0.tgz", + "integrity": "sha512-GGLFd+86drlHSvPgN/el6dRQNYYGOvRSDVydsUaQluwIW3HvbXuxyuD5JETvBt/9qGYe+lOrDk6gRrWOHb/FvA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.0", + "@typescript-eslint/types": "5.59.0", + "@typescript-eslint/typescript-estree": "5.59.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "5.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.0.tgz", + "integrity": "sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.0.tgz", + "integrity": "sha512-sUNnktjmI8DyGzPdZ8dRwW741zopGxltGs/SAPgGL/AAgDpiLsCFLcMNSpbfXfmnNeHmK9h3wGmCkGRGAoUZAg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.0", + "@typescript-eslint/visitor-keys": "5.59.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.0.tgz", + "integrity": "sha512-qZ3iXxQhanchCeaExlKPV3gDQFxMUmU35xfd5eCXB6+kUw1TUAbIy2n7QIrwz9s98DQLzNWyHp61fY0da4ZcbA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": { + "version": "5.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.0.tgz", + "integrity": "sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", + "dev": true + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-sequence-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "dev": true + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/are-we-there-yet/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/are-we-there-yet/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.map": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.5.tgz", + "integrity": "sha512-gfaKntvwqYIuC7mLLyv2wzZIJqrRhn5PZ9EfFejSx6a78sV7iDsGpG9P+3oUPtm1Rerqm6nrKS4FYuTIvWfo3g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "dev": true, + "dependencies": { + "retry": "0.13.1" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.3.tgz", + "integrity": "sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", + "dev": true + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/boxen": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.2.tgz", + "integrity": "sha512-1Z4UJabXUP1/R9rLpoU3O2lEMnG3pPLAs/ZD2lF3t2q7qD5lM8rqbtnvtvm4N0wEyNlE+9yZVTVAGmd1V5jabg==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.0", + "chalk": "^5.0.1", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/boxen/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "dependencies": { + "run-applescript": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dev": true, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "10.2.10", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.10.tgz", + "integrity": "sha512-v6WB+Epm/qO4Hdlio/sfUn69r5Shgh39SsE9DSd4bIezP0mblOlObI+I0kUEM7J0JFc+I7pSeMeYaOYtX1N/VQ==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001344", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz", + "integrity": "sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.11", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.11.tgz", + "integrity": "sha512-bQwNaDIBKID5ts/DsdhxrjqFXYfLw4ste+wMKqWA8DyKcS4qwsPP4Bk8ZNaTJjvpiX/qW3BT4sU7d6Bh5i+dag==", + "dev": true, + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cheerio/node_modules/parse5": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.1.tgz", + "integrity": "sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/ci-info": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.1.tgz", + "integrity": "sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg==", + "dev": true + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", + "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.0.0.tgz", + "integrity": "sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dev": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "dev": true, + "dependencies": { + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/yeoman/configstore?sponsor=1" + } + }, + "node_modules/configstore/node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/conventional-changelog": { + "version": "3.1.25", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz", + "integrity": "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^5.0.12", + "conventional-changelog-atom": "^2.0.8", + "conventional-changelog-codemirror": "^2.0.8", + "conventional-changelog-conventionalcommits": "^4.5.0", + "conventional-changelog-core": "^4.2.1", + "conventional-changelog-ember": "^2.0.9", + "conventional-changelog-eslint": "^3.0.9", + "conventional-changelog-express": "^2.0.6", + "conventional-changelog-jquery": "^3.0.11", + "conventional-changelog-jshint": "^2.0.9", + "conventional-changelog-preset-loader": "^2.3.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-atom": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", + "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-cli": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-2.2.2.tgz", + "integrity": "sha512-8grMV5Jo8S0kP3yoMeJxV2P5R6VJOqK72IiSV9t/4H5r/HiRqEBQ83bYGuz4Yzfdj4bjaAEhZN/FFbsFXr5bOA==", + "dev": true, + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog": "^3.1.24", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "tempfile": "^3.0.0" + }, + "bin": { + "conventional-changelog": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-codemirror": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", + "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz", + "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "dev": true, + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-ember": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", + "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-eslint": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", + "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-express": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", + "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-jquery": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", + "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-jshint": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", + "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "dev": true, + "dependencies": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dev": true, + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", + "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", + "dev": true, + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/curve25519-js": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/curve25519-js/-/curve25519-js-0.0.4.tgz", + "integrity": "sha512-axn2UMEnkhyDUPWOwVKBMVIzSQy2ejH2xRGy1wq81dqRwApXfIzfbE3hIX0ZRFBIihf/KDqK158DLwESu4AK1w==" + }, + "node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", + "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/execa": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", + "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/default-browser/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/default-browser/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defaults/node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/degenerator": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.4.tgz", + "integrity": "sha512-Z66uPeBfHZAHVmue3HPfyKu2Q0rC2cRxbTOsvmU/po5fvvcx27W4mIu9n0PUlQih4oUYvcG1BsbtVv8x7KDOSw==", + "dev": true, + "dependencies": { + "ast-types": "^0.13.2", + "escodegen": "^1.8.1", + "esprima": "^4.0.0", + "vm2": "^3.9.17" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/degenerator/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/degenerator/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/degenerator/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/degenerator/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/degenerator/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/degenerator/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.141", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.141.tgz", + "integrity": "sha512-mfBcbqc0qc6RlxrsIgLG2wCqkiPAjEezHxGTu7p3dHHFOurH4EjS9rFZndX5axC8264rI1Pcbw8uQP39oZckeA==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", + "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-simple-import-sort": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz", + "integrity": "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "dependencies": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==", + "dev": true + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-redact": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.1.tgz", + "integrity": "sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/file-uri-to-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz", + "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "dev": true, + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8= sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", + "dev": true, + "dependencies": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ftp/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "node_modules/ftp/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/ftp/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/futoin-hkdf": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/futoin-hkdf/-/futoin-hkdf-1.5.1.tgz", + "integrity": "sha512-g5d0Qp7ks55hYmYmfqn4Nz18XH49lcCR+vvIvHT92xXnsJaGZmY1EtWQWilJ6BQp57heCIXM/rRo+AFep8hGgg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs= sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "dev": true, + "dependencies": { + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "get-pkg-repo": "src/cli.js" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-pkg-repo/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/get-pkg-repo/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/get-pkg-repo/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/get-pkg-repo/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-uri": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", + "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "data-uri-to-buffer": "3", + "debug": "4", + "file-uri-to-path": "2", + "fs-extra": "^8.1.0", + "ftp": "^0.3.10" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gifwrap": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", + "dev": true, + "dependencies": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, + "node_modules/git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", + "dev": true, + "dependencies": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "dev": true, + "dependencies": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/git-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", + "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", + "dev": true, + "dependencies": { + "is-ssh": "^1.4.0", + "parse-url": "^8.1.0" + } + }, + "node_modules/git-url-parse": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", + "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", + "dev": true, + "dependencies": { + "git-up": "^7.0.0" + } + }, + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.2" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.0.tgz", + "integrity": "sha512-WTcaQ963xV97MN3x0/CbAriXFZcXCfgxVp91I+Ze6pawQOa7SgzwSx2zIJJsX+kTajMnVs0xcFD1TxZKFqhdnQ==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/has-yarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", + "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "entities": "^4.3.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/http2-wrapper/node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "dev": true, + "dependencies": { + "@types/node": "16.9.1" + } + }, + "node_modules/image-q/node_modules/@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o= sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/inquirer": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.0.tgz", + "integrity": "sha512-WWERbVqjsTXjXub1ZW0ZHDit1dyHqy0T9XIkky9TnmKAPrjU9Jkd59nZPK0dUuM3s73GZAZu2Jo4iFU3XSPVLA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^6.0.0", + "chalk": "^5.2.0", + "cli-cursor": "^4.0.0", + "cli-width": "^4.0.0", + "external-editor": "^3.0.3", + "figures": "^5.0.0", + "lodash": "^4.17.21", + "mute-stream": "1.0.0", + "ora": "^6.1.2", + "run-async": "^2.4.0", + "rxjs": "^7.8.0", + "string-width": "^5.1.2", + "strip-ansi": "^7.0.1", + "through": "^2.3.6", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/inquirer/node_modules/ansi-escapes": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", + "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", + "dev": true, + "dependencies": { + "type-fest": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/type-fest": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.10.0.tgz", + "integrity": "sha512-hmAPf1datm+gt3c2mvu0sJyhFy6lTkIGf0GzyaZWxRLnabQfPUqg6tF95RPg6sLxKI7nFLGdFxBcf2/7+GXI+A==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + }, + "peerDependencies": { + "typescript": ">=4.7.0" + } + }, + "node_modules/inquirer/node_modules/typescript": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", + "dev": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "dev": true + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-npm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ssh": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", + "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", + "dev": true, + "dependencies": { + "protocols": "^2.0.1" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "dev": true, + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-wsl/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-yarn-global": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/issue-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", + "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", + "dev": true, + "dependencies": { + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterate-iterator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz", + "integrity": "sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/iterate-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", + "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", + "dev": true, + "dependencies": { + "es-get-iterator": "^1.0.2", + "iterate-iterator": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dev": true, + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dev": true, + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dev": true, + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dev": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jimp": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.1.tgz", + "integrity": "sha512-+EKVxbR36Td7Hfd23wKGIeEyHbxShZDX6L8uJkgVW3ESA9GiTEPK08tG1XI2r/0w5Ch0HyJF5kPqF9K7EmGjaw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.1", + "@jimp/plugins": "^0.16.1", + "@jimp/types": "^0.16.1", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/jpeg-js": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.2.tgz", + "integrity": "sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/ws": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", + "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/latest-version": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "dev": true, + "dependencies": { + "package-json": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libphonenumber-js": { + "version": "1.10.28", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.28.tgz", + "integrity": "sha512-1eAgjLrZA0+2Wgw4hs+4Q/kEBycxQo8ZLYnmOvZ3AlM8ImAVAJgDPlZtISLEzD1vunc2q8s2Pn7XwB7I8U3Kzw==" + }, + "node_modules/libsignal": { + "version": "2.0.1", + "resolved": "git+ssh://git@github.com/giuseppecastaldo/libsignal-node.git#318cc9bda3c9a87ca4ac5eb8fb3799dbfc7ad260", + "license": "GPL-3.0", + "dependencies": { + "curve25519-js": "^0.0.4", + "protobufjs": "6.8.8" + } + }, + "node_modules/libsignal/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "node_modules/libsignal/node_modules/protobufjs": { + "version": "6.8.8", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz", + "integrity": "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/link-preview-js": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/link-preview-js/-/link-preview-js-3.0.4.tgz", + "integrity": "sha512-xsuxMigAZd4xmj6BIwMNuQjjpJdh0DWeIo1NXQgaoWSi9Z/dzz/Kxy6vzzsUonFlMTPJ1i0EC8aeOg/xrOMidg==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "cheerio": "1.0.0-rc.11", + "cross-fetch": "3.1.5", + "url": "0.11.0" + } + }, + "node_modules/load-bmfont": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", + "dev": true, + "dependencies": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", + "dev": true + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "dev": true + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "dev": true, + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, + "node_modules/macos-release": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-3.1.0.tgz", + "integrity": "sha512-/M/R0gCDgM+Cv1IuBG1XGdfTFnMEG6PZeT+KGWHO/OG+imqmaD9CH5vHBTycEM3+Kc4uG2Il+tFAuUWLqQOeUA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/meow/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dev": true, + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "node_modules/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/music-metadata": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/music-metadata/-/music-metadata-7.12.3.tgz", + "integrity": "sha512-6pZngaroNxGBf8KZjE8reGZJiS533eJq7dBFsyoiEAZIORQAxmVVx20ABh9W2tsLT+5mKYyDzcNi5GuHf3jitg==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "content-type": "^1.0.4", + "debug": "^4.3.4", + "file-type": "16.5.3", + "media-typer": "^1.1.0", + "strtok3": "^6.3.0", + "token-types": "^4.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/music-metadata/node_modules/file-type": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.3.tgz", + "integrity": "sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A==", + "dependencies": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/new-github-release-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-2.0.0.tgz", + "integrity": "sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==", + "dev": true, + "dependencies": { + "type-fest": "^2.5.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/new-github-release-url/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/node-abi": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.22.0.tgz", + "integrity": "sha512-u4uAs/4Zzmp/jjsD9cyFYDXeISfUWaAVWshPmDZOFOv4Xl4SbzTXm53I04C2uRueYJ+0t5PEtLH/owbn2Npf/w==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", + "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==", + "dev": true + }, + "node_modules/node-cache": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz", + "integrity": "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==", + "dependencies": { + "clone": "2.x" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0= sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==", + "dev": true + }, + "node_modules/on-exit-leak-free": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz", + "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E= sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-6.3.0.tgz", + "integrity": "sha512-1/D8uRFY0ay2kgBpmAwmSA404w4OoPVhHMqRqtjvrcK/dnzcEZxMJ+V4DUbyICu8IIVRclHcOf5wlD1tMY4GUQ==", + "dev": true, + "dependencies": { + "chalk": "^5.0.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.6.1", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.1.0", + "log-symbols": "^5.1.0", + "stdin-discarder": "^0.1.0", + "strip-ansi": "^7.0.1", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/os-name": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-5.1.0.tgz", + "integrity": "sha512-YEIoAnM6zFmzw3PQ201gCVCIWbXNyKObGlVvpAVvraAeOHnlYVKFssbA/riRX5R40WA6kKrZ7Dr7dWzO3nKSeQ==", + "dev": true, + "dependencies": { + "macos-release": "^3.1.0", + "windows-release": "^5.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pac-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz", + "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4", + "get-uri": "3", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "5", + "pac-resolver": "^5.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "5" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/pac-resolver": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.1.tgz", + "integrity": "sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==", + "dev": true, + "dependencies": { + "degenerator": "^3.0.2", + "ip": "^1.1.5", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/package-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", + "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", + "dev": true, + "dependencies": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==", + "dev": true + }, + "node_modules/parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==", + "dev": true + }, + "node_modules/parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "dev": true, + "dependencies": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", + "dev": true + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-path": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", + "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", + "dev": true, + "dependencies": { + "protocols": "^2.0.0" + } + }, + "node_modules/parse-url": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", + "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", + "dev": true, + "dependencies": { + "parse-path": "^7.0.0" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.1.tgz", + "integrity": "sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18= sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/peek-readable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pino": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-7.11.0.tgz", + "integrity": "sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.0.0", + "on-exit-leak-free": "^0.2.0", + "pino-abstract-transport": "v0.5.0", + "pino-std-serializers": "^4.0.0", + "process-warning": "^1.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.1.0", + "safe-stable-stringify": "^2.1.0", + "sonic-boom": "^2.2.1", + "thread-stream": "^0.15.1" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz", + "integrity": "sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==", + "dependencies": { + "duplexify": "^4.1.2", + "split2": "^4.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/split2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", + "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/pino-std-serializers": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", + "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==" + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "dev": true, + "dependencies": { + "pngjs": "^3.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.0.tgz", + "integrity": "sha512-CNcMgI1xBypOyGqjp3wOc8AAo1nMhZS3Cwd3iHIxOdAUbb+YxdNuM4Z5iIrZ8RLvOsf3F3bl7b7xGq6DjQoNYA==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/process-warning": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", + "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" + }, + "node_modules/promise.allsettled": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.6.tgz", + "integrity": "sha512-22wJUOD3zswWFqgwjNHa1965LvqTX87WPu/lreY2KSd7SVcERfuZ4GfUaOnJNnvtoIv2yXT/W00YIGMetXtFXg==", + "dev": true, + "dependencies": { + "array.prototype.map": "^1.0.5", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "iterate-value": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/protobufjs": { + "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, + "node_modules/protocols": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", + "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", + "dev": true + }, + "node_modules/proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz", + "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.0", + "debug": "4", + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "lru-cache": "^5.1.1", + "pac-proxy-agent": "^5.0.0", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^5.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/proxy-agent/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", + "dev": true, + "dependencies": { + "escape-goat": "^4.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qrcode-terminal": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", + "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==", + "dev": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo= sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/real-require": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz", + "integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/rechoir/node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dev": true, + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "dev": true, + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/release-it": { + "version": "15.10.3", + "resolved": "https://registry.npmjs.org/release-it/-/release-it-15.10.3.tgz", + "integrity": "sha512-OSdHOg76gwkpLbSLBK09GZQj5XWXwBP+S6v//rSoQKkjqklaCLK04Gl5NkTwNrQOHHiihs4ToesDNh2+w55k3w==", + "dev": true, + "dependencies": { + "@iarna/toml": "2.2.5", + "@octokit/rest": "19.0.7", + "async-retry": "1.3.3", + "chalk": "5.2.0", + "cosmiconfig": "8.1.3", + "execa": "7.1.1", + "git-url-parse": "13.1.0", + "globby": "13.1.4", + "got": "12.6.0", + "inquirer": "9.2.0", + "is-ci": "3.0.1", + "issue-parser": "6.0.0", + "lodash": "4.17.21", + "mime-types": "2.1.35", + "new-github-release-url": "2.0.0", + "node-fetch": "3.3.1", + "open": "9.1.0", + "ora": "6.3.0", + "os-name": "5.1.0", + "promise.allsettled": "1.0.6", + "proxy-agent": "5.0.0", + "semver": "7.5.0", + "shelljs": "0.8.5", + "update-notifier": "6.0.2", + "url-join": "5.0.0", + "wildcard-match": "5.1.2", + "yargs-parser": "21.1.1" + }, + "bin": { + "release-it": "bin/release-it.js" + }, + "engines": { + "node": ">=14.9" + } + }, + "node_modules/release-it/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/release-it/node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/release-it/node_modules/execa": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", + "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/release-it/node_modules/globby": { + "version": "13.1.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", + "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/release-it/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/release-it/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/release-it/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/release-it/node_modules/node-fetch": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/release-it/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/release-it/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/release-it/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/release-it/node_modules/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/release-it/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/release-it/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/release-it/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I= sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc= sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sharp": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.5.tgz", + "integrity": "sha512-0T28KxqY4DzUMLSAp1/IhGVeHpPIQyp1xt7esmuXCAfyi/+6tYMUeRhQok+E/+E52Yk5yFjacXp90cQOkmkl4w==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.1", + "node-addon-api": "^5.0.0", + "prebuild-install": "^7.1.0", + "semver": "^7.3.7", + "simple-get": "^4.0.1", + "tar-fs": "^2.1.1", + "tunnel-agent": "^0.6.0" + }, + "engines": { + "node": ">=12.13.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shiki": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.2.tgz", + "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", + "dev": true, + "dependencies": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "4", + "socks": "^2.3.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/socks/node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "node_modules/sonic-boom": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", + "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stdin-discarder": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", + "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", + "dev": true, + "dependencies": { + "bl": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tempfile": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-3.0.0.tgz", + "integrity": "sha512-uNFCg478XovRi85iD42egu+eSFUmmka750Jy7L5tfHI5hQKKtbPnxaSaXAbBqCDYrw3wx4tXjKwci4/QmsZJxw==", + "dev": true, + "dependencies": { + "temp-dir": "^2.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tempfile/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thread-stream": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.15.2.tgz", + "integrity": "sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==", + "dependencies": { + "real-require": "^0.1.0" + } + }, + "node_modules/throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==", + "dev": true + }, + "node_modules/tinycolor2": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-types": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.0.tgz", + "integrity": "sha512-P0rrp4wUpefLncNamWIef62J0v0kQR/GfDVji9WKY7GDCWy5YbVSrKUTam07iWPZQGy0zWNOfstYTykMmPNR7w==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-jest": { + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@types/jest": "^27.0.0", + "babel-jest": ">=27.0.0 <28", + "jest": "^27.0.0", + "typescript": ">=3.8 <5.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/jest": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-node": { + "version": "10.8.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.1.tgz", + "integrity": "sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typedoc": { + "version": "0.24.7", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.7.tgz", + "integrity": "sha512-zzfKDFIZADA+XRIp2rMzLe9xZ6pt12yQOhCr7cD7/PBTjhPmMyMvGrkZ2lPNJitg3Hj1SeiYFNzCsSDrlpxpKw==", + "dev": true, + "dependencies": { + "lunr": "^2.3.9", + "marked": "^4.3.0", + "minimatch": "^9.0.0", + "shiki": "^0.14.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 14.14" + }, + "peerDependencies": { + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x" + } + }, + "node_modules/typedoc/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typedoc/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typescript": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "dev": true, + "dependencies": { + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", + "is-installed-globally": "^0.4.0", + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-join": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true + }, + "node_modules/utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "dev": true, + "dependencies": { + "pako": "^1.0.5" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vm2": { + "version": "3.9.17", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.17.tgz", + "integrity": "sha512-AqwtCnZ/ERcX+AVj9vUsphY56YANXxRuqMb7GsDtAr0m0PcQX3u0Aj3KWiXM0YAHy7i6JEeHrwOnwXbGYgRpAw==", + "dev": true, + "dependencies": { + "acorn": "^8.7.0", + "acorn-walk": "^8.2.0" + }, + "bin": { + "vm2": "bin/vm2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/vm2/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true + }, + "node_modules/vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "dev": true + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wide-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wide-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dev": true, + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wildcard-match": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/wildcard-match/-/wildcard-match-5.1.2.tgz", + "integrity": "sha512-qNXwI591Z88c8bWxp+yjV60Ch4F8Riawe3iGxbzquhy8Xs9m+0+SLFBGb/0yCTIDElawtaImC37fYZ+dr32KqQ==", + "dev": true + }, + "node_modules/windows-release": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-5.1.0.tgz", + "integrity": "sha512-CddHecz5dt0ngTjGPP1uYr9Tjl4qq5rEKNk8UGb8XCdngNXI+GRYvqelD055FdiUgqODZz3R/5oZWYldPtXQpA==", + "dev": true, + "dependencies": { + "execa": "^5.1.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz", + "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dev": true, + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==", + "dev": true + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + } + } +} diff --git a/whatsapp_addon/Baileys/package.json b/whatsapp_addon/Baileys/package.json index aa56ec3..e1bb0bf 100644 --- a/whatsapp_addon/Baileys/package.json +++ b/whatsapp_addon/Baileys/package.json @@ -1,48 +1,80 @@ { - "name": "@adiwajshing/baileys", - "version": "5.0.0", + "name": "@whiskeysockets/baileys", + "version": "6.2.1", "description": "WhatsApp API", - "homepage": "https://github.com/adiwajshing/Baileys", - "main": "lib/index.js", - "types": "lib/index.d.ts", "keywords": [ "whatsapp", "js-whatsapp", "whatsapp-api", "whatsapp-web", - "whatsapp", "whatsapp-chat", "whatsapp-group", "automation", "multi-device" ], + "homepage": "https://github.com/WhiskeySockets/Baileys", + "repository": { + "url": "git@github.com:WhiskeySockets/Baileys.git" + }, + "license": "MIT", + "author": "Adhiraj Singh", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "files": [ + "lib/*", + "WAProto/*", + "WASignalGroup/*.js" + ], "scripts": { - "test": "jest", - "prepare": "tsc", "build:all": "tsc && typedoc", "build:docs": "typedoc", "build:tsc": "tsc", + "changelog:last": "conventional-changelog -p angular -r 2", + "changelog:preview": "conventional-changelog -p angular -u", + "changelog:update": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0", "example": "node --inspect -r ts-node/register Example/example.ts", "gen:protobuf": "sh WAProto/GenerateStatics.sh", - "lint": "eslint ./src --ext .js,.ts,.jsx,.tsx", - "lint:fix": "eslint ./src --fix --ext .js,.ts,.jsx,.tsx" - }, - "author": "Adhiraj Singh", - "license": "MIT", - "repository": { - "url": "git@github.com:adiwajshing/baileys.git" + "lint": "eslint . --ext .js,.ts,.jsx,.tsx", + "lint:fix": "eslint . --fix --ext .js,.ts,.jsx,.tsx", + "prepack": "tsc", + "prepare": "tsc", + "release": "release-it", + "test": "jest" }, "dependencies": { "@hapi/boom": "^9.1.3", - "axios": "^0.24.0", + "axios": "^1.3.3", "futoin-hkdf": "^1.5.1", + "libphonenumber-js": "^1.10.20", "libsignal": "git+https://github.com/giuseppecastaldo/libsignal-node", "music-metadata": "^7.12.3", "node-cache": "^5.1.2", "pino": "^7.0.0", "protobufjs": "^6.11.3", + "uuid": "^9.0.0", "ws": "^8.0.0" }, + "devDependencies": { + "@adiwajshing/eslint-config": "https://github.com/adiwajshing/eslint-config.git", + "@adiwajshing/keyed-db": "^0.2.4", + "@types/got": "^9.6.11", + "@types/jest": "^27.5.1", + "@types/node": "^16.0.0", + "@types/sharp": "^0.29.4", + "@types/ws": "^8.0.0", + "conventional-changelog-cli": "^2.2.2", + "eslint": "^8.0.0", + "jest": "^27.0.6", + "jimp": "^0.16.1", + "link-preview-js": "^3.0.0", + "qrcode-terminal": "^0.12.0", + "release-it": "^15.10.3", + "sharp": "^0.30.5", + "ts-jest": "^27.0.3", + "ts-node": "^10.8.1", + "typedoc": "^0.24.7", + "typescript": "^4.0.0" + }, "peerDependencies": { "@adiwajshing/keyed-db": "^0.2.4", "jimp": "^0.16.1", @@ -57,38 +89,15 @@ "jimp": { "optional": true }, - "qrcode-terminal": { + "link-preview-js": { "optional": true }, - "sharp": { + "qrcode-terminal": { "optional": true }, - "link-preview-js": { + "sharp": { "optional": true } }, - "files": [ - "lib/*", - "WAProto/*", - "WASignalGroup/*.js" - ], - "devDependencies": { - "@adiwajshing/eslint-config": "git+https://github.com/adiwajshing/eslint-config", - "@adiwajshing/keyed-db": "^0.2.4", - "@types/got": "^9.6.11", - "@types/jest": "^27.5.1", - "@types/node": "^16.0.0", - "@types/sharp": "^0.29.4", - "@types/ws": "^8.0.0", - "eslint": "^8.0.0", - "jest": "^27.0.6", - "jimp": "^0.16.1", - "link-preview-js": "^3.0.0", - "qrcode-terminal": "^0.12.0", - "sharp": "^0.30.5", - "ts-jest": "^27.0.3", - "ts-node": "^10.8.1", - "typedoc": "^0.22.0", - "typescript": "^4.0.0" - } + "packageManager": "yarn@1.22.19" } diff --git a/whatsapp_addon/Baileys/proto-extract/index.js b/whatsapp_addon/Baileys/proto-extract/index.js index 02dc143..81a73c0 100644 --- a/whatsapp_addon/Baileys/proto-extract/index.js +++ b/whatsapp_addon/Baileys/proto-extract/index.js @@ -34,11 +34,25 @@ async function findAppModules() { } } const baseURL = 'https://web.whatsapp.com' - const index = await request.get(baseURL, ua) - const bootstrapQRID = index.match(/src="\/bootstrap_qr.([0-9a-z]{10,}).js"/)[1] - const bootstrapQRURL = baseURL + '/bootstrap_qr.' + bootstrapQRID + '.js' + const serviceworker = await request.get(`${baseURL}/serviceworker.js`, ua) + + const versions = [...serviceworker.matchAll(/assets-manifest-([\d\.]+).json/g)].map(r => r[1]) + const version = versions[0] + + let bootstrapQRURL = '' + if(version) { + const asset = await request.get(`${baseURL}/assets-manifest-${version}.json`, ua) + const hashFiles = JSON.parse(asset) + const files = Object.keys(hashFiles) + const app = files.find(f => /^app\./.test(f)) + bootstrapQRURL = `${baseURL}/${app}` + } else { + const index = await request.get(baseURL, ua) + const bootstrapQRID = index.match(/src="\/app.([0-9a-z]{10,}).js"/)[1] + bootstrapQRURL = baseURL + '/app.' + bootstrapQRID + '.js' + } - console.error('Found bootstrap_qr.js URL:', bootstrapQRURL) + console.error('Found source JS URL:', bootstrapQRURL) const qrData = await request.get(bootstrapQRURL, ua) const waVersion = qrData.match(/appVersion:"(\d\.\d+\.\d+)"/)[1] diff --git a/whatsapp_addon/Baileys/src/Defaults/baileys-version.json b/whatsapp_addon/Baileys/src/Defaults/baileys-version.json index 71f7efc..d4a3621 100644 --- a/whatsapp_addon/Baileys/src/Defaults/baileys-version.json +++ b/whatsapp_addon/Baileys/src/Defaults/baileys-version.json @@ -1,3 +1,3 @@ { - "version": [2, 2243, 7] -} \ No newline at end of file + "version": [2, 2323, 4] +} diff --git a/whatsapp_addon/Baileys/src/Defaults/index.ts b/whatsapp_addon/Baileys/src/Defaults/index.ts index 498216d..e964a9f 100644 --- a/whatsapp_addon/Baileys/src/Defaults/index.ts +++ b/whatsapp_addon/Baileys/src/Defaults/index.ts @@ -1,24 +1,39 @@ import { proto } from '../../WAProto' -import type { MediaType, SocketConfig } from '../Types' +import { makeLibSignalRepository } from '../Signal/libsignal' +import type { AuthenticationState, MediaType, SocketConfig, WAVersion } from '../Types' import { Browsers } from '../Utils' import logger from '../Utils/logger' import { version } from './baileys-version.json' +import phoneNumberMCC from './phonenumber-mcc.json' export const UNAUTHORIZED_CODES = [401, 403, 419] +export const PHONENUMBER_MCC = phoneNumberMCC + export const DEFAULT_ORIGIN = 'https://web.whatsapp.com' +export const MOBILE_ENDPOINT = 'g.whatsapp.net' +export const MOBILE_PORT = 443 export const DEF_CALLBACK_PREFIX = 'CB:' export const DEF_TAG_PREFIX = 'TAG:' export const PHONE_CONNECTION_CB = 'CB:Pong' export const WA_DEFAULT_EPHEMERAL = 7 * 24 * 60 * 60 +export const MOBILE_TOKEN = Buffer.from('0a1mLfGUIBVrMKF1RdvLI5lkRBvof6vn0fD2QRSM4174c0243f5277a5d7720ce842cc4ae6') +export const MOBILE_REGISTRATION_ENDPOINT = 'https://v.whatsapp.net/v2' +export const MOBILE_USERAGENT = 'WhatsApp/2.22.24.81 iOS/15.3.1 Device/Apple-iPhone_7' +export const REGISTRATION_PUBLIC_KEY = Buffer.from([ + 5, 142, 140, 15, 116, 195, 235, 197, 215, 166, 134, 92, 108, 60, 132, 56, 86, 176, 97, 33, 204, 232, 234, 119, 77, + 34, 251, 111, 18, 37, 18, 48, 45, +]) export const NOISE_MODE = 'Noise_XX_25519_AESGCM_SHA256\0\0\0\0' export const DICT_VERSION = 2 export const KEY_BUNDLE_TYPE = Buffer.from([5]) export const NOISE_WA_HEADER = Buffer.from( [ 87, 65, 6, DICT_VERSION ] ) // last is "DICT_VERSION" +export const PROTOCOL_VERSION = [5, 2] +export const MOBILE_NOISE_HEADER = Buffer.concat([Buffer.from('WA'), Buffer.from(PROTOCOL_VERSION)]) /** from: https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url */ export const URL_REGEX = /(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/ export const URL_EXCLUDE_REGEX = /.*@.*/ @@ -35,7 +50,7 @@ export const PROCESSABLE_HISTORY_TYPES = [ ] export const DEFAULT_CONNECTION_CONFIG: SocketConfig = { - version: version as any, + version: version as WAVersion, browser: Browsers.baileys('Chrome'), waWebSocketUrl: 'wss://web.whatsapp.com/ws/chat', connectTimeoutMs: 20_000, @@ -47,7 +62,7 @@ export const DEFAULT_CONNECTION_CONFIG: SocketConfig = { customUploadHosts: [], retryRequestDelayMs: 250, fireInitQueries: true, - auth: undefined as any, + auth: undefined as unknown as AuthenticationState, markOnlineOnConnect: true, syncFullHistory: false, patchMessageBeforeSending: msg => msg, @@ -61,7 +76,8 @@ export const DEFAULT_CONNECTION_CONFIG: SocketConfig = { patch: false, snapshot: false, }, - getMessage: async() => undefined + getMessage: async() => undefined, + makeSignalRepository: makeLibSignalRepository } export const MEDIA_PATH_MAP: { [T in MediaType]?: string } = { @@ -72,7 +88,8 @@ export const MEDIA_PATH_MAP: { [T in MediaType]?: string } = { sticker: '/mms/image', 'thumbnail-link': '/mms/image', 'product-catalog-image': '/product/image', - 'md-app-state': '' + 'md-app-state': '', + 'md-msg-hist': '/mms/md-app-state', } export const MEDIA_HKDF_KEY_MAPPING = { @@ -99,4 +116,11 @@ export const MEDIA_KEYS = Object.keys(MEDIA_PATH_MAP) as MediaType[] export const MIN_PREKEY_COUNT = 5 -export const INITIAL_PREKEY_COUNT = 30 \ No newline at end of file +export const INITIAL_PREKEY_COUNT = 30 + +export const DEFAULT_CACHE_TTLS = { + SIGNAL_STORE: 5 * 60, // 5 minutes + MSG_RETRY: 60 * 60, // 1 hour + CALL_OFFER: 5 * 60, // 5 minutes + USER_DEVICES: 5 * 60, // 5 minutes +} \ No newline at end of file diff --git a/whatsapp_addon/Baileys/src/Defaults/phonenumber-mcc.json b/whatsapp_addon/Baileys/src/Defaults/phonenumber-mcc.json new file mode 100644 index 0000000..2fd7c9f --- /dev/null +++ b/whatsapp_addon/Baileys/src/Defaults/phonenumber-mcc.json @@ -0,0 +1,223 @@ +{ + "93": 412, + "355": 276, + "213": 603, + "1-684": 544, + "376": 213, + "244": 631, + "1-264": 365, + "1-268": 344, + "54": 722, + "374": 283, + "297": 363, + "61": 505, + "43": 232, + "994": 400, + "1-242": 364, + "973": 426, + "880": 470, + "1-246": 342, + "375": 257, + "32": 206, + "501": 702, + "229": 616, + "1-441": 350, + "975": 402, + "591": 736, + "387": 218, + "267": 652, + "55": 724, + "1-284": 348, + "673": 528, + "359": 284, + "226": 613, + "257": 642, + "855": 456, + "237": 624, + "238": 625, + "1-345": 346, + "236": 623, + "235": 622, + "56": 730, + "86": 454, + "57": 732, + "269": 654, + "682": 548, + "506": 712, + "385": 219, + "53": 368, + "357": 280, + "420": 230, + "243": 630, + "45": 238, + "253": 638, + "1-767": 366, + "1-809": 370, + "1-849": 370, + "1-829": 370, + "593": 740, + "20": 602, + "503": 706, + "240": 627, + "291": 657, + "372": 248, + "251": 636, + "500": 750, + "298": 288, + "679": 542, + "358": 244, + "33": 208, + "689": 547, + "241": 628, + "220": 607, + "995": 282, + "49": 262, + "233": 620, + "350": 266, + "30": 202, + "299": 290, + "1-473": 352, + "1-671": 535, + "502": 704, + "224": 537, + "592": 738, + "509": 372, + "504": 708, + "852": 454, + "36": 216, + "354": 274, + "91": 404, + "62": 510, + "98": 432, + "964": 418, + "353": 234, + "972": 425, + "39": 222, + "225": 612, + "1-876": 338, + "81": 440, + "962": 416, + "254": 639, + "686": 545, + "383": 221, + "965": 419, + "371": 247, + "961": 415, + "266": 651, + "231": 618, + "218": 606, + "423": 295, + "370": 246, + "352": 270, + "389": 294, + "261": 646, + "265": 650, + "60": 502, + "960": 472, + "223": 610, + "356": 278, + "692": 551, + "222": 609, + "230": 617, + "52": 334, + "691": 550, + "373": 259, + "377": 212, + "976": 428, + "382": 297, + "1-664": 354, + "212": 604, + "258": 643, + "95": 414, + "264": 649, + "674": 536, + "977": 429, + "31": 204, + "687": 546, + "64": 530, + "505": 710, + "227": 614, + "234": 621, + "683": 555, + "1-670": 534, + "47": 242, + "968": 226, + "92": 410, + "680": 552, + "970": 423, + "507": 714, + "675": 537, + "595": 744, + "51": 716, + "63": 515, + "48": 260, + "351": 268, + "1-787, 1-939": 330, + "974": 427, + "242": 630, + "40": 226, + "7": 250, + "250": 635, + "290": 658, + "1-869": 356, + "1-758": 358, + "508": 308, + "1-784": 360, + "685": 544, + "378": 292, + "239": 626, + "966": 420, + "221": 608, + "381": 220, + "248": 633, + "232": 619, + "65": 525, + "386": 293, + "677": 540, + "27": 655, + "211": 659, + "34": 214, + "94": 413, + "249": 634, + "597": 746, + "268": 653, + "46": 240, + "41": 228, + "963": 417, + "886": 466, + "992": 436, + "255": 640, + "66": 520, + "228": 615, + "690": 554, + "676": 539, + "1-868": 374, + "216": 605, + "90": 286, + "993": 438, + "1-649": 376, + "688": 553, + "1-340": 332, + "256": 641, + "380": 255, + "971": 424, + "44": 234, + "1": 310, + "598": 748, + "998": 434, + "678": 541, + "379": 225, + "58": 734, + "681": 543, + "967": 421, + "260": 645, + "263": 648, + "670": 514, + "245": 632, + "856": 457, + "599": 362, + "850": 467, + "262": 647, + "82": 450, + "84": 452 +} diff --git a/whatsapp_addon/Baileys/src/Signal/libsignal.ts b/whatsapp_addon/Baileys/src/Signal/libsignal.ts new file mode 100644 index 0000000..1375050 --- /dev/null +++ b/whatsapp_addon/Baileys/src/Signal/libsignal.ts @@ -0,0 +1,141 @@ +import * as libsignal from 'libsignal' +import { GroupCipher, GroupSessionBuilder, SenderKeyDistributionMessage, SenderKeyName, SenderKeyRecord } from '../../WASignalGroup' +import { SignalAuthState } from '../Types' +import { SignalRepository } from '../Types/Signal' +import { generateSignalPubKey } from '../Utils' + +export function makeLibSignalRepository(auth: SignalAuthState): SignalRepository { + const storage = signalStorage(auth) + return { + decryptGroupMessage({ group, authorJid, msg }) { + const senderName = jidToSignalSenderKeyName(group, authorJid) + const cipher = new GroupCipher(storage, senderName) + + return cipher.decrypt(msg) + }, + async processSenderKeyDistributionMessage({ item, authorJid }) { + const builder = new GroupSessionBuilder(storage) + const senderName = jidToSignalSenderKeyName(item.groupId!, authorJid) + + const senderMsg = new SenderKeyDistributionMessage(null, null, null, null, item.axolotlSenderKeyDistributionMessage) + const { [senderName]: senderKey } = await auth.keys.get('sender-key', [senderName]) + if(!senderKey) { + await storage.storeSenderKey(senderName, new SenderKeyRecord()) + } + + await builder.process(senderName, senderMsg) + }, + async decryptMessage({ jid, type, ciphertext }) { + const addr = jidToSignalProtocolAddress(jid) + const session = new libsignal.SessionCipher(storage, addr) + let result: Buffer + switch (type) { + case 'pkmsg': + result = await session.decryptPreKeyWhisperMessage(ciphertext) + break + case 'msg': + result = await session.decryptWhisperMessage(ciphertext) + break + } + + return result + }, + async encryptMessage({ jid, data }) { + const addr = jidToSignalProtocolAddress(jid) + const cipher = new libsignal.SessionCipher(storage, addr) + + const { type: sigType, body } = await cipher.encrypt(data) + const type = sigType === 3 ? 'pkmsg' : 'msg' + return { type, ciphertext: Buffer.from(body, 'binary') } + }, + async encryptGroupMessage({ group, meId, data }) { + const senderName = jidToSignalSenderKeyName(group, meId) + const builder = new GroupSessionBuilder(storage) + + const { [senderName]: senderKey } = await auth.keys.get('sender-key', [senderName]) + if(!senderKey) { + await storage.storeSenderKey(senderName, new SenderKeyRecord()) + } + + const senderKeyDistributionMessage = await builder.create(senderName) + const session = new GroupCipher(storage, senderName) + const ciphertext = await session.encrypt(data) + + return { + ciphertext, + senderKeyDistributionMessage: senderKeyDistributionMessage.serialize(), + } + }, + async injectE2ESession({ jid, session }) { + const cipher = new libsignal.SessionBuilder(storage, jidToSignalProtocolAddress(jid)) + await cipher.initOutgoing(session) + }, + jidToSignalProtocolAddress(jid) { + return jidToSignalProtocolAddress(jid).toString() + }, + } +} + +const jidToSignalAddress = (jid: string) => jid.split('@')[0] + +const jidToSignalProtocolAddress = (jid: string) => { + return new libsignal.ProtocolAddress(jidToSignalAddress(jid), 0) +} + +const jidToSignalSenderKeyName = (group: string, user: string): string => { + return new SenderKeyName(group, jidToSignalProtocolAddress(user)).toString() +} + +function signalStorage({ creds, keys }: SignalAuthState) { + return { + loadSession: async(id: string) => { + const { [id]: sess } = await keys.get('session', [id]) + if(sess) { + return libsignal.SessionRecord.deserialize(sess) + } + }, + storeSession: async(id, session) => { + await keys.set({ 'session': { [id]: session.serialize() } }) + }, + isTrustedIdentity: () => { + return true + }, + loadPreKey: async(id: number | string) => { + const keyId = id.toString() + const { [keyId]: key } = await keys.get('pre-key', [keyId]) + if(key) { + return { + privKey: Buffer.from(key.private), + pubKey: Buffer.from(key.public) + } + } + }, + removePreKey: (id: number) => keys.set({ 'pre-key': { [id]: null } }), + loadSignedPreKey: () => { + const key = creds.signedPreKey + return { + privKey: Buffer.from(key.keyPair.private), + pubKey: Buffer.from(key.keyPair.public) + } + }, + loadSenderKey: async(keyId: string) => { + const { [keyId]: key } = await keys.get('sender-key', [keyId]) + if(key) { + return new SenderKeyRecord(key) + } + }, + storeSenderKey: async(keyId, key) => { + await keys.set({ 'sender-key': { [keyId]: key.serialize() } }) + }, + getOurRegistrationId: () => ( + creds.registrationId + ), + getOurIdentity: () => { + const { signedIdentityKey } = creds + return { + privKey: Buffer.from(signedIdentityKey.private), + pubKey: generateSignalPubKey(signedIdentityKey.public), + } + } + } +} \ No newline at end of file diff --git a/whatsapp_addon/Baileys/src/Socket/business.ts b/whatsapp_addon/Baileys/src/Socket/business.ts index 457701e..dddb8b0 100644 --- a/whatsapp_addon/Baileys/src/Socket/business.ts +++ b/whatsapp_addon/Baileys/src/Socket/business.ts @@ -54,7 +54,7 @@ export const makeBusinessSocket = (config: SocketConfig) => { tag: 'product_catalog', attrs: { jid, - allow_shop_source: 'true' + 'allow_shop_source': 'true' }, content: queryParamNodes } @@ -72,13 +72,13 @@ export const makeBusinessSocket = (config: SocketConfig) => { to: S_WHATSAPP_NET, type: 'get', xmlns: 'w:biz:catalog', - smax_id: '35' + 'smax_id': '35' }, content: [ { tag: 'collections', attrs: { - biz_jid: jid, + 'biz_jid': jid, }, content: [ { @@ -116,7 +116,7 @@ export const makeBusinessSocket = (config: SocketConfig) => { to: S_WHATSAPP_NET, type: 'get', xmlns: 'fb:thrift_iq', - smax_id: '5' + 'smax_id': '5' }, content: [ { diff --git a/whatsapp_addon/Baileys/src/Socket/chats.ts b/whatsapp_addon/Baileys/src/Socket/chats.ts index ee34528..2932c42 100644 --- a/whatsapp_addon/Baileys/src/Socket/chats.ts +++ b/whatsapp_addon/Baileys/src/Socket/chats.ts @@ -1,7 +1,7 @@ import { Boom } from '@hapi/boom' import { proto } from '../../WAProto' import { PROCESSABLE_HISTORY_TYPES } from '../Defaults' -import { ALL_WA_PATCH_NAMES, ChatModification, ChatMutation, LTHashState, MessageUpsertType, PresenceData, SocketConfig, WABusinessHoursConfig, WABusinessProfile, WAMediaUpload, WAMessage, WAPatchCreate, WAPatchName, WAPresence } from '../Types' +import { ALL_WA_PATCH_NAMES, ChatModification, ChatMutation, LTHashState, MessageUpsertType, PresenceData, SocketConfig, WABusinessHoursConfig, WABusinessProfile, WAMediaUpload, WAMessage, WAPatchCreate, WAPatchName, WAPresence, WAPrivacyOnlineValue, WAPrivacyValue, WAReadReceiptsValue } from '../Types' import { chatModificationToAppPatch, ChatMutationMap, decodePatches, decodeSyncdSnapshot, encodeSyncdPatch, extractSyncdPatches, generateProfilePicture, getHistoryMsg, newLTHashState, processSyncAction } from '../Utils' import { makeMutex } from '../Utils/make-mutex' import processMessage from '../Utils/process-message' @@ -52,7 +52,7 @@ export const makeChatsSocket = (config: SocketConfig) => { type: 'get' }, content: [ - { tag: 'privacy', attrs: { } } + { tag: 'privacy', attrs: {} } ] }) privacySettings = reduceBinaryNodeToDictionary(content?.[0] as BinaryNode, 'category') @@ -61,6 +61,69 @@ export const makeChatsSocket = (config: SocketConfig) => { return privacySettings } + /** helper function to run a privacy IQ query */ + const privacyQuery = async(name: string, value: string) => { + await query({ + tag: 'iq', + attrs: { + xmlns: 'privacy', + to: S_WHATSAPP_NET, + type: 'set' + }, + content: [{ + tag: 'privacy', + attrs: {}, + content: [ + { + tag: 'category', + attrs: { name, value } + } + ] + }] + }) + } + + const updateLastSeenPrivacy = async(value: WAPrivacyValue) => { + await privacyQuery('last', value) + } + + const updateOnlinePrivacy = async(value: WAPrivacyOnlineValue) => { + await privacyQuery('online', value) + } + + const updateProfilePicturePrivacy = async(value: WAPrivacyValue) => { + await privacyQuery('profile', value) + } + + const updateStatusPrivacy = async(value: WAPrivacyValue) => { + await privacyQuery('status', value) + } + + const updateReadReceiptsPrivacy = async(value: WAReadReceiptsValue) => { + await privacyQuery('readreceipts', value) + } + + const updateGroupsAddPrivacy = async(value: WAPrivacyValue) => { + await privacyQuery('groupadd', value) + } + + const updateDefaultDisappearingMode = async(duration: number) => { + await query({ + tag: 'iq', + attrs: { + xmlns: 'disappearing_mode', + to: S_WHATSAPP_NET, + type: 'set' + }, + content: [{ + tag: 'disappearing_mode', + attrs: { + duration: duration.toString() + } + }] + }) + } + /** helper function to run a generic IQ query */ const interactiveQuery = async(userNodes: BinaryNode[], queryNode: BinaryNode) => { const result = await query({ @@ -83,12 +146,12 @@ export const makeChatsSocket = (config: SocketConfig) => { content: [ { tag: 'query', - attrs: { }, - content: [ queryNode ] + attrs: {}, + content: [queryNode] }, { tag: 'list', - attrs: { }, + attrs: {}, content: userNodes } ] @@ -104,22 +167,17 @@ export const makeChatsSocket = (config: SocketConfig) => { } const onWhatsApp = async(...jids: string[]) => { - const results = await interactiveQuery( - [ - { - tag: 'user', - attrs: { }, - content: jids.map( - jid => ({ - tag: 'contact', - attrs: { }, - content: `+${jid}` - }) - ) - } - ], - { tag: 'contact', attrs: { } } - ) + const query = { tag: 'contact', attrs: {} } + const list = jids.map((jid) => ({ + tag: 'user', + attrs: {}, + content: [{ + tag: 'contact', + attrs: {}, + content: jid, + }], + })) + const results = await interactiveQuery(list, query) return results.map(user => { const contact = getBinaryNodeChild(user, 'contact') @@ -130,7 +188,7 @@ export const makeChatsSocket = (config: SocketConfig) => { const fetchStatus = async(jid: string) => { const [result] = await interactiveQuery( [{ tag: 'user', attrs: { jid } }], - { tag: 'status', attrs: { } } + { tag: 'status', attrs: {} } ) if(result) { const status = getBinaryNodeChild(result, 'status') @@ -161,6 +219,18 @@ export const makeChatsSocket = (config: SocketConfig) => { }) } + /** remove the profile picture for yourself or a group */ + const removeProfilePicture = async(jid: string) => { + await query({ + tag: 'iq', + attrs: { + to: jidNormalizedUser(jid), + type: 'set', + xmlns: 'w:profile:picture' + } + }) + } + /** update the profile status for yourself */ const updateProfileStatus = async(status: string) => { await query({ @@ -173,7 +243,7 @@ export const makeChatsSocket = (config: SocketConfig) => { content: [ { tag: 'status', - attrs: { }, + attrs: {}, content: Buffer.from(status, 'utf-8') } ] @@ -245,8 +315,10 @@ export const makeChatsSocket = (config: SocketConfig) => { const website = getBinaryNodeChild(profiles, 'website') const email = getBinaryNodeChild(profiles, 'email') const category = getBinaryNodeChild(getBinaryNodeChild(profiles, 'categories'), 'category') - const business_hours = getBinaryNodeChild(profiles, 'business_hours') - const business_hours_config = business_hours && getBinaryNodeChildren(business_hours, 'business_hours_config') + const businessHours = getBinaryNodeChild(profiles, 'business_hours') + const businessHoursConfig = businessHours + ? getBinaryNodeChildren(businessHours, 'business_hours_config') + : undefined const websiteStr = website?.content?.toString() return { wid: profiles.attrs?.jid, @@ -255,16 +327,16 @@ export const makeChatsSocket = (config: SocketConfig) => { website: websiteStr ? [websiteStr] : [], email: email?.content?.toString(), category: category?.content?.toString(), - business_hours: { - timezone: business_hours?.attrs?.timezone, - business_config: business_hours_config?.map(({ attrs }) => attrs as unknown as WABusinessHoursConfig) + 'business_hours': { + timezone: businessHours?.attrs?.timezone, + 'business_config': businessHoursConfig?.map(({ attrs }) => attrs as unknown as WABusinessHoursConfig) } } } } - const updateAccountSyncTimestamp = async(fromTimestamp: number | string) => { - logger.info({ fromTimestamp }, 'requesting account sync') + const cleanDirtyBits = async(type: 'account_sync' | 'groups', fromTimestamp?: number | string) => { + logger.info({ fromTimestamp }, 'clean dirty bits ' + type) await sendNode({ tag: 'iq', attrs: { @@ -277,8 +349,8 @@ export const makeChatsSocket = (config: SocketConfig) => { { tag: 'clean', attrs: { - type: 'account_sync', - timestamp: fromTimestamp.toString(), + type, + ...(fromTimestamp ? { timestamp: fromTimestamp.toString() } : null), } } ] @@ -302,19 +374,19 @@ export const makeChatsSocket = (config: SocketConfig) => { const resyncAppState = ev.createBufferedFunction(async(collections: readonly WAPatchName[], isInitialSync: boolean) => { // we use this to determine which events to fire // otherwise when we resync from scratch -- all notifications will fire - const initialVersionMap: { [T in WAPatchName]?: number } = { } - const globalMutationMap: ChatMutationMap = { } + const initialVersionMap: { [T in WAPatchName]?: number } = {} + const globalMutationMap: ChatMutationMap = {} await authState.keys.transaction( async() => { const collectionsToHandle = new Set(collections) // in case something goes wrong -- ensure we don't enter a loop that cannot be exited from - const attemptsMap: { [T in WAPatchName]?: number } = { } + const attemptsMap: { [T in WAPatchName]?: number } = {} // keep executing till all collections are done // sometimes a single patch request will not return all the patches (God knows why) // so we fetch till they're all done (this is determined by the "has_more_patches" flag) while(collectionsToHandle.size) { - const states = { } as { [T in WAPatchName]: LTHashState } + const states = {} as { [T in WAPatchName]: LTHashState } const nodes: BinaryNode[] = [] for(const name of collectionsToHandle) { @@ -335,11 +407,11 @@ export const makeChatsSocket = (config: SocketConfig) => { nodes.push({ tag: 'collection', - attrs: { + attrs: { name, version: state.version.toString(), // return snapshot if being synced from scratch - return_snapshot: (!state.version).toString() + 'return_snapshot': (!state.version).toString() } }) } @@ -354,7 +426,7 @@ export const makeChatsSocket = (config: SocketConfig) => { content: [ { tag: 'sync', - attrs: { }, + attrs: {}, content: nodes } ] @@ -439,10 +511,10 @@ export const makeChatsSocket = (config: SocketConfig) => { }) /** - * fetch the profile picture of a user/group - * type = "preview" for a low res picture - * type = "image for the high res picture" - */ + * fetch the profile picture of a user/group + * type = "preview" for a low res picture + * type = "image for the high res picture" + */ const profilePictureUrl = async(jid: string, type: 'preview' | 'image' = 'preview', timeoutMs?: number) => { jid = jidNormalizedUser(jid) const result = await query({ @@ -487,7 +559,7 @@ export const makeChatsSocket = (config: SocketConfig) => { content: [ { tag: type === 'recording' ? 'composing' : type, - attrs: type === 'recording' ? { media : 'audio' } : {} + attrs: type === 'recording' ? { media: 'audio' } : {} } ] }) @@ -510,7 +582,7 @@ export const makeChatsSocket = (config: SocketConfig) => { ? [ { tag: 'tctoken', - attrs: { }, + attrs: {}, content: tcToken } ] @@ -592,19 +664,19 @@ export const makeChatsSocket = (config: SocketConfig) => { content: [ { tag: 'sync', - attrs: { }, + attrs: {}, content: [ { tag: 'collection', attrs: { name, version: (state.version - 1).toString(), - return_snapshot: 'false' + 'return_snapshot': 'false' }, content: [ { tag: 'patch', - attrs: { }, + attrs: {}, content: proto.SyncdPatch.encode(patch).finish() } ] @@ -654,7 +726,7 @@ export const makeChatsSocket = (config: SocketConfig) => { const propsNode = getBinaryNodeChild(abtNode, 'props') - let props: { [_: string]: string } = { } + let props: { [_: string]: string } = {} if(propsNode) { props = reduceBinaryNodeToDictionary(propsNode, 'prop') } @@ -674,13 +746,13 @@ export const makeChatsSocket = (config: SocketConfig) => { type: 'get', }, content: [ - { tag: 'props', attrs: { } } + { tag: 'props', attrs: {} } ] }) const propsNode = getBinaryNodeChild(resultNode, 'props') - let props: { [_: string]: string } = { } + let props: { [_: string]: string } = {} if(propsNode) { props = reduceBinaryNodeToDictionary(propsNode, 'prop') } @@ -691,15 +763,61 @@ export const makeChatsSocket = (config: SocketConfig) => { } /** - * modify a chat -- mark unread, read etc. - * lastMessages must be sorted in reverse chronologically - * requires the last messages till the last message received; required for archive & unread - */ + * modify a chat -- mark unread, read etc. + * lastMessages must be sorted in reverse chronologically + * requires the last messages till the last message received; required for archive & unread + */ const chatModify = (mod: ChatModification, jid: string) => { const patch = chatModificationToAppPatch(mod, jid) return appPatch(patch) } + /** + * Adds label for the chats + */ + const addChatLabel = (jid: string, labelId: string) => { + return chatModify({ + addChatLabel: { + labelId + } + }, jid) + } + + /** + * Removes label for the chat + */ + const removeChatLabel = (jid: string, labelId: string) => { + return chatModify({ + removeChatLabel: { + labelId + } + }, jid) + } + + /** + * Adds label for the message + */ + const addMessageLabel = (jid: string, messageId: string, labelId: string) => { + return chatModify({ + addMessageLabel: { + messageId, + labelId + } + }, jid) + } + + /** + * Removes label for the message + */ + const removeMessageLabel = (jid: string, messageId: string, labelId: string) => { + return chatModify({ + removeMessageLabel: { + messageId, + labelId + } + }, jid) + } + /** * queries need to be fired on connection open * help ensure parity with WA Web @@ -762,6 +880,7 @@ export const makeChatsSocket = (config: SocketConfig) => { keyStore: authState.keys, logger, options: config.options, + getMessage: config.getMessage, } ) ]) @@ -801,13 +920,16 @@ export const makeChatsSocket = (config: SocketConfig) => { if(attrs.timestamp) { let { lastAccountSyncTimestamp } = authState.creds if(lastAccountSyncTimestamp) { - await updateAccountSyncTimestamp(lastAccountSyncTimestamp) + await cleanDirtyBits('account_sync', lastAccountSyncTimestamp) } lastAccountSyncTimestamp = +attrs.timestamp ev.emit('creds.update', { lastAccountSyncTimestamp }) } + break + case 'groups': + // handled in groups.ts break default: logger.info({ node }, 'received unknown sync') @@ -834,7 +956,7 @@ export const makeChatsSocket = (config: SocketConfig) => { // if we don't have the app state key // we keep buffering events until we finally have // the key and can sync the messages - if(!authState.creds?.myAppStateKeyId) { + if(!authState.creds?.myAppStateKeyId && !config.mobile) { ev.buffer() needToFlushWithAppStateSync = true } @@ -854,11 +976,24 @@ export const makeChatsSocket = (config: SocketConfig) => { fetchBlocklist, fetchStatus, updateProfilePicture, + removeProfilePicture, updateProfileStatus, updateProfileName, updateBlockStatus, + updateLastSeenPrivacy, + updateOnlinePrivacy, + updateProfilePicturePrivacy, + updateStatusPrivacy, + updateReadReceiptsPrivacy, + updateGroupsAddPrivacy, + updateDefaultDisappearingMode, getBusinessProfile, resyncAppState, - chatModify + chatModify, + cleanDirtyBits, + addChatLabel, + removeChatLabel, + addMessageLabel, + removeMessageLabel } } diff --git a/whatsapp_addon/Baileys/src/Socket/groups.ts b/whatsapp_addon/Baileys/src/Socket/groups.ts index 1c8dbcd..7eb5aa7 100644 --- a/whatsapp_addon/Baileys/src/Socket/groups.ts +++ b/whatsapp_addon/Baileys/src/Socket/groups.ts @@ -1,5 +1,5 @@ import { proto } from '../../WAProto' -import { GroupMetadata, ParticipantAction, SocketConfig, WAMessageKey, WAMessageStubType } from '../Types' +import { GroupMetadata, GroupParticipant, ParticipantAction, SocketConfig, WAMessageKey, WAMessageStubType } from '../Types' import { generateMessageID, unixTimestampSeconds } from '../Utils' import { BinaryNode, getBinaryNodeChild, getBinaryNodeChildren, getBinaryNodeChildString, jidEncode, jidNormalizedUser } from '../WABinary' import { makeChatsSocket } from './chats' @@ -29,6 +29,55 @@ export const makeGroupsSocket = (config: SocketConfig) => { return extractGroupMetadata(result) } + + const groupFetchAllParticipating = async() => { + const result = await query({ + tag: 'iq', + attrs: { + to: '@g.us', + xmlns: 'w:g2', + type: 'get', + }, + content: [ + { + tag: 'participating', + attrs: { }, + content: [ + { tag: 'participants', attrs: { } }, + { tag: 'description', attrs: { } } + ] + } + ] + }) + const data: { [_: string]: GroupMetadata } = { } + const groupsChild = getBinaryNodeChild(result, 'groups') + if(groupsChild) { + const groups = getBinaryNodeChildren(groupsChild, 'group') + for(const groupNode of groups) { + const meta = extractGroupMetadata({ + tag: 'result', + attrs: { }, + content: [groupNode] + }) + data[meta.id] = meta + } + } + + sock.ev.emit('groups.update', Object.values(data)) + + return data + } + + sock.ws.on('CB:ib,,dirty', async(node: BinaryNode) => { + const { attrs } = getBinaryNodeChild(node, 'dirty')! + if(attrs.type !== 'groups') { + return + } + + await groupFetchAllParticipating() + await sock.cleanDirtyBits('groups') + }) + return { ...sock, groupMetadata, @@ -211,41 +260,7 @@ export const makeGroupsSocket = (config: SocketConfig) => { groupSettingUpdate: async(jid: string, setting: 'announcement' | 'not_announcement' | 'locked' | 'unlocked') => { await groupQuery(jid, 'set', [ { tag: setting, attrs: { } } ]) }, - groupFetchAllParticipating: async() => { - const result = await query({ - tag: 'iq', - attrs: { - to: '@g.us', - xmlns: 'w:g2', - type: 'get', - }, - content: [ - { - tag: 'participating', - attrs: { }, - content: [ - { tag: 'participants', attrs: { } }, - { tag: 'description', attrs: { } } - ] - } - ] - }) - const data: { [_: string]: GroupMetadata } = { } - const groupsChild = getBinaryNodeChild(result, 'groups') - if(groupsChild) { - const groups = getBinaryNodeChildren(groupsChild, 'group') - for(const groupNode of groups) { - const meta = extractGroupMetadata({ - tag: 'result', - attrs: { }, - content: [groupNode] - }) - data[meta.id] = meta - } - } - - return data - } + groupFetchAllParticipating } } @@ -278,7 +293,7 @@ export const extractGroupMetadata = (result: BinaryNode) => { ({ attrs }) => { return { id: attrs.jid, - admin: attrs.type || null as any, + admin: (attrs.type || null) as GroupParticipant['admin'], } } ), diff --git a/whatsapp_addon/Baileys/src/Socket/index.ts b/whatsapp_addon/Baileys/src/Socket/index.ts index 7efebf0..7338c9c 100644 --- a/whatsapp_addon/Baileys/src/Socket/index.ts +++ b/whatsapp_addon/Baileys/src/Socket/index.ts @@ -1,6 +1,6 @@ import { DEFAULT_CONNECTION_CONFIG } from '../Defaults' import { UserFacingSocketConfig } from '../Types' -import { makeBusinessSocket as _makeSocket } from './business' +import { makeRegistrationSocket as _makeSocket } from './registration' // export the last socket layer const makeWASocket = (config: UserFacingSocketConfig) => ( diff --git a/whatsapp_addon/Baileys/src/Socket/messages-recv.ts b/whatsapp_addon/Baileys/src/Socket/messages-recv.ts index 7310b4d..fd0bf9c 100644 --- a/whatsapp_addon/Baileys/src/Socket/messages-recv.ts +++ b/whatsapp_addon/Baileys/src/Socket/messages-recv.ts @@ -1,8 +1,9 @@ +import NodeCache from 'node-cache' import { proto } from '../../WAProto' -import { KEY_BUNDLE_TYPE, MIN_PREKEY_COUNT } from '../Defaults' -import { MessageReceiptType, MessageRelayOptions, MessageUserReceipt, SocketConfig, WACallEvent, WAMessageKey, WAMessageStubType, WAPatchName } from '../Types' -import { decodeMediaRetryNode, decodeMessageStanza, delay, encodeBigEndian, encodeSignedDeviceIdentity, getCallStatusFromNode, getHistoryMsg, getNextPreKeys, getStatusFromReceiptType, unixTimestampSeconds, xmppPreKey, xmppSignedPreKey } from '../Utils' +import { DEFAULT_CACHE_TTLS, KEY_BUNDLE_TYPE, MIN_PREKEY_COUNT } from '../Defaults' +import { MessageReceiptType, MessageRelayOptions, MessageUserReceipt, SocketConfig, WACallEvent, WAMessageKey, WAMessageStatus, WAMessageStubType, WAPatchName } from '../Types' +import { decodeMediaRetryNode, decryptMessageNode, delay, encodeBigEndian, encodeSignedDeviceIdentity, getCallStatusFromNode, getHistoryMsg, getNextPreKeys, getStatusFromReceiptType, unixTimestampSeconds, xmppPreKey, xmppSignedPreKey } from '../Utils' import { makeMutex } from '../Utils/make-mutex' import { cleanMessage } from '../Utils/process-message' import { areJidsSameUser, BinaryNode, getAllBinaryNodeChildren, getBinaryNodeChild, getBinaryNodeChildren, isJidGroup, isJidUser, jidDecode, jidNormalizedUser, S_WHATSAPP_NET } from '../WABinary' @@ -21,8 +22,9 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { ev, authState, ws, - query, processingMutex, + signalRepository, + query, upsertMessage, resyncAppState, onUnexpectedError, @@ -36,8 +38,14 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { /** this mutex ensures that each retryRequest will wait for the previous one to finish */ const retryMutex = makeMutex() - const msgRetryMap = config.msgRetryCounterMap || { } - const callOfferData: { [id: string]: WACallEvent } = { } + const msgRetryCache = config.msgRetryCounterCache || new NodeCache({ + stdTTL: DEFAULT_CACHE_TTLS.MSG_RETRY, // 1 hour + useClones: false + }) + const callOfferCache = config.callOfferCache || new NodeCache({ + stdTTL: DEFAULT_CACHE_TTLS.CALL_OFFER, // 5 mins + useClones: false + }) let sendActiveReceipts = false @@ -90,15 +98,15 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { const sendRetryRequest = async(node: BinaryNode, forceIncludeKeys = false) => { const msgId = node.attrs.id - let retryCount = msgRetryMap[msgId] || 0 + let retryCount = msgRetryCache.get(msgId) || 0 if(retryCount >= 5) { logger.debug({ retryCount, msgId }, 'reached retry limit, clearing') - delete msgRetryMap[msgId] + msgRetryCache.del(msgId) return } retryCount += 1 - msgRetryMap[msgId] = retryCount + msgRetryCache.set(msgId, retryCount) const { account, signedPreKey, signedIdentityKey: identityKey } = authState.creds @@ -362,13 +370,14 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { const willSendMessageAgain = (id: string, participant: string) => { const key = `${id}:${participant}` - const retryCount = msgRetryMap[key] || 0 + const retryCount = msgRetryCache.get(key) || 0 return retryCount < 5 } const updateSendMessageAgainCount = (id: string, participant: string) => { const key = `${id}:${participant}` - msgRetryMap[key] = (msgRetryMap[key] || 0) + 1 + const newValue = (msgRetryCache.get(key) || 0) + 1 + msgRetryCache.set(key, newValue) } const sendMessagesAgain = async( @@ -535,7 +544,12 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { } const handleMessage = async(node: BinaryNode) => { - const { fullMessage: msg, category, author, decrypt } = decodeMessageStanza(node, authState) + const { fullMessage: msg, category, author, decrypt } = decryptMessageNode( + node, + authState.creds.me!.id, + signalRepository, + logger, + ) if(shouldIgnoreJid(msg.key.remoteJid!)) { logger.debug({ key: msg.key }, 'ignored message') await sendMessageAck(node) @@ -548,13 +562,9 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { await decrypt() // message failed to decrypt if(msg.messageStubType === proto.WebMessageInfo.StubType.CIPHERTEXT) { - logger.error( - { key: msg.key, params: msg.messageStubParameters }, - 'failure in decrypting message' - ) retryMutex.mutex( async() => { - if(ws.readyState === ws.OPEN) { + if(ws.isOpen) { const encNode = getBinaryNodeChild(node, 'enc') await sendRetryRequest(node, !encNode) if(retryRequestDelayMs) { @@ -618,18 +628,20 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { if(status === 'offer') { call.isVideo = !!getBinaryNodeChild(infoChild, 'video') call.isGroup = infoChild.attrs.type === 'group' - callOfferData[call.id] = call + callOfferCache.set(call.id, call) } + const existingCall = callOfferCache.get(call.id) + // use existing call info to populate this event - if(callOfferData[call.id]) { - call.isVideo = callOfferData[call.id].isVideo - call.isGroup = callOfferData[call.id].isGroup + if(existingCall) { + call.isVideo = existingCall.isVideo + call.isGroup = existingCall.isGroup } // delete data once call has ended if(status === 'reject' || status === 'accept' || status === 'timeout') { - delete callOfferData[call.id] + callOfferCache.del(call.id) } ev.emit('call', [call]) @@ -638,12 +650,12 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { } const handleBadAck = async({ attrs }: BinaryNode) => { + const key: WAMessageKey = { remoteJid: attrs.from, fromMe: true, id: attrs.id } // current hypothesis is that if pash is sent in the ack // it means -- the message hasn't reached all devices yet // we'll retry sending the message here if(attrs.phash) { logger.info({ attrs }, 'received phash in ack, resending message...') - const key: WAMessageKey = { remoteJid: attrs.from, fromMe: true, id: attrs.id } const msg = await getMessage(key) if(msg) { await relayMessage(key.remoteJid!, msg, { messageId: key.id!, useUserDevicesCache: false }) @@ -651,14 +663,34 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { logger.warn({ attrs }, 'could not send message again, as it was not found') } } + + // error in acknowledgement, + // device could not display the message + if(attrs.error) { + logger.warn({ attrs }, 'received error in ack') + ev.emit( + 'messages.update', + [ + { + key, + update: { + status: WAMessageStatus.ERROR, + messageStubParameters: [ + attrs.error + ] + } + } + ] + ) + } } /// processes a node with the given function /// and adds the task to the existing buffer if we're buffering events - const processNodeWithBuffer = async( + const processNodeWithBuffer = async( node: BinaryNode, identifier: string, - exec: (node: BinaryNode) => Promise + exec: (node: BinaryNode) => Promise ) => { ev.buffer() await execTask() diff --git a/whatsapp_addon/Baileys/src/Socket/messages-send.ts b/whatsapp_addon/Baileys/src/Socket/messages-send.ts index 2368994..4b02775 100644 --- a/whatsapp_addon/Baileys/src/Socket/messages-send.ts +++ b/whatsapp_addon/Baileys/src/Socket/messages-send.ts @@ -2,12 +2,13 @@ import { Boom } from '@hapi/boom' import NodeCache from 'node-cache' import { proto } from '../../WAProto' -import { WA_DEFAULT_EPHEMERAL } from '../Defaults' +import { DEFAULT_CACHE_TTLS, WA_DEFAULT_EPHEMERAL } from '../Defaults' import { AnyMessageContent, MediaConnInfo, MessageReceiptType, MessageRelayOptions, MiscMessageGenerationOptions, SocketConfig, WAMessageKey } from '../Types' -import { aggregateMessageKeysNotFromMe, assertMediaContent, bindWaitForEvent, decryptMediaRetryData, encodeSignedDeviceIdentity, encodeWAMessage, encryptMediaRetryRequest, encryptSenderKeyMsgSignalProto, encryptSignalProto, extractDeviceJids, generateMessageID, generateWAMessage, getStatusCodeForMediaRetry, getUrlFromDirectPath, getWAUploadToServer, jidToSignalProtocolAddress, parseAndInjectE2ESessions, unixTimestampSeconds } from '../Utils' +import { aggregateMessageKeysNotFromMe, assertMediaContent, bindWaitForEvent, decryptMediaRetryData, encodeSignedDeviceIdentity, encodeWAMessage, encryptMediaRetryRequest, extractDeviceJids, generateMessageID, generateWAMessage, getStatusCodeForMediaRetry, getUrlFromDirectPath, getWAUploadToServer, parseAndInjectE2ESessions, unixTimestampSeconds } from '../Utils' import { getUrlInfo } from '../Utils/link-preview' import { areJidsSameUser, BinaryNode, BinaryNodeAttributes, getBinaryNodeChild, getBinaryNodeChildren, isJidGroup, isJidUser, jidDecode, jidEncode, jidNormalizedUser, JidWithDevice, S_WHATSAPP_NET } from '../WABinary' import { makeGroupsSocket } from './groups' +import ListType = proto.Message.ListMessage.ListType; export const makeMessagesSocket = (config: SocketConfig) => { const { @@ -22,6 +23,7 @@ export const makeMessagesSocket = (config: SocketConfig) => { ev, authState, processingMutex, + signalRepository, upsertMessage, query, fetchPrivacySettings, @@ -32,7 +34,7 @@ export const makeMessagesSocket = (config: SocketConfig) => { } = sock const userDevicesCache = config.userDevicesCache || new NodeCache({ - stdTTL: 300, // 5 minutes + stdTTL: DEFAULT_CACHE_TTLS.USER_DEVICES, // 5 minutes useClones: false }) @@ -53,7 +55,10 @@ export const makeMessagesSocket = (config: SocketConfig) => { const mediaConnNode = getBinaryNodeChild(result, 'media_conn') const node: MediaConnInfo = { hosts: getBinaryNodeChildren(mediaConnNode, 'host').map( - item => item.attrs as any + ({ attrs }) => ({ + hostname: attrs.hostname, + maxContentLengthBytes: +attrs.maxContentLengthBytes, + }) ), auth: mediaConnNode!.attrs.auth, ttl: +mediaConnNode!.attrs.ttl, @@ -144,8 +149,9 @@ export const makeMessagesSocket = (config: SocketConfig) => { for(let jid of jids) { const user = jidDecode(jid)?.user jid = jidNormalizedUser(jid) - if(userDevicesCache.has(user!) && useCache) { - const devices = userDevicesCache.get(user!)! + + const devices = userDevicesCache.get(user!) + if(devices && useCache) { deviceResults.push(...devices) logger.trace({ user }, 'using cache for devices') @@ -211,10 +217,14 @@ export const makeMessagesSocket = (config: SocketConfig) => { if(force) { jidsRequiringFetch = jids } else { - const addrs = jids.map(jid => jidToSignalProtocolAddress(jid).toString()) + const addrs = jids.map(jid => ( + signalRepository + .jidToSignalProtocolAddress(jid) + )) const sessions = await authState.keys.get('session', addrs) for(const jid of jids) { - const signalId = jidToSignalProtocolAddress(jid).toString() + const signalId = signalRepository + .jidToSignalProtocolAddress(jid) if(!sessions[signalId]) { jidsRequiringFetch.push(jid) } @@ -243,7 +253,7 @@ export const makeMessagesSocket = (config: SocketConfig) => { } ] }) - await parseAndInjectE2ESessions(result, authState) + await parseAndInjectE2ESessions(result, signalRepository) didFetchNewSession = true } @@ -263,7 +273,8 @@ export const makeMessagesSocket = (config: SocketConfig) => { const nodes = await Promise.all( jids.map( async jid => { - const { type, ciphertext } = await encryptSignalProto(jid, bytes, authState) + const { type, ciphertext } = await signalRepository + .encryptMessage({ jid, data: bytes }) if(type === 'pkmsg') { shouldIncludeDeviceIdentity = true } @@ -319,7 +330,7 @@ export const makeMessagesSocket = (config: SocketConfig) => { // only send to the specific device that asked for a retry // otherwise the message is sent out to every device that should be a recipient if(!isGroup) { - additionalAttributes = { ...additionalAttributes, device_fanout: 'false' } + additionalAttributes = { ...additionalAttributes, 'device_fanout': 'false' } } const { user, device } = jidDecode(participant.jid)! @@ -328,6 +339,7 @@ export const makeMessagesSocket = (config: SocketConfig) => { await authState.keys.transaction( async() => { + const mediaType = getMediaType(message) if(isGroup) { const [groupData, senderKeyMap] = await Promise.all([ (async() => { @@ -361,11 +373,12 @@ export const makeMessagesSocket = (config: SocketConfig) => { const patched = await patchMessageBeforeSending(message, devices.map(d => jidEncode(d.user, 's.whatsapp.net', d.device))) const bytes = encodeWAMessage(patched) - const { ciphertext, senderKeyDistributionMessageKey } = await encryptSenderKeyMsgSignalProto( - destinationJid, - bytes, - meId, - authState + const { ciphertext, senderKeyDistributionMessage } = await signalRepository.encryptGroupMessage( + { + group: destinationJid, + data: bytes, + meId, + } ) const senderKeyJids: string[] = [] @@ -386,14 +399,14 @@ export const makeMessagesSocket = (config: SocketConfig) => { const senderKeyMsg: proto.IMessage = { senderKeyDistributionMessage: { - axolotlSenderKeyDistributionMessage: senderKeyDistributionMessageKey, + axolotlSenderKeyDistributionMessage: senderKeyDistributionMessage, groupId: destinationJid } } await assertSessions(senderKeyJids, false) - const result = await createParticipantNodes(senderKeyJids, senderKeyMsg) + const result = await createParticipantNodes(senderKeyJids, senderKeyMsg, mediaType ? { mediatype: mediaType } : undefined) shouldIncludeDeviceIdentity = shouldIncludeDeviceIdentity || result.shouldIncludeDeviceIdentity participants.push(...result.nodes) @@ -438,8 +451,8 @@ export const makeMessagesSocket = (config: SocketConfig) => { { nodes: meNodes, shouldIncludeDeviceIdentity: s1 }, { nodes: otherNodes, shouldIncludeDeviceIdentity: s2 } ] = await Promise.all([ - createParticipantNodes(meJids, meMsg), - createParticipantNodes(otherJids, message) + createParticipantNodes(meJids, meMsg, mediaType ? { mediatype: mediaType } : undefined), + createParticipantNodes(otherJids, message, mediaType ? { mediatype: mediaType } : undefined) ]) participants.push(...meNodes) participants.push(...otherNodes) @@ -491,6 +504,22 @@ export const makeMessagesSocket = (config: SocketConfig) => { logger.debug({ jid }, 'adding device identity') } + const buttonType = getButtonType(message) + if(buttonType) { + (stanza.content as BinaryNode[]).push({ + tag: 'biz', + attrs: { }, + content: [ + { + tag: buttonType, + attrs: getButtonArgs(message), + } + ] + }) + + logger.debug({ jid }, 'adding business node') + } + logger.debug({ msgId }, `sending message to ${participants.length} devices`) await sendNode(stanza) @@ -500,6 +529,68 @@ export const makeMessagesSocket = (config: SocketConfig) => { return msgId } + const getMediaType = (message: proto.IMessage) => { + if(message.imageMessage) { + return 'image' + } else if(message.videoMessage) { + return message.videoMessage.gifPlayback ? 'gif' : 'video' + } else if(message.audioMessage) { + return message.audioMessage.ptt ? 'ptt' : 'audio' + } else if(message.contactMessage) { + return 'vcard' + } else if(message.documentMessage) { + return 'document' + } else if(message.contactsArrayMessage) { + return 'contact_array' + } else if(message.liveLocationMessage) { + return 'livelocation' + } else if(message.stickerMessage) { + return 'sticker' + } else if(message.listMessage) { + return 'list' + } else if(message.listResponseMessage) { + return 'list_response' + } else if(message.buttonsResponseMessage) { + return 'buttons_response' + } else if(message.orderMessage) { + return 'order' + } else if(message.productMessage) { + return 'product' + } else if(message.interactiveResponseMessage) { + return 'native_flow_response' + } + } + + const getButtonType = (message: proto.IMessage) => { + if(message.buttonsMessage) { + return 'buttons' + } else if(message.buttonsResponseMessage) { + return 'buttons_response' + } else if(message.interactiveResponseMessage) { + return 'interactive_response' + } else if(message.listMessage) { + return 'list' + } else if(message.listResponseMessage) { + return 'list_response' + } + } + + const getButtonArgs = (message: proto.IMessage): BinaryNode['attrs'] => { + if(message.templateMessage) { + // TODO: Add attributes + return {} + } else if(message.listMessage) { + const type = message.listMessage.listType + if(!type) { + throw new Boom('Expected list type inside message') + } + + return { v: '2', type: ListType[type].toLowerCase() } + } else { + return {} + } + } + const getPrivacyTokens = async(jids: string[]) => { const t = unixTimestampSeconds().toString() const result = await query({ @@ -636,6 +727,7 @@ export const makeMessagesSocket = (config: SocketConfig) => { ), upload: waUploadToServer, mediaCache: config.mediaCache, + options: config.options, ...options, } ) diff --git a/whatsapp_addon/Baileys/src/Socket/mobile-socket.ts b/whatsapp_addon/Baileys/src/Socket/mobile-socket.ts new file mode 100644 index 0000000..f61c518 --- /dev/null +++ b/whatsapp_addon/Baileys/src/Socket/mobile-socket.ts @@ -0,0 +1,46 @@ +import { Socket } from 'net' +import { MOBILE_ENDPOINT, MOBILE_PORT } from '../Defaults' +import { SocketConfig } from '../Types' + +export class MobileSocket extends Socket { + constructor(public config: SocketConfig) { + super() + + this.on('data', (d) => { + this.emit('message', d) + }) + } + + override connect() { + return super.connect({ + host: MOBILE_ENDPOINT, + port: MOBILE_PORT, + }, () => { + this.emit('open') + }) + } + + get isOpen(): boolean { + return this.readyState === 'open' + } + + get isClosed(): boolean { + return this.readyState === 'closed' + } + + get isClosing(): boolean { + return this.isClosed + } + + get isConnecting(): boolean { + return this.readyState === 'opening' + } + + close(): void { + this.end() + } + + send(data: unknown, cb?: ((err?: Error | undefined) => void) | undefined) { + return super.write(data as Uint8Array | string, undefined, cb as ((err?: Error | undefined) => void)) + } +} \ No newline at end of file diff --git a/whatsapp_addon/Baileys/src/Socket/registration.ts b/whatsapp_addon/Baileys/src/Socket/registration.ts new file mode 100644 index 0000000..66f90aa --- /dev/null +++ b/whatsapp_addon/Baileys/src/Socket/registration.ts @@ -0,0 +1,250 @@ +/* eslint-disable camelcase */ +import axios, { AxiosRequestConfig } from 'axios' +import { MOBILE_REGISTRATION_ENDPOINT, MOBILE_TOKEN, MOBILE_USERAGENT, REGISTRATION_PUBLIC_KEY } from '../Defaults' +import { KeyPair, SignedKeyPair, SocketConfig } from '../Types' +import { aesEncryptGCM, Curve, md5 } from '../Utils/crypto' +import { jidEncode } from '../WABinary' +import { makeBusinessSocket } from './business' +import { MobileSocket } from './mobile-socket' + +function urlencode(str: string) { + return str.replace(/-/g, '%2d').replace(/_/g, '%5f').replace(/~/g, '%7e') +} + +const validRegistrationOptions = (config: RegistrationOptions) => config?.phoneNumberCountryCode && + config.phoneNumberNationalNumber && + config.phoneNumberMobileCountryCode + +export const makeRegistrationSocket = (config: SocketConfig) => { + const sock = makeBusinessSocket(config) + + const register = async(code: string) => { + if(!validRegistrationOptions(config.auth.creds.registration)) { + throw new Error('please specify the registration options') + } + + const result = await mobileRegister({ ...sock.authState.creds, ...sock.authState.creds.registration as RegistrationOptions, code }, config.options) + + sock.authState.creds.me = { + id: jidEncode(result.login!, 's.whatsapp.net'), + name: '~' + } + + sock.authState.creds.registered = true + sock.ev.emit('creds.update', sock.authState.creds) + + if(sock.ws instanceof MobileSocket) { + sock.ws.connect() + } + + return result + } + + const requestRegistrationCode = async(registrationOptions?: RegistrationOptions) => { + registrationOptions = registrationOptions || config.auth.creds.registration + if(!validRegistrationOptions(registrationOptions)) { + throw new Error('Invalid registration options') + } + + sock.authState.creds.registration = registrationOptions + + sock.ev.emit('creds.update', sock.authState.creds) + + return mobileRegisterCode({ ...config.auth.creds, ...registrationOptions }, config.options) + } + + return { + ...sock, + register, + requestRegistrationCode, + } +} + +// Backup_token: Base64.getEncoder().encodeToString(Arrays.copyOfRange(Base64.getDecoder().decode(UUID.randomUUID().toString().replace('-','')),0,15)) + +export interface RegistrationData { + registrationId: number + signedPreKey: SignedKeyPair + noiseKey: KeyPair + signedIdentityKey: KeyPair + identityId: Buffer + phoneId: string + deviceId: string + backupToken: Buffer +} + +export interface RegistrationOptions { + /** your phone number */ + phoneNumber?: string + /** the country code of your phone number */ + phoneNumberCountryCode: string + /** your phone number without country code */ + phoneNumberNationalNumber: string + /** the country code of your mobile network + * @see {@link https://de.wikipedia.org/wiki/Mobile_Country_Code} + */ + phoneNumberMobileCountryCode: string + /** the network code of your mobile network + * @see {@link https://de.wikipedia.org/wiki/Mobile_Network_Code} + */ + phoneNumberMobileNetworkCode: string + /** + * How to send the one time code + */ + method?: 'sms' | 'voice' +} + +export type RegistrationParams = RegistrationData & RegistrationOptions + +function convertBufferToUrlHex(buffer: Buffer) { + var id = '' + + buffer.forEach((x) => { + // encode random identity_id buffer as percentage url encoding + id += `%${x.toString(16).padStart(2, '0').toLowerCase()}` + }) + + return id +} + +export function registrationParams(params: RegistrationParams) { + const e_regid = Buffer.alloc(4) + e_regid.writeInt32BE(params.registrationId) + + const e_skey_id = Buffer.alloc(3) + e_skey_id.writeInt16BE(params.signedPreKey.keyId) + + params.phoneNumberCountryCode = params.phoneNumberCountryCode.replace('+', '').trim() + params.phoneNumberNationalNumber = params.phoneNumberNationalNumber.replace(/[/-\s)(]/g, '').trim() + + return { + cc: params.phoneNumberCountryCode, + in: params.phoneNumberNationalNumber, + Rc: '0', + lg: 'en', + lc: 'GB', + mistyped: '6', + authkey: Buffer.from(params.noiseKey.public).toString('base64url'), + e_regid: e_regid.toString('base64url'), + e_keytype: 'BQ', + e_ident: Buffer.from(params.signedIdentityKey.public).toString('base64url'), + // e_skey_id: e_skey_id.toString('base64url'), + e_skey_id: 'AAAA', + e_skey_val: Buffer.from(params.signedPreKey.keyPair.public).toString('base64url'), + e_skey_sig: Buffer.from(params.signedPreKey.signature).toString('base64url'), + fdid: params.phoneId, + network_ratio_type: '1', + expid: params.deviceId, + simnum: '1', + hasinrc: '1', + pid: Math.floor(Math.random() * 1000).toString(), + id: convertBufferToUrlHex(params.identityId), + backup_token: convertBufferToUrlHex(params.backupToken), + token: md5(Buffer.concat([MOBILE_TOKEN, Buffer.from(params.phoneNumberNationalNumber)])).toString('hex'), + } +} + +/** + * Requests a registration code for the given phone number. + */ +export function mobileRegisterCode(params: RegistrationParams, fetchOptions?: AxiosRequestConfig) { + return mobileRegisterFetch('/code', { + params: { + ...registrationParams(params), + mcc: `${params.phoneNumberMobileCountryCode}`.padStart(3, '0'), + mnc: `${params.phoneNumberMobileNetworkCode || '001'}`.padStart(3, '0'), + sim_mcc: '000', + sim_mnc: '000', + method: params?.method || 'sms', + reason: '', + hasav: '1' + }, + ...fetchOptions, + }) +} + +export function mobileRegisterExists(params: RegistrationParams, fetchOptions?: AxiosRequestConfig) { + return mobileRegisterFetch('/exist', { + params: registrationParams(params), + ...fetchOptions + }) +} + +/** + * Registers the phone number on whatsapp with the received OTP code. + */ +export async function mobileRegister(params: RegistrationParams & { code: string }, fetchOptions?: AxiosRequestConfig) { + //const result = await mobileRegisterFetch(`/reg_onboard_abprop?cc=${params.phoneNumberCountryCode}&in=${params.phoneNumberNationalNumber}&rc=0`) + + return mobileRegisterFetch('/register', { + params: { ...registrationParams(params), code: params.code.replace('-', '') }, + ...fetchOptions, + }) +} + +/** + * Encrypts the given string as AEAD aes-256-gcm with the public whatsapp key and a random keypair. + */ +export function mobileRegisterEncrypt(data: string) { + const keypair = Curve.generateKeyPair() + const key = Curve.sharedKey(keypair.private, REGISTRATION_PUBLIC_KEY) + + const buffer = aesEncryptGCM(Buffer.from(data), new Uint8Array(key), Buffer.alloc(12), Buffer.alloc(0)) + + return Buffer.concat([Buffer.from(keypair.public), buffer]).toString('base64url') +} + +export async function mobileRegisterFetch(path: string, opts: AxiosRequestConfig = {}) { + let url = `${MOBILE_REGISTRATION_ENDPOINT}${path}` + + if(opts.params) { + const parameter = [] as string[] + + for(const param in opts.params) { + parameter.push(param + '=' + urlencode(opts.params[param])) + } + + console.log('parameter', opts.params, parameter) + + // const params = urlencode(mobileRegisterEncrypt(parameter.join('&'))) + // url += `?ENC=${params}` + url += `?${parameter.join('&')}` + delete opts.params + } + + if(!opts.headers) { + opts.headers = {} + } + + opts.headers['User-Agent'] = MOBILE_USERAGENT + + const response = await axios(url, opts) + + var json = response.data + + if(response.status > 300 || json.reason) { + throw json + } + + if(json.status && !['ok', 'sent'].includes(json.status)) { + throw json + } + + return json as ExistsResponse +} + + +export interface ExistsResponse { + status: 'fail' + voice_length?: number + voice_wait?: number + sms_length?: number + sms_wait?: number + reason?: 'incorrect' | 'missing_param' + login?: string + flash_type?: number + ab_hash?: string + ab_key?: string + exp_cfg?: string + lid?: string +} diff --git a/whatsapp_addon/Baileys/src/Socket/socket.ts b/whatsapp_addon/Baileys/src/Socket/socket.ts index fbbb6e3..9853dd0 100644 --- a/whatsapp_addon/Baileys/src/Socket/socket.ts +++ b/whatsapp_addon/Baileys/src/Socket/socket.ts @@ -1,12 +1,13 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { Boom } from '@hapi/boom' import { promisify } from 'util' -import WebSocket from 'ws' import { proto } from '../../WAProto' -import { DEF_CALLBACK_PREFIX, DEF_TAG_PREFIX, DEFAULT_ORIGIN, INITIAL_PREKEY_COUNT, MIN_PREKEY_COUNT } from '../Defaults' +import { DEF_CALLBACK_PREFIX, DEF_TAG_PREFIX, INITIAL_PREKEY_COUNT, MIN_PREKEY_COUNT, MOBILE_NOISE_HEADER, NOISE_WA_HEADER } from '../Defaults' import { DisconnectReason, SocketConfig } from '../Types' -import { addTransactionCapability, bindWaitForConnectionUpdate, configureSuccessfulPairing, Curve, generateLoginNode, generateMdTagPrefix, generateRegistrationNode, getCodeFromWSError, getErrorCodeFromStreamError, getNextPreKeysNode, makeNoiseHandler, printQRIfNecessaryListener, promiseTimeout } from '../Utils' +import { addTransactionCapability, bindWaitForConnectionUpdate, configureSuccessfulPairing, Curve, generateLoginNode, generateMdTagPrefix, generateMobileNode, generateRegistrationNode, getCodeFromWSError, getErrorCodeFromStreamError, getNextPreKeysNode, makeNoiseHandler, printQRIfNecessaryListener, promiseTimeout } from '../Utils' import { makeEventBuffer } from '../Utils/event-buffer' -import { assertNodeErrorFree, BinaryNode, encodeBinaryNode, getBinaryNodeChild, getBinaryNodeChildren, S_WHATSAPP_NET } from '../WABinary' +import { assertNodeErrorFree, BinaryNode, binaryNodeToString, encodeBinaryNode, getBinaryNodeChild, getBinaryNodeChildren, S_WHATSAPP_NET } from '../WABinary' +import { MobileSocket } from './mobile-socket' /** * Connects to WA servers and performs: @@ -14,39 +15,45 @@ import { assertNodeErrorFree, BinaryNode, encodeBinaryNode, getBinaryNodeChild, * - listen to messages and emit events * - query phone connection */ -export const makeSocket = ({ - waWebSocketUrl, - connectTimeoutMs, - logger, - agent, - keepAliveIntervalMs, - version, - browser, - auth: authState, - printQRInTerminal, - defaultQueryTimeoutMs, - syncFullHistory, - transactionOpts, - qrTimeout, - options, -}: SocketConfig) => { - const ws = new WebSocket(waWebSocketUrl, undefined, { - origin: DEFAULT_ORIGIN, - headers: options.headers, - handshakeTimeout: connectTimeoutMs, - timeout: connectTimeoutMs, - agent - }) - ws.setMaxListeners(0) + +export const makeSocket = (config: SocketConfig) => { + const { + connectTimeoutMs, + logger, + keepAliveIntervalMs, + browser, + auth: authState, + printQRInTerminal, + defaultQueryTimeoutMs, + transactionOpts, + qrTimeout, + makeSignalRepository, + } = config + + config.mobile = config.mobile || config.auth.creds.registered + const ws = new MobileSocket(config) + ws.setMaxListeners?.(0) + + // if not mobile or already registered -> auto connect + if(!config.mobile || config.auth.creds.registered) { + ws.connect() + } + const ev = makeEventBuffer(logger) /** ephemeral key pair used to encrypt/decrypt communication. Unique for each connection */ const ephemeralKeyPair = Curve.generateKeyPair() /** WA noise protocol wrapper */ - const noise = makeNoiseHandler(ephemeralKeyPair, logger) + const noise = makeNoiseHandler({ + keyPair: ephemeralKeyPair, + NOISE_HEADER: config.mobile ? MOBILE_NOISE_HEADER : NOISE_WA_HEADER, + mobile: config.mobile, + logger + }) const { creds } = authState // add transaction capability const keys = addTransactionCapability(authState.keys, logger, transactionOpts) + const signalRepository = makeSignalRepository({ creds, keys }) let lastDateRecv: Date let epoch = 1 @@ -60,18 +67,28 @@ export const makeSocket = ({ const sendPromise = promisify(ws.send) /** send a raw buffer */ const sendRawMessage = async(data: Uint8Array | Buffer) => { - if(ws.readyState !== ws.OPEN) { + if(!ws.isOpen) { throw new Boom('Connection Closed', { statusCode: DisconnectReason.connectionClosed }) } const bytes = noise.encodeFrame(data) - await sendPromise.call(ws, bytes) as Promise + await promiseTimeout( + connectTimeoutMs, + async(resolve, reject) => { + try { + await sendPromise.call(ws, bytes) + resolve() + } catch(error) { + reject(error) + } + } + ) } /** send a binary node */ const sendNode = (frame: BinaryNode) => { if(logger.level === 'trace') { - logger.trace({ msgId: frame.attrs.id, fromMe: true, frame }, 'communication') + logger.trace(binaryNodeToString(frame), 'xml send') } const buff = encodeBinaryNode(frame) @@ -79,25 +96,27 @@ export const makeSocket = ({ } /** log & process any unexpected errors */ - const onUnexpectedError = (error: Error, msg: string) => { + const onUnexpectedError = (err: Error | Boom, msg: string) => { logger.error( - { trace: error.stack, output: (error as any).output }, + { err }, `unexpected error in '${msg}'` ) } /** await the next incoming message */ - const awaitNextMessage = async(sendMsg?: Uint8Array) => { - if(ws.readyState !== ws.OPEN) { - throw new Boom('Connection Closed', { statusCode: DisconnectReason.connectionClosed }) + const awaitNextMessage = async(sendMsg?: Uint8Array) => { + if(!ws.isOpen) { + throw new Boom('Connection Closed', { + statusCode: DisconnectReason.connectionClosed + }) } - let onOpen: (data: any) => void + let onOpen: (data: T) => void let onClose: (err: Error) => void - const result = promiseTimeout(connectTimeoutMs, (resolve, reject) => { - onOpen = (data: any) => resolve(data) - onClose = reject + const result = promiseTimeout(connectTimeoutMs, (resolve, reject) => { + onOpen = resolve + onClose = mapWebSocketError(reject) ws.on('frame', onOpen) ws.on('close', onClose) ws.on('error', onClose) @@ -121,11 +140,11 @@ export const makeSocket = ({ * @param json query that was sent * @param timeoutMs timeout after which the promise will reject */ - const waitForMessage = async(msgId: string, timeoutMs = defaultQueryTimeoutMs) => { + const waitForMessage = async(msgId: string, timeoutMs = defaultQueryTimeoutMs) => { let onRecv: (json) => void let onErr: (err) => void try { - const result = await promiseTimeout(timeoutMs, + const result = await promiseTimeout(timeoutMs, (resolve, reject) => { onRecv = resolve onErr = err => { @@ -137,7 +156,7 @@ export const makeSocket = ({ ws.off('error', onErr) }, ) - return result as any + return result } finally { ws.off(`TAG:${msgId}`, onRecv!) ws.off('close', onErr!) // if the socket closes, you'll never receive the message @@ -171,21 +190,21 @@ export const makeSocket = ({ } helloMsg = proto.HandshakeMessage.fromObject(helloMsg) - logger.info({ browser, helloMsg }, 'connected to WA Web') + logger.info({ browser, helloMsg }, 'connected to WA') const init = proto.HandshakeMessage.encode(helloMsg).finish() - const result = await awaitNextMessage(init) + const result = await awaitNextMessage(init) const handshake = proto.HandshakeMessage.decode(result) - logger.trace({ handshake }, 'handshake recv from WA Web') + logger.trace({ handshake }, 'handshake recv from WA') const keyEnc = noise.processHandshake(handshake, creds.noiseKey) - const config = { version, browser, syncFullHistory } - let node: proto.IClientPayload - if(!creds.me) { + if(config.mobile) { + node = generateMobileNode(config) + } else if(!creds.me) { node = generateRegistrationNode(creds, config) logger.info({ node }, 'not logged in, attempting registration...') } else { @@ -261,7 +280,7 @@ export const makeSocket = ({ const msgId = frame.attrs.id if(logger.level === 'trace') { - logger.trace({ msgId, fromMe: false, frame }, 'communication') + logger.trace(binaryNodeToString(frame), 'recv xml') } /* Check if this is a response to a message we sent */ @@ -306,7 +325,7 @@ export const makeSocket = ({ ws.removeAllListeners('open') ws.removeAllListeners('message') - if(ws.readyState !== ws.CLOSED && ws.readyState !== ws.CLOSING) { + if(!ws.isClosed && !ws.isClosing) { try { ws.close() } catch{ } @@ -323,11 +342,11 @@ export const makeSocket = ({ } const waitForSocketOpen = async() => { - if(ws.readyState === ws.OPEN) { + if(ws.isOpen) { return } - if(ws.readyState === ws.CLOSED || ws.readyState === ws.CLOSING) { + if(ws.isClosed || ws.isClosing) { throw new Boom('Connection Closed', { statusCode: DisconnectReason.connectionClosed }) } @@ -335,7 +354,7 @@ export const makeSocket = ({ let onClose: (err: Error) => void await new Promise((resolve, reject) => { onOpen = () => resolve(undefined) - onClose = reject + onClose = mapWebSocketError(reject) ws.on('open', onOpen) ws.on('close', onClose) ws.on('error', onClose) @@ -360,7 +379,7 @@ export const makeSocket = ({ */ if(diff > keepAliveIntervalMs + 5000) { end(new Boom('Connection was lost', { statusCode: DisconnectReason.connectionLost })) - } else if(ws.readyState === ws.OPEN) { + } else if(ws.isOpen) { // if its all good, send a keep alive request query( { @@ -433,12 +452,7 @@ export const makeSocket = ({ end(err) } }) - ws.on('error', error => end( - new Boom( - `WebSocket Error (${error.message})`, - { statusCode: getCodeFromWSError(error), data: error } - ) - )) + ws.on('error', mapWebSocketError(end)) ws.on('close', () => end(new Boom('Connection Terminated', { statusCode: DisconnectReason.connectionClosed }))) // the server terminated the connection ws.on('CB:xmlstreamend', () => end(new Boom('Connection Terminated by Server', { statusCode: DisconnectReason.connectionClosed }))) @@ -462,7 +476,7 @@ export const makeSocket = ({ let qrMs = qrTimeout || 60_000 // time to let a QR live const genPairQR = () => { - if(ws.readyState !== ws.OPEN) { + if(!ws.isOpen) { return } @@ -585,6 +599,7 @@ export const makeSocket = ({ ws, ev, authState: { creds, keys }, + signalRepository, get user() { return authState.creds.me }, @@ -604,4 +619,19 @@ export const makeSocket = ({ } } +/** + * map the websocket error to the right type + * so it can be retried by the caller + * */ +function mapWebSocketError(handler: (err: Error) => void) { + return (error: Error) => { + handler( + new Boom( + `WebSocket Error (${error?.message})`, + { statusCode: getCodeFromWSError(error), data: error } + ) + ) + } +} + export type Socket = ReturnType diff --git a/whatsapp_addon/Baileys/src/Store/make-in-memory-store.ts b/whatsapp_addon/Baileys/src/Store/make-in-memory-store.ts index f8d7a6b..8830911 100644 --- a/whatsapp_addon/Baileys/src/Store/make-in-memory-store.ts +++ b/whatsapp_addon/Baileys/src/Store/make-in-memory-store.ts @@ -1,43 +1,94 @@ -import type KeyedDB from '@adiwajshing/keyed-db' +import KeyedDB from '@adiwajshing/keyed-db' import type { Comparable } from '@adiwajshing/keyed-db/lib/Types' import type { Logger } from 'pino' import { proto } from '../../WAProto' import { DEFAULT_CONNECTION_CONFIG } from '../Defaults' import type makeMDSocket from '../Socket' import type { BaileysEventEmitter, Chat, ConnectionState, Contact, GroupMetadata, PresenceData, WAMessage, WAMessageCursor, WAMessageKey } from '../Types' +import { Label } from '../Types/Label' +import { LabelAssociation, LabelAssociationType, MessageLabelAssociation } from '../Types/LabelAssociation' import { toNumber, updateMessageWithReaction, updateMessageWithReceipt } from '../Utils' import { jidNormalizedUser } from '../WABinary' import makeOrderedDictionary from './make-ordered-dictionary' +import { ObjectRepository } from './object-repository' type WASocket = ReturnType export const waChatKey = (pin: boolean) => ({ key: (c: Chat) => (pin ? (c.pinned ? '1' : '0') : '') + (c.archived ? '0' : '1') + (c.conversationTimestamp ? c.conversationTimestamp.toString(16).padStart(8, '0') : '') + c.id, - compare: (k1: string, k2: string) => k2.localeCompare (k1) + compare: (k1: string, k2: string) => k2.localeCompare(k1) }) export const waMessageID = (m: WAMessage) => m.key.id || '' +export const waLabelAssociationKey: Comparable = { + key: (la: LabelAssociation) => (la.type === LabelAssociationType.Chat ? la.chatId + la.labelId : la.chatId + la.messageId + la.labelId), + compare: (k1: string, k2: string) => k2.localeCompare(k1) +} + export type BaileysInMemoryStoreConfig = { chatKey?: Comparable + labelAssociationKey?: Comparable logger?: Logger } const makeMessagesDictionary = () => makeOrderedDictionary(waMessageID) +const predefinedLabels = Object.freeze>({ + '0': { + id: '0', + name: 'New customer', + predefinedId: '0', + color: 0, + deleted: false + }, + '1': { + id: '1', + name: 'New order', + predefinedId: '1', + color: 1, + deleted: false + }, + '2': { + id: '2', + name: 'Pending payment', + predefinedId: '2', + color: 2, + deleted: false + }, + '3': { + id: '3', + name: 'Paid', + predefinedId: '3', + color: 3, + deleted: false + }, + '4': { + id: '4', + name: 'Order completed', + predefinedId: '4', + color: 4, + deleted: false + } +}) + export default ( - { logger: _logger, chatKey }: BaileysInMemoryStoreConfig + { logger: _logger, chatKey, labelAssociationKey }: BaileysInMemoryStoreConfig ) => { - const logger = _logger || DEFAULT_CONNECTION_CONFIG.logger.child({ stream: 'in-mem-store' }) + // const logger = _logger || DEFAULT_CONNECTION_CONFIG.logger.child({ stream: 'in-mem-store' }) chatKey = chatKey || waChatKey(true) - const KeyedDB = require('@adiwajshing/keyed-db').default as new (...args: any[]) => KeyedDB + labelAssociationKey = labelAssociationKey || waLabelAssociationKey + const logger = _logger || DEFAULT_CONNECTION_CONFIG.logger.child({ stream: 'in-mem-store' }) + // const KeyedDB = require('@adiwajshing/keyed-db').default as new (...args: any[]) => KeyedDB - const chats = new KeyedDB(chatKey, c => c.id) - const messages: { [_: string]: ReturnType } = { } - const contacts: { [_: string]: Contact } = { } - const groupMetadata: { [_: string]: GroupMetadata } = { } - const presences: { [id: string]: { [participant: string]: PresenceData } } = { } + const chats = new KeyedDB(chatKey, c => c.id) + const messages: { [_: string]: ReturnType } = {} + const contacts: { [_: string]: Contact } = {} + const groupMetadata: { [_: string]: GroupMetadata } = {} + const presences: { [id: string]: { [participant: string]: PresenceData } } = {} const state: ConnectionState = { connection: 'close' } + const labels = new ObjectRepository