From e35147bb90476d98be01a13505cabbbd175c29e5 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Fri, 17 Feb 2023 06:22:36 -0600 Subject: [PATCH] Inicial Pruebas --- .env | 3 +- adapter/index.js | 184 +- app.js | 1429 ++++++------- appBaileys.js | 48 + .../app-state-sync-key-AAAAACH+.json | 1 + .../app-state-sync-key-AAAAACH0.json | 1 + .../app-state-sync-key-AAAAACH1.json | 1 + .../app-state-sync-key-AAAAACH2.json | 1 + .../app-state-sync-key-AAAAACH3.json | 1 + .../app-state-sync-key-AAAAACH4.json | 1 + .../app-state-sync-key-AAAAACH5.json | 1 + .../app-state-sync-key-AAAAACH6.json | 1 + .../app-state-sync-key-AAAAACH7.json | 1 + .../app-state-sync-key-AAAAACH8.json | 1 + .../app-state-sync-key-AAAAACH9.json | 1 + .../app-state-sync-key-AAAAACHm.json | 1 + .../app-state-sync-key-AAAAACHn.json | 1 + .../app-state-sync-key-AAAAACHo.json | 1 + .../app-state-sync-key-AAAAACHp.json | 1 + .../app-state-sync-key-AAAAACHq.json | 1 + .../app-state-sync-key-AAAAACHr.json | 1 + .../app-state-sync-key-AAAAACHs.json | 1 + .../app-state-sync-key-AAAAACHt.json | 1 + .../app-state-sync-key-AAAAACHu.json | 1 + .../app-state-sync-key-AAAAACHv.json | 1 + .../app-state-sync-key-AAAAACHw.json | 1 + .../app-state-sync-key-AAAAACHx.json | 1 + .../app-state-sync-key-AAAAACHy.json | 1 + .../app-state-sync-key-AAAAACHz.json | 1 + ...app-state-sync-version-critical_block.json | 1 + ...ate-sync-version-critical_unblock_low.json | 1 + .../app-state-sync-version-regular.json | 1 + .../app-state-sync-version-regular_high.json | 1 + .../app-state-sync-version-regular_low.json | 1 + baileys_sessions/creds.json | 1 + baileys_sessions/pre-key-1.json | 1 + baileys_sessions/pre-key-10.json | 1 + baileys_sessions/pre-key-11.json | 1 + baileys_sessions/pre-key-12.json | 1 + baileys_sessions/pre-key-13.json | 1 + baileys_sessions/pre-key-14.json | 1 + baileys_sessions/pre-key-15.json | 1 + baileys_sessions/pre-key-16.json | 1 + baileys_sessions/pre-key-17.json | 1 + baileys_sessions/pre-key-18.json | 1 + baileys_sessions/pre-key-19.json | 1 + baileys_sessions/pre-key-2.json | 1 + baileys_sessions/pre-key-20.json | 1 + baileys_sessions/pre-key-21.json | 1 + baileys_sessions/pre-key-22.json | 1 + baileys_sessions/pre-key-23.json | 1 + baileys_sessions/pre-key-24.json | 1 + baileys_sessions/pre-key-25.json | 1 + baileys_sessions/pre-key-26.json | 1 + baileys_sessions/pre-key-27.json | 1 + baileys_sessions/pre-key-28.json | 1 + baileys_sessions/pre-key-29.json | 1 + baileys_sessions/pre-key-3.json | 1 + baileys_sessions/pre-key-30.json | 1 + baileys_sessions/pre-key-4.json | 1 + baileys_sessions/pre-key-5.json | 1 + baileys_sessions/pre-key-6.json | 1 + baileys_sessions/pre-key-7.json | 1 + baileys_sessions/pre-key-8.json | 1 + baileys_sessions/pre-key-9.json | 1 + ...ey-status@broadcast--5213511080612--0.json | 1 + ...ey-status@broadcast--5215527049036--0.json | 1 + baileys_sessions/session-5213511080612.0.json | 1 + .../session-5215516611480-26.0.json | 1 + .../session-5215516611480-27.0.json | 1 + .../session-5215516611480-28.0.json | 1 + .../session-5215516611480-29.0.json | 1 + .../session-5215516611480-30.0.json | 1 + baileys_sessions/session-5215516611480.0.json | 1 + baileys_sessions/session-5215527026728.0.json | 1 + baileys_sessions/session-5215527049036.0.json | 1 + .../session-5215554192439-64.0.json | 1 + baileys_sessions/session-5215554192439.0.json | 1 + bot.qr.png | Bin 0 -> 5560 bytes controllers/flows.js | 6 + controllers/handle.js | 23 +- controllers/save.js | 3 - controllers/send_baileys.js | 188 ++ controllers/{send.js => send_wwebjs.js} | 66 +- controllers/web.js | 2 +- flow/response.json | 14 +- implementaciones/extraFuncs.js | 336 +++ implementaciones/sheets.js | 43 +- initBailey.js | 125 ++ package-lock.json | 1875 ++++++++++++++++- package.json | 2 + provider/baileys.js | 133 ++ provider/download.js | 65 + provider/wwebjs.js | 74 + 94 files changed, 3580 insertions(+), 1113 deletions(-) create mode 100644 appBaileys.js create mode 100644 baileys_sessions/app-state-sync-key-AAAAACH+.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACH0.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACH1.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACH2.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACH3.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACH4.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACH5.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACH6.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACH7.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACH8.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACH9.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACHm.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACHn.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACHo.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACHp.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACHq.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACHr.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACHs.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACHt.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACHu.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACHv.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACHw.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACHx.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACHy.json create mode 100644 baileys_sessions/app-state-sync-key-AAAAACHz.json create mode 100644 baileys_sessions/app-state-sync-version-critical_block.json create mode 100644 baileys_sessions/app-state-sync-version-critical_unblock_low.json create mode 100644 baileys_sessions/app-state-sync-version-regular.json create mode 100644 baileys_sessions/app-state-sync-version-regular_high.json create mode 100644 baileys_sessions/app-state-sync-version-regular_low.json create mode 100644 baileys_sessions/creds.json create mode 100644 baileys_sessions/pre-key-1.json create mode 100644 baileys_sessions/pre-key-10.json create mode 100644 baileys_sessions/pre-key-11.json create mode 100644 baileys_sessions/pre-key-12.json create mode 100644 baileys_sessions/pre-key-13.json create mode 100644 baileys_sessions/pre-key-14.json create mode 100644 baileys_sessions/pre-key-15.json create mode 100644 baileys_sessions/pre-key-16.json create mode 100644 baileys_sessions/pre-key-17.json create mode 100644 baileys_sessions/pre-key-18.json create mode 100644 baileys_sessions/pre-key-19.json create mode 100644 baileys_sessions/pre-key-2.json create mode 100644 baileys_sessions/pre-key-20.json create mode 100644 baileys_sessions/pre-key-21.json create mode 100644 baileys_sessions/pre-key-22.json create mode 100644 baileys_sessions/pre-key-23.json create mode 100644 baileys_sessions/pre-key-24.json create mode 100644 baileys_sessions/pre-key-25.json create mode 100644 baileys_sessions/pre-key-26.json create mode 100644 baileys_sessions/pre-key-27.json create mode 100644 baileys_sessions/pre-key-28.json create mode 100644 baileys_sessions/pre-key-29.json create mode 100644 baileys_sessions/pre-key-3.json create mode 100644 baileys_sessions/pre-key-30.json create mode 100644 baileys_sessions/pre-key-4.json create mode 100644 baileys_sessions/pre-key-5.json create mode 100644 baileys_sessions/pre-key-6.json create mode 100644 baileys_sessions/pre-key-7.json create mode 100644 baileys_sessions/pre-key-8.json create mode 100644 baileys_sessions/pre-key-9.json create mode 100644 baileys_sessions/sender-key-status@broadcast--5213511080612--0.json create mode 100644 baileys_sessions/sender-key-status@broadcast--5215527049036--0.json create mode 100644 baileys_sessions/session-5213511080612.0.json create mode 100644 baileys_sessions/session-5215516611480-26.0.json create mode 100644 baileys_sessions/session-5215516611480-27.0.json create mode 100644 baileys_sessions/session-5215516611480-28.0.json create mode 100644 baileys_sessions/session-5215516611480-29.0.json create mode 100644 baileys_sessions/session-5215516611480-30.0.json create mode 100644 baileys_sessions/session-5215516611480.0.json create mode 100644 baileys_sessions/session-5215527026728.0.json create mode 100644 baileys_sessions/session-5215527049036.0.json create mode 100644 baileys_sessions/session-5215554192439-64.0.json create mode 100644 baileys_sessions/session-5215554192439.0.json create mode 100644 bot.qr.png create mode 100644 controllers/send_baileys.js rename controllers/{send.js => send_wwebjs.js} (71%) create mode 100644 implementaciones/extraFuncs.js create mode 100644 initBailey.js create mode 100644 provider/baileys.js create mode 100644 provider/download.js create mode 100644 provider/wwebjs.js diff --git a/.env b/.env index 346cec9..81114ea 100644 --- a/.env +++ b/.env @@ -12,4 +12,5 @@ SQL_DATABASE= KEEP_DIALOG_FLOW=false MULTI_DEVICE=true DIALOGFLOW_MEDIA_FOR_SLOT_FILLING=false -GDRIVE_FOLDER_ID= \ No newline at end of file +GDRIVE_FOLDER_ID= +PROVIDER=baileys \ No newline at end of file diff --git a/adapter/index.js b/adapter/index.js index 7c4c84b..51fb65d 100644 --- a/adapter/index.js +++ b/adapter/index.js @@ -3,7 +3,7 @@ const { saveMessageJson } = require('./jsonDb') const { getDataIa } = require('./diaglogflow') // const stepsInitial = require('../flow/initial.json') const stepsReponse = require('../flow/response.json') -const { isUndefined } = require('util'); +// const { isUndefined } = require('util'); var ultimoStep; //MOD by CHV - var pasoRequerido; //MOD by CHV - var _vamosA = ""; //MOD by CHV - @@ -11,7 +11,9 @@ var VA = ""; //MOD by CHV - var elNum; //MOD by CHV - var cumplePasoPrevio = []; //MOD by CHV - const resps = require('../flow/response.json'); //MOD by CHV - Agregamos para traer las respuestas. -const { appendFile } = require('fs') +// const { appendFile, existsSync } = require('fs') +// const { traeVariables } = require(`../provider/${provider}.js`) + /** * Regresa un arreglo de objetos como el stepsInitial original, que se generaba desde "initial.json". * Contiene el nombre del paso (key) y las palabras clave correspondientes (keywords). @@ -30,6 +32,12 @@ const getStepsInitial = () => { } const stepsInitial = getStepsInitial() +/** + * Revisa si el texto del mensaje dispara alguna regla (body == keyword) + * @param {*} message + * @param {*} num + * @returns + */ const get = (message, num) => new Promise((resolve, reject) => { //MOD by CHV - Agregamos parametro "num" para recibir el número de "app.js" // console.log(num) elNum = num //MOD by CHV - @@ -145,7 +153,6 @@ const get = (message, num) => new Promise((resolve, reject) => { //MOD by CHV - // ultimoStep = key; } const response = key || null - // if(key != null){remplazos(resps[key].replyMessage.join(''));} if(resps[key]!=undefined){VA = resps[key].goto}else{VA=null} cumplePasoRequerido(key); _vamosA = VA; @@ -223,7 +230,7 @@ const saveMessage = ( message, trigger, number, regla ) => new Promise( async (r break; case 'none': resolve( await saveMessageJson( message, trigger, number, regla) ) //MOD by CHV - Agregamos el parametro "regla" - // console.log("REGLA DESDE APP.JS="+regla) + console.log("Guardamos mensaje JSON=", message) break; default: resolve(true) @@ -231,7 +238,6 @@ const saveMessage = ( message, trigger, number, regla ) => new Promise( async (r } }) -module.exports = { get, reply, getIA, saveMessage, remplazos, stepsInitial, vamosA, traeUltimaVisita } //MOD by CHV - Agregamos "remplazos" y "stepsInitial" para usarlos en "apps.js" /** * Asigna el valor especificado a la variable pasoAnterior. @@ -239,156 +245,16 @@ module.exports = { get, reply, getIA, saveMessage, remplazos, stepsInitial, vamo * NO EJECUTA EL PASO DADO, solo espfecifica cual es el paso anterior para cuando una regla tiene el parametro "pasoRequerido". * @param {elNum} string - El numero del remitente. * @param {elPaso} string - El paso al que se va redirigir el flujo. - */ +*/ function vamosA (elNum, elPaso){ pasoAnterior[elNum] = elPaso; console.log("Asignamos pasoAnterior con " + elPaso, elNum) } - -/** - * Reemplaza texto en la respuesta con variables predefinidas. - */ -function remplazos(elTexto, extraInfo){ - if(elTexto == null){elTexto = '';} - const fs = require('fs'); - laLista = elTexto.toString().split(' '); - // console.log(laLista); - // console.log('============= remplazos ============'); - for (var i = 0; i < laLista.length; i++) { - // console.log('Revisamos: '+laLista[i]); - if (laLista[i].search('%dia_semana%')>-1){//Remplaza con el dia de hoy. - var dia = new Date().getDay(); - if(dia==0){diaSemana='domingo';} - else if(dia==1){diaSemana='lunes';} - else if(dia==2){diaSemana='martes';} - else if(dia==3){diaSemana='miercoles';} - else if(dia==4){diaSemana='jueves';} - else if(dia==5){diaSemana='viernes';} - else {diaSemana='sábado';} - elTexto = elTexto.replace('%dia_semana%', diaSemana); - } - if (laLista[i].search('%saludo%')>-1){//Remplaza con "Buenos dias, tardes o noches" dependiendo de la hora. - var hora = new Date().getHours() - if(hora>0 && hora < 12){saludo='Buenos días';} - else if(hora>11 && hora < 19){saludo='Buenas tardes';} - else {saludo='Buenas noches';} - elTexto = elTexto.toString().replace('%saludo%', saludo); - } - if (laLista[i].search('%hora24%')>-1){//Remplaza con la hora a 24 hrs. - var hora = new Date().getHours(); - if (hora.toString().length < 2){hora = "0" + hora;} - elTexto = elTexto.toString().replace('%hora24%', hora); - } - if (laLista[i].search('%hora12%')>-1){//Remplaza con la hora a 12 hrs. - var hora = new Date().getHours(); - var ampm = hora >= 12 ? 'pm' : 'am'; - hora = hora % 12; - hora = hora ? hora : 12; // the hour '0' should be '12' - if (hora.toString().length < 2){hora = "0" + hora;} - elTexto = elTexto.toString().replace('%hora12%', hora); - } - if (laLista[i].search('%minutos%')>-1){//Remplaza con los minutos de la hora actual. - var mins = new Date().getMinutes(); - if (mins.toString().length < 2){mins = "0" + mins;} - elTexto = elTexto.toString().replace('%minutos%', mins); - } - if (laLista[i].search('%ampm%')>-1){//Remplaza con am o pm. - var hours = new Date().getHours(); - var ampm = hours >= 12 ? 'pm' : 'am'; - elTexto = elTexto.toString().replace('%ampm%', ampm); - } - if (laLista[i].search('%rnd_')>-1){//Remplaza con opción al azar dentro de las especificadas. - var inicio = laLista[i].search('%rnd_'); - var final = laLista[i].indexOf("%", inicio+1); - // console.log(inicio, final); - var subStr = laLista[i].substring(inicio, final+1); - // console.log("El substring="+subStr); - var partes = subStr.toString().split('_'); - if(partes.length > 1){ - var opciones = partes[1].toString().substring(0,partes[1].toString().length-1).split(","); - var elRand = Math.floor(Math.random() * (opciones.length)); - if(elRand == opciones.length){elRand = elRand - 1;} - // console.log(opciones.length, elRand, opciones[elRand]); - elTexto = elTexto.toString().replace(subStr, opciones[elRand]); - } - else{ - elTexto = elTexto.toString().replace(subStr, ""); - } - } - if(laLista[i].search('%msjant_')>-1){//Remplaza con el mensaje anterior especificado. - var histlMsjs = {}; - // console.log("entramos a msjant") - // var hayHistorial = (chkFile(`${__dirname}/chats/`+from+".json")); - if(chkFile(`${__dirname}/../chats/`+elNum+".json")){ - let rawdata = fs.readFileSync(`./chats/${elNum}.json`); - let elHistorial0 = JSON.parse(rawdata); - elHistorial = elHistorial0["messages"]; - elHistorial = elHistorial.filter(x => x.message != "") //Quitamos mensajes en blanco. - var inicio = laLista[i].search('%msjant_'); - var final = laLista[i].indexOf("%", inicio+1); - var subStr = laLista[i].substring(inicio, final+1); - // console.log("Substr = |" + subStr + "|"); - var partes = subStr.toString().split('_'); - if(partes.length > 1){ - // console.log("Partes[1] = |" + partes[1] + "|"); - let posicion0 = partes[1].substring(0, partes[1].length-1) - // console.log("Posicion0 = |" + posicion0 + "|"); - posicion = ((posicion0*1) + 1); - // console.log("Posicion = " + posicion); - // console.log( elHistorial.length ); - // console.log((elHistorial.length*1)-posicion); - // console.log("Mensaje="+elHistorial[elHistorial.length - posicion]["message"]) - elTexto = elTexto.toString().replace(subStr, elHistorial[elHistorial.length - posicion]["message"].trim()); - } - // histlMsjs = elHistorial["messages"]; - // totalMsjs = histlMsjs.length-1; - // ultimoMensaje = histlMsjs[histlMsjs.length-1]; - // let mensajeAnterior = elHistorial["messages"][totalMsjs-1]; - // console.log("Mensajes:"+totalMsjs+", Ultimo:"+JSON.stringify(ultimoMensaje)); - // console.log("Anterior:"+JSON.stringify(mensajeAnterior)); - } - // return histlMsjs; - } - if (laLista[i].search('%body%')>-1){//Remplaza con el body del ctx. - const {theMsg} = extraInfo; - const { body } = theMsg - elTexto = elTexto.toString().replace('%body%', body); - } - if (laLista[i].search('%from%')>-1){//Remplaza con el from del ctx. - const {theMsg} = extraInfo; - const { from } = theMsg - elTexto = elTexto.toString().replace('%from%', from); - } - if (laLista[i].search('%solonumero%')>-1){//Remplaza con el from del ctx. - const {theMsg} = extraInfo; - const { from } = theMsg - elTexto = elTexto.toString().replace('%solonumero%', from.replace('@c.us', '')); - } - if (laLista[i].search('%nombre%')>-1){//Remplaza con el nombre del remitente. - if(typeof extraInfo !== undefined){ - const {theMsg} = extraInfo; - if(theMsg['_data']['notifyName'] !== undefined){ - elTexto = elTexto.toString().replace('%nombre%', theMsg['_data']['notifyName']); - } - } - } - if (laLista[i].search('%primer_nombre%')>-1){//Remplaza con el nombre del remitente. - if(typeof extraInfo !== undefined){ - const {theMsg} = extraInfo; - if(theMsg['_data']['notifyName'] !== undefined){ - elTexto = elTexto.toString().replace('%primer_nombre%', theMsg['_data']['notifyName'].split(' ')[0]); - } - } - } - } - // console.log("EL TEXTO="+elTexto); - return elTexto.trim() - } - + /** * Revisa si la regla especificada depende (es submenu) de otra regla, y cambia la variable "cumplePasoPrevio" a verdadero o falso. - */ - function cumplePasoRequerido(step){ +*/ +function cumplePasoRequerido(step){ //Traemos las respuestas para obtener el "pasoRequerido". if(resps[step]!=undefined){pasoRequerido=resps[step].pasoRequerido}else{pasoRequerido=null} if((pasoRequerido != null && pasoRequerido == ultimoStep)){ @@ -411,7 +277,7 @@ function remplazos(elTexto, extraInfo){ * Revisa que exista el archivo "chats/numero.json" * @param {*} theFile * @returns - */ +*/ function chkFile(theFile){ //MOD by CHV - Agregamos para revisar que exista el archivo "chats/numero.json" const fs = require('fs'); if (fs.existsSync(theFile)) { @@ -430,7 +296,7 @@ function chkFile(theFile){ //MOD by CHV - Agregamos para revisar que exista el a * datepart: 'y', 'm', 'w', 'd', 'h', 'n', 's' (default = n) * @param {*} file * @param {*} datepart - */ +*/ function traeUltimaVisita(file, datepart = 'n'){ // Node.js program to demonstrate the // fs.futimes() method @@ -460,7 +326,7 @@ function traeUltimaVisita(file, datepart = 'n'){ } else { return 0 } } - /** +/** * Regresa el tiempo transcurrido en (datepart) entre las fechas dadas. * datepart: 'y', 'm', 'w', 'd', 'h', 'n', 's' * @param {*} datepart @@ -472,10 +338,12 @@ function dateDiff(datepart, fromdate, todate){ datepart = datepart.toLowerCase(); var diff = todate - fromdate; var divideBy = { w:604800000, - d:86400000, - h:3600000, - n:60000, - s:1000 }; - + d:86400000, + h:3600000, + n:60000, + s:1000 + }; return Math.floor( diff/divideBy[datepart]); -} \ No newline at end of file +} + +module.exports = { get, reply, getIA, saveMessage, stepsInitial, vamosA, traeUltimaVisita } //MOD by CHV - Agregamos "stepsInitial" para usarlos en "apps.js" \ No newline at end of file diff --git a/app.js b/app.js index 7f1c31d..83b6419 100644 --- a/app.js +++ b/app.js @@ -2,897 +2,670 @@ * ⚡⚡⚡ DECLARAMOS LAS LIBRERIAS y CONSTANTES A USAR! ⚡⚡⚡ */ require('dotenv').config() +global.provider = process.env.PROVIDER || 'wwebjs'; const fs = require('fs'); -const express = require('express'); global.siguientePaso = [{"numero":"1", "va":"XXX"}]; //MOD by CHV - Agregamos para pasar el VAMOSA a "index.js" global.pasoAnterior = []; -const cors = require('cors') const axios = require('axios').default;//MOD by CHV - Agregamos para el get del "/URL" -const qrcode = require('qrcode-terminal'); -const { Client, LocalAuth, Buttons, List } = require('whatsapp-web.js'); -const mysqlConnection = require('./config/mysql') -// const { middlewareClient } = require('./middleware/client') -const { generateImage, cleanNumber, checkEnvFile, createClient, isValidNumber } = require('./controllers/handle') -const { connectionReady, connectionLost } = require('./controllers/connection') +const { List } = require('whatsapp-web.js'); +// const mysqlConnection = require('./config/mysql') +const { initBot, traeVariables } = require(`./provider/${provider}`) +const { isValidNumber } = require('./controllers/handle') const { saveMedia, saveMediaToGoogleDrive } = require('./controllers/save') const { getMessages, responseMessages, bothResponse, waitFor } = require('./controllers/flows') -const { sendMedia, sendMessage, lastTrigger, sendMessageButton, sendMessageList, readChat } = require('./controllers/send'); -const { remplazos, stepsInitial, vamosA, traeUltimaVisita } = require('./adapter/index');//MOD by CHV - Agregamos para utilizar remplazos y stepsInitial -// const { isUndefined } = require('util'); -// const { isSet } = require('util/types'); -const { Console } = require('console'); -// const { ClientRequest } = require('http'); +const { sendMedia, sendMessage, sendMessageButton, sendMessageList, readChat } = require(`./controllers/send_${provider}`); +const { stepsInitial, vamosA, traeUltimaVisita } = require('./adapter/index');//MOD by CHV - Agregamos para utilizar remplazos y stepsInitial +const { removeDiacritics, getRandomInt, remplazos, soloNumero, agregaVars } = require('./implementaciones/extraFuncs') const { guardaXLSDatos, leeXLSDatos} = require('./Excel'); -// const { ContextsClient } = require('@google-cloud/dialogflow'); const { ingresarDatos, leerDatos } = require('./implementaciones/sheets') -const app = express(); -app.use(cors()) -app.use(express.json()) const MULTI_DEVICE = process.env.MULTI_DEVICE || 'true'; -const server = require('http').Server(app) -const port = process.env.PORT || 3000 const delay = (ms) => new Promise((resolve) => setTimeout(resolve,ms)) -var client; +let client +let client0 var dialogflowFilter = false; -// var totalMsjs; //MOD by CHV - -// var vamosA = ""; //MOD by CHV - var newBody; //MOD by CHV - var nuevaRespuesta; //MOD by CHV - Se agrego para los remplazos var vars = [] -app.use('/', require('./routes/web')) let blackList = ['34692936038', '34678310819', '34660962689', '34649145761','34630283553','34648827637','34630255646','14178973313'] /** * Escuchamos cuando entre un mensaje */ -listenMessage = () => client.on('message', async msg => { - const { from, body, hasMedia } = msg; - if (vars[from] === undefined) vars[from] = [] - console.log("+++++++++++++++++++++++++++++++++++++ INICIO +++++++++++++++++++++++++++++++++++++++"); - client.theMsg = msg; - console.log("HORA:"+new Date().toLocaleTimeString()+" FROM:"+from+", BODY:"+body+", HASMEDIA:"+hasMedia+", DEVICETYPE:"+client.theMsg?.deviceType); - newBody = removeDiacritics(body) //MOD by CHV - Agregamos para quitar acentos +function listenMessage(client){ + if(provider == 'wwebjs'){ client0 = client; messageEV = 'message' } // Usamos WWebJS. + else { client0 = client.ev; messageEV = 'messages.upsert' } // Usamos Baileys. + client0.on(messageEV, async msg => { + const { from, body, name, hasMedia } = traeVariables(msg); + if(provider == 'wwebjs'){ msg.type = 'notify' } + if (vars[from] === undefined) vars[from] = [] + // Este bug lo reporto Lucas Aldeco Brescia para evitar que se publiquen estados + if (from === 'status@broadcast' || msg.type !== 'notify') { console.log("########### status@broadcast o tipo mensaje = ", msg.type); return } + console.log("+++++++++++++++++++++++++++++++++++++ INICIO +++++++++++++++++++++++++++++++++++++++"); + console.log("HORA:"+new Date().toLocaleTimeString()+" FROM:"+from+", BODY:"+body+", HASMEDIA:"+hasMedia+", DEVICETYPE:"+client.theMsg?.deviceType); + // * Numero NO válido. + if(!isValidNumber(from)){ console.log("Número invalido"); return } + const number = soloNumero(from) + newBody = removeDiacritics(body) //MOD by CHV - Agregamos para quitar acentos + message = newBody.toLowerCase(); + // * Blacklist, los telefonos incluidos en este arreglo son ignorados por el bot. + if (blackList.includes(number)){ console.log('BlackListed'); return } + var { key } = stepsInitial.find(k => k.keywords.includes(message)) || { key: null }//MOD by CHV - Se agrega para obtener KEY + await readChat(number, message, null , key) //MOD by CHV - Agregamos key/regla para guardarla en "chats/numero.json" + // client.theMsg = msg; + // client.theMsg['body'] = body + // client.theMsg['from'] = from + // client.theMsg['hasMedia'] = hasMedia + // client.theMsg['key'] = key + // client.theMsg['name'] = name + // client.theMsg['numero'] = number + client = agregaVars(client, msg, traeVariables(msg)) + client.theMsg['key'] = key - // const uv = traeUltimaVisita(from, 's') - // console.log("ultVista=", uv) - - if(!isValidNumber(from)){ - return - } - // Este bug lo reporto Lucas Aldeco Brescia para evitar que se publiquen estados - if (from === 'status@broadcast') { return } - /** - * Blacklist, los telefonos incluidos en este arreglo son ignorados por el bot. - */ - if (blackList.includes(from.replace("@c.us",""))) { - console.log('BlackListed: ',blackList.includes(from.replace("@c.us",""))) - return - } - message = newBody.toLowerCase(); - const number = cleanNumber(from) - client.theMsg['numero'] = number - - - // Guardamos el mensaje en Google Sheets - ingresarDatos(from, body) - - // console.log(stepsInitial) - var { key } = stepsInitial.find(k => k.keywords.includes(message)) || { key: null }//MOD by CHV - Se agrega para obtener KEY - await readChat(number, message, null , key) //MOD by CHV - Agregamos key/regla para guardarla en "chats/numero.json" - client.theMsg['key'] = key - - /** - * Guardamos el archivo multimedia que envia - */ - if (process.env.SAVE_MEDIA === 'true' && hasMedia) { - const media = await msg.downloadMedia(); - saveMedia(media); - } - - /** - * Si estas usando dialogflow solo manejamos una funcion todo es IA - */ - if (process.env.DATABASE === 'dialogflow') { - if (process.env.DIALOGFLOW_MEDIA_FOR_SLOT_FILLING === 'true' && dialogflowFilter) { - waitFor(_ => hasMedia, 30000) - .then(async _ => { - if (hasMedia) { - const media = await msg.downloadMedia(); - message = await saveMediaToGoogleDrive(media); - const response = await bothResponse(message.substring(256, -1), number); - await sendMessage(client, from, response.replyMessage); - } - return - }); - dialogflowFilter = false; - } - if (!message.length) return; - const response = await bothResponse(message.substring(256, -1), number); - await sendMessage(client, from, response.replyMessage); - if (response.actions) { - await sendMessageButton(client, from, null, response.actions); - return - } - if (response.media) { - sendMedia(client, from, response.media); - } - return - } - - if(body=='/listas'){ - // Asi se manda directamente con el ciente de whatsapp-web.js "client.sendMessage(from, productList)" - const productList = new List( - "Here's our list of products at 50% off", - "View all products", - [ - { - title: "Products list", - rows: [ - { id: "apple", title: "Apple" }, - { id: "mango", title: "Mango" }, - { id: "banana", title: "Banana" }, - ], - }, - ], - "Please select a product" - ); - console.log('##################################################################################################') - console.log("****************** productList ******************") - console.log(productList) - client.sendMessage(from, productList); - // Asi se manda directamente con la funcion del bot. "sendMessageList(client, from, null, lista)" - // let sections = [ - // { title:'sectionTitle', - // rows:[ - // {id:'ListItem1', title: 'title1'}, - // {id:'ListItem2', title:'title2'} - // ] - // } - // ]; - // let lista = new List('List body','btnText',sections,'Title','footer'); - await sendMessageList(client, from, null, productList); //sendMessageList recibe el arreglo CON nombres, tal cual se usa en "response.json" - } - - /** - * Ver si viene de un paso anterior - * Aqui podemos ir agregando más pasos - * a tu gusto! - */ - // const lastStep = await lastTrigger(from) || null; - // client.theMsg['lastStep'] = lastStep - // // console.log("LAST STEP="+lastStep+", FROM:"+from); - // if (lastStep) { - // const response = await responseMessages(lastStep) - // client.theMsg['trigger'] = response.trigger - // console.log("CLIENT="+client+", FROM:"+from+", REPLYMESSAGE:"+response.replyMessage); - // // await sendMessage(client, from, response.replyMessage, lastStep); // Mod by CHV - Para mandar varios mensajes en el mismo response, se cambio esta linea por el forEach de abajo. - // response.replyMessage.forEach( async messages => { - // var thisMsg = messages.mensaje - // if(Array.isArray(messages.mensaje)){thisMsg = messages.mensaje.join('\n')} - // await sendMessage(client, from, remplazos(thisMsg, client), response.trigger); - // }) - // } - - /** - * Respondemos al primero paso si encuentra palabras clave - */ - const step = await getMessages(message, from); - client.theMsg['step'] = step - if (step) { - // console.log("Entramos a STEP") - const response = await responseMessages(step); - client.theMsg['trigger'] = response.trigger - var resps = require('./flow/response.json'); - nuevaRespuesta = remplazos(resps[step].replyMessage.join(''), client); - client.theMsg['replyMessage'] = nuevaRespuesta - // var pasoRequerido = resps[step].pasoRequerido; - if(body=='traeXLS'){ - const rows = await leeXLSDatos('x') - console.log("RESULTADOS:") - function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); - } - async function retardo() { - for (sp=1;sp setTimeout(resolve, ms)); - } - async function retardo() { - for (sp=0;sp hasMedia, 30000) + .then(async _ => { + if (hasMedia) { + const media = await msg.downloadMedia(); + message = await saveMediaToGoogleDrive(media); + const response = await bothResponse(message.substring(256, -1), number); + await sendMessage(client, from, response.replyMessage); } - ], - "Categorías", - "Selecciona" - ) - console.log(productList) - client.sendMessage(from, productList) - // console.log(ctx) - // sendMessagList(client, from, null, productList); - return "1" - }).catch(function (error) { - console.log(error); - return error - }); - } - /** - * Llama el API para traer subcategorias de Guna. - * @param {*} ctx El objeto del mensaje. - */ - async function getGunaSubtipo(ctx) { - let par1 = ctx.theMsg.body - vars[from]['tipo'] = ctx.theMsg.body - // console.log("V_TIPO=", from, vars[from]['tipo']) - let theUrl = `http://localhost:8888/dbrquery?j={"query":"selectSubtipoFerreroMty","exec":"ExecuteQuery","params":{"par1":"${vars[from]['tipo']}"}}` - const RES = await axios.get(theUrl).then(function (response) { - if( response.data.respuesta.length == 0 ) { - console.log("No hay resultados",from) - vamosA(from, "gunaCats") - client.sendMessage(from, "Esa categoría *no existe*, por favor revisa y vuelve a intentar.") - } - let elMensaje = "Gracias,\nAhora una subcategoría:\n\n" - let lasOpciones = [] - for(reg=0;reg -1){ // Producto con formato correcto. - vars[from]['ultimoProd'] = elProd - elProd = elProd.substring(0, elProd.indexOf(' $')).trim().toLowerCase() - var precio = ctx.theMsg.body.substring(ctx.theMsg.body.indexOf(' $')+2) - console.log("precio",precio) - precio = precio.substring(0, precio.indexOf(',')) - console.log("precio",precio) - vars[from]['prods'][elProd] = {"cant":0, "precio":precio} - console.log("EL_PROD=", elProd) - console.log(vars[from]['prods']) - elMensaje = ctx.theMsg.replyMessage - let re = ctx.theMsg.body.trim().toLowerCase() - elMensaje = elMensaje.replace(re, elProd.toLowerCase()) + return + }); + dialogflowFilter = false; } - else{ // Producto SIN precio. - elMensaje = "El producto que seleccionaste es *incorrecto*, por favor intenta de nuevo." - sendMessage(client, from, elMensaje, ctx.theMsg.trigger, ctx.theMsg.step); - await delay(500) - vars[from]['recompra'] = true - getGunaProds() - vamosA(from, "gunaProds") + if (!message.length) return; + const response = await bothResponse(message.substring(256, -1), number); + await sendMessage(client, from, response.replyMessage); + if (response.actions) { + await sendMessageButton(client, from, null, response.actions); return } - sendMessage(client, from, elMensaje, ctx.theMsg.trigger, ctx.theMsg.step); + if (response.media) { + sendMedia(client, from, response.media); + } return } + if(body == "/botones"){ + // Asi se mandan botones **directamente** con el cliente de whatsapp-web.js "client.sendMessage(from, productList)" + const buttonMessage = [ + {"body":"boton 1"}, + {"body":"boton 2"} + ] + const ab = { + "title":"¿Que te interesa ver?", + "message":"%saludo%\nHoy es %dia_semana%.\nSon las %hora24%:%minutos% hrs.\nSon las %hora12%:%minutos% %ampm%\n*Palabra random:* %rnd_arbol,burro,cabra,dinosaurio,elefante,fuego,gorila%\n*Emoji random:* %rnd_👍🏽,😁,🤣,🤔,🤦🏽‍♂️,🙄,😎%\n*Número random:* %rnd_1,2,3,4,5,6,7%\n", + "footer":"Gracias", + "buttons":[ + {"body":"Cursos"}, + {"body":"Youtube"}, + {"body":"Telegram"} + ] + } + console.log("Enviamos botones = ", from, ab) + sendMessageButton(client, from, "texto", ab) + } + + if(body=='/listas'){ + // Asi se mandan **listas** directamente con el ciente de whatsapp-web.js "client.sendMessage(from, productList)" + const productList = new List( + "Here's our list of products at 50% off", + "View all products", + [ + { + title: "Products list", + rows: [ + { id: "apple", title: "Apple" }, + { id: "mango", title: "Mango" }, + { id: "banana", title: "Banana" }, + ], + }, + ], + "Please select a product" + ); + console.log('##################################################################################################') + console.log("****************** productList ******************") + console.log(productList) + client.sendMessage(from, productList); + // Asi se manda directamente con la funcion del bot. "sendMessageList(client, from, null, lista)" + // let sections = [ + // { title:'sectionTitle', + // rows:[ + // {id:'ListItem1', title: 'title1'}, + // {id:'ListItem2', title:'title2'} + // ] + // } + // ]; + // let lista = new List('List body','btnText',sections,'Title','footer'); + await sendMessageList(client, from, null, productList); //sendMessageList recibe el arreglo CON nombres, tal cual se usa en "response.json" + } + /** - * Tomamos la cantidad del producto seleccionado. - * @param {*} ctx El objeto del mensaje. - */ - async function prodCantidad(ctx) { - // console.log("Entramos a prodCantidad") - let laCant = ctx.theMsg.body.trim() - const reg = new RegExp(/^\d+$/) - let elProd = vars[from]['ultimoProd'].toLowerCase() - elProd = elProd.substring(0, elProd.indexOf(' $')).trim() - console.log("SOLO NUMS |" + laCant + "|", reg.test(laCant)) - if(reg.test(laCant)){ - console.log(vars) - console.log("Recibimos cant = " + laCant) - console.log("EL_PROD=", vars[from]['prods'][elProd]) - console.log("precio=", vars[from]['prods'][elProd].precio) - vars[from]['prods'][elProd] = {"cant":laCant, "precio":vars[from]['prods'][elProd]['precio']} - var elMensaje = "" - const prods = Object.keys(vars[from]['prods']); - var total = 0 - prods.forEach((prod, index) => { - if( vars[from]['prods'][prod] !== undefined && prod[0] !== undefined ){ - elMensaje = elMensaje + `${vars[from]['prods'][prod].cant} - ${prod[0].toUpperCase() + prod.substring(1)}\n` - console.log("cant y precio=", vars[from]['prods'][prod].cant, vars[from]['prods'][prod].precio) - if(reg.test(vars[from]['prods'][prod].cant) && vars[from]['prods'][prod].precio != ""){ - total = total + (vars[from]['prods'][prod].cant * vars[from]['prods'][prod].precio) - } - } - console.log(prod, vars[from]['prods'][prod]); - }); - let pesos = Intl.NumberFormat('en-US') - elMensaje = elMensaje + "\n*Total*: $" + pesos.format(total) - elMensaje = elMensaje + "\n¿Quieres agregar mas productos a tu orden?" - var bts = { - "title":"Tu orden", - "message":elMensaje, - "buttons":[ - {"body":"➕ Agregar productos"}, - {"body":"⬅️ Cambiar categoría"}, - {"body":"✖️ Terminar"} - ] + * Si el texto del mensaje dispara alguna regla, entramos a esta condición. + */ + const step = await getMessages(message, from); + client.theMsg['step'] = step + if (step) { + // console.log("Entramos a STEP") + const response = await responseMessages(step); + client.theMsg['trigger'] = response.trigger + var resps = require('./flow/response.json'); + nuevaRespuesta = remplazos(resps[step].replyMessage.join(''), client); + client.theMsg['replyMessage'] = nuevaRespuesta + + /** + * Trae información desde un archivo de excel y le manda a cada numero un mensaje. (Envío masivo) + */ + if(body=='traeXLS'){ + const rows = await leeXLSDatos('x') + console.log("RESULTADOS:") + function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)) } + async function retardo() { + for (sp=1;sp setTimeout(resolve, ms)); + } + async function retardo() { + for (sp=0;sp -1){ // Producto con formato correcto. + vars[from]['ultimoProd'] = elProd + elProd = elProd.substring(0, elProd.indexOf(' $')).trim().toLowerCase() + var precio = ctx.theMsg.body.substring(ctx.theMsg.body.indexOf(' $')+2) + // console.log("precio",precio) + precio = precio.substring(0, precio.indexOf(',')) + // console.log("precio",precio) + vars[from]['prods'][elProd] = {"cant":0, "precio":precio} + // console.log("EL_PROD=", elProd) + // console.log(vars[from]['prods']) + elMensaje = ctx.theMsg.replyMessage + let re = ctx.theMsg.body.trim().toLowerCase() + elMensaje = elMensaje.replace(re, elProd.toLowerCase()) + } + else{ // Producto SIN precio. + elMensaje = "El producto que seleccionaste es *incorrecto*, por favor intenta de nuevo." + sendMessage(client, from, elMensaje, ctx.theMsg.trigger, ctx.theMsg.step); + await delay(500) + vars[from]['recompra'] = true + getGunaProds() + vamosA(from, "gunaProds") + return + } + sendMessage(client, from, elMensaje, ctx.theMsg.trigger, ctx.theMsg.step); + return + } + + /** + * Tomamos la cantidad del producto seleccionado. + * @param {*} ctx El objeto del mensaje. + */ + async function prodCantidad(ctx) { + // console.log("Entramos a prodCantidad") + let laCant = ctx.theMsg.body.trim() + const reg = new RegExp(/^\d+$/) + let elProd = vars[from]['ultimoProd'].toLowerCase() + elProd = elProd.substring(0, elProd.indexOf(' $')).trim() + console.log("SOLO NUMS |" + laCant + "|", reg.test(laCant)) + if(reg.test(laCant)){ + // console.log(vars) + // console.log("Recibimos cant = " + laCant) + // console.log("EL_PROD=", vars[from]['prods'][elProd]) + // console.log("precio=", vars[from]['prods'][elProd].precio) + vars[from]['prods'][elProd] = {"cant":laCant, "precio":vars[from]['prods'][elProd]['precio']} + var elMensaje = "" + const prods = Object.keys(vars[from]['prods']); + var total = 0 + prods.forEach((prod, index) => { + if( vars[from]['prods'][prod] !== undefined && prod[0] !== undefined ){ + elMensaje = elMensaje + `${vars[from]['prods'][prod].cant} - ${prod[0].toUpperCase() + prod.substring(1)}\n` + console.log("cant y precio=", vars[from]['prods'][prod].cant, vars[from]['prods'][prod].precio) + if(reg.test(vars[from]['prods'][prod].cant) && vars[from]['prods'][prod].precio != ""){ + total = total + (vars[from]['prods'][prod].cant * vars[from]['prods'][prod].precio) + } + } + console.log(prod, vars[from]['prods'][prod]); + }); + let pesos = Intl.NumberFormat('en-US') + elMensaje = elMensaje + "\n*Total*: $" + pesos.format(total) + elMensaje = elMensaje + "\n¿Quieres agregar mas productos a tu orden?" + var bts = { + "title":"Tu orden", + "message":elMensaje, + "buttons":[ + {"body":"➕ Agregar productos"}, + {"body":"⬅️ Cambiar categoría"}, + {"body":"✖️ Terminar"} + ] + } + sendMessageButton(client, from, "xxx", bts) } else{ - sendMessage(client, from, "El usuario *"+response.data['params']['par1']+"* no *existe* o esta dado de *baja*, por favor revisarlo y volver a intentar.", response.trigger, step); + console.log("NO SOLO NUMS") + vamosA(from, "gunaProdsAgrega") + sendMessage(client, from, "Por favor escribe 👉🏽 *solo* 👈🏽 el número.", response.trigger, step); } - return response - }).catch(function (error) { - console.log(error); - return error - }); - } - - /** - * Llama el API para desbloquear el usuario. - * - * @param {*} theURL El URL para llamar al API - * @param {*} step - */ - async function desbloqueaUsuario2(theUrl, step) { - // const {from} = client.theMsg - // const RES = await axios.get(theUrl).then(function (response) { - // const { AffectedRows } = response.data['respuesta'][0] - // console.log('AFFECTED_ROWS = ', AffectedRows) - // if(response.data['respuesta'][0]['AffectedRows']=="1"){ - // sendMessage(client, from, "Listo, usuario *"+response.data['params']['par1']+"* desbloqueado, por favor *cerrar navegadores* y reingresar.", response.trigger, step); - // } - // else{ - // sendMessage(client, from, "El usuario *"+response.data['params']['par1']+"* no *existe* o esta dado de *baja*, por favor revisarlo y volver a intentar.", response.trigger, step); - // } - // return response - // }).catch(function (error) { - // console.log(error); - // return error - // }); - } + return "1" + } + + /** + * Mandamos nuevamente la lista de productos. + * @param {*} ctx El objeto del mensaje. + */ + async function comprarMas(ctx) { + console.log("Entramos a comprarMas") + vars[from]['recompra'] = true + vamosA(from, "gunaProds") + await getGunaProds(ctx) + vars[from]['recompra'] = undefined + return "1" + } + + /** + * Mandamos nuevamente la lista de categorías. + * @param {*} ctx El objeto del mensaje. + */ + async function terminaCompra(ctx) { + console.log("Entramos a terminaCompra") + vars[from] = [] + sendMessage(client, from, "!Gracias por tu compra, regresa pronto!", response.trigger, step); + return + } - // #################################################################################################################### - // ############################## INICIAN FUNCIONES PARA MANEJO DE PARAMETROS ##################################### - // ############################## EN EL RESPONSE.JSON ##################################### - // #################################################################################################################### + /** + * Llama el API para desbloquear un usuario. + * @param {*} ctx El objeto del mensaje. + */ + async function desbloqueaUsuario(ctx) { + let par1 = ctx.theMsg.body + let theUrl = `http://localhost:8888/dbrquery?j={"query":"update_usuario_guna_nobajas","exec":"ExecuteCommand","params":{"par1":"${par1}", "par2":"XXPARAM2XX", "par3":"XXPARAM3XX"}}` + const RES = await axios.get(theUrl).then(function (response) { + const { AffectedRows } = response.data['respuesta'][0] + console.log('AFFECTED_ROWS = ', AffectedRows) + if(response.data['respuesta'][0]['AffectedRows']=="1"){ + sendMessage(client, from, "Listo, usuario *"+response.data['params']['par1']+"* desbloqueado, por favor *cerrar navegadores* y reingresar.", response.trigger, step); + } + else{ + sendMessage(client, from, "El usuario *"+response.data['params']['par1']+"* no *existe* o esta dado de *baja*, por favor revisarlo y volver a intentar.", response.trigger, step); + } + return response + }).catch(function (error) { + console.log(error); + return error + }); + } + + /** + * Llama el API para desbloquear el usuario. + * + * @param {*} theURL El URL para llamar al API + * @param {*} step + */ + async function desbloqueaUsuario2(theUrl, step) { + // const {from} = client.theMsg + // const RES = await axios.get(theUrl).then(function (response) { + // const { AffectedRows } = response.data['respuesta'][0] + // console.log('AFFECTED_ROWS = ', AffectedRows) + // if(response.data['respuesta'][0]['AffectedRows']=="1"){ + // sendMessage(client, from, "Listo, usuario *"+response.data['params']['par1']+"* desbloqueado, por favor *cerrar navegadores* y reingresar.", response.trigger, step); + // } + // else{ + // sendMessage(client, from, "El usuario *"+response.data['params']['par1']+"* no *existe* o esta dado de *baja*, por favor revisarlo y volver a intentar.", response.trigger, step); + // } + // return response + // }).catch(function (error) { + // console.log(error); + // return error + // }); + } - /* - * Si quieres ejecutar una función. - */ - if(response.hasOwnProperty('funcion')){ - console.log("############# Encontramos función, ejecutamos la función '" + response.funcion + "'") - laFuncion = response.funcion + "(client)" - eval(laFuncion) - // return - } - if(response.hasOwnProperty('url') && response.hasOwnProperty('values')){ - // let theURL = response.url; - // let url0 = theURL - // let vals = response.values // Traemos los valores desde el response.json - // let j = theURL.split('j=')[1] // Traemos el JSON del URL. - // let j2 = JSON.parse(j) - // let cont = 0 - // const { params } = j2 // Traemos los parametros del JSON. - // console.log('PARAMS=', params, params['par1'], Object.keys(params).length) - // let url2 - // for (const par in params) { // Remplazamos los valores en lo parametros. - // console.log(`${par}: ${params[par]}, ${cont}: ${remplazos(vals[cont], client)}`); - // if(cont==0){url2=url0.replace(params[par], remplazos(vals[cont], client));} - // else {url2=url2.replace(params[par], remplazos(vals[cont], client));} - // cont++ - // } - // // console.log('THE_URL=', url2) - // desbloqueaUsuario2(url2, step) //Llamamos al API para desbloquear el usuario. - // return - } - /** - * Si quieres enviar imagen. - */ - if (!response.delay && response.media) { - // console.log("++++++++++++++++++++++++++++ SEND MEDIA NO DELAY +++++++++++++++++++++++++++++++++++"); - sendMedia(client, from, response.media, response.trigger); - } - /** - * Si quieres enviar imagen con retraso. - */ - if (response.delay && response.media) { - setTimeout(() => { - // console.log("++++++++++++++++++++++++++++ SEND MEDIA AND DELAY +++++++++++++++++++++++++++++++++++"); - sendMedia(client, from, response.media, response.trigger); - }, response.delay) - } - /** - * Si quieres enviar mensaje con retraso. - */ - if (response.delay){ - // await sendMessage(client, from, nuevaRespuesta, response.trigger, step); // Mod by CHV - Para mandar varios mensajes en el mismo response, se cambio esta linea por el forEach de abajo. - setTimeout(() => { + // #################################################################################################################### + // ############################## INICIAN FUNCIONES PARA MANEJO DE PARAMETROS ##################################### + // ############################## EN EL RESPONSE.JSON ##################################### + // #################################################################################################################### + + /* + * Si quieres ejecutar una función. + */ + if(response.hasOwnProperty('funcion')){ + console.log("############# Encontramos función, ejecutamos la función '" + response.funcion + "'") + laFuncion = response.funcion + "(client)" + eval(laFuncion) + } + if(response.hasOwnProperty('url') && response.hasOwnProperty('values')){ + // let theURL = response.url; + // let url0 = theURL + // let vals = response.values // Traemos los valores desde el response.json + // let j = theURL.split('j=')[1] // Traemos el JSON del URL. + // let j2 = JSON.parse(j) + // let cont = 0 + // const { params } = j2 // Traemos los parametros del JSON. + // console.log('PARAMS=', params, params['par1'], Object.keys(params).length) + // let url2 + // for (const par in params) { // Remplazamos los valores en lo parametros. + // console.log(`${par}: ${params[par]}, ${cont}: ${remplazos(vals[cont], client)}`); + // if(cont==0){url2=url0.replace(params[par], remplazos(vals[cont], client));} + // else {url2=url2.replace(params[par], remplazos(vals[cont], client));} + // cont++ + // } + // // console.log('THE_URL=', url2) + // desbloqueaUsuario2(url2, step) //Llamamos al API para desbloquear el usuario. + // return + } + /** + * Si quieres enviar imagen. + */ + if (!response.delay && response.media) { + // console.log("++++++++++++++++++++++++++++ SEND MEDIA NO DELAY +++++++++++++++++++++++++++++++++++"); + await sendMedia(client, from, response.media, response.trigger); + console.log("Enviamos imagen") + await delay(500) + } + /** + * Si quieres enviar imagen con retraso. + */ + if (response.delay && response.media) { + setTimeout(() => { + // console.log("++++++++++++++++++++++++++++ SEND MEDIA AND DELAY +++++++++++++++++++++++++++++++++++"); + sendMedia(client, from, response.media, response.trigger); + }, response.delay) + } + /** + * Si quieres enviar mensaje con retraso. + */ + if (response.delay){ + // await sendMessage(client, from, nuevaRespuesta, response.trigger, step); // Mod by CHV - Para mandar varios mensajes en el mismo response, se cambio esta linea por el forEach de abajo. + setTimeout(() => { + response.replyMessage.forEach( async messages => { + var thisMsg = messages.mensaje + if(Array.isArray(messages.mensaje)){thisMsg = messages.mensaje.join('\n')} + await sendMessage(client, from, remplazos(thisMsg, client), response.trigger); + }) + }, response.delay) + await delay(500) + } + else + /** + * Si quieres enviar un mensaje. + */ + { // await sendMessage(client, from, nuevaRespuesta, response.trigger, step); // Mod by CHV - Para mandar varios mensajes en el mismo response, se cambio esta linea por el forEach de abajo. response.replyMessage.forEach( async messages => { var thisMsg = messages.mensaje if(Array.isArray(messages.mensaje)){thisMsg = messages.mensaje.join('\n')} - await sendMessage(client, from, remplazos(thisMsg, client), response.trigger); + console.log("Mensaje=", thisMsg) + if(thisMsg !== undefined) await sendMessage(client, from, remplazos(thisMsg, client), response.trigger); }) - }, response.delay) + await delay(500) + } + /** + * Si quieres enviar botones o listas + */ + if(response.hasOwnProperty('actions')){ + const { actions } = response; + // console.log("++++++++++++++++++++++++++++ SEND MESG BUTTON/LIST +++++++++++++++++++++++++++++++++++"); + if(actions['sections'] === undefined){ //Botones + console.log("Botones") + await sendMessageButton(client, from, null, actions); + } + else { //Listas + console.log("Listas") + await sendMessageList(client, from, null, actions); + } + } + return } - else + /** - * Si quieres enviar un mensaje. - */ - { - // await sendMessage(client, from, nuevaRespuesta, response.trigger, step); // Mod by CHV - Para mandar varios mensajes en el mismo response, se cambio esta linea por el forEach de abajo. + * Si quieres tener un mensaje por defecto + */ + if (process.env.DEFAULT_MESSAGE === 'true') { + const response = await responseMessages('DEFAULT') + // await sendMessage(client, from, response.replyMessage, response.trigger); // Mod by CHV - Para mandar varios mensajes en el mismo response, se cambio esta linea por el forEach de abajo. response.replyMessage.forEach( async messages => { var thisMsg = messages.mensaje if(Array.isArray(messages.mensaje)){thisMsg = messages.mensaje.join('\n')} await sendMessage(client, from, remplazos(thisMsg, client), response.trigger); }) - } - /** - * Si quieres enviar botones o listas - */ - if(response.hasOwnProperty('actions')){ - const { actions } = response; - // console.log("++++++++++++++++++++++++++++ SEND MESG BUTTON/LIST +++++++++++++++++++++++++++++++++++"); - if(actions['sections'] === undefined){ //Botones - // console.log("Botones") - await sendMessageButton(client, from, null, actions); - } - else { //Listas - // console.log("Listas") - await sendMessageList(client, from, null, actions); - } - } - return - } - /** - * Si quieres tener un mensaje por defecto - */ - if (process.env.DEFAULT_MESSAGE === 'true') { - const response = await responseMessages('DEFAULT') - // await sendMessage(client, from, response.replyMessage, response.trigger); // Mod by CHV - Para mandar varios mensajes en el mismo response, se cambio esta linea por el forEach de abajo. - response.replyMessage.forEach( async messages => { - var thisMsg = messages.mensaje - if(Array.isArray(messages.mensaje)){thisMsg = messages.mensaje.join('\n')} - await sendMessage(client, from, remplazos(thisMsg, client), response.trigger); - }) - - /** - * Si quieres enviar botones - */ - // if(response.hasOwnProperty('actions')){ - // const { actions } = response; - // if(actions['sections'] === undefined){ //Botones - // console.log("Botones") - // await sendMessageButton(client, from, null, actions); - // } - // else{ //Listas - // console.log("Listas") - // await sendMessageList(client, from, null, actions); - // } - // } - return - } - }); + /** + * Si quieres enviar botones + */ + if(response.hasOwnProperty('actions')){ + const { actions } = response; + if(actions['sections'] === undefined){ //Botones + console.log("Botones") + await sendMessageButton(client, from, null, actions); + } + else{ //Listas + console.log("Listas") + await sendMessageList(client, from, null, actions); + } + } + return + } + }); +} /** * Este evento es necesario para el filtro de Dialogflow */ -const listenMessageFromBot = () => client.on('message_create', async botMsg => { - const { body } = botMsg; - const dialogflowFilterConfig = fs.readFileSync('./flow/dialogflow.json', 'utf8'); - const keywords = JSON.parse(dialogflowFilterConfig); +function listenMessageFromBot(client0){ + if(provider == 'wwebjs') {client = client0} else {client = client0.ev} + client.on('message_create', async botMsg => { +// const listenMessageFromBot = () => client.on('message_create', async botMsg => { + const { body } = botMsg; + const dialogflowFilterConfig = fs.readFileSync('./flow/dialogflow.json', 'utf8'); + const keywords = JSON.parse(dialogflowFilterConfig); - for (i = 0; i < keywords.length; i++) { - key = keywords[i]; - for (var j = 0; j < key.phrases.length; j++) { - let filters = key.phrases[j]; - if (body.includes(filters)) { - dialogflowFilter = true; - //console.log(`El filtro de Dialogflow coincidió con el mensaje: ${filters}`); + for (i = 0; i < keywords.length; i++) { + key = keywords[i]; + for (var j = 0; j < key.phrases.length; j++) { + let filters = key.phrases[j]; + if (body.includes(filters)) { + dialogflowFilter = true; + //console.log(`El filtro de Dialogflow coincidió con el mensaje: ${filters}`); + } } } - } -}); + }); +} // #################################################################################################################### // ############################## INICIAN FUNCIONES PARA LA CREACION DEL CLIENTE #################################### // ############################## DE WHATSAPP-WEB.JS #################################### // #################################################################################################################### - -client = new Client({ - authStrategy: new LocalAuth(), - puppeteer: { headless: true, args: ['--no-sandbox','--disable-setuid-sandbox'] } -}); - -client.on('qr', qr => generateImage(qr, () => { - qrcode.generate(qr, { small: true }); - console.log(`Ver QR http://localhost:${port}/qr`) - socketEvents.sendQR(qr) -})) - -client.on('ready', (a) => { - connectionReady() - listenMessage() - listenMessageFromBot() - // socketEvents.sendStatus(client) -}); - -client.on('auth_failure', (e) => { - // console.log(e) - // connectionLost() -}); - -client.on('authenticated', () => { - console.log('AUTHENTICATED'); -}); - -client.initialize(); - - /** - * Verificamos si tienes un gesto de db - */ - - if (process.env.DATABASE === 'mysql') { - mysqlConnection.connect() +async function inicializaBot(){ + const ib = await initBot() + listenMessage(ib) + listenMessageFromBot(ib) } - - server.listen(port, () => { - console.log(`El server esta listo en el puerto ${port}`); - }) - - checkEnvFile(); - -// #################################################################################################################### -// ############################## INICIAN FUNCIONES VARIAS #################################### -// #################################################################################################################### - -/** - * Regresa un número random entre los parametros min y max dados. - * @param {*} min - * @param {*} max - * @returns - */ -function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min) + min); // The maximum is exclusive and the minimum is inclusive -} - -/** - * Revisa que exista el archivo "chats/numero.json" - * @param {*} theFile - * @returns - */ -function chkFile(theFile){ //MOD by CHV - Agregamos para revisar que exista el archivo "chats/numero.json" - const fs = require('fs'); - if (fs.existsSync(theFile)) { - // console.log("Si existe el archivo "+ theFile); - var h = true; - } - else{ - // console.log("No existe el archivo "+ theFile); - var h = false; - } - return h; -} - -/** - * Regresa el historial de mensajes del número especificado del directorio "chats". - */ -function traeMensajes(from){ //MOD by CHV - Agregamos para traer el historial de mensajes - var histlMsjs = {}; - var hayHistorial = (chkFile(`${__dirname}/chats/`+from+".json")); - console.log(hayHistorial) - // var hayHistorialNoBlanks = hayHistorial.find(k => k.messages.message != "") - // console.log(hayHistorialNoBlanks) - // var {keywords} = stepsInitial.find(k => k.key.includes(key)) - if(hayHistorial){ - let rawdata = fs.readFileSync(`./chats/${from}.json`); - let elHistorial = JSON.parse(rawdata); - histlMsjs = elHistorial["messages"]; - // totalMsjs = histlMsjs.length-1; - ultimoMensaje = histlMsjs[histlMsjs.length-1]; - // let mensajeAnterior = elHistorial["messages"][totalMsjs-1]; - // console.log("Mensajes:"+totalMsjs+", Ultimo:"+JSON.stringify(ultimoMensaje)); - // console.log("Anterior:"+JSON.stringify(mensajeAnterior)); - } - console.log(histlMsjs) - // var histlMsjsNoBlanks = histlMsjs.find(k => k.message != "") - var histlMsjsNoBlanks = histlMsjs.filter(x => x.message != "") - console.log(histlMsjsNoBlanks) - return histlMsjs; -} - -/* - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ -var defaultDiacriticsRemovalMap = [ //MOD by CHV - Agregamos para eliminar acentos - {'base':'A', 'letters':'\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F'}, - {'base':'AA','letters':'\uA732'}, - {'base':'AE','letters':'\u00C6\u01FC\u01E2'}, - {'base':'AO','letters':'\uA734'}, - {'base':'AU','letters':'\uA736'}, - {'base':'AV','letters':'\uA738\uA73A'}, - {'base':'AY','letters':'\uA73C'}, - {'base':'B', 'letters':'\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181'}, - {'base':'C', 'letters':'\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E'}, - {'base':'D', 'letters':'\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779\u00D0'}, - {'base':'DZ','letters':'\u01F1\u01C4'}, - {'base':'Dz','letters':'\u01F2\u01C5'}, - {'base':'E', 'letters':'\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E'}, - {'base':'F', 'letters':'\u0046\u24BB\uFF26\u1E1E\u0191\uA77B'}, - {'base':'G', 'letters':'\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E'}, - {'base':'H', 'letters':'\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D'}, - {'base':'I', 'letters':'\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197'}, - {'base':'J', 'letters':'\u004A\u24BF\uFF2A\u0134\u0248'}, - {'base':'K', 'letters':'\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2'}, - {'base':'L', 'letters':'\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780'}, - {'base':'LJ','letters':'\u01C7'}, - {'base':'Lj','letters':'\u01C8'}, - {'base':'M', 'letters':'\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C'}, - {'base':'N', 'letters':'\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4'}, - {'base':'NJ','letters':'\u01CA'}, - {'base':'Nj','letters':'\u01CB'}, - {'base':'O', 'letters':'\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C'}, - {'base':'OI','letters':'\u01A2'}, - {'base':'OO','letters':'\uA74E'}, - {'base':'OU','letters':'\u0222'}, - {'base':'OE','letters':'\u008C\u0152'}, - {'base':'oe','letters':'\u009C\u0153'}, - {'base':'P', 'letters':'\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754'}, - {'base':'Q', 'letters':'\u0051\u24C6\uFF31\uA756\uA758\u024A'}, - {'base':'R', 'letters':'\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782'}, - {'base':'S', 'letters':'\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784'}, - {'base':'T', 'letters':'\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786'}, - {'base':'TZ','letters':'\uA728'}, - {'base':'U', 'letters':'\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244'}, - {'base':'V', 'letters':'\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245'}, - {'base':'VY','letters':'\uA760'}, - {'base':'W', 'letters':'\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72'}, - {'base':'X', 'letters':'\u0058\u24CD\uFF38\u1E8A\u1E8C'}, - {'base':'Y', 'letters':'\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE'}, - {'base':'Z', 'letters':'\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762'}, - {'base':'a', 'letters':'\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250'}, - {'base':'aa','letters':'\uA733'}, - {'base':'ae','letters':'\u00E6\u01FD\u01E3'}, - {'base':'ao','letters':'\uA735'}, - {'base':'au','letters':'\uA737'}, - {'base':'av','letters':'\uA739\uA73B'}, - {'base':'ay','letters':'\uA73D'}, - {'base':'b', 'letters':'\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253'}, - {'base':'c', 'letters':'\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184'}, - {'base':'d', 'letters':'\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A'}, - {'base':'dz','letters':'\u01F3\u01C6'}, - {'base':'e', 'letters':'\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD'}, - {'base':'f', 'letters':'\u0066\u24D5\uFF46\u1E1F\u0192\uA77C'}, - {'base':'g', 'letters':'\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F'}, - {'base':'h', 'letters':'\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265'}, - {'base':'hv','letters':'\u0195'}, - {'base':'i', 'letters':'\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131'}, - {'base':'j', 'letters':'\u006A\u24D9\uFF4A\u0135\u01F0\u0249'}, - {'base':'k', 'letters':'\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3'}, - {'base':'l', 'letters':'\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747'}, - {'base':'lj','letters':'\u01C9'}, - {'base':'m', 'letters':'\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F'}, - {'base':'n', 'letters':'\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5'}, - {'base':'nj','letters':'\u01CC'}, - {'base':'o', 'letters':'\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275'}, - {'base':'oi','letters':'\u01A3'}, - {'base':'ou','letters':'\u0223'}, - {'base':'oo','letters':'\uA74F'}, - {'base':'p','letters':'\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755'}, - {'base':'q','letters':'\u0071\u24E0\uFF51\u024B\uA757\uA759'}, - {'base':'r','letters':'\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783'}, - {'base':'s','letters':'\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B'}, - {'base':'t','letters':'\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787'}, - {'base':'tz','letters':'\uA729'}, - {'base':'u','letters': '\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289'}, - {'base':'v','letters':'\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C'}, - {'base':'vy','letters':'\uA761'}, - {'base':'w','letters':'\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73'}, - {'base':'x','letters':'\u0078\u24E7\uFF58\u1E8B\u1E8D'}, - {'base':'y','letters':'\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF'}, - {'base':'z','letters':'\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763'} -]; - -var diacriticsMap = {}; -for (var i=0; i < defaultDiacriticsRemovalMap .length; i++){ - var letters = defaultDiacriticsRemovalMap [i].letters; - for (var j=0; j < letters.length ; j++){ - diacriticsMap[letters[j]] = defaultDiacriticsRemovalMap [i].base; - } -} - -// "what?" version ... http://jsperf.com/diacritics/12 -function removeDiacritics (str) { - return str.replace(/[^\u0000-\u007E]/g, function(a){ - return diacriticsMap[a] || a; - }); -} -// var paragraph = "L'avantage d'utiliser le lorem ipsum est bien évidemment de pouvoir créer des maquettes ou de remplir un site internet de contenus qui présentent un rendu s'approchant un maximum du rendu final. \n Par défaut lorem ipsum ne contient pas d'accent ni de caractères spéciaux contrairement à la langue française qui en contient beaucoup. C'est sur ce critère que nous proposons une solution avec cet outil qui générant du faux-texte lorem ipsum mais avec en plus, des caractères spéciaux tel que les accents ou certains symboles utiles pour la langue française. \n L'utilisation du lorem standard est facile d’utilisation mais lorsque le futur client utilisera votre logiciel il se peut que certains caractères spéciaux ou qu'un accent ne soient pas codés correctement. \n Cette page a pour but donc de pouvoir perdre le moins de temps possible et donc de tester directement si tous les encodages de base de donnée ou des sites sont les bons de plus il permet de récuperer un code css avec le texte formaté !"; -// alert(removeDiacritics(paragraph)); \ No newline at end of file + inicializaBot() diff --git a/appBaileys.js b/appBaileys.js new file mode 100644 index 0000000..93883cd --- /dev/null +++ b/appBaileys.js @@ -0,0 +1,48 @@ +/** + * ⚡⚡⚡ DECLARAMOS LAS LIBRERIAS y CONSTANTES A USAR! ⚡⚡⚡ + */ +require('dotenv').config() +global.provider = process.env.PROVIDER || 'wwebjs'; +const { Client } = require('whatsapp-web.js'); +const { generateImage, cleanNumber, checkEnvFile, createClient, isValidNumber } = require('./controllers/handle') +const { initBot, traeVariables } = require('./provider/baileys') +const { sendMedia, sendMessage, lastTrigger, sendMessageButton, sendMessageList, readChat } = require('./controllers/send_baileys'); +let enviado = false + +function listenMessage(client){ + client.ev.on('messages.upsert', async msg => { + let {from, body, nombre} = traeVariables(msg) + if (from === 'status@broadcast' || msg.type !== 'notify') { return } + client.theMsg = msg; + console.log("######################### INICIO ############################") + console.log("from, Body y Nombre = ", "|", from, "|", body, "|", nombre, "|", msg?.type) + console.log("CLIENT:", client) + // console.log('KEY=', msg.messages.key) + // console.log('MESSAGES=', msg.messages) + console.log('MESSAGE__=', msg.messages[0]) + // await sock.sendMessage(m.messages[0].key.remoteJid, { text: 'hola como estas' }) + if(!enviado) { + console.log("########## Enviamos mensaje") + sendMessage(client, "5215554192439@s.whatsapp.net", "hola") + + const buttonMessage = [ + {"body":"boton 1"}, + {"body":"boton 2"} + ] + + console.log("Enviamos botones = ", from, buttonMessage) + sendMessageButton(client, "5215554192439@s.whatsapp.net", "texto", buttonMessage) + + + enviado = true + } + + }) + enviado = false +} + +async function inicializaBot(){ + const ib = await initBot() + listenMessage(ib) +} +inicializaBot() \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACH+.json b/baileys_sessions/app-state-sync-key-AAAAACH+.json new file mode 100644 index 0000000..e854296 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACH+.json @@ -0,0 +1 @@ +{"keyData":"rsondEJpV3MvhuJ/zwcW9+s1SZH2e4zfmajwpPFJjls=","fingerprint":{"rawId":1190470563,"currentIndex":5,"deviceIndexes":[0,1,5]},"timestamp":"1676571096503"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACH0.json b/baileys_sessions/app-state-sync-key-AAAAACH0.json new file mode 100644 index 0000000..744d1b1 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACH0.json @@ -0,0 +1 @@ +{"keyData":"5JXiTAyoJzZVyNA/fw3LWG7FF9hCMCkNQKE6a09AasQ=","fingerprint":{"rawId":1190470562,"currentIndex":19,"deviceIndexes":[0,18,19]},"timestamp":"1674539555339"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACH1.json b/baileys_sessions/app-state-sync-key-AAAAACH1.json new file mode 100644 index 0000000..7c32f6b --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACH1.json @@ -0,0 +1 @@ +{"keyData":"rOVUdTS4QvcqLQW71/qTg68udlFuXkxztaOqcsJySy0=","fingerprint":{"rawId":1190470562,"currentIndex":20,"deviceIndexes":[0,19,20]},"timestamp":"0"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACH2.json b/baileys_sessions/app-state-sync-key-AAAAACH2.json new file mode 100644 index 0000000..f774c89 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACH2.json @@ -0,0 +1 @@ +{"keyData":"qHQ/sTwK2Btx0CsHBng++3tnu343DtybQKl+da3t558=","fingerprint":{"rawId":1190470562,"currentIndex":22,"deviceIndexes":[0,20,21,22]},"timestamp":"1675534531066"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACH3.json b/baileys_sessions/app-state-sync-key-AAAAACH3.json new file mode 100644 index 0000000..53d8539 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACH3.json @@ -0,0 +1 @@ +{"keyData":"KqrLOKmtiQK7weUQHye3XQKyd4UXpLC6PVqVQTvpx3Y=","fingerprint":{"rawId":1190470562,"currentIndex":23,"deviceIndexes":[0,21,22,23]},"timestamp":"0"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACH4.json b/baileys_sessions/app-state-sync-key-AAAAACH4.json new file mode 100644 index 0000000..f0c262b --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACH4.json @@ -0,0 +1 @@ +{"keyData":"LMy/lGpdw2jFhTTJfdE13dw5QJsSsCMEWF6XuYGzEsw=","fingerprint":{"rawId":1190470562,"currentIndex":24,"deviceIndexes":[0,22,23,24]},"timestamp":"1676511951950"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACH5.json b/baileys_sessions/app-state-sync-key-AAAAACH5.json new file mode 100644 index 0000000..b3c84cd --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACH5.json @@ -0,0 +1 @@ +{"keyData":"aIuGjuRnpi56k7Vv//KrUZww+zZkty0y/+f1s4DnzfA=","fingerprint":{"rawId":1190470562,"currentIndex":24,"deviceIndexes":[0,23,24]},"timestamp":"1676511956133"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACH6.json b/baileys_sessions/app-state-sync-key-AAAAACH6.json new file mode 100644 index 0000000..8dcec4f --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACH6.json @@ -0,0 +1 @@ +{"keyData":"mfbitKh113qwV9IR0cHVjOMhsDiYEedkm/eOq1JBF58=","fingerprint":{"rawId":1190470562,"currentIndex":24,"deviceIndexes":[0,24]},"timestamp":"1676511959435"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACH7.json b/baileys_sessions/app-state-sync-key-AAAAACH7.json new file mode 100644 index 0000000..2052caa --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACH7.json @@ -0,0 +1 @@ +{"keyData":"sjYMEa8AStl+akC5QRj015xeCRJwi8iSyl9bIiTwV30=","fingerprint":{"rawId":1190470563,"currentIndex":2,"deviceIndexes":[0,1,2]},"timestamp":"1676514874744"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACH8.json b/baileys_sessions/app-state-sync-key-AAAAACH8.json new file mode 100644 index 0000000..e7ada4f --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACH8.json @@ -0,0 +1 @@ +{"keyData":"dzRUXPfxEjGod+WqHV8ha9cZzMlFc5SDvG3zTQbbZWk=","fingerprint":{"rawId":1190470563,"currentIndex":3,"deviceIndexes":[0,1,3]},"timestamp":"1676515049252"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACH9.json b/baileys_sessions/app-state-sync-key-AAAAACH9.json new file mode 100644 index 0000000..a48f473 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACH9.json @@ -0,0 +1 @@ +{"keyData":"xSPhDl7HIRGemipcSp81cqUC/EE5ctcVRr/h1U1+4Tg=","fingerprint":{"rawId":1190470563,"currentIndex":4,"deviceIndexes":[0,1,4]},"timestamp":"1676515218431"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACHm.json b/baileys_sessions/app-state-sync-key-AAAAACHm.json new file mode 100644 index 0000000..db65700 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACHm.json @@ -0,0 +1 @@ +{"keyData":"+olDypK+i1ssS7Tbg8yqOytmQd5u//pZfQ+v1O1KC60=","fingerprint":{"rawId":1190470561,"currentIndex":1,"deviceIndexes":[0,1]},"timestamp":"0"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACHn.json b/baileys_sessions/app-state-sync-key-AAAAACHn.json new file mode 100644 index 0000000..b8c7c47 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACHn.json @@ -0,0 +1 @@ +{"keyData":"s9MgV4gC9Q2Yzsmu7NpD3Bw0eAjhFc2SeBggWrEHlfw=","fingerprint":{"rawId":1190470562,"currentIndex":1,"deviceIndexes":[0,1]},"timestamp":"0"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACHo.json b/baileys_sessions/app-state-sync-key-AAAAACHo.json new file mode 100644 index 0000000..02c8c0e --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACHo.json @@ -0,0 +1 @@ +{"keyData":"qYCOwJ2vAPvT+MJWITPNpCJLMhKWeb74g0rPV+RpVe4=","fingerprint":{"rawId":1190470562,"currentIndex":6,"deviceIndexes":[0,2,3,5]},"timestamp":"1673921678832"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACHp.json b/baileys_sessions/app-state-sync-key-AAAAACHp.json new file mode 100644 index 0000000..c052133 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACHp.json @@ -0,0 +1 @@ +{"keyData":"TgbK+pOhoULH2zKbl3ePO+sfdo7vWvGOgbZNEspIyo8=","fingerprint":{"rawId":1190470562,"currentIndex":6,"deviceIndexes":[0,3,5]},"timestamp":"1673921683289"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACHq.json b/baileys_sessions/app-state-sync-key-AAAAACHq.json new file mode 100644 index 0000000..cc99392 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACHq.json @@ -0,0 +1 @@ +{"keyData":"9NseEe1GQbmUySTlTsKBsV2TUny7F3lfrM3LAy6Qhvo=","fingerprint":{"rawId":1190470562,"currentIndex":8,"deviceIndexes":[0,3,7,8]},"timestamp":"0"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACHr.json b/baileys_sessions/app-state-sync-key-AAAAACHr.json new file mode 100644 index 0000000..7178238 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACHr.json @@ -0,0 +1 @@ +{"keyData":"+/WB8rIMnHAvZDuxN0I2vG/7cR1d/U4NMNqUknfADNg=","fingerprint":{"rawId":1190470562,"currentIndex":9,"deviceIndexes":[0,7,8,9]},"timestamp":"1673969921050"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACHs.json b/baileys_sessions/app-state-sync-key-AAAAACHs.json new file mode 100644 index 0000000..cb5f899 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACHs.json @@ -0,0 +1 @@ +{"keyData":"kkJjls6R2k3R889NlY2n4CDtz3d2d9XdTLYKZcKIxUk=","fingerprint":{"rawId":1190470562,"currentIndex":9,"deviceIndexes":[0,8,9]},"timestamp":"1673969923885"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACHt.json b/baileys_sessions/app-state-sync-key-AAAAACHt.json new file mode 100644 index 0000000..849d1d2 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACHt.json @@ -0,0 +1 @@ +{"keyData":"ckSGxKH9j+224QQgYZnWNjU9GGAFVEgpX7Ywpu0hdPU=","fingerprint":{"rawId":1190470562,"currentIndex":11,"deviceIndexes":[0,9,11]},"timestamp":"0"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACHu.json b/baileys_sessions/app-state-sync-key-AAAAACHu.json new file mode 100644 index 0000000..750c4a9 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACHu.json @@ -0,0 +1 @@ +{"keyData":"c3WklBNFR2GN1y+s0SijEW66Wu+dacHBveIapiUK7eQ=","fingerprint":{"rawId":1190470562,"currentIndex":12,"deviceIndexes":[0,11,12]},"timestamp":"1674088411745"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACHv.json b/baileys_sessions/app-state-sync-key-AAAAACHv.json new file mode 100644 index 0000000..4bf7763 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACHv.json @@ -0,0 +1 @@ +{"keyData":"oqUf8dDCsHlcT49L0too22+kX6TQ2uuHnytgTsBuvjg=","fingerprint":{"rawId":1190470562,"currentIndex":13,"deviceIndexes":[0,12,13]},"timestamp":"1674141267159"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACHw.json b/baileys_sessions/app-state-sync-key-AAAAACHw.json new file mode 100644 index 0000000..d108350 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACHw.json @@ -0,0 +1 @@ +{"keyData":"nL2p48Ft7Cpi6D2QS5c/KuKlNtOEICJEYxuRy8+PnNQ=","fingerprint":{"rawId":1190470562,"currentIndex":16,"deviceIndexes":[16,0,12,13]},"timestamp":"1674188583557"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACHx.json b/baileys_sessions/app-state-sync-key-AAAAACHx.json new file mode 100644 index 0000000..8c32a11 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACHx.json @@ -0,0 +1 @@ +{"keyData":"ZmCdM3XktvViGK8F4LYMifw61NYUXcPmUMC/HNmAGcA=","fingerprint":{"rawId":1190470562,"currentIndex":16,"deviceIndexes":[16,0,13]},"timestamp":"1674188704021"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACHy.json b/baileys_sessions/app-state-sync-key-AAAAACHy.json new file mode 100644 index 0000000..c402f03 --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACHy.json @@ -0,0 +1 @@ +{"keyData":"m/J5nu/ljgl0R1tYXRXVtmBi0kW+T2YQkhoOx1uQuhs=","fingerprint":{"rawId":1190470562,"currentIndex":17,"deviceIndexes":[0,17,13]},"timestamp":"1674188863193"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-key-AAAAACHz.json b/baileys_sessions/app-state-sync-key-AAAAACHz.json new file mode 100644 index 0000000..e7c421a --- /dev/null +++ b/baileys_sessions/app-state-sync-key-AAAAACHz.json @@ -0,0 +1 @@ +{"keyData":"EJCgYXCA3vuDxnKtWr+PyGZMgCyI7lPpYCbGk96qH70=","fingerprint":{"rawId":1190470562,"currentIndex":17,"deviceIndexes":[0,17]},"timestamp":"0"} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-version-critical_block.json b/baileys_sessions/app-state-sync-version-critical_block.json new file mode 100644 index 0000000..5967013 --- /dev/null +++ b/baileys_sessions/app-state-sync-version-critical_block.json @@ -0,0 +1 @@ +{"version":24,"hash":{"type":"Buffer","data":"EKT/6t6gsECWm2VVnzrfk78205OjlmMFjOLqjKzjIxbP6Nths3wcmNiJW9/UNTvItc89Jtn+xZwlD1PUA0ZSjbIG3szOeMhyZFrfQvZgopSNfSMVIN1PwuTMqjIsM0xhEfzP1nWI6ksFpZTKkTcXtpKukgg2dDuQWJndA1fQjh4="},"indexValueMap":{"ztGh0PeVk91WtvEEcV67TeplNk9MJTjftdsLa3oCaXo=":{"valueMac":{"type":"Buffer","data":"IYNe+D0TmsEWl/ry5CUOq9jDeBEN//nvNXp1mg17Pqo="}},"uSvfEptt0Iog1tlb0D4JmdwVoIjuKj9R79BU7gyBMt0=":{"valueMac":{"type":"Buffer","data":"4HYCanalfvCZPJ0VNxEhJ0phc8kln/uoBOVBGbfTn+k="}},"TDuWokLNV6TFgHLlhJGvw9Wh7A0ygi3fzw2jEGoS5BQ=":{"valueMac":{"type":"Buffer","data":"5tf2a0Y8ATuk7dkeVhNjLeCCR+iohUGNA9wtVd/2uOI="}}}} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-version-critical_unblock_low.json b/baileys_sessions/app-state-sync-version-critical_unblock_low.json new file mode 100644 index 0000000..062698e --- /dev/null +++ b/baileys_sessions/app-state-sync-version-critical_unblock_low.json @@ -0,0 +1 @@ +{"version":106,"hash":{"type":"Buffer","data":"XBIijqRIqh7j9x8eypiXjLCuJ90CyQhBAXryVNbmBCyIiMRooE000EThjUi9Yo6xtQmUANxTlf66Oef7fk6TCn8JIMuVy9cwLFYCge+1nGm+PdoCAY4tYB8S2xe2cZutvnLp9tdrQCGj4m8hbUKyiItpC8ujnrJoRs3l9wDXmUo="},"indexValueMap":{"AVlAnfYCBv5WHZchlaJy/HFjGss0vZkO8T0jJDvNlVA=":{"valueMac":{"type":"Buffer","data":"okuxaJEAjWzb0inA8bZlmCeEPRd0Uhyj5o2MjLmUICc="}},"Ajit9f4MErDqAiXrQAs1oxm8cMUF/0Wi2kzg4AkKjqE=":{"valueMac":{"type":"Buffer","data":"PzrrdnnUv0JC/FnasyI+b/aC6QNOoEaJXebZDIrk6zc="}},"Axn5WeoqWEolYJVjmIZLGTf8netxICzUOSHO2IG/DLI=":{"valueMac":{"type":"Buffer","data":"XdzjsiP1/XDNSufFa6zzLvnvRkXfvYdKXceIAtY7ogo="}},"A3CerVBwt2cyomT9rHWQTebLihA7/El0XRZpjXc100w=":{"valueMac":{"type":"Buffer","data":"oIBTx31fylolTWY0m5Jn5TZHo46Yzc2HhYYGvXlGTLs="}},"A8/R2u2xECTCmOdvxlfY/t6/mpYWtOVJpE2iiMYupyI=":{"valueMac":{"type":"Buffer","data":"BzB1Z6VXIiofegNb/M+4x+xhfk7WN4Cx3bIFBO8RySk="}},"BFZj15Cn2SMH9b3nlodWf1+Hsr0wXbsQlkK4jrhoxcw=":{"valueMac":{"type":"Buffer","data":"fiVxvQ7OhQFrFGt1VmIKNcByY7PP2trSSfY8ZOHSKX8="}},"BGSzGBCq3UT07KV6CxY+ugVlThwlvPlkgN0EHxh0uAU=":{"valueMac":{"type":"Buffer","data":"/IRaR6K+QJKDtorBQkwdcbKvVMd/kw+RLFfQGtmb4LA="}},"BJS9gtFxddbkZhIUXQ5nE0lz96wZoH0fA+hMrygOPlY=":{"valueMac":{"type":"Buffer","data":"14Nrgm0lU8h8bBrGqb2KxOKt761L0Gfsv7NORc0rnwA="}},"BLLRy/uGaDr/Mjkc5fd6MQMy1ZoS+qKIXyfyRIykE/g=":{"valueMac":{"type":"Buffer","data":"ol6UOUhDZvDfFiWGRQrMjz6lbhtCKWx9U2L1HZk1G/Q="}},"BVzDd+nncyJexJmvfxczAlzJhDy+BmgkJcXtYnHrRQA=":{"valueMac":{"type":"Buffer","data":"2O7uMUwvwL2Lx3ix1coUxIIY2RiKhVAPv5uoklf6/b4="}},"B2/oqDusRa/FF2H+4JAuMHMlnraPStWsrYKH1mkv1XE=":{"valueMac":{"type":"Buffer","data":"s6xC8b+v7MB0KXuQuipU2TFtRrBMZ4myyeNTj35oI0U="}},"B/7EkaCXjl2I/wZ2NVdy/ReEgp3h48qUGr3SKNNa0hM=":{"valueMac":{"type":"Buffer","data":"igNO9g0qwZtyGbzxfAVwNldYoJyfOSDsL/smMPG8efw="}},"CAyIeIoNTJJLi2i8nMmgXySg7p/EY9BIBGpCSwGluxc=":{"valueMac":{"type":"Buffer","data":"jdhuLeemcbgf7JV81VQbusePf+R/TlrTdnwz9MhmNRg="}},"CGn0GTxi3dkmyAPvrJJ8rz+SrJAoWKuqdZcOKv9CSHw=":{"valueMac":{"type":"Buffer","data":"SVxyKlOrzSiEpnaviJUfASO07Fia5q7P0trSq2nFfyA="}},"CMAG0W9YMBp8Qpz8xLe/BHAs66F+zjEf+WekBxLkGbQ=":{"valueMac":{"type":"Buffer","data":"zkVA3N8bWgxrbOgl1cpCrRRCuTJx6dnj79MQCOYf2H0="}},"CNjXuBAteZuMhASEAopHaCCjwcFFSB0I9NP3BcnCE5A=":{"valueMac":{"type":"Buffer","data":"wcsL2HpXWTPbPSDBcdHCO7OsZtpYNKdoGRQUWkuzovE="}},"CkDF+aNyvv7P7YVqz3+Zjgu/WIbcODVNNKeXU6u97kI=":{"valueMac":{"type":"Buffer","data":"DAaMVR8qdBbZz/Tx86KxqAR5523KUpzTGiVhcX7tkFk="}},"CkYJ4FRgUtrVp/rbUk45uuBKEJV+XtF8gh55QnUgccQ=":{"valueMac":{"type":"Buffer","data":"eDz2kJZAwtsFvckngOeaMW7rBm0Oe2r0rU9+/SVD9aA="}},"DUwGpngVFLAwZw2lz2tZgJXmo0NOCuvouj4mtS0E3Ak=":{"valueMac":{"type":"Buffer","data":"rjxbeNJXVzBQGnT2ug9G+wM4aqdMh5XS2N502WYfwOQ="}},"DfABA4v3pOPhmau54LY7bHTgj9a2UU5VcyY8AG7J3Pc=":{"valueMac":{"type":"Buffer","data":"DZ0FTFPdGGF2LRve6ge1UcsdH8b1PWu02/+mx94sg10="}},"DhorxsmOcjzrT6xwse1ccTVv07Epxs/0Gp9JQPJoWuU=":{"valueMac":{"type":"Buffer","data":"+uIHBNhwJX/DyyaE/NGOs7dPpOeaIk0T+rlKnSrw3zc="}},"D0dS8x5YJvdtYcdYfFbt93CLjVkp56d20tlOlquQkWo=":{"valueMac":{"type":"Buffer","data":"EubsAnc0PSgZTHd8pGOwbJfe/2XWAjoQAXvuOvCmYiQ="}},"D2w3MCpki91IoD9Fu6J2/IRK8jK28npX0CYDRxZiXUQ=":{"valueMac":{"type":"Buffer","data":"gSa7cahaWxArzcm9X/VrxGvxF4WKnnuGaig7Yf8JwA4="}},"EL8ATqlZSioettTZPo8wna5T0vM5CjTNnU+3K7r7ox8=":{"valueMac":{"type":"Buffer","data":"wda4kTe2QamBiZ3weqBh+dAfitS7Z3GVBNFTOgkfSyw="}},"ENcdD4X2sTHNkHDM9XC7IgaVTCoFhygXOyEUL8RXJzY=":{"valueMac":{"type":"Buffer","data":"5/6Ame08UG7hOBQnjmvlBEhpFTYv+VIIp5ZtaMBSw6w="}},"EwWfq2pZvboQrh0/1gFmQipFe8yYQeaYmEBXrqQ18f4=":{"valueMac":{"type":"Buffer","data":"DL8KLxZq3wKc9YLA9RM25R3Hme9/SrwUATbSBAqrTsE="}},"FKHcDoF2ywXuF3fnZ3qNNcMlEPEpfcYYppeYAegEE0w=":{"valueMac":{"type":"Buffer","data":"UOddsHIgQTK7TYJ1V0vVhjHwyDXCXGiMOROyjg3CpEw="}},"FMOwFw0QKD9CiH1rWgkV8PaRfD/G7jzBkt+FN2K2Bhs=":{"valueMac":{"type":"Buffer","data":"CWPZvrrUorDW4VopsKp9Rat7gF9Bc5gLiuS2uDCPKm0="}},"FYh2yLRVgf0V/r6LYAl0XpJBIi9fTmA/S0nDH5G7ceQ=":{"valueMac":{"type":"Buffer","data":"iF1aQUTbgaTGoMkvbjcLGwjNJljOnVvQmCtr8N+deLk="}},"FfD4He3f3XuXj7qIoxXREgxTF3+m4JDWfJaw2X1bAZU=":{"valueMac":{"type":"Buffer","data":"8LgpDJH3MEshnC32j0wR7Vu/l8AeVqUFvKK5Vq+vAfY="}},"FkTvgLqeWH7Ahpjf8fAEx5+Dr3MSm4q2LEN+DMQPgHM=":{"valueMac":{"type":"Buffer","data":"rbdkbs2+oh9ssI98RvihC8dCCjtFbbyCINplPsAtLQo="}},"F4oZsYjfcvEuAddq/2hzysvfj6L5wbH/COsk7QqOOpE=":{"valueMac":{"type":"Buffer","data":"Yk0dSpHrOt3lv8LfhHWUFYvbVjf+pSzX67PED2fp4eI="}},"GEIarS55d2ktm/GB16gpOgOBXrAEV3E4xC+Tt77jOG0=":{"valueMac":{"type":"Buffer","data":"w5UJbTv476M0k1mypsP55C/XHD+8OBrXLl0Jutgk9Lg="}},"GFhOYcItyeKhqaYhLIerJ1HT6jAAlcnrBesPC0YblFM=":{"valueMac":{"type":"Buffer","data":"UIMMs+ejwwOI61izhqBbOSwH7X2Xa+0xl5EW3PEnKgw="}},"GKxPeTeQKBY5au3cmWwNZiHYfG4FkeIW9J3Y1k0ap6E=":{"valueMac":{"type":"Buffer","data":"ay1TsknoWzDaADMhevOdEL/+oqorHn+gGQKZ7wAQH2g="}},"GL9F/Zgf5wqXAITW3eUb9C+JXITERpdZRiktQDykULg=":{"valueMac":{"type":"Buffer","data":"lfSgWip5UZH+7GwTxJ+jTRX7O5htv9SjyJ1MQNlVZZs="}},"GVbMuVG9ewTEQC49kq47dTrBySLh27YAhkF3p1sI8H4=":{"valueMac":{"type":"Buffer","data":"1/pDpSctmiP25kTgZY/e3Qmp1bJhehZwHVYCjx6fyKo="}},"GkQzN2HfibQ4cjo2dcW4+GIf/CfYQNqjBIg83SRLAus=":{"valueMac":{"type":"Buffer","data":"QyTmUBPj0fsbpiPT0nAv1l3GfElme4AfLPN26edKEQM="}},"Gx73CZc+4FNGqRaLPh3UnVROrhSmV7Bhv/QjSaHbYY8=":{"valueMac":{"type":"Buffer","data":"XEr995DPQXvVAWfvhhK+sydjetyv4MrNiF8Hm3bOThc="}},"GyaCEZIrDGlxO+M51ZmjtfL8ABcOwFv0pqK6twn1xZc=":{"valueMac":{"type":"Buffer","data":"OYtHsUNHe55Xo4SUislSFq5N5z58pizNuhAWIj4SPcs="}},"G6TAIQDJOcO8KNSWEHmIgNAKvx+RI0oU9do6OW6jPpM=":{"valueMac":{"type":"Buffer","data":"WJUMPSfWjyWqKcdCMz7oZdoqW2iGG/SUsYG7VZPoU3g="}},"G+P8GO1J1D2N6bFk7G1zOKMLAJqQGk49QNS2Eiv6V/w=":{"valueMac":{"type":"Buffer","data":"ss3LAfoqMN1L6pVpXE9FbqMA4II+Pol1YWdOyeRowp0="}},"G/reSGaxfX/aQSV5XTUUhYkxFJ8O1j9/nZuaFji7Jh4=":{"valueMac":{"type":"Buffer","data":"dlD0rSEX4OnT1LTNrwY/Fo47ntMPKKX9TU0Z3AuVqBk="}},"HdI++pxe23U0uHXLl5AbcAoR2fjAJhL2pqOw3E7RoA0=":{"valueMac":{"type":"Buffer","data":"jd8PXrhA3HyPZpzft27LxtcvDH+5ciz6OMjkSgMw3e8="}},"HeltSmRRnuwsoVkpZHHlaAriNvoFIC2Ay3Tax7FImtI=":{"valueMac":{"type":"Buffer","data":"oZzvir1royjd0/P2fung0m6B4e4FiNkxt1X+5yBIgwQ="}},"Hfi/CwD+/71bRL2Va3yVhrZyTSsPbveXMQIdXfaLwSM=":{"valueMac":{"type":"Buffer","data":"8WpdV0DJeJEnpC/uf26x7mdGjTzdOkQEnCzXhf8oiwY="}},"HhCQzJxrgd2k08h5xyxNfyE/o4SDreI8EyH/Xpd/Py4=":{"valueMac":{"type":"Buffer","data":"JQM/27MSnoLOySxTa6jfYUsOM/3bQyPEFMww2cAJiRo="}},"HmzJU+u+4gDxaDoxL6a52bIileFDJG1cq5z9KQKDHsw=":{"valueMac":{"type":"Buffer","data":"us/rCGx44cSiRXVSx48tgxhSa7OYh/JL0lC/H8A0f6M="}},"H0i8H//mQPQ/qFUKWIesVs6SNpBkaXSlGnwPDC+wDok=":{"valueMac":{"type":"Buffer","data":"h/EtkZA1YWIHerWP/M8ECys0uMOEtuu23iGplxatFLs="}},"IZ+63Z8h6W5qlmESrNVG+iRDi9AlcfxtvSYmm7w19YQ=":{"valueMac":{"type":"Buffer","data":"l8YQnPki5XTBk3ZwoovI4D2Qe0yzeET4pJj6QarizEQ="}},"IbfmpHCfCmFfd5AxEd88NaRV2ue9t4otUCbjkXYJA5k=":{"valueMac":{"type":"Buffer","data":"r7RdSBhCqlJlKZ75CQF6jD6j+v9Y16oLbTuw1Q7gC9g="}},"IeUkifshoQv5EJO6lJ7LP34kGeGyLV3PJkpOAm/UISM=":{"valueMac":{"type":"Buffer","data":"/jbUU3QGezBqDHXkQJnGCzIGXPkEFMDcNdiOqJDqOmk="}},"IiwGkdThqjRK2V+geepPImxAy6j2aFKfk60PBNNkqNs=":{"valueMac":{"type":"Buffer","data":"Akv2PcDBbebfHRjpUqXJCmAAGuj1ZFZdAM2PwYfO/fs="}},"I2IXmb2EKHzGRBYG+CnfJ+Sq80Sfg1nekoshObddgaQ=":{"valueMac":{"type":"Buffer","data":"dXA16FUQl67LyKCKPwVr+S+Z1uSuv/4FHZszk2DAw/Q="}},"I23SSXSuAZu+uNRBwn6I/LaC4jFgTa1bzgChNvQo20w=":{"valueMac":{"type":"Buffer","data":"0OT7ak4JYzXNMV5SbHQEdLzdcTMK4ADkID3uUe7+Hv4="}},"I4o9kp+ktm01JrNzre1eNfoyLnfmlhEav8e1WlzCDB0=":{"valueMac":{"type":"Buffer","data":"CkwtMSIju2vZE7FMUSNM8Ty78CSNKyDWSMfdwX7GXwk="}},"JC4QZlA55Y023y3/3ZXa//+qpelLyaIUIt55rLj9aSQ=":{"valueMac":{"type":"Buffer","data":"yYAZ/AoJJHkvgy7CVydOUiZBjwOHVhN4/7BM51xXGBc="}},"JGKUBrC97F/8p5HVyqtTzIq5O0HdNhT1+J7lQTzGUg4=":{"valueMac":{"type":"Buffer","data":"dj4+dyYnHd1psepqq/s30+obF46SkcF6YGqYHw4xUqc="}},"JMeZGewoPcYzJsIpmUkUauAPA/3v+YVwsf4SnZl9toA=":{"valueMac":{"type":"Buffer","data":"QCuRZKjJ4s3xjdJkO+Ofp2NaSFyKYsRF3itx885dyWY="}},"JSns1U5lSHgNggGJ8TN1pBsBxflkOcCFeZTKRx17dwo=":{"valueMac":{"type":"Buffer","data":"yAGmJeIrYR98x4y2YGgh+Cvuy/zOo2OGM6r5FWFU9u4="}},"JVbAIBGRuS8GMHnfhbLsmsj77i+uCA/W+MOC7VMa5u4=":{"valueMac":{"type":"Buffer","data":"LBNkeMOes/NjTGsDZzZvMr5V4RfbE8/ZklmZn8EtMZs="}},"JxT9jQtlHCD2CbhbXONADZQO/p2MiqMwJ8LXXcbAgaA=":{"valueMac":{"type":"Buffer","data":"XCVlfltrri0JIUrUZhGXOt4mlUqRG4O1n2ZzZPqp/Ec="}},"Kem7XyRUpfkzvSGM+MPAtra2uoLTo1bv+JoL8rbVW98=":{"valueMac":{"type":"Buffer","data":"N9C1E+NZ9lbe5aIp+NAjn09+EEmQip5EtdzCY2pEoTY="}},"KqRP8Co0Y75JO+2eKZwKhzj96ohPQ5ElOfyTUwuaBBA=":{"valueMac":{"type":"Buffer","data":"Oe1M1tLT9WfW6ITS2t0z9gKIiSsp4YBQm75XG1bqr4w="}},"KtWPmm0SnRsNbW6xg4fjJat7ab8Uc0+AXl6qNOmUWhA=":{"valueMac":{"type":"Buffer","data":"zkwXRk68FrVLlaILupcQsWMaoXMp3ILQsXowDPM5Kj0="}},"KxDrjyVhrTypWRG9ol0jXyBLeDiteeBbo+cvseC9JyY=":{"valueMac":{"type":"Buffer","data":"MqM3YHHYs9Pjn/5x0pRgJ4j+RU3aRXRHTD+3XAdi2f0="}},"KyuWOC21owVyfTKOxhTlyEQh7zcF6ZURoBUPB542ncA=":{"valueMac":{"type":"Buffer","data":"UprWiVW6r9Q9BGE77FUaU2bxM/MSQcamNpgh6tUnPSo="}},"K3DrrRX6JpUi2rr7R5Na2wHbratBOl1EJzH65IUQU5I=":{"valueMac":{"type":"Buffer","data":"Tzt/Et2TjZu3BKb6AFPhM7oPFCSfF6SZKBvtYYwmeDU="}},"LU8B4zVZvgAjPU01GP/egDS1wQbkjakKWNGiiiVW3xg=":{"valueMac":{"type":"Buffer","data":"hE8BS0OdApnYkvZIYAxauQ7f5KPF/QfSTeOJd+Iyc/w="}},"Lf2DToo+1Yxb5m8EKghbeLaz8uAYPRNFhgiVIbbx9ng=":{"valueMac":{"type":"Buffer","data":"o6VpMC6KkkebFWtuLtAKQbPYi2Jhz0rhRc4Tb+8s0M4="}},"MH9bmXofws1Nb4F9lrA0mxGPYtzbCygM4uo+RfbdL14=":{"valueMac":{"type":"Buffer","data":"kUoeT8so+cV8ucHFciiS+EEsxh+cJLgbpYe7e35+DdQ="}},"MT9iHaQsXl8wv8sAh7U3EXBGiyKkDcVedw3Gx5uDLXM=":{"valueMac":{"type":"Buffer","data":"70Cz1PktprEe8ShZa6/pmMV64ZSIKv/E52KmIwK9dmY="}},"MWRL81Vj1Pi96hyIL/1hQm600e1zWX9Dwjzx2cE40fM=":{"valueMac":{"type":"Buffer","data":"CO0S0a2C5nYmt0CniQWy1Z0zrRcBxZyYt+CEcGcAJQI="}},"MaRp2py9y+0OzW8ELuOkuBo6cQAgjZ+PP1vXDjhI5OU=":{"valueMac":{"type":"Buffer","data":"uGrhLtf7EmykSGZ+25eY9cFio8ohE1jYwYvCF9hpmZI="}},"MdhUNAYiaezbzDlYPsC7eP0uUbUy1tmOCCcDWTyNVtU=":{"valueMac":{"type":"Buffer","data":"3Md2fjAnhC1AdoTw9T9QGUbJdBnpHTjrGSpRyS7d/Vk="}},"NAJHxIqS9EhQvQuGShg8OrCE62J6bnqm4I9k39Y1xGA=":{"valueMac":{"type":"Buffer","data":"0l+DDKmDXhQ6kapkTor9acm8DZvPXmMH511LG8efuTI="}},"NBxCZ3usJjQ7oUJqSRojjmPIrXYsHB5fuSchN/7M690=":{"valueMac":{"type":"Buffer","data":"FE1uedd8ebvoZ9ZESAVoRHb1kQ+FoUodcz9XqhW40kI="}},"NGWv/au+rcvdEMIOHOsQEokXV1hyL3oRwrT3d9VLABQ=":{"valueMac":{"type":"Buffer","data":"rrtzbK2i/X+bla8bJv7e4TrngIWQ9jl2EEXbuWne1J0="}},"NMJrGHYZksMpwFvI8FvQGiJ+KGobVWH9joiffv8f0n0=":{"valueMac":{"type":"Buffer","data":"BxpZBExIxOYgOfijfCWujgafPa0ZD8vuCmodUe/A1RA="}},"NNxun8YIrD2a7tZ93PtY2RzoWhnSuQvjHR25U2Wb49Q=":{"valueMac":{"type":"Buffer","data":"Zi5htoS6PaKistow6NLotiAEFF48gg/W1YFtVkeBxg0="}},"NWOpzfzVntwT5ZlaVQTOqzXutaONjPoWW6V8HnDNK0k=":{"valueMac":{"type":"Buffer","data":"ov4cSeyhdoVmr5dznY5wnRPVcFowC5Q61quHl/ie5No="}},"NcM5K3HtjbLSRTm35/cK5PyYRwTYrCZF1SfSNA39FfE=":{"valueMac":{"type":"Buffer","data":"gGxodrEJChsEq8wheuFe/DRR2h6LayS4SSO8ZsllH2s="}},"NjzLc24nuVh75+CWMR9a5VW95TJHrgq/EwfvHVrCidc=":{"valueMac":{"type":"Buffer","data":"J6VG20iTesGcBjsioiRTpjeVCXlLoEAg91G1zx4/YkY="}},"Ns96evzm0N8kjn9TlKwFzJj8O891ZUTrCKY7UBXEfZ4=":{"valueMac":{"type":"Buffer","data":"CrXX0HFn/i8WycEG8x/vYIwFZYZezS4shocpTjYqFdo="}},"NuuyjVnGURLHNckkhLgCb2DhZjzd7iFni7xBh4y3lrE=":{"valueMac":{"type":"Buffer","data":"4hsTh03p0FYRTZmZB0sDY8K2/leE0p9MKnodNLH9trQ="}},"OcvGYPyAMoMmuhSgoa8yNHohlF3/XIr3lNhubwmo9kQ=":{"valueMac":{"type":"Buffer","data":"/EcovVBMFHs30l2SETC0KAvq6i+HciubPB2nnaNiAhw="}},"Odbyk9bqL9B8CJoZtRAvg7pX+7N7HtMRVEoBjD/bmjo=":{"valueMac":{"type":"Buffer","data":"/xj9d3DLadr+CdgsS7S5hZXpkVNUqrXIC3Vf/lhN5bk="}},"OjSfIDNdeu4lp3AmbVc7wkc/2ilP+y16P98JVXS0ESk=":{"valueMac":{"type":"Buffer","data":"CWgcft4IaCuZLq57Z46mB3IQdwCiHrUeAbAl7R+0vfo="}},"Ok4j+aVK8iN1mdgIbQLgXiRgv2H3kyJTqVKOJby16c8=":{"valueMac":{"type":"Buffer","data":"Re1Q/OkRC8Z7AxRS1IaMG+vryNeEdH0ziwl93BT0VQw="}},"OmDNC1MXHwpx0gN+cMcJeby3W3xDU0JlBEfjs0Zjqis=":{"valueMac":{"type":"Buffer","data":"wkd6W1mJBtdoxaA6iTSvCGqzG1QXcxGe9z8wLEFV098="}},"OmU/YRlOHthWHzpBdBjmSfztGIyKgmouvfhPF1XfgAA=":{"valueMac":{"type":"Buffer","data":"bfx8Qb6pv4B4YyFeTEU6psmSjFbo1kLeoFQgpVrH8eA="}},"OoMNJ1TScuxdqxfaOqr0oaSkBHo8gwtuKknmX/IESVA=":{"valueMac":{"type":"Buffer","data":"SA0UO6ACMHE+wvyoAY4gAfAaaI7TC/Zr8y7yE8FAijo="}},"Ov1xUPImyaV7PpAeIHjSCui55ndVhrx5E6oeUYkIU0I=":{"valueMac":{"type":"Buffer","data":"MvO19vuw90xbgSq8GJ9HCa4PsT/Rtdqqe5v6MRAiJBM="}},"O2TxSxBJn9rca/XpUIa7P/3ksNvx5M5MdMRzZ5ZnzOY=":{"valueMac":{"type":"Buffer","data":"0YqLYd1gEErJpc1KHt5LPZZOmQELHI8mndaxvoC64n8="}},"O6wlOWKDOtnDmw3eFG1lZHgEslrrQvSa3/7U+lO5IJA=":{"valueMac":{"type":"Buffer","data":"Q8uyAJnpUG0RYU4rX5IOSC0kMZXgIzQbGL3Avf6b4Zg="}},"PH2ABlrjV8rX+1c7P5uqWKunSYtxzscY8J3TZ9/LRDo=":{"valueMac":{"type":"Buffer","data":"t19Zo6Y1blQlyOVfpIgMY0hYl/CqrXPAXmj8wiDVwyg="}},"PLvmaMJykVDScUXJgOnpmxqE8lWQqHV1YR8FL7tU3pw=":{"valueMac":{"type":"Buffer","data":"J62Z0v1zLNnBaC+B/sZl+lvO+HSf+x/Atu6V4DuSUNc="}},"PZ6E3uQGFOGK+LVW7ESSyz8cGBwUhD9j7SA+0AGIlxE=":{"valueMac":{"type":"Buffer","data":"6qyaTvi8Z4v27YlVwn+0V1ihKFY/tins5t1+XKFKIgk="}},"Pe4E4RhRKIa6rljcvqQX+KqQkMfZnpUJDh3pfWiPTGk=":{"valueMac":{"type":"Buffer","data":"xvU6XmKDIzhsq0bQC4MIkgzOBE5NufDiw4nZGS8i7m8="}},"PqPwA2+s4ft3AA6lyZfxU+tppf9Z1amwVA1TqsffEEQ=":{"valueMac":{"type":"Buffer","data":"sVFxrdtp3GjMDwziviwTnLxuHx7WkR5gpRYB21kjGWs="}},"P9dZPOfiyj+tAbGbLKU9nwEiwsbdu2Bb1jbVjcvC9uo=":{"valueMac":{"type":"Buffer","data":"/QXjkuspCizDLMU5QYVDLMn+eF6yKMpH6qAMCZqkeoc="}},"QWmJYpTBKT8P2LrlRd1beyI2LRNp1OZFm4jy+cufvFY=":{"valueMac":{"type":"Buffer","data":"yvhJbN8glx2k5u6EDuJgkwc/mkRgr5MmBtIaSS0R+Z0="}},"QXnVYa6XZzQZDayrtmE6p7IrrBWaW2Uhj5kHCcSK69o=":{"valueMac":{"type":"Buffer","data":"MQF63bKUAlswewTdPzDK2dHO29QyPWbHeSW+j+sgFC8="}},"Qf1+a3hbHXqBw8FIETk1Uo3vNDIZ2YOTuq7HXlL8/1I=":{"valueMac":{"type":"Buffer","data":"js0IrJSaGWozBZcuspdMsawxDrGHdZxu5IFhuw4gaR8="}},"Qh1RBho+IMT8fbdPKoz33S/u47OhQ9MaYGRVY7aCz6Y=":{"valueMac":{"type":"Buffer","data":"aLBgG37oonrlx3tx96NpYaZyI1KAbRgO8+ToNSAKxXQ="}},"Qj5lEZA36Y8tCGiBDBB99TFGSW5hG9YWXb7i7sJBNJU=":{"valueMac":{"type":"Buffer","data":"Usi4xrCe8vNFNFqG2PzNSn9xUqCOii6S+MA8GQmGr4U="}},"QnvdycxXOMwqRXt7D+wpfEv9nvPO1pzlw7uVTp9Jw7c=":{"valueMac":{"type":"Buffer","data":"/8rnNH6IkQVsvHwkt+vCGnB98u29ls2RMKnTPQ4hAdU="}},"Q5WoxOkTRY1mZ6reGtiENYsAH9GzhTbI3RBDRVRry9A=":{"valueMac":{"type":"Buffer","data":"hEl+2JgHgUtDs+RADAswGqzBh5Vn+/MWkCPhMf3tEbI="}},"Q6F0lYgNNR2SuolA7NkLBoO+QcbJ02l7U1gYK1Jfrro=":{"valueMac":{"type":"Buffer","data":"g89KB62hFAp2/Orq8uty3qLyoP28pyMnpBTi3rFVeMI="}},"RDmeKQPg72gyaKh4kVMEjF7rf+TTQAsTR0/FMnJvNYk=":{"valueMac":{"type":"Buffer","data":"olQQOhXFiFPXrYoMaQR+OsyXrB75FMY19qvkt3CrU8U="}},"REyzDACpiB9TWOiwBd0PuIU8u6QlBBz+JPcC4rdPVPI=":{"valueMac":{"type":"Buffer","data":"roGB+g5BZcn+Q+oIxjGu+sW44oNqitwrjiOP3qimmas="}},"RHWpdyBMcEFX6zTekF/4b8rIj1b0OrO1M3H8iP9icLQ=":{"valueMac":{"type":"Buffer","data":"igOZuKWXZ2zY4E5QvzeUR8nC7QfHO1tU7ZH9XOX8kww="}},"RI4IAL9UqRMgo2YtW4Ao7fOmrUA1D6NLBPdQQxJjoEQ=":{"valueMac":{"type":"Buffer","data":"QynHHTd3fXETqVnRzWod9VcRZRpSl9/IasJVXxo47zc="}},"RKzhpyKgVa5PgbNwRvDlbqGjDJl3Wd60DoKKfdLRK30=":{"valueMac":{"type":"Buffer","data":"I0qOZQsfoaORvV4r5q1pYOdI4LEosoz7x5ADOZ+fsTw="}},"RPWud255uyWwTKqh6OUCXZER9FApyZywOElq+wnDetM=":{"valueMac":{"type":"Buffer","data":"59z4+BF8LgDZDsMVfpbeQRaWKmMqOhi3v0cM0chsK7M="}},"RjJPJe4zProozLZjE4vg7XsWq76BySA40Hd6c19mpL0=":{"valueMac":{"type":"Buffer","data":"zVixoIcTbjbGKVwBMRemSjgEcGBcB8Xg+W+tAls6/2w="}},"RkWixENzYttltiDCscVtzYHfpb+jeCZHOJ+q0KPkkiU=":{"valueMac":{"type":"Buffer","data":"czvED7l00GUQEP7+oyB+E4upz2jlAeVN+axFhGeq+3E="}},"RmoRLDIL9dBNUjjline4tK1jnVIIfRYl5TBRw6MXVj4=":{"valueMac":{"type":"Buffer","data":"us2LY0GgtZWfk18KNF/yIsewz/1esaSxDvBx/e/AqEU="}},"RzqjQAjg1Js6dO0ob9bGMEu9D6G0CZzQcqnCQqygcZY=":{"valueMac":{"type":"Buffer","data":"W3sLhlsqEKN7pXaR67JZo60rOs25v+1XuLXrKtiDziQ="}},"R0ngFUDhgPaUhMEuTlgbncTQqGCc2L3CYcQsidEfI4E=":{"valueMac":{"type":"Buffer","data":"2ZHY4h7Np/PafbeJp75KMyQDFXn63V0h1uBOukOMotM="}},"R26jRbw2XVOHvSB7os16+oOQnOzcWdPX8YtiI1ytsOo=":{"valueMac":{"type":"Buffer","data":"PfOLEPtFtHLAu6IAhw7MeZOlFGbwua4Q1gp0egPlepE="}},"SEjk72YNn97inmo78oDoxJEPQP2kBaUroALbwDLr3D4=":{"valueMac":{"type":"Buffer","data":"mnnN5Tpja/HOmXrGcF6UXHTXmZYG0IzumiBhlBfLO1k="}},"SgfvBc9ODHaBDfAxhHB1gSHjaJHZ9zpUBiwZeBIvnYA=":{"valueMac":{"type":"Buffer","data":"iRAoXVYhxTKFGdd8iwYM4Ep0+uAQP+xJmi6s13bbHxg="}},"Szo3HtelEr3L2yP2Yp4NrezQB2Vn7u+fYITy4ZQRv3w=":{"valueMac":{"type":"Buffer","data":"V+FdqkOtM5Fagy5JUDKsJ+AWOPf93Kg9eJOyjUwAAAE="}},"TDiR0LaxELn/chGw91mxjH2Fm9H41B0rGsBsEEiXLDI=":{"valueMac":{"type":"Buffer","data":"MNwsb+weKbVA4+Z1Xn2B+AyTH08DfDTDdCnjcn1uZMo="}},"TLaCo9zfutCdwtDm+xzns165wft2R/UttSk3w8/75t8=":{"valueMac":{"type":"Buffer","data":"xOMc8C5zTFfvfWOPfQqLsne9txrus+nzIlwpUBG0mhI="}},"TL/nthBdsUhb+cBexvSg7fRBf9mFFQYOKy3ZGMo1AkI=":{"valueMac":{"type":"Buffer","data":"BzVYM3ZooKKbJCdrR5H3C141/DEtTHn0LE6VVttctFQ="}},"TnKk8SqnlgDLok89yJxMXRgMFHPk1Tiqao3HKijuBG8=":{"valueMac":{"type":"Buffer","data":"49VXAXOwkVzhKSb7c7s0vkC2jHHrrwluCTdTinBrBSY="}},"UAkQSHJ1C7omKnPOwUx9N+y0F+cJlVw7BMgmqNZHer0=":{"valueMac":{"type":"Buffer","data":"9FAtUittcMrSP0olipsv8m31pJyKZVXJA2Uxtupz65k="}},"UJqE0TAulZDHojuk6yg52VVK2Zf3PNKBU4m+annHSog=":{"valueMac":{"type":"Buffer","data":"VNFJP0TLuLAeVOojIylKwSy9F68SaQ0HQpGYSXRimEM="}},"USsvYHBwyPE4aRyMPRsq8g6bsfD0NkAF0d/mRKIFQi4=":{"valueMac":{"type":"Buffer","data":"CtjlfiaTzQI/u5cPPiZMw1l8UzUqpOEkoEGpDsdv5fM="}},"UboIPmfctaujSQyf+hVNjNL+B89IWb7KaSepCaS0kes=":{"valueMac":{"type":"Buffer","data":"4rhK5XpCPn3uUlZN7SeXn7pIL0tblSXhTYLHll8dnlM="}},"VAUtJE5nv0MdwoGJnD0+JSYK3O9a7nBhMYfQniZwUwY=":{"valueMac":{"type":"Buffer","data":"95fU8RQQUlkd67M6ePX/pHQpEfWLjMthiyy6AQ72mVk="}},"VaE4Cj4SUPPeDV0doybn6jaNw5hcd4wYWCWwruxrxFg=":{"valueMac":{"type":"Buffer","data":"3mBOKkDhU6p9B7tC0Ege9pNP5+8eFe618xRN5IbQPl0="}},"VouD4rj4TJLCr1qT0a+sLVchHQvGZ3WaTOGWd7yNajc=":{"valueMac":{"type":"Buffer","data":"pL51ExtH3D4au+1xLQgyHO/tDLB1iQ8mkeRlS52Fqxc="}},"VqufacH7tn7fcnM2Ft9TtRZFyHNe8ChDQ6/6W6bcBEI=":{"valueMac":{"type":"Buffer","data":"K+4XvI+jfn9y9aso8/4V8Q6x8Zx4w/lRa3Y+XLSJVcs="}},"VuEv7jRTdTQSlLzYJ2bw59He6VKQMddC1sko5B/AGb8=":{"valueMac":{"type":"Buffer","data":"LRVvi7D3wbcZXCTk+LDXMCnPSLM2cB6hJFB7wp+GoZ0="}},"VyOYYiKIQ8cV4CbRRUo+u6yRD2mUCWPZEWwoG027DME=":{"valueMac":{"type":"Buffer","data":"gIbTxViEpicPdJVNuOkBVEe8P/Yca1psACCmW4LEysQ="}},"V0/kmgjbtDIY0YxDl5WNl0YM3bAlsksePk8kYWiJ9KA=":{"valueMac":{"type":"Buffer","data":"RQbq5pjDxn3P/Nx6J+tnL21E9aZSJ6dcRfBmBDG1968="}},"V2xPcWHeBG9HZsj3WdsBWEsHJyT/PsSYr1qJbvPWmOA=":{"valueMac":{"type":"Buffer","data":"EUPji0vxJaq1mHIV/t/n60IG5UPzzb+IWZnOo+BxpNY="}},"V8eGiDXvPBHbim5bDGH6cpTbGU4uXV0mPdAZKpBhwS4=":{"valueMac":{"type":"Buffer","data":"LvzNGYFqe46SLF4rc9ITvvpK/hxmjwB1H6QWjVBEWJg="}},"WCRucnDYqLy7SZpjPzp3nWxczzgS764bkHJihF3akIk=":{"valueMac":{"type":"Buffer","data":"AwAtXXlbOFh9RYY70EnO8yYA74xwdwA4IBfqZ01bN78="}},"WGUDcEl/Z+G+WfS5U8sqxViZLtlENCPLZVetz/ZYkwI=":{"valueMac":{"type":"Buffer","data":"wUG1BSaBueGITodfFRtdLCl0nkkwFuQR6yitj2p9Fus="}},"WHrcuP8xjrIo05IzhZ96oKLWw2KtoUVzgpm9yY2Midk=":{"valueMac":{"type":"Buffer","data":"RA7ZeLXmuEe4H141DhOOx47jMxm8LbYh5pSl8C5Um5c="}},"WMz7xQsgRgbf3HlwGUnqpvthxs7zNV1/SrFWBgAaNxI=":{"valueMac":{"type":"Buffer","data":"lYfijTyFIonw5SFBs3bjydUH/suDM8xymyBNNjemnTc="}},"WTga83MWVglHK31FqytJN0W86FnvqCuvdwqRoplytug=":{"valueMac":{"type":"Buffer","data":"OztF2i6B8Io7xJUgZQ+yAVfjqYJyfpWkbIyQwesDamo="}},"Wc7X8NqQWG45gkewf3ja1Yn0Iuz6C9WJ2NrRPdJGAks=":{"valueMac":{"type":"Buffer","data":"5MEpus3kbrb2xpNp6SmTFI0gsWgxXO54J0lp8CzSUfo="}},"Wj6KOWCoZucOuXP8ak0lgr1C4j+HDxhBNsCZnit11tM=":{"valueMac":{"type":"Buffer","data":"ulwyIWY/hQzVC1UUqjTpOtkYAf2xHhnqtWvqX1o1BNk="}},"WlR7xEf+8Nibc8gNvKsGZ2hrHtgCpT0kCltCfBLZ6rg=":{"valueMac":{"type":"Buffer","data":"5K4DVt5WDEjXkUImO35dWODNF86+AN8DVHAgbwJk1aM="}},"XE+8it3ORWKbkyqHaJ9GlblekZOJmIeBLolYZLrAvag=":{"valueMac":{"type":"Buffer","data":"NZwVA5K18u1UrnzdPjSnlHJyiTvFPQ6GjhEi0HasCvM="}},"XMzRiu4CXoJAP5uxWqtkIgCDjR3k/QcQjGUilhEgSrE=":{"valueMac":{"type":"Buffer","data":"PNmEo/S5dEstTQ+vChvn/ca1vPRKVkL76jPSc5l7J6Y="}},"Xm/Gv/17UAwJoAJirEgcHAMfIz9vrJNDeOVr1pq6nzA=":{"valueMac":{"type":"Buffer","data":"nsVFRFN4mO504LZzu6kiPN0LTdfnGl3TeSPNq3p+Ql8="}},"X3y6D1wadeuW/hwuXy6HlQpzU6aBrw/pqpX7dhFauGw=":{"valueMac":{"type":"Buffer","data":"tKd4TJ0mRlHv+Q3oyi10M5/Ik6Y9vgf7n4sMZm9j0KY="}},"X6qtU28dXdlHwpuqwBHDumoznZwBCm5yEhgHbvYRGWU=":{"valueMac":{"type":"Buffer","data":"PVfOTOA5WpOJkAPR1hr0PcA1zyzPJZTqaCMykxk2uqo="}},"X64W3eImW3WyVjlgPZd4+DAHbutffc2RhO0j/q129qM=":{"valueMac":{"type":"Buffer","data":"K6jGHt7XIC3zTpOED7NET79vHcQWF14kj5wgWoseK7o="}},"X85BioUAZ54RdTgRS23JTDblaapSjwADq1h7uUr4a2I=":{"valueMac":{"type":"Buffer","data":"uZirHNZsKbtUKS6gXoKv3aW9n6Yk6k7zY1beZc4/N4I="}},"YY+idj4OehwaXeWbxwAflKnp9DGjVvUS/j5JCdAvXZk=":{"valueMac":{"type":"Buffer","data":"l4CqE6+ARKrAyDuGo/dj4pzaKbPp/JPbXBwK/lGQun8="}},"YasOMGno5GKBrg76zakcixrhnKn1AnhKcHGgd/TTkzs=":{"valueMac":{"type":"Buffer","data":"Eis72IhfcMhx/Si3KXb5lZWE9jH34GsePimipdJLoXk="}},"YfFWhg7rBQerNLydTVunUXArNrugf8W459eEocBeks4=":{"valueMac":{"type":"Buffer","data":"/KR4AB1TeWqaZE1M9XKryF1WMOPFVK4RhN1k/1gijUI="}},"Ywx6ujulceKi114D7Q2RZRz5oF14s9+yzp95UMmBQjI=":{"valueMac":{"type":"Buffer","data":"k/o+2Vt09x5l5uLb6iSrkwHbmJ6SL6LPy6jY7uiiMIM="}},"YzOzC5j6XByf2Xdpwl2boEqLlbSSujdZYDc+oiJ5T/8=":{"valueMac":{"type":"Buffer","data":"VwUmzYuoji0UmFpKwJ4rrBhJgAfSHHVYosEHMMNYN80="}},"Y0NY+rNHT3nd29RDRvRCckUF4gLegghAQy2k0c0JIBQ=":{"valueMac":{"type":"Buffer","data":"7ijc4+Et2DddSw7Vya7g66fdgyAFml3eklacFCHOqkE="}},"Y2wsajl+GdP3waLYdVQpWbDTLYzfgx2Gs3goSQwiJYs=":{"valueMac":{"type":"Buffer","data":"f01RoEfjcHOP5Lkckj/0ZiLr63XbRPbKNiRdmGE68Ak="}},"Y8m58eopC8sHEd/Udh1HN7l4AXtMbzZy4cthxEF+4Fs=":{"valueMac":{"type":"Buffer","data":"6h5UGMk4NbGjr8M7RmhRT5SUeQoScKbfqWbsIDForuI="}},"ZB1utHO5cb0w92IkVHzfPmAvvJQHnDrl+jtDgy8IqQ0=":{"valueMac":{"type":"Buffer","data":"325/xahLnNpw6ExC5HN00fQ87ZdyUyz7Dw+EwqIRVW0="}},"ZUWzGFaPejGs8RPBQHrI26jh/3vzX9ANJiXzWt9BoFo=":{"valueMac":{"type":"Buffer","data":"TBYpnHIO/xC8hLnOeegpcpJAd4yS7sgO8J9Md9A66Ic="}},"ZVAPz9zKSB7ZXG1Mjc39Z44RufOD/YzyQHfNf9XQHEU=":{"valueMac":{"type":"Buffer","data":"9Rx0z+IFFG5ufUOmQCYL9v+DKsiVCX/ARsMuPu+zfLk="}},"ZW8+Su+wlmt8tn6z5j0yucaAg0kuMyK2qSdjes5Y95Y=":{"valueMac":{"type":"Buffer","data":"ue4iuoxWkCDeqk7ZoKtqqIEJlhuZ1WRHgKGmIDaNT6s="}},"ZY7BRyqHO64gbURkhTWtlmO+6KQmnzP8S7brmitynxI=":{"valueMac":{"type":"Buffer","data":"NiwYoegg3tTVoGCjMn3SGME2n8QgGaXEP3T9f+y/yeI="}},"ZbJ+NUDFQp48j9w2Whhu8mDyUQ9l9G0GLXymrN8S6/c=":{"valueMac":{"type":"Buffer","data":"lqNSboWyAQf5KOcufgQck28NLwnJbElC8L42RZAdZbE="}},"Zus1tT1XW/AQArXhIIMcpZr/hMe3IPGYWyxDWXzt/pk=":{"valueMac":{"type":"Buffer","data":"oV5WKQOiuQ8u5At3PEQzrQn7Tulxjw/ajP/hnw94I6M="}},"Z0NHI/CGYnbZPER3HjOCLEhhTYxM9vnuWIsc+1us8oU=":{"valueMac":{"type":"Buffer","data":"8dxosCpck+7eudW8tSD9gC3QT3/3Ge0GSAA+4liQcaY="}},"aASlPppGE/CVq3Nh/6tBP4lTIxGXrGDtH6F6a6n92aE=":{"valueMac":{"type":"Buffer","data":"Ow4sCGqBTysY3/wos6Mn+wPMIcbSZb9+kK2qxFAYYuw="}},"aD7NCe6U83Uo6452qTiFqKKWVvHdfS/e18pEkVZ6cB8=":{"valueMac":{"type":"Buffer","data":"H2syQTKYHa+fuy5gw2aRSa90KvRsZvUlDEDlPuif2f8="}},"aR7w22jvhD9OY70xZ6kt/WQ0k1udTv6smdwC9a8jKh0=":{"valueMac":{"type":"Buffer","data":"NxcbtBJcnzbAjhFEbvcZH+h2lL0yXKO2/Kg3m02+xMY="}},"aR9LC1a/U6Lt5PQL5qU1IAiTBBoBGwKT7OUkUzE+H6w=":{"valueMac":{"type":"Buffer","data":"hzqOLSSG9mG+v1afA9F1vepCh/3AzBcZQPmW4QxWZmY="}},"aVbtnhOphPaEHKTWDAnDVQIDzvK8lkdTmDKsv8xV8zk=":{"valueMac":{"type":"Buffer","data":"o2EzZC57DQxs7QsKk+uITSrBubJrTEBHMFb/DwPRkCc="}},"agypUY98icSq6OTdnjFzXum7F2wX5MOg2Lw3QQkRh7I=":{"valueMac":{"type":"Buffer","data":"fW5HYjpX/nwvtJUFwqvZV4jnmRaaOavfU+/tzt9jN38="}},"aiRQjn7SP+jB6J1iRuoEs2p1GVrRVc1K/RvAx2pVLJ0=":{"valueMac":{"type":"Buffer","data":"/Mwn85QN5qsUWq9ghfok5Bx4TPPbb9jqPxRIeoV+95g="}},"ar/Z7OjGFBAjnE/zhIarsXKCJ1VXzYjbQqJOONu0Hmw=":{"valueMac":{"type":"Buffer","data":"gOq84ahGCytwrkpSo3MecMgZG+thgM+2UxTr2WZ85u4="}},"a2rkx722/fzEQEPu+Krk6FdG/lNbDwGS3YwQj0UXz/4=":{"valueMac":{"type":"Buffer","data":"BsRpfy4aSYkesF7Q7BuY+Kw6QnbbVHsQLdCDjOY4BMY="}},"a4JEtjtp5/jbLp/lKYAx0Uoy2kLH67a4buveRbHNebk=":{"valueMac":{"type":"Buffer","data":"ZZHCxdffJURHqQzixIwww9gNCVVPlegH2XLLAXisrKU="}},"bS252nBC9vylduTESbGo3Omw1A5EyDD+ASrieySNM+g=":{"valueMac":{"type":"Buffer","data":"OfYjJJ5ff+ol+JpJ8+MOOYRuqUGew1gHbPJdcdqrSyA="}},"biUPhkH5cZpdMUvMzZzMuiWB5koi0oz6kg60vR9PpaM=":{"valueMac":{"type":"Buffer","data":"O1DmrpLN8tHczdzVFb0V5yATsCfOha7EIWr3CkzbIZk="}},"b41MY665fSIwx77Na2Cbw9XvAxrYZcy/7ctVJsGsdP0=":{"valueMac":{"type":"Buffer","data":"6w2UMj8kYKAdKND06qPtq5rd6jV/n7VR4CCWwlujvzg="}},"b7NwJSNKMESUDFASEwTZN2CC5EoqvL4Aemm/lHsvHi8=":{"valueMac":{"type":"Buffer","data":"KPrW2SodvJ/p41H1M5JGuoxMqlYpnT3NFaOn3E7dijw="}},"cRVInfi1FTGNDhxGsdpx/PBhove0ViM96azk6gB5SdI=":{"valueMac":{"type":"Buffer","data":"QgqKUKXe0PtChu+TehZ121WQQbTEQk6xUwQa4kro1sM="}},"ccvYWshuzkTvlcbqfybl0RuQM1tN2M9eXT4+XXWWp64=":{"valueMac":{"type":"Buffer","data":"ijfmTgpCPSH8fTGSMQxw2wvejCDR6R5/VmpACTDE/yw="}},"cgh2dYYzPT+i9YXwXGC6RCeaWG+SWJr9ig1kUakyG3I=":{"valueMac":{"type":"Buffer","data":"VY7ectD+IyQ/G0NF2w7pnNds8eKwnL3YvvmxsmE787s="}},"cmEEV8Q7lMH9fkCRzX0SuNa0XYlY3EG7q3wwRWatD7s=":{"valueMac":{"type":"Buffer","data":"BvfL8ADHRs8yyEkSOjgI9jrapW23MtMpv9QI0o0pM8Q="}},"cnLM2iWpUmu4u76JWCgYAk8kscb4wu0yP5UCjbA1MSw=":{"valueMac":{"type":"Buffer","data":"m8kdy9OwwP5ntmtK5R5BRCi4L+gSHef3IfTnS/ANnUE="}},"dKjlPWUgvILOj6j/41p1jZNMHWx1/OEUjPuopxyz9Vk=":{"valueMac":{"type":"Buffer","data":"WP925NNKuNjd2f/Rh7PweU37+siCP2dbkk50YS2K7jE="}},"dK6+TKVwwoHxOzQkN3G32N+OUgX5j3LKBKBWQmkkyQE=":{"valueMac":{"type":"Buffer","data":"mGzOl70wz60Nt53aQjJxzB10ThatqH/C26thcul2laQ="}},"dLEferN7LaPRog5nafcn8MYlE0tcUY2GOUICqha0dTE=":{"valueMac":{"type":"Buffer","data":"fQEmYGnzveTtqvdkxj3szeBuSwUzTRLWg+tcHzg4p1M="}},"dQP/4JT4LTtmkqMoHvIsInTJIYtYoFeE3C81BTtNZrI=":{"valueMac":{"type":"Buffer","data":"XkZ/rzijEQd3DXYsop4fgVZjXno97k4447QPz7vYFVs="}},"dX3Aqqh5UBZ7/bp6v2GfSGOIesc+QJ6qFdD4KQBYPnc=":{"valueMac":{"type":"Buffer","data":"8kGCtvNY7yrxUGz+QQyP/W3K2t4t8ynTgswQwu5rIEY="}},"dYLwbxCdoR2UhxZDbCuZ15l8kZ77JOlKpGmJzYo5C1k=":{"valueMac":{"type":"Buffer","data":"WSEY6dUdDVQx528kEC5K6678m6b4oAXEn6mPT2+tjjU="}},"dciqtCnf1x7r0Jt+R8m+bLtl2FtyyL5rzcITWAwkq3c=":{"valueMac":{"type":"Buffer","data":"s+bs4a6uTboQkEzh9tCws4fQZVB8ozNDUq1ABj+jnI4="}},"dqBa1iRmbdncBsc11skrbQ8tbrCYAGMseNIPVyeUonQ=":{"valueMac":{"type":"Buffer","data":"ifpAyzMUDv+mINKwbZxGnA0v4S5S6QF16u61oWgixrc="}},"d18XbOGEQ6+a5ALdXNRXrYxTbNNt157XxbJEp56shRg=":{"valueMac":{"type":"Buffer","data":"Mu+9TeDknFi67Bx96Qewq4Z5H0DHalQMrTW9pgpWLXc="}},"eG9Ep+BDWyG6+ZPkH9b4D0mHW1lUuNgYtWr2+9zDCds=":{"valueMac":{"type":"Buffer","data":"W3wsefJXt640e9VjKSbf0SEft2GdqdI45WxS8oLeulU="}},"eIhJ+bEhkwin9MQ8TgvkuYO/utqpOesmBY3j30IOgbg=":{"valueMac":{"type":"Buffer","data":"VXKi2Zakac+MFnz0RW+1tc6PRqbl4FM/IxTftaE/4fE="}},"eLYBs3WdTGDXw0HYmkDkYYzvjcm2C7tUCoHeyMAnqzo=":{"valueMac":{"type":"Buffer","data":"AqhSqHa0OeZ0Pf6DZ3UB2WspGSzFkZKnAa1hXse6d6Y="}},"eYu9A2oI6P7wFiTpGOIivzDcM/RnGyLIJ5HAvF5U6V4=":{"valueMac":{"type":"Buffer","data":"4nbtnLpW+kTkuiGYpTQrZH2dA0UVB9fLNvJnW1yjwjY="}},"edLS7jeEX0bibEiz/ol7eRaB5i5/nJL/KR/eM/pYjB0=":{"valueMac":{"type":"Buffer","data":"BRTtcMHPa+Ron34uVS0YGstLBg8cOQBY6baHoYib1eM="}},"ehcuMnjFIF5ClkwiIybj8QRDrS8D5yX9CzwWdfsFCYU=":{"valueMac":{"type":"Buffer","data":"f+q5v4eDIVrZByyiLc8Vj7EOK/dO1VPpozoMQNay3qo="}},"ekYfqJlFl05PRaDwLS0n0pINA60FpZMBfrb6uYovoYk=":{"valueMac":{"type":"Buffer","data":"wEZKK3BnQQ+49erxWj/Ot4pjywBcgXqTMsQAviwzQNc="}},"erdDx2/MJkwk7Ou8RbTiaiLmeN6fAHzQfdoaEonY/K0=":{"valueMac":{"type":"Buffer","data":"6DMBgN6FOKWZ2tYdV30h1N4JZ58h1xZ7YDLQ71Y7xrU="}},"ezRoqHtNJlFqu73LgTNh5pB9ZXqfdGfGWL+arjpoGN0=":{"valueMac":{"type":"Buffer","data":"l+H+hnM4m/mK0/1DYhyH4jdmwnBiBbLKU8pj+sUxW9E="}},"e2sr0hlo/Ce3tHQXBItBNNzKlR7aPFzvgiDj0JKqNnI=":{"valueMac":{"type":"Buffer","data":"1QwkKP62JsgEIuTK4irLBMicMZ5x4g1EoOmhUF2xLiE="}},"e4qFDTNzlXd9Dy7C+fKbrM6ZpjEW22lJqZNeTjUsb7c=":{"valueMac":{"type":"Buffer","data":"ZNc/go0jFGFLridApf3DpefFJ3Evp7ZfFkOoIeVxFKo="}},"fA3COrXytyN8vhb8/EOWEqUH0pNmXMRChZybLJf5La8=":{"valueMac":{"type":"Buffer","data":"4vWZxjTjsbc20Ba+gS25T6DluV8FB4QEe5vzYbrIxew="}},"fCxA5oeoUSlANVlAt2SALz6IKCinWHf0O68D3crdjm8=":{"valueMac":{"type":"Buffer","data":"xO3xEZTxfezR8EEDJ/bNv3KstOBlQ04RTanVozED8bs="}},"fDVP2CfO2HLvUvmOPhbx/7yWLsaQ714f+lXTKyVevow=":{"valueMac":{"type":"Buffer","data":"bzB6c6Sp3l7iojeVI30gTa+VDetYGIpEwwGordG4jf0="}},"fItTaxze2DvBO0iYGmfrx8dP/wiq7Bf3CRpQbZL0b7A=":{"valueMac":{"type":"Buffer","data":"1W6vVGFVSrFFNcdYV3cy43S+xxxJJz0LRP3lDTZDJ5g="}},"fQ2qNsDJoLtlkRc7vauReOgJF37WJL2HN1HaxPUxA88=":{"valueMac":{"type":"Buffer","data":"Tm+VwZp1pKrBstVI68QCVSXtetmrku3Yp56kbRDt8NQ="}},"fUbldZ4VCRQNXLt6NPaOda+/WvMKFrOAX65RUX1FADE=":{"valueMac":{"type":"Buffer","data":"HvW6rJdWPhPrM3dHEH3ru8RxEu3+L68ZV/9W1wyWPPU="}},"fi069zVLxA1FJw37HyS4Y6vNmiBWGWWs37Tf1YsLhX4=":{"valueMac":{"type":"Buffer","data":"9B/l35CJyT6vuZLPt7KFpQ+m1Ycpf9O5B49c/nlgPpI="}},"fjCqucDjFXImbqtfe1JXHaPbWChrYReIOR194IVwybE=":{"valueMac":{"type":"Buffer","data":"7HrsKrymZsutwLGu8aiDYcVmIEko0WCb92X1z4H4egE="}},"fqLUliFD9W1oPYPBZjZBzWxnnvy8DRypzkqDv3BfJos=":{"valueMac":{"type":"Buffer","data":"SQhETaUTCin37YqrUuqQ7m4dbjVL/BNOnXbERK70EtU="}},"fuh9vUTU6c2ssuC1dWTfZyU4RaDHy8XzGkVLSSV0jqY=":{"valueMac":{"type":"Buffer","data":"ZFIDAc/kdvf7pxOAihOzN47CuXIAuvyXkmnFieSpZcs="}},"fz5hX05Ac/k1KQPMac3wBC0oVQtst22iVoRSgPmza8Q=":{"valueMac":{"type":"Buffer","data":"V4DQ0vEiBU5wF1NjpIkwi0J2+D+LcKHbl97gkVaJsi0="}},"f+6j5qNXwIPmx0m/ZrmfVupr0hyWApVImllkUA0uRK0=":{"valueMac":{"type":"Buffer","data":"/DlRNNaJtBBVQtc2UbbnZK6kPGYWugdmg1GfNgb6XCM="}},"gPYzuVUXI0ceqlKPT2YWv592Bnu+qT9d/2ag2C+wvf0=":{"valueMac":{"type":"Buffer","data":"4NX8eW/LF+DMzW3oAkg+9DcGgzbJgyar0rqbXF4YudE="}},"gP9mT8jCysUO71jZG/GTObXGHw+MCoV+NOYnQz59fEY=":{"valueMac":{"type":"Buffer","data":"TnkKGFja57t1Rc209dJCsQrB0rqgpv4e5WbEmmAEtgY="}},"gQ+Bh7V3asX1IxqMGbmB7X7+lWA6tM74XPp5Cinzz+A=":{"valueMac":{"type":"Buffer","data":"qK/1UtQj/G45DVHmLxtJJVtrQeTGpTq/lNXiqLMA58g="}},"gc56CZLmxeYvNCZMY6/EUhWm9ARMfoIysN/djOaKxI8=":{"valueMac":{"type":"Buffer","data":"EUCSUC+O7SH3u+lLyYL2ERZa3PrKSMS3EdCjde25C84="}},"gki4mJ+xMey8Z2jR/38LUvLAIHzXCGZ7jhoMO0oquZg=":{"valueMac":{"type":"Buffer","data":"+O3cE5NwG36FgqaoX/+rbRSJUZYbKUWYN4b+sZ/C+PY="}},"gqiSwz/b4g5o+hy7bAaERijrAfJPqhlE6ifICTUG27w=":{"valueMac":{"type":"Buffer","data":"YoMUuTSDKShXm4ay697rjSgQnCt8dmhApbyF7Tx3GEE="}},"gvZogkETUvI3rMt7CVFP/4GfAMDE7k2gGnolU7Gb+28=":{"valueMac":{"type":"Buffer","data":"AikXjD+s2QBXEffgrtY00IaTo1peBnBVmYATXzZ+1bU="}},"hC28gFrxewpJSeFdCdP3+4jv+g6wW5VrBbb+jUKJcZw=":{"valueMac":{"type":"Buffer","data":"Ht8AlMy16GyMiN/baJ/9y3FC3SjTPCBvFKaQmxs+3zo="}},"hDwQjflF8TTI3+4weXYxU63t9npJW4gS5gqEgCMBuYQ=":{"valueMac":{"type":"Buffer","data":"XVYSZgpJZT35LXYfGWMOeegMPp2QNHM0Axncbwt5RS4="}},"hGEzR37mDDgoyYAapIRChdxYcgoqUIzi134yhHGu5S8=":{"valueMac":{"type":"Buffer","data":"MqsQe11L1N28dn7Ds6ouwDkLBBBNLkbaWBoC10rFfjQ="}},"heD+aombbROA2+M8QtgdHn2UsKCrpMbHLnmt/NvSLyA=":{"valueMac":{"type":"Buffer","data":"jjn7fklk9qVh1jX6+WPfgzeglBwUV4aSt3jHCW/r4LQ="}},"hqM12Hhdq1lNauouYJIfrRChzDvoy5avvsy2Wva4riE=":{"valueMac":{"type":"Buffer","data":"FtgpKLf/mPSRPUOgS2ARjXvX9645IJ9nZQIB3MCVsXk="}},"hq0T8NO6WIRcDRT7p0r0fDxGBscIze7TTUFQdtT3jTI=":{"valueMac":{"type":"Buffer","data":"F4oQlFhcoL6WifsiNZn5C5e3DsJuPsLHvIsdDGNgxoE="}},"hxDk2HajbaOhAtnxDUlPPFloWi3Ou1D+dpFwxK8FFao=":{"valueMac":{"type":"Buffer","data":"vf/Wf/0dAjf52VJfPoJ+Z7quwaDDd9O13vKpba6tS38="}},"hy90wZpLNbdiToYKmtNrMbL2gLhFfxMXekrTfwvfBM8=":{"valueMac":{"type":"Buffer","data":"CBsLpPRrcRHRm465DmtHKrtqMj6K0K6OBePLOLHUPyU="}},"h9sAw1srRFsjUKPMmLCk0Xu1z/aQbXhSBpajvyZUh6o=":{"valueMac":{"type":"Buffer","data":"rXZXIEVueipfc03X8hivAn6XCNBw80Vsy/bNLxH7umU="}},"h/bcZ2JsGkg6G7gH+tYZEpIrpJ6O63QhE7YHXXKe8j0=":{"valueMac":{"type":"Buffer","data":"y3HPCACXlteT2LxW9csLefuZ6V7zgTd9BeV16fa91xY="}},"iK21B17sTtu2Ivj2qBCKWSNC1YgwYfgvPd1CabKlaiU=":{"valueMac":{"type":"Buffer","data":"gfVHaMyUzo+VfMn4cKa6KvJKWgFV5m2yZPbO5vbbXCM="}},"iVEv7UFpVxw5lv9fQ3+0s3eYoIh//PGmZU98ENuiqxQ=":{"valueMac":{"type":"Buffer","data":"XONH0ZK20QJgS3h86I2483XvnLsMlJkwrFYybJxDkE0="}},"iWU5wjO+X8JN7bb0xZGXepGyvVdZayN29NG3zzWJ7mU=":{"valueMac":{"type":"Buffer","data":"kR7T4GcaHQDKNpHnGetkUF3SFQMxeDGhrLXh44XyFGE="}},"ilaVX8OL3pqPeLSvm6B4OSvXweUnJTCteBQ1RBfZVYg=":{"valueMac":{"type":"Buffer","data":"CBmtpiKzjj2/u6n09X2Ru6zm3H6baQ6c2lV4Hk/gi9c="}},"it5cHCQD9vTaI2paQXWfp7IEN8jTihhT4K98Gco/0aw=":{"valueMac":{"type":"Buffer","data":"ZkMT/R0ARSmJu7HHDjXAInqM2wIzpbNugwftd6vlJ8E="}},"jGDuYKTjNMTOaNFXPY8AZMAmJKuctn3PWTm+5HW1y88=":{"valueMac":{"type":"Buffer","data":"KiSb0tETHSdTipsmsvjKYEGwzVTV3TNK6BKrOJsnCdc="}},"jK1aBRTjz7gRa8tvgwwu8e2Z0b8zT7PEtx+h3wY4gy8=":{"valueMac":{"type":"Buffer","data":"woqfWSESjGvLRORu81w3ksx505baXpOEgvOYPD/GMzI="}},"jQwlViM3+Wo7gxJvLg2mKPdWbmP/xuLv3DBPmamCNFM=":{"valueMac":{"type":"Buffer","data":"QatFJFZ6yanKgXCGXJL9XXXj/zIe4CotXTiC9YHMwMM="}},"jq7sMdae4rEuBHmu/5IkcfP3B3WGHuKU78jGBIn12SM=":{"valueMac":{"type":"Buffer","data":"gVQXg2+223XMtGZj6MgiUax7Y7/Jqj3ffwDBtmvaEP0="}},"jvkVF/fE9g/zxvEaMugWkDTiDoNxF9P/Bj7/4g0eXgE=":{"valueMac":{"type":"Buffer","data":"MZQe2xpYddK6ER42ywNOTPQTepO1C7EZAUOqPLFpXLM="}},"jzvOQCtDLkudp91/khOS/bqB5AmoBW8sO6vAEcq1KDA=":{"valueMac":{"type":"Buffer","data":"GC/W8k8zkIV46yzkKhtp3iM0w3nEzarTVLWE7uOlTZc="}},"j7hu7Vdg/kXcDYbcC2JZ6ZPBevXI3OflUaXNinQFlbE=":{"valueMac":{"type":"Buffer","data":"i0M3Dow8cCBiFqZF8JDWp08dPmrTV/0f/fG1qTSTETs="}},"j+s3OSMI3Z9MvyTispPLTrE2Edq284FYKSt4R5geYo4=":{"valueMac":{"type":"Buffer","data":"4QVYtOZAIHqc4onVGcVja27JDzsgdfQoxoK14aWXkMg="}},"kDMK7qcNmacDOnYl+UhC4K2HTE5Uw2bcqnfrKVWCkrU=":{"valueMac":{"type":"Buffer","data":"gtG2TrVW/tUJUb6AwE8KQ7ycIFn12FDHq13CHwx7ImA="}},"kEdP/uc8VBN3i4Hqs8Lh2G9PegCbLohTdpvGnBfCcgI=":{"valueMac":{"type":"Buffer","data":"S2FYYIn4lvJaTWvfF/TtNQdZumd2D9kLyIInMLGXMCQ="}},"kO6EyltvNpFjRSArEK/baH2ddr0TpfPXTRzKJM6hIh4=":{"valueMac":{"type":"Buffer","data":"nIf9R+tVQLQ7w6tKoc2qkX58+ZHB+cOA9y3yfcq3BLw="}},"kPLByjupKr+2qCF6t7rRA8frYfPeXF9KYWa0vW/ruKQ=":{"valueMac":{"type":"Buffer","data":"csj2uTu1Xr1va865gVcaVifkW/6I6zI+dSD7jEODcU4="}},"kQ6t15KAs6AWgqK1JBIsBXqC5nRzWypMeaG4OjiG+bw=":{"valueMac":{"type":"Buffer","data":"7qp1GoxDvMLToMxhXRbXpm1ewLg9c0Zsbt65BYsmCCs="}},"kW3MH/BHTClOajzevu3dUadEbJvli+cFYqg6arHbg0c=":{"valueMac":{"type":"Buffer","data":"chp0S8urSVMnW9wHlwxmAcHR1k7udrLX9BEFjsYF08g="}},"kjuz755IUjS0Z+hdWIeyoFUhRxyT7rgvBdKXr3T8NgQ=":{"valueMac":{"type":"Buffer","data":"W24TYUtup2Y3C9VYJAH4HaJjcdXp6zBCbksGSmuxDA8="}},"kn00/MSA+ecibjMj55mMRRBJZyfk7xb+klxF2crBHj4=":{"valueMac":{"type":"Buffer","data":"8WMtYQPdVZ98ibyLSr9PA2sUkF02hH2MEa1ZcirGwfk="}},"k6tlCROjsPZtLTPP9XLmtA538sj/HR5FUkfvb1+l5G0=":{"valueMac":{"type":"Buffer","data":"g5E1XuSvoKgZerZL5fQccXovp7FKLyHuitEm+7wJevM="}},"lBbEi6Fs5ydgG3dAlg0sZnoj77WHsbvIoqps3d81HRY=":{"valueMac":{"type":"Buffer","data":"cajt92iScUI+zozDwLfuRGzSRms3d259AU2qCEak/2c="}},"lGsf1+Jir6ewcGrZcUGxULzLb8yZyiA680HiKuBMEp8=":{"valueMac":{"type":"Buffer","data":"ny/yG4QvbsBweMZCVfb8Px+cZXOjsh1TEIcfdjd59Jo="}},"lHbUBUhetRLloDIMYQOrJLFBpk4nCSMiEGcDBfGTvQY=":{"valueMac":{"type":"Buffer","data":"Yo1RJfEoBhKQ2lk7Ws26LpLNBWS7s1xCJfNBvj6BhMA="}},"lJWXEdToTm8AXjbIgTYupdt8Hdg6t/CDN2FUEQ3HX/Y=":{"valueMac":{"type":"Buffer","data":"c8pQXb7XAqiGyEUAxiUTkcoM3isBxLyJ0QxJHl0NI2g="}},"lkp7Qar9bIq1DfbtsI2lUtUK8J2FYJNr2M7dkh0Luoo=":{"valueMac":{"type":"Buffer","data":"j1XBvrkMGlDd5k/hR248Se/pACtiWrw37muhZ3t+1Lg="}},"lncbuhGaoaHLm61EOP2Wrf8hUvMcQcXfWPCoO0IgXz8=":{"valueMac":{"type":"Buffer","data":"tgVK8fvELoJbqpkt5OZ1j8KP68GZgkFGRRMumZQETmc="}},"lpN6RS71dHov4hKtxlJ3FHLvrGXpI+WlX4PKp31YArU=":{"valueMac":{"type":"Buffer","data":"+aViSqz9gJVZcYuSWlEOyTbpCqVqK1dhkY2DGbwchKM="}},"mPGyB4SR9yEXiSEQU3d35pFJ0/rTnti3hJIbW+OK0qU=":{"valueMac":{"type":"Buffer","data":"6XEM/9Zoqwgn/3L29ZEHWtGZOURwl98qBp7YRRmYLLM="}},"mSy/7sX28a85eoE5bVuP7/On8J1RPwO0lprkaVMBnsQ=":{"valueMac":{"type":"Buffer","data":"R5ThaL3jRvU6j1ZGuo5CF1u/+VPNJ7w5lZE7uSuQqqA="}},"mTYvagII4irGyntPJ6QymtU+dZXs7a9DmH53wD9uJ8U=":{"valueMac":{"type":"Buffer","data":"5yFtV+QQlAYcF/U9SxYqcqvYi4YsPWxqxNBRgMw7ccU="}},"mVfgMRD5lyUVJl1qknxJQ1pxiffaWVdrzvFd+QQrO5s=":{"valueMac":{"type":"Buffer","data":"H4w/HdAnCUlfx2UxKwgDg6EdPeKMK3i3uvHPpyI8ogY="}},"mh8Xsz+NfsJgYnu095cpRW+qlrY5YgMypKZ0/89LIE0=":{"valueMac":{"type":"Buffer","data":"N3TVgI409WP4zaDT6vbWu9V9LWl2UIHGRFoxDiOd50o="}},"moYnc2QVFd/Ew7LRITcFu8MPp8/gLlsjOFMWzPYE1h4=":{"valueMac":{"type":"Buffer","data":"TqKFshKjNRGvR4BcIamnYr2aPTAOtw1/DSs2gffy4eY="}},"mqqUAsCEXt3qbcE0uEaQMHEqDZk3OVAI5mHiPA4EAdQ=":{"valueMac":{"type":"Buffer","data":"AQC7U378sB/5kocFM6r/TRsB+nkyfnyyHeYYYetFBso="}},"m8HsKHEP7Uaa+xl+hVMq8m7XTLRJf6hUYnItY62Zmd8=":{"valueMac":{"type":"Buffer","data":"sz1SsdBvc65Q+lp0HrCJeoIY5ixJhA+XRHTDSRONMZs="}},"nCnFukZg2YzITMUYwdPsTrC3dbo3056IOKRCUHMPBeQ=":{"valueMac":{"type":"Buffer","data":"pV0rYSCuncDTk0NLFApEZK0hO9M1IVBeMCnk7mb/weQ="}},"nVQ/9FqRD/EFIYiIIPtTT7C4XQ1SgxC5M306c+sFlxU=":{"valueMac":{"type":"Buffer","data":"hkV1GF0kgFTJmCKl1BAU+ZrJntOA5bqsoMlATyFNUUA="}},"ntxnO0fwRFnLvJyuJ1vDelKOpqTT1JsASn3emBZfgGQ=":{"valueMac":{"type":"Buffer","data":"26+0NP2ZCyXJ2+lWUU8nigbQ7aA9SAQKEX48Oi8GN30="}},"n1Mk7QI4hZETKAyhJjfIk6K5ZHEHt8tojNEeyht1GSU=":{"valueMac":{"type":"Buffer","data":"X5JJIgRq6r6Hf6OEA9koNl8YHNy1S0XByRDMtFbNlDA="}},"n5DPhxJ8fNK5oiWftgqPqs9l3uQtpSbStqRVFyfvQdM=":{"valueMac":{"type":"Buffer","data":"GZXkc8lnrVTyjHmftxG8VEUW4MA293PEZiKcT7IBHPY="}},"n+4tKTRlgCWCnz2HAN8fDVljsB77rM5epUlRfxEko/c=":{"valueMac":{"type":"Buffer","data":"ghxX0wLRsSx63nCvawgQglu59ibGyGYsf/SrD6UqVgs="}},"oEOA4iHfWMkzuB3/Pisn0PQ+qF9KU5YRWzE01Qw2rAQ=":{"valueMac":{"type":"Buffer","data":"dUNmQD6KNoboP0Y6EnYqEma8Epmr8P5n3UV7XHY6+VI="}},"oFwuzUOT6Au2YZufMVhuyPrzyim+348mBIIIotF7xz8=":{"valueMac":{"type":"Buffer","data":"a5CZi1RCHP/0h51k986mGIvLU79mYzltKZSChsuz7Eg="}},"oIVV3ZTiwOyGmw08XjGTQib0/g5lJlehfCR3r2a31Ng=":{"valueMac":{"type":"Buffer","data":"APoYIgEj6nEnQXtEs5SQmUrFm3daECGrqLAUKS2/xKo="}},"oR8cPsmeY4g2pjq+1Hl5hv6RS60j1/mNjD1XQ0sYTLM=":{"valueMac":{"type":"Buffer","data":"aZhS7Gpxt7IhHABXapwboXUkKDvio8phTzl75rh9SyQ="}},"oqhLgMXFx3Qv7rO1VJV6MhwABQqXA+7daH3KjmkEA7k=":{"valueMac":{"type":"Buffer","data":"zgjFIAqTBhE/en7wjRuPapFfToNWvJhWI3etFCP3fbk="}},"orkH433AQm0D7NV1MVbVD1D4xgst7xuTdH+O3fh99II=":{"valueMac":{"type":"Buffer","data":"taJ39Bqi/KnLdQMp4/o81j+cVyaC7Zby0ZVRC5GpTJU="}},"ov2gnK0Bs6UI+gIPsS7x6bPii5MRwYkRCqcqBY/gf0o=":{"valueMac":{"type":"Buffer","data":"auJH+IeHXDHEjtcbI9ujgR/dcdwNZy3tYLxRSZnAGG8="}},"o1jKKb4RPNNoxtRvFUvuwIKv0FUHNiwBhzFHDD46Woc=":{"valueMac":{"type":"Buffer","data":"n4DyBbc/YqX6PV5d6EsxpDVbQPGNS+ltgnX01i8tYo8="}},"o2iqsyhb9ssNQq5JuDZbbVw67yrQuVfZQeefXuxXG1M=":{"valueMac":{"type":"Buffer","data":"ukcEh4ighVHBAdyfyJ9cq5yHnqGSvCVnSp5KBi5lcWI="}},"o37q7YsrWFB6hWvjzY9SWRAmsd0LqNNsZcKks8eD/wQ=":{"valueMac":{"type":"Buffer","data":"niePyAfLKayjfoxdjYDD2163MVQPOPjnvGPL813pf0g="}},"o7crPt41z3xT6bPcDEBxUJb/zZHT05l8qlOzkoTU3Us=":{"valueMac":{"type":"Buffer","data":"0TZBWXQAFKmLoeQ8+O2vsCA/98oFV5QR164XprODnPY="}},"pB5NSCpriEWdDTDmKzPuVWoIEFuFStwtQ4Bg98Bp9f8=":{"valueMac":{"type":"Buffer","data":"n9u/atXvnLhFyfti6Um6ysWcqErW84wTPF56HadePHc="}},"pO/w9JPMP0Vr22IHkb/CYd+fsq8MVbXkH1BiRsvuQEA=":{"valueMac":{"type":"Buffer","data":"u7E9e0EeeyqBZMPcxTO/cc4e2dYxhrahtC1XvH33lEM="}},"pQIwcp09/kPtQ0h6IzK0PJOaX6CBkDxgw3Zs3P7+XHU=":{"valueMac":{"type":"Buffer","data":"pzVxyP10QD2DO5NKuTzRUS5ChOJ2fFgJq9qyypr3t2U="}},"pSIKqLiX1tBnlxcwlazIFvNFzMH2RSM/h5QPDXO3y3Y=":{"valueMac":{"type":"Buffer","data":"0sTygx/XSLqzGntXJ5ie6rHEL1+K3CGQae6ddi1rc4c="}},"pUXwY9Ec7j7sBjqDk22+bE9jixU4GkTRxXUUe7X446I=":{"valueMac":{"type":"Buffer","data":"Zx2WXbe3qEUZKQpbiGI44tc0Z1bTuUA0JnXAntAvmbo="}},"ph0hdOsVAgPk9ymWYGAmjAr+J/kIhlXjW3rp2qQtlj0=":{"valueMac":{"type":"Buffer","data":"TWowo26/hccvsPvy//uunpylNrz4gN/rtn8zJyL9B9g="}},"poo6ECQqfjO4loib0ToikZtaosvlTe0vZ+yuh/YDERk=":{"valueMac":{"type":"Buffer","data":"tmdYA9TmXQJyIzeOTNBFGz08MVLgYI4xQScRwJVZ4eA="}},"pws7ukCe8zmwyHtbPm7XhG9sYVHLT2OxNoXnU643m2k=":{"valueMac":{"type":"Buffer","data":"rwjUeOniRE8WpvnXKVGCOSXoGCUbIJxtkRq89+aYRv4="}},"p0Q/Hg20oHRQsuf5yRLAed6Fb67BvUYobX7GVPQ2BZI=":{"valueMac":{"type":"Buffer","data":"AyDpAVIiWkAK9Dft0/NBWdB/PE1DNOSD3IIk5Fvx87A="}},"p75aGrf3aKzeRrMdUyBB///PtEr9e+jkbQ1m91LZRA8=":{"valueMac":{"type":"Buffer","data":"0ACu6BIQhJ+NHW+8fmnRxDhECO7oGviNgd9OZqawWKI="}},"qBC4sxh5C/lctMAiZaznLpjeqj6eOyCVkVhjotoBGDU=":{"valueMac":{"type":"Buffer","data":"6P9ogHPv3bh0AYSI0RI8HaG2wz5YXfDo+/TJnZzobD4="}},"qFe+kkILINh3sBBDEuMXPeBUu5lrWw4eKSMn7mQXsqk=":{"valueMac":{"type":"Buffer","data":"ukbPLrP8bbARlztRpsxCGET8D0VVpk84NIyifKUI+TI="}},"qJ4CRGnHsNo9wXA/8aFToUKPF+Ao1Bi2GqeiojZUkk8=":{"valueMac":{"type":"Buffer","data":"a4vPrmU9sjRiu41kJ/5YuJjm6PfdUpBkXjEYmRNqgGU="}},"qKlwd4MuTb6QZU/TTtuCFKQyJ996PCuJ76Jj52VC1Xo=":{"valueMac":{"type":"Buffer","data":"K8zbf3hLwfc4vEYHAl4RqFO9CkqTfnn5+QKY9BX6UpM="}},"qZGnhlb8yWJVUUk53wLPiiKTwWap3QTx2YpxFrm40dA=":{"valueMac":{"type":"Buffer","data":"DeGGp5Zo9r1gpKAMXju4+LT1rb0fEBjd3dfYcu0inyw="}},"qfjzer9vIrnenz7vbeGlkMfcifAS4/j/iqoR5fMinwU=":{"valueMac":{"type":"Buffer","data":"4/G8PHr4MGRYqoze9j4Vx0sYinw0ZCJDZQfPqZ0Befc="}},"qhrUXg2+7oBLIFIyCi4gVqSgifNNFZq055Pa/qi8kqY=":{"valueMac":{"type":"Buffer","data":"a3XpQvqhiBg3RFqpK1oos3ZCjUzVpH0E+TYsX8q9wjs="}},"qkjCwoW6IboJ1CMa3zaGj41cacly9ebOrlSzcKS+QHc=":{"valueMac":{"type":"Buffer","data":"snC1M0kRalSpwnetqIrJeZW1EISP1vbbaxdz7bOY6LE="}},"q4WrBGFGJT5MVq85pc870B+X9ninoi80fA+H49c5pJk=":{"valueMac":{"type":"Buffer","data":"Z8Oq7WkqgIOVY/JGDnH3hld5Cu2DZbnOvYLQU0dJZzw="}},"rI5yVS38EYhCPAUbp1dQXVoZgLPGgHwqZFWQP289wiQ=":{"valueMac":{"type":"Buffer","data":"aOoxTF/nTblbv5KD4mnpIc8H+J2+4sPWkT+gmHPJzYU="}},"rVbb9wJlehkbcVQ6GCdo+GsST+V9wT3tzvEu1PzqDiw=":{"valueMac":{"type":"Buffer","data":"g/7SfFXx5ucKH+4qy43pL1DJiT2vsLygW6bIQpS17cU="}},"rh1QFN4O/G5ArObnU6s4XDFvvFfKS8zZst2G+DgIBWA=":{"valueMac":{"type":"Buffer","data":"YLkfZFV/LCtkExOr50OfpEDNToUIM2RcUdGnYVIMTWc="}},"rqn5Sx3yakb8jyajwKdQXC1twNrg5NxX9N9Bq7mNXzM=":{"valueMac":{"type":"Buffer","data":"UCMC5sFK1ZTTCWmbE+YFSNGWVdf1p5OGXsi8XVYeqQI="}},"rwTRfhZboKvdMjyzDo3b0fyPbcpeohkw2IWtihUlVno=":{"valueMac":{"type":"Buffer","data":"djoa74/tq1ctcyad+PcL3vq3RFnslrc+f4TisgHs5Bk="}},"rwvYIyHahcm5RdPFJDyaYT4HpeXcXrK7TY+I/hlIfOk=":{"valueMac":{"type":"Buffer","data":"3zIIS0TuPruk1s8RYn+/aHIFrYEVCoArx/uaowl+8nE="}},"ry6zMdnSEYkzhbsEd8LgddADh4hAeZPuo+VyaG1W/2o=":{"valueMac":{"type":"Buffer","data":"BGippjBsz3Fiq0kf3D4BjvRWeR+pNnrA32GiJ6i+Dzo="}},"rzFHcTkWRfvhhyE4hNYSW5wcCOPK51dEGsdbg+fSu+s=":{"valueMac":{"type":"Buffer","data":"r1ItqX/OatQhn99l7ELZCbhYtvZ78gJp+trTAaAJrG4="}},"r8ULfpyGfhOmnhvIilr/r+8A8e9l4iO8ej22aH/ZRzo=":{"valueMac":{"type":"Buffer","data":"p7xGdjBrJ3QyfV7Npkb436+TLqnxT/8M0zV3dVjufFw="}},"r9s9dmQ+0GtzNYaqTS7rGlOVJCzE4YT6QKB1Y/OiI0Y=":{"valueMac":{"type":"Buffer","data":"HMWwXfgZJ7dLUIfAIUx0ShwoEyXx5K1h3T0RMzI7oqM="}},"sA7O5E5G2TdbpXSa7i7Dq2A+qiix0Ut1/KOf7H6xSBQ=":{"valueMac":{"type":"Buffer","data":"GO42qKcj5APlMwFopN5o+FzFkQKnYCVv4RnvWfrFdCU="}},"sBrPJBHzCAMRCw3sIaBj1gjlXS4m9QLRDhMIeI4qVoY=":{"valueMac":{"type":"Buffer","data":"+HZj93No6BPHmzbgRkRMf11rMwEWtmwogv4PtQU3Zf4="}},"sDj2Gt6k0FlyhNO1l+1y0R5ybiPnHLn0wuGd9vxu7qs=":{"valueMac":{"type":"Buffer","data":"yUGxuYEnd+SrWwjHFEDDTXOQ006FH0WckMC1WxeJ7B8="}},"sNpOjY+XlvAJHS3dRVu91044+gh3TiJjCJ7uGd24y6k=":{"valueMac":{"type":"Buffer","data":"4hIqRLMiD08NLc/aw7tQA5R7wQi/oaqW7GZn+PUreN4="}},"sOLO31r7ZPZYBQ7F2NUd5QUSgX/TuUwbwUnYXCDv/yE=":{"valueMac":{"type":"Buffer","data":"6gvVZ5bgyXGq1uBu3t6Wxq7+hKDe2qwhLtfwdXnufrw="}},"sfAt0lKlOR9muaKYaSuDchEVBQlHA0/rr75M0cBOLnw=":{"valueMac":{"type":"Buffer","data":"IANmCVaVS2/MzAyZOfV+QF3C9pK+BzvucP1irU+3VnM="}},"smqi/j/K5OMBlzNUatNoAaW5rcqLE+1dfe2NYPoZv6c=":{"valueMac":{"type":"Buffer","data":"lb6yTqAj7ca7rHHFwNczBWwdoUZFvd1DL6Skh4QgTY4="}},"svec1yLyPeH+w3fCKUihKrAktsiLZzJScP9BvuCJxdo=":{"valueMac":{"type":"Buffer","data":"AZ76Ubytx/3vYzus48oeE5lXH2bgCcAaAUZYg6CgB34="}},"sykiBgAV2AQZOLWy6AsJAqEI67MHSKybmNGWqj4eC8s=":{"valueMac":{"type":"Buffer","data":"aNfpvQa6Zq3Kd1FnsYjiRcppNxlomU7sjTmwb2/JEOk="}},"s59E3+wE5O9AkKGyUsSYqQDLxPj0V339lLSnA7T6uxA=":{"valueMac":{"type":"Buffer","data":"g/h/tCTDAQctwgBF9hzIZi46SzSdtY6tEtuWItQ49bU="}},"tGZH9gR7sQ4oy0SqXhaTQ5IoXaLotaKEImUjNHSkKk8=":{"valueMac":{"type":"Buffer","data":"IWpS5TiE9eUIDL73RRYusFt2uEuUaHGO8e97U4NlMBI="}},"tRirpjHLM7w6bxNqzk1eQn056yfOV+Mi3HUQi/g1EvY=":{"valueMac":{"type":"Buffer","data":"VL/PDEpUxRLEpIY2p9ilqfo6yk63pVYoHjTp9DcZmOU="}},"tdYu3MV3YI4+14zwhjFmiX9L9qymVSggx9nJodz8tPQ=":{"valueMac":{"type":"Buffer","data":"PgJnMOc4r2MFjJbVqg3KFgevl8Jo2v35+JgnZkB8BA4="}},"tkyxZS/xiP7fp+T1XkqeTkWiLvCjp5cuaHFKHZsLeBg=":{"valueMac":{"type":"Buffer","data":"Af8CBotzjj/jaz4f6qiXRrTMx0FY5LjCig+4vQi8IHk="}},"tmnltIo7VmLfaN7yetiRtgqv22ioS9SX3Jv9Upge/90=":{"valueMac":{"type":"Buffer","data":"wgeaurC7XBzRPKNRzGUUOJbskTXvU6VLrr2XPBjwOIY="}},"to+a9MDS1POTk6psq4A5YEGaEiJ5bzuubsQ40MO0vv0=":{"valueMac":{"type":"Buffer","data":"2A6Zxr14/CwgmKKATKcIy2PO0EGTrb2YxQXvWfadncQ="}},"tyoxVVv64GOlzTlhnYZGKzUrqEN64aam54qHYPASM0k=":{"valueMac":{"type":"Buffer","data":"PJoy0kTG5Eo9We9QyerK5aXvxC2arsbpKa9aVypiXyw="}},"t0K0hwanR7331q/TIafuNhLKjuQW0kFT6uxBPxfj3Wo=":{"valueMac":{"type":"Buffer","data":"u3cWJrejgU3BKa8b+Tc15ABXYsGOW8tvMt9Y/vHUttw="}},"t0b1eVmHlNajYlomASRSZLmanSptAvqziAnBR8EWmws=":{"valueMac":{"type":"Buffer","data":"HouTybeHWgRYnDZsPzA4vk5w7wFdWprEuwY04h45YmA="}},"uPi71tjLpEZtREMETU+xsEyQbYbJh2pD7VAAY9niz5k=":{"valueMac":{"type":"Buffer","data":"fqVc6qNqyrJjxMYy3tXdAJ82G4cvkgVBcUm3IjWFIUU="}},"uRVJTdKkWOx2u9G6q2n53yA1xyDt/z42TaHzsarVvKg=":{"valueMac":{"type":"Buffer","data":"ARfyKaGhettCN5BIzgc/u9aHD9AV+qaqNAcian4ignc="}},"ubnUi6PUCCyQQ/hMUuIXYzHOkq4oUSUYdoViu4324kM=":{"valueMac":{"type":"Buffer","data":"5Nm8ilFeRtWLyWK3wLH0p5WzNJvOFCyhByI/r0xeLHA="}},"ufdLRzyttGkDTrcp09IbGN4INdWi3nLZlOV1fZ0e67g=":{"valueMac":{"type":"Buffer","data":"LcmUl4gks0CxHZyol383Isebs6Q0MWFOGnR/d7rrarE="}},"uiXCPMf6UBhYGrNL3NJPNk9CWUJgN8fCuiussCEZNgM=":{"valueMac":{"type":"Buffer","data":"P4XQTrJsTq90OshCC+4j9PwAQ10rJ6n9k/tUizceP7E="}},"uwiKqbP7vLdKVIi87Id3EX4AC/zL6Szw2yCe/lIiMzY=":{"valueMac":{"type":"Buffer","data":"AO4BFmjeUdJtlMS2W/BgOJNVHHW2MDnAex+WvDgbB78="}},"vDoRvIdkWSVfSWBJh6DEyl/rxsdS65/q+0wHtPemhg0=":{"valueMac":{"type":"Buffer","data":"FTNYzhYhjYomSJXeilp4h3njZJkfV0BJd0CFeP+N7e0="}},"vMDFmGltOQbOf0XWtDKan20p88Lq3QQuhG+rHeg/JDM=":{"valueMac":{"type":"Buffer","data":"4DbIEfU5pJifLAYhQALlP3jL+K7mk4jdsvYewZwYNb8="}},"vbG2SRfXqrFlrEM/BMvG3rDfuu2/WQKTJGYORjPs4jw=":{"valueMac":{"type":"Buffer","data":"N6/qqyvENb4Rw1wEg7/knjXJi73I/RKFpllO2TOIKhE="}},"vgzJJu+4B7pCHBUKFMLNL/PDF2HO/jYR9YBX57AS9mw=":{"valueMac":{"type":"Buffer","data":"QEJgnurMmGfGoI3HUz/cZ8RjMM29UKt8GDTzM8hV58Y="}},"vhvKwFOKjhEiPd74Yk+KMycQVFapEsyzM6w0GEFYoBM=":{"valueMac":{"type":"Buffer","data":"drCETtW8ws98gqPtliji0l2rbVVc1vADGQ3zS9hDD2Y="}},"vifkfmWxCwBBCeQXD+oLi0btBl8nrSl0x8QHOd3duKM=":{"valueMac":{"type":"Buffer","data":"cSWfsnKf7ixouqioolEC4JkIIfpCPq8InkbIeOdJAMo="}},"visbqtq5MFvo8+HyYQMazM2Z5hQfBk03zXL6PmREQkY=":{"valueMac":{"type":"Buffer","data":"hTsDc7cR5wcZoB0K70ZLrONkOdBeB2QCqSClOWl7alg="}},"vi+wTcrWGdTt+6lRmDI+/Miq5uM2LcMAqEbLeQP4JHU=":{"valueMac":{"type":"Buffer","data":"wGeR+uB4dRtNcZJDw4tIJtS3JXSgQP0ZhfFs0drqqNY="}},"vqRKJa1IIa9Elp0CQvXYdGyLH7G1lnI0q0RI5FJ/eV8=":{"valueMac":{"type":"Buffer","data":"SAXNde201p0tEZIoVl7PWv6f3V5tLFbh/w2zfX7V0OM="}},"vqvrHdbAq454tRfJxKSqd9Zo7zjyriEnzIvrKDUuc24=":{"valueMac":{"type":"Buffer","data":"2DCGnAPnb7AMJCO28KKwpiZ2VGfZ5oyY/MMNrnYa3GE="}},"vq1tjCJtPxiKb7Jzr/Wrb4Qj2UhTsrU7Bpq96NIobhY=":{"valueMac":{"type":"Buffer","data":"IQnW4DEBksyjis8BJLI7exN2nDM2zXQ4q2+f2I6/op4="}},"vuH0xOA3Ejm9eRgcQ9rIcSoHDeLYN8EY0M9gepew4Lg=":{"valueMac":{"type":"Buffer","data":"uQ3A9jVrlufMcd6jFUyzGb2cnPQKOrrs7Vjo4eRDJDU="}},"vysHLUr48RdcKKyre8i/oah75OD/5ZI/SJ2FbvC7+Uc=":{"valueMac":{"type":"Buffer","data":"hf5ZZ1MPN0q1DyIeBUj+3bnTncsU+PCrbIsnmO2gAGU="}},"v+GEKW5l++hNlLiqgWX6hKBgyt3qQMvSGFdWf2cfkC8=":{"valueMac":{"type":"Buffer","data":"0neShuP7sejxfBEk2l3DEMxdrNndr7mIMfqtoZfAtW4="}},"v/yM0PXpqqPuzbhDNfI331yjrioYTn61jeiiUdiPNs4=":{"valueMac":{"type":"Buffer","data":"GBGNWWb2UVRerXlsHIuyrQX/PHp3OCqtKiq10IFVs78="}},"wHVBxIHUwPLGfxueWyi9cijAoRQJy+b9S9tOt+kgKyM=":{"valueMac":{"type":"Buffer","data":"yQwbGim1Wah+wu2427IyiWaZ2nIJfvJT+JAvT5KTnwI="}},"wJ7yAE489Wzpm7z3dkndoS1Pgh8ZMKVuJHiEGjYZjRk=":{"valueMac":{"type":"Buffer","data":"CIJkx20ShGH7XK3KFtE9BpuQv3xFuvb6jk6WHm1htaA="}},"wRwzSjjZtwN2K63NaNejI1lF9JlyMotTakzws+pIO4o=":{"valueMac":{"type":"Buffer","data":"kegdonYOqR9eMH1Jgg9ZiRqNQ7rNYxQHi/+JTRHHH7o="}},"wSFMG6tNMd3bZI5OBrbVphgpE3ePotaVUJ9vCNkLdRs=":{"valueMac":{"type":"Buffer","data":"OtLDo7XwZvVe1vgu5077o9smxO6b1ByRI57DzWZcvgE="}},"wTa8O0P+BAyIssHvUzwW+BSKYuYzwQLAQe7KONNqOb4=":{"valueMac":{"type":"Buffer","data":"hOA9P5fK8CXaPDyL8y+Kgc8B9z/+meYI6l75VQmBVbc="}},"wZxm2E8MYdez7EeYXUYEtUWD5v1YjL/g49S20DOfLbE=":{"valueMac":{"type":"Buffer","data":"ZmugGV0IusqaM2jJogSf4B9CewdsCCxUBbVLzAoVU8g="}},"wjFcauW5Z971YrOGV9f+FTsxQ2Fv0rdX5gJt7GmlYgA=":{"valueMac":{"type":"Buffer","data":"mB6UqBx0hZKcKv65e8PxDvb2aUEj9efbPU9HSqyPDrk="}},"wnHFbRBHB5OZ+v515zKZ/6HXfHcoMCQ9ziGUC4CquN0=":{"valueMac":{"type":"Buffer","data":"oAH+JmRRJ4B8/2FC0BbZs76kMWkqbmLWBS32KUgOOm0="}},"wsMiOE8tU6l9FTtj8w+7R3nhSQ/JwCFYJTi+5BX4mYE=":{"valueMac":{"type":"Buffer","data":"7dayhVr10ie3OWBMpEnaKuOV24ljxndg6wrVJgy8oMg="}},"wtJo/Zj6mQWhPCPmrvylnD+d7shq8sHcgoP4dPzX4wI=":{"valueMac":{"type":"Buffer","data":"2kc+AroP/3n2asm7sA7u8/ANO0Zx5wtE66gI9Ad/9vE="}},"wyxyYumcqgiww7EKBv/Fr6V6AXHPnt79jo+9onV1FD8=":{"valueMac":{"type":"Buffer","data":"//Zl7RaQvRXqPVJdpNvyVLNNZKSYPYHHDazPwuZ4HsM="}},"w8yrdslMdq5TaHUDKVYnvLY9q0wifu6Y+h6eErb3N+w=":{"valueMac":{"type":"Buffer","data":"gcuNmg838JS49qIxZ6zFCX/pASGw4OnHi3TY9pcKly4="}},"xDODNxFG4ywHQJJGfEULmTVHa58ovUChyaKQQs7+IoU=":{"valueMac":{"type":"Buffer","data":"AJF3LAf/EIJdPwzFXKZsBWJKIdEgKhv6ORyeuc0c99w="}},"xD8blX8ZseXM/tBuzNYP6cznFSsYm2nxwEU6ozsznsA=":{"valueMac":{"type":"Buffer","data":"8L3OgBSNd/OlYLbKu0A71XorWOaWiZ9MFWd1TknEUlE="}},"xYvzY9LQdRy0FhR/ZD6YgQZEHpzBi8NIeWYalSNAhUg=":{"valueMac":{"type":"Buffer","data":"hq36mPxCnN1bwVy5kZQ8DU9QApl0U20JGRop5FH/KKA="}},"xliriX4cqksvMiGQMZxMbn1sMhhdUk79/GDZmcPcjCo=":{"valueMac":{"type":"Buffer","data":"vHTjg/iUZIARr/MMubRNQ2kNdDzCEKcveiibxbTlK5k="}},"xwTRd1NMiC6anAEui5UPLncaQvsa2h8NsV88nNLsdqU=":{"valueMac":{"type":"Buffer","data":"5UVPjbCcqzcdHzsTarC0GK76swp8pOrm+fFDzALSWd0="}},"x6MsKXrUzC8xcazgTL6oWZDxEUp5T65B3ek0D0kT4rE=":{"valueMac":{"type":"Buffer","data":"rvDvVPPhHoMZpgpCnNxRKi7JKTGg5oLWXjM8UtfevoY="}},"yVi7X3Kn4iNSciP+PPBXs+oH08SdOA4Pm8w9hLrrUMw=":{"valueMac":{"type":"Buffer","data":"zyEAOr4uED/uIDVNHq8IbYFI8kOMtLZQJUchhd5TwSw="}},"yn/SUhGvADpUaJgYZLKqdXnFWUIvk0HiB7iL1r5hnko=":{"valueMac":{"type":"Buffer","data":"SHteN+FplmnG6RqwbWanaP6WKssNtfbsg4hWVmOstIE="}},"yokAA1R4S0HHZWlF0IeGCMnZv+kqfEpZk9ukAZ8/QIU=":{"valueMac":{"type":"Buffer","data":"BSoPQ0MpmTFgaKNonyvgDRzxfDy8v4XWR0w/f4P+pdY="}},"yrTzOhhL465Xcv1BZ2ys16guMI0mGKuP9ybGDnRVtKQ=":{"valueMac":{"type":"Buffer","data":"5GkOXDOF9WZnTksMjcuInl+YBedRI25okZ29eyA1Zx0="}},"y1FLUeimUOTNgpDMLEaPTzpcp2QEcbw0X3NgvX9DZS0=":{"valueMac":{"type":"Buffer","data":"Xrdf3o5VP3Xdtq7Hm/0OIk0/n+/1snMUtLW+ddeguFk="}},"zAVLyqaM7Ov2E7Arq73BmD3HFNifqnDngvqvYiHaGog=":{"valueMac":{"type":"Buffer","data":"JGzARwNw6KXCYsmqSXw6w0e7bBdzxY8rd1eTxX2PTyU="}},"zHbpE9bT05HTDzcZzIHrPNcJly4+3arwAqpjiXefusE=":{"valueMac":{"type":"Buffer","data":"eQJThOIB5qM/sHESrYYGFQSe3ptSiNYqPV7m5vxgZG4="}},"zSzCycrWMSmF0C4p57UbohYTjkytV9j2LXUC9XyPErY=":{"valueMac":{"type":"Buffer","data":"D+kNz+Eeo0ZenAvZyhbG8oQfCFvrzstJdhVKudnTUM0="}},"zYy069a0zZMyhsVmMcsHX8h7tLZz6C1vhniBkjVBcTw=":{"valueMac":{"type":"Buffer","data":"jBgvlZCZ3g9X6xt6YZ7ezAZSDh+jrvQrGavuQaxqV30="}},"zhqKQZHSHNpmVnu1TsL+UmrlApkaC9d9EFAY0NDc14I=":{"valueMac":{"type":"Buffer","data":"xlTMOjhshtItacQNmQHQFJIHI5Si3IMz1EYiQihqiFs="}},"zme72QiN4VlZNYdir7ivGOsr6b7whcAqBCz4I8EqYdM=":{"valueMac":{"type":"Buffer","data":"0JyywhgAbikMweykTpXJ5zx87PnTfAncxjttBMZBkDo="}},"zzz9O1lKGfzK+87U36kStSfvPmUEB4M0XGwOq9PuzVc=":{"valueMac":{"type":"Buffer","data":"wBHoi2TvErJWPAVDDZARmVupKhZNzTxRTDUzkO35LhY="}},"0lTNfANdl4ZrGUr3hNgGDfqGULh+mGv7AJhSZ7aw53o=":{"valueMac":{"type":"Buffer","data":"6QV3ofrtLIHkRHayiDOt/u6B8sIVJrtKMbsHCl2sz5o="}},"0oWPSzKM9Ul5btZw5whyDcM7qmt6VhQLqhoHZXRCBYc=":{"valueMac":{"type":"Buffer","data":"Gb1JQ9huViHR5hU60ltJai0Kou8FNlwtO8ctiCQEniU="}},"0ocSLT/meQMxCBKV9xiJDxA2GP3GYtaXKq80sbyT6Tk=":{"valueMac":{"type":"Buffer","data":"DuodYDB7IvN9TS6JNsSKwypJ8glQ7C/KWx1oP59h/K0="}},"0qGnutu60+ury4Bv/3dmk4nE3RvcjWoEZuGZqGPyqD8=":{"valueMac":{"type":"Buffer","data":"keazIZXV0isnkmIH0f2D4VwVN89/s8F0D717NGJHXl8="}},"0vzCnAtkVNm9aQlCtn31oomeKKx4t+G5HntIvw58A48=":{"valueMac":{"type":"Buffer","data":"ykn9V8JlSPyyRqSybCcvqJ6Rq71CSflQrEtvXJO8jl8="}},"0zjGcceXar5vCJw0B0CLtpTXX+mwzgHWZExoKofAJ6A=":{"valueMac":{"type":"Buffer","data":"vZJlFylGndrHj9jPMex4J2344uml+oFG037bqJOAAi0="}},"0z29KQaHjJEsdrkQr8sV2oyCCGpdQxuEUd55ejub+GE=":{"valueMac":{"type":"Buffer","data":"Fh4C2MbB5xIWjPaTnuvxRd/cd44GndNaS5IlbCVR1hI="}},"03AnazEccQdcFt+Jc9y5KGE1mZz1N4kWDaxdj8APygY=":{"valueMac":{"type":"Buffer","data":"NKxIxgwwQgtKA9PQZ7/kY+pUXx++q9lGAmLe0XRJTuQ="}},"1C5fTuXyWgIpymVttFzNNgm+UpqjDA3h11jUF6FJzs0=":{"valueMac":{"type":"Buffer","data":"yvYcE0b395VoVGIB+swWKab/kE9ACUK2ulNXJ7XXpwg="}},"11id2o9pRFkHUoC5ojPaxIYr5W10RIZqy7tROYIe4Nk=":{"valueMac":{"type":"Buffer","data":"c5xM0F483IHjc4WRTnBpP7HJbOSpd7POlKzEyCiIW1Q="}},"18ON68BUdMVpp1k5zjXhidZzQfboxmCmFaiwW/RHOJw=":{"valueMac":{"type":"Buffer","data":"pZkt3Lc264vL2IjqQ5zweGF9NhOPvW8enqrPETY/YLg="}},"2Q5ho86tBDnvMio4Q7yibXTf7FDnG8zQFd2nO+B4X5A=":{"valueMac":{"type":"Buffer","data":"JacYdDLOHZ4gpCC38nEW8OgIYFso+r2r8re60iftVSs="}},"2mDO92UWrCby2EfDY8y2rG8SitF5wCk4U3pr1mFyLic=":{"valueMac":{"type":"Buffer","data":"/uqoUn9Cfr9xgRnNnvtYDPk7+V5QOzm6QewaR4oZaw8="}},"2rgn2Sj3He/XrHighFJCUZZII3xw/zHC/Tv0uDbcGRU=":{"valueMac":{"type":"Buffer","data":"ar9Vf90+DseP5Aacv7ElGI9P6ZqsDrNVTzPZGeORBfA="}},"2v8hPC/dIm7gD11O0fPO0aJLA/qjHT8d9B39xzhwe24=":{"valueMac":{"type":"Buffer","data":"4ZnNsMm33zmXgxDloAFb1FYRz696puudX9zYusOIM8I="}},"2ww4Pb4zn/FUOk/Jip5ce/948XmvwkeGbbkM08xkeug=":{"valueMac":{"type":"Buffer","data":"an9E6zJGOt1LcH1Ox/D1cpzokU2B2a4QV42Rxf1LRk8="}},"212I8oweihmyCP2223i7L7JHoE9lyanVxDahoRPCNlM=":{"valueMac":{"type":"Buffer","data":"sMnTX9o3OXC1xqBQLHnVsC9cUnpFBxKz6zTeRVrJZeQ="}},"3F1065Kw9FfYiYZOLs2ctR6akeulZRgAzvlq8LdEOLA=":{"valueMac":{"type":"Buffer","data":"oxymEHiKVsuwyZbMxUUP2veYuqQfX0SsqttBP2z3AOE="}},"3YfLfgqUXeARnw093cFDdIy7dc/LTzUJev0BGixQLaE=":{"valueMac":{"type":"Buffer","data":"/nYH+4fTqfpwC6C/75lOf6sjNHe0kanH10kEK3OiSDo="}},"3opMxb3iZgzRGmxPbxNoOUoEO+yawI+edzbu5zUqH6M=":{"valueMac":{"type":"Buffer","data":"Es1LKnXk37xiVFBnz15BT91VWsxi2x41sGs+zun2a5A="}},"31bWpOnKH8iXDuF8h8tbNxmdVBVCfxWECeBfThSx5Ag=":{"valueMac":{"type":"Buffer","data":"yPsgzTQ7DPG7YBlzabvs1NJ63TQcrxH5Ww9Ymfb7Vz8="}},"334zb0nj8Fp3k1F6bGItMtLnZfLHky/45XG6ftruHTQ=":{"valueMac":{"type":"Buffer","data":"SjYTLdhYdfSzJ2ucdSwPTBtbyUo9J4OZuEXRUytPAk8="}},"4I2io0xVDFRV047JedsKEIGNq6YiyfEWW4H++0n+iy8=":{"valueMac":{"type":"Buffer","data":"rCSEf7jIgxM+KmeaKp1k8pqJ9A5aMZKFaB2Z28W38B0="}},"4Rp5jLz1YxecngXAh7t1nCP2DfDBgQF28Okfyxdh6Xs=":{"valueMac":{"type":"Buffer","data":"KjZ8vYMlRpIjgxyuEAmqWvtLcJS0wiUfapCEoxu0gAI="}},"4Va1Za56M/fYHJ54g54R8xJjHxlvz+HJpeVDucuGAcE=":{"valueMac":{"type":"Buffer","data":"vhb1gqga7S/pIRbktkBBYZrfKmio9JLUhxXbyG6pzk0="}},"4Zu+WV+MJeAwCLm4VnVTo/SzdL9NEzv1ifAhNFrMH0Q=":{"valueMac":{"type":"Buffer","data":"Xf4nYLq4NxkC2LNvOIekozQRW2qhCwA/Hozl2BKD4XY="}},"4eaOWc+7wBsd43GXpeZZu0Tm3gI5xVMCT7wofIjn1CQ=":{"valueMac":{"type":"Buffer","data":"5lZf/1TKTCziMxCkY/bePs626LSRjCSgG+pdpsLg6Hk="}},"4j1ylRLii7nLRFmRPr70njgFcv3V7FTY0HzGQDefwEY=":{"valueMac":{"type":"Buffer","data":"t3mMUTgeFk8f7KBrkyWfBg/P9HNRbixy7hltOGLcr7Y="}},"4qFk7HllBtj1j//WXtUNG7sZBXUG6f52mrAfPllLlDQ=":{"valueMac":{"type":"Buffer","data":"5Wulg3WtI/H5Xa/RJWUlnlnBcCHMBVIT8i5ItENb7Uc="}},"49Tf95K/xt7RVM7hSELsrr8jk1uXf9q1Sm+s81ebU1U=":{"valueMac":{"type":"Buffer","data":"cH5Eu/Ngcu0nqK+soRaTm+1oJ15sTcndkR2P+qaqSQE="}},"5S1q2aQS6jGryE7Vt6JWd3pznmh/3OmuH5g61bDcMO4=":{"valueMac":{"type":"Buffer","data":"qBeyxEsHQXXhhqbCVBkBixzDatQ7hOzxGVw3CiZkDec="}},"5b65XylI1jKSYgxrsVDx36Df/yDhu6hW4GamokXK53o=":{"valueMac":{"type":"Buffer","data":"5QG5silxVklVbh/+rbeURLVCTdEft3EEZGS5EZ6fBZI="}},"5lrk+B5WekQBZxXLTdT7sSrk0nECtexS+QSsHXFLWps=":{"valueMac":{"type":"Buffer","data":"dfD24TdMUBI8ulfGXMx6e+1bJki0/EeDCtZfZkkHhWo="}},"5p8o01l0RdUip3i7tNCkn17dCYITbYFRdJBhuhbY38w=":{"valueMac":{"type":"Buffer","data":"56OpMl/i/Tz5vXeQO7bLiSJC3V9nYuCcj2PqK7ueUhk="}},"54xUGhN4F8LMtpyBMUiqm/g7+tU62Uz1QvrSQ42t5xY=":{"valueMac":{"type":"Buffer","data":"a08Y8dR9dOgnANo8qjgfqPYcqyXdRu867uhh7GcT6+g="}},"6GCNeQX6szkvThDsJClVyVtwmNk8djwABcBI+LjezdM=":{"valueMac":{"type":"Buffer","data":"W0iEo4+51/7IwoBcaDgctoEC43ARdj8Du4xuaSXPYcA="}},"6GeBVN2/IwCF5pUCP72mC/WSYNPOX4F1c7D+Dr8XBCE=":{"valueMac":{"type":"Buffer","data":"inTfGqEUHiPlXml4D+ePnie7clO8CW65ctJ92Lf41B4="}},"6Oa1CwswLGuNZwWMlDKzKC1XeelaSS7PI75+xb/JYCA=":{"valueMac":{"type":"Buffer","data":"//nZ+TwHatz6+DwBswbvD+BZUe0pNz6cHsLDQdizy4I="}},"6ShM9YrAydLTqcEWuzka03l7z8MyjngbVTdA/4YkDpc=":{"valueMac":{"type":"Buffer","data":"mbqINfXwxVfvtldzbCOMTvQorRe08bGwppr0OHwzqm8="}},"6Z53ZqldeEuKJU7QDxiuAtmFLmRSIemENKmkWXtJARo=":{"valueMac":{"type":"Buffer","data":"45f6wJFYZ7XNOZUbsJyBUKlC3VqsZD9D1tv8nrIZyZk="}},"6yGacL4jJu4RXew8dX2stqAamJhF7xu7oWZ6vyMhkcw=":{"valueMac":{"type":"Buffer","data":"5WXCsolrD1Di6woTNqf43cjgPp1LnbKLEw/hWQ6XNio="}},"7CR2Hp/MjFC1fgv2CaWixXMFlwiLZVipi3FRZqm5QCA=":{"valueMac":{"type":"Buffer","data":"IIAZqERBQM1ZmlrUKGEZeU9mAt4ABo8ZbFcdRSYNCgQ="}},"7X0FX654PkHBu8nboTFQPsdlIjoRg6fAYHODKKxQBjA=":{"valueMac":{"type":"Buffer","data":"rYl9uP6pylkcBKH1fz01dLziMc+GEoLJg/gm4E9rhNg="}},"7poGZu5i4JwkWizjJ1BDPTF7Fmcyq6Nt3mdZKj+/6XY=":{"valueMac":{"type":"Buffer","data":"JoLWBManVY3Cme08MXxRIa5U4M2ER2OcFJHT8bOnQPc="}},"7qFHzR71q3JQFa3CVfEGahfwplrrDB4N0/4J3lBkAL4=":{"valueMac":{"type":"Buffer","data":"f2YxcxAVyjApcSdpKKU7vEjREHaHeIw2VplyD7cMb1w="}},"7sH8nCeQweFDVctGqCg2Cax+aLYwVezYHYzT/JIyajE=":{"valueMac":{"type":"Buffer","data":"Mm+7aRRq1jGyNwmacs5NeqJVhldLlBVKs+6Yd+gClP4="}},"7/0Oin/qi1PbV5p4mAVSZg102hhgwA/tpc4PZ5/2vwg=":{"valueMac":{"type":"Buffer","data":"Vxpbva1QZ4QKnl/oN0a5IBENWbOs7EHiDXxXJOx1TDE="}},"8IH8HGTXLTKa3il/3kmxYmAVJ3A+Fm7Ba+REb0PiqyU=":{"valueMac":{"type":"Buffer","data":"1uccwz8YQDttQ242lzkxFNPq6zzK9aDrVtzfL9jVYCA="}},"8Jwft7qMVwFuJlmWIOlRDc7sfwRJGWdE+B0lNFH1SKg=":{"valueMac":{"type":"Buffer","data":"2mM9gzkvJDwXTe700ehayaCFc8cHYnzYmoZgkiKi2wU="}},"8NSd3Ns9DnSOBcu+5gM8YzfsRzfa2dun+FyvBiNN5Ls=":{"valueMac":{"type":"Buffer","data":"UVrEq78yTgZ3lGy7kQZXG+opBOiGC5V7pLVgQlUHLkA="}},"8Qes7CGvxMk0NMSC+My7L1yCP+e343wC+MXII5N4yvI=":{"valueMac":{"type":"Buffer","data":"l7CCrb6W3sRtcOMgEd6iIo6tvZ8M8PIGjWDWnfgM1JU="}},"8cOooWrOm9SbPw+jYJizp48BJAmCEJDdtnJiRjBFevs=":{"valueMac":{"type":"Buffer","data":"2rGRto1Nh1d7f55PaCVJmAkJGHzgQ2/ae7oEeh73Jw4="}},"8gGgUMvlGUb5LuzYFdUfS31Iw6xeUPXBokfFnZlgRf8=":{"valueMac":{"type":"Buffer","data":"tL7lrbaWcVSKqpMwpY47XM9O+w8kWTXIn5+7Sg8C+/A="}},"8m7KNmmFjOKNh25oeDb7YHZnEWrCd1ghUKUC+hbW/VI=":{"valueMac":{"type":"Buffer","data":"xQIf0s5oenP57hE8OdMtkpBt00UAMVMMcwUjxhKQrgM="}},"9AYcAa4zNFN3oSK5aoUwXG4jtoM2phaoEeiSfgxp6KY=":{"valueMac":{"type":"Buffer","data":"GJvVPVs6UcgXNIjMawcUGWQHRSdZZLgY9rE2XvGqpzw="}},"9HXnrzYPZ0Xh8Kho+3T8Fch6ZOLOIgZxlDe7h1h1sAQ=":{"valueMac":{"type":"Buffer","data":"juR6blRRHH5r7MAitS2cE8gexELQBOrv/sKJPEMRrag="}},"9bIfQRaRIb7wSquU/cYwt5DDaoIsSyQtsZHRxuhAKzs=":{"valueMac":{"type":"Buffer","data":"24KG46xy2cIxzJU8ZCG6ShbRYDvk/JEWGAvGxTjOM/U="}},"9o5o0Zl1jXhPIB9UpxEYbEACxhi8BjeEuavpXrKNLiE=":{"valueMac":{"type":"Buffer","data":"TQlCGNMFUsyk2VcAcTuC9Ranni9+GnQm7HVpWszR50Y="}},"9x0En4blrYAcJShXLOu3gOMA2mLLMddPBB1fVuo/cN0=":{"valueMac":{"type":"Buffer","data":"uYcv22O0wOKHi2DGAx6QHX9+Yqkvt0QgS5wUJEr9NME="}},"92y2qYJmBMnQo9C/oiiVqa4E/xui8Zlvr8w6dxqqY8o=":{"valueMac":{"type":"Buffer","data":"vcagWl7DBWo3gvcpkgbfE8ZspMxatJLwxpONFmLn81g="}},"94zHTLzn/NVSJ2RNiDS3fUduy0iqMijDd51xuLFzhPU=":{"valueMac":{"type":"Buffer","data":"GZRyk76JqPAzFF+BopgbNwvrqOghBcKzZ7c88r5Fq7w="}},"9/qAE0t3Rh7JpyMEW2+PTvo7RfGBBxEa1DGAUnE3C/I=":{"valueMac":{"type":"Buffer","data":"Bkd1Gzrt6qGDwzNPO80BHxsWfLi32xjl4n9PKV08oZc="}},"+DNIsCKTU7MLBuyXXuwfIOoXOzCe33FQ+xfdnlzB0ao=":{"valueMac":{"type":"Buffer","data":"mdqzhejM8njp+rGbh885+g6JtU91X/h6y4DLmhLf3Gg="}},"+LmdiqmUv8toGg+7N4iyDm03OhC2FjrS5copcMW+f7Q=":{"valueMac":{"type":"Buffer","data":"KoySoyNyt5/hQEIVxNGjJNW1sgH7QvIcx5t1xSwM6KQ="}},"+R08HeL9zD6kE36Ayl55prgRORtya9FvDr3jUag35Yg=":{"valueMac":{"type":"Buffer","data":"0sy7W3m2SmA/4l7d+2m+3FE3dBJ0DLTg5QIKoDXRyJ8="}},"+mujjx9bwcrF3Tw9xTOwunFK9gsGDp2pQREW4qndsNQ=":{"valueMac":{"type":"Buffer","data":"IgH5LTw/UBrRk2CKk8rQQ26Q5jRXFhNJ4Cgnqu8s3xk="}},"+s7R74o/yqUhMiBhVprgIYz7dAFlTROumWdpCp10EMI=":{"valueMac":{"type":"Buffer","data":"34hMwiz93nk82i4jxpIVueKDVG70sh/T/Cu/y6POjTE="}},"+y0L/e3ZXc5HXxC2nP5ZwVggtnnDZ4hKPzhFUF+e3aE=":{"valueMac":{"type":"Buffer","data":"p8tbCw4i+GPN0MTT2vGxE+Zkoq6BIc+cfBMOvmByIDg="}},"/DisQ1n4mT1FYiDH6Oljf+HxndGKLwO/XkfgA5dE/8Q=":{"valueMac":{"type":"Buffer","data":"zwx1FmXHZwiJV5Sp+jQCX1GSVzTetjItZKLgYI0YtH0="}},"/PDRgbNTNgRJXl3d9txyh9z0+zY3++b9Qp5BYuTi6fY=":{"valueMac":{"type":"Buffer","data":"lQpqqLWoGUQyMFnNrUHrt1mri1TyaoE3IQSiakC5Gw8="}},"/SvYXYZEj1RzPILUnScN0QXexu9uECGoFwCIQc9iJHk=":{"valueMac":{"type":"Buffer","data":"vyU+BU917mgF7EUxi4DFj8uU+pcZm1q+5BWW3AxkPCY="}},"/UQss1VksyJj7L0mW6o44vMZSTqSQljClvbhBrHzZU0=":{"valueMac":{"type":"Buffer","data":"gS/sWKm9+ZvDxcnPeWioE1+GRmp5aojxBIvKWgdQUjA="}},"/Z9gu8T7LwG+C1q3TFCxJUTbD1MI75OgjZ4v2C+lypI=":{"valueMac":{"type":"Buffer","data":"9Q6ENEnQYO8pRyl8o2H4gw4ItkzB+ZHljuhF+yIyArU="}},"/foimLgpHScwz/ciDSnLWUPdJEoBy6NY6jEW6B+IamI=":{"valueMac":{"type":"Buffer","data":"EE1GxwEQX5pnePtSEY+ncxkTS7z61uYbGkN02cwfWAU="}},"/kudJaA+ghr1k7BN1Y0ZPtx+Zw7dWKQgXvhDlFqHfqc=":{"valueMac":{"type":"Buffer","data":"CtAsCmsDxF3J0C9yNmv44yRC77RkFCBomWZgZFoMOP0="}},"/zJvEH78HY5EbVdnWKeR7vAPJyCncVTbjgl4SbafNX4=":{"valueMac":{"type":"Buffer","data":"mSpmek6k8XmrQioNTPUyw6awPAMtNUHm/4tgU+/w3II="}},"/6xC6RghvoZK6Grd/7SHPAL7lbQVwWNDjtyIHxxsgkM=":{"valueMac":{"type":"Buffer","data":"8Vpsw7CITkwfKMFrKTjkQwIsgBRaWsTyFU6XXxmKgME="}},"0VwvjZQU8LH8teqZA28sUZ4utJ38WBM/WwZ8JHcbvHE=":{"valueMac":{"type":"Buffer","data":"psRFj5Nx+6b92ONv/ma9ZW4WmkM7Ryv0FJE226HxEN8="}},"qRtYyS+1N3SP4DwvpzMbgdP0XgcpYevy85iDgQoxVLw=":{"valueMac":{"type":"Buffer","data":"jS9Vu0aIi+li5A7Owx0DA8QVTRFbvBih+/7Y1Td289s="}},"LoO4ZM8Et4zqMEOMb6PHlT+Bejuv3GHDaN/1T6X6XN4=":{"valueMac":{"type":"Buffer","data":"Xaip/rJvrdtyCLncQb7iq6eyEEKhcMl/Ea5ShwWN5as="}},"2Jad4lD3NBvZhFE7s3iJtdpimSaB/cXfMhCQCgQvAmo=":{"valueMac":{"type":"Buffer","data":"qhKK6PSHU8ePwzzsTObri1ka3WR7b+ucE9xuZO9+VCE="}},"sGvSqkILyHpNoUhl6rLq1PqF02MANeWyVL8AexwJx1M=":{"valueMac":{"type":"Buffer","data":"TSGWkvOdB2+YmiG1Fi6U227A1KsR2DVIpf/jNXROw7A="}},"yo7Tp9+3HBC2guFI6mjZisU8+4elqk/eX1idSgvO9fE=":{"valueMac":{"type":"Buffer","data":"y2v9g/xCpi3bg3blkQkZrb+NhGOCtkZgoUp1nOeVozM="}},"7McfoRdTgFAsNLkCAAFp7lnnb9KRl6w6DfQkc09XOOs=":{"valueMac":{"type":"Buffer","data":"eVxSV1ljMAa0qVvXEZSYRKBbF0+zJ2Q2GZ8MmSexHp8="}},"O0ba9MC6S8wQPD6kwR0X16niqB3xO9gav8/HGGo7+kw=":{"valueMac":{"type":"Buffer","data":"19xwtnpKyw2/EOED6moxTHppZp+8XTcLL2T2Z6gg/GA="}},"51wEMtkKjecM1RvqHqd9UQeaAEQFC/zhnDWSS/Xjz/c=":{"valueMac":{"type":"Buffer","data":"eZETUHOeDcYg1kDGcnOXffsKcJHgwBpqH4rMZQP2Yok="}},"Q/3H1xFYhm0Zft6wpX58kQ/iKi+XqMxNKy90sH8+CAw=":{"valueMac":{"type":"Buffer","data":"PUyAeYtLGLcenDQ8jX7hnFG5fkAY5n5bnhAgEZ4awaw="}},"Hf8oQFjiwARgziowsEX8GDcqyOIVgaBubuzmocGl+L4=":{"valueMac":{"type":"Buffer","data":"saikeEFDvAGZEBJIXOl2g1D2HCSUwshFdvpoPPxuGis="}},"DGdavuk7QFk0irTLtmBQAYe+/aLVRUXs3tfTWuO5e7Y=":{"valueMac":{"type":"Buffer","data":"TQrB+bJpvCpO0K5q46Ly9uJ+WqQ+sg0xyw4Ua7baEmk="}}}} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-version-regular.json b/baileys_sessions/app-state-sync-version-regular.json new file mode 100644 index 0000000..d1463f9 --- /dev/null +++ b/baileys_sessions/app-state-sync-version-regular.json @@ -0,0 +1 @@ +{"version":21,"hash":{"type":"Buffer","data":"BwYxPL53EqCaBWB39wxtRXHNJToB0eNjMCWD0vHj7vMaxVb5rBylEMEmYG7QTiIY21PySys1OAj6aGXt2g0e4gYWHQceDDsZQv/TGB8rdXlWEqN+bc+XEMG106UXzT71Tl+mp/SCHnqbF+N7zNoS0pZLhQHFgQxvP7w211977aI="},"indexValueMap":{"00JfoWdMewU/Yso0ZRBLV0lYlWNLt5bJhG6ST2yFCjg=":{"valueMac":{"type":"Buffer","data":"30hDDQKBeGn6yKiztaCE6gv8MM4OXWjEaRmxSLQMSRs="}},"69vnb+0BbE90juS144qY/EUFsA3qedfSaURsD6D6cSQ=":{"valueMac":{"type":"Buffer","data":"kXII09dN7mO8xWjqs/xi3EkUi6UgkmeomY+mQvDSF/I="}}}} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-version-regular_high.json b/baileys_sessions/app-state-sync-version-regular_high.json new file mode 100644 index 0000000..e366935 --- /dev/null +++ b/baileys_sessions/app-state-sync-version-regular_high.json @@ -0,0 +1 @@ +{"version":31,"hash":{"type":"Buffer","data":"wbi2dLKTiXanJl6YqIjnEvX3qhyKmpSIzpetjmxX4IgTmesMmpU1iiNBeGpwRd+Aqt3V9uSAdnGDhtg2E89pq4tJQ7F9MIToimJ5m4sJnwB8IUVAsTy/hwGsnlyHTsoDYNBGQ0H+O3mJiSBJYfWd0VFIvPYOtDplP60C1ibWk1k="},"indexValueMap":{"oFj0S8cAEd0hMd4zRkz4OiKeaUiNj3fP1BOoIHPbpzM=":{"valueMac":{"type":"Buffer","data":"xgxtxJ1PC/oEi4R9Vd6bg46tAawy1SprrUq7GZsbJHo="}},"vC/p14cwe6PiWLJWo9+KbwnEEqDK7Q5V2/A+uBNuFeM=":{"valueMac":{"type":"Buffer","data":"V/m4870YxcZ7CoLoxe4BmndBoxzIMQHdGk9nkbt0pYU="}},"FkpTEu+rAiFOIb6liABHROC6f1QiZD5xgbajm9QRjUc=":{"valueMac":{"type":"Buffer","data":"IoXg7C8BRcFdq/DxWirJU4/SOwTyWlaZAoL4DG8UZSY="}},"T1O4dyIdAeYUiRa9yMSPK0fW3TdX9JusZlf/zHeuCQA=":{"valueMac":{"type":"Buffer","data":"zFXslQ44cELxx/AmPMg4ynDt51Qq0BUYdH5Tg62E8Cg="}},"wuPmSdD6/rM6mYGkfZKk0tVQGgGq9l9j2SyUhlrBBYM=":{"valueMac":{"type":"Buffer","data":"Yl44cJywVr17GZr/CX4zMfxS28AjEMOQynBOP2uZSHI="}}}} \ No newline at end of file diff --git a/baileys_sessions/app-state-sync-version-regular_low.json b/baileys_sessions/app-state-sync-version-regular_low.json new file mode 100644 index 0000000..83819ca --- /dev/null +++ b/baileys_sessions/app-state-sync-version-regular_low.json @@ -0,0 +1 @@ +{"version":21,"hash":{"type":"Buffer","data":"XyYoUVwfmXz1CabrmkNpmH4cdzoa/v2KJ7zpXU/V7bIci2qZ7YANQc6GMguOQHiuFxcKOihIwC1QvsfB2APhupuJshDOYGJ36imiyZbU/kXgsWml870PBxJSIe31MwLDheSn/PD/59K4qDdHio2vhvRyjKrhkyX18e/6ozYx8+c="},"indexValueMap":{"wAbs5mgnj/26VJQwzEQv/zXsGvta5i5wXmjFxrZUoVo=":{"valueMac":{"type":"Buffer","data":"SfRHv8BCf6c/hefeDnJJu3svZJipWqr6dRwU3Z06cmw="}},"AOUpDgUj+uDEu5/8PyA2FpiKXMXezTP2ietqYfijLQ0=":{"valueMac":{"type":"Buffer","data":"Ki/ZeNUzCajmSNbPv0ySIJzTT/C7oD3hO870+BPEPdc="}},"EAd1n+y7+iE759qN63zTrMJJ9TRC+kF5amDUDm7RgXU=":{"valueMac":{"type":"Buffer","data":"sHzbkD/S55UODa/dNSTXcOb7guT/yGN6+Cocbh0yVwg="}},"/sJvVUNtLfNPIxh7yavBOfeHPSfxi5NsyRVY7zA+HkQ=":{"valueMac":{"type":"Buffer","data":"WImFEiGe18OS5TtzV980Yub8+zTTkg//U4lZpd4665U="}},"AEsdqxd/8s0GX+n2aUhKpuUacUyim9zOxa1UozY+zzM=":{"valueMac":{"type":"Buffer","data":"TcilQVRRodrIUXQb7wuMfRxApAwO/skJW6sHCKgR7T0="}},"SgY7Mf7Nbd4cEn2ynj25PbHuzPn3shugfLOCzmtuWcc=":{"valueMac":{"type":"Buffer","data":"ixBnx/wCSvG16XE0EzwivXNO5E4YTSvTrYGuo43+sXw="}}}} \ No newline at end of file diff --git a/baileys_sessions/creds.json b/baileys_sessions/creds.json new file mode 100644 index 0000000..877207f --- /dev/null +++ b/baileys_sessions/creds.json @@ -0,0 +1 @@ +{"noiseKey":{"private":{"type":"Buffer","data":"aLR//PlXylo6ZClkRpUy/+foonbY/VJiPz484xRb11c="},"public":{"type":"Buffer","data":"5zq+UGmKNzUMa37lcYYl+pr9UbO18hzylHQdc0zPt0E="}},"signedIdentityKey":{"private":{"type":"Buffer","data":"GLVjZHq8cc79bXq9yMT05fj/MByZO2uDHLBK/X05bmY="},"public":{"type":"Buffer","data":"y5q8zX5ovLD+NRqSt1SjmUtpcXuopdjKP6m2RQ0tvXE="}},"signedPreKey":{"keyPair":{"private":{"type":"Buffer","data":"WAvwaMMx0SwUk29I/2xoteClKIaNLSPh+1VVyCJDk2Q="},"public":{"type":"Buffer","data":"6ApClV65HOUNYnZ/kIY6miyYwheS6kQJqdqVB9ykREc="}},"signature":{"type":"Buffer","data":"Yht91l6/hgu506RGlXz096KNb9uIvLdm86aAS7zbJntyFNhEx24zHxELJFbyHcIAaerwTUa4sVmRs634DUFejw=="},"keyId":1},"registrationId":248,"advSecretKey":"8/CEZCeK0rKHbPW9FpIsuuLYSlA1YWHEuhTPlVA/69s=","processedHistoryMessages":[{"key":{"remoteJid":"5215516611480@s.whatsapp.net","fromMe":true,"id":"4034737D106A0EE5659D854CA827BC6F"},"messageTimestamp":1676511987},{"key":{"remoteJid":"5215516611480@s.whatsapp.net","fromMe":true,"id":"DC372AE775FC9ECF5C2FA465199B7FC5"},"messageTimestamp":1676511987},{"key":{"remoteJid":"5215516611480@s.whatsapp.net","fromMe":true,"id":"EA7D63C0FAB2843FDEC6CF41D98580EE"},"messageTimestamp":1676511998}],"nextPreKeyId":31,"firstUnuploadedPreKeyId":31,"accountSettings":{"unarchiveChats":false},"account":{"details":"CKPH1LcEEO6Vtp8GGAE=","accountSignatureKey":"PXyviDQuvIGZg5auHtiAriQFOcp+1OwJ8zsQC6Vxm0c=","accountSignature":"8LUp4vkLUdRbqcgr/qnYcQ1+Gvr/dAR4W6QlhZjp4QZlG34cyk7cI0B0WxnrMERs5xroJGbFh82wZvIwcTubBg==","deviceSignature":"iSZQzYZ1TS7kRrOc643NOHA6DsAlzyV60chLtXQstVsrJy50lueWwajCuD2eA76ubTdeuDvlqOT8EWHM9AuKiw=="},"me":{"id":"5215516611480:25@s.whatsapp.net","name":"Casa"},"signalIdentities":[{"identifier":{"name":"5215516611480:25@s.whatsapp.net","deviceId":0},"identifierKey":{"type":"Buffer","data":"BT18r4g0LryBmYOWrh7YgK4kBTnKftTsCfM7EAulcZtH"}}],"platform":"android","lastAccountSyncTimestamp":1676512040,"myAppStateKeyId":"AAAAACH+"} \ No newline at end of file diff --git a/baileys_sessions/pre-key-1.json b/baileys_sessions/pre-key-1.json new file mode 100644 index 0000000..acb7ba6 --- /dev/null +++ b/baileys_sessions/pre-key-1.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"YHFSzhuu0XefzXRQPj73ZgigoHhh94MDX7O3HdRF/W4="},"public":{"type":"Buffer","data":"d5B4GQi/z1Mrnvxd2Dxigx9jlgNR1vNVjcjgZGinsFI="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-10.json b/baileys_sessions/pre-key-10.json new file mode 100644 index 0000000..ba7f6ec --- /dev/null +++ b/baileys_sessions/pre-key-10.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"IKWmSTgzUxIOLctv0j0QBo2mrajw6WSvtPMhcLr5Fmw="},"public":{"type":"Buffer","data":"YuSp9wx5nucebdJSVLlrk4d+L0w8dzWg4uGTtFMaWR8="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-11.json b/baileys_sessions/pre-key-11.json new file mode 100644 index 0000000..dc38c32 --- /dev/null +++ b/baileys_sessions/pre-key-11.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"4AxALlhqWVdtmDVgema3V4PCDWBvTZZkwCltho7400w="},"public":{"type":"Buffer","data":"8rE01+G5g/gNQOVbFxKk/u/D+YpkK4/LK3M6l62jYw4="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-12.json b/baileys_sessions/pre-key-12.json new file mode 100644 index 0000000..9e85af3 --- /dev/null +++ b/baileys_sessions/pre-key-12.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"qPsfL+j/ZJplsZjavkqizGIvRz5UMRAn8ymEELmDz3s="},"public":{"type":"Buffer","data":"g2SrEgGmfia/YiD+W8fr7NQ0xNKNcJ5+jKoXqYkdcHg="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-13.json b/baileys_sessions/pre-key-13.json new file mode 100644 index 0000000..b4ee952 --- /dev/null +++ b/baileys_sessions/pre-key-13.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"gHH+SvcPEzNE7rLWbBHHDxd9tmI2nk1VY8ttO/KgpW4="},"public":{"type":"Buffer","data":"RnSKAOSBZ/lXf9euTmoqdeOcWu5HVmCeZ1oF4Na+ilk="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-14.json b/baileys_sessions/pre-key-14.json new file mode 100644 index 0000000..dbf8f4e --- /dev/null +++ b/baileys_sessions/pre-key-14.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"8AyxHJP6PdURzBDpRX8CgM/gOMidMwiM1FU3U8QhH08="},"public":{"type":"Buffer","data":"Scb5mvIKN0s1Qme4QQhuGV6QzQAzlyqDGuRPcrmQukA="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-15.json b/baileys_sessions/pre-key-15.json new file mode 100644 index 0000000..39a0ed4 --- /dev/null +++ b/baileys_sessions/pre-key-15.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"yDFykzhX/9VE61ZgwHxQlrAnD7wu0OHxuokf/PjsrkU="},"public":{"type":"Buffer","data":"0OAQTqVYq4aRbNTubfBhJ9aBAVj1YNYRn9E74OOoEWs="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-16.json b/baileys_sessions/pre-key-16.json new file mode 100644 index 0000000..feee4fa --- /dev/null +++ b/baileys_sessions/pre-key-16.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"sEU6eiWeA5ir5TrKpNl3E8RL5cL7Ws13jpzNfAD3rF8="},"public":{"type":"Buffer","data":"5vflHrPu20owAiwGT0IugAeKF2L06BKUIKE3YobxtDo="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-17.json b/baileys_sessions/pre-key-17.json new file mode 100644 index 0000000..eacbe98 --- /dev/null +++ b/baileys_sessions/pre-key-17.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"KOAscUHlV4+cPI+ndB4CIFUUQRzWUVydNJfcM/dtGnc="},"public":{"type":"Buffer","data":"1yHk25vY0947V2XIwj/q7qhMcOhANmq0J8dBTqqVn3I="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-18.json b/baileys_sessions/pre-key-18.json new file mode 100644 index 0000000..00f8b16 --- /dev/null +++ b/baileys_sessions/pre-key-18.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"SCjx4NFzbTrmlgv8CkwWs34OrztpR5bjjeiCB6Ti00U="},"public":{"type":"Buffer","data":"U15lE2gXwBUe0EmPAyIYp+lW/6V4AR0M8X5Tek0sUTw="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-19.json b/baileys_sessions/pre-key-19.json new file mode 100644 index 0000000..c5f1f9e --- /dev/null +++ b/baileys_sessions/pre-key-19.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"aLzVvPBSrZXlojkWJ47ljHZ212T8c0cpmQHamGWiGk4="},"public":{"type":"Buffer","data":"I59vMCoIBW/X+qpjk5tRZt3LWKxvDldX03f5Q/088ks="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-2.json b/baileys_sessions/pre-key-2.json new file mode 100644 index 0000000..22978b2 --- /dev/null +++ b/baileys_sessions/pre-key-2.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"qGQ9IS94YzN1UlatIAx+SPmT3unkHQt7TAthEuLRLGE="},"public":{"type":"Buffer","data":"czwPIMz9Tfu67NSwmqysbg/QjXgAFzL4oVezURxp8FY="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-20.json b/baileys_sessions/pre-key-20.json new file mode 100644 index 0000000..913e524 --- /dev/null +++ b/baileys_sessions/pre-key-20.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"mLy/JViM1IUTw7tGbmLTTQAYn9uaP/gWCU9evuqQPUc="},"public":{"type":"Buffer","data":"UPGFCK7bKIaxek9iE4+3cWE4xIHxpf3040ocAy7F7kA="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-21.json b/baileys_sessions/pre-key-21.json new file mode 100644 index 0000000..edcb9f8 --- /dev/null +++ b/baileys_sessions/pre-key-21.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"4ITs08IrEv8dW5abfdg2H8s6cPJtpYAT13zJsuDSaUg="},"public":{"type":"Buffer","data":"gCoApsLAH2QYAIfl3f3L31bg4jL3e0cwHI6OEP9Wlxw="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-22.json b/baileys_sessions/pre-key-22.json new file mode 100644 index 0000000..d3bf337 --- /dev/null +++ b/baileys_sessions/pre-key-22.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"CO14Yf87LQXBymSN8kucxUCGeVGTiv4HA/7GhMXWilM="},"public":{"type":"Buffer","data":"u56U8FJr9IM9yaQ+3/PRQccqLFceh4Wm9Cjv/ALVukI="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-23.json b/baileys_sessions/pre-key-23.json new file mode 100644 index 0000000..378344c --- /dev/null +++ b/baileys_sessions/pre-key-23.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"4EOuSuO4TljG7YZ1e0GXTud/MO6+l5BO89MCj7vjZ30="},"public":{"type":"Buffer","data":"7hnDkNFussVh7RZLPRhNUqFiD0siWRvbbxED1+uqgXA="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-24.json b/baileys_sessions/pre-key-24.json new file mode 100644 index 0000000..12327cd --- /dev/null +++ b/baileys_sessions/pre-key-24.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"8K7ve2m9blTjDJMR9P0ebvGiySp46xxFb8T2C5BVrXw="},"public":{"type":"Buffer","data":"xKF70evZVkzh+LGoyFufhafxog7/Zpn09X2viw6RyCk="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-25.json b/baileys_sessions/pre-key-25.json new file mode 100644 index 0000000..6eb6b7c --- /dev/null +++ b/baileys_sessions/pre-key-25.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"+P8sfww+EiM6wXmpyvoPPio7s5wIMtXivK7F33KP0mg="},"public":{"type":"Buffer","data":"tEreX+5bpr25HBJlDvQmLrWRgRxEhkQvnf9RyfML/x4="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-26.json b/baileys_sessions/pre-key-26.json new file mode 100644 index 0000000..ffff1d2 --- /dev/null +++ b/baileys_sessions/pre-key-26.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"0G4vLdglHfq45SrcgxI4p4ekoBzIjkn/b8GFJU26BXM="},"public":{"type":"Buffer","data":"84xxsPfRGAoSvBKUWPTCnQJ7yVA8wvGseTSyowuzKgQ="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-27.json b/baileys_sessions/pre-key-27.json new file mode 100644 index 0000000..c050450 --- /dev/null +++ b/baileys_sessions/pre-key-27.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"MKkM47jAYat4+0ujumCf1ca9yycAl2sCHjZ+w0nYAm4="},"public":{"type":"Buffer","data":"9GIS9Z1YoSTDQNUlfe4Fc6ujcmaeEJwmyOupLFB7YGc="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-28.json b/baileys_sessions/pre-key-28.json new file mode 100644 index 0000000..12a8235 --- /dev/null +++ b/baileys_sessions/pre-key-28.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"WMO4DHV4wQEhhHsR6IaGi4DO50q1JnJMtqqPJX1mFmM="},"public":{"type":"Buffer","data":"Errx1U1nyOF3EWAqmv21U5gXbF7xk7D4j4R+uzNKWUY="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-29.json b/baileys_sessions/pre-key-29.json new file mode 100644 index 0000000..ffa19b4 --- /dev/null +++ b/baileys_sessions/pre-key-29.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"kILpr6rpMGB9H3xH6Irm8fwFQs34PPeergvlAIveh2I="},"public":{"type":"Buffer","data":"sey4ZP17mw/mbRChFlH28M0Yq2OX2qR7iKB7SQs2B0M="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-3.json b/baileys_sessions/pre-key-3.json new file mode 100644 index 0000000..d6b5dfc --- /dev/null +++ b/baileys_sessions/pre-key-3.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"kJLaGVbfaPWXwqpwQMPjkFQL0xxuWhSoaXCRNL/j83w="},"public":{"type":"Buffer","data":"nimjXO6RKmrKZhQnzT4dcgbyGiAmjN31fq8m9mKh9RE="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-30.json b/baileys_sessions/pre-key-30.json new file mode 100644 index 0000000..22562d8 --- /dev/null +++ b/baileys_sessions/pre-key-30.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"yEmbjTjUv8LzyxTvIuGQWySv7zH2D1ubF1wZIMRlZ0U="},"public":{"type":"Buffer","data":"+NcB3zXH6OAu/MH7VDrrm9QmEJTeI3PjSMZ0D/ORDg4="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-4.json b/baileys_sessions/pre-key-4.json new file mode 100644 index 0000000..0790541 --- /dev/null +++ b/baileys_sessions/pre-key-4.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"kAPwqsoreHzruSplFKJSGbXYZMavLHB3ubA8Dfy8Bls="},"public":{"type":"Buffer","data":"zwYg7MMOj0WGIB/gthqeQfmCQfshiVUXIBYC3YaO5Ak="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-5.json b/baileys_sessions/pre-key-5.json new file mode 100644 index 0000000..a9f4d1e --- /dev/null +++ b/baileys_sessions/pre-key-5.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"6AANkhB5n4Wi6tmZxXiLnyco7oSRK4e7cugczobDVl8="},"public":{"type":"Buffer","data":"1IjI7LiDYAQs7FnbGRNE2zRXBoNHeiT5ZqkoRq31+Xc="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-6.json b/baileys_sessions/pre-key-6.json new file mode 100644 index 0000000..a0235d2 --- /dev/null +++ b/baileys_sessions/pre-key-6.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"6HmT4XDc4NgunR6aZW9UwUOq4Mo30P8Y7EhTuwhb0kE="},"public":{"type":"Buffer","data":"SSntsDeGFN57jCH59MU+dU0foIxyzrt8QPzmk4xArWA="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-7.json b/baileys_sessions/pre-key-7.json new file mode 100644 index 0000000..87c513f --- /dev/null +++ b/baileys_sessions/pre-key-7.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"wEkyX9w8HqMTRcMCMo/SXBu0DjCNozLUHy/q1I4kil0="},"public":{"type":"Buffer","data":"foSPOVTnEdW9vWNMZXjWvTZUlgMWknYQvb8rmrFNLik="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-8.json b/baileys_sessions/pre-key-8.json new file mode 100644 index 0000000..5798331 --- /dev/null +++ b/baileys_sessions/pre-key-8.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"+FW+HZE+/V1uQ8YGqphVOtkiuM1PiXt+SJXJjv/HGUE="},"public":{"type":"Buffer","data":"78GEjcz7Be/vdWrn7F7Jit5dFLMhKkRqOIkjjk90Llc="}} \ No newline at end of file diff --git a/baileys_sessions/pre-key-9.json b/baileys_sessions/pre-key-9.json new file mode 100644 index 0000000..8482830 --- /dev/null +++ b/baileys_sessions/pre-key-9.json @@ -0,0 +1 @@ +{"private":{"type":"Buffer","data":"yKy6mgIh/l1Ff81sG1Je97g62rki09KeUUMAubt3vlQ="},"public":{"type":"Buffer","data":"XloBosk8O0OMWhdPV1TL2/7DmSlC9uccQsiCVEyCpw4="}} \ No newline at end of file diff --git a/baileys_sessions/sender-key-status@broadcast--5213511080612--0.json b/baileys_sessions/sender-key-status@broadcast--5213511080612--0.json new file mode 100644 index 0000000..232ee3b --- /dev/null +++ b/baileys_sessions/sender-key-status@broadcast--5213511080612--0.json @@ -0,0 +1 @@ +[{"senderKeyId":432476765,"senderChainKey":{"iteration":0,"seed":"uXGYSkrX9NTvc75omk03IAlwJety7fhAwlEPa9ndMYE="},"senderSigningKey":{"public":"BZi/bffxv+VxHPIPIbeAH4+F5UPV/zB1IgVhpSrw0eFV"},"senderMessageKeys":[]},{"senderKeyId":318391970,"senderChainKey":{"iteration":0,"seed":"9KF/237LV00EwRIpoRWxeUen30Mxe3N7wA7V59zlvUo="},"senderSigningKey":{"public":"BUvcM7XuqIHhk2dHygulwJncJ2b4Zm/kfeV6rEII6JgG"},"senderMessageKeys":[]},{"senderKeyId":141107147,"senderChainKey":{"iteration":0,"seed":"JV+clRJfIiX/7eibtGBBvYWIoL8d9ZUMoRHpOANnqeQ="},"senderSigningKey":{"public":"Babl0uA4k/LqfIiuIJA1WlWOprgBkZ0GhhOdx4jazkZY"}}] \ No newline at end of file diff --git a/baileys_sessions/sender-key-status@broadcast--5215527049036--0.json b/baileys_sessions/sender-key-status@broadcast--5215527049036--0.json new file mode 100644 index 0000000..45b3780 --- /dev/null +++ b/baileys_sessions/sender-key-status@broadcast--5215527049036--0.json @@ -0,0 +1 @@ +[{"senderKeyId":187540798,"senderChainKey":{"iteration":3,"seed":"R5zhfkhRO410kgCnKSHzHXIIhLBdw81IacO+a8UHlDs="},"senderSigningKey":{"public":"BcGXx4dQHAkbvisyzptMcufq4IVCKry3afunohyjRwAD"},"senderMessageKeys":[]},{"senderKeyId":1967596939,"senderChainKey":{"iteration":0,"seed":"z7navZ7LN6V9Nd0Rxg6h/VuHhiT09ITkK8ngAQuNyCQ="},"senderSigningKey":{"public":"BYoZMvs6TtLwbbOGJy/TdQSWDyapiFBi4I13vRRxqWtf"}}] \ No newline at end of file diff --git a/baileys_sessions/session-5213511080612.0.json b/baileys_sessions/session-5213511080612.0.json new file mode 100644 index 0000000..cd29f9c --- /dev/null +++ b/baileys_sessions/session-5213511080612.0.json @@ -0,0 +1 @@ +{"_sessions":{"BXq6VGc6/T1YM7BHWIY0Xo3Nr5SnBDGY2m/G6PXl+Acp":{"registrationId":1714460135,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BTuyPoihyKVkLBFSZozPnIv/s2a7Zwu5aFhbE6y3Nr9Y","privKey":"6HKG+d0NwtQhiDfRlLrugdWPqy8sHpaEnSURkZaJOFo="},"lastRemoteEphemeralKey":"BbrWFV3djGdVctncyanZeP4coYSFCfZUfr/fDkh5qpZo","previousCounter":0,"rootKey":"VbRI/VLZogVUhS/aFxALCCsZado7cUK8I6RfvbQoATg="},"indexInfo":{"baseKey":"BXq6VGc6/T1YM7BHWIY0Xo3Nr5SnBDGY2m/G6PXl+Acp","baseKeyType":2,"closed":-1,"used":1676563632538,"created":1676563632538,"remoteIdentityKey":"BTFr14ABs94X8EftsKbc0cjiioabAkTpXSd7TaUJvHgc"},"_chains":{"BbrWFV3djGdVctncyanZeP4coYSFCfZUfr/fDkh5qpZo":{"chainKey":{"counter":5,"key":"ogyejL4esn0prOOnnVbhd9vLwz4uF/0aLsvF6FQY81A="},"chainType":2,"messageKeys":{}},"BTuyPoihyKVkLBFSZozPnIv/s2a7Zwu5aFhbE6y3Nr9Y":{"chainKey":{"counter":-1,"key":"JGq3D+sYO0xdMxyI12qYG+L/G8jubDDHAIFPz8Ys7pQ="},"chainType":1,"messageKeys":{}}}}},"version":"v1"} \ No newline at end of file diff --git a/baileys_sessions/session-5215516611480-26.0.json b/baileys_sessions/session-5215516611480-26.0.json new file mode 100644 index 0000000..1989a92 --- /dev/null +++ b/baileys_sessions/session-5215516611480-26.0.json @@ -0,0 +1 @@ +{"_sessions":{"BTdnXwNZL+hE3VnnHt1+8G5/f/PoQ5NDCZ3zXRu3kvsb":{"registrationId":3564,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BYwhgVl35Ggm8PT0OLtuIvFpkYsA5lPdG5zBDjQYf6Jz","privKey":"EIaTXaH+nsJBfrwDGTICHmxjw7Toqw6yiHIFk109+EE="},"lastRemoteEphemeralKey":"BUvlGIoqqnmj8XEOpWO/dmRldQmNk6WuoWY0iEAvap4k","previousCounter":0,"rootKey":"RYWfNEqR3BU9bfsyWkJkBphsqcH0zWN8SZKzTY8Bnu4="},"indexInfo":{"baseKey":"BTdnXwNZL+hE3VnnHt1+8G5/f/PoQ5NDCZ3zXRu3kvsb","baseKeyType":2,"closed":-1,"used":1676514632922,"created":1676514632922,"remoteIdentityKey":"BUHwxfAd61hnKFyZMzOxxjEboUOLzntmedOuibqcUoVr"},"_chains":{"BUvlGIoqqnmj8XEOpWO/dmRldQmNk6WuoWY0iEAvap4k":{"chainKey":{"counter":12,"key":"xRkSYB3dGJ+RjqzGCsPbU3T1Y7AG7KqAdPHDVE7+4gM="},"chainType":2,"messageKeys":{}},"BYwhgVl35Ggm8PT0OLtuIvFpkYsA5lPdG5zBDjQYf6Jz":{"chainKey":{"counter":29,"key":"1JphtXuD111nzrdF38TV+VH96lSyMEQ7CrWdlM8qBmc="},"chainType":1,"messageKeys":{}}}}},"version":"v1"} \ No newline at end of file diff --git a/baileys_sessions/session-5215516611480-27.0.json b/baileys_sessions/session-5215516611480-27.0.json new file mode 100644 index 0000000..1a88f10 --- /dev/null +++ b/baileys_sessions/session-5215516611480-27.0.json @@ -0,0 +1 @@ +{"_sessions":{"BdgWAo1egUrQUPN3exIO10SpcBEbPRDD+pnQnbEtu4QT":{"registrationId":2559,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BQ/C7Hmy6EQW80xasJaekvEa3tOnCWvI2wRmZU/7TYk9","privKey":"ONT2whD6sjb23uyjDzZSob6ikNNnI1aMazlyIxENU2g="},"lastRemoteEphemeralKey":"BUW/j+ZIjyl8WO/Ckt8ykE1u8ntGqpQsKqtniXJsbNw4","previousCounter":0,"rootKey":"6q/aMW2nmPrquj6Gw0oKJYSpCI4TS1j3ypAot+WGTsc="},"indexInfo":{"baseKey":"BdgWAo1egUrQUPN3exIO10SpcBEbPRDD+pnQnbEtu4QT","baseKeyType":2,"closed":-1,"used":1676515314124,"created":1676515314124,"remoteIdentityKey":"Bdg+RySLukTCZyJUvt/BkEd/+nWHv/FtNaP+jjLQTMFa"},"_chains":{"BUW/j+ZIjyl8WO/Ckt8ykE1u8ntGqpQsKqtniXJsbNw4":{"chainKey":{"counter":0,"key":"TchxOpv5dBTK7reN1IJUeod/s6TxKzhJZJb3iCpVTLk="},"chainType":2,"messageKeys":{}},"BQ/C7Hmy6EQW80xasJaekvEa3tOnCWvI2wRmZU/7TYk9":{"chainKey":{"counter":-1,"key":"4UoJgkW1hdnkd0jIrN74gG/9uojY8JubgDSE+iiZ/II="},"chainType":1,"messageKeys":{}}}}},"version":"v1"} \ No newline at end of file diff --git a/baileys_sessions/session-5215516611480-28.0.json b/baileys_sessions/session-5215516611480-28.0.json new file mode 100644 index 0000000..780357a --- /dev/null +++ b/baileys_sessions/session-5215516611480-28.0.json @@ -0,0 +1 @@ +{"_sessions":{"BUXzSzjao60esTdHBlArTohp+OXqGmJHQaITYTpggSFS":{"registrationId":12128,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"Bc6CSZHPmpHa/HJm69yHvbKVrgf9BtWrV7eINh+AzqN2","privKey":"QFghWivYo2SXI32FAyfSZEyEuE6E0YLdYxJ+hec4imY="},"lastRemoteEphemeralKey":"BSZ+dlgL9SzjlgnrYZs0QPOBqmGVGhJRQ6XTqG6u0fUo","previousCounter":0,"rootKey":"zkPhp6ZNaKX7DwIlRDHFm7pc2Gywa6TPb11gapS0ccw="},"indexInfo":{"baseKey":"BUXzSzjao60esTdHBlArTohp+OXqGmJHQaITYTpggSFS","baseKeyType":2,"closed":-1,"used":1676515314131,"created":1676515314131,"remoteIdentityKey":"Bb9R5Ucm3Mega1WaatZ+cOMH0Rw+lF49bjzoCESs0QNb"},"_chains":{"BSZ+dlgL9SzjlgnrYZs0QPOBqmGVGhJRQ6XTqG6u0fUo":{"chainKey":{"counter":0,"key":"PuD3C7/k+NMu8HYijNzKqT4qKc9cZHY+Gv8bAxy9gFQ="},"chainType":2,"messageKeys":{}},"Bc6CSZHPmpHa/HJm69yHvbKVrgf9BtWrV7eINh+AzqN2":{"chainKey":{"counter":-1,"key":"zyCesniFSBLEsXz6yJuNwWbaOAmp2ag/A8Wj3LwBvso="},"chainType":1,"messageKeys":{}}}}},"version":"v1"} \ No newline at end of file diff --git a/baileys_sessions/session-5215516611480-29.0.json b/baileys_sessions/session-5215516611480-29.0.json new file mode 100644 index 0000000..b93fa15 --- /dev/null +++ b/baileys_sessions/session-5215516611480-29.0.json @@ -0,0 +1 @@ +{"_sessions":{"Bcjq2tBM/5CyPe0kvJEqN4RV7IxXWm8eaamNf3ATOWsy":{"registrationId":6397,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BfxGUh077lJrPQ/E8UnvBtmBt81EMrbTheQdsGgQzRJd","privKey":"yN32oh9t+S0JL4DB3+V6TbKzxY8Qazdz3gYurcA4EUQ="},"lastRemoteEphemeralKey":"BYlHiTiXPkgcXzmadKojXY3k6IrtzmlT7kO5mfcFyoFW","previousCounter":0,"rootKey":"Jyo868jIVfA0ZhjvMo1LqtkcJhYpySJXa+m8J0UpU8k="},"indexInfo":{"baseKey":"Bcjq2tBM/5CyPe0kvJEqN4RV7IxXWm8eaamNf3ATOWsy","baseKeyType":2,"closed":1676616816293,"used":1676515314139,"created":1676515314139,"remoteIdentityKey":"BQk+2m6QlWmTAZrpaU5GVUwWeg4PKwzBsSbM9bEDPqF3"},"_chains":{"BYlHiTiXPkgcXzmadKojXY3k6IrtzmlT7kO5mfcFyoFW":{"chainKey":{"counter":12,"key":"9hBBwse/di2JAeZ/99dTn4g6NYjdwJcTjcmrIskb2u8="},"chainType":2,"messageKeys":{}},"BfxGUh077lJrPQ/E8UnvBtmBt81EMrbTheQdsGgQzRJd":{"chainKey":{"counter":126,"key":"p///+Rc7YH8N8+dqZviFTtHfKycwdVqw6u80vACsd8Q="},"chainType":1,"messageKeys":{}}}},"BcZx+h7/iomE4WmS0bBjjU0FUQM+tq3OReI6kGB9TXEK":{"registrationId":6397,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BdajCebc8qLSWtB1Vjv/d4bSO2u68qmqlikb0rnCDYIH","privKey":"GM/SD+bHPDeDryrkRO1a2EmVDcTGh3G8DwDJiyV8jVY="},"lastRemoteEphemeralKey":"Bc+7vjbPcYMRbLQ4Orkly47r/fgPX6eqY5EruA3LIRpD","previousCounter":0,"rootKey":"d50iXkTqt9CLA+lHgLnwk+wdVxaefWKjSZE3P0PzIZo="},"indexInfo":{"baseKey":"BcZx+h7/iomE4WmS0bBjjU0FUQM+tq3OReI6kGB9TXEK","baseKeyType":1,"closed":1676616816352,"used":1676616816243,"created":1676616816243,"remoteIdentityKey":"BQk+2m6QlWmTAZrpaU5GVUwWeg4PKwzBsSbM9bEDPqF3"},"_chains":{"BdajCebc8qLSWtB1Vjv/d4bSO2u68qmqlikb0rnCDYIH":{"chainKey":{"counter":-1,"key":"3TM8do3egfn6wCp4FnvZSwK2CUjBRPCBm5PSDtrKdjU="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":1,"baseKey":"BcZx+h7/iomE4WmS0bBjjU0FUQM+tq3OReI6kGB9TXEK","preKeyId":10}},"Bc9hu7R4RXeCZxKH8pd20eJ51kcL5/WusbXdkGhuJjMV":{"registrationId":6397,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BUl9Npt/Dq89h16CfEpbVu6UOOMxFUOpKMi0Mqs6DyJ6","privKey":"CMW135jQ/gDAsFn8mdeMC95X4QC1iV7cqKSB5XBylEE="},"lastRemoteEphemeralKey":"Bc+7vjbPcYMRbLQ4Orkly47r/fgPX6eqY5EruA3LIRpD","previousCounter":0,"rootKey":"K72kVZzipfYidYFo7Jxt8xE9T9eIA5bbGjhhn87VGyU="},"indexInfo":{"baseKey":"Bc9hu7R4RXeCZxKH8pd20eJ51kcL5/WusbXdkGhuJjMV","baseKeyType":1,"closed":1676619799187,"used":1676616816338,"created":1676616816338,"remoteIdentityKey":"BQk+2m6QlWmTAZrpaU5GVUwWeg4PKwzBsSbM9bEDPqF3"},"_chains":{"BUl9Npt/Dq89h16CfEpbVu6UOOMxFUOpKMi0Mqs6DyJ6":{"chainKey":{"counter":43,"key":"pF1A892xftfPD9jPPE6L0ebdaJ2x6wdNA3n8JSZHjrQ="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":1,"baseKey":"Bc9hu7R4RXeCZxKH8pd20eJ51kcL5/WusbXdkGhuJjMV","preKeyId":154}},"BWp3iL2VnfK0bYcMdQyURg5eUyg43jAt9NmwiiQpwqt3":{"registrationId":6397,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BRsq3ER/YheefcyKSzwAONCkieasqwG/xIwt49AMKdMT","privKey":"EJuwLK7VRVyP1P5BmFbCTl8nFz1N0OXzPziivdDveEU="},"lastRemoteEphemeralKey":"Bc+7vjbPcYMRbLQ4Orkly47r/fgPX6eqY5EruA3LIRpD","previousCounter":0,"rootKey":"dLF/UIbiJ0OKx9kTnodrbpUvjpAxca2vLlsiaPXStiI="},"indexInfo":{"baseKey":"BWp3iL2VnfK0bYcMdQyURg5eUyg43jAt9NmwiiQpwqt3","baseKeyType":1,"closed":1676619805770,"used":1676619799171,"created":1676619799171,"remoteIdentityKey":"BQk+2m6QlWmTAZrpaU5GVUwWeg4PKwzBsSbM9bEDPqF3"},"_chains":{"BRsq3ER/YheefcyKSzwAONCkieasqwG/xIwt49AMKdMT":{"chainKey":{"counter":2,"key":"pztl/p1JaG2wUbQQf3uGNOuJ6TOayJ2bHlVOnFfUipY="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":1,"baseKey":"BWp3iL2VnfK0bYcMdQyURg5eUyg43jAt9NmwiiQpwqt3","preKeyId":152}},"BSuJC2A+jPN6ovIryl1uoj0WwdYr4oc4cZzUy66dSGJb":{"registrationId":6397,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"Bd9PtVfanzhc2PGdjjLE4s/UdJSDgqMGr5XiVYCowWoE","privKey":"+DeaHpmfy0o0OZtkWrAH25Fvqe4iFLimOxc6gcRN3H4="},"lastRemoteEphemeralKey":"BfSGUadIv8rnTD7ROUX5dTmP+uuXe0AulvfKwwcN49Q5","previousCounter":10,"rootKey":"4kUmZSiwAFXV7KAyGo21S/NbZ4zfyXhY6hErqOe5CbU="},"indexInfo":{"baseKey":"BSuJC2A+jPN6ovIryl1uoj0WwdYr4oc4cZzUy66dSGJb","baseKeyType":1,"closed":-1,"used":1676633002825,"created":1676619805761,"remoteIdentityKey":"BQk+2m6QlWmTAZrpaU5GVUwWeg4PKwzBsSbM9bEDPqF3"},"_chains":{"BVoSrOr+6D8QDDF5GTCIS3pYiGVQ6SlPYVEHrS2RhshZ":{"chainKey":{"counter":81},"chainType":2,"messageKeys":{"26":"g7SFljvuEicujhCD+lI3/31mElra0Mdu4c9eF2Z8wog=","39":"BNAs+bZtNsOx/zq8H2BoQP4mnU8M6iDStcXQD0iG8IM=","54":"3bQ6jM9si5uoYlYu65SpJUTiXb7gUdKNnCjXyv45Vpo=","57":"ev0Yzte8FlTQ9vRioN5CeW/OHXPwaBRzBQhwd8hwb7Q=","59":"SeZQ9Un1ON2jpCVq2RMtWVbII601jRHpqN7wG5eM1Uo=","61":"NvpOqVJRiIzeH3jQX+ehEb6NjeszXGXvt9WfRkA7Kmw=","63":"8VZO+yiIjmBYrxLEbycsgJOQKnFFqELI6XnVQubqRI0=","65":"3dlqDuwQ1WYfV4DYlqQK4CRbaU/JAXmsJiWm93WvlnQ=","67":"0WTpEnQOYUXtO2Ua+ALOYBpCAHwjxOkWjZPBRQ4Ut8Y=","69":"ad0Z1ZAgIh/x4JrZrELj0VDCDYq7ikcaFK8ISYXOt/g=","71":"9E8ydl+yPtP+y9zhqS/G25q7QWn4XY9+PPAEwDUwFiI=","73":"nzFgTewvxzfOxc4xuIM/pT1ganr1gudO1Kui/R+jTZY=","75":"jDiZ/+0CkeN1Xi86t8XUwLTSjyyuriB4ypoC8xk+hkc=","77":"ov8ePlibURFCJd84BLkrjN6XXaQ6JQQXN1OY/yWyBeg=","79":"lnD3ZFP8tKKbSLBKPbqYqpEyMmmnb2Yp8pXBFTnVKh0=","81":"KUjFRh109UNoDpa6Sp3Ob1zDh2Gm+CsSkHkgDS3Ob7E="}},"BT4z2YLp6UzDURUHDd6baYVMUGwZ2+DqapqC5ad6y3UG":{"chainKey":{"counter":51},"chainType":2,"messageKeys":{"23":"3Sc2KvU4sXEt4H4B8Rq+IEASNeslZXiv45XybaSvPOU=","26":"XbQ5MQgKBZX+cQ+5uyBILVH7FWpfxfdLzalHP8MfUaI=","28":"aK1oYBJkYJ+W1Lc1vTJBFSk6zxvlHWbhm8qd9lcMjXk=","30":"zg3ZoopxdWRbOKn+tL0Me3ZK8/03llL1mn142pnXkhg=","32":"FCPJ26ouSPp8C+r2u1iBitcaKGhJHnDXKmYrx44JeAo=","34":"MAPHzlmINnca+Tk6yL4Xg0/vAb6GFdrF7g+Y1u6Znw4=","36":"LS2bwqik6tYfWT7Vkv2nnGNwWBbsHZvpP0U/PfT+ebU=","38":"+hBysTpa6LXD1S4dPSo+8yJ8P/I5mM7ksqobnm/WJnk=","40":"VedbF508ADUWfo2p4ZDr6IP7euZgt8HlQeFdAB94wXA=","42":"JsBM+xmqDpoT8QW8V931UpvmFDmMtZxuo3KgwhjczNg=","44":"gT0PRbCK1M1P/dXLEIl76IG5S1z5EHB2Xnu/mZgEiag=","46":"Bu6Rk45jjTzklG/+qxJ38i4HChOhgvBgvx+NvS9+Kn8=","48":"qDv19cwL48Ks6N9gW8dusQc3YeyOrZY7HvlEBXAzgPg=","50":"HHibjvWRe40tDQrDMgxGVtZi7XMsYdLxAgtrqIihBU0="}},"BQtf6LubvLJnmwKoGEXGzn+pTt4oORaqSRGSZqoSn5cz":{"chainKey":{"counter":7},"chainType":2,"messageKeys":{"0":"awJ6RMFcygyCQYxVvms7e163FOYC6xQFw/WfvpXSbT0=","1":"g9X9ZKXjhIVl8yAtXHH1SN6jM2Y3TACm3JmF31LCOqo=","2":"8y8FO9kFy+niYeykSoVKDxxHnwbd/KucuvOQOT1kGOo=","7":"FDe/9ClWfXhx9H1mlnwsw11c212sIaWSiA9d0jUEbsE="}},"BfSGUadIv8rnTD7ROUX5dTmP+uuXe0AulvfKwwcN49Q5":{"chainKey":{"counter":30,"key":"6FOUrFjsEJAvOgZbmaza2HrLYNtAgC37eF9ZHJfurjs="},"chainType":2,"messageKeys":{"0":"yYFn4BC84m4+j0g3Ef2yX4zMAcSdEX8LoXKWiR1ilZI=","3":"WFvwHLGsSVNLbVXbU1zH9lD1MybG2huuTPO+VUVi7iQ=","4":"NTmYaAbTJa8DAa1IopDuDsmyLvkajmzH9HBnDO9uJ1o=","6":"Ifre+yXDhmFHClUaUaTJbjfaw24THc2PbmikSrTdrEk=","8":"rBXEt5wCRb3FYv+Kg9kRaBu5e8H0wbcQ6Wi+BMnAjwI=","11":"ziPeQlWfXJ1P29JdTZ876kafNapLjL1R5lsPMPdsxp0=","13":"l4xX4LpSWTfc3aWaei73Bsro1oLSNSkz7brDGSNwzUE=","14":"q3qT/W+6/PmFxV8cgR4NxeeAb6KP/bhOiRxtVXDJpl4=","17":"OomDf48lbywSlYCETYfy6j9DzTDq47wvz4ctdx/kE4o=","19":"WWqgCKRO1eTofoRv5Dr4CN5be83xsmSNqQNlBU/bqOc=","20":"kk2qAcHCjIOmaVLXrmCaE8Ud/eJtxFKGkbY0v4eiJ90=","22":"F6gmC3f9+qYUms2Sry4PuSYaCQdWWfQS8awQOLx+crc=","24":"69pjspXho5zGRwGsddb2I2sp5uqA/3OjXxD5Bakscdo=","27":"spYTLK5hTL9kMFGjvQRNDE4mxn2v3lyvcUNnEc71isc=","29":"YEWnKUzcDCT9WU8+2cKKjEmpuSNe0NOEWdX0kF+jwkg="}},"Bd9PtVfanzhc2PGdjjLE4s/UdJSDgqMGr5XiVYCowWoE":{"chainKey":{"counter":51,"key":"VmKQ2Q1gSOe8LeWWcN02dOVGfBYHbeXRBgMtMKlEAFU="},"chainType":1,"messageKeys":{}}}}},"version":"v1"} \ No newline at end of file diff --git a/baileys_sessions/session-5215516611480-30.0.json b/baileys_sessions/session-5215516611480-30.0.json new file mode 100644 index 0000000..7a108c0 --- /dev/null +++ b/baileys_sessions/session-5215516611480-30.0.json @@ -0,0 +1 @@ +{"_sessions":{"BUZ1YkgIgWjqsFn/wb2vAhSN2h8f24JFNIFfOsSkwFkV":{"registrationId":3199,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BZz6ZNox4cggWCikFfiThbgZBNA19FMu4bzktJHQ7rkI","privKey":"yH9EISEZkHpvI9NIjj+dodNyht++mhhl/D944sbNI1I="},"lastRemoteEphemeralKey":"BZ/O8Wxuhw9AUrXpORRMk+WHE/uwG34y+VhX2FQM/E0s","previousCounter":0,"rootKey":"uWLxGhoWZOTfxI4OHfTZaPNdGk2YBCGcfKND9jDhJ70="},"indexInfo":{"baseKey":"BUZ1YkgIgWjqsFn/wb2vAhSN2h8f24JFNIFfOsSkwFkV","baseKeyType":2,"closed":1676616816297,"used":1676613575711,"created":1676613575711,"remoteIdentityKey":"BWMbwv3hUdyCp8tsG0XAo1C6Eh+QU0tHG8bcwsvlaJM2"},"_chains":{"BZ/O8Wxuhw9AUrXpORRMk+WHE/uwG34y+VhX2FQM/E0s":{"chainKey":{"counter":9,"key":"5ToLDQ89AoNw27l3h2lMfc58RS5VNZnl+yWCed38XAI="},"chainType":2,"messageKeys":{}},"BZz6ZNox4cggWCikFfiThbgZBNA19FMu4bzktJHQ7rkI":{"chainKey":{"counter":81,"key":"vba4Z77PeTeHmH4UbanEUWKtBNBOpHbXZJFrPMIUcgE="},"chainType":1,"messageKeys":{}}}},"BbHD/7Qc1qH/YNWetQuL03gLXZaVEkjTG/aVuMBMYwdT":{"registrationId":3199,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BVeo/KUOEDUXILNa2aq9Md+ZhX8CinlPzNsOMXBKOKhZ","privKey":"qMPdSSX8YCrBVtPr0n4xERnXyhKR8vZ/+9lsU2E5pWs="},"lastRemoteEphemeralKey":"BXW4cfagSwg8J/hAGGUzDdxK1524TdCMNiqXTgNHEKJp","previousCounter":0,"rootKey":"JbnddtK+6YhlvolxNBvI/3iDsXua/dJGqn3sZA0m2ro="},"indexInfo":{"baseKey":"BbHD/7Qc1qH/YNWetQuL03gLXZaVEkjTG/aVuMBMYwdT","baseKeyType":1,"closed":1676616816370,"used":1676616816243,"created":1676616816243,"remoteIdentityKey":"BWMbwv3hUdyCp8tsG0XAo1C6Eh+QU0tHG8bcwsvlaJM2"},"_chains":{"BVeo/KUOEDUXILNa2aq9Md+ZhX8CinlPzNsOMXBKOKhZ":{"chainKey":{"counter":-1,"key":"qMVgOCZWaJGp9JvRNBNUdhWoDZxdJV6ah7QxYlUmNpI="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":1,"baseKey":"BbHD/7Qc1qH/YNWetQuL03gLXZaVEkjTG/aVuMBMYwdT","preKeyId":174}},"BbJ8Qu6GPv9I9CMJc2x+3tF1L7l7h5U2hB3r6FeDX4t1":{"registrationId":3199,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BYeepGJZQICCzaXZVZpkkeHiD36wVUyYd1jVwwk0K8Js","privKey":"0FaF/Yov1sNTU0MHfX2TZQb6owJM869WtXBvHc1htVU="},"lastRemoteEphemeralKey":"BXW4cfagSwg8J/hAGGUzDdxK1524TdCMNiqXTgNHEKJp","previousCounter":0,"rootKey":"hZzkhD9itssnWUhHluwzraf2zTp0zLASEu1MtwVwTaU="},"indexInfo":{"baseKey":"BbJ8Qu6GPv9I9CMJc2x+3tF1L7l7h5U2hB3r6FeDX4t1","baseKeyType":1,"closed":1676619799181,"used":1676616816348,"created":1676616816348,"remoteIdentityKey":"BWMbwv3hUdyCp8tsG0XAo1C6Eh+QU0tHG8bcwsvlaJM2"},"_chains":{"BYeepGJZQICCzaXZVZpkkeHiD36wVUyYd1jVwwk0K8Js":{"chainKey":{"counter":43,"key":"9LDS3JbX7b6eujgT5ayJfMvZnE6Mjhsm1/IeSkOhujw="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":1,"baseKey":"BbJ8Qu6GPv9I9CMJc2x+3tF1L7l7h5U2hB3r6FeDX4t1","preKeyId":126}},"BUhZhzBcI0wY6Cu7OU2LEqDkjTs8T79jwMSoPEZxIYJz":{"registrationId":3199,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BbRJiHB1m2jCRm2PpkjfKc/aF7BEgETSma3BpnOfwPl2","privKey":"2MWnZwf2CaqeNfc9fmOEnprFIt98w+53K71uwKH8TmI="},"lastRemoteEphemeralKey":"BXW4cfagSwg8J/hAGGUzDdxK1524TdCMNiqXTgNHEKJp","previousCounter":0,"rootKey":"xnBPZD4INsiwWZnP8GhEEKdOmTg5x6M/GgrztfwOjZ0="},"indexInfo":{"baseKey":"BUhZhzBcI0wY6Cu7OU2LEqDkjTs8T79jwMSoPEZxIYJz","baseKeyType":1,"closed":1676619805774,"used":1676619799172,"created":1676619799172,"remoteIdentityKey":"BWMbwv3hUdyCp8tsG0XAo1C6Eh+QU0tHG8bcwsvlaJM2"},"_chains":{"BbRJiHB1m2jCRm2PpkjfKc/aF7BEgETSma3BpnOfwPl2":{"chainKey":{"counter":2,"key":"Egy/oyMLldWWjqwLSrMp+jo+qZSKrCd3j3gjn0GkYjo="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":1,"baseKey":"BUhZhzBcI0wY6Cu7OU2LEqDkjTs8T79jwMSoPEZxIYJz","preKeyId":195}},"BU7TUAOG/t0viGqJqhnoJHX2oS/3WJRcllfIdcxiosA3":{"registrationId":3199,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BW3PbwcruRgOjNrrnJmLgwq44CSnJdM6myXr+AESm287","privKey":"YF/ngMIMXhbq5vQYNcgXx+zB+LJkvdwgWXYmdhWBZXc="},"lastRemoteEphemeralKey":"BXW4cfagSwg8J/hAGGUzDdxK1524TdCMNiqXTgNHEKJp","previousCounter":0,"rootKey":"Y/NdV++pAEoB4R37QxAedRyfYcNMtO5qFMDANRxRs4k="},"indexInfo":{"baseKey":"BU7TUAOG/t0viGqJqhnoJHX2oS/3WJRcllfIdcxiosA3","baseKeyType":1,"closed":-1,"used":1676619805762,"created":1676619805762,"remoteIdentityKey":"BWMbwv3hUdyCp8tsG0XAo1C6Eh+QU0tHG8bcwsvlaJM2"},"_chains":{"BW3PbwcruRgOjNrrnJmLgwq44CSnJdM6myXr+AESm287":{"chainKey":{"counter":110,"key":"KN3e1e9C0AnTarHLLyW2IMRZA2l9phDfUpdCb2jmFxA="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":1,"baseKey":"BU7TUAOG/t0viGqJqhnoJHX2oS/3WJRcllfIdcxiosA3","preKeyId":156}}},"version":"v1"} \ No newline at end of file diff --git a/baileys_sessions/session-5215516611480.0.json b/baileys_sessions/session-5215516611480.0.json new file mode 100644 index 0000000..c6fe756 --- /dev/null +++ b/baileys_sessions/session-5215516611480.0.json @@ -0,0 +1 @@ +{"_sessions":{"BTocc2hum7YSmyLmQ/l0crWEtC7ExCcxHzjym03Z4u16":{"registrationId":1963199711,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BYIYjvLN6e6qoL5GG54BUcAd1Y9Ev+Uq/GYSyzLOMf8s","privKey":"AM0ody2v4nmDOE/ETt5d7Ho+0GeFvzBaWSkWUPH3rmY="},"lastRemoteEphemeralKey":"BZ9cxJHCNeLdS3abaM2NFeSum7qmeCBNrAkbsdsai8hP","previousCounter":0,"rootKey":"FxBZwGypoW0Pwf/UeJwMKxjmcC6enNow7lmZVNC7kDY="},"indexInfo":{"baseKey":"BTocc2hum7YSmyLmQ/l0crWEtC7ExCcxHzjym03Z4u16","baseKeyType":2,"closed":1676512682108,"used":1676511986305,"created":1676511986305,"remoteIdentityKey":"BT18r4g0LryBmYOWrh7YgK4kBTnKftTsCfM7EAulcZtH"},"_chains":{"BZ9cxJHCNeLdS3abaM2NFeSum7qmeCBNrAkbsdsai8hP":{"chainKey":{"counter":6,"key":"BZd7+T6ZrunZvHOc2Daj9+a+3V5pkCw3QKR9dkdjEm8="},"chainType":2,"messageKeys":{}},"BYIYjvLN6e6qoL5GG54BUcAd1Y9Ev+Uq/GYSyzLOMf8s":{"chainKey":{"counter":45,"key":"BGGs80q1CvDQ56692Vgn0xzG1D6z5dLIz8ugsnfN+Z8="},"chainType":1,"messageKeys":{}}}},"BRoLCc6W0QNPTvv5oQRoImSRI8MezvVnNAHXpHT+gKBI":{"registrationId":1963199711,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"Bf2ANKHYMf1pusPDDbALeXRPYwrXUK4JKE5pceQ+9UUc","privKey":"SCqK8dflVMs83iMxah2JT3xeqZzl3qWsV7a1puM0u2E="},"lastRemoteEphemeralKey":"BQC2noM2UmU/4yfmNyVEWPapfEBgvkMEj+7H3IDnEt5Q","previousCounter":0,"rootKey":"ooUkAdUQJO6xzTRs/dk0ZYNTBdldc9FeVA2IqXCfzME="},"indexInfo":{"baseKey":"BRoLCc6W0QNPTvv5oQRoImSRI8MezvVnNAHXpHT+gKBI","baseKeyType":1,"closed":1676512682171,"used":1676512682077,"created":1676512682077,"remoteIdentityKey":"BT18r4g0LryBmYOWrh7YgK4kBTnKftTsCfM7EAulcZtH"},"_chains":{"Bf2ANKHYMf1pusPDDbALeXRPYwrXUK4JKE5pceQ+9UUc":{"chainKey":{"counter":-1,"key":"jtxYQzalb164LSyHSISg+U6HfF8pQDxaRVXr9fnD7SQ="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":4,"baseKey":"BRoLCc6W0QNPTvv5oQRoImSRI8MezvVnNAHXpHT+gKBI","preKeyId":6964766}},"BdhwBly86VxPrRcAyoHrEQF4hvFWe6GZ7ALwhMOWoPws":{"registrationId":1963199711,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BS/P6voz0bLWCQ8vaDr/QZATBVfiw4uIEjmE3sKSWk5V","privKey":"6CyVCJ0CzF2gSVUknHJxaXnM/N3JJacBkXezrduWxFE="},"lastRemoteEphemeralKey":"BUor0xediO7CeHLLxxgtlWBwIuh7Tk21dlRvnb9Qzix3","previousCounter":44,"rootKey":"hqm0aWc1ksWFc2gWT86uB1bBNJRbQXv1Qvg4gac0wVY="},"indexInfo":{"baseKey":"BdhwBly86VxPrRcAyoHrEQF4hvFWe6GZ7ALwhMOWoPws","baseKeyType":1,"closed":1676616816300,"used":1676571096995,"created":1676512682157,"remoteIdentityKey":"BT18r4g0LryBmYOWrh7YgK4kBTnKftTsCfM7EAulcZtH"},"_chains":{"BezcAxIENF0d1ZAO3r1yozzI/d/pnpzDCQdBM/qtnWVx":{"chainKey":{"counter":2},"chainType":2,"messageKeys":{"1":"GsADjQTemp9F4F/0RbdkrjBb3ILCohLQugpTbOjVlXo=","2":"JJ1cOzOMAvNmWC4usNKWdL6aZMvAZRJMWcu/j+4Iu0I="}},"BUor0xediO7CeHLLxxgtlWBwIuh7Tk21dlRvnb9Qzix3":{"chainKey":{"counter":0,"key":"qQC0I9oFVnlKNnYU6c7ATBwhiqySKeiLrpKzkrTtZ3w="},"chainType":2,"messageKeys":{}},"BS/P6voz0bLWCQ8vaDr/QZATBVfiw4uIEjmE3sKSWk5V":{"chainKey":{"counter":81,"key":"pMquFwfQ6bzTzP3YaN7hw7kBrUJRVnLOj5W7DybVoII="},"chainType":1,"messageKeys":{}}}},"BTTtGuAS30/dNlQsi4b9Cvuw3yix4jMi2mzKBp6OZJZ6":{"registrationId":1963199711,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BR7wycjMloJfnyJWbB0+TmXCr7OJX/RpyhlpMl/SCGYP","privKey":"8KoP3AkVbAGcxxoX28qzTkgpzXR6cV3M5SEVkN4Kd2k="},"lastRemoteEphemeralKey":"BQC2noM2UmU/4yfmNyVEWPapfEBgvkMEj+7H3IDnEt5Q","previousCounter":0,"rootKey":"AR7ARJaGHCC4OWi+OolfKyr/z2zFbxXlKQo9FkIT4bg="},"indexInfo":{"baseKey":"BTTtGuAS30/dNlQsi4b9Cvuw3yix4jMi2mzKBp6OZJZ6","baseKeyType":1,"closed":1676619805636,"used":1676616816262,"created":1676616816262,"remoteIdentityKey":"BT18r4g0LryBmYOWrh7YgK4kBTnKftTsCfM7EAulcZtH"},"_chains":{"BR7wycjMloJfnyJWbB0+TmXCr7OJX/RpyhlpMl/SCGYP":{"chainKey":{"counter":45,"key":"iqPX2B0HkUCmS3Hq0yq27GZUMpFBGJif4trS92sPaaE="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":4,"baseKey":"BTTtGuAS30/dNlQsi4b9Cvuw3yix4jMi2mzKBp6OZJZ6","preKeyId":6964760}},"Bb5og40y+gtKo7Vv4d6GuYb5iS+gjwpMLmOdbbuzxa82":{"registrationId":1963199711,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BTrAgw1e6vkZqhHKdlxI9uL5UUEWEQWKahLg0lDk7Ehq","privKey":"CCUUrvYReXhxcqT+8L2XGKG8oDiHUD/0RvKIaZjZaXY="},"lastRemoteEphemeralKey":"BQC2noM2UmU/4yfmNyVEWPapfEBgvkMEj+7H3IDnEt5Q","previousCounter":0,"rootKey":"D1zGYMejc3D95Ye5oBWuQv7fIu+4YB/GBmia+TWtTic="},"indexInfo":{"baseKey":"Bb5og40y+gtKo7Vv4d6GuYb5iS+gjwpMLmOdbbuzxa82","baseKeyType":1,"closed":1676619805785,"used":1676619805615,"created":1676619805615,"remoteIdentityKey":"BT18r4g0LryBmYOWrh7YgK4kBTnKftTsCfM7EAulcZtH"},"_chains":{"BTrAgw1e6vkZqhHKdlxI9uL5UUEWEQWKahLg0lDk7Ehq":{"chainKey":{"counter":0,"key":"LLBwZtybMdvGxvzxFza/1Af0FQOdpC++zOpfWCoSpXI="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":4,"baseKey":"Bb5og40y+gtKo7Vv4d6GuYb5iS+gjwpMLmOdbbuzxa82","preKeyId":6964106}},"BQBbx3ZGLQMgjz7GP2U0mqVmDN5b5KTsL0vn5rURCOwZ":{"registrationId":1963199711,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BUwZMx+9FQJ2+M1boEjlo9cyYrhmmay2YA47CRQYqol/","privKey":"6A9G139civDm02uBRMQOksol0rENrh6HmDivYH65OWI="},"lastRemoteEphemeralKey":"BQC2noM2UmU/4yfmNyVEWPapfEBgvkMEj+7H3IDnEt5Q","previousCounter":0,"rootKey":"uYKOxUEl3I3m+FtmP3caUKve+o1OumD2jZZJ7HfeF2g="},"indexInfo":{"baseKey":"BQBbx3ZGLQMgjz7GP2U0mqVmDN5b5KTsL0vn5rURCOwZ","baseKeyType":1,"closed":-1,"used":1676619805765,"created":1676619805765,"remoteIdentityKey":"BT18r4g0LryBmYOWrh7YgK4kBTnKftTsCfM7EAulcZtH"},"_chains":{"BUwZMx+9FQJ2+M1boEjlo9cyYrhmmay2YA47CRQYqol/":{"chainKey":{"counter":110,"key":"qnvJs2IVcmOl0p3+rB7rdbPOi7lWKQ87UMXbNthO1f8="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":4,"baseKey":"BQBbx3ZGLQMgjz7GP2U0mqVmDN5b5KTsL0vn5rURCOwZ","preKeyId":6964071}}},"version":"v1"} \ No newline at end of file diff --git a/baileys_sessions/session-5215527026728.0.json b/baileys_sessions/session-5215527026728.0.json new file mode 100644 index 0000000..536f902 --- /dev/null +++ b/baileys_sessions/session-5215527026728.0.json @@ -0,0 +1 @@ +{"_sessions":{"Bf9lN2kk9Ow+687G0OP2qGRI6EHOgy5lz4fwnqlBtr8f":{"registrationId":917869974,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BR4bcQnaFclFnDYY5xFUcZI/0X+tedtxgAni4wwUnZFO","privKey":"GHZq5SLwC4JWFn5NGwPFy3FoMZgEzyzTKCpQ2/bAs1g="},"lastRemoteEphemeralKey":"BXay5B717VFyh4dq6kQWz+OgXxTYCfjw8hOJhxq8vBp+","previousCounter":0,"rootKey":"hyRttFQzNyAs/QKRUKg6xx2Pck1OKOyJcgj+77vrDOE="},"indexInfo":{"baseKey":"Bf9lN2kk9Ow+687G0OP2qGRI6EHOgy5lz4fwnqlBtr8f","baseKeyType":2,"closed":-1,"used":1676613575714,"created":1676613575714,"remoteIdentityKey":"BYFM8Y/vqUjvS/Te+O6hjMCKeUjvT1x36ECaLgHyW8pj"},"_chains":{"BXay5B717VFyh4dq6kQWz+OgXxTYCfjw8hOJhxq8vBp+":{"chainKey":{"counter":2,"key":"0jfMBmgKZveVxjPTYAKQremV9OpjuXdBPF4+XaurBPw="},"chainType":2,"messageKeys":{}},"BR4bcQnaFclFnDYY5xFUcZI/0X+tedtxgAni4wwUnZFO":{"chainKey":{"counter":-1,"key":"rnCU0p/q9Bi7NHWz+yb6QqAOg2V1VkF/qlgbE55V0Vs="},"chainType":1,"messageKeys":{}}}}},"version":"v1"} \ No newline at end of file diff --git a/baileys_sessions/session-5215527049036.0.json b/baileys_sessions/session-5215527049036.0.json new file mode 100644 index 0000000..49351c7 --- /dev/null +++ b/baileys_sessions/session-5215527049036.0.json @@ -0,0 +1 @@ +{"_sessions":{"BYuuzcjiljF4phxisWr1qclLXVcZW6Up0ks6CwYQIa4i":{"registrationId":700962419,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BZMBqhLo0+E7O6zeYZ28GE2T2FcUskZ0szPG/tWHKT4x","privKey":"gJk6rV2f5K76zDPMBLf8irFTjAuycbe2xeEwFULyOWM="},"lastRemoteEphemeralKey":"BbrIvqXwaNzARRhvImiJE6Zm6kibmrldreCWtAN692Us","previousCounter":0,"rootKey":"ZvWCrt6MHvg5Tr7BhUHLi4l3nIHFNi2IylMu/PUTq8Q="},"indexInfo":{"baseKey":"BYuuzcjiljF4phxisWr1qclLXVcZW6Up0ks6CwYQIa4i","baseKeyType":2,"closed":-1,"used":1676563632556,"created":1676563632556,"remoteIdentityKey":"BW+O8TIFKawqsOWwDxeNQ7n75mSVQrKn7taPAmP8AvJ5"},"_chains":{"BbrIvqXwaNzARRhvImiJE6Zm6kibmrldreCWtAN692Us":{"chainKey":{"counter":1,"key":"8MWYu7nY9xEToxM85TvEwAs8YovZ2sMTeYTrY0V3mxw="},"chainType":2,"messageKeys":{}},"BZMBqhLo0+E7O6zeYZ28GE2T2FcUskZ0szPG/tWHKT4x":{"chainKey":{"counter":-1,"key":"NfrGoyu8nRBFD8T/IYXYJ7HUjGWk7XDn6SbCM+3hqqI="},"chainType":1,"messageKeys":{}}}}},"version":"v1"} \ No newline at end of file diff --git a/baileys_sessions/session-5215554192439-64.0.json b/baileys_sessions/session-5215554192439-64.0.json new file mode 100644 index 0000000..c04c462 --- /dev/null +++ b/baileys_sessions/session-5215554192439-64.0.json @@ -0,0 +1 @@ +{"_sessions":{"BdMXpqbQgQM7PfZAw4vs/Nv4vLRFeTJ/uj1t2WOiR7VU":{"registrationId":3057,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"Bf19veZISodA1dw7xqHGFXQMFmWPxJUSKkqz+mXSi21J","privKey":"SK+3ubTXR0yblyTYyNjZnkKXVkGa2BPAZIjzoVZIklk="},"lastRemoteEphemeralKey":"BUeU7jmbjxGcmtUlMJQ1UnkzNdMymXkKY4f+S9M9UAYC","previousCounter":0,"rootKey":"ut1RusDoG0O2XQUqGP2Nf1iNG4aAsQs8vI9ATC68oxI="},"indexInfo":{"baseKey":"BdMXpqbQgQM7PfZAw4vs/Nv4vLRFeTJ/uj1t2WOiR7VU","baseKeyType":1,"closed":1676513835239,"used":1676513835196,"created":1676513835196,"remoteIdentityKey":"BVEFTI8m+SJf+LTEnN3Oj2S6+nx/3s4YlCv94CBAKQ0i"},"_chains":{"Bf19veZISodA1dw7xqHGFXQMFmWPxJUSKkqz+mXSi21J":{"chainKey":{"counter":0,"key":"WFhi9OSOl7/YP6qfBdYnrh+T13EqiE1mcYyD0zp7kOc="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":4,"baseKey":"BdMXpqbQgQM7PfZAw4vs/Nv4vLRFeTJ/uj1t2WOiR7VU","preKeyId":485}},"BVkGpLevi+PijtWNzelOkD9fiPRdH9A2Qltt+diZGE5C":{"registrationId":3057,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BcKkuCDp4hLevFHv3fkZhQJ4Y7B1OxkI5S3d2JnNSV12","privKey":"2KAgexHvQTiUi4w9PePJa3GipNA7K8HfbeFG3QMj32Y="},"lastRemoteEphemeralKey":"BUeU7jmbjxGcmtUlMJQ1UnkzNdMymXkKY4f+S9M9UAYC","previousCounter":0,"rootKey":"xPmnkdDZDUFpSIKlrnma8v6XQbn0uU5ucQlN7UoUm4E="},"indexInfo":{"baseKey":"BVkGpLevi+PijtWNzelOkD9fiPRdH9A2Qltt+diZGE5C","baseKeyType":1,"closed":1676513835266,"used":1676513835234,"created":1676513835234,"remoteIdentityKey":"BVEFTI8m+SJf+LTEnN3Oj2S6+nx/3s4YlCv94CBAKQ0i"},"_chains":{"BcKkuCDp4hLevFHv3fkZhQJ4Y7B1OxkI5S3d2JnNSV12":{"chainKey":{"counter":0,"key":"Gu9BrZ1oF3XYReic1cnJBeAG7sD/SJCkxdB69WVLwcE="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":4,"baseKey":"BVkGpLevi+PijtWNzelOkD9fiPRdH9A2Qltt+diZGE5C","preKeyId":535}},"Bfs3+giIvURkcoCwxGBuj6e5JJqUKnW3Jk0TxkPfr7Yt":{"registrationId":3057,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BZY3q2tOhySZwjzQ6WDnrAK2tM9MGU9Lla/PCIwMNPAG","privKey":"gKpropA85LEH30GPI1JDVQgLqFvZUHPJW3hheXKzv1Y="},"lastRemoteEphemeralKey":"BTI1Viqt80JsElwroUzTSk5lTQdpAqVxFuBHJPiSQr4o","previousCounter":0,"rootKey":"VEk9UTVN/y4oxYC2yidPHgIfn5aMOYrBSD+Yv4mdVhE="},"indexInfo":{"baseKey":"Bfs3+giIvURkcoCwxGBuj6e5JJqUKnW3Jk0TxkPfr7Yt","baseKeyType":1,"closed":1676616816289,"used":1676616815125,"created":1676513835259,"remoteIdentityKey":"BVEFTI8m+SJf+LTEnN3Oj2S6+nx/3s4YlCv94CBAKQ0i"},"_chains":{"BVi27t1uicsnt1u2wVuaMhx4ImJI5OPR/tRJrKzvzH1z":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BWZps2hFhW2VEvifM5eoZxb1kSVQ/AnYfp39IGT/gnFA":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bb+4g7eHARom//iCzBW9RQnFWfibQfVl6qkyOisMEYJD":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BYCkyn5n7pAJp9Gd92zFnVXC0YyPGjpwHqY+hoNPkdo6":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BSiK2teaJu2HTQ3PsBa1btFHa+LQGIevzSVm//lpTHgG":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BWCbd/avkaKZ8tKn39O42WDJQPmdyNt+lU6k9gQw3zYj":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BdVoeGyvFS8plpWHgcnUNdDCTsQ3Pvlo3xZq2Lx3LOYm":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BVo6xLVnfarqH9um4ZUIWkK9VElSDRDHSLFJqLZWJZwD":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQaM8zS5GRbCAgfelFXgSB/nxnvR4e7yryUevLsUys5k":{"chainKey":{"counter":5},"chainType":2,"messageKeys":{}},"BXsjqENEVU2Z+SdSbRvO2oxbDrAb6FWrC1abVYpqHfJt":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bd/4lLIqlge0zUJbF3SilILtlGarHO2NSmEuUvafJrNz":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BbnQk6meeYoHJYpyKrb208Sk4+mN54HCPE+f18RqRLdN":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQLTjhz6BHDVd0M+1rdstBP+cMcc4KQkYbVudfwe9TMj":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BROydoULh+sia+I/oaVJWPFwYZhWQ8S2FeOnPTHlzY0e":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BYSztmu6wktsPRvcvc+pfRImCBBO/Vk459BmxM8MzNwh":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BUKb1VzGShuwArDgS1CLfmehlmnN93u9oTxk7ydG9zg1":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQGsU0D0Ek/Xp5bFYCJslrXPn3kS7UgO5YEGVDx3q0dJ":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BXAwiBcSm9QA8WGwbrDPPzp9YRmXn6HXwzkSU3M2zB9r":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BffM+C+iOUHcXOdPfpdUkO2hBZ8rQlKbRgZLNxncjbEu":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BSHJutqCV5mvNIhboJrXzYcBEs10SE9sKv7gCo+etVAJ":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BTFzdT7Ucth5v/el4I2m5anxfEBToo9iTNDhM187RlA8":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BdLmQB384Q88aiTggw7itewLFePTw85/FVIoRwVUmi4t":{"chainKey":{"counter":9},"chainType":2,"messageKeys":{}},"Beu6UXtyK15qXFARvzRc9x+N631jmoJsAU36Q7qD2V9t":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BcnALiMSh97NoCvpXfxx/i+nOMemg79uz/JMDosAqxAq":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BVaaSkDajsMEfik4vnxK7U91yAXShbpzdlNXlxmxC8I6":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BTmIh0xqMlsyeDzV95AGcZIec84oy3yZWnLGhECkSvw/":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BVRRvYEt/qZebqmhahFZdpryf/kYJcQKBbUyF/Hpr8Nk":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BT9TRpWSMNog4sBDa3vsfjS6V2BXEjxAFkqLOBBLrj8w":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BUZSZlvBoRVeZ87cKZ2BbE4lIyv0mdn2D9WoWJxt3cl6":{"chainKey":{"counter":12},"chainType":2,"messageKeys":{}},"BaEJKb/DiIPKplt6/GlQ+cC4Tefvzwh65TMg/Kov+wQB":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BWR5VSGwr5tl9L0vtnkzg+LkXVfDIHN5SRxqlHGLpCsB":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BUzxMwqkm0Eg5i7JftgZyH9XKQwz5JccmeerLilb3thb":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BeL5XZrvtvozdUFmVamyR6s7uOZPlUysZuekVjhFasJ+":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BWfsW61g4mCsZfOggUmYzHkN9+WjHv7OvcVqmUH5cHVh":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BaGmt4johkktnatBFmrHVB3ooBy1I9DxI0sqH/7Hsn83":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BcLDF1CiaRaos85oj086KPxzLQ24Qo/dpMKvk4XvCEFV":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BVTSVbV6IMzPAGhsOeN5dfH107LUJruc31iz5N5mstcz":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BVMSXHEdROasJ6eSJJtTK/brjw0+fsRQ64PDaz+F/HUM":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BRYKUr1QBHH7pyLmoEMoi/y/egonA/Bk3s3w2wm136Fy":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BVZgLEngDRJMyK4OfgH1VUOGPtNPSpe5oUdPJ6/MDX1q":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BdD2I08OI2kEyNWvaAK0o93jkEi+ztzPIJ06iuTqEMI5":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BcazRWsLSxheMMDJn0IfVaDh9nODkGOwCLOw8uiQ77EZ":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BZvk68zYnyBlY/vCI5AKtiIcFRXYV5/b/TgqQEOiFkoV":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BT7Wl36yGGTdNawcDK6orfuA5RX59HQHafWgDxW+TX1E":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BVtaeQDOCwcJ2H2vMBoYP+xCYidB2OEYylsFi/f1he4b":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BcocIjVqFjunyIN9myrlABw23HIWIBeMkzv5V2vodRQJ":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BdlEOJfXxlr93n42pt2Rn8naCHc79ZBJUMb5/2OvvGMG":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BZArjlsqsw271UEXYLQ+GqRjktvUPnr5phJqCXDXzRN/":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQZrMwQgQulBTrXO7an3520EnLpEMEuNIfZyWpJFDBIx":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BSVj1tVaT5ll1TVDCFa2mRQ+S4JehWj8RRjdHC5Ee/ES":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BdtmM6aEj7r/M3hGPUKZHnY8amlrwl4hc27BEBXqPqI+":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BcTqS0euZORO6qEZw1FPUIxrd2V31rwwSCiJvlNODIEJ":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BbID9DwPyqQPEYYJi+cZvTzYy7TXbd0geZW+ofDdXuZN":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQ8+Rhd8tC6Upl8AIH9zPAoSPix8VvXED27FAZksWQJv":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BYvshOSTI2pSRv26rpMIOtv2QympQ07Y87cT11EsvAYE":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BYhc+v1fwSrp0ZTY8X2sc0PAj/JSt5i+94dVEHtS8kRa":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BVzWTZv8yCfTsZoC/7mZd+JoTtFYfUqbOjYqdCvXlEET":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BUL5GbNnGNmwX7srSfH/rchlkEyw9yL89vZjS5lX6jAS":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQxaUIgRKk06DEhpkzEdYhz+MXyYHAluuAf28JhSZKML":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQTX72xhiLJV2vUUYpN1DFYEfesLOnZV6V7Bqe+K1PpC":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BZeK/WNUxM2pMITRiVO9Z95ao4BsmLgL02sKaQLcqk8K":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BZnYjnN3iDmPVfWr2AUfCX7BG5z/atw8ME93P0sIzoM3":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BcK7N6pXEYCojTJu9ipzB4n+uJf27iRKxJ8lHgQLHTYF":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQ1Dogiuek2jHvkbG2OQM3Gp39dqrOTZCsKTsnOjamE6":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bbxg+bB1uqiahowa+IAeMh7tp55cCxiqWoUowm4mbf8b":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BTI1Viqt80JsElwroUzTSk5lTQdpAqVxFuBHJPiSQr4o":{"chainKey":{"counter":0,"key":"K2M1SemlCr4UD8+GoyUlEVVReh3Qu3m/Tz6YhsCq/Q0="},"chainType":2,"messageKeys":{}},"BZY3q2tOhySZwjzQ6WDnrAK2tM9MGU9Lla/PCIwMNPAG":{"chainKey":{"counter":0,"key":"eAjr63PEgVyMCSEQ4jKf4kjm3F1kWl6xyy1sK29Zey0="},"chainType":1,"messageKeys":{}}}},"BVoO9Z/u/v75dk0lgGdQzq+AHNGC6v1OBsHRq5Ii108t":{"registrationId":3057,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BW6CXwTs+kwVMbX5MZ29jutc0hzZ33591A8EW+U8uYsS","privKey":"8FUjuo5ZLEOW03tS9a/Qp/FNnaSqrlRZiW02aMaymE8="},"lastRemoteEphemeralKey":"BUhTg1XZXr3EGlwKZJpnTofVUYD25vOCB0YqxPnfk+wB","previousCounter":0,"rootKey":"R+1u0taY/KD4nkh+GZlBkiLgQU3F5efPyP6fr8gCIXI="},"indexInfo":{"baseKey":"BVoO9Z/u/v75dk0lgGdQzq+AHNGC6v1OBsHRq5Ii108t","baseKeyType":1,"closed":1676616816357,"used":1676616816244,"created":1676616816244,"remoteIdentityKey":"BVEFTI8m+SJf+LTEnN3Oj2S6+nx/3s4YlCv94CBAKQ0i"},"_chains":{"BW6CXwTs+kwVMbX5MZ29jutc0hzZ33591A8EW+U8uYsS":{"chainKey":{"counter":-1,"key":"7FKhgKPbGO7A59QFVkEeyZFjDo2eFJM7e+TIb96jGVo="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":5,"baseKey":"BVoO9Z/u/v75dk0lgGdQzq+AHNGC6v1OBsHRq5Ii108t","preKeyId":511}},"BT3oDj0J2+vqj99Pm86egAsnpIMeOvO7xtbT6YW9nrsV":{"registrationId":3057,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"Bc24qNzHdnZDbbKEvSk2fSxkbBBck/TYROVOFEKy5kZ6","privKey":"mNwVA5QFju1slT5X7ROkLkZ6DGEGo/J5B9HUrSD5H14="},"lastRemoteEphemeralKey":"BdKoJry52jlod2SbnK6q4806PWFt9SlWeiikq3z2GJx5","previousCounter":1,"rootKey":"NGJmKs9NlgJQqtQhr749Z3t6xw5q+tM1T4LYJ4b/d2Y="},"indexInfo":{"baseKey":"BT3oDj0J2+vqj99Pm86egAsnpIMeOvO7xtbT6YW9nrsV","baseKeyType":1,"closed":1676619805631,"used":1676619804595,"created":1676616816328,"remoteIdentityKey":"BVEFTI8m+SJf+LTEnN3Oj2S6+nx/3s4YlCv94CBAKQ0i"},"_chains":{"BcbyBdfJWUTm+oiM/+Y5zzmageViRsKRSVDgWlbpq+NG":{"chainKey":{"counter":3},"chainType":2,"messageKeys":{}},"Be0fxFy78wga0czHcyAKlI3std/MnmdrPfLLgYEIglRp":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BSzr114jX397rejOrSca2eNkuB4NQs5UCLBNMdG1r+43":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BfDt5x7asDx+CzyvyUE4pwJZ9wVqrHy87S868IeeYOcS":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bf5m2WWHZ9gMN1hSR+nHr7iNkywVZT3xGlD5GO0is29s":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BcCa9AdRnCFzeV7WcpgZ9/WxdkR9W2TzzXvrLEiLad9n":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bbn8+WsBoQVicjISCSjYy2SmxJV8+t+GrpyjxQj66KYG":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BS3gm+wLzxgrDmFeVgKE/tn/T5RBeQaedXZLt6V2iGF+":{"chainKey":{"counter":2},"chainType":2,"messageKeys":{}},"BYyZIK3OEkvWBUWHZJgaQ1qOLUFFpng7QZQi5KCJTpUH":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQib7PtdXI1NbiEUvFPBJ8gfkFkC9PqITByI9C5HKFt2":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BYrf6iikZe+agn/yTNbewdiJqtXL5pf0jRw5TTuHU3NY":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bfa6jC4E3+9H++RhY+qm3IxjWKXVrMImhQB1avQvnrZr":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BdSHVeyDDHHxhdSWRV65o+S2UjfPhxjHVuz13pTY7nQ+":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BeIcvVBWBgozf33c4Rr0vH1MQGRRhRZ3yxSVqxUUerI1":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BfdN5q54z8Rt/qMcYmLeieo7mBgi42xFxVW3qZyJ9JJU":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BcMwF9tZuPc3LYogmw8X9CdBjLVfmrmh2ohnuyL+TWY9":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BRTz8i+qhdQ15/CyAlsCJpq+NSiip01ObSWLRa+y5+8N":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BfstMighrmX6ZOQUmhvNH9y6KZkCyKyERcsrJXd8VNc2":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BSiYJpFg+GFrXCvXpHJV/QONGokwG0jrtdYOwWKNsOFC":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BU4GHz6qgfLbTdPTPTVe4aFOjU3JaZz6RvvZ6PBnpo96":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bcdef6LPh4+z5fzvohQ/hUZh2LVs6smJ0BmFeep4TX1m":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BdGjFVjIA3/jC+iomRFl+UZleytsbEDFC/0EgO7syull":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BSZN1QbN0nvZegrBrBTKwG/Kb1vRmTaxj+8ck1IFCWw1":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bd8MYfvnBqYCMKp7L/nF5n5x+WBU/Iy55dzi9uBgX+M2":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BUyfBKqLzIP3ZhNabD0D5DHSzFNaA9jN19CKFrc9Sqwb":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bbz1EIFeUWuedLt66XREL2cp7lPdEyruh9Z2P0eE8HN5":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BRt1S/zUT7CW5JiJPWARKSuAheYdPlo7NDys9uJrRssF":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQiwByJmRLS0KBiieYM8tvg09QH2LRcOiYRU0HYyqDFJ":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BdTeoEt6vKKxRUKf5KK6XN9ZbNj90xBOKZiOAa9AWycF":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BZasbdHM/kJbHJpou16HRBRoJbUCgIOZih67sUg2IgAr":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Be9pIHtthmhF4dGN2MZ9Jd0FPYhyHVPtWRx1ljtWHDV1":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BdDeJU4aj5Dx7ZWw7ZM7Q8lSdmm9/6Wt2DSnqyEfqXs1":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BTT7uX+N3Reksx8rGhbGBwsNA2BTOjzaH5DLDtGM4zMc":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BdKoJry52jlod2SbnK6q4806PWFt9SlWeiikq3z2GJx5":{"chainKey":{"counter":0,"key":"m/Gn4739gr+oksjzoy0ZSrWVVHkF9p1F2LTKfHvpqzA="},"chainType":2,"messageKeys":{}},"Bc24qNzHdnZDbbKEvSk2fSxkbBBck/TYROVOFEKy5kZ6":{"chainKey":{"counter":0,"key":"E5f1vd9RbhGepqxXMhGnMzK1y3JhW2+ecswhJCj2KgM="},"chainType":1,"messageKeys":{}}}},"BU67Pu7Z8CTdmbkzDyAdPYDQNKd+Z8K4nB/Tvr3WHPdS":{"registrationId":3057,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BaDDznnAejghhWvKXcdujX4E5/K0jZBq4b8UL71mlokW","privKey":"aC/tXZJp4YJrKbwneUyNlmNb//XXmDAwF57h2Pkhh0o="},"lastRemoteEphemeralKey":"BUhTg1XZXr3EGlwKZJpnTofVUYD25vOCB0YqxPnfk+wB","previousCounter":0,"rootKey":"IbrFRj6QspGBJTE/TgG5imgng7m+9MIGbH0k5hRI1vA="},"indexInfo":{"baseKey":"BU67Pu7Z8CTdmbkzDyAdPYDQNKd+Z8K4nB/Tvr3WHPdS","baseKeyType":1,"closed":1676619805779,"used":1676619805614,"created":1676619805614,"remoteIdentityKey":"BVEFTI8m+SJf+LTEnN3Oj2S6+nx/3s4YlCv94CBAKQ0i"},"_chains":{"BaDDznnAejghhWvKXcdujX4E5/K0jZBq4b8UL71mlokW":{"chainKey":{"counter":0,"key":"+lEUMhplQffjoS/G8ycjNo1TD7EtnqyRC/rCaZcw5ug="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":5,"baseKey":"BU67Pu7Z8CTdmbkzDyAdPYDQNKd+Z8K4nB/Tvr3WHPdS","preKeyId":646}},"BU4I++zOnyyG8/ptVBhFAYTwkoQKb7dxw/hVUnQ5XQFr":{"registrationId":3057,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BRmHV1Rj7D2LOuoxvoMTJK7xaPRo1xB6GBxRuoZJ5JR5","privKey":"EOZSJHE0nHvy6mbPKTrcXNH7MLkcr0Dh96DpOcHDkWs="},"lastRemoteEphemeralKey":"BTFwfYRbiKeOdnZTZsyyk4/5w5o4UPSmoGnGxvUCPlth","previousCounter":0,"rootKey":"QSgPJa2JTyzSrFeJ7/Hpo+UihwCLuZ9X7pavb1kAx0w="},"indexInfo":{"baseKey":"BU4I++zOnyyG8/ptVBhFAYTwkoQKb7dxw/hVUnQ5XQFr","baseKeyType":1,"closed":-1,"used":1676634466475,"created":1676619805764,"remoteIdentityKey":"BVEFTI8m+SJf+LTEnN3Oj2S6+nx/3s4YlCv94CBAKQ0i"},"_chains":{"BRUXqvkpDRqggfaOD6SvmHe2+JMhFEATjw3wCoBw/v9q":{"chainKey":{"counter":4},"chainType":2,"messageKeys":{}},"BZ/FH7sB1iJUixZv5Q5gz68Ti/ejIt1ld2XYuvrFisBp":{"chainKey":{"counter":65},"chainType":2,"messageKeys":{}},"BVjbmMidlfykFtJvKgbfx7jZTwUVaQR7Q21aCY7by8QL":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BfMulDl2GL7FLxULpDGf1KG/0ha5kcoCwGwB7qLolH1T":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BWgTaCm0ZfUQ3qqqGvX18sTgJeXTN06nLT50KhlZbcBz":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bf2lcc2E+68vmfeYTQed4MvXHlf7/hYLyLxop359I2dc":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bd8mTiRww5YNsaDSHX0OQYvXmyZn3RT4UJvH3IHLf819":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BWuLrjbU3zoxPGrgNcljpMn0O6JYU81/6UalTOBqFNUK":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BRK8oPn6JNNM37YbuRUXtyQaYNrHx7EwdJTymP7lxE9a":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BZsXnTMyMUw1Kc61m98jItW4LhCencHwvlrGW3Xva/9e":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BdvFLkyZhTO2li8M4gFkDde+HXtHzXrGgVdjg+35Z5Vd":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BVstj6ZTubib0spG1TG1edcooOy9tm+El4Eb2Bjto5wv":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BYiCHHXUSHjsCb7pobVnG0aGzmOaflUFwRqAocMZ2m4m":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BYlREfkvsiaOfhmiR76M/7bnP8IzK3+o2CL+Q07tYCYB":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BUGiBDv2Ypr6QzIreh6zZUSl5Iv4w3laX86OaMw3e44T":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BbF0213GSJMHmwzpKD2gY1JgLBsQyRB/DTyTh5PzEzpS":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BW/DqDHpw2jm2oDJAwL6DqtvsQajlHl7A/BwflR63+F/":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bai5yMxkwYKGPE/COT3hO2NKyh8Xb74PJdFQrhc+0RpY":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQTr9IV7g37YK/UlANYr4/2flMu67LaZlCwMMnhNDKxE":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BSbhubEjAAAUpi12KsPETVmjyA+IX5kRbdTMFy71FlNY":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bd4vxWocXv0yAB2f0VWA8LEsPMiW7oY52VeNRcAUB5Aj":{"chainKey":{"counter":33},"chainType":2,"messageKeys":{}},"BUOI2mSXe/z9D03MXKgzmwLo2MKF9zTJRjocP0rNCVB6":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BdMfKqGs8Pp1P8R0N37lkHNKIGeCl/NUVpTagrzn7C0y":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BXiSGzRDxolIbK8enORM7N65FQ81YNDVX2EQ9EXxlFJ8":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BZiWo6ycTZbxWcdUPekpeOG2NFZ9DCg9gMGt8PtgUJAD":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BfB8HxHc1DETycHAXHCVs7Mtsod2WgY4HKmmwT4Cwfp6":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BUYhfYClcQgf9wikPAx5nMe1CMJGDr8XkbEXc17c1Hk5":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BV6CUkwO4TmrgXEAjEvjEKAV0U9PjsErV9mnXaH6rtMx":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BU53Ofd7ihAkBNm/xZnOrfg1luVOjrddf2NYg4K+zptN":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BXaRmH2CzwHiDQ9vupDBjBgzfhGoVvUxZNSdSEeZ5R42":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BSgBPF15JX4esTqs58DQVMRcCE2B6PlD8vLH1Hlt06sK":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Ba0BypwKyQ/gcjRQ+Z/Pdt1CwktFQTmmf/ptXZX/bnBd":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BXmen8yBlkCrLhhQwiF6bIb4/06lK5IML48rA+nHMnIE":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BdMRJ4up2xU0QZ5Kqp02ew+uP89UZY/+ayH8SfMQW6Mw":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BW5Q4z537DRvQ7S2P3Mu2nRLjV9IiW92EGKcqehXIZsa":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BVZ/Eu2HDN7IvMZtywZBX2rlcXcpJfipkExV/ZXMJfgL":{"chainKey":{"counter":2},"chainType":2,"messageKeys":{}},"BUbRRPO0gVeU4Cl5yTZONC4gQL0ibhVgNa5QcnpM8/1I":{"chainKey":{"counter":1},"chainType":2,"messageKeys":{}},"BVMu2n/bHNJzQNVWjh1B7W4I7KEEEUZ3JzTVrTKantRR":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BSQz3WVM2gC2iT0WAJlBTxE7zXDhco+Iojf/SKWn2OVu":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Ba6iGrq7IvOD10+/v9Jb2gASOVe98DbM+6vh4GhbW8p/":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BbaSyXuCLG1Y/YzypEBWb4wXlcMYc/P7/BBm8mKh/jJx":{"chainKey":{"counter":1},"chainType":2,"messageKeys":{}},"BW979W3YayP9hSF30Mt8Y/e0wTrv4cHLhvnHsGqW9w8H":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BaHSma4aG8J/hQ4qAgBN1+GxiqWkzsUPkAUvSrXaZHYL":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQLuaurx3xuzjjAj8eMLZZGg3vSv8kk1bzwBrwBop1pP":{"chainKey":{"counter":1},"chainType":2,"messageKeys":{}},"BW4nhcUYG+rfuZ3sJxv/1ToEqUnEIVZwPMZONEStkwlr":{"chainKey":{"counter":16},"chainType":2,"messageKeys":{}},"BS281GA8as2Z798fC6SRJ43pllLHnlj6u7I4T33jMWZi":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BbLD5dHhijhiHm6PwXpsik+WwMt2IYcvEc+u60aXiV5i":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BXLMMcd59BXIZi2IGpYJwNomEQcjFlHnxxUj2hjSZQo4":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BbRdGC/wgUNjNu1OLl94V6lk5lIxtyTuu1uAr7PsWgxZ":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BRdtDvXqny5wxR34xu+tQW2BTkHyRRwrofnbyjL9ZTV5":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BR0+AeWd3qmGO9jpM0PFUl0MUpI4cE4r0gWIxnURB79r":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BVsed/cnh7n583CtiiAxrLPIgCkTiwlLg459zjIhvsIF":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BV51HEzy5KahsZm9A65TUQThDdcVaujwtDhKnRI7uz9s":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BZUKa5gA3j2ZtIgMLSAkwtJPWonRztUib0Htr1UyqXR/":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BY8HcFwK9xtOuNu9tyiDFpNd3D9UYETFACdZuRKZbZgp":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Be62R4/QD/6VHnAKRvBgih4vpHuLL7v2Gc8ROXLWa0ci":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BTeVpFlNN8oIePlWGxGbQEkzBEdvmtrGuvvUl53iv1gs":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BesFQqfc5AwkqamnjEfI0SU0/+lNlp2IvJVvWvbl5AkN":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BZcUVT7o4wvLYIoOAkB8ixxH00SnJYD6r3ShCpF7exJx":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BSm5+5stwswvNCku8k3UpB15xDoQOb81vDeLayAUCyRs":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BX577Vg1mwTo+m/5P4ETRfkPkedPjRG2Ry/ojrwQlQoN":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQBKnMwGKMC+SnSr/GrMvn2VHMQeelUCQr/o08TGaGoa":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BTiK/UbiMWL/kAledN0SnQWoY33lJ9cu/aiCbOpVAAcw":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bd70ToI9ug5z87RsJnCM8Qgvc1eR15MvS/1Z6lukZzgu":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BTZtzN0AdQO7Nz76fwiP4dzdmmN3rA01nkBHsYXGXtpB":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BTuj4oiW89FwfNyoobgkIelSUqHSgxsptd5q8cZZK+lD":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BV76lbS8gvP5op3nwfZaN83Sc3DkMFppjP/9fecnZlIZ":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BdOie5IyQ0dk69ig4LEFK+gceoUPZqUnJbNXLyFqYJpj":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BVuSFdmO9XKzzTlY1pZHrqHrkhHMbkVYX25EeAKsbhke":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BZ5j4CwkibDvirAjpLthXR4E98SVS/s76fE/X/evFFVF":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQvoIXIYVZ0+voqI+vcqDkc7OfxlYsDMzAOT9C82jUQE":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BSN+d7FTpekvt7NhissZjC9GG1Y+miIQwx/JLQmLDJVw":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BcBVs2u5q8W0hNaLymEntWC0y+YcMjquPlq46FGN1zM0":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BZ6nfpRICaLbJlM85ReshzoqvC5hOeYFXBSoYvHj/fV9":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BY/ovsm0x0rGEJFkfvnQbV9YtuTtbV5E5jmUsg2liuUN":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BUd+9ERpX0/vOyPUbuyE0CTy64TLgeY9UG3Z5Lg4iwxR":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bf/Z88XuWG/QO6q5G+4fZYME8O4D6IfONbKkmwQWZuUA":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BTd1l2a8HB03jAbEFrHhKdZqZSpdQmaeG6q6r4e6ByRZ":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BTFwfYRbiKeOdnZTZsyyk4/5w5o4UPSmoGnGxvUCPlth":{"chainKey":{"counter":0,"key":"o/ZKCOXLJLQRMlHz11k0qRqIjvkhsudNFP2fpaB9bbs="},"chainType":2,"messageKeys":{}},"BRmHV1Rj7D2LOuoxvoMTJK7xaPRo1xB6GBxRuoZJ5JR5":{"chainKey":{"counter":0,"key":"qTCfIP8Qt8IM5W5Yf0hDQGdzmuuIoK6GAs/qoavVy44="},"chainType":1,"messageKeys":{}}}}},"version":"v1"} \ No newline at end of file diff --git a/baileys_sessions/session-5215554192439.0.json b/baileys_sessions/session-5215554192439.0.json new file mode 100644 index 0000000..32e8e6e --- /dev/null +++ b/baileys_sessions/session-5215554192439.0.json @@ -0,0 +1 @@ +{"_sessions":{"Ba8Y5SDOWJUvHe4vME+kGhxpj9DQ+xUEdg8g7+6hP8k/":{"registrationId":1292321634,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BWp2w1gXYyyFS76ffRmrWraYWMSOxOyQWLbGiEE6y6Z0","privKey":"WOPF6fjxi8br85GkDJX+V6F2B3+E2asV9tx4DWvIZFM="},"lastRemoteEphemeralKey":"BTlCtt3FWPvX/ZK56HsuLhxdi81ISzTbZ3tlf9mMGi5r","previousCounter":0,"rootKey":"y7SkMEuQN+RpdVDi7kP8TruYybzAgYBhVg/44+5tvh8="},"indexInfo":{"baseKey":"Ba8Y5SDOWJUvHe4vME+kGhxpj9DQ+xUEdg8g7+6hP8k/","baseKeyType":1,"closed":1676512096747,"used":1676512042910,"created":1676512042910,"remoteIdentityKey":"BfvwCc1Sj7coO1wEj0Hyh9RN0zc76Qp1Kmfk6HJsZIkG"},"_chains":{"BWp2w1gXYyyFS76ffRmrWraYWMSOxOyQWLbGiEE6y6Z0":{"chainKey":{"counter":16,"key":"WqM3MBLy10NuBU2Z2Xg5LuJH0Qb8iPCIfnKpFYkm6To="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":6,"baseKey":"Ba8Y5SDOWJUvHe4vME+kGhxpj9DQ+xUEdg8g7+6hP8k/","preKeyId":9052333}},"BfQSs2STgXaG+GWAG9bA6Ben7TGiPV+2nrFxxzuFs+hN":{"registrationId":1292321634,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BXViUrXqZHOJSVND/3+KuSR4WG2aL6dlHkknBm3R274x","privKey":"0Jq4cYgpXBz4VrfSg5acRn+/EmJD0GCd1DsAek5bVVY="},"lastRemoteEphemeralKey":"BTlCtt3FWPvX/ZK56HsuLhxdi81ISzTbZ3tlf9mMGi5r","previousCounter":0,"rootKey":"+fKZXBPwb9glFZQySVPaXPTotkgvZ7FdA011kgmcoe8="},"indexInfo":{"baseKey":"BfQSs2STgXaG+GWAG9bA6Ben7TGiPV+2nrFxxzuFs+hN","baseKeyType":1,"closed":1676512682094,"used":1676512096723,"created":1676512096723,"remoteIdentityKey":"BfvwCc1Sj7coO1wEj0Hyh9RN0zc76Qp1Kmfk6HJsZIkG"},"_chains":{"BXViUrXqZHOJSVND/3+KuSR4WG2aL6dlHkknBm3R274x":{"chainKey":{"counter":28,"key":"dhHk9qpQxxABlCPXgSUUngPkmCet2n9jAnWAXNMHj34="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":6,"baseKey":"BfQSs2STgXaG+GWAG9bA6Ben7TGiPV+2nrFxxzuFs+hN","preKeyId":9052184}},"BaJ4GVTbojXtxFvtbRl54OgI16IQuJS/5RE/1HrU+tgA":{"registrationId":1292321634,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BbSY6IFNMztHzqAEJ2d2nlSw0LY/ZMD6rusTR623FFx9","privKey":"ELLrjPmRpAeBy/zQ12fOFa6LlANuZQzr8RXo5+0VM34="},"lastRemoteEphemeralKey":"BTlCtt3FWPvX/ZK56HsuLhxdi81ISzTbZ3tlf9mMGi5r","previousCounter":0,"rootKey":"49vTuaVFs0CeWL6Q+VEWtcdMrwlTuelesVvbbabjqKc="},"indexInfo":{"baseKey":"BaJ4GVTbojXtxFvtbRl54OgI16IQuJS/5RE/1HrU+tgA","baseKeyType":1,"closed":1676512682162,"used":1676512682084,"created":1676512682084,"remoteIdentityKey":"BfvwCc1Sj7coO1wEj0Hyh9RN0zc76Qp1Kmfk6HJsZIkG"},"_chains":{"BbSY6IFNMztHzqAEJ2d2nlSw0LY/ZMD6rusTR623FFx9":{"chainKey":{"counter":-1,"key":"A47BqooEnaTlYI9OINdaQKDUliP4AKKWXrxtJWSIdA4="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":6,"baseKey":"BaJ4GVTbojXtxFvtbRl54OgI16IQuJS/5RE/1HrU+tgA","preKeyId":9052165}},"BYvXKm3CMq7WWHwR4jnfOkFxmCcB7YxLBL7WlmcBq7dc":{"registrationId":1292321634,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BV3mwj+BCUvcet11+3eY8YowUmJexNZ+m7x1scLb0/xE","privKey":"0NjdFZwMvTKLn4hyN57AZZAPTsynz+orCmC/kdT9XWM="},"lastRemoteEphemeralKey":"BbtcSkjM1mlsE5rgUviN8U/E/dE2vOxUk1ZMm09h6Zc7","previousCounter":0,"rootKey":"XvKgaWd1oDzVkdmDIgmIMRIkof6zd9C/PThD68Oc3EA="},"indexInfo":{"baseKey":"BYvXKm3CMq7WWHwR4jnfOkFxmCcB7YxLBL7WlmcBq7dc","baseKeyType":1,"closed":1676616816277,"used":1676614603368,"created":1676512682131,"remoteIdentityKey":"BfvwCc1Sj7coO1wEj0Hyh9RN0zc76Qp1Kmfk6HJsZIkG"},"_chains":{"BQyksRit5LMi8r+5I4DZ+Fkk0A3lnRBiL//n6eAz9W04":{"chainKey":{"counter":5},"chainType":2,"messageKeys":{}},"BdSgKxzYqpO7ZZCChxAIRpJtroN336LNgNtVaV4RLpQS":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BetiftMioxcfms4+oK+DJbM/Y1bZCtFzA/dAqTV4f44/":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BZKqchjJgFrHBJFwrzWMIy2HhgydR4Dv8k/kBRpzEMNF":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Be9uhDn+GYTHFTne3kbFxrpQNqp1vBshhYNCmL3bG1wB":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BRXsNegAnFBLQlYdPoT8U6QW4iQ+Tjl9Qehs+K90Qn4p":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BS11825ogz5i2qrRz/Ioyn+zO6TlW1PpwdADtMkc1eQy":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BWMf6WBoOPW9qs8YNQW3bSSN4xWtVpVyL6qHnokdZbl6":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BW4iQFToiz7BrTeKd2GpntbAzclK8eDBLl0V2vN1Lfdp":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BfPCMcLJS712pJxCjT5FZ+Y27Ln1DPE/Txwor5yTClMA":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BZXQ2uuG5yAGY3aMdoh2cdyR2rFJON78SJMrxkYKvoBZ":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BUggi679zIdIL2bNn0riclc0IGjCh4Ii72PCW5QXWowI":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BZKRTIyUO1QnTYb+djD7cSECHvh3MYR6H2Qx0uD3dj9V":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BXpW0LgKJQvx9QFtJaI6xM4cLhLGe/BWJHgusBQ/7uNs":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BY0GDZHUz1fxMQ593cctrWPQYaHv/v3aX1KvRhkoU+tQ":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BbDtY9pL/2I1xd6lV+Wv9PFfZH3TzGN/0Nlaa3IQOFpS":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BWpXc+Fg/viJnADx8rbeKcU2fRe97nJpPnITE0TFKhsw":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BZbPFEkv+pS7jQ1qTjxEtKkmSONOuwhU1zbuw72txecL":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQQHfl2684T6JQ7bVg1Of9iO0dHvGvilvXn7nKjsu2BH":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BeN/P+pbGL4QtvSEFIpDXIrQK6XhIJG02Uwog37RvX8y":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BS9ZWDycJNlxRxoVDPeaVWmnDtt5cQzkpvPEq1XtqxA4":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BTWHcmSQT54F9VsgMW2TSKIHOIipKextv0cbHcRHLoUj":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BaltPlOj5eU88opDrvUADA49/N6/KgT92UB1MA8MgvkN":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BfqpNgovynoaHoXB4kinoNSsP2B5lCWCq3EoCoR4p9JY":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQaES/wFtRglYbOnbIiCyAa2ravWMzjZT5wEzPHAmK8+":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BRx5rUBkszWD+cxEefOxKLw6W0jD38zd5BvyJ3WqO9EN":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BSSQlMXSEIy13N+TGNZ7VXoijZc1ZRCzUtazhfcOquRl":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Ba4GD2LmER4Jl1yrQwVnQpSB2i1kOU4KR7pImCcdOUUm":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BVaCqdfCuFEFgNKj3UGtqe97dhKqYG5uzLH9mKO3jG9S":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BbEwvSoWQAI0zorTuHIRa3Gfs7zMBKqMIPULfxPWxuMP":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BYA3L0J95MZA2L5qxXuDs6mQ1xqVVtOugbELjeMOA1kx":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BZ8TqiBm8PIbzRfSIg7a2NE7PBvZ3aGxrX1DQfShdEtP":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bfe+1o6OHfDUXJpczY5uUq9/JFwcx9+7mKtIa/xoY+ZB":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BQKOBNRlByvgp3kzBureUpz8qTodQXSeFAItKlMhDpts":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BcT94Z2ovXu7QXLGCMoWimsoebtLHf2MCw43UobIDKEz":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"BSOzjonmLnQJVt0s2iWmaPfdE2pulE3M00QluWZx4D59":{"chainKey":{"counter":0},"chainType":2,"messageKeys":{}},"Bcn34R2EE1p1RcapaM41gDpigEMO3zRCCyN/jU2cOvol":{"chainKey":{"counter":1},"chainType":2,"messageKeys":{}},"BbtcSkjM1mlsE5rgUviN8U/E/dE2vOxUk1ZMm09h6Zc7":{"chainKey":{"counter":0,"key":"lcf4WlljoLpymRFNHJuLk7GYGhiHary+2xZIndPAzbI="},"chainType":2,"messageKeys":{}},"BV3mwj+BCUvcet11+3eY8YowUmJexNZ+m7x1scLb0/xE":{"chainKey":{"counter":32,"key":"kt8lXUg0jud2+2PU8RF50GHpIbpR/9gLVvbmVs0Rqo8="},"chainType":1,"messageKeys":{}}}},"BQxIqTVlQ1xQuqR7efQs0qb7WJJeFBKmW/UI0hkkkvF8":{"registrationId":1292321634,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BWfNwr+6rq9uDSQ/NILPxnaxuk8bJ6m8FlZpM9ZfNCQJ","privKey":"2ETXaCUIOoTu0ZvkEp5WpSWk4samgMR5U2xvo6yvjH4="},"lastRemoteEphemeralKey":"BTlCtt3FWPvX/ZK56HsuLhxdi81ISzTbZ3tlf9mMGi5r","previousCounter":0,"rootKey":"nqmLzDfhInQCsHalNcn5miCAvKzl4py2Onu2jOEeiTc="},"indexInfo":{"baseKey":"BQxIqTVlQ1xQuqR7efQs0qb7WJJeFBKmW/UI0hkkkvF8","baseKeyType":1,"closed":1676616816365,"used":1676616816246,"created":1676616816246,"remoteIdentityKey":"BfvwCc1Sj7coO1wEj0Hyh9RN0zc76Qp1Kmfk6HJsZIkG"},"_chains":{"BWfNwr+6rq9uDSQ/NILPxnaxuk8bJ6m8FlZpM9ZfNCQJ":{"chainKey":{"counter":-1,"key":"e99S+zw5A0FPtTnvV+SUC6jSD+ht139sKU8tsM25AJM="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":6,"baseKey":"BQxIqTVlQ1xQuqR7efQs0qb7WJJeFBKmW/UI0hkkkvF8","preKeyId":9051819}},"BaKmZLbtfKQpYe+z3mXUj1JeOaIF4kYVhN304CEvz1wp":{"registrationId":1292321634,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BX+qLRFC0qqhtJKvkaRGlOe3NUg8YL52IDrwEPo0BVI7","privKey":"yGli+cw1NdsQS4guI9fAnO2JwUrYFXJs9yE6vUE3ukA="},"lastRemoteEphemeralKey":"BTlCtt3FWPvX/ZK56HsuLhxdi81ISzTbZ3tlf9mMGi5r","previousCounter":0,"rootKey":"vyOuelrA7NtGFIEXpIWs28PgIkAWVMoR1Wdmgt8PHf0="},"indexInfo":{"baseKey":"BaKmZLbtfKQpYe+z3mXUj1JeOaIF4kYVhN304CEvz1wp","baseKeyType":1,"closed":1676619805621,"used":1676616816313,"created":1676616816313,"remoteIdentityKey":"BfvwCc1Sj7coO1wEj0Hyh9RN0zc76Qp1Kmfk6HJsZIkG"},"_chains":{"BX+qLRFC0qqhtJKvkaRGlOe3NUg8YL52IDrwEPo0BVI7":{"chainKey":{"counter":45,"key":"I3U7De0QhRL1sXwsVaqok+GeD4/R0+lntjlvLlJ2nRY="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":6,"baseKey":"BaKmZLbtfKQpYe+z3mXUj1JeOaIF4kYVhN304CEvz1wp","preKeyId":9052262}},"BYe5/G2gZXl40imsPY081qLFrCRqrQ/5s1Hdf1Ibe5se":{"registrationId":1292321634,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BQVJSVRX0BfkIe3fW9hZkcDPYGXWs3i8rm+n3D0RV8B2","privKey":"EDKuPQmOKWu1hh2vQYk6TYtCGsPO9Udooz3SqqqKXl8="},"lastRemoteEphemeralKey":"BTlCtt3FWPvX/ZK56HsuLhxdi81ISzTbZ3tlf9mMGi5r","previousCounter":0,"rootKey":"vP1DarWoKCKwQrn9j+5tFlvh1BypJQepHp3SsQAKPM0="},"indexInfo":{"baseKey":"BYe5/G2gZXl40imsPY081qLFrCRqrQ/5s1Hdf1Ibe5se","baseKeyType":1,"closed":1676619805789,"used":1676619805616,"created":1676619805616,"remoteIdentityKey":"BfvwCc1Sj7coO1wEj0Hyh9RN0zc76Qp1Kmfk6HJsZIkG"},"_chains":{"BQVJSVRX0BfkIe3fW9hZkcDPYGXWs3i8rm+n3D0RV8B2":{"chainKey":{"counter":0,"key":"MfYWtIoZ7P9ckGY7FD8tOqkSPxjzP/boOMb+ogleW0k="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":6,"baseKey":"BYe5/G2gZXl40imsPY081qLFrCRqrQ/5s1Hdf1Ibe5se","preKeyId":9052239}},"BbARfqhU0ll59UZ9IEepaNKMNeMisyz8WrDcFWzTEbpV":{"registrationId":1292321634,"currentRatchet":{"ephemeralKeyPair":{"pubKey":"BaYzmxK73pUuZrbAv1KKcHY3CEAHadvknz5qy76lms9m","privKey":"mI7IsZu1TIavEtgyReMJH0ue1wOw2IX+TMKnTTT7eXM="},"lastRemoteEphemeralKey":"BTlCtt3FWPvX/ZK56HsuLhxdi81ISzTbZ3tlf9mMGi5r","previousCounter":0,"rootKey":"XQzIWtlouUfAFHbV4ck7cD9uxE8beTyk93YhQA7IC7o="},"indexInfo":{"baseKey":"BbARfqhU0ll59UZ9IEepaNKMNeMisyz8WrDcFWzTEbpV","baseKeyType":1,"closed":-1,"used":1676619805766,"created":1676619805766,"remoteIdentityKey":"BfvwCc1Sj7coO1wEj0Hyh9RN0zc76Qp1Kmfk6HJsZIkG"},"_chains":{"BaYzmxK73pUuZrbAv1KKcHY3CEAHadvknz5qy76lms9m":{"chainKey":{"counter":110,"key":"ShaFAypLleYpOrNbeNhfjC4u1scfY69k0hrb6jTBppI="},"chainType":1,"messageKeys":{}}},"pendingPreKey":{"signedKeyId":6,"baseKey":"BbARfqhU0ll59UZ9IEepaNKMNeMisyz8WrDcFWzTEbpV","preKeyId":9052244}}},"version":"v1"} \ No newline at end of file diff --git a/bot.qr.png b/bot.qr.png new file mode 100644 index 0000000000000000000000000000000000000000..ec810e13e8aaf932c4ae1c6b0078f2164532b43b GIT binary patch literal 5560 zcmc&&U1(cn7(Pj})OH^6XPej{RB#;==5RHw)3J88#l>|yrCGfZo!}U>iqVNblhPK& zq3ps+2V?2BZlg18WD_<-CZly1lT67jTy+#iD-t72C(_&)iLKA`zTatk@#Wf!Lz|P6 z?|Z-JectDN-t%$Cu4mlpnrg>!+}QTkPR9wn!|RSP?!5TT%6a?=##*=SemC$(P2UfW zv-%Bwx_x=u{)c0)hqisSsk>U!(=P&)nfwOCiz z3%`w~)92po?CQF)c|4u|{n+lVAK%)A$DaJ3AM+;e7)+en7o4k$-ZvP_4iB{V^i>Qt zjvvK8b+wV62KnpZ^QBleJm}&nUWrrr=WS>3CXOY&it}7>6_yL_?W_+>chm=tPQB{j z8aq&(S$2!$2uq>x~y*vEjV#%kW-ZEYdt*gA+B5Pdl6B*bM`(I>pBk7~sHi zw=P_OG3)S@sKXA_x`kypl_~nytsw{NB}rX zRc3S_4~RR=0>3%%Y&MkJiG@59C6IbNy0F$lp2E<^%G?(L{Kl-Lt1yPDOaezl3b4L^ zmzmWFb=$z+&I^Iuq&?EMsnU(W0rCV%ynqPLkSX03Sd31vp} z>m`cesV!&n>j6$xCf+#Yt;$h?vKW&lS4g*B&8lSAl985NX z+JzgIGPrAgXrl(A0fchvqaJCoctn#{Nd;0}0c>{SOOP00;%Nd=hPeHA%h9xANvkRx z)h8ADF1QGP~crWu;%+RBtj#3E)qe7%b^VXM6zbQ$X(o5hQ`2L$-%S&B8G_NsXr+O-H2GU z;#6V?ufV{_R}DrinYrf8zq~vifo~M}Gd5K_*4t4Wm~w!+Ben!&8S72$AX|0O*QG2@;WW zP3Emg{E8K|i3~}?_^A{&Ym@h?2}qfb2KFNHyb9AoTC%Pc2q;RN9buK}N`97xkvt?2 z@(gT^rk@a5=6#iAzmKIrW+3y`6Sjuadyk}8C_h$Q!>T$cA}SS2Wf4m1UO+5o`5QxoMB7X$q+;ziAp*F%tLm&%I1fhzo<@^^m*MN@LL!vM__0(~!M>$YRuzT~u z6C|M!(ex|*oM2x@c3ykkVoUz^CPIU=Cs}gfsi*@Gph9WPVKhwCqQQ?+4T^E|gUQ6( zmi3y7`;mB35)|SRdVHl0Xol{_ukmMwQaJHpa`t4IQ}=FOEXWiqG;Y@8?kqSahI!&e zKVtwuqpBVGOr&=BxW#^X6CdFRA?Y0{ba1UzPX#TGk6u7rK~*M2-Jwu2`hFMN+4%Ed zY26VDR<-0qC`tO6b$zWNv$%0>@IdMVGO+z|{f-Q-bA4A$$e~=&h3hfx?F& zCG41Z0HF>~m7@0Q53)~;7hTW}GGdnVtDCGc$|y!oqor-q{|ru)Eqko}g9r_*@v&pS zW)aW@s9tla-jz}02xbsavj<+hY%$NJ+@Ueb*&?r7vYHpH#!oQvPH7#Aefm;68ZU4!h~{$0%jQb@Y|+X8^x5BFZ!`$$mr@c zg`_Di9*fV}3^DlCe(h+=L%w8nyD$6WrE9C*-)A6vv zv{D&5{PCiW#g_!fS1d^U+*G`mxFUF95EB`TQ2122l)~r$On}yLiZhr=H`|-F z(kd6O9x;L~R##|C8DuYL7=Ue3`e}2}NcsPg@K~+gUn9MbEuK`lz|lr=-f{+pOF^Ge zuPd@_ye#wBpS2)R%6(5p^2$H2GH+W`_VL)Po$ugUIag9a9khepqOVj$z zFkt2;8DK-&2A9vIY?>a3j)b=O;8G{78gb2gR31Yk*HML2f)p4A;+>){a~lRk7tCVF zl5Ik`#zA?R16Z6|=#a&@bX=gW7t6UOB~xa8+0zP{(8-SL%GzeE zDnyWB-2t5&Yxb@bMiHJpwwF_M zZQ^?MH3qc`wV_qSrmMEPozDn)JfA0>Mz^m>^?p z;n5kdy`hZ$Br(B5U9M< zBhah|z=~=YdnNX$%q-iqJ*%U+$*LYzgvV$#T@=*0J}Q1Pl(S7}khdL { //MOD by CHV - Agregamos el parametro "num" para recibir el numero desde "app.js" // console.log("GETMESSAGES (flow.js)") const data = await get(message, num) //MOD by CHV - Agregamos "num" diff --git a/controllers/handle.js b/controllers/handle.js index 84a8d40..4dfdfd0 100644 --- a/controllers/handle.js +++ b/controllers/handle.js @@ -6,12 +6,18 @@ const qr = require('qr-image') const MULTI_DEVICE = process.env.MULTI_DEVICE || 'true'; -const cleanNumber = (number) => { +const cleanNumber_wwebjs = (number) => { number = number.replace('@c.us', ''); number = `${number}@c.us`; return number } +const cleanNumber_baileys = (number) => { + number = number.replace('@s.whatsapp.net', ''); + number = `${number}@s.whatsapp.net`; + return number +} + const saveExternalFile = (url) => new Promise((resolve, reject) => { const ext = url.split('.').pop() const checkProtocol = url.split('/').includes('https:'); @@ -74,10 +80,21 @@ const createClient = () => { }); } -const isValidNumber = (rawNumber) => { +const isValidNumber_wwebjs = (rawNumber) => { const regexGroup = /\@g.us\b/gm; const exist = rawNumber.match(regexGroup); + console.log("IsValidWawebJS", rawNumber, exist, !exist) return !exist } -module.exports = {cleanNumber, saveExternalFile, generateImage, checkIsUrl, checkEnvFile, createClient, isValidNumber} +const isValidNumber_baileys = (rawNumber) => { + const regexGroup = /\@g.us\b/gm; + const exist = rawNumber.match(regexGroup); + // console.log("IsValidBaileys", rawNumber, exist, !exist) + return !exist +} + +const isValidNumber = eval(`isValidNumber_${provider}`) +const cleanNumber = eval(`cleanNumber_${provider}`) + +module.exports = {cleanNumber, saveExternalFile, generateImage, checkIsUrl, checkEnvFile, createClient, isValidNumber } diff --git a/controllers/save.js b/controllers/save.js index 5dd5cb1..adde994 100644 --- a/controllers/save.js +++ b/controllers/save.js @@ -9,7 +9,6 @@ var fileName; * @param {*} media */ - const saveMedia = (media) => { const extensionProcess = mimeDb[media.mimetype]; let ext; @@ -27,10 +26,8 @@ const saveMedia = (media) => { } const saveMediaToGoogleDrive = async (media) => { - fileName = saveMedia(media); filePath = `${__dirname}/../media/${fileName}` - const googleDriveUrl = await uploadSingleFile(fileName, filePath); return googleDriveUrl } diff --git a/controllers/send_baileys.js b/controllers/send_baileys.js new file mode 100644 index 0000000..407fe3e --- /dev/null +++ b/controllers/send_baileys.js @@ -0,0 +1,188 @@ +const ExcelJS = require('exceljs'); +const moment = require('moment'); +const fs = require('fs'); +const { MessageMedia, Buttons, List } = require('whatsapp-web.js'); +const { cleanNumber } = require('./handle') +const { remplazos } = require('../implementaciones/extraFuncs'); //MOD by CHV - Agregamos remplazos +const DELAY_TIME = 170; //ms +const DIR_MEDIA = `${__dirname}/../mediaSend`; +// import { Low, JSONFile } from 'lowdb' +// import { join } from 'path' +const { saveMessage } = require('../adapter') +const { ingresarDatos, leerDatos } = require('../implementaciones/sheets') +const mime = require('mime-types') + +/** + * Enviar imagen o multimedia + * @param {*} number + * @param {*} mediaInput + * @param {*} message + * @example await sendMessage('+XXXXXXXXXXX', 'https://dominio.com/imagen.jpg' | 'img/imagen.jpg') + */ +const sendMedia = async (client, number, fileName, text) => { + console.log("SendMedia = ", number, fileName, text) + // const fileDownloaded = await generalDownload(imageUrl) + + const file = `${DIR_MEDIA}/${fileName}`; + console.log("FILE="+file); + if (fs.existsSync(file)) { + console.log("ARCHIVO EXISTE"); + const mimeType = mime.lookup(file) + if (mimeType.includes('image')) return sendImage(client, number, file, text) + if (mimeType.includes('video')) return sendVideo(client, number, file, text) + if (mimeType.includes('audio')) return sendAudio(client, number, file, text) + return sendFile(client, number, file) + } +} + +/** + * Enviar imagen + * @param {*} number + * @param {*} imageUrl + * @param {*} text + * @returns + */ +const sendImage = async (client, number, filePath, text) => { + client.sendMessage(number, { + image: fs.readFileSync(filePath), + caption: text, + }) +} + +/** + * Enviamos archivos como notas de voz + * @param {*} number + * @param {*} fileName + */ + + const sendMediaVoiceNote = (client, number = null, fileName = null) => { + if(!client) return console.error("El objeto cliente no está definido."); + try { + number = cleanNumber(number || 0) + const file = `${DIR_MEDIA}/${fileName}`; + if (fs.existsSync(file)) { + const media = MessageMedia.fromFilePath(file); + client.sendMessage(number, media ,{ sendAudioAsVoice: true }); + + } + }catch(e) { + throw e; +} + +} +/** + * Enviamos un mensaje simple (texto) a nuestro cliente + * @param {*} number + */ +const sendMessage = async (client, number = null, text = null, trigger = null, regla) => { //MOD by CHV - Agregamos el parametro "regla" para guardarlo en "chats/numero.json" + if(text !== undefined && text != null){ + setTimeout(async () => { + number = cleanNumber(number) + await client.sendMessage(number, { text: text }) + // console.log(number, message, regla) + await readChat(number, text, trigger, regla) //MOD by CHV - Agregamos el parametro "regla" + console.log(`⚡⚡⚡ Enviando mensajes....`); + ingresarDatos(number, text, 'Salida', 'Bot Pruebas') + // console.log("********************* SEND MESSAGE **************************************"); + },DELAY_TIME) + } +} + +/** + * Enviamos un mensaje con buttons a nuestro cliente + * @param {*} number + */ +const sendMessageButton2 = async (client, number = null, text = null, actionButtons) => { + setTimeout(async () => { + number = cleanNumber(number) + const { title = null, message = null, footer = null, buttons = [] } = actionButtons; + let button = new Buttons(remplazos(message, client),[...buttons], remplazos(title, client), remplazos(footer, client)); + await readChat(number, message, actionButtons) + client.sendMessage(number, button); + console.log(`⚡⚡⚡ Enviando mensajes (botones)....`); + // console.log("sendMessageButton."); + }, DELAY_TIME) + // console.log("************************ SEND MESSAGE BUTTON ***********************************"); +} + +/** + * + * @param {string} number + * @param {string} text + * @param {string} footer + * @param {Array} buttons + * @example await sendMessage("+XXXXXXXXXXX", "Your Text", "Your Footer", [{"buttonId": "id", "buttonText": {"displayText": "Button"}, "type": 1}]) + */ +const sendMessageButton = async (client, number, text = null, actionButtons) => { + number = cleanNumber(number) + const { title = null, message = null, footer = null, buttons = [] } = actionButtons; + const templateButtons = buttons.map((btn, i) => ({ + buttonId: `id-btn-${i}`, + buttonText: { displayText: btn.body }, + type: 1, + })) + text = remplazos(`*${title}*\n${message}`, client) + await readChat(number, message, actionButtons) + // console.log("sendMessageButton:", text, templateButtons) + const buttonMessage = { text, footer, buttons: templateButtons, headerType: 1 } + return client.sendMessage(number, buttonMessage) +} + +/** + * Enviamos listas (con el formato de response.json) + * @param {*} number + */ +const sendMessageList = async (client, number = null, text = null, actionList) => { + console.log("**************** baileys send") + setTimeout(async () => { + // console.log("********************** client **************************") + number = cleanNumber(number) + const { body = null, buttonText = null, sections = [], title = null, footer = null } = actionList; + const theList = { + text: remplazos(body, client), + footer: remplazos(footer, client), + title: remplazos(title, client), + buttonText: remplazos(buttonText, client), + sections + } + console.log(theList) + // console.log(sections[0]) + client.sendMessage(number, theList); + await readChat(number, body, actionList) + console.log('⚡⚡⚡ Enviando lista a '+number+' ....'); + }, DELAY_TIME) +} + +/** + * Opte + */ +const lastTrigger = (number) => new Promise((resolve, reject) => { + number = cleanNumber(number) + const pathExcel = `${__dirname}/../chats/${number}.xlsx`; + const workbook = new ExcelJS.Workbook(); + if (fs.existsSync(pathExcel)) { + workbook.xlsx.readFile(pathExcel) + .then(() => { + const worksheet = workbook.getWorksheet(1); + const lastRow = worksheet.lastRow; + const getRowPrevStep = worksheet.getRow(lastRow.number); + const lastStep = getRowPrevStep.getCell('C').value; + resolve(lastStep) + }); + } else { + resolve(null) + } +}) + +/** + * Guardar historial de conversacion + * @param {*} number + * @param {*} message + */ +const readChat = async (number, message, trigger = null, regla) => { //MOD by CHV - Agregamos el parametro "regla" para guardarlo en "chats/numero.json" + number = cleanNumber(number) + await saveMessage( message, trigger, number, regla ) //MOD by CHV - Agregamos "regla" + // console.log('Saved') +} + +module.exports = { sendMessage, sendMedia, lastTrigger, sendMessageButton, sendMessageList, readChat, sendMediaVoiceNote } diff --git a/controllers/send.js b/controllers/send_wwebjs.js similarity index 71% rename from controllers/send.js rename to controllers/send_wwebjs.js index bede0e4..ace8429 100644 --- a/controllers/send.js +++ b/controllers/send_wwebjs.js @@ -1,38 +1,59 @@ - const ExcelJS = require('exceljs'); const moment = require('moment'); const fs = require('fs'); const { MessageMedia, Buttons, List } = require('whatsapp-web.js'); const { cleanNumber } = require('./handle') -const { remplazos } = require('../adapter/index'); //MOD by CHV - Agregamos remplazos +const { remplazos } = require('../implementaciones/extraFuncs') //MOD by CHV - Agregamos remplazos const DELAY_TIME = 170; //ms const DIR_MEDIA = `${__dirname}/../mediaSend`; // import { Low, JSONFile } from 'lowdb' // import { join } from 'path' const { saveMessage } = require('../adapter') -/** - * Enviamos archivos multimedia a nuestro cliente - * @param {*} number - * @param {*} fileName - */ +const { ingresarDatos, leerDatos } = require('../implementaciones/sheets') +const mime = require('mime-types') -const sendMedia = (client, number = null, fileName = null, trigger = null) => { - if(!client) return console.error("El objeto cliente no está definido."); - console.log("MEDIA:"+fileName); - try { - number = cleanNumber(number || 0) - const file = `${DIR_MEDIA}/${fileName}`; - console.log("FILE="+file); - if (fs.existsSync(file)) { - console.log("ARCHIVO EXISTE"); - const media = MessageMedia.fromFilePath(file); - client.sendMessage(number, media, { sendAudioAsVoice: true }); - } - } catch(e) { - throw e; +/** + * Enviar imagen o multimedia + * @param {*} number + * @param {*} mediaInput + * @param {*} message + * @returns + */ +const sendMedia = async (client, number, fileName, text) => { + console.log("SendMedia = ", number, fileName, text) + // const fileDownloaded = await generalDownload(imageUrl) + const file = `${DIR_MEDIA}/${fileName}`; + console.log("FILE="+file); + if (fs.existsSync(file)) { + console.log("ARCHIVO EXISTE"); + const mimeType = mime.lookup(file) + if (mimeType.includes('image')) return sendImage(client, number, file, text) + if (mimeType.includes('video')) return sendVideo(client, number, file, text) + if (mimeType.includes('audio')) return sendAudio(client, number, file, text) + return sendFile(client, number, file) } } +/** + * Enviar imagen + * @param {*} number + * @param {*} imageUrl + * @param {*} text + * @returns + */ +const sendImage = async (client, number, fileName, caption) => { + const file = `${DIR_MEDIA}/${fileName}`; + console.log("FILE="+file); + if (fs.existsSync(file)) { + console.log("ARCHIVO EXISTE"); + const media = MessageMedia.fromFilePath(file); + } + const base64 = fs.readFileSync(fileName, { encoding: 'base64' }) + const mimeType = mime.lookup(fileName) + const media = new MessageMedia(mimeType, base64) + client.sendMessage(number, media, { caption }) +} + /** * Enviamos archivos como notas de voz * @param {*} number @@ -92,6 +113,7 @@ const sendMessageButton = async (client, number = null, text = null, actionButto * @param {*} number */ const sendMessageList = async (client, number = null, text = null, actionList) => { + console.log("*************** wwebjs send") setTimeout(async () => { // console.log("********************** client **************************") // console.log(client) @@ -136,4 +158,4 @@ const readChat = async (number, message, trigger = null, regla) => { //MOD by CH // console.log('Saved') } -module.exports = { sendMessage, sendMedia, lastTrigger, sendMessageButton, sendMessageList, readChat, sendMediaVoiceNote } +module.exports = { sendMessage, sendMedia, sendImage, lastTrigger, sendMessageButton, sendMessageList, readChat, sendMediaVoiceNote } diff --git a/controllers/web.js b/controllers/web.js index 5b7bad9..32a220f 100644 --- a/controllers/web.js +++ b/controllers/web.js @@ -1,5 +1,5 @@ const fs = require('fs') -const { sendMessage } = require('../controllers/send') +const { sendMessage } = require(`./send_${provider}`) const sendMessagePost = (req, res) => { console.log('asdasdasdasdasd') diff --git a/flow/response.json b/flow/response.json index f171a64..58b7559 100644 --- a/flow/response.json +++ b/flow/response.json @@ -36,7 +36,7 @@ "%saludo% %primer_nombre%, este es el *menú*, selecciona una opción:", "Pon *1* para ver mensajes anteriores.", "Pon *2* para ver remplazos.", - "Pon *3* para pedir nombre (RegExp).", + "Pon *3* para capturar cualquier texto (RegExp).", "Pon *4* para un ejemplo de listas y expresiones regulares.", "Pon *5* para un ejemplo de botones.", "Pon *6* para un ejemplo de botones y regExp.", @@ -92,7 +92,7 @@ "mensaje":[ "Seleccionaste la *opción 3*\n", "*Por favor dame tu nombre.*\n", - "Aquí vamos a aceptar *cualquier* texto, porque en el *initial.json* tenemos keywords : \"*\" (un asterisco en expresiones regulares quiere decir *\"cualquier cosa\"*)", + "Aquí vamos a aceptar *cualquier* texto, porque en *keyword* tenemos : \"*\" (un asterisco en expresiones regulares quiere decir *\"cualquier cosa\"*)", "Y en *response.json* en la opción correspondiente tenemos \"pasoRequerido\" : \"menu\", que quiere decir que SOLO se va a disparar cuando el paso anterior sea \"menu\"." ] } @@ -189,15 +189,15 @@ "media":null, "trigger":null, "actions":{ - "body":"Hola *%primer_nombre%*, estos son ejemplos del uso de expresiones regulares, *todas* las opciones de la *lista* disparan la misma regla:\n\n'*pak*3*|*pak*angular*|*paquete*3*|*paquete*angular*'\n\nAutomáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*.", + "body":"Hola *%primer_nombre%*, este es un ejemplo de lista con expresiones regulares, *todas* las opciones de la *lista* disparan la misma regla:\n\n'*pak*3*|*pak*angular*|*paquete*3*|*paquete*angular*'\n\nAutomáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*.", "buttonText":"Ver los ejemplos de RegEx", "sections": [ {"title":"Selecciona un mensaje:", "rows":[ - {"id": "paq3", "title": "Me gusta el paquete 3"}, - {"id": "paqA", "title": "Por favor mas info del paquete de Angular"}, - {"id": "pakA", "title": "Me gustó el pak de Angular"}, - {"id": "pak3", "title": "Estoy interesado en el pak 3"} + {"rowId": "paq3", "title": "Me gusta el paquete 3"}, + {"rowId": "paqA", "title": "Por favor mas info del paquete de Angular"}, + {"rowId": "pakA", "title": "Me gustó el pak de Angular"}, + {"rowId": "pak3", "title": "Estoy interesado en el pak 3"} ] } ], diff --git a/implementaciones/extraFuncs.js b/implementaciones/extraFuncs.js new file mode 100644 index 0000000..b675899 --- /dev/null +++ b/implementaciones/extraFuncs.js @@ -0,0 +1,336 @@ +const fs = require('fs') +/** + * Regresa un número random entre los parametros min y max dados. + * @param {*} min + * @param {*} max + * @returns + */ +function getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min) + min); // The maximum is exclusive and the minimum is inclusive +} + +/** + * Revisa que exista el archivo "chats/numero.json" + * @param {*} theFile + * @returns + */ +function chkFile(theFile){ //MOD by CHV - Agregamos para revisar que exista el archivo "chats/numero.json" + const fs = require('fs'); + if (fs.existsSync(theFile)) { + // console.log("Si existe el archivo "+ theFile); + var h = true; + } + else{ + // console.log("No existe el archivo "+ theFile); + var h = false; + } + return h; +} + +/** + * Reemplaza texto en la respuesta con variables predefinidas. + */ +function remplazos(elTexto, extraInfo){ + if(elTexto == null){elTexto = '';} + // console.log("EXTRAINFO_THEMSG", extraInfo.theMsg) + // console.log(extraInfo.theMsg.messages) + const { from, body, name } = extraInfo.theMsg + laLista = elTexto.toString().split(' '); + // console.log(laLista); + // console.log('============= remplazos ============'); + for (var i = 0; i < laLista.length; i++) { + // console.log('Revisamos: '+laLista[i]); + if (laLista[i].search('%dia_semana%')>-1){//Remplaza con el dia de hoy. + var dia = new Date().getDay(); + if(dia==0){diaSemana='domingo';} + else if(dia==1){diaSemana='lunes';} + else if(dia==2){diaSemana='martes';} + else if(dia==3){diaSemana='miercoles';} + else if(dia==4){diaSemana='jueves';} + else if(dia==5){diaSemana='viernes';} + else {diaSemana='sábado';} + elTexto = elTexto.replace('%dia_semana%', diaSemana); + } + if (laLista[i].search('%saludo%')>-1){//Remplaza con "Buenos dias, tardes o noches" dependiendo de la hora. + var hora = new Date().getHours() + if(hora>0 && hora < 12){saludo='Buenos días';} + else if(hora>11 && hora < 19){saludo='Buenas tardes';} + else {saludo='Buenas noches';} + elTexto = elTexto.toString().replace('%saludo%', saludo); + } + if (laLista[i].search('%hora24%')>-1){//Remplaza con la hora a 24 hrs. + var hora = new Date().getHours(); + if (hora.toString().length < 2){hora = "0" + hora;} + elTexto = elTexto.toString().replace('%hora24%', hora); + } + if (laLista[i].search('%hora12%')>-1){//Remplaza con la hora a 12 hrs. + var hora = new Date().getHours(); + var ampm = hora >= 12 ? 'pm' : 'am'; + hora = hora % 12; + hora = hora ? hora : 12; // the hour '0' should be '12' + if (hora.toString().length < 2){hora = "0" + hora;} + elTexto = elTexto.toString().replace('%hora12%', hora); + } + if (laLista[i].search('%minutos%')>-1){//Remplaza con los minutos de la hora actual. + var mins = new Date().getMinutes(); + if (mins.toString().length < 2){mins = "0" + mins;} + elTexto = elTexto.toString().replace('%minutos%', mins); + } + if (laLista[i].search('%ampm%')>-1){//Remplaza con am o pm. + var hours = new Date().getHours(); + var ampm = hours >= 12 ? 'pm' : 'am'; + elTexto = elTexto.toString().replace('%ampm%', ampm); + } + if (laLista[i].search('%rnd_')>-1){//Remplaza con opción al azar dentro de las especificadas. + var inicio = laLista[i].search('%rnd_'); + var final = laLista[i].indexOf("%", inicio+1); + // console.log(inicio, final); + var subStr = laLista[i].substring(inicio, final+1); + // console.log("El substring="+subStr); + var partes = subStr.toString().split('_'); + if(partes.length > 1){ + var opciones = partes[1].toString().substring(0,partes[1].toString().length-1).split(","); + var elRand = Math.floor(Math.random() * (opciones.length)); + if(elRand == opciones.length){elRand = elRand - 1;} + // console.log(opciones.length, elRand, opciones[elRand]); + elTexto = elTexto.toString().replace(subStr, opciones[elRand]); + } + else{ + elTexto = elTexto.toString().replace(subStr, ""); + } + } + if(laLista[i].search('%msjant_')>-1){//Remplaza con el mensaje anterior especificado. + var histlMsjs = {}; + console.log("entramos a msjant", from) + var hayHistorial = (chkFile(`${__dirname}/chats/`+from+".json")); + if(chkFile(`${__dirname}/../chats/`+from+".json")){ + let rawdata = fs.readFileSync(`./chats/${from}.json`); + let elHistorial0 = JSON.parse(rawdata); + elHistorial = elHistorial0["messages"]; + elHistorial = elHistorial.filter(x => x.message != "") //Quitamos mensajes en blanco. + var inicio = laLista[i].search('%msjant_'); + var final = laLista[i].indexOf("%", inicio+1); + var subStr = laLista[i].substring(inicio, final+1); + // console.log("Substr = |" + subStr + "|"); + var partes = subStr.toString().split('_'); + if(partes.length > 1){ + // console.log("Partes[1] = |" + partes[1] + "|"); + let posicion0 = partes[1].substring(0, partes[1].length-1) + // console.log("Posicion0 = |" + posicion0 + "|"); + posicion = ((posicion0*1) + 1); + // console.log("Posicion = " + posicion); + // console.log( elHistorial.length ); + // console.log((elHistorial.length*1)-posicion); + // console.log("Mensaje="+elHistorial[elHistorial.length - posicion]["message"]) + elTexto = elTexto.toString().replace(subStr, elHistorial[elHistorial.length - posicion]["message"].trim()); + } + // histlMsjs = elHistorial["messages"]; + // totalMsjs = histlMsjs.length-1; + // ultimoMensaje = histlMsjs[histlMsjs.length-1]; + // let mensajeAnterior = elHistorial["messages"][totalMsjs-1]; + // console.log("Mensajes:"+totalMsjs+", Ultimo:"+JSON.stringify(ultimoMensaje)); + // console.log("Anterior:"+JSON.stringify(mensajeAnterior)); + } + // return histlMsjs; + } + if (laLista[i].search('%body%')>-1){//Remplaza con el body del ctx. + elTexto = elTexto.toString().replace('%body%', body); + } + if (laLista[i].search('%from%')>-1){//Remplaza con el from del ctx. + elTexto = elTexto.toString().replace('%from%', from); + } + if (laLista[i].search('%solonumero%')>-1){//Remplaza con el from del ctx. + elTexto = elTexto.toString().replace('%solonumero%', from.replace('@c.us', '')); + } + if (laLista[i].search('%nombre%')>-1){//Remplaza con el nombre del remitente. + if(typeof extraInfo !== undefined){ + if(name !== undefined){ + elTexto = elTexto.toString().replace('%nombre%', name); + } + } + } + if (laLista[i].search('%primer_nombre%')>-1){//Remplaza con el nombre del remitente. + if(typeof extraInfo !== undefined){ + // console.log("EXRAINFO:", extraInfo.theMsg) + if(name !== undefined){ + elTexto = elTexto.toString().replace('%primer_nombre%', name.split(' ')[0]); + } + } + } + } + // console.log("EL TEXTO="+elTexto); + return elTexto.trim() +} + +/** + * Regresa el historial de mensajes del número especificado del directorio "chats". + */ +function traeMensajes(from){ //MOD by CHV - Agregamos para traer el historial de mensajes + var histlMsjs = {}; + var hayHistorial = (chkFile(`${__dirname}/chats/`+from+".json")); + console.log(hayHistorial) + // var hayHistorialNoBlanks = hayHistorial.find(k => k.messages.message != "") + // console.log(hayHistorialNoBlanks) + // var {keywords} = stepsInitial.find(k => k.key.includes(key)) + if(hayHistorial){ + let rawdata = fs.readFileSync(`./chats/${from}.json`); + let elHistorial = JSON.parse(rawdata); + histlMsjs = elHistorial["messages"]; + // totalMsjs = histlMsjs.length-1; + ultimoMensaje = histlMsjs[histlMsjs.length-1]; + // let mensajeAnterior = elHistorial["messages"][totalMsjs-1]; + // console.log("Mensajes:"+totalMsjs+", Ultimo:"+JSON.stringify(ultimoMensaje)); + // console.log("Anterior:"+JSON.stringify(mensajeAnterior)); + } + console.log(histlMsjs) + // var histlMsjsNoBlanks = histlMsjs.find(k => k.message != "") + var histlMsjsNoBlanks = histlMsjs.filter(x => x.message != "") + console.log(histlMsjsNoBlanks) + return histlMsjs; +} + +/** + * Regresa el número limpio, sin @x.xxx + * @param {*} from + * @returns + */ +function soloNumero(from){ + let soloNum + if(provider == 'baileys'){soloNum = from.replace('@s.whatsapp.net', '')} + else if(provider == 'wwebjs'){soloNum = from.replace('@c.us', '')} + return soloNum +} + +function agregaVars(client, msg, vars){ + const { from, body, name, hasMedia } = vars + client.theMsg = msg; + client.theMsg['body'] = body + client.theMsg['from'] = from + client.theMsg['hasMedia'] = hasMedia + client.theMsg['name'] = name + client.theMsg['numero'] = soloNumero(from) + return client +} + +/* + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +var defaultDiacriticsRemovalMap = [ //MOD by CHV - Agregamos para eliminar acentos + {'base':'A', 'letters':'\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F'}, + {'base':'AA','letters':'\uA732'}, + {'base':'AE','letters':'\u00C6\u01FC\u01E2'}, + {'base':'AO','letters':'\uA734'}, + {'base':'AU','letters':'\uA736'}, + {'base':'AV','letters':'\uA738\uA73A'}, + {'base':'AY','letters':'\uA73C'}, + {'base':'B', 'letters':'\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181'}, + {'base':'C', 'letters':'\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E'}, + {'base':'D', 'letters':'\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779\u00D0'}, + {'base':'DZ','letters':'\u01F1\u01C4'}, + {'base':'Dz','letters':'\u01F2\u01C5'}, + {'base':'E', 'letters':'\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E'}, + {'base':'F', 'letters':'\u0046\u24BB\uFF26\u1E1E\u0191\uA77B'}, + {'base':'G', 'letters':'\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E'}, + {'base':'H', 'letters':'\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D'}, + {'base':'I', 'letters':'\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197'}, + {'base':'J', 'letters':'\u004A\u24BF\uFF2A\u0134\u0248'}, + {'base':'K', 'letters':'\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2'}, + {'base':'L', 'letters':'\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780'}, + {'base':'LJ','letters':'\u01C7'}, + {'base':'Lj','letters':'\u01C8'}, + {'base':'M', 'letters':'\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C'}, + {'base':'N', 'letters':'\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4'}, + {'base':'NJ','letters':'\u01CA'}, + {'base':'Nj','letters':'\u01CB'}, + {'base':'O', 'letters':'\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C'}, + {'base':'OI','letters':'\u01A2'}, + {'base':'OO','letters':'\uA74E'}, + {'base':'OU','letters':'\u0222'}, + {'base':'OE','letters':'\u008C\u0152'}, + {'base':'oe','letters':'\u009C\u0153'}, + {'base':'P', 'letters':'\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754'}, + {'base':'Q', 'letters':'\u0051\u24C6\uFF31\uA756\uA758\u024A'}, + {'base':'R', 'letters':'\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782'}, + {'base':'S', 'letters':'\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784'}, + {'base':'T', 'letters':'\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786'}, + {'base':'TZ','letters':'\uA728'}, + {'base':'U', 'letters':'\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244'}, + {'base':'V', 'letters':'\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245'}, + {'base':'VY','letters':'\uA760'}, + {'base':'W', 'letters':'\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72'}, + {'base':'X', 'letters':'\u0058\u24CD\uFF38\u1E8A\u1E8C'}, + {'base':'Y', 'letters':'\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE'}, + {'base':'Z', 'letters':'\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762'}, + {'base':'a', 'letters':'\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250'}, + {'base':'aa','letters':'\uA733'}, + {'base':'ae','letters':'\u00E6\u01FD\u01E3'}, + {'base':'ao','letters':'\uA735'}, + {'base':'au','letters':'\uA737'}, + {'base':'av','letters':'\uA739\uA73B'}, + {'base':'ay','letters':'\uA73D'}, + {'base':'b', 'letters':'\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253'}, + {'base':'c', 'letters':'\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184'}, + {'base':'d', 'letters':'\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A'}, + {'base':'dz','letters':'\u01F3\u01C6'}, + {'base':'e', 'letters':'\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD'}, + {'base':'f', 'letters':'\u0066\u24D5\uFF46\u1E1F\u0192\uA77C'}, + {'base':'g', 'letters':'\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F'}, + {'base':'h', 'letters':'\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265'}, + {'base':'hv','letters':'\u0195'}, + {'base':'i', 'letters':'\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131'}, + {'base':'j', 'letters':'\u006A\u24D9\uFF4A\u0135\u01F0\u0249'}, + {'base':'k', 'letters':'\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3'}, + {'base':'l', 'letters':'\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747'}, + {'base':'lj','letters':'\u01C9'}, + {'base':'m', 'letters':'\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F'}, + {'base':'n', 'letters':'\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5'}, + {'base':'nj','letters':'\u01CC'}, + {'base':'o', 'letters':'\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275'}, + {'base':'oi','letters':'\u01A3'}, + {'base':'ou','letters':'\u0223'}, + {'base':'oo','letters':'\uA74F'}, + {'base':'p','letters':'\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755'}, + {'base':'q','letters':'\u0071\u24E0\uFF51\u024B\uA757\uA759'}, + {'base':'r','letters':'\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783'}, + {'base':'s','letters':'\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B'}, + {'base':'t','letters':'\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787'}, + {'base':'tz','letters':'\uA729'}, + {'base':'u','letters': '\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289'}, + {'base':'v','letters':'\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C'}, + {'base':'vy','letters':'\uA761'}, + {'base':'w','letters':'\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73'}, + {'base':'x','letters':'\u0078\u24E7\uFF58\u1E8B\u1E8D'}, + {'base':'y','letters':'\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF'}, + {'base':'z','letters':'\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763'} +]; + +var diacriticsMap = {}; +for (var i=0; i < defaultDiacriticsRemovalMap .length; i++){ + var letters = defaultDiacriticsRemovalMap [i].letters; + for (var j=0; j < letters.length ; j++){ + diacriticsMap[letters[j]] = defaultDiacriticsRemovalMap [i].base; + } +} + +// "what?" version ... http://jsperf.com/diacritics/12 +function removeDiacritics (str) { + return str.replace(/[^\u0000-\u007E]/g, function(a){ + return diacriticsMap[a] || a; + }); +} +// var paragraph = "L'avantage d'utiliser le lorem ipsum est bien évidemment de pouvoir créer des maquettes ou de remplir un site internet de contenus qui présentent un rendu s'approchant un maximum du rendu final. \n Par défaut lorem ipsum ne contient pas d'accent ni de caractères spéciaux contrairement à la langue française qui en contient beaucoup. C'est sur ce critère que nous proposons une solution avec cet outil qui générant du faux-texte lorem ipsum mais avec en plus, des caractères spéciaux tel que les accents ou certains symboles utiles pour la langue française. \n L'utilisation du lorem standard est facile d’utilisation mais lorsque le futur client utilisera votre logiciel il se peut que certains caractères spéciaux ou qu'un accent ne soient pas codés correctement. \n Cette page a pour but donc de pouvoir perdre le moins de temps possible et donc de tester directement si tous les encodages de base de donnée ou des sites sont les bons de plus il permet de récuperer un code css avec le texte formaté !"; +// alert(removeDiacritics(paragraph)); + +module.exports = { removeDiacritics, traeMensajes, chkFile, getRandomInt, remplazos, soloNumero, agregaVars } \ No newline at end of file diff --git a/implementaciones/sheets.js b/implementaciones/sheets.js index 2eea89d..895c1b0 100644 --- a/implementaciones/sheets.js +++ b/implementaciones/sheets.js @@ -5,7 +5,7 @@ const RESPONSES_SHEET_ID = '1tVRX1ojXJadsjRUJ-pNv8DZgziaIMcAdsMtPmWQRBcM'; //Ge const doc = new GoogleSpreadsheet(RESPONSES_SHEET_ID); const CREDENTIALS = JSON.parse(fs.readFileSync('./implementaciones/credenciales.json')); -async function ingresarDatos(numero, mensaje){ +async function ingresarDatos(numero, mensaje, sentido){ let Fecha = getDate(); let Hora = getTime(Date.now(), {local: 'es-MX', timeZone: 'America/Mexico_City', hour12:false}); elNum = numero.replace('@c.us', '') @@ -13,34 +13,27 @@ async function ingresarDatos(numero, mensaje){ let rows = [{ Numero: elNum.trim(), Mensaje: mensaje, + Sentido: sentido, Fecha: Fecha, Hora: Hora }]; - await doc.useServiceAccountAuth({ - client_email: CREDENTIALS.client_email, - private_key: CREDENTIALS.private_key - }); - await doc.loadInfo(); - let sheet = doc.sheetsByTitle['Mensajes']; - // console.log("SHEET=", sheet) - for (let index = 0; index < rows.length; index++) { - const row = rows[index]; - await sheet.addRow(row); - console.log("Datos guardados (sheets.js)") + try{ + await doc.useServiceAccountAuth({ + client_email: CREDENTIALS.client_email, + private_key: CREDENTIALS.private_key + }); + await doc.loadInfo(); + let sheet = doc.sheetsByTitle['Mensajes']; + // console.log("SHEET=", sheet) + for (let index = 0; index < rows.length; index++) { + const row = rows[index]; + await sheet.addRow(row); + console.log(`Datos guardados - ${sentido} (sheets.js)`) + } } - // console.log('Fecha:',Fecha,); - // console.log('Hora:',Hora); - // console.log('Nombre:',nombre); - // console.log('Apellidos:',apellido); - // console.log('Direccion:',direccion); - // console.log('Planta:',planta); - // console.log('Codigo Postal:',CP); - // console.log('Descripcion:',descripcion); - // console.log('Telefono:',telsim); - // console.log('Horario deseado:',horario); - // console.log('ID_Solicitud: ',ID_Solicitud); - // console.log('Estado: ',Estado) - // console.log('-----------------------------------'); + catch{ + console.log("Error Sheets") + } } async function leerDatos(telsim){ diff --git a/initBailey.js b/initBailey.js new file mode 100644 index 0000000..ae4a9b1 --- /dev/null +++ b/initBailey.js @@ -0,0 +1,125 @@ +const baileysReq = require ('@adiwajshing/baileys') +var pino = require('pino'); +const { createWriteStream } = require('fs') +var combineImage = require('combine-image'); +const { + default: makeWASocket, + useMultiFileAuthState, + Browsers, + DisconnectReason, +} = baileysReq +const globalVendorArgs = { name: `bot` } +var qr = require('qr-image'); + +/** + * Hace promesa el write + * @param {*} base64 + */ +const baileyGenerateImage = async (base64, name = 'qr.png') => { + const PATH_QR = `${process.cwd()}/${name}`; + let qr_svg = qr.image(base64, { type: 'png', margin: 4 }); + + const writeFilePromise = () => + new Promise((resolve, reject) => { + const file = qr_svg.pipe(createWriteStream(PATH_QR)); + file.on('finish', () => resolve(true)); + file.on('error', reject); + }); + + await writeFilePromise(); + + const cleanImage = await combineImage([PATH_QR], { + margin: 15, + color: 0xffffffff, + }); + cleanImage.write(PATH_QR); +}; + + +function listenMessage(client){ + client.ev.on('messages.upsert', async msg => { + console.log('M=', msg) + console.log('replying to', msg.messages[0]) + // await sock.sendMessage(m.messages[0].key.remoteJid, { text: 'hola como estas' }) + }) +} + + +/** + * Iniciar todo Bailey + */ +initBailey = async () => { + const NAME_DIR_SESSION = `baileys_sessions`; + const { state, saveCreds } = await useMultiFileAuthState( + NAME_DIR_SESSION + ); + saveCredsGlobal = saveCreds; + const sock = makeWASocket({ + // can provide additional config here + printQRInTerminal: true, + auth: state, + browser: Browsers.macOS('Desktop'), + syncFullHistory: false, + logger: pino({ level: 'error' }), + }) + try { + sock.ev.on('connection.update', async (update) => { + const { connection, lastDisconnect, qr } = update; + const statusCode = lastDisconnect?.error?.output?.statusCode; + if(connection === 'close') { + if (statusCode !== DisconnectReason.loggedOut) { + initBailey(); + } + if (statusCode === DisconnectReason.loggedOut) { + const PATH_BASE = join(process.cwd(), NAME_DIR_SESSION); + rimraf(PATH_BASE, (err) => { + if (err) return + }); + initBailey(); + } + } + /** Conexion abierta correctamente */ + if (connection === 'open') { + console.log('ready', true); + // initBusEvents(sock); + } + /** QR Code */ + if (qr) { + console.log('require_action', { + instructions: [ + `Debes escanear el QR Code para iniciar ${globalVendorArgs.name}.qr.png`, + `Recuerda que el QR se actualiza cada minuto `, + `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, + ], + }); + await baileyGenerateImage( + qr, + `${globalVendorArgs.name}.qr.png` + ); + } + }); + sock.ev.on('creds.update', async () => { + await saveCreds(); + }); + } catch (e) { + // logger.log(e); + console.log('auth_failure', [ + `Algo inesperado ha ocurrido NO entres en pánico`, + `Reinicia el BOT`, + `Tambien puedes mirar un log que se ha creado baileys.log`, + `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, + `(Puedes abrir un ISSUE) https://github.com/codigoencasa/bot-whatsapp/issues/new/choose`, + ]); + } + listenMessage(sock) + // sock.ev.on('messages.upsert', async (m) => { + // console.log('M=', m) + // console.log('replying to', m.messages[0]) + // // await sock.sendMessage(m.messages[0].key.remoteJid, { text: 'hola como estas' }) + // }) +} +// run in main file +initBailey() + + +module.exports = { initBailey, listenMessage, baileyGenerateImage } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 8d65e84..f091798 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,10 @@ "version": "1.0.1", "license": "ISC", "dependencies": { + "@adiwajshing/baileys": "^4.4.0", "@google-cloud/dialogflow": "^5.2.0", "axios": "^0.27.2", + "combine-image": "^1.0.3", "cors": "^2.8.5", "dotenv": "^16.0.1", "exceljs": "^4.3.0", @@ -38,10 +40,103 @@ "node": "16.x" } }, + "node_modules/@adiwajshing/baileys": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@adiwajshing/baileys/-/baileys-4.4.0.tgz", + "integrity": "sha512-5gEnkJBgraLL0USzndxto8ofYhWyMFZVkpZ4rD1nPqrjBjGMt+k+YDpllpFpOfA0yxWZb6nPrr04ikQv++dz2Q==", + "dependencies": { + "@hapi/boom": "^9.1.3", + "axios": "^0.24.0", + "futoin-hkdf": "^1.5.0", + "libsignal": "git+https://github.com/adiwajshing/libsignal-node.git", + "music-metadata": "^7.12.3", + "node-cache": "^5.1.2", + "pino": "^7.0.0", + "protobufjs": "^6.11.3", + "ws": "^8.0.0" + }, + "peerDependencies": { + "@adiwajshing/keyed-db": "^0.2.4", + "jimp": "^0.16.1", + "link-preview-js": "^2.1.13", + "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/baileys/node_modules/axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "dependencies": { + "follow-redirects": "^1.14.4" + } + }, + "node_modules/@adiwajshing/baileys/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/@adiwajshing/baileys/node_modules/ws": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", + "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", + "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/@babel/parser": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", - "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", + "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -49,6 +144,19 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/runtime": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "optional": true, + "peer": true, + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@fast-csv/format": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", @@ -77,9 +185,9 @@ } }, "node_modules/@google-cloud/dialogflow": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@google-cloud/dialogflow/-/dialogflow-5.4.0.tgz", - "integrity": "sha512-2MBt4sOSgLKPubQEYW0YH9OcBx89SUUEUFfBA+vK1NH8tkjBIBvVqSXLPlXLCLZ2jRhTHSkncQO5MzAhrS4rhA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@google-cloud/dialogflow/-/dialogflow-5.5.0.tgz", + "integrity": "sha512-Ku+QmtzTF6hMyONWWipxZvSCSRWkFlOflw681sLCZqgZA3ce7QTesp/pPbKlMDZ3uRf1csCEhJssSbW4ycR18g==", "dependencies": { "google-gax": "^3.5.2" }, @@ -88,9 +196,9 @@ } }, "node_modules/@grpc/grpc-js": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.3.tgz", - "integrity": "sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog==", + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.8.tgz", + "integrity": "sha512-4gfDqMLXTrorvYTKA1jL22zLvVwiHJ73t6Re1OHwdCFRjdGTDOVtSJuaWhtHaivyeDGg0LeCkmU77MTKoV3wPA==", "dependencies": { "@grpc/proto-loader": "^0.7.0", "@types/node": ">=12.12.47" @@ -117,6 +225,594 @@ "node": ">=6" } }, + "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/@jimp/bmp": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", + "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "bmp-js": "^0.1.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/core": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", + "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^16.5.4", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "node_modules/@jimp/core/node_modules/file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "optional": true, + "peer": true, + "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/@jimp/core/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==", + "optional": true, + "peer": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/@jimp/core/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@jimp/core/node_modules/strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "optional": true, + "peer": true, + "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/@jimp/core/node_modules/token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "optional": true, + "peer": true, + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@jimp/custom": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", + "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.13" + } + }, + "node_modules/@jimp/gif": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", + "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/jpeg": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", + "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "jpeg-js": "^0.4.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blit": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", + "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blur": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", + "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-circle": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", + "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-color": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", + "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "tinycolor2": "^1.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-contain": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", + "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "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.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", + "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "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.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", + "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-displace": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", + "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-dither": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", + "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-fisheye": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", + "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-flip": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", + "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-rotate": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-gaussian": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", + "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-invert": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", + "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-mask": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", + "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-normalize": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", + "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-print": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", + "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "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.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", + "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-rotate": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", + "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "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.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", + "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-shadow": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", + "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "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.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", + "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "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.13", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", + "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.13", + "@jimp/plugin-blur": "^0.16.13", + "@jimp/plugin-circle": "^0.16.13", + "@jimp/plugin-color": "^0.16.13", + "@jimp/plugin-contain": "^0.16.13", + "@jimp/plugin-cover": "^0.16.13", + "@jimp/plugin-crop": "^0.16.13", + "@jimp/plugin-displace": "^0.16.13", + "@jimp/plugin-dither": "^0.16.13", + "@jimp/plugin-fisheye": "^0.16.13", + "@jimp/plugin-flip": "^0.16.13", + "@jimp/plugin-gaussian": "^0.16.13", + "@jimp/plugin-invert": "^0.16.13", + "@jimp/plugin-mask": "^0.16.13", + "@jimp/plugin-normalize": "^0.16.13", + "@jimp/plugin-print": "^0.16.13", + "@jimp/plugin-resize": "^0.16.13", + "@jimp/plugin-rotate": "^0.16.13", + "@jimp/plugin-scale": "^0.16.13", + "@jimp/plugin-shadow": "^0.16.13", + "@jimp/plugin-threshold": "^0.16.13", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/png": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", + "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "pngjs": "^3.3.3" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/tiff": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", + "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/types": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", + "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.13", + "@jimp/gif": "^0.16.13", + "@jimp/jpeg": "^0.16.13", + "@jimp/png": "^0.16.13", + "@jimp/tiff": "^0.16.13", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/utils": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", + "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/@jsdoc/salty": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.3.tgz", + "integrity": "sha512-bbtCxCkxcnWhi50I+4Lj6mdz9w3pOXOgEQrID8TCZ/DF51fW7M9GCQW2y45SpBDdHd1Eirm1X/Cf6CkAAe8HPg==", + "dependencies": { + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=v12.0.0" + } + }, "node_modules/@opencensus/core": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz", @@ -516,6 +1212,15 @@ "@types/node": "*" } }, + "node_modules/@types/glob": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.0.1.tgz", + "integrity": "sha512-8bVUjXZvJacUFkJXHdyZ9iH1Eaj5V7I8c4NdH5sQJsdXkqT4CA5Dhb4yb4VE/3asyx4L9ayZr1NIhTsWHczmMw==", + "dependencies": { + "@types/minimatch": "^5.1.2", + "@types/node": "*" + } + }, "node_modules/@types/linkify-it": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", @@ -540,11 +1245,25 @@ "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" + }, "node_modules/@types/node": { "version": "14.18.36", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==" }, + "node_modules/@types/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==", + "dependencies": { + "@types/glob": "*", + "@types/node": "*" + } + }, "node_modules/@types/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", @@ -645,6 +1364,21 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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/amp": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", @@ -691,6 +1425,13 @@ "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==", + "optional": true, + "peer": true + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -786,6 +1527,22 @@ "node": ">=8" } }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/ast-types": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", @@ -836,6 +1593,27 @@ "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/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" + }, "node_modules/axios": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", @@ -877,6 +1655,14 @@ "node": "^4.5.0 || >= 5.9" } }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, "node_modules/big-integer": { "version": "1.6.51", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", @@ -941,6 +1727,13 @@ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", + "optional": true, + "peer": true + }, "node_modules/bodec": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/bodec/-/bodec-0.1.0.tgz", @@ -1022,6 +1815,14 @@ "node": "*" } }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -1069,6 +1870,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, "node_modules/catharsis": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", @@ -1176,6 +1982,14 @@ "wrap-ansi": "^7.0.0" } }, + "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/codepage": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", @@ -1200,6 +2014,66 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/combine-image": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/combine-image/-/combine-image-1.0.3.tgz", + "integrity": "sha512-qE7G/RXTc21sZuypwI2HPHgSf9pxWd2kHv8P7j1Qu6BIfLmNYW7LACixJ++dCCpIbZuCcurTeKU2nSaLTAloSg==", + "dependencies": { + "is-plain-obj": "^1.1.0", + "jimp": "0.2.27" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/combine-image/node_modules/bignumber.js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.4.0.tgz", + "integrity": "sha512-uw4ra6Cv483Op/ebM0GBKKfxZlSmn6NgFRby5L3yGTlunLj53KQgndDlqy2WVFOwgvurocApYkSud0aO+mvrpQ==", + "engines": { + "node": "*" + } + }, + "node_modules/combine-image/node_modules/bmp-js": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.0.1.tgz", + "integrity": "sha512-OS74Rlt0Aynu2mTPmY9RZOUOXlqWecFIILFXr70vv16/xCZnFxvri9IKkF1IGxQ8r9dOE62qGNpKxXx8Lko8bg==" + }, + "node_modules/combine-image/node_modules/file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/combine-image/node_modules/jimp": { + "version": "0.2.27", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.2.27.tgz", + "integrity": "sha512-KP08kEe5pDY+AFg00vuqKP0zgUmeQXJXpzQ+w9+0pQA27GCF9RoWzOpf3AONHgf5h8raMrXaF18y4ug9Rw2xEw==", + "dependencies": { + "bignumber.js": "^2.1.0", + "bmp-js": "0.0.1", + "es6-promise": "^3.0.2", + "exif-parser": "^0.1.9", + "file-type": "^3.1.0", + "jpeg-js": "^0.2.0", + "load-bmfont": "^1.2.3", + "mime": "^1.3.4", + "pixelmatch": "^4.0.0", + "pngjs": "^3.0.0", + "read-chunk": "^1.0.1", + "request": "^2.65.0", + "stream-to-buffer": "^0.1.0", + "tinycolor2": "^1.1.2", + "url-regex": "^3.0.0" + } + }, + "node_modules/combine-image/node_modules/jpeg-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.2.0.tgz", + "integrity": "sha512-Ni9PffhJtYtdD7VwxH6V2MnievekGfUefosGCHadog0/jAevRu6HPjYeMHbUemn0IPE8d4wGa8UsOGsX+iKy2g==" + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -1357,6 +2231,22 @@ "integrity": "sha512-yi1x3EAWKjQTreYWeSd98431AV+IEE0qoDyOoaHJ7KJ21gv6HtBXHVLX74opVSGqcR8/AbjJBHAHpcOy2bj5Gg==", "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/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, "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", @@ -1429,6 +2319,11 @@ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==" }, + "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==" + }, "node_modules/dotenv": { "version": "16.0.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", @@ -1483,6 +2378,15 @@ "stream-shift": "^1.0.0" } }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -1527,9 +2431,9 @@ } }, "node_modules/engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.0.tgz", + "integrity": "sha512-OgxY1c/RuCSeO/rTr8DIFXx76IzUUft86R7/P7MMbbkuzeqJoTNw2lmeD91IyGz41QYleIIjWeMJGgug043sfQ==", "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", @@ -1540,7 +2444,7 @@ "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" + "ws": "~8.11.0" }, "engines": { "node": ">=10.0.0" @@ -1584,9 +2488,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/engine.io/node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "engines": { "node": ">=10.0.0" }, @@ -1623,6 +2527,11 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==" + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -1770,6 +2679,11 @@ "node": ">=8.3.0" } }, + "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==" + }, "node_modules/express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -1856,6 +2770,14 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, "node_modules/fast-csv": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/fast-csv/-/fast-csv-4.3.6.tgz", @@ -1868,17 +2790,35 @@ "node": ">=10.0.0" } }, + "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==" + }, "node_modules/fast-json-patch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==", "dev": true }, + "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==" + }, "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==" }, + "node_modules/fast-redact": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", + "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==", + "engines": { + "node": ">=6" + } + }, "node_modules/fast-text-encoding": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", @@ -1995,6 +2935,14 @@ } } }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "engines": { + "node": "*" + } + }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -2148,6 +3096,14 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "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/gaxios": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.0.2.tgz", @@ -2249,6 +3205,25 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/gifwrap": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", + "optional": true, + "peer": true, + "dependencies": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, "node_modules/git-node-fs": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/git-node-fs/-/git-node-fs-1.0.0.tgz", @@ -2292,6 +3267,15 @@ "node": ">= 6" } }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, "node_modules/google-auth-library": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.7.0.tgz", @@ -2312,13 +3296,14 @@ } }, "node_modules/google-gax": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.5.2.tgz", - "integrity": "sha512-AyP53w0gHcWlzxm+jSgqCR3Xu4Ld7EpSjhtNBnNhzwwWaIUyphH9kBGNIEH+i4UGkTUXOY29K/Re8EiAvkBRGw==", + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.5.7.tgz", + "integrity": "sha512-taDGwR9Ry5y6NkcPYKe0B3wr7rCwaImZZIuWajUcFe9Y8L71eBtaq0+ZJ62JByzr/2cJkd9EN1rr52rD6V/UDA==", "dependencies": { - "@grpc/grpc-js": "~1.7.0", + "@grpc/grpc-js": "~1.8.0", "@grpc/proto-loader": "^0.7.0", "@types/long": "^4.0.0", + "@types/rimraf": "^3.0.2", "abort-controller": "^3.0.0", "duplexify": "^4.0.0", "fast-text-encoding": "^1.0.3", @@ -2327,8 +3312,8 @@ "node-fetch": "^2.6.1", "object-hash": "^3.0.0", "proto3-json-serializer": "^1.0.0", - "protobufjs": "7.1.2", - "protobufjs-cli": "1.0.2", + "protobufjs": "7.2.2", + "protobufjs-cli": "1.1.1", "retry-request": "^5.0.0" }, "bin": { @@ -2501,6 +3486,27 @@ "node": ">=12.0.0" } }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -2583,6 +3589,20 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -2646,6 +3666,23 @@ } ] }, + "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==", + "optional": true, + "peer": 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==", + "optional": true, + "peer": true + }, "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", @@ -2677,6 +3714,14 @@ "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "dev": true }, + "node_modules/ip-regex": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", + "integrity": "sha512-HjpCHTuxbR/6jWJroc/VN+npo5j0T4Vv2TAI5qdEHQx7hsL767MeccGFSsLtF694EiZKTSEqgoeU6DtGFCcuqQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -2726,6 +3771,11 @@ "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==" + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -2747,6 +3797,14 @@ "node": ">=0.12.0" } }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -2763,6 +3821,11 @@ "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -2773,6 +3836,32 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/jimp": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", + "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.13", + "@jimp/plugins": "^0.16.13", + "@jimp/types": "^0.16.13", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", + "optional": true, + "peer": true + }, "node_modules/js-git": { "version": "0.7.8", "resolved": "https://registry.npmjs.org/js-git/-/js-git-0.7.8.tgz", @@ -2799,12 +3888,18 @@ "xmlcreate": "^2.0.4" } }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, "node_modules/jsdoc": { - "version": "3.6.11", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.11.tgz", - "integrity": "sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.0.tgz", + "integrity": "sha512-tzTgkklbWKrlaQL2+e3NNgLcZu3NaK2vsHRx7tyHQ+H5jcB9Gx0txSd2eJWlMC/xU1+7LQu4s58Ry0RkuaEQVg==", "dependencies": { "@babel/parser": "^7.9.4", + "@jsdoc/salty": "^0.2.1", "@types/markdown-it": "^12.2.3", "bluebird": "^3.7.2", "catharsis": "^0.9.0", @@ -2817,7 +3912,6 @@ "mkdirp": "^1.0.4", "requizzle": "^0.2.3", "strip-json-comments": "^3.1.0", - "taffydb": "2.6.2", "underscore": "~1.13.2" }, "bin": { @@ -2843,12 +3937,20 @@ "bignumber.js": "^9.0.0" } }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "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==" + }, "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, - "optional": true + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "node_modules/jsonfile": { "version": "4.0.0", @@ -2859,6 +3961,20 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/jsqr": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz", @@ -2988,6 +4104,45 @@ "node": ">= 0.8.0" } }, + "node_modules/libsignal": { + "version": "2.0.1", + "resolved": "git+ssh://git@github.com/adiwajshing/libsignal-node.git#11dbd962ea108187c79a7c46fe4d6f790e23da97", + "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/lie": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", @@ -3009,6 +4164,21 @@ "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" }, + "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==", + "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/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -3211,6 +4381,14 @@ "node": ">= 0.6" } }, + "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==", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3223,9 +4401,9 @@ } }, "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3265,6 +4443,116 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/music-metadata": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/music-metadata/-/music-metadata-7.13.3.tgz", + "integrity": "sha512-qxh+Xgy1qHhrgW4XnXu5JUxMmRNdQXDEeIZLGXpapOi96rRCocXn498L+y2P7t6NJXFK8e3Shv2tu0dC/HF/3g==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "content-type": "^1.0.4", + "debug": "^4.3.4", + "file-type": "^16.5.4", + "media-typer": "^1.1.0", + "strtok3": "^6.3.0", + "token-types": "^4.2.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/music-metadata/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/music-metadata/node_modules/file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "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/music-metadata/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/music-metadata/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/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/music-metadata/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/music-metadata/node_modules/token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", @@ -3369,10 +4657,21 @@ "node": ">= 0.4.0" } }, + "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-fetch": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.8.tgz", - "integrity": "sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -3428,6 +4727,14 @@ "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==", "dev": true }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -3452,6 +4759,18 @@ "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==", + "optional": true, + "peer": 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/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -3582,6 +4901,30 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, + "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==" + }, + "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==" + }, + "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==", + "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==" + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -3639,6 +4982,16 @@ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -3663,6 +5016,52 @@ "node": ">=10" } }, + "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-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/pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "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", @@ -3893,6 +5292,14 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -3916,11 +5323,24 @@ "url": "https://github.com/prettier/prettier?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==", + "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==" }, + "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/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -3950,9 +5370,9 @@ } }, "node_modules/protobufjs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.2.tgz", - "integrity": "sha512-4ZPTPkXCdel3+L81yw3dG6+Kq3umdWKh7Dc7GW/CpNk4SX3hK58iPCWeCyhVTDrbkNeKrYNZ7EojM5WDaEWTLQ==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.2.tgz", + "integrity": "sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -3973,16 +5393,16 @@ } }, "node_modules/protobufjs-cli": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.0.2.tgz", - "integrity": "sha512-cz9Pq9p/Zs7okc6avH20W7QuyjTclwJPgqXG11jNaulfS3nbVisID8rC+prfgq0gbZE0w9LBFd1OKFF03kgFzg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.1.tgz", + "integrity": "sha512-VPWMgIcRNyQwWUv8OLPyGQ/0lQY/QTQAVN5fh+XzfDwsVw1FZ2L3DM/bcBf8WPiRz2tNpaov9lPZfNcmNo6LXA==", "dependencies": { "chalk": "^4.0.0", "escodegen": "^1.13.0", "espree": "^9.0.0", "estraverse": "^5.1.0", "glob": "^8.0.0", - "jsdoc": "^3.6.3", + "jsdoc": "^4.0.0", "minimist": "^1.2.0", "semver": "^7.1.2", "tmp": "^0.2.1", @@ -4130,6 +5550,11 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -4139,6 +5564,14 @@ "once": "^1.3.1" } }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, "node_modules/puppeteer": { "version": "13.7.0", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", @@ -4231,6 +5664,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -4265,6 +5703,14 @@ "node": ">=0.8" } }, + "node_modules/read-chunk": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-1.0.1.tgz", + "integrity": "sha512-5NLTTdX45dKFtG8CX5pKmvS9V5u9wBE+gkklN7xhDuhq3pA2I4O7ALfKxosCMcLHOhkxj6GNacZhfXtp5nlCdg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -4332,6 +5778,82 @@ "node": ">=8.10.0" } }, + "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/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "optional": true, + "peer": true + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/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.", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -4488,6 +6010,14 @@ } ] }, + "node_modules/safe-stable-stringify": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz", + "integrity": "sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==", + "engines": { + "node": ">=10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -4496,8 +6026,7 @@ "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 + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "node_modules/saxes": { "version": "5.0.1", @@ -4612,15 +6141,15 @@ } }, "node_modules/socket.io": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz", - "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.0.tgz", + "integrity": "sha512-b65bp6INPk/BMMrIgVvX12x3Q+NqlGqSlTuvKQWt0BUJ3Hyy3JangBl7fEoWZTXbOKlCqNPbQ6MbWgok/km28w==", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.2.1", - "socket.io-adapter": "~2.4.0", + "engine.io": "~6.4.0", + "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.1" }, "engines": { @@ -4628,9 +6157,32 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "dependencies": { + "ws": "~8.11.0" + } + }, + "node_modules/socket.io-adapter/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "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/socket.io-parser": { "version": "4.2.2", @@ -4743,6 +6295,14 @@ "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", @@ -4762,6 +6322,14 @@ "source-map": "^0.6.0" } }, + "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/sprintf-js": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", @@ -4787,6 +6355,30 @@ "node": ">=0.8" } }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -4806,6 +6398,25 @@ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" }, + "node_modules/stream-to": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-to/-/stream-to-0.2.2.tgz", + "integrity": "sha512-Kg1BSDTwgGiVMtTCJNlo7kk/xzL33ZuZveEBRt6rXw+f1WLK/8kmz2NVCT/Qnv0JkV85JOHcLhD82mnXsR3kPw==", + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/stream-to-buffer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz", + "integrity": "sha512-Da4WoKaZyu3nf+bIdIifh7IPkFjARBnBK+pYqn0EUJqksjV9afojjaCCHUemH30Jmu7T2qcKvlZm2ykN38uzaw==", + "dependencies": { + "stream-to": "~0.2.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -4889,9 +6500,9 @@ } }, "node_modules/systeminformation": { - "version": "5.17.7", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.17.7.tgz", - "integrity": "sha512-0eQA5IkDlP4njQm9b5LvApCXaD52zFLfu+Xte1VdfaMChu4DxCSCmCjr/jAQK63gtHJ63x5gstCW5y3oWh9n+A==", + "version": "5.17.8", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.17.8.tgz", + "integrity": "sha512-kMQsCOFQXqEjoDWKpYkC+ezJImrOnyTL3FZnYDZdWLTZcMW7Gomdp8zH9ztGlSo2L1iCAQXZ8HlV1bI8/Ts64g==", "dev": true, "optional": true, "os": [ @@ -4915,11 +6526,6 @@ "url": "https://www.buymeacoffee.com/systeminfo" } }, - "node_modules/taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==" - }, "node_modules/tar-fs": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", @@ -4946,11 +6552,31 @@ "node": ">=6" } }, + "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/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, + "node_modules/timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==", + "optional": true, + "peer": true + }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" + }, "node_modules/tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -4998,6 +6624,18 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -5017,6 +6655,17 @@ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", "dev": true }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, "node_modules/tv4": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", @@ -5026,6 +6675,11 @@ "node": ">= 0.8.0" } }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, "node_modules/tx2": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tx2/-/tx2-1.0.5.tgz", @@ -5155,11 +6809,40 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-regex": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz", + "integrity": "sha512-dQ9cJzMou5OKr6ZzfvwJkCq3rC72PNXhqz0v3EIhF4a3Np+ujr100AhUx2cKx5ei3iymoJpJrPB3sVSEMdqAeg==", + "dependencies": { + "ip-regex": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/url-template": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" }, + "node_modules/utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "optional": true, + "peer": 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", @@ -5194,6 +6877,24 @@ "node": ">= 0.8" } }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, "node_modules/vizion": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/vizion/-/vizion-2.2.1.tgz", @@ -5219,9 +6920,9 @@ } }, "node_modules/vm2": { - "version": "3.9.13", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.13.tgz", - "integrity": "sha512-0rvxpB8P8Shm4wX2EKOiMp7H2zq+HUE/UwodY0pCZXs9IffIKZq6vUti5OgkVCTakKo9e/fgO4X1fkwfjWxE3Q==", + "version": "3.9.14", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.14.tgz", + "integrity": "sha512-HgvPHYHeQy8+QhzlFryvSteA4uQLBCOub02mgqdR+0bN/akRZ48TGB1v0aCv7ksyc0HXx16AZtMHKS38alc6TA==", "dev": true, "dependencies": { "acorn": "^8.7.0", @@ -5240,8 +6941,8 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/whatsapp-web.js": { - "version": "1.19.2", - "resolved": "git+ssh://git@github.com/cheveguerra/whatsapp-web.js.git#025f9914c3ee090c760fe6f2218e68b8bc9225af", + "version": "1.19.3", + "resolved": "git+ssh://git@github.com/cheveguerra/whatsapp-web.js.git#29b61b396b7728c019cdebaf77916c705fbf8970", "license": "Apache-2.0", "dependencies": { "@pedroslopez/moduleraid": "^5.0.2", @@ -5393,6 +7094,17 @@ } } }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, "node_modules/xlsx": { "version": "0.18.5", "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", @@ -5413,6 +7125,31 @@ "node": ">=0.8" } }, + "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==" + }, + "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==", + "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==", + "engines": { + "node": ">=4.0" + } + }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", @@ -5432,6 +7169,14 @@ "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==", + "engines": { + "node": ">=0.4" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index c77715a..49b86bc 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,10 @@ "author": "", "license": "ISC", "dependencies": { + "@adiwajshing/baileys": "^4.4.0", "@google-cloud/dialogflow": "^5.2.0", "axios": "^0.27.2", + "combine-image": "^1.0.3", "cors": "^2.8.5", "dotenv": "^16.0.1", "exceljs": "^4.3.0", diff --git a/provider/baileys.js b/provider/baileys.js new file mode 100644 index 0000000..96b0146 --- /dev/null +++ b/provider/baileys.js @@ -0,0 +1,133 @@ +const { default: makeWASocket, useMultiFileAuthState, Browsers, DisconnectReason } = require ('@adiwajshing/baileys') +var pino = require('pino'); +const { createWriteStream } = require('fs') +var combineImage = require('combine-image'); +const { path, join } = require('path'); +const rimraf = require('rimraf') +// function listenMessage(client){ +// client.on('messages.upsert', async msg => { +// console.log('MSG=', msg) +// console.log('REPLY TO=', msg.messages[0]) +// // await sock.sendMessage(m.messages[0].key.remoteJid, { text: 'hola como estas' }) +// }) +// } + +// const { default: makeWASocket, useMultiFileAuthState, Browsers, DisconnectReason } = baileysReq +const globalVendorArgs = { name: `bot` } +var qr = require('qr-image'); + +/** + * Hace promesa el write + * @param {*} base64 +*/ +const baileyGenerateImage = async (base64, name = 'qr.png') => { + const PATH_QR = `${process.cwd()}/${name}`; + let qr_svg = qr.image(base64, { type: 'png', margin: 4 }); + + const writeFilePromise = () => + new Promise((resolve, reject) => { + const file = qr_svg.pipe(createWriteStream(PATH_QR)); + file.on('finish', () => resolve(true)); + file.on('error', reject); + }); + + await writeFilePromise(); + + const cleanImage = await combineImage([PATH_QR], { + margin: 15, + color: 0xffffffff, + }); + cleanImage.write(PATH_QR); +}; +/** + * Iniciar todo Bailey + */ +initBot = async () => { + console.log("Baileys Init") + const NAME_DIR_SESSION = `baileys_sessions`; + const { state, saveCreds } = await useMultiFileAuthState( + NAME_DIR_SESSION + ); + saveCredsGlobal = saveCreds; + const sock = makeWASocket({ + // can provide additional config here + printQRInTerminal: true, + auth: state, + browser: Browsers.macOS('Desktop'), + syncFullHistory: false, + logger: pino({ level: 'error' }), + }) + try { + sock.ev.on('connection.update', async (update) => { + const { connection, lastDisconnect, qr } = update; + const statusCode = lastDisconnect?.error?.output?.statusCode; + if(connection === 'close') { + if (statusCode !== DisconnectReason.loggedOut) { + initBot(); + } + if (statusCode === DisconnectReason.loggedOut) { + const PATH_BASE = join(process.cwd(), NAME_DIR_SESSION); + rimraf(PATH_BASE, (err) => { + if (err) return + }); + initBot(); + } + } + /** Conexion abierta correctamente */ + if (connection === 'open') { + console.log('ready', true); + // initBusEvents(sock); + } + /** QR Code */ + if (qr) { + console.log('require_action', { + instructions: [ + `Debes escanear el QR Code para iniciar ${globalVendorArgs.name}.qr.png`, + `Recuerda que el QR se actualiza cada minuto `, + `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, + ], + }); + await baileyGenerateImage(qr, `${globalVendorArgs.name}.qr.png`); + } + }); + sock.ev.on('creds.update', async () => { await saveCreds() }); + } + catch (e) { + logger.log(e); + console.log('auth_failure', [ + `Algo inesperado ha ocurrido NO entres en pánico`, + `Reinicia el BOT`, + `Tambien puedes mirar un log que se ha creado baileys.log`, + `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, + `(Puedes abrir un ISSUE) https://github.com/codigoencasa/bot-whatsapp/issues/new/choose`, + ]); + } + // listenMessage(sock.ev) + return sock + } + // run in main file + // initBot() + + /** + * Regresa las variables from, body, name y hasMedia de el objeto del mensaje. + * @param {*} msg + * @returns from, body, name, hasMedia + */ + function traeVariables(msg){ + const { remoteJid } = msg.messages[0].key + const { pushName } = msg.messages[0] + // console.log("THE_MSG = ", client.theMsg.messages[0]) + // console.log("*** CONVERSATION=", client.theMsg.messages[0].message?.conversation) + // console.log("*** SELECTEDDISPLAYTEXT=", client.theMsg.messages[0].message?.buttonsResponseMessage?.selectedDisplayText) + // console.log("*** TITLE=", client.theMsg.messages[0].message?.listResponseMessage?.title) + let theBody = msg.messages[0].message?.conversation || msg.messages[0].message?.buttonsResponseMessage?.selectedDisplayText || msg.messages[0].message?.listResponseMessage?.title + let from = remoteJid + let body = theBody + let name = pushName + let hasMedia = false + // console.log("fromBody=", from, body) + return {"from":from, "body":body, "name":name, "hasMedia":hasMedia} + } + + +module.exports = { initBot, baileyGenerateImage, makeWASocket, traeVariables } \ No newline at end of file diff --git a/provider/download.js b/provider/download.js new file mode 100644 index 0000000..76e23a0 --- /dev/null +++ b/provider/download.js @@ -0,0 +1,65 @@ +const mimeDep = require('mime-types') +const { tmpdir } = require('os') +const http = require('http') +const https = require('https') +const { rename, createWriteStream } = require('fs') + +/** + * Extrar el mimetype from buffer + * @param {string} response + * @returns + */ +const fileTypeFromFile = async (response) => { + const type = response.headers['content-type'] ?? null + const ext = mimeDep.extension(type) + return { + type, + ext, + } +} + +/** + * Descargar archivo binay en tmp + * @param {*} url + * @returns + */ +const generalDownload = async (url) => { + const handleDownload = () => { + const checkProtocol = url.includes('https:') + const handleHttp = checkProtocol ? https : http + const name = `tmp-${Date.now()}-dat` + const fullPath = `${tmpdir()}/${name}` + const file = createWriteStream(fullPath) + + return new Promise((res, rej) => { + handleHttp.get(url, function (response) { + response.pipe(file) + file.on('finish', async function () { + file.close() + res({ response, fullPath }) + }) + file.on('error', function () { + file.close() + rej(null) + }) + }) + }) + } + + const handleFile = (pathInput, ext) => + new Promise((resolve, reject) => { + const fullPath = `${pathInput}.${ext}` + rename(pathInput, fullPath, (err) => { + if (err) reject(null) + resolve(fullPath) + }) + }) + + const httpResponse = await handleDownload() + const { ext } = await fileTypeFromFile(httpResponse.response) + const getPath = await handleFile(httpResponse.fullPath, ext) + + return getPath +} + +module.exports = { generalDownload } diff --git a/provider/wwebjs.js b/provider/wwebjs.js new file mode 100644 index 0000000..8e7e412 --- /dev/null +++ b/provider/wwebjs.js @@ -0,0 +1,74 @@ +const { Client, LocalAuth, Buttons, List } = require('whatsapp-web.js'); +require('dotenv').config() +const express = require('express'); +const cors = require('cors') +const qrcode = require('qrcode-terminal'); +const app = express(); +app.use(cors()) +app.use(express.json()) +const server = require('http').Server(app) +const port = process.env.PORT || 3000 +const { generateImage, checkEnvFile } = require('../controllers/handle') +const { connectionReady } = require('../controllers/connection') +app.use('/', require('../routes/web')) + +initBot = async () => { + console.log("WaWebJS Init") + client = new Client({ + authStrategy: new LocalAuth(), + puppeteer: { headless: true, args: ['--no-sandbox','--disable-setuid-sandbox'] } + }); + + client.on('qr', qr => generateImage(qr, () => { + qrcode.generate(qr, { small: true }); + console.log(`Ver QR http://localhost:${port}/qr`) + socketEvents.sendQR(qr) + })) + + client.on('ready', (a) => { + connectionReady() + // listenMessage(client) + // listenMessageFromBot() + // socketEvents.sendStatus(client) + }); + + client.on('auth_failure', (e) => { + // console.log(e) + // connectionLost() + }); + + client.on('authenticated', () => { + console.log('AUTHENTICATED'); + }); + + client.initialize(); + + /** + * Verificamos si tienes un gesto de db + */ + + if (process.env.DATABASE === 'mysql') { + mysqlConnection.connect() + } + + server.listen(port, () => { + console.log(`El server esta listo en el puerto ${port}`); + }) + + checkEnvFile(); + return client +} + +/** + * Regresa las variables from, body, name y hasMedia de el objeto del mensaje. + * @param {*} msg + * @returns from, body, name, hasMedia + */ +function traeVariables(msg){ + const { from, body, hasMedia } = msg; + let name = msg?._data?.notifyName + // console.log("fromBody=", msg?._data) + return {"from":from, "body":body, "name":name, "hasMedia":hasMedia} +} + +module.exports = { initBot, traeVariables } \ No newline at end of file