From 1bf5e41bdcacf9860c1e74c579aee12708f635b7 Mon Sep 17 00:00:00 2001
From: linyuchen <lin.yu.chen@hotmail.com>
Date: Wed, 13 Nov 2024 19:27:50 +0800
Subject: [PATCH] =?UTF-8?q?chore:=20=E5=8D=8F=E8=AE=AE=E5=8C=85=E6=94=AF?=
=?UTF-8?q?=E6=8C=81=20macOS?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Moehoo/MoeHoo.darwin.arm64.node | Bin 0 -> 1177560 bytes
.../native/napcat-protocol-packet/index.d.ts | 1 +
.../native/napcat-protocol-packet/index.mjs | 7188 ++++++++++++++++-
3 files changed, 7188 insertions(+), 1 deletion(-)
create mode 100644 src/ntqqapi/native/napcat-protocol-packet/Moehoo/MoeHoo.darwin.arm64.node
diff --git a/src/ntqqapi/native/napcat-protocol-packet/Moehoo/MoeHoo.darwin.arm64.node b/src/ntqqapi/native/napcat-protocol-packet/Moehoo/MoeHoo.darwin.arm64.node
new file mode 100644
index 0000000000000000000000000000000000000000..829749c485892240ea4401b9ae82b889f35a1da5
GIT binary patch
literal 1177560
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
z⪚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�_B
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�<DtE&FD@+pdud9Hl2
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
GSo|Ne<X-Op
literal 0
HcmV?d00001
diff --git a/src/ntqqapi/native/napcat-protocol-packet/index.d.ts b/src/ntqqapi/native/napcat-protocol-packet/index.d.ts
index a9dcd4b..e53be46 100644
--- a/src/ntqqapi/native/napcat-protocol-packet/index.d.ts
+++ b/src/ntqqapi/native/napcat-protocol-packet/index.d.ts
@@ -7,6 +7,7 @@ export declare class NTQQPacketApi {
private readonly wrapperSession;
constructor(wrapperSession: WrapperSession);
get available(): boolean;
+ private checkQQVersion;
private InitSendPacket;
private sendPacket;
private sendOidbPacket;
diff --git a/src/ntqqapi/native/napcat-protocol-packet/index.mjs b/src/ntqqapi/native/napcat-protocol-packet/index.mjs
index 54778a5..2d589a5 100644
--- a/src/ntqqapi/native/napcat-protocol-packet/index.mjs
+++ b/src/ntqqapi/native/napcat-protocol-packet/index.mjs
@@ -1 +1,7187 @@
-import e from"os";import t from"stream";import s from"zlib";import r from"buffer";import i,{createHash as n}from"crypto";import o from"events";import a from"https";import c from"http";import h from"net";import l from"tls";import f,{fileURLToPath as u}from"url";import d,{dirname as p}from"path";import m from"fs";import g,{constants as _}from"node:os";import b from"node:fs";import y from"node:path";class w{capacity;cache;constructor(e){this.capacity=e,this.cache=new Map}get(e){const t=this.cache.get(e);return void 0!==t&&(this.cache.delete(e),this.cache.set(e,t)),t}put(e,t){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this.capacity){const e=this.cache.keys().next().value;void 0!==e&&this.cache.delete(e)}this.cache.set(e,t)}}function k(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function v(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var s=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};s.prototype=t.prototype}else s={};return Object.defineProperty(s,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(s,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})})),s}var S={exports:{}};const E=["nodebuffer","arraybuffer","fragments"],N="undefined"!=typeof Blob;N&&E.push("blob");var T={BINARY_TYPES:E,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:N,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}};const I=v(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));const{EMPTY_BUFFER:O}=T,x=Buffer[Symbol.species];function B(e,t,s,r,i){for(let n=0;n<i;n++)s[r+n]=e[n]^t[3&n]}function P(e,t){for(let s=0;s<e.length;s++)e[s]^=t[3&s]}if(S.exports={concat:function(e,t){if(0===e.length)return O;if(1===e.length)return e[0];const s=Buffer.allocUnsafe(t);let r=0;for(let t=0;t<e.length;t++){const i=e[t];s.set(i,r),r+=i.length}return r<t?new x(s.buffer,s.byteOffset,r):s},mask:B,toArrayBuffer:function(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)},toBuffer:function e(t){if(e.readOnly=!0,Buffer.isBuffer(t))return t;let s;return t instanceof ArrayBuffer?s=new x(t):ArrayBuffer.isView(t)?s=new x(t.buffer,t.byteOffset,t.byteLength):(s=Buffer.from(t),e.readOnly=!1),s},unmask:P},!process.env.WS_NO_BUFFER_UTIL)try{const e=I;S.exports.mask=function(t,s,r,i,n){n<48?B(t,s,r,i,n):e.mask(t,s,r,i,n)},S.exports.unmask=function(t,s){t.length<32?P(t,s):e.unmask(t,s)}}catch(e){}var C=S.exports;const L=Symbol("kDone"),U=Symbol("kRun");const R=s,A=C,D=class{constructor(e){this[L]=()=>{this.pending--,this[U]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[U]()}[U](){if(this.pending!==this.concurrency&&this.jobs.length){const e=this.jobs.shift();this.pending++,e(this[L])}}},{kStatusCode:F}=T,V=Buffer[Symbol.species],j=Buffer.from([0,0,255,255]),M=Symbol("permessage-deflate"),W=Symbol("total-length"),$=Symbol("callback"),G=Symbol("buffers"),Q=Symbol("error");let q;var X=class{constructor(e,t,s){if(this._maxPayload=0|s,this._options=e||{},this._threshold=void 0!==this._options.threshold?this._options.threshold:1024,this._isServer=!!t,this._deflate=null,this._inflate=null,this.params=null,!q){const e=void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10;q=new D(e)}}static get extensionName(){return"permessage-deflate"}offer(){const e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:null==this._options.clientMaxWindowBits&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){const e=this._deflate[$];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){const t=this._options,s=e.find((e=>!(!1===t.serverNoContextTakeover&&e.server_no_context_takeover||e.server_max_window_bits&&(!1===t.serverMaxWindowBits||"number"==typeof t.serverMaxWindowBits&&t.serverMaxWindowBits>e.server_max_window_bits)||"number"==typeof t.clientMaxWindowBits&&!e.client_max_window_bits)));if(!s)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(s.server_no_context_takeover=!0),t.clientNoContextTakeover&&(s.client_no_context_takeover=!0),"number"==typeof t.serverMaxWindowBits&&(s.server_max_window_bits=t.serverMaxWindowBits),"number"==typeof t.clientMaxWindowBits?s.client_max_window_bits=t.clientMaxWindowBits:!0!==s.client_max_window_bits&&!1!==t.clientMaxWindowBits||delete s.client_max_window_bits,s}acceptAsClient(e){const t=e[0];if(!1===this._options.clientNoContextTakeover&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(t.client_max_window_bits){if(!1===this._options.clientMaxWindowBits||"number"==typeof this._options.clientMaxWindowBits&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"')}else"number"==typeof this._options.clientMaxWindowBits&&(t.client_max_window_bits=this._options.clientMaxWindowBits);return t}normalizeParams(e){return e.forEach((e=>{Object.keys(e).forEach((t=>{let s=e[t];if(s.length>1)throw new Error(`Parameter "${t}" must have only a single value`);if(s=s[0],"client_max_window_bits"===t){if(!0!==s){const e=+s;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${s}`);s=e}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${t}": ${s}`)}else if("server_max_window_bits"===t){const e=+s;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${s}`);s=e}else{if("client_no_context_takeover"!==t&&"server_no_context_takeover"!==t)throw new Error(`Unknown parameter "${t}"`);if(!0!==s)throw new TypeError(`Invalid value for parameter "${t}": ${s}`)}e[t]=s}))})),e}decompress(e,t,s){q.add((r=>{this._decompress(e,t,((e,t)=>{r(),s(e,t)}))}))}compress(e,t,s){q.add((r=>{this._compress(e,t,((e,t)=>{r(),s(e,t)}))}))}_decompress(e,t,s){const r=this._isServer?"client":"server";if(!this._inflate){const e=`${r}_max_window_bits`,t="number"!=typeof this.params[e]?R.Z_DEFAULT_WINDOWBITS:this.params[e];this._inflate=R.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[M]=this,this._inflate[W]=0,this._inflate[G]=[],this._inflate.on("error",Z),this._inflate.on("data",Y)}this._inflate[$]=s,this._inflate.write(e),t&&this._inflate.write(j),this._inflate.flush((()=>{const e=this._inflate[Q];if(e)return this._inflate.close(),this._inflate=null,void s(e);const i=A.concat(this._inflate[G],this._inflate[W]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[W]=0,this._inflate[G]=[],t&&this.params[`${r}_no_context_takeover`]&&this._inflate.reset()),s(null,i)}))}_compress(e,t,s){const r=this._isServer?"server":"client";if(!this._deflate){const e=`${r}_max_window_bits`,t="number"!=typeof this.params[e]?R.Z_DEFAULT_WINDOWBITS:this.params[e];this._deflate=R.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[W]=0,this._deflate[G]=[],this._deflate.on("data",K)}this._deflate[$]=s,this._deflate.write(e),this._deflate.flush(R.Z_SYNC_FLUSH,(()=>{if(!this._deflate)return;let e=A.concat(this._deflate[G],this._deflate[W]);t&&(e=new V(e.buffer,e.byteOffset,e.length-4)),this._deflate[$]=null,this._deflate[W]=0,this._deflate[G]=[],t&&this.params[`${r}_no_context_takeover`]&&this._deflate.reset(),s(null,e)}))}};function K(e){this[G].push(e),this[W]+=e.length}function Y(e){this[W]+=e.length,this[M]._maxPayload<1||this[W]<=this[M]._maxPayload?this[G].push(e):(this[Q]=new RangeError("Max payload size exceeded"),this[Q].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[Q][F]=1009,this.removeListener("data",Y),this.reset())}function Z(e){this[M]._inflate=null,e[F]=1007,this[$](e)}var J={exports:{}};const z=v(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));const{isUtf8:H}=r,{hasBlob:ee}=T;function te(e){const t=e.length;let s=0;for(;s<t;)if(128&e[s])if(192==(224&e[s])){if(s+1===t||128!=(192&e[s+1])||192==(254&e[s]))return!1;s+=2}else if(224==(240&e[s])){if(s+2>=t||128!=(192&e[s+1])||128!=(192&e[s+2])||224===e[s]&&128==(224&e[s+1])||237===e[s]&&160==(224&e[s+1]))return!1;s+=3}else{if(240!=(248&e[s]))return!1;if(s+3>=t||128!=(192&e[s+1])||128!=(192&e[s+2])||128!=(192&e[s+3])||240===e[s]&&128==(240&e[s+1])||244===e[s]&&e[s+1]>143||e[s]>244)return!1;s+=4}else s++;return!0}if(J.exports={isBlob:function(e){return ee&&"object"==typeof e&&"function"==typeof e.arrayBuffer&&"string"==typeof e.type&&"function"==typeof e.stream&&("Blob"===e[Symbol.toStringTag]||"File"===e[Symbol.toStringTag])},isValidStatusCode:function(e){return e>=1e3&&e<=1014&&1004!==e&&1005!==e&&1006!==e||e>=3e3&&e<=4999},isValidUTF8:te,tokenChars:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0]},H)J.exports.isValidUTF8=function(e){return e.length<24?te(e):H(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{const e=z;J.exports.isValidUTF8=function(t){return t.length<32?te(t):e(t)}}catch(e){}var se=J.exports;const{Writable:re}=t,ie=X,{BINARY_TYPES:ne,EMPTY_BUFFER:oe,kStatusCode:ae,kWebSocket:ce}=T,{concat:he,toArrayBuffer:le,unmask:fe}=C,{isValidStatusCode:ue,isValidUTF8:de}=se,pe=Buffer[Symbol.species];var me=class extends re{constructor(e={}){super(),this._allowSynchronousEvents=void 0===e.allowSynchronousEvents||e.allowSynchronousEvents,this._binaryType=e.binaryType||ne[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=0|e.maxPayload,this._skipUTF8Validation=!!e.skipUTF8Validation,this[ce]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(e,t,s){if(8===this._opcode&&0==this._state)return s();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(s)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){const t=this._buffers[0];return this._buffers[0]=new pe(t.buffer,t.byteOffset+e,t.length-e),new pe(t.buffer,t.byteOffset,e)}const t=Buffer.allocUnsafe(e);do{const s=this._buffers[0],r=t.length-e;e>=s.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(s.buffer,s.byteOffset,e),r),this._buffers[0]=new pe(s.buffer,s.byteOffset+e,s.length-e)),e-=s.length}while(e>0);return t}startLoop(e){this._loop=!0;do{switch(this._state){case 0:this.getInfo(e);break;case 1:this.getPayloadLength16(e);break;case 2:this.getPayloadLength64(e);break;case 3:this.getMask();break;case 4:this.getData(e);break;case 5:case 6:return void(this._loop=!1)}}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2)return void(this._loop=!1);const t=this.consume(2);if(48&t[0]){return void e(this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3"))}const s=!(64&~t[0]);if(!s||this._extensions[ie.extensionName]){if(this._fin=!(128&~t[0]),this._opcode=15&t[0],this._payloadLength=127&t[1],0===this._opcode){if(s){return void e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"))}if(!this._fragmented){return void e(this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE"))}this._opcode=this._fragmented}else if(1===this._opcode||2===this._opcode){if(this._fragmented){return void e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"))}this._compressed=s}else{if(!(this._opcode>7&&this._opcode<11)){return void e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"))}if(!this._fin){return void e(this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN"))}if(s){return void e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"))}if(this._payloadLength>125||8===this._opcode&&1===this._payloadLength){return void e(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"))}}if(this._fin||this._fragmented||(this._fragmented=this._opcode),this._masked=!(128&~t[1]),this._isServer){if(!this._masked){return void e(this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK"))}}else if(this._masked){return void e(this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK"))}126===this._payloadLength?this._state=1:127===this._payloadLength?this._state=2:this.haveLength(e)}else{e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"))}}getPayloadLength16(e){this._bufferedBytes<2?this._loop=!1:(this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e))}getPayloadLength64(e){if(this._bufferedBytes<8)return void(this._loop=!1);const t=this.consume(8),s=t.readUInt32BE(0);if(s>Math.pow(2,21)-1){e(this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH"))}else this._payloadLength=s*Math.pow(2,32)+t.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){e(this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"))}else this._masked?this._state=3:this._state=4}getMask(){this._bufferedBytes<4?this._loop=!1:(this._mask=this.consume(4),this._state=4)}getData(e){let t=oe;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength)return void(this._loop=!1);t=this.consume(this._payloadLength),this._masked&&this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3]&&fe(t,this._mask)}if(this._opcode>7)this.controlMessage(t,e);else{if(this._compressed)return this._state=5,void this.decompress(t,e);t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}}decompress(e,t){this._extensions[ie.extensionName].decompress(e,this._fin,((e,s)=>{if(e)return t(e);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0){const e=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");return void t(e)}this._fragments.push(s)}this.dataMessage(t),0===this._state&&this.startLoop(t)}))}dataMessage(e){if(!this._fin)return void(this._state=0);const t=this._messageLength,s=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],2===this._opcode){let r;r="nodebuffer"===this._binaryType?he(s,t):"arraybuffer"===this._binaryType?le(he(s,t)):"blob"===this._binaryType?new Blob(s):s,this._allowSynchronousEvents?(this.emit("message",r,!0),this._state=0):(this._state=6,setImmediate((()=>{this.emit("message",r,!0),this._state=0,this.startLoop(e)})))}else{const r=he(s,t);if(!this._skipUTF8Validation&&!de(r)){const t=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");return void e(t)}5===this._state||this._allowSynchronousEvents?(this.emit("message",r,!1),this._state=0):(this._state=6,setImmediate((()=>{this.emit("message",r,!1),this._state=0,this.startLoop(e)})))}}controlMessage(e,t){if(8!==this._opcode)this._allowSynchronousEvents?(this.emit(9===this._opcode?"ping":"pong",e),this._state=0):(this._state=6,setImmediate((()=>{this.emit(9===this._opcode?"ping":"pong",e),this._state=0,this.startLoop(t)})));else{if(0===e.length)this._loop=!1,this.emit("conclude",1005,oe),this.end();else{const s=e.readUInt16BE(0);if(!ue(s)){const e=this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");return void t(e)}const r=new pe(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!de(r)){const e=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");return void t(e)}this._loop=!1,this.emit("conclude",s,r),this.end()}this._state=0}}createError(e,t,s,r,i){this._loop=!1,this._errored=!0;const n=new e(s?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(n,this.createError),n.code=i,n[ae]=r,n}};const{randomFillSync:ge}=i,_e=X,{EMPTY_BUFFER:be,kWebSocket:ye,NOOP:we}=T,{isBlob:ke,isValidStatusCode:ve}=se,{mask:Se,toBuffer:Ee}=C,Ne=Symbol("kByteLength"),Te=Buffer.alloc(4),Ie=8192;let Oe,xe=Ie;var Be=class e{constructor(e,t,s){this._extensions=t||{},s&&(this._generateMask=s,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=we,this[ye]=void 0}static frame(e,t){let s,r,i=!1,n=2,o=!1;t.mask&&(s=t.maskBuffer||Te,t.generateMask?t.generateMask(s):(xe===Ie&&(void 0===Oe&&(Oe=Buffer.alloc(Ie)),ge(Oe,0,Ie),xe=0),s[0]=Oe[xe++],s[1]=Oe[xe++],s[2]=Oe[xe++],s[3]=Oe[xe++]),o=!(s[0]|s[1]|s[2]|s[3]),n=6),"string"==typeof e?r=t.mask&&!o||void 0===t[Ne]?(e=Buffer.from(e)).length:t[Ne]:(r=e.length,i=t.mask&&t.readOnly&&!o);let a=r;r>=65536?(n+=8,a=127):r>125&&(n+=2,a=126);const c=Buffer.allocUnsafe(i?r+n:n);return c[0]=t.fin?128|t.opcode:t.opcode,t.rsv1&&(c[0]|=64),c[1]=a,126===a?c.writeUInt16BE(r,2):127===a&&(c[2]=c[3]=0,c.writeUIntBE(r,4,6)),t.mask?(c[1]|=128,c[n-4]=s[0],c[n-3]=s[1],c[n-2]=s[2],c[n-1]=s[3],o?[c,e]:i?(Se(e,s,c,n,r),[c]):(Se(e,s,e,0,r),[c,e])):[c,e]}close(t,s,r,i){let n;if(void 0===t)n=be;else{if("number"!=typeof t||!ve(t))throw new TypeError("First argument must be a valid error code number");if(void 0!==s&&s.length){const e=Buffer.byteLength(s);if(e>123)throw new RangeError("The message must not be greater than 123 bytes");n=Buffer.allocUnsafe(2+e),n.writeUInt16BE(t,0),"string"==typeof s?n.write(s,2):n.set(s,2)}else n=Buffer.allocUnsafe(2),n.writeUInt16BE(t,0)}const o={[Ne]:n.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};0!==this._state?this.enqueue([this.dispatch,n,!1,o,i]):this.sendFrame(e.frame(n,o),i)}ping(t,s,r){let i,n;if("string"==typeof t?(i=Buffer.byteLength(t),n=!1):ke(t)?(i=t.size,n=!1):(i=(t=Ee(t)).length,n=Ee.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");const o={[Ne]:i,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:9,readOnly:n,rsv1:!1};ke(t)?0!==this._state?this.enqueue([this.getBlobData,t,!1,o,r]):this.getBlobData(t,!1,o,r):0!==this._state?this.enqueue([this.dispatch,t,!1,o,r]):this.sendFrame(e.frame(t,o),r)}pong(t,s,r){let i,n;if("string"==typeof t?(i=Buffer.byteLength(t),n=!1):ke(t)?(i=t.size,n=!1):(i=(t=Ee(t)).length,n=Ee.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");const o={[Ne]:i,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:10,readOnly:n,rsv1:!1};ke(t)?0!==this._state?this.enqueue([this.getBlobData,t,!1,o,r]):this.getBlobData(t,!1,o,r):0!==this._state?this.enqueue([this.dispatch,t,!1,o,r]):this.sendFrame(e.frame(t,o),r)}send(e,t,s){const r=this._extensions[_e.extensionName];let i,n,o=t.binary?2:1,a=t.compress;"string"==typeof e?(i=Buffer.byteLength(e),n=!1):ke(e)?(i=e.size,n=!1):(i=(e=Ee(e)).length,n=Ee.readOnly),this._firstFragment?(this._firstFragment=!1,a&&r&&r.params[r._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(a=i>=r._threshold),this._compress=a):(a=!1,o=0),t.fin&&(this._firstFragment=!0);const c={[Ne]:i,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:o,readOnly:n,rsv1:a};ke(e)?0!==this._state?this.enqueue([this.getBlobData,e,this._compress,c,s]):this.getBlobData(e,this._compress,c,s):0!==this._state?this.enqueue([this.dispatch,e,this._compress,c,s]):this.dispatch(e,this._compress,c,s)}getBlobData(t,s,r,i){this._bufferedBytes+=r[Ne],this._state=2,t.arrayBuffer().then((t=>{if(this._socket.destroyed){const e=new Error("The socket was closed while the blob was being read");return void process.nextTick(Pe,this,e,i)}this._bufferedBytes-=r[Ne];const n=Ee(t);s?this.dispatch(n,s,r,i):(this._state=0,this.sendFrame(e.frame(n,r),i),this.dequeue())})).catch((e=>{process.nextTick(Ce,this,e,i)}))}dispatch(t,s,r,i){if(!s)return void this.sendFrame(e.frame(t,r),i);const n=this._extensions[_e.extensionName];this._bufferedBytes+=r[Ne],this._state=1,n.compress(t,r.fin,((t,s)=>{if(this._socket.destroyed){Pe(this,new Error("The socket was closed while data was being compressed"),i)}else this._bufferedBytes-=r[Ne],this._state=0,r.readOnly=!1,this.sendFrame(e.frame(s,r),i),this.dequeue()}))}dequeue(){for(;0===this._state&&this._queue.length;){const e=this._queue.shift();this._bufferedBytes-=e[3][Ne],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][Ne],this._queue.push(e)}sendFrame(e,t){2===e.length?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}};function Pe(e,t,s){"function"==typeof s&&s(t);for(let s=0;s<e._queue.length;s++){const r=e._queue[s],i=r[r.length-1];"function"==typeof i&&i(t)}}function Ce(e,t,s){Pe(e,t,s),e.onerror(t)}const{kForOnEventAttribute:Le,kListener:Ue}=T,Re=Symbol("kCode"),Ae=Symbol("kData"),De=Symbol("kError"),Fe=Symbol("kMessage"),Ve=Symbol("kReason"),je=Symbol("kTarget"),Me=Symbol("kType"),We=Symbol("kWasClean");class $e{constructor(e){this[je]=null,this[Me]=e}get target(){return this[je]}get type(){return this[Me]}}Object.defineProperty($e.prototype,"target",{enumerable:!0}),Object.defineProperty($e.prototype,"type",{enumerable:!0});class Ge extends $e{constructor(e,t={}){super(e),this[Re]=void 0===t.code?0:t.code,this[Ve]=void 0===t.reason?"":t.reason,this[We]=void 0!==t.wasClean&&t.wasClean}get code(){return this[Re]}get reason(){return this[Ve]}get wasClean(){return this[We]}}Object.defineProperty(Ge.prototype,"code",{enumerable:!0}),Object.defineProperty(Ge.prototype,"reason",{enumerable:!0}),Object.defineProperty(Ge.prototype,"wasClean",{enumerable:!0});class Qe extends $e{constructor(e,t={}){super(e),this[De]=void 0===t.error?null:t.error,this[Fe]=void 0===t.message?"":t.message}get error(){return this[De]}get message(){return this[Fe]}}Object.defineProperty(Qe.prototype,"error",{enumerable:!0}),Object.defineProperty(Qe.prototype,"message",{enumerable:!0});class qe extends $e{constructor(e,t={}){super(e),this[Ae]=void 0===t.data?null:t.data}get data(){return this[Ae]}}Object.defineProperty(qe.prototype,"data",{enumerable:!0});const Xe={addEventListener(e,t,s={}){for(const r of this.listeners(e))if(!s[Le]&&r[Ue]===t&&!r[Le])return;let r;if("message"===e)r=function(e,s){const r=new qe("message",{data:s?e:e.toString()});r[je]=this,Ye(t,this,r)};else if("close"===e)r=function(e,s){const r=new Ge("close",{code:e,reason:s.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[je]=this,Ye(t,this,r)};else if("error"===e)r=function(e){const s=new Qe("error",{error:e,message:e.message});s[je]=this,Ye(t,this,s)};else{if("open"!==e)return;r=function(){const e=new $e("open");e[je]=this,Ye(t,this,e)}}r[Le]=!!s[Le],r[Ue]=t,s.once?this.once(e,r):this.on(e,r)},removeEventListener(e,t){for(const s of this.listeners(e))if(s[Ue]===t&&!s[Le]){this.removeListener(e,s);break}}};var Ke={CloseEvent:Ge,ErrorEvent:Qe,Event:$e,EventTarget:Xe,MessageEvent:qe};function Ye(e,t,s){"object"==typeof e&&e.handleEvent?e.handleEvent.call(e,s):e.call(t,s)}const{tokenChars:Ze}=se;function Je(e,t,s){void 0===e[t]?e[t]=[s]:e[t].push(s)}var ze={format:function(e){return Object.keys(e).map((t=>{let s=e[t];return Array.isArray(s)||(s=[s]),s.map((e=>[t].concat(Object.keys(e).map((t=>{let s=e[t];return Array.isArray(s)||(s=[s]),s.map((e=>!0===e?t:`${t}=${e}`)).join("; ")}))).join("; "))).join(", ")})).join(", ")},parse:function(e){const t=Object.create(null);let s,r,i=Object.create(null),n=!1,o=!1,a=!1,c=-1,h=-1,l=-1,f=0;for(;f<e.length;f++)if(h=e.charCodeAt(f),void 0===s)if(-1===l&&1===Ze[h])-1===c&&(c=f);else if(0===f||32!==h&&9!==h){if(59!==h&&44!==h)throw new SyntaxError(`Unexpected character at index ${f}`);{if(-1===c)throw new SyntaxError(`Unexpected character at index ${f}`);-1===l&&(l=f);const r=e.slice(c,l);44===h?(Je(t,r,i),i=Object.create(null)):s=r,c=l=-1}}else-1===l&&-1!==c&&(l=f);else if(void 0===r)if(-1===l&&1===Ze[h])-1===c&&(c=f);else if(32===h||9===h)-1===l&&-1!==c&&(l=f);else if(59===h||44===h){if(-1===c)throw new SyntaxError(`Unexpected character at index ${f}`);-1===l&&(l=f),Je(i,e.slice(c,l),!0),44===h&&(Je(t,s,i),i=Object.create(null),s=void 0),c=l=-1}else{if(61!==h||-1===c||-1!==l)throw new SyntaxError(`Unexpected character at index ${f}`);r=e.slice(c,f),c=l=-1}else if(o){if(1!==Ze[h])throw new SyntaxError(`Unexpected character at index ${f}`);-1===c?c=f:n||(n=!0),o=!1}else if(a)if(1===Ze[h])-1===c&&(c=f);else if(34===h&&-1!==c)a=!1,l=f;else{if(92!==h)throw new SyntaxError(`Unexpected character at index ${f}`);o=!0}else if(34===h&&61===e.charCodeAt(f-1))a=!0;else if(-1===l&&1===Ze[h])-1===c&&(c=f);else if(-1===c||32!==h&&9!==h){if(59!==h&&44!==h)throw new SyntaxError(`Unexpected character at index ${f}`);{if(-1===c)throw new SyntaxError(`Unexpected character at index ${f}`);-1===l&&(l=f);let o=e.slice(c,l);n&&(o=o.replace(/\\/g,""),n=!1),Je(i,r,o),44===h&&(Je(t,s,i),i=Object.create(null),s=void 0),r=void 0,c=l=-1}}else-1===l&&(l=f);if(-1===c||a||32===h||9===h)throw new SyntaxError("Unexpected end of input");-1===l&&(l=f);const u=e.slice(c,l);return void 0===s?Je(t,u,i):(void 0===r?Je(i,u,!0):Je(i,r,n?u.replace(/\\/g,""):u),Je(t,s,i)),t}};const He=o,et=a,tt=c,st=h,rt=l,{randomBytes:it,createHash:nt}=i,{URL:ot}=f,at=X,ct=me,ht=Be,{isBlob:lt}=se,{BINARY_TYPES:ft,EMPTY_BUFFER:ut,GUID:dt,kForOnEventAttribute:pt,kListener:mt,kStatusCode:gt,kWebSocket:_t,NOOP:bt}=T,{EventTarget:{addEventListener:yt,removeEventListener:wt}}=Ke,{format:kt,parse:vt}=ze,{toBuffer:St}=C,Et=Symbol("kAborted"),Nt=[8,13],Tt=["CONNECTING","OPEN","CLOSING","CLOSED"],It=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;class Ot extends He{constructor(e,t,s){super(),this._binaryType=ft[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=ut,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=Ot.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,null!==e?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,void 0===t?t=[]:Array.isArray(t)||("object"==typeof t&&null!==t?(s=t,t=[]):t=[t]),xt(this,e,t,s)):(this._autoPong=s.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){ft.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,t,s){const r=new ct({allowSynchronousEvents:s.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation}),i=new ht(e,this._extensions,s.generateMask);this._receiver=r,this._sender=i,this._socket=e,r[_t]=this,i[_t]=this,e[_t]=this,r.on("conclude",Rt),r.on("drain",At),r.on("error",Dt),r.on("message",Vt),r.on("ping",jt),r.on("pong",Mt),i.onerror=$t,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),t.length>0&&e.unshift(t),e.on("close",Qt),e.on("data",qt),e.on("end",Xt),e.on("error",Kt),this._readyState=Ot.OPEN,this.emit("open")}emitClose(){if(!this._socket)return this._readyState=Ot.CLOSED,void this.emit("close",this._closeCode,this._closeMessage);this._extensions[at.extensionName]&&this._extensions[at.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=Ot.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,t){if(this.readyState!==Ot.CLOSED)if(this.readyState!==Ot.CONNECTING)this.readyState!==Ot.CLOSING?(this._readyState=Ot.CLOSING,this._sender.close(e,t,!this._isServer,(e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())})),Gt(this)):this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();else{const e="WebSocket was closed before the connection was established";Lt(this,this._req,e)}}pause(){this.readyState!==Ot.CONNECTING&&this.readyState!==Ot.CLOSED&&(this._paused=!0,this._socket.pause())}ping(e,t,s){if(this.readyState===Ot.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(s=e,e=t=void 0):"function"==typeof t&&(s=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===Ot.OPEN?(void 0===t&&(t=!this._isServer),this._sender.ping(e||ut,t,s)):Ut(this,e,s)}pong(e,t,s){if(this.readyState===Ot.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(s=e,e=t=void 0):"function"==typeof t&&(s=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===Ot.OPEN?(void 0===t&&(t=!this._isServer),this._sender.pong(e||ut,t,s)):Ut(this,e,s)}resume(){this.readyState!==Ot.CONNECTING&&this.readyState!==Ot.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,t,s){if(this.readyState===Ot.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof t&&(s=t,t={}),"number"==typeof e&&(e=e.toString()),this.readyState!==Ot.OPEN)return void Ut(this,e,s);const r={binary:"string"!=typeof e,mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[at.extensionName]||(r.compress=!1),this._sender.send(e||ut,r,s)}terminate(){if(this.readyState!==Ot.CLOSED)if(this.readyState!==Ot.CONNECTING)this._socket&&(this._readyState=Ot.CLOSING,this._socket.destroy());else{const e="WebSocket was closed before the connection was established";Lt(this,this._req,e)}}}function xt(e,t,s,r){const i={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:Nt[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(e._autoPong=i.autoPong,!Nt.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${Nt.join(", ")})`);let n;if(t instanceof ot)n=t;else try{n=new ot(t)}catch(e){throw new SyntaxError(`Invalid URL: ${t}`)}"http:"===n.protocol?n.protocol="ws:":"https:"===n.protocol&&(n.protocol="wss:"),e._url=n.href;const o="wss:"===n.protocol,a="ws+unix:"===n.protocol;let c;if("ws:"===n.protocol||o||a?a&&!n.pathname?c="The URL's pathname is empty":n.hash&&(c="The URL contains a fragment identifier"):c='The URL\'s protocol must be one of "ws:", "wss:", "http:", "https", or "ws+unix:"',c){const t=new SyntaxError(c);if(0===e._redirects)throw t;return void Bt(e,t)}const h=o?443:80,l=it(16).toString("base64"),f=o?et.request:tt.request,u=new Set;let d,p;if(i.createConnection=i.createConnection||(o?Ct:Pt),i.defaultPort=i.defaultPort||h,i.port=n.port||h,i.host=n.hostname.startsWith("[")?n.hostname.slice(1,-1):n.hostname,i.headers={...i.headers,"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":l,Connection:"Upgrade",Upgrade:"websocket"},i.path=n.pathname+n.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(d=new at(!0!==i.perMessageDeflate?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=kt({[at.extensionName]:d.offer()})),s.length){for(const e of s){if("string"!=typeof e||!It.test(e)||u.has(e))throw new SyntaxError("An invalid or duplicated subprotocol was specified");u.add(e)}i.headers["Sec-WebSocket-Protocol"]=s.join(",")}if(i.origin&&(i.protocolVersion<13?i.headers["Sec-WebSocket-Origin"]=i.origin:i.headers.Origin=i.origin),(n.username||n.password)&&(i.auth=`${n.username}:${n.password}`),a){const e=i.path.split(":");i.socketPath=e[0],i.path=e[1]}if(i.followRedirects){if(0===e._redirects){e._originalIpc=a,e._originalSecure=o,e._originalHostOrSocketPath=a?i.socketPath:n.host;const t=r&&r.headers;if(r={...r,headers:{}},t)for(const[e,s]of Object.entries(t))r.headers[e.toLowerCase()]=s}else if(0===e.listenerCount("redirect")){const t=a?!!e._originalIpc&&i.socketPath===e._originalHostOrSocketPath:!e._originalIpc&&n.host===e._originalHostOrSocketPath;(!t||e._originalSecure&&!o)&&(delete i.headers.authorization,delete i.headers.cookie,t||delete i.headers.host,i.auth=void 0)}i.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(i.auth).toString("base64")),p=e._req=f(i),e._redirects&&e.emit("redirect",e.url,p)}else p=e._req=f(i);i.timeout&&p.on("timeout",(()=>{Lt(e,p,"Opening handshake has timed out")})),p.on("error",(t=>{null===p||p[Et]||(p=e._req=null,Bt(e,t))})),p.on("response",(n=>{const o=n.headers.location,a=n.statusCode;if(o&&i.followRedirects&&a>=300&&a<400){if(++e._redirects>i.maxRedirects)return void Lt(e,p,"Maximum redirects exceeded");let n;p.abort();try{n=new ot(o,t)}catch(t){const s=new SyntaxError(`Invalid URL: ${o}`);return void Bt(e,s)}xt(e,n,s,r)}else e.emit("unexpected-response",p,n)||Lt(e,p,`Unexpected server response: ${n.statusCode}`)})),p.on("upgrade",((t,s,r)=>{if(e.emit("upgrade",t),e.readyState!==Ot.CONNECTING)return;p=e._req=null;const n=t.headers.upgrade;if(void 0===n||"websocket"!==n.toLowerCase())return void Lt(e,s,"Invalid Upgrade header");const o=nt("sha1").update(l+dt).digest("base64");if(t.headers["sec-websocket-accept"]!==o)return void Lt(e,s,"Invalid Sec-WebSocket-Accept header");const a=t.headers["sec-websocket-protocol"];let c;if(void 0!==a?u.size?u.has(a)||(c="Server sent an invalid subprotocol"):c="Server sent a subprotocol but none was requested":u.size&&(c="Server sent no subprotocol"),c)return void Lt(e,s,c);a&&(e._protocol=a);const h=t.headers["sec-websocket-extensions"];if(void 0!==h){if(!d){return void Lt(e,s,"Server sent a Sec-WebSocket-Extensions header but no extension was requested")}let t;try{t=vt(h)}catch(t){return void Lt(e,s,"Invalid Sec-WebSocket-Extensions header")}const r=Object.keys(t);if(1!==r.length||r[0]!==at.extensionName){return void Lt(e,s,"Server indicated an extension that was not requested")}try{d.accept(t[at.extensionName])}catch(t){return void Lt(e,s,"Invalid Sec-WebSocket-Extensions header")}e._extensions[at.extensionName]=d}e.setSocket(s,r,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})})),i.finishRequest?i.finishRequest(p,e):p.end()}function Bt(e,t){e._readyState=Ot.CLOSING,e._errorEmitted=!0,e.emit("error",t),e.emitClose()}function Pt(e){return e.path=e.socketPath,st.connect(e)}function Ct(e){return e.path=void 0,e.servername||""===e.servername||(e.servername=st.isIP(e.host)?"":e.host),rt.connect(e)}function Lt(e,t,s){e._readyState=Ot.CLOSING;const r=new Error(s);Error.captureStackTrace(r,Lt),t.setHeader?(t[Et]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(Bt,e,r)):(t.destroy(r),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function Ut(e,t,s){if(t){const s=lt(t)?t.size:St(t).length;e._socket?e._sender._bufferedBytes+=s:e._bufferedAmount+=s}if(s){const t=new Error(`WebSocket is not open: readyState ${e.readyState} (${Tt[e.readyState]})`);process.nextTick(s,t)}}function Rt(e,t){const s=this[_t];s._closeFrameReceived=!0,s._closeMessage=t,s._closeCode=e,void 0!==s._socket[_t]&&(s._socket.removeListener("data",qt),process.nextTick(Wt,s._socket),1005===e?s.close():s.close(e,t))}function At(){const e=this[_t];e.isPaused||e._socket.resume()}function Dt(e){const t=this[_t];void 0!==t._socket[_t]&&(t._socket.removeListener("data",qt),process.nextTick(Wt,t._socket),t.close(e[gt])),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e))}function Ft(){this[_t].emitClose()}function Vt(e,t){this[_t].emit("message",e,t)}function jt(e){const t=this[_t];t._autoPong&&t.pong(e,!this._isServer,bt),t.emit("ping",e)}function Mt(e){this[_t].emit("pong",e)}function Wt(e){e.resume()}function $t(e){const t=this[_t];t.readyState!==Ot.CLOSED&&(t.readyState===Ot.OPEN&&(t._readyState=Ot.CLOSING,Gt(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e)))}function Gt(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),3e4)}function Qt(){const e=this[_t];let t;this.removeListener("close",Qt),this.removeListener("data",qt),this.removeListener("end",Xt),e._readyState=Ot.CLOSING,this._readableState.endEmitted||e._closeFrameReceived||e._receiver._writableState.errorEmitted||null===(t=e._socket.read())||e._receiver.write(t),e._receiver.end(),this[_t]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",Ft),e._receiver.on("finish",Ft))}function qt(e){this[_t]._receiver.write(e)||this.pause()}function Xt(){const e=this[_t];e._readyState=Ot.CLOSING,e._receiver.end(),this.end()}function Kt(){const e=this[_t];this.removeListener("error",Kt),this.on("error",bt),e&&(e._readyState=Ot.CLOSING,this.destroy())}Object.defineProperty(Ot,"CONNECTING",{enumerable:!0,value:Tt.indexOf("CONNECTING")}),Object.defineProperty(Ot.prototype,"CONNECTING",{enumerable:!0,value:Tt.indexOf("CONNECTING")}),Object.defineProperty(Ot,"OPEN",{enumerable:!0,value:Tt.indexOf("OPEN")}),Object.defineProperty(Ot.prototype,"OPEN",{enumerable:!0,value:Tt.indexOf("OPEN")}),Object.defineProperty(Ot,"CLOSING",{enumerable:!0,value:Tt.indexOf("CLOSING")}),Object.defineProperty(Ot.prototype,"CLOSING",{enumerable:!0,value:Tt.indexOf("CLOSING")}),Object.defineProperty(Ot,"CLOSED",{enumerable:!0,value:Tt.indexOf("CLOSED")}),Object.defineProperty(Ot.prototype,"CLOSED",{enumerable:!0,value:Tt.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach((e=>{Object.defineProperty(Ot.prototype,e,{enumerable:!0})})),["open","error","close","message"].forEach((e=>{Object.defineProperty(Ot.prototype,`on${e}`,{enumerable:!0,get(){for(const t of this.listeners(e))if(t[pt])return t[mt];return null},set(t){for(const t of this.listeners(e))if(t[pt]){this.removeListener(e,t);break}"function"==typeof t&&this.addEventListener(e,t,{[pt]:!0})}})})),Ot.prototype.addEventListener=yt,Ot.prototype.removeEventListener=wt;const Yt=k(Ot);class Zt{cb=new w(500);isAvailable=!1;wrapperSession;constructor(e){this.wrapperSession=e}randText(e){let t="";const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";for(let r=0;r<e;r++)t+=s.charAt(Math.floor(62*Math.random()));return t}get available(){return this.isAvailable}async registerCallback(e,t,s){this.cb.put(n("md5").update(e).digest("hex")+t,s)}async sendCommand(e,t,s,r=!1,i=2e4,n=()=>{}){return new Promise(((o,a)=>{const c=setTimeout((()=>{a(new Error(`sendCommand timed out after ${i} ms for ${e} with trace_id ${s}`))}),i);this.registerCallback(s,"send",(async e=>{n(e),r||(clearTimeout(c),o(e))})),r&&this.registerCallback(s,"recv",(async e=>{clearTimeout(c),o(e)})),this.sendCommandImpl(e,t,s)}))}async sendPacket(e,t,s=!1){return new Promise(((r,n)=>{if(!this.available)return void console.error("NapCat.Packet 未初始化!");const o=i.createHash("md5").update(t).digest("hex"),a=(this.randText(4)+o+t).slice(0,t.length/2);this.sendCommand(e,t,a,s,2e4,(async()=>{await this.wrapperSession.getMsgService().sendSsoCmdReqByContend(e,a)})).then((e=>r(e))).catch((e=>n(e)))}))}async sendOidbPacket(e,t=!1){return this.sendPacket(e.cmd,e.data,t)}}class Jt extends Zt{websocket;isConnected=!1;reconnectAttempts=0;maxReconnectAttempts=60;clientUrl="";logger=console;constructor(e){super(e),this.clientUrl="ws://127.0.0.1:8086/ws"}check(){return!0}sendCommandImpl(e,t,s){throw new Error("Method not implemented.")}connect(e){return new Promise(((t,s)=>{this.websocket=new Yt(this.clientUrl),this.websocket.on("error",(e=>{})),this.websocket.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.logger.log.bind(this.logger)(`[Core] [Packet Server] 已连接到 ${this.clientUrl}`),e(),t()},this.websocket.onerror=e=>{s(new Error(`${e.message}`))},this.websocket.onmessage=e=>{this.handleMessage(e.data).then().catch()},this.websocket.onclose=()=>{this.isConnected=!1,this.attemptReconnect(e)}}))}attemptReconnect(e){try{this.reconnectAttempts<this.maxReconnectAttempts?(this.reconnectAttempts++,setTimeout((()=>{this.connect(e).catch((e=>{this.logger.error.bind(this.logger)(`[Core] [Packet Server] 尝试重连失败:${e.message}`)}))}),5e3*this.reconnectAttempts)):this.logger.error.bind(this.logger)(`[Core] [Packet Server] ${this.clientUrl} 已达到最大重连次数!`)}catch(e){this.logger.error.bind(this.logger)(`[Core] [Packet Server] 重连时出错: ${e.message}`)}}async init(e,t,s){if(!this.isConnected||!this.websocket)throw new Error("WebSocket is not connected");const r={action:"init",pid:e,recv:t,send:s};this.websocket.send(JSON.stringify(r))}async handleMessage(e){try{const t=JSON.parse(e.toString()),s=t.trace_id_md5,r=t?.type??"init",i=this.cb.get(s+r);i&&await i(t.data)}catch(e){this.logger.error.bind(this.logger)(`Error parsing message: ${e}`)}}}class zt extends Zt{supportedPlatforms=["win32.x64","linux.x64","linux.arm64"];MoeHooExport={exports:{}};sendEvent=new w(500);constructor(e){super(e)}get available(){return this.isAvailable}check(){const e=process.platform+"."+process.arch;if(!this.supportedPlatforms.includes(e))return console.warn(`[Core] [Packet:Native] 不支持的平台: ${e}`),!1;const t=d.join(p(u(import.meta.url)),"./moehoo/MoeHoo."+e+".node");return!!m.existsSync(t)||(console.warn(`[Core] [Packet:Native] 缺失运行时文件: ${t}`),!1)}async init(e,t,s){const r=process.platform+"."+process.arch,i=d.join(p(u(import.meta.url)),"./moehoo/MoeHoo."+r+".node"),o=d.join(p(u(import.meta.url)),"./moehoo/MoeHoo.v1.0.0.node");if(m.existsSync(i)&&!m.existsSync(o))try{m.copyFileSync(i,o)}catch(e){}console.debug("moehoo_path:",o),process.dlopen(this.MoeHooExport,o,_.dlopen.RTLD_LAZY),this.MoeHooExport.exports.InitHook?.(s,t,((e,t,s,r,i)=>{const o=n("md5").update(Buffer.from(i,"hex")).digest("hex");if(0===e&&this.cb.get(o+"recv")&&this.sendEvent.put(r,o),1===e&&this.sendEvent.get(r)){const e=this.sendEvent.get(r),t=this.cb.get(e+"recv");t?.({seq:r,cmd:s,hex_data:i})}})),console.debug("MoeHoo init complete"),this.isAvailable=!0}sendCommandImpl(e,t,s){const r=n("md5").update(s).digest("hex");this.MoeHooExport.exports.SendPacket?.(e,t,r),this.cb.get(r+"send")?.({seq:0,cmd:e,hex_data:""})}connect(e){return e(),Promise.resolve()}}function Ht(e){let t=typeof e;if("object"==t){if(Array.isArray(e))return"array";if(null===e)return"null"}return t}let es="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),ts=[];for(let e=0;e<es.length;e++)ts[es[e].charCodeAt(0)]=e;var ss,rs;function is(){let e=0,t=0;for(let s=0;s<28;s+=7){let r=this.buf[this.pos++];if(e|=(127&r)<<s,!(128&r))return this.assertBounds(),[e,t]}let s=this.buf[this.pos++];if(e|=(15&s)<<28,t=(112&s)>>4,!(128&s))return this.assertBounds(),[e,t];for(let s=3;s<=31;s+=7){let r=this.buf[this.pos++];if(t|=(127&r)<<s,!(128&r))return this.assertBounds(),[e,t]}throw new Error("invalid varint")}function ns(e,t,s){for(let r=0;r<28;r+=7){const i=e>>>r,n=!(i>>>7==0&&0==t),o=255&(n?128|i:i);if(s.push(o),!n)return}const r=e>>>28&15|(7&t)<<4,i=!!(t>>3);if(s.push(255&(i?128|r:r)),i){for(let e=3;e<31;e+=7){const r=t>>>e,i=!(r>>>7==0),n=255&(i?128|r:r);if(s.push(n),!i)return}s.push(t>>>31&1)}}ts["-".charCodeAt(0)]=es.indexOf("+"),ts["_".charCodeAt(0)]=es.indexOf("/"),function(e){e.symbol=Symbol.for("protobuf-ts/unknown"),e.onRead=(s,r,i,n,o)=>{(t(r)?r[e.symbol]:r[e.symbol]=[]).push({no:i,wireType:n,data:o})},e.onWrite=(t,s,r)=>{for(let{no:t,wireType:i,data:n}of e.list(s))r.tag(t,i).raw(n)},e.list=(s,r)=>{if(t(s)){let t=s[e.symbol];return r?t.filter((e=>e.no==r)):t}return[]},e.last=(t,s)=>e.list(t,s).slice(-1)[0];const t=t=>t&&Array.isArray(t[e.symbol])}(ss||(ss={})),function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"}(rs||(rs={}));const os=4294967296;function as(e){let t="-"==e[0];t&&(e=e.slice(1));const s=1e6;let r=0,i=0;function n(t,n){const o=Number(e.slice(t,n));i*=s,r=r*s+o,r>=os&&(i+=r/os|0,r%=os)}return n(-24,-18),n(-18,-12),n(-12,-6),n(-6),[t,r,i]}function cs(e,t){if(t>>>0<=2097151)return""+(os*t+(e>>>0));let s=(e>>>24|t<<8)>>>0&16777215,r=t>>16&65535,i=(16777215&e)+6777216*s+6710656*r,n=s+8147497*r,o=2*r,a=1e7;function c(e,t){let s=e?String(e):"";return t?"0000000".slice(s.length)+s:s}return i>=a&&(n+=Math.floor(i/a),i%=a),n>=a&&(o+=Math.floor(n/a),n%=a),c(o,0)+c(n,o)+c(i,1)}function hs(e,t){if(e>=0){for(;e>127;)t.push(127&e|128),e>>>=7;t.push(e)}else{for(let s=0;s<9;s++)t.push(127&e|128),e>>=7;t.push(1)}}function ls(){let e=this.buf[this.pos++],t=127&e;if(!(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<7,!(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<14,!(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<21,!(128&e))return this.assertBounds(),t;e=this.buf[this.pos++],t|=(15&e)<<28;for(let t=5;128&e&&t<10;t++)e=this.buf[this.pos++];if(128&e)throw new Error("invalid varint");return this.assertBounds(),t>>>0}let fs;function us(e){if(!e)throw new Error("BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support")}!function(){const e=new DataView(new ArrayBuffer(8)),t=void 0!==globalThis.BigInt&&"function"==typeof e.getBigInt64&&"function"==typeof e.getBigUint64&&"function"==typeof e.setBigInt64&&"function"==typeof e.setBigUint64;fs=t?{MIN:BigInt("-9223372036854775808"),MAX:BigInt("9223372036854775807"),UMIN:BigInt("0"),UMAX:BigInt("18446744073709551615"),C:BigInt,V:e}:void 0}();const ds=/^-?[0-9]+$/,ps=4294967296,ms=2147483648;class gs{constructor(e,t){this.lo=0|e,this.hi=0|t}isZero(){return 0==this.lo&&0==this.hi}toNumber(){let e=this.hi*ps+(this.lo>>>0);if(!Number.isSafeInteger(e))throw new Error("cannot convert to safe number");return e}}class _s extends gs{static from(e){if(fs)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=fs.C(e);case"number":if(0===e)return this.ZERO;e=fs.C(e);case"bigint":if(!e)return this.ZERO;if(e<fs.UMIN)throw new Error("signed value for ulong");if(e>fs.UMAX)throw new Error("ulong too large");return fs.V.setBigUint64(0,e,!0),new _s(fs.V.getInt32(0,!0),fs.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;if(e=e.trim(),!ds.test(e))throw new Error("string is no integer");let[t,s,r]=as(e);if(t)throw new Error("signed value for ulong");return new _s(s,r);case"number":if(0==e)return this.ZERO;if(!Number.isSafeInteger(e))throw new Error("number is no integer");if(e<0)throw new Error("signed value for ulong");return new _s(e,e/ps)}throw new Error("unknown value "+typeof e)}toString(){return fs?this.toBigInt().toString():cs(this.lo,this.hi)}toBigInt(){return us(fs),fs.V.setInt32(0,this.lo,!0),fs.V.setInt32(4,this.hi,!0),fs.V.getBigUint64(0,!0)}}_s.ZERO=new _s(0,0);class bs extends gs{static from(e){if(fs)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=fs.C(e);case"number":if(0===e)return this.ZERO;e=fs.C(e);case"bigint":if(!e)return this.ZERO;if(e<fs.MIN)throw new Error("signed long too small");if(e>fs.MAX)throw new Error("signed long too large");return fs.V.setBigInt64(0,e,!0),new bs(fs.V.getInt32(0,!0),fs.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;if(e=e.trim(),!ds.test(e))throw new Error("string is no integer");let[t,s,r]=as(e);if(t){if(r>ms||r==ms&&0!=s)throw new Error("signed long too small")}else if(r>=ms)throw new Error("signed long too large");let i=new bs(s,r);return t?i.negate():i;case"number":if(0==e)return this.ZERO;if(!Number.isSafeInteger(e))throw new Error("number is no integer");return e>0?new bs(e,e/ps):new bs(-e,-e/ps).negate()}throw new Error("unknown value "+typeof e)}isNegative(){return!!(this.hi&ms)}negate(){let e=~this.hi,t=this.lo;return t?t=1+~t:e+=1,new bs(t,e)}toString(){if(fs)return this.toBigInt().toString();if(this.isNegative()){let e=this.negate();return"-"+cs(e.lo,e.hi)}return cs(this.lo,this.hi)}toBigInt(){return us(fs),fs.V.setInt32(0,this.lo,!0),fs.V.setInt32(4,this.hi,!0),fs.V.getBigInt64(0,!0)}}bs.ZERO=new bs(0,0);const ys={readUnknownField:!0,readerFactory:e=>new ws(e)};class ws{constructor(e,t){this.varint64=is,this.uint32=ls,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=null!=t?t:new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0})}tag(){let e=this.uint32(),t=e>>>3,s=7&e;if(t<=0||s<0||s>5)throw new Error("illegal tag: field no "+t+" wire type "+s);return[t,s]}skip(e){let t=this.pos;switch(e){case rs.Varint:for(;128&this.buf[this.pos++];);break;case rs.Bit64:this.pos+=4;case rs.Bit32:this.pos+=4;break;case rs.LengthDelimited:let t=this.uint32();this.pos+=t;break;case rs.StartGroup:let s;for(;(s=this.tag()[1])!==rs.EndGroup;)this.skip(s);break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(t,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return 0|this.uint32()}sint32(){let e=this.uint32();return e>>>1^-(1&e)}int64(){return new bs(...this.varint64())}uint64(){return new _s(...this.varint64())}sint64(){let[e,t]=this.varint64(),s=-(1&e);return e=(e>>>1|(1&t)<<31)^s,t=t>>>1^s,new bs(e,t)}bool(){let[e,t]=this.varint64();return 0!==e||0!==t}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return new _s(this.sfixed32(),this.sfixed32())}sfixed64(){return new bs(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}}function ks(e,t){if(!e)throw new Error(t)}function vs(e){if("number"!=typeof e)throw new Error("invalid int 32: "+typeof e);if(!Number.isInteger(e)||e>2147483647||e<-2147483648)throw new Error("invalid int 32: "+e)}function Ss(e){if("number"!=typeof e)throw new Error("invalid uint 32: "+typeof e);if(!Number.isInteger(e)||e>4294967295||e<0)throw new Error("invalid uint 32: "+e)}function Es(e){if("number"!=typeof e)throw new Error("invalid float 32: "+typeof e);if(Number.isFinite(e)&&(e>34028234663852886e22||e<-34028234663852886e22))throw new Error("invalid float 32: "+e)}const Ns={writeUnknownFields:!0,writerFactory:()=>new Ts};class Ts{constructor(e){this.stack=[],this.textEncoder=null!=e?e:new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let t=0;t<this.chunks.length;t++)e+=this.chunks[t].length;let t=new Uint8Array(e),s=0;for(let e=0;e<this.chunks.length;e++)t.set(this.chunks[e],s),s+=this.chunks[e].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(e.byteLength),this.raw(e)}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(Ss(e);e>127;)this.buf.push(127&e|128),e>>>=7;return this.buf.push(e),this}int32(e){return vs(e),hs(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.textEncoder.encode(e);return this.uint32(t.byteLength),this.raw(t)}float(e){Es(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){Ss(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){vs(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return vs(e),hs(e=(e<<1^e>>31)>>>0,this.buf),this}sfixed64(e){let t=new Uint8Array(8),s=new DataView(t.buffer),r=bs.from(e);return s.setInt32(0,r.lo,!0),s.setInt32(4,r.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),s=new DataView(t.buffer),r=_s.from(e);return s.setInt32(0,r.lo,!0),s.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=bs.from(e);return ns(t.lo,t.hi,this.buf),this}sint64(e){let t=bs.from(e),s=t.hi>>31;return ns(t.lo<<1^s,(t.hi<<1|t.lo>>>31)^s,this.buf),this}uint64(e){let t=_s.from(e);return ns(t.lo,t.hi,this.buf),this}}const Is={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0},Os={ignoreUnknownFields:!1};const xs=Symbol.for("protobuf-ts/message-type");function Bs(e){let t=!1;const s=[];for(let r=0;r<e.length;r++){let i=e.charAt(r);"_"==i?t=!0:/\d/.test(i)?(s.push(i),t=!0):t?(s.push(i.toUpperCase()),t=!1):0==r?s.push(i.toLowerCase()):s.push(i)}return s.join("")}var Ps,Cs,Ls;function Us(e){var t,s,r,i;return e.localName=null!==(t=e.localName)&&void 0!==t?t:Bs(e.name),e.jsonName=null!==(s=e.jsonName)&&void 0!==s?s:Bs(e.name),e.repeat=null!==(r=e.repeat)&&void 0!==r?r:Ls.NO,e.opt=null!==(i=e.opt)&&void 0!==i?i:!e.repeat&&(!e.oneof&&"message"==e.kind),e}function Rs(e){if("object"!=typeof e||null===e||!e.hasOwnProperty("oneofKind"))return!1;switch(typeof e.oneofKind){case"string":return void 0!==e[e.oneofKind]&&2==Object.keys(e).length;case"undefined":return 1==Object.keys(e).length;default:return!1}}!function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"}(Ps||(Ps={})),function(e){e[e.BIGINT=0]="BIGINT",e[e.STRING=1]="STRING",e[e.NUMBER=2]="NUMBER"}(Cs||(Cs={})),function(e){e[e.NO=0]="NO",e[e.PACKED=1]="PACKED",e[e.UNPACKED=2]="UNPACKED"}(Ls||(Ls={}));class As{constructor(e){var t;this.fields=null!==(t=e.fields)&&void 0!==t?t:[]}prepare(){if(this.data)return;const e=[],t=[],s=[];for(let r of this.fields)if(r.oneof)s.includes(r.oneof)||(s.push(r.oneof),e.push(r.oneof),t.push(r.oneof));else switch(t.push(r.localName),r.kind){case"scalar":case"enum":r.opt&&!r.repeat||e.push(r.localName);break;case"message":r.repeat&&e.push(r.localName);break;case"map":e.push(r.localName)}this.data={req:e,known:t,oneofs:Object.values(s)}}is(e,t,s=!1){if(t<0)return!0;if(null==e||"object"!=typeof e)return!1;this.prepare();let r=Object.keys(e),i=this.data;if(r.length<i.req.length||i.req.some((e=>!r.includes(e))))return!1;if(!s&&r.some((e=>!i.known.includes(e))))return!1;if(t<1)return!0;for(const r of i.oneofs){const i=e[r];if(!Rs(i))return!1;if(void 0===i.oneofKind)continue;const n=this.fields.find((e=>e.localName===i.oneofKind));if(!n)return!1;if(!this.field(i[i.oneofKind],n,s,t))return!1}for(const r of this.fields)if(void 0===r.oneof&&!this.field(e[r.localName],r,s,t))return!1;return!0}field(e,t,s,r){let i=t.repeat;switch(t.kind){case"scalar":return void 0===e?t.opt:i?this.scalars(e,t.T,r,t.L):this.scalar(e,t.T,t.L);case"enum":return void 0===e?t.opt:i?this.scalars(e,Ps.INT32,r):this.scalar(e,Ps.INT32);case"message":return void 0===e||(i?this.messages(e,t.T(),s,r):this.message(e,t.T(),s,r));case"map":if("object"!=typeof e||null===e)return!1;if(r<2)return!0;if(!this.mapKeys(e,t.K,r))return!1;switch(t.V.kind){case"scalar":return this.scalars(Object.values(e),t.V.T,r,t.V.L);case"enum":return this.scalars(Object.values(e),Ps.INT32,r);case"message":return this.messages(Object.values(e),t.V.T(),s,r)}}return!0}message(e,t,s,r){return s?t.isAssignable(e,r):t.is(e,r)}messages(e,t,s,r){if(!Array.isArray(e))return!1;if(r<2)return!0;if(s){for(let s=0;s<e.length&&s<r;s++)if(!t.isAssignable(e[s],r-1))return!1}else for(let s=0;s<e.length&&s<r;s++)if(!t.is(e[s],r-1))return!1;return!0}scalar(e,t,s){let r=typeof e;switch(t){case Ps.UINT64:case Ps.FIXED64:case Ps.INT64:case Ps.SFIXED64:case Ps.SINT64:switch(s){case Cs.BIGINT:return"bigint"==r;case Cs.NUMBER:return"number"==r&&!isNaN(e);default:return"string"==r}case Ps.BOOL:return"boolean"==r;case Ps.STRING:return"string"==r;case Ps.BYTES:return e instanceof Uint8Array;case Ps.DOUBLE:case Ps.FLOAT:return"number"==r&&!isNaN(e);default:return"number"==r&&Number.isInteger(e)}}scalars(e,t,s,r){if(!Array.isArray(e))return!1;if(s<2)return!0;if(Array.isArray(e))for(let i=0;i<e.length&&i<s;i++)if(!this.scalar(e[i],t,r))return!1;return!0}mapKeys(e,t,s){let r=Object.keys(e);switch(t){case Ps.INT32:case Ps.FIXED32:case Ps.SFIXED32:case Ps.SINT32:case Ps.UINT32:return this.scalars(r.slice(0,s).map((e=>parseInt(e))),t,s);case Ps.BOOL:return this.scalars(r.slice(0,s).map((e=>"true"==e||"false"!=e&&e)),t,s);default:return this.scalars(r,t,s,Cs.STRING)}}}function Ds(e,t){switch(t){case Cs.BIGINT:return e.toBigInt();case Cs.NUMBER:return e.toNumber();default:return e.toString()}}class Fs{constructor(e){this.info=e}prepare(){var e;if(void 0===this.fMap){this.fMap={};const t=null!==(e=this.info.fields)&&void 0!==e?e:[];for(const e of t)this.fMap[e.name]=e,this.fMap[e.jsonName]=e,this.fMap[e.localName]=e}}assert(e,t,s){if(!e){let e=Ht(s);throw"number"!=e&&"boolean"!=e||(e=s.toString()),new Error(`Cannot parse JSON ${e} for ${this.info.typeName}#${t}`)}}read(e,t,s){this.prepare();const r=[];for(const[n,o]of Object.entries(e)){const e=this.fMap[n];if(!e){if(!s.ignoreUnknownFields)throw new Error(`Found unknown field while reading ${this.info.typeName} from JSON format. JSON key: ${n}`);continue}const a=e.localName;let c;if(e.oneof){if(null===o&&("enum"!==e.kind||"google.protobuf.NullValue"!==e.T()[0]))continue;if(r.includes(e.oneof))throw new Error(`Multiple members of the oneof group "${e.oneof}" of ${this.info.typeName} are present in JSON.`);r.push(e.oneof),c=t[e.oneof]={oneofKind:a}}else c=t;if("map"==e.kind){if(null===o)continue;this.assert(null!==(i=o)&&"object"==typeof i&&!Array.isArray(i),e.name,o);const t=c[a];for(const[r,i]of Object.entries(o)){let n;switch(this.assert(null!==i,e.name+" map value",null),e.V.kind){case"message":n=e.V.T().internalJsonRead(i,s);break;case"enum":if(n=this.enum(e.V.T(),i,e.name,s.ignoreUnknownFields),!1===n)continue;break;case"scalar":n=this.scalar(i,e.V.T,e.V.L,e.name)}this.assert(void 0!==n,e.name+" map value",i);let o=r;e.K==Ps.BOOL&&(o="true"==o||"false"!=o&&o),o=this.scalar(o,e.K,Cs.STRING,e.name).toString(),t[o]=n}}else if(e.repeat){if(null===o)continue;this.assert(Array.isArray(o),e.name,o);const t=c[a];for(const r of o){let i;switch(this.assert(null!==r,e.name,null),e.kind){case"message":i=e.T().internalJsonRead(r,s);break;case"enum":if(i=this.enum(e.T(),r,e.name,s.ignoreUnknownFields),!1===i)continue;break;case"scalar":i=this.scalar(r,e.T,e.L,e.name)}this.assert(void 0!==i,e.name,o),t.push(i)}}else switch(e.kind){case"message":if(null===o&&"google.protobuf.Value"!=e.T().typeName){this.assert(void 0===e.oneof,e.name+" (oneof member)",null);continue}c[a]=e.T().internalJsonRead(o,s,c[a]);break;case"enum":let t=this.enum(e.T(),o,e.name,s.ignoreUnknownFields);if(!1===t)continue;c[a]=t;break;case"scalar":c[a]=this.scalar(o,e.T,e.L,e.name)}}var i}enum(e,t,s,r){if("google.protobuf.NullValue"==e[0]&&ks(null===t||"NULL_VALUE"===t,`Unable to parse field ${this.info.typeName}#${s}, enum ${e[0]} only accepts null.`),null===t)return 0;switch(typeof t){case"number":return ks(Number.isInteger(t),`Unable to parse field ${this.info.typeName}#${s}, enum can only be integral number, got ${t}.`),t;case"string":let i=t;e[2]&&t.substring(0,e[2].length)===e[2]&&(i=t.substring(e[2].length));let n=e[1][i];return(void 0!==n||!r)&&(ks("number"==typeof n,`Unable to parse field ${this.info.typeName}#${s}, enum ${e[0]} has no value for "${t}".`),n)}ks(!1,`Unable to parse field ${this.info.typeName}#${s}, cannot parse enum value from ${typeof t}".`)}scalar(e,t,s,r){let i;try{switch(t){case Ps.DOUBLE:case Ps.FLOAT:if(null===e)return 0;if("NaN"===e)return Number.NaN;if("Infinity"===e)return Number.POSITIVE_INFINITY;if("-Infinity"===e)return Number.NEGATIVE_INFINITY;if(""===e){i="empty string";break}if("string"==typeof e&&e.trim().length!==e.length){i="extra whitespace";break}if("string"!=typeof e&&"number"!=typeof e)break;let r=Number(e);if(Number.isNaN(r)){i="not a number";break}if(!Number.isFinite(r)){i="too large or small";break}return t==Ps.FLOAT&&Es(r),r;case Ps.INT32:case Ps.FIXED32:case Ps.SFIXED32:case Ps.SINT32:case Ps.UINT32:if(null===e)return 0;let n;if("number"==typeof e?n=e:""===e?i="empty string":"string"==typeof e&&(e.trim().length!==e.length?i="extra whitespace":n=Number(e)),void 0===n)break;return t==Ps.UINT32?Ss(n):vs(n),n;case Ps.INT64:case Ps.SFIXED64:case Ps.SINT64:if(null===e)return Ds(bs.ZERO,s);if("number"!=typeof e&&"string"!=typeof e)break;return Ds(bs.from(e),s);case Ps.FIXED64:case Ps.UINT64:if(null===e)return Ds(_s.ZERO,s);if("number"!=typeof e&&"string"!=typeof e)break;return Ds(_s.from(e),s);case Ps.BOOL:if(null===e)return!1;if("boolean"!=typeof e)break;return e;case Ps.STRING:if(null===e)return"";if("string"!=typeof e){i="extra whitespace";break}try{encodeURIComponent(e)}catch(i){i="invalid UTF8";break}return e;case Ps.BYTES:if(null===e||""===e)return new Uint8Array(0);if("string"!=typeof e)break;return function(e){let t=3*e.length/4;"="==e[e.length-2]?t-=2:"="==e[e.length-1]&&(t-=1);let s,r=new Uint8Array(t),i=0,n=0,o=0;for(let t=0;t<e.length;t++){if(s=ts[e.charCodeAt(t)],void 0===s)switch(e[t]){case"=":n=0;case"\n":case"\r":case"\t":case" ":continue;default:throw Error("invalid base64 string.")}switch(n){case 0:o=s,n=1;break;case 1:r[i++]=o<<2|(48&s)>>4,o=s,n=2;break;case 2:r[i++]=(15&o)<<4|(60&s)>>2,o=s,n=3;break;case 3:r[i++]=(3&o)<<6|s,n=0}}if(1==n)throw Error("invalid base64 string.");return r.subarray(0,i)}(e)}}catch(e){i=e.message}this.assert(!1,r+(i?" - "+i:""),e)}}class Vs{constructor(e){var t;this.fields=null!==(t=e.fields)&&void 0!==t?t:[]}write(e,t){const s={},r=e;for(const e of this.fields){if(!e.oneof){let i=this.field(e,r[e.localName],t);void 0!==i&&(s[t.useProtoFieldName?e.name:e.jsonName]=i);continue}const i=r[e.oneof];if(i.oneofKind!==e.localName)continue;const n="scalar"==e.kind||"enum"==e.kind?Object.assign(Object.assign({},t),{emitDefaultValues:!0}):t;let o=this.field(e,i[e.localName],n);ks(void 0!==o),s[t.useProtoFieldName?e.name:e.jsonName]=o}return s}field(e,t,s){let r;if("map"==e.kind){ks("object"==typeof t&&null!==t);const i={};switch(e.V.kind){case"scalar":for(const[s,r]of Object.entries(t)){const t=this.scalar(e.V.T,r,e.name,!1,!0);ks(void 0!==t),i[s.toString()]=t}break;case"message":const r=e.V.T();for(const[n,o]of Object.entries(t)){const t=this.message(r,o,e.name,s);ks(void 0!==t),i[n.toString()]=t}break;case"enum":const n=e.V.T();for(const[r,o]of Object.entries(t)){ks(void 0===o||"number"==typeof o);const t=this.enum(n,o,e.name,!1,!0,s.enumAsInteger);ks(void 0!==t),i[r.toString()]=t}}(s.emitDefaultValues||Object.keys(i).length>0)&&(r=i)}else if(e.repeat){ks(Array.isArray(t));const i=[];switch(e.kind){case"scalar":for(let s=0;s<t.length;s++){const r=this.scalar(e.T,t[s],e.name,e.opt,!0);ks(void 0!==r),i.push(r)}break;case"enum":const r=e.T();for(let n=0;n<t.length;n++){ks(void 0===t[n]||"number"==typeof t[n]);const o=this.enum(r,t[n],e.name,e.opt,!0,s.enumAsInteger);ks(void 0!==o),i.push(o)}break;case"message":const n=e.T();for(let r=0;r<t.length;r++){const o=this.message(n,t[r],e.name,s);ks(void 0!==o),i.push(o)}}(s.emitDefaultValues||i.length>0||s.emitDefaultValues)&&(r=i)}else switch(e.kind){case"scalar":r=this.scalar(e.T,t,e.name,e.opt,s.emitDefaultValues);break;case"enum":r=this.enum(e.T(),t,e.name,e.opt,s.emitDefaultValues,s.enumAsInteger);break;case"message":r=this.message(e.T(),t,e.name,s)}return r}enum(e,t,s,r,i,n){if("google.protobuf.NullValue"==e[0])return i||r?null:void 0;if(void 0!==t){if(0!==t||i||r)return ks("number"==typeof t),ks(Number.isInteger(t)),n||!e[1].hasOwnProperty(t)?t:e[2]?e[2]+e[1][t]:e[1][t]}else ks(r)}message(e,t,s,r){return void 0===t?r.emitDefaultValues?null:void 0:e.internalJsonWrite(t,r)}scalar(e,t,s,r,i){if(void 0===t)return void ks(r);const n=i||r;switch(e){case Ps.INT32:case Ps.SFIXED32:case Ps.SINT32:return 0===t?n?0:void 0:(vs(t),t);case Ps.FIXED32:case Ps.UINT32:return 0===t?n?0:void 0:(Ss(t),t);case Ps.FLOAT:Es(t);case Ps.DOUBLE:return 0===t?n?0:void 0:(ks("number"==typeof t),Number.isNaN(t)?"NaN":t===Number.POSITIVE_INFINITY?"Infinity":t===Number.NEGATIVE_INFINITY?"-Infinity":t);case Ps.STRING:return""===t?n?"":void 0:(ks("string"==typeof t),t);case Ps.BOOL:return!1===t?!n&&void 0:(ks("boolean"==typeof t),t);case Ps.UINT64:case Ps.FIXED64:ks("number"==typeof t||"string"==typeof t||"bigint"==typeof t);let e=_s.from(t);if(e.isZero()&&!n)return;return e.toString();case Ps.INT64:case Ps.SFIXED64:case Ps.SINT64:ks("number"==typeof t||"string"==typeof t||"bigint"==typeof t);let s=bs.from(t);if(s.isZero()&&!n)return;return s.toString();case Ps.BYTES:return ks(t instanceof Uint8Array),t.byteLength?function(e){let t,s="",r=0,i=0;for(let n=0;n<e.length;n++)switch(t=e[n],r){case 0:s+=es[t>>2],i=(3&t)<<4,r=1;break;case 1:s+=es[i|t>>4],i=(15&t)<<2,r=2;break;case 2:s+=es[i|t>>6],s+=es[63&t],r=0}return r&&(s+=es[i],s+="=",1==r&&(s+="=")),s}(t):n?"":void 0}}}function js(e,t=Cs.STRING){switch(e){case Ps.BOOL:return!1;case Ps.UINT64:case Ps.FIXED64:return Ds(_s.ZERO,t);case Ps.INT64:case Ps.SFIXED64:case Ps.SINT64:return Ds(bs.ZERO,t);case Ps.DOUBLE:case Ps.FLOAT:return 0;case Ps.BYTES:return new Uint8Array(0);case Ps.STRING:return"";default:return 0}}class Ms{constructor(e){this.info=e}prepare(){var e;if(!this.fieldNoToField){const t=null!==(e=this.info.fields)&&void 0!==e?e:[];this.fieldNoToField=new Map(t.map((e=>[e.no,e])))}}read(e,t,s,r){this.prepare();const i=void 0===r?e.len:e.pos+r;for(;e.pos<i;){const[r,i]=e.tag(),n=this.fieldNoToField.get(r);if(!n){let n=s.readUnknownField;if("throw"==n)throw new Error(`Unknown field ${r} (wire type ${i}) for ${this.info.typeName}`);let o=e.skip(i);!1!==n&&(!0===n?ss.onRead:n)(this.info.typeName,t,r,i,o);continue}let o=t,a=n.repeat,c=n.localName;switch(n.oneof&&(o=o[n.oneof],o.oneofKind!==c&&(o=t[n.oneof]={oneofKind:c})),n.kind){case"scalar":case"enum":let t="enum"==n.kind?Ps.INT32:n.T,r="scalar"==n.kind?n.L:void 0;if(a){let s=o[c];if(i==rs.LengthDelimited&&t!=Ps.STRING&&t!=Ps.BYTES){let i=e.uint32()+e.pos;for(;e.pos<i;)s.push(this.scalar(e,t,r))}else s.push(this.scalar(e,t,r))}else o[c]=this.scalar(e,t,r);break;case"message":if(a){let t=o[c],r=n.T().internalBinaryRead(e,e.uint32(),s);t.push(r)}else o[c]=n.T().internalBinaryRead(e,e.uint32(),s,o[c]);break;case"map":let[h,l]=this.mapEntry(n,e,s);o[c][h]=l}}}mapEntry(e,t,s){let r,i,n=t.uint32(),o=t.pos+n;for(;t.pos<o;){let[n,o]=t.tag();switch(n){case 1:r=e.K==Ps.BOOL?t.bool().toString():this.scalar(t,e.K,Cs.STRING);break;case 2:switch(e.V.kind){case"scalar":i=this.scalar(t,e.V.T,e.V.L);break;case"enum":i=t.int32();break;case"message":i=e.V.T().internalBinaryRead(t,t.uint32(),s)}break;default:throw new Error(`Unknown field ${n} (wire type ${o}) in map entry for ${this.info.typeName}#${e.name}`)}}if(void 0===r){let t=js(e.K);r=e.K==Ps.BOOL?t.toString():t}if(void 0===i)switch(e.V.kind){case"scalar":i=js(e.V.T,e.V.L);break;case"enum":i=0;break;case"message":i=e.V.T().create()}return[r,i]}scalar(e,t,s){switch(t){case Ps.INT32:return e.int32();case Ps.STRING:return e.string();case Ps.BOOL:return e.bool();case Ps.DOUBLE:return e.double();case Ps.FLOAT:return e.float();case Ps.INT64:return Ds(e.int64(),s);case Ps.UINT64:return Ds(e.uint64(),s);case Ps.FIXED64:return Ds(e.fixed64(),s);case Ps.FIXED32:return e.fixed32();case Ps.BYTES:return e.bytes();case Ps.UINT32:return e.uint32();case Ps.SFIXED32:return e.sfixed32();case Ps.SFIXED64:return Ds(e.sfixed64(),s);case Ps.SINT32:return e.sint32();case Ps.SINT64:return Ds(e.sint64(),s)}}}class Ws{constructor(e){this.info=e}prepare(){if(!this.fields){const e=this.info.fields?this.info.fields.concat():[];this.fields=e.sort(((e,t)=>e.no-t.no))}}write(e,t,s){this.prepare();for(const r of this.fields){let i,n,o=r.repeat,a=r.localName;if(r.oneof){const t=e[r.oneof];if(t.oneofKind!==a)continue;i=t[a],n=!0}else i=e[a],n=!1;switch(r.kind){case"scalar":case"enum":let e="enum"==r.kind?Ps.INT32:r.T;if(o)if(ks(Array.isArray(i)),o==Ls.PACKED)this.packed(t,e,r.no,i);else for(const s of i)this.scalar(t,e,r.no,s,!0);else void 0===i?ks(r.opt):this.scalar(t,e,r.no,i,n||r.opt);break;case"message":if(o){ks(Array.isArray(i));for(const e of i)this.message(t,s,r.T(),r.no,e)}else this.message(t,s,r.T(),r.no,i);break;case"map":ks("object"==typeof i&&null!==i);for(const[e,n]of Object.entries(i))this.mapEntry(t,s,r,e,n)}}let r=s.writeUnknownFields;!1!==r&&(!0===r?ss.onWrite:r)(this.info.typeName,e,t)}mapEntry(e,t,s,r,i){e.tag(s.no,rs.LengthDelimited),e.fork();let n=r;switch(s.K){case Ps.INT32:case Ps.FIXED32:case Ps.UINT32:case Ps.SFIXED32:case Ps.SINT32:n=Number.parseInt(r);break;case Ps.BOOL:ks("true"==r||"false"==r),n="true"==r}switch(this.scalar(e,s.K,1,n,!0),s.V.kind){case"scalar":this.scalar(e,s.V.T,2,i,!0);break;case"enum":this.scalar(e,Ps.INT32,2,i,!0);break;case"message":this.message(e,t,s.V.T(),2,i)}e.join()}message(e,t,s,r,i){void 0!==i&&(s.internalBinaryWrite(i,e.tag(r,rs.LengthDelimited).fork(),t),e.join())}scalar(e,t,s,r,i){let[n,o,a]=this.scalarInfo(t,r);a&&!i||(e.tag(s,n),e[o](r))}packed(e,t,s,r){if(!r.length)return;ks(t!==Ps.BYTES&&t!==Ps.STRING),e.tag(s,rs.LengthDelimited),e.fork();let[,i]=this.scalarInfo(t);for(let t=0;t<r.length;t++)e[i](r[t]);e.join()}scalarInfo(e,t){let s,r=rs.Varint,i=void 0===t,n=0===t;switch(e){case Ps.INT32:s="int32";break;case Ps.STRING:n=i||!t.length,r=rs.LengthDelimited,s="string";break;case Ps.BOOL:n=!1===t,s="bool";break;case Ps.UINT32:s="uint32";break;case Ps.DOUBLE:r=rs.Bit64,s="double";break;case Ps.FLOAT:r=rs.Bit32,s="float";break;case Ps.INT64:n=i||bs.from(t).isZero(),s="int64";break;case Ps.UINT64:n=i||_s.from(t).isZero(),s="uint64";break;case Ps.FIXED64:n=i||_s.from(t).isZero(),r=rs.Bit64,s="fixed64";break;case Ps.BYTES:n=i||!t.byteLength,r=rs.LengthDelimited,s="bytes";break;case Ps.FIXED32:r=rs.Bit32,s="fixed32";break;case Ps.SFIXED32:r=rs.Bit32,s="sfixed32";break;case Ps.SFIXED64:n=i||bs.from(t).isZero(),r=rs.Bit64,s="sfixed64";break;case Ps.SINT32:s="sint32";break;case Ps.SINT64:n=i||bs.from(t).isZero(),s="sint64"}return[r,s,i||n]}}function $s(e,t,s){let r,i,n=s;for(let s of e.fields){let e=s.localName;if(s.oneof){const o=n[s.oneof];if(null==(null==o?void 0:o.oneofKind))continue;if(r=o[e],i=t[s.oneof],i.oneofKind=o.oneofKind,null==r){delete i[e];continue}}else if(r=n[e],i=t,null==r)continue;switch(s.repeat&&(i[e].length=r.length),s.kind){case"scalar":case"enum":if(s.repeat)for(let t=0;t<r.length;t++)i[e][t]=r[t];else i[e]=r;break;case"message":let t=s.T();if(s.repeat)for(let s=0;s<r.length;s++)i[e][s]=t.create(r[s]);else void 0===i[e]?i[e]=t.create(r):t.mergePartial(i[e],r);break;case"map":switch(s.V.kind){case"scalar":case"enum":Object.assign(i[e],r);break;case"message":let t=s.V.T();for(let s of Object.keys(r))i[e][s]=t.create(r[s])}}}}const Gs=Object.values;function Qs(e,t,s){if(t===s)return!0;if(e!==Ps.BYTES)return!1;let r=t,i=s;if(r.length!==i.length)return!1;for(let e=0;e<r.length;e++)if(r[e]!=i[e])return!1;return!0}function qs(e,t,s){if(t.length!==s.length)return!1;for(let r=0;r<t.length;r++)if(!Qs(e,t[r],s[r]))return!1;return!0}function Xs(e,t,s){if(t.length!==s.length)return!1;for(let r=0;r<t.length;r++)if(!e.equals(t[r],s[r]))return!1;return!0}const Ks=Object.getOwnPropertyDescriptors(Object.getPrototypeOf({}));class Ys{constructor(e,t,s){this.defaultCheckDepth=16,this.typeName=e,this.fields=t.map(Us),this.options=null!=s?s:{},this.messagePrototype=Object.create(null,Object.assign(Object.assign({},Ks),{[xs]:{value:this}})),this.refTypeCheck=new As(this),this.refJsonReader=new Fs(this),this.refJsonWriter=new Vs(this),this.refBinReader=new Ms(this),this.refBinWriter=new Ws(this)}create(e){let t=function(e){const t=e.messagePrototype?Object.create(e.messagePrototype):Object.defineProperty({},xs,{value:e});for(let s of e.fields){let e=s.localName;if(!s.opt)if(s.oneof)t[s.oneof]={oneofKind:void 0};else if(s.repeat)t[e]=[];else switch(s.kind){case"scalar":t[e]=js(s.T,s.L);break;case"enum":t[e]=0;break;case"map":t[e]={}}}return t}(this);return void 0!==e&&$s(this,t,e),t}clone(e){let t=this.create();return $s(this,t,e),t}equals(e,t){return function(e,t,s){if(t===s)return!0;if(!t||!s)return!1;for(let r of e.fields){let e=r.localName,i=r.oneof?t[r.oneof][e]:t[e],n=r.oneof?s[r.oneof][e]:s[e];switch(r.kind){case"enum":case"scalar":let e="enum"==r.kind?Ps.INT32:r.T;if(!(r.repeat?qs(e,i,n):Qs(e,i,n)))return!1;break;case"map":if(!("message"==r.V.kind?Xs(r.V.T(),Gs(i),Gs(n)):qs("enum"==r.V.kind?Ps.INT32:r.V.T,Gs(i),Gs(n))))return!1;break;case"message":let t=r.T();if(!(r.repeat?Xs(t,i,n):t.equals(i,n)))return!1}}return!0}(this,e,t)}is(e,t=this.defaultCheckDepth){return this.refTypeCheck.is(e,t,!1)}isAssignable(e,t=this.defaultCheckDepth){return this.refTypeCheck.is(e,t,!0)}mergePartial(e,t){$s(this,e,t)}fromBinary(e,t){let s=function(e){return e?Object.assign(Object.assign({},ys),e):ys}(t);return this.internalBinaryRead(s.readerFactory(e),e.byteLength,s)}fromJson(e,t){return this.internalJsonRead(e,function(e){return e?Object.assign(Object.assign({},Os),e):Os}(t))}fromJsonString(e,t){let s=JSON.parse(e);return this.fromJson(s,t)}toJson(e,t){return this.internalJsonWrite(e,function(e){return e?Object.assign(Object.assign({},Is),e):Is}(t))}toJsonString(e,t){var s;let r=this.toJson(e,t);return JSON.stringify(r,null,null!==(s=null==t?void 0:t.prettySpaces)&&void 0!==s?s:0)}toBinary(e,t){let s=function(e){return e?Object.assign(Object.assign({},Ns),e):Ns}(t);return this.internalBinaryWrite(e,s.writerFactory(),s).finish()}internalJsonRead(e,t,s){if(null!==e&&"object"==typeof e&&!Array.isArray(e)){let r=null!=s?s:this.create();return this.refJsonReader.read(e,r,t),r}throw new Error(`Unable to parse message ${this.typeName} from JSON ${Ht(e)}.`)}internalJsonWrite(e,t){return this.refJsonWriter.write(e,t)}internalBinaryWrite(e,t,s){return this.refBinWriter.write(e,t,s),t}internalBinaryRead(e,t,s,r){let i=null!=r?r:this.create();return this.refBinReader.read(e,i,s,t),i}}function Zs(e,t,s,r){return"function"==typeof t?{kind:"message",no:e,type:t,optional:s??!1,repeat:!1}:{kind:"scalar",no:e,type:t,optional:s??!1,repeat:!1}}class Js{_field;_proto_msg;static cache=new WeakMap;constructor(e){this._field=Object.keys(e).map((t=>{const s=e[t];if("scalar"===s.kind){const e=s.repeat?[Ps.STRING,Ps.BYTES].includes(s.type)?Ls.UNPACKED:Ls.PACKED:Ls.NO;return{no:s.no,name:t,kind:"scalar",T:s.type,opt:s.optional,repeat:e}}if("message"===s.kind)return{no:s.no,name:t,kind:"message",repeat:s.repeat?Ls.PACKED:Ls.NO,T:()=>Js.getInstance(s.type())._proto_msg}})),this._proto_msg=new Ys("nya",this._field)}static getInstance(e){let t=this.cache.get(e);return t||(t=new Js(e),this.cache.set(e,t)),t}encode(e){return this._proto_msg.toBinary(this._proto_msg.create(e))}decode(e){return this._proto_msg.fromBinary(e)}}class zs{realMsg;constructor(e){this.realMsg=Js.getInstance(e)}encode(e){return this.realMsg.encode(e)}decode(e){return this.realMsg.decode(e)}}const Hs={command:Zs(1,Ps.UINT32),subCommand:Zs(2,Ps.UINT32),body:Zs(4,Ps.BYTES),errorMsg:Zs(5,Ps.STRING,!0),isReserved:Zs(12,Ps.UINT32)};Zs(4,Ps.BYTES);const er={uin:Zs(1,Ps.UINT32),groupUin:Zs(2,Ps.UINT32),friendUin:Zs(5,Ps.UINT32),ext:Zs(6,Ps.UINT32,!0)},tr={targetUid:Zs(1,Ps.STRING),specialTitle:Zs(5,Ps.STRING),expiredTime:Zs(6,Ps.SINT32),uinName:Zs(7,Ps.STRING),targetName:Zs(8,Ps.STRING)},sr={groupUin:Zs(1,Ps.UINT32),body:Zs(3,Ps.BYTES)},rr={uin:Zs(1,Ps.STRING),groupUin:Zs(2,Ps.STRING),version:Zs(3,Ps.STRING)},ir={body:Zs(2,(()=>rr))};class nr{client;constructor(e){this.client=e}packetPacket(e){return Buffer.from(e).toString("hex")}packOidbPacket(e,t,s,r=!0,i=!1){const n=new zs(Hs).encode({command:e,subCommand:t,body:s,isReserved:r?1:0});return{cmd:`OidbSvcTrpcTcp.0x${e.toString(16).toUpperCase()}_${t}`,data:this.packetPacket(n)}}packPokePacket(e,t){const s=new zs(er).encode({uin:e,groupUin:t,friendUin:t??e,ext:0});return this.packOidbPacket(3795,1,s)}packSetSpecialTittlePacket(e,t,s){const r=new zs(tr).encode({targetUid:t,specialTitle:s,expiredTime:-1,uinName:s}),i=new zs(sr).encode({groupUin:+e,body:r});return this.packOidbPacket(2300,2,i,!1,!1)}packGroupSignReq(e,t){return this.packOidbPacket(3767,1,new zs(ir).encode({body:{uin:e,groupUin:t,version:"9.0.90"}}),!1,!1)}}const or={10:e=>new zt(e),1:e=>new Jt(e)};class ar{client;packer;wrapperSession;constructor(e){this.wrapperSession=e,this.client=this.newClient(),this.packer=new nr(this.client)}newClient(){let e,t="native";switch(t){case"native":console.log("[Core] [Packet] 使用指定的 NativePacketClient 作为后端"),e=new zt(this.wrapperSession);break;case"frida":console.log("[Core] [Packet] 使用指定的 FridaPacketClient 作为后端"),e=new Jt(this.wrapperSession);break;case"auto":case void 0:e=this.judgeClient();break;default:console.error(`[Core] [Packet] 未知的PacketBackend ${t},请检查配置文件!`),e=null}if(!e||!e.check())throw new Error("[Core] [Packet] 无可用的后端,NapCat.Packet将不会加载!");return e}judgeClient(){const e=Object.entries(or).map((([e,t])=>{const s=t(this.wrapperSession),r=+e*+s.check();return{client:s,score:r}})).filter((({score:e})=>e>0)).sort(((e,t)=>t.score-e.score)),t=e[0]?.client;if(!t)throw new Error("[Core] [Packet] 无可用的后端,NapCat.Packet将不会加载!");return console.log(`[Core] [Packet] 自动选择 ${t.constructor.name} 作为后端`),t}}const cr={"6.9.56-28418-arm64":{send:"4471360",recv:"4473BCC"},"3.2.12-28418-x64":{recv:"A0723E0",send:"A06EAE0"},"9.9.15-28418-x64":{recv:"37A9004",send:"37A4BD0"},"9.9.15-28498-x64":{recv:"37A9004",send:"37A4BD0"},"9.9.16-28788-x64":{send:"38076D0",recv:"380BB04"},"3.2.13-28788-x64":{send:"A0CEC20",recv:"A0D2520"},"3.2.13-28788-arm64":{send:"6E91018",recv:"6E94850"},"9.9.16-28971-x64":{send:"38079F0",recv:"380BE24"},"3.2.13-28971-x64":{send:"A0CEF60",recv:"A0D2860"},"3.2.12-28971-arm64":{send:"6E91318",recv:"6E94B50"},"6.9.58-28971-arm64":{send:"449ACA0",recv:"449D50C"},"9.9.16-29271-x64":{send:"3833510",recv:"3837944"},"3.2.13-29271-x64":{send:"A11E680",recv:"A121F80"},"3.2.13-29271-arm64":{send:"6ECA098",recv:"6ECD8D0"},"9.9.16-29456-x64":{send:"3835CD0",recv:"383A104"},"3.2.13-29456-x64":{send:"A11E820",recv:"A122120"},"3.2.13-29456-arm64":{send:"6ECA130",recv:"6ECD968"}};class hr{QQMainPath;QQPackageInfoPath;QQVersionConfigPath;isQuickUpdate;QQVersionConfig;QQPackageInfo;constructor(){this.QQMainPath=process.execPath,this.QQVersionConfigPath=function(e=""){let t;if("win32"===g.platform())t=y.join(y.dirname(e),"versions","config.json");else if("darwin"===g.platform()){const e=g.homedir(),s=y.resolve(e,"./Library/Application Support/QQ");t=y.resolve(s,"./versions/config.json")}else{const e=g.homedir(),s=y.resolve(e,"./.config/QQ");t=y.resolve(s,"./versions/config.json")}if("string"==typeof t&&(b.existsSync(t)||(t=y.join(y.dirname(e),"./resources/app/versions/config.json")),b.existsSync(t)))return t}(this.QQMainPath),this.isQuickUpdate=!!this.QQVersionConfigPath,this.QQVersionConfig=this.isQuickUpdate?JSON.parse(b.readFileSync(this.QQVersionConfigPath).toString()):"linux"===g.platform()?{baseVersion:"3.2.12.28060",curVersion:"3.2.12.28060",prevVersion:"",onErrorVersions:[],buildId:"27254"}:"darwin"===g.platform()?{baseVersion:"6.9.53.28060",curVersion:"6.9.53.28060",prevVersion:"",onErrorVersions:[],buildId:"28060"}:{baseVersion:"9.9.15-28131",curVersion:"9.9.15-28131",prevVersion:"",onErrorVersions:[],buildId:"28131"},this.QQPackageInfoPath=function(e="",t){let s;return s="darwin"===g.platform()?y.join(y.dirname(e),"..","Resources","app","package.json"):"linux"===g.platform()?y.join(y.dirname(e),"./resources/app/package.json"):y.join(y.dirname(e),"./versions/"+t+"/resources/app/package.json"),b.existsSync(s)||(s=y.join(y.dirname(e),"./resources/app/versions/"+t+"/package.json")),s}(this.QQMainPath,this.QQVersionConfig?.curVersion),this.QQPackageInfo=JSON.parse(b.readFileSync(this.QQPackageInfoPath).toString())}getFullQQVersion(){const e=this.isQuickUpdate?this.QQVersionConfig?.curVersion:this.QQPackageInfo?.version;if(!e)throw new Error("QQ版本获取失败");return e}}let lr=require("process"),fr=null;const ur="dlopenOri"+Math.random().toString(36).substring(7);async function dr(){return fr||new Promise(((e,t)=>{let s=setInterval((()=>{fr&&(clearInterval(s),e(fr))}),100)}))}lr[ur]=lr.dlopen,lr.dlopen=function(e,t,s=g.constants.dlopen.RTLD_LAZY){let r=this[ur](e,t,s),i=e.exports;return e.exports=new Proxy({},{get:function(e,t,s){return"NodeIQQNTWrapperSession"===t?new Proxy((()=>{}),{get(e,t,s){if("create"===t)return new Proxy((()=>{}),{apply:(e,t,s)=>(fr=i.NodeIQQNTWrapperSession.create(...s),console.log("NodeIQQNTWrapperSession created:",fr),lr.dlopen=lr[ur],fr)})}}):i[t]}}),r};class pr{qqVersion;packetSession;logger=console;wrapperSession;constructor(e){this.wrapperSession=e,this.packetSession=void 0,this.InitSendPacket((new hr).getFullQQVersion()).then().catch(console.error)}get available(){return this.packetSession?.client.available??!1}async InitSendPacket(t){this.qqVersion=t;const s=cr[t+"-"+e.arch()];if(!s)return this.logger.error("PacketServer Offset table not found for QQVersion: ",t+"-"+e.arch()),!1;this.packetSession=new ar(this.wrapperSession);return await this.packetSession.client.connect((()=>{this.packetSession&&this.packetSession.client&&this.packetSession.client.init(process.pid,s.recv,s.send).then().catch(this.logger.error.bind(this.logger))})),!0}async sendPacket(e,t,s=!1){return this.packetSession.client.sendPacket(e,t,s)}async sendOidbPacket(e,t=!1){return this.sendPacket(e.cmd,e.data,t)}async sendPokePacket(e,t){const s=this.packetSession?.packer.packPokePacket(e,t);await this.sendOidbPacket(s,!1)}async sendGroupSignPacket(e,t){const s=this.packetSession?.packer.packGroupSignReq(e,t);await this.sendOidbPacket(s,!0)}async sendSetSpecialTittlePacket(e,t,s){const r=this.packetSession?.packer.packSetSpecialTittlePacket(e,t,s);await this.sendOidbPacket(r,!0)}}export{pr as NTQQPacketApi,dr as initWrapperSession};
+import _0x2378fb from 'os';
+import require$$0$2 from 'stream';
+import require$$0 from 'zlib';
+import require$$0$1 from 'buffer';
+import require$$1$1, { createHash as createHash$1 } from 'crypto';
+import require$$0$3 from 'events';
+import require$$1$2 from 'https';
+import require$$2$1 from 'http';
+import require$$3 from 'net';
+import require$$4 from 'tls';
+import require$$7, { fileURLToPath } from 'url';
+import _0x10daec, { dirname } from 'path';
+import _0x3e7a5a from 'fs';
+import _0x2cc836, { constants as constants$1 } from 'node:os';
+import _0x5a9d71 from 'node:fs';
+import _0x2fc670 from 'node:path';
+
+function _0x41d6(){const _0xce27c3=['13623642xtJDKR','720294ERTOnQ','get','has','set','329OWWzYZ','capacity','8UsTMVn','9862oKHjSp','value','keys','cache','delete','11862980eBUtnn','next','152104NDBwMH','254frKgUC','471327cVFkap','8498720ZwnDvN'];_0x41d6=function(){return _0xce27c3;};return _0x41d6();}const _0x37832f=_0x11d9;function _0x11d9(_0x3ea709,_0x3a7a15){const _0x41d614=_0x41d6();return _0x11d9=function(_0x11d999,_0xe6ed7e){_0x11d999=_0x11d999-0x171;let _0x6de7b9=_0x41d614[_0x11d999];return _0x6de7b9;},_0x11d9(_0x3ea709,_0x3a7a15);}(function(_0x4c1e11,_0x44b142){const _0x50c546=_0x11d9,_0x5497f8=_0x4c1e11();while(!![]){try{const _0x46c9bb=parseInt(_0x50c546(0x181))/0x1*(parseInt(_0x50c546(0x176))/0x2)+parseInt(_0x50c546(0x177))/0x3*(-parseInt(_0x50c546(0x180))/0x4)+-parseInt(_0x50c546(0x178))/0x5+-parseInt(_0x50c546(0x17a))/0x6+parseInt(_0x50c546(0x17e))/0x7*(-parseInt(_0x50c546(0x175))/0x8)+parseInt(_0x50c546(0x179))/0x9+parseInt(_0x50c546(0x173))/0xa;if(_0x46c9bb===_0x44b142)break;else _0x5497f8['push'](_0x5497f8['shift']());}catch(_0x2a2c41){_0x5497f8['push'](_0x5497f8['shift']());}}}(_0x41d6,0xe1cd8));class LRUCache{[_0x37832f(0x17f)];[_0x37832f(0x171)];constructor(_0x13648e){const _0x109020=_0x37832f;this['capacity']=_0x13648e,this[_0x109020(0x171)]=new Map();}[_0x37832f(0x17b)](_0x45f06c){const _0x4e148c=_0x37832f,_0x52aa56=this[_0x4e148c(0x171)]['get'](_0x45f06c);return _0x52aa56!==void 0x0&&(this['cache'][_0x4e148c(0x172)](_0x45f06c),this['cache'][_0x4e148c(0x17d)](_0x45f06c,_0x52aa56)),_0x52aa56;}['put'](_0xd434fd,_0x19f64d){const _0x4e8071=_0x37832f;if(this[_0x4e8071(0x171)][_0x4e8071(0x17c)](_0xd434fd))this['cache'][_0x4e8071(0x172)](_0xd434fd);else {if(this[_0x4e8071(0x171)]['size']>=this['capacity']){const _0x4ec25a=this['cache'][_0x4e8071(0x183)]()[_0x4e8071(0x174)]()[_0x4e8071(0x182)];_0x4ec25a!==void 0x0&&this['cache'][_0x4e8071(0x172)](_0x4ec25a);}}this['cache'][_0x4e8071(0x17d)](_0xd434fd,_0x19f64d);}}
+
+function getDefaultExportFromCjs (x) {
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
+}
+
+function getAugmentedNamespace(n) {
+ if (n.__esModule) return n;
+ var f = n.default;
+ if (typeof f == "function") {
+ var a = function a () {
+ if (this instanceof a) {
+ return Reflect.construct(f, arguments, this.constructor);
+ }
+ return f.apply(this, arguments);
+ };
+ a.prototype = f.prototype;
+ } else a = {};
+ Object.defineProperty(a, '__esModule', {value: true});
+ Object.keys(n).forEach(function (k) {
+ var d = Object.getOwnPropertyDescriptor(n, k);
+ Object.defineProperty(a, k, d.get ? d : {
+ enumerable: true,
+ get: function () {
+ return n[k];
+ }
+ });
+ });
+ return a;
+}
+
+var bufferUtil$1 = {exports: {}};
+
+const BINARY_TYPES$2 = ['nodebuffer', 'arraybuffer', 'fragments'];
+const hasBlob$1 = typeof Blob !== 'undefined';
+
+if (hasBlob$1) BINARY_TYPES$2.push('blob');
+
+var constants = {
+ BINARY_TYPES: BINARY_TYPES$2,
+ EMPTY_BUFFER: Buffer.alloc(0),
+ GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',
+ hasBlob: hasBlob$1,
+ kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),
+ kListener: Symbol('kListener'),
+ kStatusCode: Symbol('status-code'),
+ kWebSocket: Symbol('websocket'),
+ NOOP: () => {}
+};
+
+const __viteOptionalPeerDep_bufferutil_ws = {};
+
+const __viteOptionalPeerDep_bufferutil_ws$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
+ __proto__: null,
+ default: __viteOptionalPeerDep_bufferutil_ws
+}, Symbol.toStringTag, { value: 'Module' }));
+
+const require$$1 = /*@__PURE__*/getAugmentedNamespace(__viteOptionalPeerDep_bufferutil_ws$1);
+
+var unmask$1;
+var mask;
+
+const { EMPTY_BUFFER: EMPTY_BUFFER$3 } = constants;
+
+const FastBuffer$2 = Buffer[Symbol.species];
+
+/**
+ * Merges an array of buffers into a new buffer.
+ *
+ * @param {Buffer[]} list The array of buffers to concat
+ * @param {Number} totalLength The total length of buffers in the list
+ * @return {Buffer} The resulting buffer
+ * @public
+ */
+function concat$1(list, totalLength) {
+ if (list.length === 0) return EMPTY_BUFFER$3;
+ if (list.length === 1) return list[0];
+
+ const target = Buffer.allocUnsafe(totalLength);
+ let offset = 0;
+
+ for (let i = 0; i < list.length; i++) {
+ const buf = list[i];
+ target.set(buf, offset);
+ offset += buf.length;
+ }
+
+ if (offset < totalLength) {
+ return new FastBuffer$2(target.buffer, target.byteOffset, offset);
+ }
+
+ return target;
+}
+
+/**
+ * Masks a buffer using the given mask.
+ *
+ * @param {Buffer} source The buffer to mask
+ * @param {Buffer} mask The mask to use
+ * @param {Buffer} output The buffer where to store the result
+ * @param {Number} offset The offset at which to start writing
+ * @param {Number} length The number of bytes to mask.
+ * @public
+ */
+function _mask(source, mask, output, offset, length) {
+ for (let i = 0; i < length; i++) {
+ output[offset + i] = source[i] ^ mask[i & 3];
+ }
+}
+
+/**
+ * Unmasks a buffer using the given mask.
+ *
+ * @param {Buffer} buffer The buffer to unmask
+ * @param {Buffer} mask The mask to use
+ * @public
+ */
+function _unmask(buffer, mask) {
+ for (let i = 0; i < buffer.length; i++) {
+ buffer[i] ^= mask[i & 3];
+ }
+}
+
+/**
+ * Converts a buffer to an `ArrayBuffer`.
+ *
+ * @param {Buffer} buf The buffer to convert
+ * @return {ArrayBuffer} Converted buffer
+ * @public
+ */
+function toArrayBuffer$1(buf) {
+ if (buf.length === buf.buffer.byteLength) {
+ return buf.buffer;
+ }
+
+ return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);
+}
+
+/**
+ * Converts `data` to a `Buffer`.
+ *
+ * @param {*} data The data to convert
+ * @return {Buffer} The buffer
+ * @throws {TypeError}
+ * @public
+ */
+function toBuffer$2(data) {
+ toBuffer$2.readOnly = true;
+
+ if (Buffer.isBuffer(data)) return data;
+
+ let buf;
+
+ if (data instanceof ArrayBuffer) {
+ buf = new FastBuffer$2(data);
+ } else if (ArrayBuffer.isView(data)) {
+ buf = new FastBuffer$2(data.buffer, data.byteOffset, data.byteLength);
+ } else {
+ buf = Buffer.from(data);
+ toBuffer$2.readOnly = false;
+ }
+
+ return buf;
+}
+
+bufferUtil$1.exports = {
+ concat: concat$1,
+ mask: _mask,
+ toArrayBuffer: toArrayBuffer$1,
+ toBuffer: toBuffer$2,
+ unmask: _unmask
+};
+
+/* istanbul ignore else */
+if (!process.env.WS_NO_BUFFER_UTIL) {
+ try {
+ const bufferUtil = require$$1;
+
+ mask = bufferUtil$1.exports.mask = function (source, mask, output, offset, length) {
+ if (length < 48) _mask(source, mask, output, offset, length);
+ else bufferUtil.mask(source, mask, output, offset, length);
+ };
+
+ unmask$1 = bufferUtil$1.exports.unmask = function (buffer, mask) {
+ if (buffer.length < 32) _unmask(buffer, mask);
+ else bufferUtil.unmask(buffer, mask);
+ };
+ } catch (e) {
+ // Continue regardless of the error.
+ }
+}
+
+var bufferUtilExports = bufferUtil$1.exports;
+
+const kDone = Symbol('kDone');
+const kRun = Symbol('kRun');
+
+/**
+ * A very simple job queue with adjustable concurrency. Adapted from
+ * https://github.com/STRML/async-limiter
+ */
+let Limiter$1 = class Limiter {
+ /**
+ * Creates a new `Limiter`.
+ *
+ * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed
+ * to run concurrently
+ */
+ constructor(concurrency) {
+ this[kDone] = () => {
+ this.pending--;
+ this[kRun]();
+ };
+ this.concurrency = concurrency || Infinity;
+ this.jobs = [];
+ this.pending = 0;
+ }
+
+ /**
+ * Adds a job to the queue.
+ *
+ * @param {Function} job The job to run
+ * @public
+ */
+ add(job) {
+ this.jobs.push(job);
+ this[kRun]();
+ }
+
+ /**
+ * Removes a job from the queue and runs it if possible.
+ *
+ * @private
+ */
+ [kRun]() {
+ if (this.pending === this.concurrency) return;
+
+ if (this.jobs.length) {
+ const job = this.jobs.shift();
+
+ this.pending++;
+ job(this[kDone]);
+ }
+ }
+};
+
+var limiter = Limiter$1;
+
+const zlib = require$$0;
+
+const bufferUtil = bufferUtilExports;
+const Limiter = limiter;
+const { kStatusCode: kStatusCode$2 } = constants;
+
+const FastBuffer$1 = Buffer[Symbol.species];
+const TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);
+const kPerMessageDeflate = Symbol('permessage-deflate');
+const kTotalLength = Symbol('total-length');
+const kCallback = Symbol('callback');
+const kBuffers = Symbol('buffers');
+const kError$1 = Symbol('error');
+
+//
+// We limit zlib concurrency, which prevents severe memory fragmentation
+// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913
+// and https://github.com/websockets/ws/issues/1202
+//
+// Intentionally global; it's the global thread pool that's an issue.
+//
+let zlibLimiter;
+
+/**
+ * permessage-deflate implementation.
+ */
+let PerMessageDeflate$3 = class PerMessageDeflate {
+ /**
+ * Creates a PerMessageDeflate instance.
+ *
+ * @param {Object} [options] Configuration options
+ * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support
+ * for, or request, a custom client window size
+ * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/
+ * acknowledge disabling of client context takeover
+ * @param {Number} [options.concurrencyLimit=10] The number of concurrent
+ * calls to zlib
+ * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the
+ * use of a custom server window size
+ * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept
+ * disabling of server context takeover
+ * @param {Number} [options.threshold=1024] Size (in bytes) below which
+ * messages should not be compressed if context takeover is disabled
+ * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on
+ * deflate
+ * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on
+ * inflate
+ * @param {Boolean} [isServer=false] Create the instance in either server or
+ * client mode
+ * @param {Number} [maxPayload=0] The maximum allowed message length
+ */
+ constructor(options, isServer, maxPayload) {
+ this._maxPayload = maxPayload | 0;
+ this._options = options || {};
+ this._threshold =
+ this._options.threshold !== undefined ? this._options.threshold : 1024;
+ this._isServer = !!isServer;
+ this._deflate = null;
+ this._inflate = null;
+
+ this.params = null;
+
+ if (!zlibLimiter) {
+ const concurrency =
+ this._options.concurrencyLimit !== undefined
+ ? this._options.concurrencyLimit
+ : 10;
+ zlibLimiter = new Limiter(concurrency);
+ }
+ }
+
+ /**
+ * @type {String}
+ */
+ static get extensionName() {
+ return 'permessage-deflate';
+ }
+
+ /**
+ * Create an extension negotiation offer.
+ *
+ * @return {Object} Extension parameters
+ * @public
+ */
+ offer() {
+ const params = {};
+
+ if (this._options.serverNoContextTakeover) {
+ params.server_no_context_takeover = true;
+ }
+ if (this._options.clientNoContextTakeover) {
+ params.client_no_context_takeover = true;
+ }
+ if (this._options.serverMaxWindowBits) {
+ params.server_max_window_bits = this._options.serverMaxWindowBits;
+ }
+ if (this._options.clientMaxWindowBits) {
+ params.client_max_window_bits = this._options.clientMaxWindowBits;
+ } else if (this._options.clientMaxWindowBits == null) {
+ params.client_max_window_bits = true;
+ }
+
+ return params;
+ }
+
+ /**
+ * Accept an extension negotiation offer/response.
+ *
+ * @param {Array} configurations The extension negotiation offers/reponse
+ * @return {Object} Accepted configuration
+ * @public
+ */
+ accept(configurations) {
+ configurations = this.normalizeParams(configurations);
+
+ this.params = this._isServer
+ ? this.acceptAsServer(configurations)
+ : this.acceptAsClient(configurations);
+
+ return this.params;
+ }
+
+ /**
+ * Releases all resources used by the extension.
+ *
+ * @public
+ */
+ cleanup() {
+ if (this._inflate) {
+ this._inflate.close();
+ this._inflate = null;
+ }
+
+ if (this._deflate) {
+ const callback = this._deflate[kCallback];
+
+ this._deflate.close();
+ this._deflate = null;
+
+ if (callback) {
+ callback(
+ new Error(
+ 'The deflate stream was closed while data was being processed'
+ )
+ );
+ }
+ }
+ }
+
+ /**
+ * Accept an extension negotiation offer.
+ *
+ * @param {Array} offers The extension negotiation offers
+ * @return {Object} Accepted configuration
+ * @private
+ */
+ acceptAsServer(offers) {
+ const opts = this._options;
+ const accepted = offers.find((params) => {
+ if (
+ (opts.serverNoContextTakeover === false &&
+ params.server_no_context_takeover) ||
+ (params.server_max_window_bits &&
+ (opts.serverMaxWindowBits === false ||
+ (typeof opts.serverMaxWindowBits === 'number' &&
+ opts.serverMaxWindowBits > params.server_max_window_bits))) ||
+ (typeof opts.clientMaxWindowBits === 'number' &&
+ !params.client_max_window_bits)
+ ) {
+ return false;
+ }
+
+ return true;
+ });
+
+ if (!accepted) {
+ throw new Error('None of the extension offers can be accepted');
+ }
+
+ if (opts.serverNoContextTakeover) {
+ accepted.server_no_context_takeover = true;
+ }
+ if (opts.clientNoContextTakeover) {
+ accepted.client_no_context_takeover = true;
+ }
+ if (typeof opts.serverMaxWindowBits === 'number') {
+ accepted.server_max_window_bits = opts.serverMaxWindowBits;
+ }
+ if (typeof opts.clientMaxWindowBits === 'number') {
+ accepted.client_max_window_bits = opts.clientMaxWindowBits;
+ } else if (
+ accepted.client_max_window_bits === true ||
+ opts.clientMaxWindowBits === false
+ ) {
+ delete accepted.client_max_window_bits;
+ }
+
+ return accepted;
+ }
+
+ /**
+ * Accept the extension negotiation response.
+ *
+ * @param {Array} response The extension negotiation response
+ * @return {Object} Accepted configuration
+ * @private
+ */
+ acceptAsClient(response) {
+ const params = response[0];
+
+ if (
+ this._options.clientNoContextTakeover === false &&
+ params.client_no_context_takeover
+ ) {
+ throw new Error('Unexpected parameter "client_no_context_takeover"');
+ }
+
+ if (!params.client_max_window_bits) {
+ if (typeof this._options.clientMaxWindowBits === 'number') {
+ params.client_max_window_bits = this._options.clientMaxWindowBits;
+ }
+ } else if (
+ this._options.clientMaxWindowBits === false ||
+ (typeof this._options.clientMaxWindowBits === 'number' &&
+ params.client_max_window_bits > this._options.clientMaxWindowBits)
+ ) {
+ throw new Error(
+ 'Unexpected or invalid parameter "client_max_window_bits"'
+ );
+ }
+
+ return params;
+ }
+
+ /**
+ * Normalize parameters.
+ *
+ * @param {Array} configurations The extension negotiation offers/reponse
+ * @return {Array} The offers/response with normalized parameters
+ * @private
+ */
+ normalizeParams(configurations) {
+ configurations.forEach((params) => {
+ Object.keys(params).forEach((key) => {
+ let value = params[key];
+
+ if (value.length > 1) {
+ throw new Error(`Parameter "${key}" must have only a single value`);
+ }
+
+ value = value[0];
+
+ if (key === 'client_max_window_bits') {
+ if (value !== true) {
+ const num = +value;
+ if (!Number.isInteger(num) || num < 8 || num > 15) {
+ throw new TypeError(
+ `Invalid value for parameter "${key}": ${value}`
+ );
+ }
+ value = num;
+ } else if (!this._isServer) {
+ throw new TypeError(
+ `Invalid value for parameter "${key}": ${value}`
+ );
+ }
+ } else if (key === 'server_max_window_bits') {
+ const num = +value;
+ if (!Number.isInteger(num) || num < 8 || num > 15) {
+ throw new TypeError(
+ `Invalid value for parameter "${key}": ${value}`
+ );
+ }
+ value = num;
+ } else if (
+ key === 'client_no_context_takeover' ||
+ key === 'server_no_context_takeover'
+ ) {
+ if (value !== true) {
+ throw new TypeError(
+ `Invalid value for parameter "${key}": ${value}`
+ );
+ }
+ } else {
+ throw new Error(`Unknown parameter "${key}"`);
+ }
+
+ params[key] = value;
+ });
+ });
+
+ return configurations;
+ }
+
+ /**
+ * Decompress data. Concurrency limited.
+ *
+ * @param {Buffer} data Compressed data
+ * @param {Boolean} fin Specifies whether or not this is the last fragment
+ * @param {Function} callback Callback
+ * @public
+ */
+ decompress(data, fin, callback) {
+ zlibLimiter.add((done) => {
+ this._decompress(data, fin, (err, result) => {
+ done();
+ callback(err, result);
+ });
+ });
+ }
+
+ /**
+ * Compress data. Concurrency limited.
+ *
+ * @param {(Buffer|String)} data Data to compress
+ * @param {Boolean} fin Specifies whether or not this is the last fragment
+ * @param {Function} callback Callback
+ * @public
+ */
+ compress(data, fin, callback) {
+ zlibLimiter.add((done) => {
+ this._compress(data, fin, (err, result) => {
+ done();
+ callback(err, result);
+ });
+ });
+ }
+
+ /**
+ * Decompress data.
+ *
+ * @param {Buffer} data Compressed data
+ * @param {Boolean} fin Specifies whether or not this is the last fragment
+ * @param {Function} callback Callback
+ * @private
+ */
+ _decompress(data, fin, callback) {
+ const endpoint = this._isServer ? 'client' : 'server';
+
+ if (!this._inflate) {
+ const key = `${endpoint}_max_window_bits`;
+ const windowBits =
+ typeof this.params[key] !== 'number'
+ ? zlib.Z_DEFAULT_WINDOWBITS
+ : this.params[key];
+
+ this._inflate = zlib.createInflateRaw({
+ ...this._options.zlibInflateOptions,
+ windowBits
+ });
+ this._inflate[kPerMessageDeflate] = this;
+ this._inflate[kTotalLength] = 0;
+ this._inflate[kBuffers] = [];
+ this._inflate.on('error', inflateOnError);
+ this._inflate.on('data', inflateOnData);
+ }
+
+ this._inflate[kCallback] = callback;
+
+ this._inflate.write(data);
+ if (fin) this._inflate.write(TRAILER);
+
+ this._inflate.flush(() => {
+ const err = this._inflate[kError$1];
+
+ if (err) {
+ this._inflate.close();
+ this._inflate = null;
+ callback(err);
+ return;
+ }
+
+ const data = bufferUtil.concat(
+ this._inflate[kBuffers],
+ this._inflate[kTotalLength]
+ );
+
+ if (this._inflate._readableState.endEmitted) {
+ this._inflate.close();
+ this._inflate = null;
+ } else {
+ this._inflate[kTotalLength] = 0;
+ this._inflate[kBuffers] = [];
+
+ if (fin && this.params[`${endpoint}_no_context_takeover`]) {
+ this._inflate.reset();
+ }
+ }
+
+ callback(null, data);
+ });
+ }
+
+ /**
+ * Compress data.
+ *
+ * @param {(Buffer|String)} data Data to compress
+ * @param {Boolean} fin Specifies whether or not this is the last fragment
+ * @param {Function} callback Callback
+ * @private
+ */
+ _compress(data, fin, callback) {
+ const endpoint = this._isServer ? 'server' : 'client';
+
+ if (!this._deflate) {
+ const key = `${endpoint}_max_window_bits`;
+ const windowBits =
+ typeof this.params[key] !== 'number'
+ ? zlib.Z_DEFAULT_WINDOWBITS
+ : this.params[key];
+
+ this._deflate = zlib.createDeflateRaw({
+ ...this._options.zlibDeflateOptions,
+ windowBits
+ });
+
+ this._deflate[kTotalLength] = 0;
+ this._deflate[kBuffers] = [];
+
+ this._deflate.on('data', deflateOnData);
+ }
+
+ this._deflate[kCallback] = callback;
+
+ this._deflate.write(data);
+ this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {
+ if (!this._deflate) {
+ //
+ // The deflate stream was closed while data was being processed.
+ //
+ return;
+ }
+
+ let data = bufferUtil.concat(
+ this._deflate[kBuffers],
+ this._deflate[kTotalLength]
+ );
+
+ if (fin) {
+ data = new FastBuffer$1(data.buffer, data.byteOffset, data.length - 4);
+ }
+
+ //
+ // Ensure that the callback will not be called again in
+ // `PerMessageDeflate#cleanup()`.
+ //
+ this._deflate[kCallback] = null;
+
+ this._deflate[kTotalLength] = 0;
+ this._deflate[kBuffers] = [];
+
+ if (fin && this.params[`${endpoint}_no_context_takeover`]) {
+ this._deflate.reset();
+ }
+
+ callback(null, data);
+ });
+ }
+};
+
+var permessageDeflate = PerMessageDeflate$3;
+
+/**
+ * The listener of the `zlib.DeflateRaw` stream `'data'` event.
+ *
+ * @param {Buffer} chunk A chunk of data
+ * @private
+ */
+function deflateOnData(chunk) {
+ this[kBuffers].push(chunk);
+ this[kTotalLength] += chunk.length;
+}
+
+/**
+ * The listener of the `zlib.InflateRaw` stream `'data'` event.
+ *
+ * @param {Buffer} chunk A chunk of data
+ * @private
+ */
+function inflateOnData(chunk) {
+ this[kTotalLength] += chunk.length;
+
+ if (
+ this[kPerMessageDeflate]._maxPayload < 1 ||
+ this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload
+ ) {
+ this[kBuffers].push(chunk);
+ return;
+ }
+
+ this[kError$1] = new RangeError('Max payload size exceeded');
+ this[kError$1].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';
+ this[kError$1][kStatusCode$2] = 1009;
+ this.removeListener('data', inflateOnData);
+ this.reset();
+}
+
+/**
+ * The listener of the `zlib.InflateRaw` stream `'error'` event.
+ *
+ * @param {Error} err The emitted error
+ * @private
+ */
+function inflateOnError(err) {
+ //
+ // There is no need to call `Zlib#close()` as the handle is automatically
+ // closed when an error is emitted.
+ //
+ this[kPerMessageDeflate]._inflate = null;
+ err[kStatusCode$2] = 1007;
+ this[kCallback](err);
+}
+
+var validation = {exports: {}};
+
+const __viteOptionalPeerDep_utf8Validate_ws = {};
+
+const __viteOptionalPeerDep_utf8Validate_ws$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
+ __proto__: null,
+ default: __viteOptionalPeerDep_utf8Validate_ws
+}, Symbol.toStringTag, { value: 'Module' }));
+
+const require$$2 = /*@__PURE__*/getAugmentedNamespace(__viteOptionalPeerDep_utf8Validate_ws$1);
+
+var isValidUTF8_1;
+
+const { isUtf8 } = require$$0$1;
+
+const { hasBlob } = constants;
+
+//
+// Allowed token characters:
+//
+// '!', '#', '$', '%', '&', ''', '*', '+', '-',
+// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'
+//
+// tokenChars[32] === 0 // ' '
+// tokenChars[33] === 1 // '!'
+// tokenChars[34] === 0 // '"'
+// ...
+//
+// prettier-ignore
+const tokenChars$1 = [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31
+ 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127
+];
+
+/**
+ * Checks if a status code is allowed in a close frame.
+ *
+ * @param {Number} code The status code
+ * @return {Boolean} `true` if the status code is valid, else `false`
+ * @public
+ */
+function isValidStatusCode$2(code) {
+ return (
+ (code >= 1000 &&
+ code <= 1014 &&
+ code !== 1004 &&
+ code !== 1005 &&
+ code !== 1006) ||
+ (code >= 3000 && code <= 4999)
+ );
+}
+
+/**
+ * Checks if a given buffer contains only correct UTF-8.
+ * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by
+ * Markus Kuhn.
+ *
+ * @param {Buffer} buf The buffer to check
+ * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`
+ * @public
+ */
+function _isValidUTF8(buf) {
+ const len = buf.length;
+ let i = 0;
+
+ while (i < len) {
+ if ((buf[i] & 0x80) === 0) {
+ // 0xxxxxxx
+ i++;
+ } else if ((buf[i] & 0xe0) === 0xc0) {
+ // 110xxxxx 10xxxxxx
+ if (
+ i + 1 === len ||
+ (buf[i + 1] & 0xc0) !== 0x80 ||
+ (buf[i] & 0xfe) === 0xc0 // Overlong
+ ) {
+ return false;
+ }
+
+ i += 2;
+ } else if ((buf[i] & 0xf0) === 0xe0) {
+ // 1110xxxx 10xxxxxx 10xxxxxx
+ if (
+ i + 2 >= len ||
+ (buf[i + 1] & 0xc0) !== 0x80 ||
+ (buf[i + 2] & 0xc0) !== 0x80 ||
+ (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong
+ (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)
+ ) {
+ return false;
+ }
+
+ i += 3;
+ } else if ((buf[i] & 0xf8) === 0xf0) {
+ // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ if (
+ i + 3 >= len ||
+ (buf[i + 1] & 0xc0) !== 0x80 ||
+ (buf[i + 2] & 0xc0) !== 0x80 ||
+ (buf[i + 3] & 0xc0) !== 0x80 ||
+ (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong
+ (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||
+ buf[i] > 0xf4 // > U+10FFFF
+ ) {
+ return false;
+ }
+
+ i += 4;
+ } else {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+/**
+ * Determines whether a value is a `Blob`.
+ *
+ * @param {*} value The value to be tested
+ * @return {Boolean} `true` if `value` is a `Blob`, else `false`
+ * @private
+ */
+function isBlob$2(value) {
+ return (
+ hasBlob &&
+ typeof value === 'object' &&
+ typeof value.arrayBuffer === 'function' &&
+ typeof value.type === 'string' &&
+ typeof value.stream === 'function' &&
+ (value[Symbol.toStringTag] === 'Blob' ||
+ value[Symbol.toStringTag] === 'File')
+ );
+}
+
+validation.exports = {
+ isBlob: isBlob$2,
+ isValidStatusCode: isValidStatusCode$2,
+ isValidUTF8: _isValidUTF8,
+ tokenChars: tokenChars$1
+};
+
+if (isUtf8) {
+ isValidUTF8_1 = validation.exports.isValidUTF8 = function (buf) {
+ return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);
+ };
+} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {
+ try {
+ const isValidUTF8 = require$$2;
+
+ isValidUTF8_1 = validation.exports.isValidUTF8 = function (buf) {
+ return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);
+ };
+ } catch (e) {
+ // Continue regardless of the error.
+ }
+}
+
+var validationExports = validation.exports;
+
+const { Writable } = require$$0$2;
+
+const PerMessageDeflate$2 = permessageDeflate;
+const {
+ BINARY_TYPES: BINARY_TYPES$1,
+ EMPTY_BUFFER: EMPTY_BUFFER$2,
+ kStatusCode: kStatusCode$1,
+ kWebSocket: kWebSocket$2
+} = constants;
+const { concat, toArrayBuffer, unmask } = bufferUtilExports;
+const { isValidStatusCode: isValidStatusCode$1, isValidUTF8 } = validationExports;
+
+const FastBuffer = Buffer[Symbol.species];
+
+const GET_INFO = 0;
+const GET_PAYLOAD_LENGTH_16 = 1;
+const GET_PAYLOAD_LENGTH_64 = 2;
+const GET_MASK = 3;
+const GET_DATA = 4;
+const INFLATING = 5;
+const DEFER_EVENT = 6;
+
+/**
+ * HyBi Receiver implementation.
+ *
+ * @extends Writable
+ */
+let Receiver$1 = class Receiver extends Writable {
+ /**
+ * Creates a Receiver instance.
+ *
+ * @param {Object} [options] Options object
+ * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether
+ * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted
+ * multiple times in the same tick
+ * @param {String} [options.binaryType=nodebuffer] The type for binary data
+ * @param {Object} [options.extensions] An object containing the negotiated
+ * extensions
+ * @param {Boolean} [options.isServer=false] Specifies whether to operate in
+ * client or server mode
+ * @param {Number} [options.maxPayload=0] The maximum allowed message length
+ * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or
+ * not to skip UTF-8 validation for text and close messages
+ */
+ constructor(options = {}) {
+ super();
+
+ this._allowSynchronousEvents =
+ options.allowSynchronousEvents !== undefined
+ ? options.allowSynchronousEvents
+ : true;
+ this._binaryType = options.binaryType || BINARY_TYPES$1[0];
+ this._extensions = options.extensions || {};
+ this._isServer = !!options.isServer;
+ this._maxPayload = options.maxPayload | 0;
+ this._skipUTF8Validation = !!options.skipUTF8Validation;
+ this[kWebSocket$2] = undefined;
+
+ this._bufferedBytes = 0;
+ this._buffers = [];
+
+ this._compressed = false;
+ this._payloadLength = 0;
+ this._mask = undefined;
+ this._fragmented = 0;
+ this._masked = false;
+ this._fin = false;
+ this._opcode = 0;
+
+ this._totalPayloadLength = 0;
+ this._messageLength = 0;
+ this._fragments = [];
+
+ this._errored = false;
+ this._loop = false;
+ this._state = GET_INFO;
+ }
+
+ /**
+ * Implements `Writable.prototype._write()`.
+ *
+ * @param {Buffer} chunk The chunk of data to write
+ * @param {String} encoding The character encoding of `chunk`
+ * @param {Function} cb Callback
+ * @private
+ */
+ _write(chunk, encoding, cb) {
+ if (this._opcode === 0x08 && this._state == GET_INFO) return cb();
+
+ this._bufferedBytes += chunk.length;
+ this._buffers.push(chunk);
+ this.startLoop(cb);
+ }
+
+ /**
+ * Consumes `n` bytes from the buffered data.
+ *
+ * @param {Number} n The number of bytes to consume
+ * @return {Buffer} The consumed bytes
+ * @private
+ */
+ consume(n) {
+ this._bufferedBytes -= n;
+
+ if (n === this._buffers[0].length) return this._buffers.shift();
+
+ if (n < this._buffers[0].length) {
+ const buf = this._buffers[0];
+ this._buffers[0] = new FastBuffer(
+ buf.buffer,
+ buf.byteOffset + n,
+ buf.length - n
+ );
+
+ return new FastBuffer(buf.buffer, buf.byteOffset, n);
+ }
+
+ const dst = Buffer.allocUnsafe(n);
+
+ do {
+ const buf = this._buffers[0];
+ const offset = dst.length - n;
+
+ if (n >= buf.length) {
+ dst.set(this._buffers.shift(), offset);
+ } else {
+ dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);
+ this._buffers[0] = new FastBuffer(
+ buf.buffer,
+ buf.byteOffset + n,
+ buf.length - n
+ );
+ }
+
+ n -= buf.length;
+ } while (n > 0);
+
+ return dst;
+ }
+
+ /**
+ * Starts the parsing loop.
+ *
+ * @param {Function} cb Callback
+ * @private
+ */
+ startLoop(cb) {
+ this._loop = true;
+
+ do {
+ switch (this._state) {
+ case GET_INFO:
+ this.getInfo(cb);
+ break;
+ case GET_PAYLOAD_LENGTH_16:
+ this.getPayloadLength16(cb);
+ break;
+ case GET_PAYLOAD_LENGTH_64:
+ this.getPayloadLength64(cb);
+ break;
+ case GET_MASK:
+ this.getMask();
+ break;
+ case GET_DATA:
+ this.getData(cb);
+ break;
+ case INFLATING:
+ case DEFER_EVENT:
+ this._loop = false;
+ return;
+ }
+ } while (this._loop);
+
+ if (!this._errored) cb();
+ }
+
+ /**
+ * Reads the first two bytes of a frame.
+ *
+ * @param {Function} cb Callback
+ * @private
+ */
+ getInfo(cb) {
+ if (this._bufferedBytes < 2) {
+ this._loop = false;
+ return;
+ }
+
+ const buf = this.consume(2);
+
+ if ((buf[0] & 0x30) !== 0x00) {
+ const error = this.createError(
+ RangeError,
+ 'RSV2 and RSV3 must be clear',
+ true,
+ 1002,
+ 'WS_ERR_UNEXPECTED_RSV_2_3'
+ );
+
+ cb(error);
+ return;
+ }
+
+ const compressed = (buf[0] & 0x40) === 0x40;
+
+ if (compressed && !this._extensions[PerMessageDeflate$2.extensionName]) {
+ const error = this.createError(
+ RangeError,
+ 'RSV1 must be clear',
+ true,
+ 1002,
+ 'WS_ERR_UNEXPECTED_RSV_1'
+ );
+
+ cb(error);
+ return;
+ }
+
+ this._fin = (buf[0] & 0x80) === 0x80;
+ this._opcode = buf[0] & 0x0f;
+ this._payloadLength = buf[1] & 0x7f;
+
+ if (this._opcode === 0x00) {
+ if (compressed) {
+ const error = this.createError(
+ RangeError,
+ 'RSV1 must be clear',
+ true,
+ 1002,
+ 'WS_ERR_UNEXPECTED_RSV_1'
+ );
+
+ cb(error);
+ return;
+ }
+
+ if (!this._fragmented) {
+ const error = this.createError(
+ RangeError,
+ 'invalid opcode 0',
+ true,
+ 1002,
+ 'WS_ERR_INVALID_OPCODE'
+ );
+
+ cb(error);
+ return;
+ }
+
+ this._opcode = this._fragmented;
+ } else if (this._opcode === 0x01 || this._opcode === 0x02) {
+ if (this._fragmented) {
+ const error = this.createError(
+ RangeError,
+ `invalid opcode ${this._opcode}`,
+ true,
+ 1002,
+ 'WS_ERR_INVALID_OPCODE'
+ );
+
+ cb(error);
+ return;
+ }
+
+ this._compressed = compressed;
+ } else if (this._opcode > 0x07 && this._opcode < 0x0b) {
+ if (!this._fin) {
+ const error = this.createError(
+ RangeError,
+ 'FIN must be set',
+ true,
+ 1002,
+ 'WS_ERR_EXPECTED_FIN'
+ );
+
+ cb(error);
+ return;
+ }
+
+ if (compressed) {
+ const error = this.createError(
+ RangeError,
+ 'RSV1 must be clear',
+ true,
+ 1002,
+ 'WS_ERR_UNEXPECTED_RSV_1'
+ );
+
+ cb(error);
+ return;
+ }
+
+ if (
+ this._payloadLength > 0x7d ||
+ (this._opcode === 0x08 && this._payloadLength === 1)
+ ) {
+ const error = this.createError(
+ RangeError,
+ `invalid payload length ${this._payloadLength}`,
+ true,
+ 1002,
+ 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'
+ );
+
+ cb(error);
+ return;
+ }
+ } else {
+ const error = this.createError(
+ RangeError,
+ `invalid opcode ${this._opcode}`,
+ true,
+ 1002,
+ 'WS_ERR_INVALID_OPCODE'
+ );
+
+ cb(error);
+ return;
+ }
+
+ if (!this._fin && !this._fragmented) this._fragmented = this._opcode;
+ this._masked = (buf[1] & 0x80) === 0x80;
+
+ if (this._isServer) {
+ if (!this._masked) {
+ const error = this.createError(
+ RangeError,
+ 'MASK must be set',
+ true,
+ 1002,
+ 'WS_ERR_EXPECTED_MASK'
+ );
+
+ cb(error);
+ return;
+ }
+ } else if (this._masked) {
+ const error = this.createError(
+ RangeError,
+ 'MASK must be clear',
+ true,
+ 1002,
+ 'WS_ERR_UNEXPECTED_MASK'
+ );
+
+ cb(error);
+ return;
+ }
+
+ if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;
+ else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;
+ else this.haveLength(cb);
+ }
+
+ /**
+ * Gets extended payload length (7+16).
+ *
+ * @param {Function} cb Callback
+ * @private
+ */
+ getPayloadLength16(cb) {
+ if (this._bufferedBytes < 2) {
+ this._loop = false;
+ return;
+ }
+
+ this._payloadLength = this.consume(2).readUInt16BE(0);
+ this.haveLength(cb);
+ }
+
+ /**
+ * Gets extended payload length (7+64).
+ *
+ * @param {Function} cb Callback
+ * @private
+ */
+ getPayloadLength64(cb) {
+ if (this._bufferedBytes < 8) {
+ this._loop = false;
+ return;
+ }
+
+ const buf = this.consume(8);
+ const num = buf.readUInt32BE(0);
+
+ //
+ // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned
+ // if payload length is greater than this number.
+ //
+ if (num > Math.pow(2, 53 - 32) - 1) {
+ const error = this.createError(
+ RangeError,
+ 'Unsupported WebSocket frame: payload length > 2^53 - 1',
+ false,
+ 1009,
+ 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'
+ );
+
+ cb(error);
+ return;
+ }
+
+ this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);
+ this.haveLength(cb);
+ }
+
+ /**
+ * Payload length has been read.
+ *
+ * @param {Function} cb Callback
+ * @private
+ */
+ haveLength(cb) {
+ if (this._payloadLength && this._opcode < 0x08) {
+ this._totalPayloadLength += this._payloadLength;
+ if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {
+ const error = this.createError(
+ RangeError,
+ 'Max payload size exceeded',
+ false,
+ 1009,
+ 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'
+ );
+
+ cb(error);
+ return;
+ }
+ }
+
+ if (this._masked) this._state = GET_MASK;
+ else this._state = GET_DATA;
+ }
+
+ /**
+ * Reads mask bytes.
+ *
+ * @private
+ */
+ getMask() {
+ if (this._bufferedBytes < 4) {
+ this._loop = false;
+ return;
+ }
+
+ this._mask = this.consume(4);
+ this._state = GET_DATA;
+ }
+
+ /**
+ * Reads data bytes.
+ *
+ * @param {Function} cb Callback
+ * @private
+ */
+ getData(cb) {
+ let data = EMPTY_BUFFER$2;
+
+ if (this._payloadLength) {
+ if (this._bufferedBytes < this._payloadLength) {
+ this._loop = false;
+ return;
+ }
+
+ data = this.consume(this._payloadLength);
+
+ if (
+ this._masked &&
+ (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0
+ ) {
+ unmask(data, this._mask);
+ }
+ }
+
+ if (this._opcode > 0x07) {
+ this.controlMessage(data, cb);
+ return;
+ }
+
+ if (this._compressed) {
+ this._state = INFLATING;
+ this.decompress(data, cb);
+ return;
+ }
+
+ if (data.length) {
+ //
+ // This message is not compressed so its length is the sum of the payload
+ // length of all fragments.
+ //
+ this._messageLength = this._totalPayloadLength;
+ this._fragments.push(data);
+ }
+
+ this.dataMessage(cb);
+ }
+
+ /**
+ * Decompresses data.
+ *
+ * @param {Buffer} data Compressed data
+ * @param {Function} cb Callback
+ * @private
+ */
+ decompress(data, cb) {
+ const perMessageDeflate = this._extensions[PerMessageDeflate$2.extensionName];
+
+ perMessageDeflate.decompress(data, this._fin, (err, buf) => {
+ if (err) return cb(err);
+
+ if (buf.length) {
+ this._messageLength += buf.length;
+ if (this._messageLength > this._maxPayload && this._maxPayload > 0) {
+ const error = this.createError(
+ RangeError,
+ 'Max payload size exceeded',
+ false,
+ 1009,
+ 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'
+ );
+
+ cb(error);
+ return;
+ }
+
+ this._fragments.push(buf);
+ }
+
+ this.dataMessage(cb);
+ if (this._state === GET_INFO) this.startLoop(cb);
+ });
+ }
+
+ /**
+ * Handles a data message.
+ *
+ * @param {Function} cb Callback
+ * @private
+ */
+ dataMessage(cb) {
+ if (!this._fin) {
+ this._state = GET_INFO;
+ return;
+ }
+
+ const messageLength = this._messageLength;
+ const fragments = this._fragments;
+
+ this._totalPayloadLength = 0;
+ this._messageLength = 0;
+ this._fragmented = 0;
+ this._fragments = [];
+
+ if (this._opcode === 2) {
+ let data;
+
+ if (this._binaryType === 'nodebuffer') {
+ data = concat(fragments, messageLength);
+ } else if (this._binaryType === 'arraybuffer') {
+ data = toArrayBuffer(concat(fragments, messageLength));
+ } else if (this._binaryType === 'blob') {
+ data = new Blob(fragments);
+ } else {
+ data = fragments;
+ }
+
+ if (this._allowSynchronousEvents) {
+ this.emit('message', data, true);
+ this._state = GET_INFO;
+ } else {
+ this._state = DEFER_EVENT;
+ setImmediate(() => {
+ this.emit('message', data, true);
+ this._state = GET_INFO;
+ this.startLoop(cb);
+ });
+ }
+ } else {
+ const buf = concat(fragments, messageLength);
+
+ if (!this._skipUTF8Validation && !isValidUTF8(buf)) {
+ const error = this.createError(
+ Error,
+ 'invalid UTF-8 sequence',
+ true,
+ 1007,
+ 'WS_ERR_INVALID_UTF8'
+ );
+
+ cb(error);
+ return;
+ }
+
+ if (this._state === INFLATING || this._allowSynchronousEvents) {
+ this.emit('message', buf, false);
+ this._state = GET_INFO;
+ } else {
+ this._state = DEFER_EVENT;
+ setImmediate(() => {
+ this.emit('message', buf, false);
+ this._state = GET_INFO;
+ this.startLoop(cb);
+ });
+ }
+ }
+ }
+
+ /**
+ * Handles a control message.
+ *
+ * @param {Buffer} data Data to handle
+ * @return {(Error|RangeError|undefined)} A possible error
+ * @private
+ */
+ controlMessage(data, cb) {
+ if (this._opcode === 0x08) {
+ if (data.length === 0) {
+ this._loop = false;
+ this.emit('conclude', 1005, EMPTY_BUFFER$2);
+ this.end();
+ } else {
+ const code = data.readUInt16BE(0);
+
+ if (!isValidStatusCode$1(code)) {
+ const error = this.createError(
+ RangeError,
+ `invalid status code ${code}`,
+ true,
+ 1002,
+ 'WS_ERR_INVALID_CLOSE_CODE'
+ );
+
+ cb(error);
+ return;
+ }
+
+ const buf = new FastBuffer(
+ data.buffer,
+ data.byteOffset + 2,
+ data.length - 2
+ );
+
+ if (!this._skipUTF8Validation && !isValidUTF8(buf)) {
+ const error = this.createError(
+ Error,
+ 'invalid UTF-8 sequence',
+ true,
+ 1007,
+ 'WS_ERR_INVALID_UTF8'
+ );
+
+ cb(error);
+ return;
+ }
+
+ this._loop = false;
+ this.emit('conclude', code, buf);
+ this.end();
+ }
+
+ this._state = GET_INFO;
+ return;
+ }
+
+ if (this._allowSynchronousEvents) {
+ this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);
+ this._state = GET_INFO;
+ } else {
+ this._state = DEFER_EVENT;
+ setImmediate(() => {
+ this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);
+ this._state = GET_INFO;
+ this.startLoop(cb);
+ });
+ }
+ }
+
+ /**
+ * Builds an error object.
+ *
+ * @param {function(new:Error|RangeError)} ErrorCtor The error constructor
+ * @param {String} message The error message
+ * @param {Boolean} prefix Specifies whether or not to add a default prefix to
+ * `message`
+ * @param {Number} statusCode The status code
+ * @param {String} errorCode The exposed error code
+ * @return {(Error|RangeError)} The error
+ * @private
+ */
+ createError(ErrorCtor, message, prefix, statusCode, errorCode) {
+ this._loop = false;
+ this._errored = true;
+
+ const err = new ErrorCtor(
+ prefix ? `Invalid WebSocket frame: ${message}` : message
+ );
+
+ Error.captureStackTrace(err, this.createError);
+ err.code = errorCode;
+ err[kStatusCode$1] = statusCode;
+ return err;
+ }
+};
+
+var receiver = Receiver$1;
+
+/* eslint no-unused-vars: ["error", { "varsIgnorePattern": "^Duplex" }] */
+const { randomFillSync } = require$$1$1;
+
+const PerMessageDeflate$1 = permessageDeflate;
+const { EMPTY_BUFFER: EMPTY_BUFFER$1, kWebSocket: kWebSocket$1, NOOP: NOOP$1 } = constants;
+const { isBlob: isBlob$1, isValidStatusCode } = validationExports;
+const { mask: applyMask, toBuffer: toBuffer$1 } = bufferUtilExports;
+
+const kByteLength = Symbol('kByteLength');
+const maskBuffer = Buffer.alloc(4);
+const RANDOM_POOL_SIZE = 8 * 1024;
+let randomPool;
+let randomPoolPointer = RANDOM_POOL_SIZE;
+
+const DEFAULT = 0;
+const DEFLATING = 1;
+const GET_BLOB_DATA = 2;
+
+/**
+ * HyBi Sender implementation.
+ */
+let Sender$1 = class Sender {
+ /**
+ * Creates a Sender instance.
+ *
+ * @param {Duplex} socket The connection socket
+ * @param {Object} [extensions] An object containing the negotiated extensions
+ * @param {Function} [generateMask] The function used to generate the masking
+ * key
+ */
+ constructor(socket, extensions, generateMask) {
+ this._extensions = extensions || {};
+
+ if (generateMask) {
+ this._generateMask = generateMask;
+ this._maskBuffer = Buffer.alloc(4);
+ }
+
+ this._socket = socket;
+
+ this._firstFragment = true;
+ this._compress = false;
+
+ this._bufferedBytes = 0;
+ this._queue = [];
+ this._state = DEFAULT;
+ this.onerror = NOOP$1;
+ this[kWebSocket$1] = undefined;
+ }
+
+ /**
+ * Frames a piece of data according to the HyBi WebSocket protocol.
+ *
+ * @param {(Buffer|String)} data The data to frame
+ * @param {Object} options Options object
+ * @param {Boolean} [options.fin=false] Specifies whether or not to set the
+ * FIN bit
+ * @param {Function} [options.generateMask] The function used to generate the
+ * masking key
+ * @param {Boolean} [options.mask=false] Specifies whether or not to mask
+ * `data`
+ * @param {Buffer} [options.maskBuffer] The buffer used to store the masking
+ * key
+ * @param {Number} options.opcode The opcode
+ * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be
+ * modified
+ * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the
+ * RSV1 bit
+ * @return {(Buffer|String)[]} The framed data
+ * @public
+ */
+ static frame(data, options) {
+ let mask;
+ let merge = false;
+ let offset = 2;
+ let skipMasking = false;
+
+ if (options.mask) {
+ mask = options.maskBuffer || maskBuffer;
+
+ if (options.generateMask) {
+ options.generateMask(mask);
+ } else {
+ if (randomPoolPointer === RANDOM_POOL_SIZE) {
+ /* istanbul ignore else */
+ if (randomPool === undefined) {
+ //
+ // This is lazily initialized because server-sent frames must not
+ // be masked so it may never be used.
+ //
+ randomPool = Buffer.alloc(RANDOM_POOL_SIZE);
+ }
+
+ randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);
+ randomPoolPointer = 0;
+ }
+
+ mask[0] = randomPool[randomPoolPointer++];
+ mask[1] = randomPool[randomPoolPointer++];
+ mask[2] = randomPool[randomPoolPointer++];
+ mask[3] = randomPool[randomPoolPointer++];
+ }
+
+ skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;
+ offset = 6;
+ }
+
+ let dataLength;
+
+ if (typeof data === 'string') {
+ if (
+ (!options.mask || skipMasking) &&
+ options[kByteLength] !== undefined
+ ) {
+ dataLength = options[kByteLength];
+ } else {
+ data = Buffer.from(data);
+ dataLength = data.length;
+ }
+ } else {
+ dataLength = data.length;
+ merge = options.mask && options.readOnly && !skipMasking;
+ }
+
+ let payloadLength = dataLength;
+
+ if (dataLength >= 65536) {
+ offset += 8;
+ payloadLength = 127;
+ } else if (dataLength > 125) {
+ offset += 2;
+ payloadLength = 126;
+ }
+
+ const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);
+
+ target[0] = options.fin ? options.opcode | 0x80 : options.opcode;
+ if (options.rsv1) target[0] |= 0x40;
+
+ target[1] = payloadLength;
+
+ if (payloadLength === 126) {
+ target.writeUInt16BE(dataLength, 2);
+ } else if (payloadLength === 127) {
+ target[2] = target[3] = 0;
+ target.writeUIntBE(dataLength, 4, 6);
+ }
+
+ if (!options.mask) return [target, data];
+
+ target[1] |= 0x80;
+ target[offset - 4] = mask[0];
+ target[offset - 3] = mask[1];
+ target[offset - 2] = mask[2];
+ target[offset - 1] = mask[3];
+
+ if (skipMasking) return [target, data];
+
+ if (merge) {
+ applyMask(data, mask, target, offset, dataLength);
+ return [target];
+ }
+
+ applyMask(data, mask, data, 0, dataLength);
+ return [target, data];
+ }
+
+ /**
+ * Sends a close message to the other peer.
+ *
+ * @param {Number} [code] The status code component of the body
+ * @param {(String|Buffer)} [data] The message component of the body
+ * @param {Boolean} [mask=false] Specifies whether or not to mask the message
+ * @param {Function} [cb] Callback
+ * @public
+ */
+ close(code, data, mask, cb) {
+ let buf;
+
+ if (code === undefined) {
+ buf = EMPTY_BUFFER$1;
+ } else if (typeof code !== 'number' || !isValidStatusCode(code)) {
+ throw new TypeError('First argument must be a valid error code number');
+ } else if (data === undefined || !data.length) {
+ buf = Buffer.allocUnsafe(2);
+ buf.writeUInt16BE(code, 0);
+ } else {
+ const length = Buffer.byteLength(data);
+
+ if (length > 123) {
+ throw new RangeError('The message must not be greater than 123 bytes');
+ }
+
+ buf = Buffer.allocUnsafe(2 + length);
+ buf.writeUInt16BE(code, 0);
+
+ if (typeof data === 'string') {
+ buf.write(data, 2);
+ } else {
+ buf.set(data, 2);
+ }
+ }
+
+ const options = {
+ [kByteLength]: buf.length,
+ fin: true,
+ generateMask: this._generateMask,
+ mask,
+ maskBuffer: this._maskBuffer,
+ opcode: 0x08,
+ readOnly: false,
+ rsv1: false
+ };
+
+ if (this._state !== DEFAULT) {
+ this.enqueue([this.dispatch, buf, false, options, cb]);
+ } else {
+ this.sendFrame(Sender.frame(buf, options), cb);
+ }
+ }
+
+ /**
+ * Sends a ping message to the other peer.
+ *
+ * @param {*} data The message to send
+ * @param {Boolean} [mask=false] Specifies whether or not to mask `data`
+ * @param {Function} [cb] Callback
+ * @public
+ */
+ ping(data, mask, cb) {
+ let byteLength;
+ let readOnly;
+
+ if (typeof data === 'string') {
+ byteLength = Buffer.byteLength(data);
+ readOnly = false;
+ } else if (isBlob$1(data)) {
+ byteLength = data.size;
+ readOnly = false;
+ } else {
+ data = toBuffer$1(data);
+ byteLength = data.length;
+ readOnly = toBuffer$1.readOnly;
+ }
+
+ if (byteLength > 125) {
+ throw new RangeError('The data size must not be greater than 125 bytes');
+ }
+
+ const options = {
+ [kByteLength]: byteLength,
+ fin: true,
+ generateMask: this._generateMask,
+ mask,
+ maskBuffer: this._maskBuffer,
+ opcode: 0x09,
+ readOnly,
+ rsv1: false
+ };
+
+ if (isBlob$1(data)) {
+ if (this._state !== DEFAULT) {
+ this.enqueue([this.getBlobData, data, false, options, cb]);
+ } else {
+ this.getBlobData(data, false, options, cb);
+ }
+ } else if (this._state !== DEFAULT) {
+ this.enqueue([this.dispatch, data, false, options, cb]);
+ } else {
+ this.sendFrame(Sender.frame(data, options), cb);
+ }
+ }
+
+ /**
+ * Sends a pong message to the other peer.
+ *
+ * @param {*} data The message to send
+ * @param {Boolean} [mask=false] Specifies whether or not to mask `data`
+ * @param {Function} [cb] Callback
+ * @public
+ */
+ pong(data, mask, cb) {
+ let byteLength;
+ let readOnly;
+
+ if (typeof data === 'string') {
+ byteLength = Buffer.byteLength(data);
+ readOnly = false;
+ } else if (isBlob$1(data)) {
+ byteLength = data.size;
+ readOnly = false;
+ } else {
+ data = toBuffer$1(data);
+ byteLength = data.length;
+ readOnly = toBuffer$1.readOnly;
+ }
+
+ if (byteLength > 125) {
+ throw new RangeError('The data size must not be greater than 125 bytes');
+ }
+
+ const options = {
+ [kByteLength]: byteLength,
+ fin: true,
+ generateMask: this._generateMask,
+ mask,
+ maskBuffer: this._maskBuffer,
+ opcode: 0x0a,
+ readOnly,
+ rsv1: false
+ };
+
+ if (isBlob$1(data)) {
+ if (this._state !== DEFAULT) {
+ this.enqueue([this.getBlobData, data, false, options, cb]);
+ } else {
+ this.getBlobData(data, false, options, cb);
+ }
+ } else if (this._state !== DEFAULT) {
+ this.enqueue([this.dispatch, data, false, options, cb]);
+ } else {
+ this.sendFrame(Sender.frame(data, options), cb);
+ }
+ }
+
+ /**
+ * Sends a data message to the other peer.
+ *
+ * @param {*} data The message to send
+ * @param {Object} options Options object
+ * @param {Boolean} [options.binary=false] Specifies whether `data` is binary
+ * or text
+ * @param {Boolean} [options.compress=false] Specifies whether or not to
+ * compress `data`
+ * @param {Boolean} [options.fin=false] Specifies whether the fragment is the
+ * last one
+ * @param {Boolean} [options.mask=false] Specifies whether or not to mask
+ * `data`
+ * @param {Function} [cb] Callback
+ * @public
+ */
+ send(data, options, cb) {
+ const perMessageDeflate = this._extensions[PerMessageDeflate$1.extensionName];
+ let opcode = options.binary ? 2 : 1;
+ let rsv1 = options.compress;
+
+ let byteLength;
+ let readOnly;
+
+ if (typeof data === 'string') {
+ byteLength = Buffer.byteLength(data);
+ readOnly = false;
+ } else if (isBlob$1(data)) {
+ byteLength = data.size;
+ readOnly = false;
+ } else {
+ data = toBuffer$1(data);
+ byteLength = data.length;
+ readOnly = toBuffer$1.readOnly;
+ }
+
+ if (this._firstFragment) {
+ this._firstFragment = false;
+ if (
+ rsv1 &&
+ perMessageDeflate &&
+ perMessageDeflate.params[
+ perMessageDeflate._isServer
+ ? 'server_no_context_takeover'
+ : 'client_no_context_takeover'
+ ]
+ ) {
+ rsv1 = byteLength >= perMessageDeflate._threshold;
+ }
+ this._compress = rsv1;
+ } else {
+ rsv1 = false;
+ opcode = 0;
+ }
+
+ if (options.fin) this._firstFragment = true;
+
+ const opts = {
+ [kByteLength]: byteLength,
+ fin: options.fin,
+ generateMask: this._generateMask,
+ mask: options.mask,
+ maskBuffer: this._maskBuffer,
+ opcode,
+ readOnly,
+ rsv1
+ };
+
+ if (isBlob$1(data)) {
+ if (this._state !== DEFAULT) {
+ this.enqueue([this.getBlobData, data, this._compress, opts, cb]);
+ } else {
+ this.getBlobData(data, this._compress, opts, cb);
+ }
+ } else if (this._state !== DEFAULT) {
+ this.enqueue([this.dispatch, data, this._compress, opts, cb]);
+ } else {
+ this.dispatch(data, this._compress, opts, cb);
+ }
+ }
+
+ /**
+ * Gets the contents of a blob as binary data.
+ *
+ * @param {Blob} blob The blob
+ * @param {Boolean} [compress=false] Specifies whether or not to compress
+ * the data
+ * @param {Object} options Options object
+ * @param {Boolean} [options.fin=false] Specifies whether or not to set the
+ * FIN bit
+ * @param {Function} [options.generateMask] The function used to generate the
+ * masking key
+ * @param {Boolean} [options.mask=false] Specifies whether or not to mask
+ * `data`
+ * @param {Buffer} [options.maskBuffer] The buffer used to store the masking
+ * key
+ * @param {Number} options.opcode The opcode
+ * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be
+ * modified
+ * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the
+ * RSV1 bit
+ * @param {Function} [cb] Callback
+ * @private
+ */
+ getBlobData(blob, compress, options, cb) {
+ this._bufferedBytes += options[kByteLength];
+ this._state = GET_BLOB_DATA;
+
+ blob
+ .arrayBuffer()
+ .then((arrayBuffer) => {
+ if (this._socket.destroyed) {
+ const err = new Error(
+ 'The socket was closed while the blob was being read'
+ );
+
+ //
+ // `callCallbacks` is called in the next tick to ensure that errors
+ // that might be thrown in the callbacks behave like errors thrown
+ // outside the promise chain.
+ //
+ process.nextTick(callCallbacks, this, err, cb);
+ return;
+ }
+
+ this._bufferedBytes -= options[kByteLength];
+ const data = toBuffer$1(arrayBuffer);
+
+ if (!compress) {
+ this._state = DEFAULT;
+ this.sendFrame(Sender.frame(data, options), cb);
+ this.dequeue();
+ } else {
+ this.dispatch(data, compress, options, cb);
+ }
+ })
+ .catch((err) => {
+ //
+ // `onError` is called in the next tick for the same reason that
+ // `callCallbacks` above is.
+ //
+ process.nextTick(onError, this, err, cb);
+ });
+ }
+
+ /**
+ * Dispatches a message.
+ *
+ * @param {(Buffer|String)} data The message to send
+ * @param {Boolean} [compress=false] Specifies whether or not to compress
+ * `data`
+ * @param {Object} options Options object
+ * @param {Boolean} [options.fin=false] Specifies whether or not to set the
+ * FIN bit
+ * @param {Function} [options.generateMask] The function used to generate the
+ * masking key
+ * @param {Boolean} [options.mask=false] Specifies whether or not to mask
+ * `data`
+ * @param {Buffer} [options.maskBuffer] The buffer used to store the masking
+ * key
+ * @param {Number} options.opcode The opcode
+ * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be
+ * modified
+ * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the
+ * RSV1 bit
+ * @param {Function} [cb] Callback
+ * @private
+ */
+ dispatch(data, compress, options, cb) {
+ if (!compress) {
+ this.sendFrame(Sender.frame(data, options), cb);
+ return;
+ }
+
+ const perMessageDeflate = this._extensions[PerMessageDeflate$1.extensionName];
+
+ this._bufferedBytes += options[kByteLength];
+ this._state = DEFLATING;
+ perMessageDeflate.compress(data, options.fin, (_, buf) => {
+ if (this._socket.destroyed) {
+ const err = new Error(
+ 'The socket was closed while data was being compressed'
+ );
+
+ callCallbacks(this, err, cb);
+ return;
+ }
+
+ this._bufferedBytes -= options[kByteLength];
+ this._state = DEFAULT;
+ options.readOnly = false;
+ this.sendFrame(Sender.frame(buf, options), cb);
+ this.dequeue();
+ });
+ }
+
+ /**
+ * Executes queued send operations.
+ *
+ * @private
+ */
+ dequeue() {
+ while (this._state === DEFAULT && this._queue.length) {
+ const params = this._queue.shift();
+
+ this._bufferedBytes -= params[3][kByteLength];
+ Reflect.apply(params[0], this, params.slice(1));
+ }
+ }
+
+ /**
+ * Enqueues a send operation.
+ *
+ * @param {Array} params Send operation parameters.
+ * @private
+ */
+ enqueue(params) {
+ this._bufferedBytes += params[3][kByteLength];
+ this._queue.push(params);
+ }
+
+ /**
+ * Sends a frame.
+ *
+ * @param {Buffer[]} list The frame to send
+ * @param {Function} [cb] Callback
+ * @private
+ */
+ sendFrame(list, cb) {
+ if (list.length === 2) {
+ this._socket.cork();
+ this._socket.write(list[0]);
+ this._socket.write(list[1], cb);
+ this._socket.uncork();
+ } else {
+ this._socket.write(list[0], cb);
+ }
+ }
+};
+
+var sender = Sender$1;
+
+/**
+ * Calls queued callbacks with an error.
+ *
+ * @param {Sender} sender The `Sender` instance
+ * @param {Error} err The error to call the callbacks with
+ * @param {Function} [cb] The first callback
+ * @private
+ */
+function callCallbacks(sender, err, cb) {
+ if (typeof cb === 'function') cb(err);
+
+ for (let i = 0; i < sender._queue.length; i++) {
+ const params = sender._queue[i];
+ const callback = params[params.length - 1];
+
+ if (typeof callback === 'function') callback(err);
+ }
+}
+
+/**
+ * Handles a `Sender` error.
+ *
+ * @param {Sender} sender The `Sender` instance
+ * @param {Error} err The error
+ * @param {Function} [cb] The first pending callback
+ * @private
+ */
+function onError(sender, err, cb) {
+ callCallbacks(sender, err, cb);
+ sender.onerror(err);
+}
+
+const { kForOnEventAttribute: kForOnEventAttribute$1, kListener: kListener$1 } = constants;
+
+const kCode = Symbol('kCode');
+const kData = Symbol('kData');
+const kError = Symbol('kError');
+const kMessage = Symbol('kMessage');
+const kReason = Symbol('kReason');
+const kTarget = Symbol('kTarget');
+const kType = Symbol('kType');
+const kWasClean = Symbol('kWasClean');
+
+/**
+ * Class representing an event.
+ */
+class Event {
+ /**
+ * Create a new `Event`.
+ *
+ * @param {String} type The name of the event
+ * @throws {TypeError} If the `type` argument is not specified
+ */
+ constructor(type) {
+ this[kTarget] = null;
+ this[kType] = type;
+ }
+
+ /**
+ * @type {*}
+ */
+ get target() {
+ return this[kTarget];
+ }
+
+ /**
+ * @type {String}
+ */
+ get type() {
+ return this[kType];
+ }
+}
+
+Object.defineProperty(Event.prototype, 'target', { enumerable: true });
+Object.defineProperty(Event.prototype, 'type', { enumerable: true });
+
+/**
+ * Class representing a close event.
+ *
+ * @extends Event
+ */
+class CloseEvent extends Event {
+ /**
+ * Create a new `CloseEvent`.
+ *
+ * @param {String} type The name of the event
+ * @param {Object} [options] A dictionary object that allows for setting
+ * attributes via object members of the same name
+ * @param {Number} [options.code=0] The status code explaining why the
+ * connection was closed
+ * @param {String} [options.reason=''] A human-readable string explaining why
+ * the connection was closed
+ * @param {Boolean} [options.wasClean=false] Indicates whether or not the
+ * connection was cleanly closed
+ */
+ constructor(type, options = {}) {
+ super(type);
+
+ this[kCode] = options.code === undefined ? 0 : options.code;
+ this[kReason] = options.reason === undefined ? '' : options.reason;
+ this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;
+ }
+
+ /**
+ * @type {Number}
+ */
+ get code() {
+ return this[kCode];
+ }
+
+ /**
+ * @type {String}
+ */
+ get reason() {
+ return this[kReason];
+ }
+
+ /**
+ * @type {Boolean}
+ */
+ get wasClean() {
+ return this[kWasClean];
+ }
+}
+
+Object.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });
+Object.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });
+Object.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });
+
+/**
+ * Class representing an error event.
+ *
+ * @extends Event
+ */
+class ErrorEvent extends Event {
+ /**
+ * Create a new `ErrorEvent`.
+ *
+ * @param {String} type The name of the event
+ * @param {Object} [options] A dictionary object that allows for setting
+ * attributes via object members of the same name
+ * @param {*} [options.error=null] The error that generated this event
+ * @param {String} [options.message=''] The error message
+ */
+ constructor(type, options = {}) {
+ super(type);
+
+ this[kError] = options.error === undefined ? null : options.error;
+ this[kMessage] = options.message === undefined ? '' : options.message;
+ }
+
+ /**
+ * @type {*}
+ */
+ get error() {
+ return this[kError];
+ }
+
+ /**
+ * @type {String}
+ */
+ get message() {
+ return this[kMessage];
+ }
+}
+
+Object.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });
+Object.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });
+
+/**
+ * Class representing a message event.
+ *
+ * @extends Event
+ */
+class MessageEvent extends Event {
+ /**
+ * Create a new `MessageEvent`.
+ *
+ * @param {String} type The name of the event
+ * @param {Object} [options] A dictionary object that allows for setting
+ * attributes via object members of the same name
+ * @param {*} [options.data=null] The message content
+ */
+ constructor(type, options = {}) {
+ super(type);
+
+ this[kData] = options.data === undefined ? null : options.data;
+ }
+
+ /**
+ * @type {*}
+ */
+ get data() {
+ return this[kData];
+ }
+}
+
+Object.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });
+
+/**
+ * This provides methods for emulating the `EventTarget` interface. It's not
+ * meant to be used directly.
+ *
+ * @mixin
+ */
+const EventTarget = {
+ /**
+ * Register an event listener.
+ *
+ * @param {String} type A string representing the event type to listen for
+ * @param {(Function|Object)} handler The listener to add
+ * @param {Object} [options] An options object specifies characteristics about
+ * the event listener
+ * @param {Boolean} [options.once=false] A `Boolean` indicating that the
+ * listener should be invoked at most once after being added. If `true`,
+ * the listener would be automatically removed when invoked.
+ * @public
+ */
+ addEventListener(type, handler, options = {}) {
+ for (const listener of this.listeners(type)) {
+ if (
+ !options[kForOnEventAttribute$1] &&
+ listener[kListener$1] === handler &&
+ !listener[kForOnEventAttribute$1]
+ ) {
+ return;
+ }
+ }
+
+ let wrapper;
+
+ if (type === 'message') {
+ wrapper = function onMessage(data, isBinary) {
+ const event = new MessageEvent('message', {
+ data: isBinary ? data : data.toString()
+ });
+
+ event[kTarget] = this;
+ callListener(handler, this, event);
+ };
+ } else if (type === 'close') {
+ wrapper = function onClose(code, message) {
+ const event = new CloseEvent('close', {
+ code,
+ reason: message.toString(),
+ wasClean: this._closeFrameReceived && this._closeFrameSent
+ });
+
+ event[kTarget] = this;
+ callListener(handler, this, event);
+ };
+ } else if (type === 'error') {
+ wrapper = function onError(error) {
+ const event = new ErrorEvent('error', {
+ error,
+ message: error.message
+ });
+
+ event[kTarget] = this;
+ callListener(handler, this, event);
+ };
+ } else if (type === 'open') {
+ wrapper = function onOpen() {
+ const event = new Event('open');
+
+ event[kTarget] = this;
+ callListener(handler, this, event);
+ };
+ } else {
+ return;
+ }
+
+ wrapper[kForOnEventAttribute$1] = !!options[kForOnEventAttribute$1];
+ wrapper[kListener$1] = handler;
+
+ if (options.once) {
+ this.once(type, wrapper);
+ } else {
+ this.on(type, wrapper);
+ }
+ },
+
+ /**
+ * Remove an event listener.
+ *
+ * @param {String} type A string representing the event type to remove
+ * @param {(Function|Object)} handler The listener to remove
+ * @public
+ */
+ removeEventListener(type, handler) {
+ for (const listener of this.listeners(type)) {
+ if (listener[kListener$1] === handler && !listener[kForOnEventAttribute$1]) {
+ this.removeListener(type, listener);
+ break;
+ }
+ }
+ }
+};
+
+var eventTarget = {
+ CloseEvent,
+ ErrorEvent,
+ Event,
+ EventTarget,
+ MessageEvent
+};
+
+/**
+ * Call an event listener
+ *
+ * @param {(Function|Object)} listener The listener to call
+ * @param {*} thisArg The value to use as `this`` when calling the listener
+ * @param {Event} event The event to pass to the listener
+ * @private
+ */
+function callListener(listener, thisArg, event) {
+ if (typeof listener === 'object' && listener.handleEvent) {
+ listener.handleEvent.call(listener, event);
+ } else {
+ listener.call(thisArg, event);
+ }
+}
+
+const { tokenChars } = validationExports;
+
+/**
+ * Adds an offer to the map of extension offers or a parameter to the map of
+ * parameters.
+ *
+ * @param {Object} dest The map of extension offers or parameters
+ * @param {String} name The extension or parameter name
+ * @param {(Object|Boolean|String)} elem The extension parameters or the
+ * parameter value
+ * @private
+ */
+function push(dest, name, elem) {
+ if (dest[name] === undefined) dest[name] = [elem];
+ else dest[name].push(elem);
+}
+
+/**
+ * Parses the `Sec-WebSocket-Extensions` header into an object.
+ *
+ * @param {String} header The field value of the header
+ * @return {Object} The parsed object
+ * @public
+ */
+function parse$1(header) {
+ const offers = Object.create(null);
+ let params = Object.create(null);
+ let mustUnescape = false;
+ let isEscaping = false;
+ let inQuotes = false;
+ let extensionName;
+ let paramName;
+ let start = -1;
+ let code = -1;
+ let end = -1;
+ let i = 0;
+
+ for (; i < header.length; i++) {
+ code = header.charCodeAt(i);
+
+ if (extensionName === undefined) {
+ if (end === -1 && tokenChars[code] === 1) {
+ if (start === -1) start = i;
+ } else if (
+ i !== 0 &&
+ (code === 0x20 /* ' ' */ || code === 0x09) /* '\t' */
+ ) {
+ if (end === -1 && start !== -1) end = i;
+ } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {
+ if (start === -1) {
+ throw new SyntaxError(`Unexpected character at index ${i}`);
+ }
+
+ if (end === -1) end = i;
+ const name = header.slice(start, end);
+ if (code === 0x2c) {
+ push(offers, name, params);
+ params = Object.create(null);
+ } else {
+ extensionName = name;
+ }
+
+ start = end = -1;
+ } else {
+ throw new SyntaxError(`Unexpected character at index ${i}`);
+ }
+ } else if (paramName === undefined) {
+ if (end === -1 && tokenChars[code] === 1) {
+ if (start === -1) start = i;
+ } else if (code === 0x20 || code === 0x09) {
+ if (end === -1 && start !== -1) end = i;
+ } else if (code === 0x3b || code === 0x2c) {
+ if (start === -1) {
+ throw new SyntaxError(`Unexpected character at index ${i}`);
+ }
+
+ if (end === -1) end = i;
+ push(params, header.slice(start, end), true);
+ if (code === 0x2c) {
+ push(offers, extensionName, params);
+ params = Object.create(null);
+ extensionName = undefined;
+ }
+
+ start = end = -1;
+ } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {
+ paramName = header.slice(start, i);
+ start = end = -1;
+ } else {
+ throw new SyntaxError(`Unexpected character at index ${i}`);
+ }
+ } else {
+ //
+ // The value of a quoted-string after unescaping must conform to the
+ // token ABNF, so only token characters are valid.
+ // Ref: https://tools.ietf.org/html/rfc6455#section-9.1
+ //
+ if (isEscaping) {
+ if (tokenChars[code] !== 1) {
+ throw new SyntaxError(`Unexpected character at index ${i}`);
+ }
+ if (start === -1) start = i;
+ else if (!mustUnescape) mustUnescape = true;
+ isEscaping = false;
+ } else if (inQuotes) {
+ if (tokenChars[code] === 1) {
+ if (start === -1) start = i;
+ } else if (code === 0x22 /* '"' */ && start !== -1) {
+ inQuotes = false;
+ end = i;
+ } else if (code === 0x5c /* '\' */) {
+ isEscaping = true;
+ } else {
+ throw new SyntaxError(`Unexpected character at index ${i}`);
+ }
+ } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {
+ inQuotes = true;
+ } else if (end === -1 && tokenChars[code] === 1) {
+ if (start === -1) start = i;
+ } else if (start !== -1 && (code === 0x20 || code === 0x09)) {
+ if (end === -1) end = i;
+ } else if (code === 0x3b || code === 0x2c) {
+ if (start === -1) {
+ throw new SyntaxError(`Unexpected character at index ${i}`);
+ }
+
+ if (end === -1) end = i;
+ let value = header.slice(start, end);
+ if (mustUnescape) {
+ value = value.replace(/\\/g, '');
+ mustUnescape = false;
+ }
+ push(params, paramName, value);
+ if (code === 0x2c) {
+ push(offers, extensionName, params);
+ params = Object.create(null);
+ extensionName = undefined;
+ }
+
+ paramName = undefined;
+ start = end = -1;
+ } else {
+ throw new SyntaxError(`Unexpected character at index ${i}`);
+ }
+ }
+ }
+
+ if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {
+ throw new SyntaxError('Unexpected end of input');
+ }
+
+ if (end === -1) end = i;
+ const token = header.slice(start, end);
+ if (extensionName === undefined) {
+ push(offers, token, params);
+ } else {
+ if (paramName === undefined) {
+ push(params, token, true);
+ } else if (mustUnescape) {
+ push(params, paramName, token.replace(/\\/g, ''));
+ } else {
+ push(params, paramName, token);
+ }
+ push(offers, extensionName, params);
+ }
+
+ return offers;
+}
+
+/**
+ * Builds the `Sec-WebSocket-Extensions` header field value.
+ *
+ * @param {Object} extensions The map of extensions and parameters to format
+ * @return {String} A string representing the given object
+ * @public
+ */
+function format$1(extensions) {
+ return Object.keys(extensions)
+ .map((extension) => {
+ let configurations = extensions[extension];
+ if (!Array.isArray(configurations)) configurations = [configurations];
+ return configurations
+ .map((params) => {
+ return [extension]
+ .concat(
+ Object.keys(params).map((k) => {
+ let values = params[k];
+ if (!Array.isArray(values)) values = [values];
+ return values
+ .map((v) => (v === true ? k : `${k}=${v}`))
+ .join('; ');
+ })
+ )
+ .join('; ');
+ })
+ .join(', ');
+ })
+ .join(', ');
+}
+
+var extension = { format: format$1, parse: parse$1 };
+
+/* eslint no-unused-vars: ["error", { "varsIgnorePattern": "^Duplex|Readable$", "caughtErrors": "none" }] */
+
+const EventEmitter = require$$0$3;
+const https = require$$1$2;
+const http = require$$2$1;
+const net = require$$3;
+const tls = require$$4;
+const { randomBytes, createHash } = require$$1$1;
+const { URL } = require$$7;
+
+const PerMessageDeflate = permessageDeflate;
+const Receiver = receiver;
+const Sender = sender;
+const { isBlob } = validationExports;
+
+const {
+ BINARY_TYPES,
+ EMPTY_BUFFER,
+ GUID,
+ kForOnEventAttribute,
+ kListener,
+ kStatusCode,
+ kWebSocket,
+ NOOP
+} = constants;
+const {
+ EventTarget: { addEventListener, removeEventListener }
+} = eventTarget;
+const { format, parse } = extension;
+const { toBuffer } = bufferUtilExports;
+
+const closeTimeout = 30 * 1000;
+const kAborted = Symbol('kAborted');
+const protocolVersions = [8, 13];
+const readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];
+const subprotocolRegex = /^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;
+
+/**
+ * Class representing a WebSocket.
+ *
+ * @extends EventEmitter
+ */
+class WebSocket extends EventEmitter {
+ /**
+ * Create a new `WebSocket`.
+ *
+ * @param {(String|URL)} address The URL to which to connect
+ * @param {(String|String[])} [protocols] The subprotocols
+ * @param {Object} [options] Connection options
+ */
+ constructor(address, protocols, options) {
+ super();
+
+ this._binaryType = BINARY_TYPES[0];
+ this._closeCode = 1006;
+ this._closeFrameReceived = false;
+ this._closeFrameSent = false;
+ this._closeMessage = EMPTY_BUFFER;
+ this._closeTimer = null;
+ this._errorEmitted = false;
+ this._extensions = {};
+ this._paused = false;
+ this._protocol = '';
+ this._readyState = WebSocket.CONNECTING;
+ this._receiver = null;
+ this._sender = null;
+ this._socket = null;
+
+ if (address !== null) {
+ this._bufferedAmount = 0;
+ this._isServer = false;
+ this._redirects = 0;
+
+ if (protocols === undefined) {
+ protocols = [];
+ } else if (!Array.isArray(protocols)) {
+ if (typeof protocols === 'object' && protocols !== null) {
+ options = protocols;
+ protocols = [];
+ } else {
+ protocols = [protocols];
+ }
+ }
+
+ initAsClient(this, address, protocols, options);
+ } else {
+ this._autoPong = options.autoPong;
+ this._isServer = true;
+ }
+ }
+
+ /**
+ * For historical reasons, the custom "nodebuffer" type is used by the default
+ * instead of "blob".
+ *
+ * @type {String}
+ */
+ get binaryType() {
+ return this._binaryType;
+ }
+
+ set binaryType(type) {
+ if (!BINARY_TYPES.includes(type)) return;
+
+ this._binaryType = type;
+
+ //
+ // Allow to change `binaryType` on the fly.
+ //
+ if (this._receiver) this._receiver._binaryType = type;
+ }
+
+ /**
+ * @type {Number}
+ */
+ get bufferedAmount() {
+ if (!this._socket) return this._bufferedAmount;
+
+ return this._socket._writableState.length + this._sender._bufferedBytes;
+ }
+
+ /**
+ * @type {String}
+ */
+ get extensions() {
+ return Object.keys(this._extensions).join();
+ }
+
+ /**
+ * @type {Boolean}
+ */
+ get isPaused() {
+ return this._paused;
+ }
+
+ /**
+ * @type {Function}
+ */
+ /* istanbul ignore next */
+ get onclose() {
+ return null;
+ }
+
+ /**
+ * @type {Function}
+ */
+ /* istanbul ignore next */
+ get onerror() {
+ return null;
+ }
+
+ /**
+ * @type {Function}
+ */
+ /* istanbul ignore next */
+ get onopen() {
+ return null;
+ }
+
+ /**
+ * @type {Function}
+ */
+ /* istanbul ignore next */
+ get onmessage() {
+ return null;
+ }
+
+ /**
+ * @type {String}
+ */
+ get protocol() {
+ return this._protocol;
+ }
+
+ /**
+ * @type {Number}
+ */
+ get readyState() {
+ return this._readyState;
+ }
+
+ /**
+ * @type {String}
+ */
+ get url() {
+ return this._url;
+ }
+
+ /**
+ * Set up the socket and the internal resources.
+ *
+ * @param {Duplex} socket The network socket between the server and client
+ * @param {Buffer} head The first packet of the upgraded stream
+ * @param {Object} options Options object
+ * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether
+ * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted
+ * multiple times in the same tick
+ * @param {Function} [options.generateMask] The function used to generate the
+ * masking key
+ * @param {Number} [options.maxPayload=0] The maximum allowed message size
+ * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or
+ * not to skip UTF-8 validation for text and close messages
+ * @private
+ */
+ setSocket(socket, head, options) {
+ const receiver = new Receiver({
+ allowSynchronousEvents: options.allowSynchronousEvents,
+ binaryType: this.binaryType,
+ extensions: this._extensions,
+ isServer: this._isServer,
+ maxPayload: options.maxPayload,
+ skipUTF8Validation: options.skipUTF8Validation
+ });
+
+ const sender = new Sender(socket, this._extensions, options.generateMask);
+
+ this._receiver = receiver;
+ this._sender = sender;
+ this._socket = socket;
+
+ receiver[kWebSocket] = this;
+ sender[kWebSocket] = this;
+ socket[kWebSocket] = this;
+
+ receiver.on('conclude', receiverOnConclude);
+ receiver.on('drain', receiverOnDrain);
+ receiver.on('error', receiverOnError);
+ receiver.on('message', receiverOnMessage);
+ receiver.on('ping', receiverOnPing);
+ receiver.on('pong', receiverOnPong);
+
+ sender.onerror = senderOnError;
+
+ //
+ // These methods may not be available if `socket` is just a `Duplex`.
+ //
+ if (socket.setTimeout) socket.setTimeout(0);
+ if (socket.setNoDelay) socket.setNoDelay();
+
+ if (head.length > 0) socket.unshift(head);
+
+ socket.on('close', socketOnClose);
+ socket.on('data', socketOnData);
+ socket.on('end', socketOnEnd);
+ socket.on('error', socketOnError);
+
+ this._readyState = WebSocket.OPEN;
+ this.emit('open');
+ }
+
+ /**
+ * Emit the `'close'` event.
+ *
+ * @private
+ */
+ emitClose() {
+ if (!this._socket) {
+ this._readyState = WebSocket.CLOSED;
+ this.emit('close', this._closeCode, this._closeMessage);
+ return;
+ }
+
+ if (this._extensions[PerMessageDeflate.extensionName]) {
+ this._extensions[PerMessageDeflate.extensionName].cleanup();
+ }
+
+ this._receiver.removeAllListeners();
+ this._readyState = WebSocket.CLOSED;
+ this.emit('close', this._closeCode, this._closeMessage);
+ }
+
+ /**
+ * Start a closing handshake.
+ *
+ * +----------+ +-----------+ +----------+
+ * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -
+ * | +----------+ +-----------+ +----------+ |
+ * +----------+ +-----------+ |
+ * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING
+ * +----------+ +-----------+ |
+ * | | | +---+ |
+ * +------------------------+-->|fin| - - - -
+ * | +---+ | +---+
+ * - - - - -|fin|<---------------------+
+ * +---+
+ *
+ * @param {Number} [code] Status code explaining why the connection is closing
+ * @param {(String|Buffer)} [data] The reason why the connection is
+ * closing
+ * @public
+ */
+ close(code, data) {
+ if (this.readyState === WebSocket.CLOSED) return;
+ if (this.readyState === WebSocket.CONNECTING) {
+ const msg = 'WebSocket was closed before the connection was established';
+ abortHandshake(this, this._req, msg);
+ return;
+ }
+
+ if (this.readyState === WebSocket.CLOSING) {
+ if (
+ this._closeFrameSent &&
+ (this._closeFrameReceived || this._receiver._writableState.errorEmitted)
+ ) {
+ this._socket.end();
+ }
+
+ return;
+ }
+
+ this._readyState = WebSocket.CLOSING;
+ this._sender.close(code, data, !this._isServer, (err) => {
+ //
+ // This error is handled by the `'error'` listener on the socket. We only
+ // want to know if the close frame has been sent here.
+ //
+ if (err) return;
+
+ this._closeFrameSent = true;
+
+ if (
+ this._closeFrameReceived ||
+ this._receiver._writableState.errorEmitted
+ ) {
+ this._socket.end();
+ }
+ });
+
+ setCloseTimer(this);
+ }
+
+ /**
+ * Pause the socket.
+ *
+ * @public
+ */
+ pause() {
+ if (
+ this.readyState === WebSocket.CONNECTING ||
+ this.readyState === WebSocket.CLOSED
+ ) {
+ return;
+ }
+
+ this._paused = true;
+ this._socket.pause();
+ }
+
+ /**
+ * Send a ping.
+ *
+ * @param {*} [data] The data to send
+ * @param {Boolean} [mask] Indicates whether or not to mask `data`
+ * @param {Function} [cb] Callback which is executed when the ping is sent
+ * @public
+ */
+ ping(data, mask, cb) {
+ if (this.readyState === WebSocket.CONNECTING) {
+ throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');
+ }
+
+ if (typeof data === 'function') {
+ cb = data;
+ data = mask = undefined;
+ } else if (typeof mask === 'function') {
+ cb = mask;
+ mask = undefined;
+ }
+
+ if (typeof data === 'number') data = data.toString();
+
+ if (this.readyState !== WebSocket.OPEN) {
+ sendAfterClose(this, data, cb);
+ return;
+ }
+
+ if (mask === undefined) mask = !this._isServer;
+ this._sender.ping(data || EMPTY_BUFFER, mask, cb);
+ }
+
+ /**
+ * Send a pong.
+ *
+ * @param {*} [data] The data to send
+ * @param {Boolean} [mask] Indicates whether or not to mask `data`
+ * @param {Function} [cb] Callback which is executed when the pong is sent
+ * @public
+ */
+ pong(data, mask, cb) {
+ if (this.readyState === WebSocket.CONNECTING) {
+ throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');
+ }
+
+ if (typeof data === 'function') {
+ cb = data;
+ data = mask = undefined;
+ } else if (typeof mask === 'function') {
+ cb = mask;
+ mask = undefined;
+ }
+
+ if (typeof data === 'number') data = data.toString();
+
+ if (this.readyState !== WebSocket.OPEN) {
+ sendAfterClose(this, data, cb);
+ return;
+ }
+
+ if (mask === undefined) mask = !this._isServer;
+ this._sender.pong(data || EMPTY_BUFFER, mask, cb);
+ }
+
+ /**
+ * Resume the socket.
+ *
+ * @public
+ */
+ resume() {
+ if (
+ this.readyState === WebSocket.CONNECTING ||
+ this.readyState === WebSocket.CLOSED
+ ) {
+ return;
+ }
+
+ this._paused = false;
+ if (!this._receiver._writableState.needDrain) this._socket.resume();
+ }
+
+ /**
+ * Send a data message.
+ *
+ * @param {*} data The message to send
+ * @param {Object} [options] Options object
+ * @param {Boolean} [options.binary] Specifies whether `data` is binary or
+ * text
+ * @param {Boolean} [options.compress] Specifies whether or not to compress
+ * `data`
+ * @param {Boolean} [options.fin=true] Specifies whether the fragment is the
+ * last one
+ * @param {Boolean} [options.mask] Specifies whether or not to mask `data`
+ * @param {Function} [cb] Callback which is executed when data is written out
+ * @public
+ */
+ send(data, options, cb) {
+ if (this.readyState === WebSocket.CONNECTING) {
+ throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');
+ }
+
+ if (typeof options === 'function') {
+ cb = options;
+ options = {};
+ }
+
+ if (typeof data === 'number') data = data.toString();
+
+ if (this.readyState !== WebSocket.OPEN) {
+ sendAfterClose(this, data, cb);
+ return;
+ }
+
+ const opts = {
+ binary: typeof data !== 'string',
+ mask: !this._isServer,
+ compress: true,
+ fin: true,
+ ...options
+ };
+
+ if (!this._extensions[PerMessageDeflate.extensionName]) {
+ opts.compress = false;
+ }
+
+ this._sender.send(data || EMPTY_BUFFER, opts, cb);
+ }
+
+ /**
+ * Forcibly close the connection.
+ *
+ * @public
+ */
+ terminate() {
+ if (this.readyState === WebSocket.CLOSED) return;
+ if (this.readyState === WebSocket.CONNECTING) {
+ const msg = 'WebSocket was closed before the connection was established';
+ abortHandshake(this, this._req, msg);
+ return;
+ }
+
+ if (this._socket) {
+ this._readyState = WebSocket.CLOSING;
+ this._socket.destroy();
+ }
+ }
+}
+
+/**
+ * @constant {Number} CONNECTING
+ * @memberof WebSocket
+ */
+Object.defineProperty(WebSocket, 'CONNECTING', {
+ enumerable: true,
+ value: readyStates.indexOf('CONNECTING')
+});
+
+/**
+ * @constant {Number} CONNECTING
+ * @memberof WebSocket.prototype
+ */
+Object.defineProperty(WebSocket.prototype, 'CONNECTING', {
+ enumerable: true,
+ value: readyStates.indexOf('CONNECTING')
+});
+
+/**
+ * @constant {Number} OPEN
+ * @memberof WebSocket
+ */
+Object.defineProperty(WebSocket, 'OPEN', {
+ enumerable: true,
+ value: readyStates.indexOf('OPEN')
+});
+
+/**
+ * @constant {Number} OPEN
+ * @memberof WebSocket.prototype
+ */
+Object.defineProperty(WebSocket.prototype, 'OPEN', {
+ enumerable: true,
+ value: readyStates.indexOf('OPEN')
+});
+
+/**
+ * @constant {Number} CLOSING
+ * @memberof WebSocket
+ */
+Object.defineProperty(WebSocket, 'CLOSING', {
+ enumerable: true,
+ value: readyStates.indexOf('CLOSING')
+});
+
+/**
+ * @constant {Number} CLOSING
+ * @memberof WebSocket.prototype
+ */
+Object.defineProperty(WebSocket.prototype, 'CLOSING', {
+ enumerable: true,
+ value: readyStates.indexOf('CLOSING')
+});
+
+/**
+ * @constant {Number} CLOSED
+ * @memberof WebSocket
+ */
+Object.defineProperty(WebSocket, 'CLOSED', {
+ enumerable: true,
+ value: readyStates.indexOf('CLOSED')
+});
+
+/**
+ * @constant {Number} CLOSED
+ * @memberof WebSocket.prototype
+ */
+Object.defineProperty(WebSocket.prototype, 'CLOSED', {
+ enumerable: true,
+ value: readyStates.indexOf('CLOSED')
+});
+
+[
+ 'binaryType',
+ 'bufferedAmount',
+ 'extensions',
+ 'isPaused',
+ 'protocol',
+ 'readyState',
+ 'url'
+].forEach((property) => {
+ Object.defineProperty(WebSocket.prototype, property, { enumerable: true });
+});
+
+//
+// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.
+// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface
+//
+['open', 'error', 'close', 'message'].forEach((method) => {
+ Object.defineProperty(WebSocket.prototype, `on${method}`, {
+ enumerable: true,
+ get() {
+ for (const listener of this.listeners(method)) {
+ if (listener[kForOnEventAttribute]) return listener[kListener];
+ }
+
+ return null;
+ },
+ set(handler) {
+ for (const listener of this.listeners(method)) {
+ if (listener[kForOnEventAttribute]) {
+ this.removeListener(method, listener);
+ break;
+ }
+ }
+
+ if (typeof handler !== 'function') return;
+
+ this.addEventListener(method, handler, {
+ [kForOnEventAttribute]: true
+ });
+ }
+ });
+});
+
+WebSocket.prototype.addEventListener = addEventListener;
+WebSocket.prototype.removeEventListener = removeEventListener;
+
+var websocket = WebSocket;
+
+/**
+ * Initialize a WebSocket client.
+ *
+ * @param {WebSocket} websocket The client to initialize
+ * @param {(String|URL)} address The URL to which to connect
+ * @param {Array} protocols The subprotocols
+ * @param {Object} [options] Connection options
+ * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any
+ * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple
+ * times in the same tick
+ * @param {Boolean} [options.autoPong=true] Specifies whether or not to
+ * automatically send a pong in response to a ping
+ * @param {Function} [options.finishRequest] A function which can be used to
+ * customize the headers of each http request before it is sent
+ * @param {Boolean} [options.followRedirects=false] Whether or not to follow
+ * redirects
+ * @param {Function} [options.generateMask] The function used to generate the
+ * masking key
+ * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the
+ * handshake request
+ * @param {Number} [options.maxPayload=104857600] The maximum allowed message
+ * size
+ * @param {Number} [options.maxRedirects=10] The maximum number of redirects
+ * allowed
+ * @param {String} [options.origin] Value of the `Origin` or
+ * `Sec-WebSocket-Origin` header
+ * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable
+ * permessage-deflate
+ * @param {Number} [options.protocolVersion=13] Value of the
+ * `Sec-WebSocket-Version` header
+ * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or
+ * not to skip UTF-8 validation for text and close messages
+ * @private
+ */
+function initAsClient(websocket, address, protocols, options) {
+ const opts = {
+ allowSynchronousEvents: true,
+ autoPong: true,
+ protocolVersion: protocolVersions[1],
+ maxPayload: 100 * 1024 * 1024,
+ skipUTF8Validation: false,
+ perMessageDeflate: true,
+ followRedirects: false,
+ maxRedirects: 10,
+ ...options,
+ socketPath: undefined,
+ hostname: undefined,
+ protocol: undefined,
+ timeout: undefined,
+ method: 'GET',
+ host: undefined,
+ path: undefined,
+ port: undefined
+ };
+
+ websocket._autoPong = opts.autoPong;
+
+ if (!protocolVersions.includes(opts.protocolVersion)) {
+ throw new RangeError(
+ `Unsupported protocol version: ${opts.protocolVersion} ` +
+ `(supported versions: ${protocolVersions.join(', ')})`
+ );
+ }
+
+ let parsedUrl;
+
+ if (address instanceof URL) {
+ parsedUrl = address;
+ } else {
+ try {
+ parsedUrl = new URL(address);
+ } catch (e) {
+ throw new SyntaxError(`Invalid URL: ${address}`);
+ }
+ }
+
+ if (parsedUrl.protocol === 'http:') {
+ parsedUrl.protocol = 'ws:';
+ } else if (parsedUrl.protocol === 'https:') {
+ parsedUrl.protocol = 'wss:';
+ }
+
+ websocket._url = parsedUrl.href;
+
+ const isSecure = parsedUrl.protocol === 'wss:';
+ const isIpcUrl = parsedUrl.protocol === 'ws+unix:';
+ let invalidUrlMessage;
+
+ if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {
+ invalidUrlMessage =
+ 'The URL\'s protocol must be one of "ws:", "wss:", ' +
+ '"http:", "https", or "ws+unix:"';
+ } else if (isIpcUrl && !parsedUrl.pathname) {
+ invalidUrlMessage = "The URL's pathname is empty";
+ } else if (parsedUrl.hash) {
+ invalidUrlMessage = 'The URL contains a fragment identifier';
+ }
+
+ if (invalidUrlMessage) {
+ const err = new SyntaxError(invalidUrlMessage);
+
+ if (websocket._redirects === 0) {
+ throw err;
+ } else {
+ emitErrorAndClose(websocket, err);
+ return;
+ }
+ }
+
+ const defaultPort = isSecure ? 443 : 80;
+ const key = randomBytes(16).toString('base64');
+ const request = isSecure ? https.request : http.request;
+ const protocolSet = new Set();
+ let perMessageDeflate;
+
+ opts.createConnection =
+ opts.createConnection || (isSecure ? tlsConnect : netConnect);
+ opts.defaultPort = opts.defaultPort || defaultPort;
+ opts.port = parsedUrl.port || defaultPort;
+ opts.host = parsedUrl.hostname.startsWith('[')
+ ? parsedUrl.hostname.slice(1, -1)
+ : parsedUrl.hostname;
+ opts.headers = {
+ ...opts.headers,
+ 'Sec-WebSocket-Version': opts.protocolVersion,
+ 'Sec-WebSocket-Key': key,
+ Connection: 'Upgrade',
+ Upgrade: 'websocket'
+ };
+ opts.path = parsedUrl.pathname + parsedUrl.search;
+ opts.timeout = opts.handshakeTimeout;
+
+ if (opts.perMessageDeflate) {
+ perMessageDeflate = new PerMessageDeflate(
+ opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},
+ false,
+ opts.maxPayload
+ );
+ opts.headers['Sec-WebSocket-Extensions'] = format({
+ [PerMessageDeflate.extensionName]: perMessageDeflate.offer()
+ });
+ }
+ if (protocols.length) {
+ for (const protocol of protocols) {
+ if (
+ typeof protocol !== 'string' ||
+ !subprotocolRegex.test(protocol) ||
+ protocolSet.has(protocol)
+ ) {
+ throw new SyntaxError(
+ 'An invalid or duplicated subprotocol was specified'
+ );
+ }
+
+ protocolSet.add(protocol);
+ }
+
+ opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');
+ }
+ if (opts.origin) {
+ if (opts.protocolVersion < 13) {
+ opts.headers['Sec-WebSocket-Origin'] = opts.origin;
+ } else {
+ opts.headers.Origin = opts.origin;
+ }
+ }
+ if (parsedUrl.username || parsedUrl.password) {
+ opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;
+ }
+
+ if (isIpcUrl) {
+ const parts = opts.path.split(':');
+
+ opts.socketPath = parts[0];
+ opts.path = parts[1];
+ }
+
+ let req;
+
+ if (opts.followRedirects) {
+ if (websocket._redirects === 0) {
+ websocket._originalIpc = isIpcUrl;
+ websocket._originalSecure = isSecure;
+ websocket._originalHostOrSocketPath = isIpcUrl
+ ? opts.socketPath
+ : parsedUrl.host;
+
+ const headers = options && options.headers;
+
+ //
+ // Shallow copy the user provided options so that headers can be changed
+ // without mutating the original object.
+ //
+ options = { ...options, headers: {} };
+
+ if (headers) {
+ for (const [key, value] of Object.entries(headers)) {
+ options.headers[key.toLowerCase()] = value;
+ }
+ }
+ } else if (websocket.listenerCount('redirect') === 0) {
+ const isSameHost = isIpcUrl
+ ? websocket._originalIpc
+ ? opts.socketPath === websocket._originalHostOrSocketPath
+ : false
+ : websocket._originalIpc
+ ? false
+ : parsedUrl.host === websocket._originalHostOrSocketPath;
+
+ if (!isSameHost || (websocket._originalSecure && !isSecure)) {
+ //
+ // Match curl 7.77.0 behavior and drop the following headers. These
+ // headers are also dropped when following a redirect to a subdomain.
+ //
+ delete opts.headers.authorization;
+ delete opts.headers.cookie;
+
+ if (!isSameHost) delete opts.headers.host;
+
+ opts.auth = undefined;
+ }
+ }
+
+ //
+ // Match curl 7.77.0 behavior and make the first `Authorization` header win.
+ // If the `Authorization` header is set, then there is nothing to do as it
+ // will take precedence.
+ //
+ if (opts.auth && !options.headers.authorization) {
+ options.headers.authorization =
+ 'Basic ' + Buffer.from(opts.auth).toString('base64');
+ }
+
+ req = websocket._req = request(opts);
+
+ if (websocket._redirects) {
+ //
+ // Unlike what is done for the `'upgrade'` event, no early exit is
+ // triggered here if the user calls `websocket.close()` or
+ // `websocket.terminate()` from a listener of the `'redirect'` event. This
+ // is because the user can also call `request.destroy()` with an error
+ // before calling `websocket.close()` or `websocket.terminate()` and this
+ // would result in an error being emitted on the `request` object with no
+ // `'error'` event listeners attached.
+ //
+ websocket.emit('redirect', websocket.url, req);
+ }
+ } else {
+ req = websocket._req = request(opts);
+ }
+
+ if (opts.timeout) {
+ req.on('timeout', () => {
+ abortHandshake(websocket, req, 'Opening handshake has timed out');
+ });
+ }
+
+ req.on('error', (err) => {
+ if (req === null || req[kAborted]) return;
+
+ req = websocket._req = null;
+ emitErrorAndClose(websocket, err);
+ });
+
+ req.on('response', (res) => {
+ const location = res.headers.location;
+ const statusCode = res.statusCode;
+
+ if (
+ location &&
+ opts.followRedirects &&
+ statusCode >= 300 &&
+ statusCode < 400
+ ) {
+ if (++websocket._redirects > opts.maxRedirects) {
+ abortHandshake(websocket, req, 'Maximum redirects exceeded');
+ return;
+ }
+
+ req.abort();
+
+ let addr;
+
+ try {
+ addr = new URL(location, address);
+ } catch (e) {
+ const err = new SyntaxError(`Invalid URL: ${location}`);
+ emitErrorAndClose(websocket, err);
+ return;
+ }
+
+ initAsClient(websocket, addr, protocols, options);
+ } else if (!websocket.emit('unexpected-response', req, res)) {
+ abortHandshake(
+ websocket,
+ req,
+ `Unexpected server response: ${res.statusCode}`
+ );
+ }
+ });
+
+ req.on('upgrade', (res, socket, head) => {
+ websocket.emit('upgrade', res);
+
+ //
+ // The user may have closed the connection from a listener of the
+ // `'upgrade'` event.
+ //
+ if (websocket.readyState !== WebSocket.CONNECTING) return;
+
+ req = websocket._req = null;
+
+ const upgrade = res.headers.upgrade;
+
+ if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {
+ abortHandshake(websocket, socket, 'Invalid Upgrade header');
+ return;
+ }
+
+ const digest = createHash('sha1')
+ .update(key + GUID)
+ .digest('base64');
+
+ if (res.headers['sec-websocket-accept'] !== digest) {
+ abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');
+ return;
+ }
+
+ const serverProt = res.headers['sec-websocket-protocol'];
+ let protError;
+
+ if (serverProt !== undefined) {
+ if (!protocolSet.size) {
+ protError = 'Server sent a subprotocol but none was requested';
+ } else if (!protocolSet.has(serverProt)) {
+ protError = 'Server sent an invalid subprotocol';
+ }
+ } else if (protocolSet.size) {
+ protError = 'Server sent no subprotocol';
+ }
+
+ if (protError) {
+ abortHandshake(websocket, socket, protError);
+ return;
+ }
+
+ if (serverProt) websocket._protocol = serverProt;
+
+ const secWebSocketExtensions = res.headers['sec-websocket-extensions'];
+
+ if (secWebSocketExtensions !== undefined) {
+ if (!perMessageDeflate) {
+ const message =
+ 'Server sent a Sec-WebSocket-Extensions header but no extension ' +
+ 'was requested';
+ abortHandshake(websocket, socket, message);
+ return;
+ }
+
+ let extensions;
+
+ try {
+ extensions = parse(secWebSocketExtensions);
+ } catch (err) {
+ const message = 'Invalid Sec-WebSocket-Extensions header';
+ abortHandshake(websocket, socket, message);
+ return;
+ }
+
+ const extensionNames = Object.keys(extensions);
+
+ if (
+ extensionNames.length !== 1 ||
+ extensionNames[0] !== PerMessageDeflate.extensionName
+ ) {
+ const message = 'Server indicated an extension that was not requested';
+ abortHandshake(websocket, socket, message);
+ return;
+ }
+
+ try {
+ perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);
+ } catch (err) {
+ const message = 'Invalid Sec-WebSocket-Extensions header';
+ abortHandshake(websocket, socket, message);
+ return;
+ }
+
+ websocket._extensions[PerMessageDeflate.extensionName] =
+ perMessageDeflate;
+ }
+
+ websocket.setSocket(socket, head, {
+ allowSynchronousEvents: opts.allowSynchronousEvents,
+ generateMask: opts.generateMask,
+ maxPayload: opts.maxPayload,
+ skipUTF8Validation: opts.skipUTF8Validation
+ });
+ });
+
+ if (opts.finishRequest) {
+ opts.finishRequest(req, websocket);
+ } else {
+ req.end();
+ }
+}
+
+/**
+ * Emit the `'error'` and `'close'` events.
+ *
+ * @param {WebSocket} websocket The WebSocket instance
+ * @param {Error} The error to emit
+ * @private
+ */
+function emitErrorAndClose(websocket, err) {
+ websocket._readyState = WebSocket.CLOSING;
+ //
+ // The following assignment is practically useless and is done only for
+ // consistency.
+ //
+ websocket._errorEmitted = true;
+ websocket.emit('error', err);
+ websocket.emitClose();
+}
+
+/**
+ * Create a `net.Socket` and initiate a connection.
+ *
+ * @param {Object} options Connection options
+ * @return {net.Socket} The newly created socket used to start the connection
+ * @private
+ */
+function netConnect(options) {
+ options.path = options.socketPath;
+ return net.connect(options);
+}
+
+/**
+ * Create a `tls.TLSSocket` and initiate a connection.
+ *
+ * @param {Object} options Connection options
+ * @return {tls.TLSSocket} The newly created socket used to start the connection
+ * @private
+ */
+function tlsConnect(options) {
+ options.path = undefined;
+
+ if (!options.servername && options.servername !== '') {
+ options.servername = net.isIP(options.host) ? '' : options.host;
+ }
+
+ return tls.connect(options);
+}
+
+/**
+ * Abort the handshake and emit an error.
+ *
+ * @param {WebSocket} websocket The WebSocket instance
+ * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to
+ * abort or the socket to destroy
+ * @param {String} message The error message
+ * @private
+ */
+function abortHandshake(websocket, stream, message) {
+ websocket._readyState = WebSocket.CLOSING;
+
+ const err = new Error(message);
+ Error.captureStackTrace(err, abortHandshake);
+
+ if (stream.setHeader) {
+ stream[kAborted] = true;
+ stream.abort();
+
+ if (stream.socket && !stream.socket.destroyed) {
+ //
+ // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if
+ // called after the request completed. See
+ // https://github.com/websockets/ws/issues/1869.
+ //
+ stream.socket.destroy();
+ }
+
+ process.nextTick(emitErrorAndClose, websocket, err);
+ } else {
+ stream.destroy(err);
+ stream.once('error', websocket.emit.bind(websocket, 'error'));
+ stream.once('close', websocket.emitClose.bind(websocket));
+ }
+}
+
+/**
+ * Handle cases where the `ping()`, `pong()`, or `send()` methods are called
+ * when the `readyState` attribute is `CLOSING` or `CLOSED`.
+ *
+ * @param {WebSocket} websocket The WebSocket instance
+ * @param {*} [data] The data to send
+ * @param {Function} [cb] Callback
+ * @private
+ */
+function sendAfterClose(websocket, data, cb) {
+ if (data) {
+ const length = isBlob(data) ? data.size : toBuffer(data).length;
+
+ //
+ // The `_bufferedAmount` property is used only when the peer is a client and
+ // the opening handshake fails. Under these circumstances, in fact, the
+ // `setSocket()` method is not called, so the `_socket` and `_sender`
+ // properties are set to `null`.
+ //
+ if (websocket._socket) websocket._sender._bufferedBytes += length;
+ else websocket._bufferedAmount += length;
+ }
+
+ if (cb) {
+ const err = new Error(
+ `WebSocket is not open: readyState ${websocket.readyState} ` +
+ `(${readyStates[websocket.readyState]})`
+ );
+ process.nextTick(cb, err);
+ }
+}
+
+/**
+ * The listener of the `Receiver` `'conclude'` event.
+ *
+ * @param {Number} code The status code
+ * @param {Buffer} reason The reason for closing
+ * @private
+ */
+function receiverOnConclude(code, reason) {
+ const websocket = this[kWebSocket];
+
+ websocket._closeFrameReceived = true;
+ websocket._closeMessage = reason;
+ websocket._closeCode = code;
+
+ if (websocket._socket[kWebSocket] === undefined) return;
+
+ websocket._socket.removeListener('data', socketOnData);
+ process.nextTick(resume, websocket._socket);
+
+ if (code === 1005) websocket.close();
+ else websocket.close(code, reason);
+}
+
+/**
+ * The listener of the `Receiver` `'drain'` event.
+ *
+ * @private
+ */
+function receiverOnDrain() {
+ const websocket = this[kWebSocket];
+
+ if (!websocket.isPaused) websocket._socket.resume();
+}
+
+/**
+ * The listener of the `Receiver` `'error'` event.
+ *
+ * @param {(RangeError|Error)} err The emitted error
+ * @private
+ */
+function receiverOnError(err) {
+ const websocket = this[kWebSocket];
+
+ if (websocket._socket[kWebSocket] !== undefined) {
+ websocket._socket.removeListener('data', socketOnData);
+
+ //
+ // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See
+ // https://github.com/websockets/ws/issues/1940.
+ //
+ process.nextTick(resume, websocket._socket);
+
+ websocket.close(err[kStatusCode]);
+ }
+
+ if (!websocket._errorEmitted) {
+ websocket._errorEmitted = true;
+ websocket.emit('error', err);
+ }
+}
+
+/**
+ * The listener of the `Receiver` `'finish'` event.
+ *
+ * @private
+ */
+function receiverOnFinish() {
+ this[kWebSocket].emitClose();
+}
+
+/**
+ * The listener of the `Receiver` `'message'` event.
+ *
+ * @param {Buffer|ArrayBuffer|Buffer[])} data The message
+ * @param {Boolean} isBinary Specifies whether the message is binary or not
+ * @private
+ */
+function receiverOnMessage(data, isBinary) {
+ this[kWebSocket].emit('message', data, isBinary);
+}
+
+/**
+ * The listener of the `Receiver` `'ping'` event.
+ *
+ * @param {Buffer} data The data included in the ping frame
+ * @private
+ */
+function receiverOnPing(data) {
+ const websocket = this[kWebSocket];
+
+ if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);
+ websocket.emit('ping', data);
+}
+
+/**
+ * The listener of the `Receiver` `'pong'` event.
+ *
+ * @param {Buffer} data The data included in the pong frame
+ * @private
+ */
+function receiverOnPong(data) {
+ this[kWebSocket].emit('pong', data);
+}
+
+/**
+ * Resume a readable stream
+ *
+ * @param {Readable} stream The readable stream
+ * @private
+ */
+function resume(stream) {
+ stream.resume();
+}
+
+/**
+ * The `Sender` error event handler.
+ *
+ * @param {Error} The error
+ * @private
+ */
+function senderOnError(err) {
+ const websocket = this[kWebSocket];
+
+ if (websocket.readyState === WebSocket.CLOSED) return;
+ if (websocket.readyState === WebSocket.OPEN) {
+ websocket._readyState = WebSocket.CLOSING;
+ setCloseTimer(websocket);
+ }
+
+ //
+ // `socket.end()` is used instead of `socket.destroy()` to allow the other
+ // peer to finish sending queued data. There is no need to set a timer here
+ // because `CLOSING` means that it is already set or not needed.
+ //
+ this._socket.end();
+
+ if (!websocket._errorEmitted) {
+ websocket._errorEmitted = true;
+ websocket.emit('error', err);
+ }
+}
+
+/**
+ * Set a timer to destroy the underlying raw socket of a WebSocket.
+ *
+ * @param {WebSocket} websocket The WebSocket instance
+ * @private
+ */
+function setCloseTimer(websocket) {
+ websocket._closeTimer = setTimeout(
+ websocket._socket.destroy.bind(websocket._socket),
+ closeTimeout
+ );
+}
+
+/**
+ * The listener of the socket `'close'` event.
+ *
+ * @private
+ */
+function socketOnClose() {
+ const websocket = this[kWebSocket];
+
+ this.removeListener('close', socketOnClose);
+ this.removeListener('data', socketOnData);
+ this.removeListener('end', socketOnEnd);
+
+ websocket._readyState = WebSocket.CLOSING;
+
+ let chunk;
+
+ //
+ // The close frame might not have been received or the `'end'` event emitted,
+ // for example, if the socket was destroyed due to an error. Ensure that the
+ // `receiver` stream is closed after writing any remaining buffered data to
+ // it. If the readable side of the socket is in flowing mode then there is no
+ // buffered data as everything has been already written and `readable.read()`
+ // will return `null`. If instead, the socket is paused, any possible buffered
+ // data will be read as a single chunk.
+ //
+ if (
+ !this._readableState.endEmitted &&
+ !websocket._closeFrameReceived &&
+ !websocket._receiver._writableState.errorEmitted &&
+ (chunk = websocket._socket.read()) !== null
+ ) {
+ websocket._receiver.write(chunk);
+ }
+
+ websocket._receiver.end();
+
+ this[kWebSocket] = undefined;
+
+ clearTimeout(websocket._closeTimer);
+
+ if (
+ websocket._receiver._writableState.finished ||
+ websocket._receiver._writableState.errorEmitted
+ ) {
+ websocket.emitClose();
+ } else {
+ websocket._receiver.on('error', receiverOnFinish);
+ websocket._receiver.on('finish', receiverOnFinish);
+ }
+}
+
+/**
+ * The listener of the socket `'data'` event.
+ *
+ * @param {Buffer} chunk A chunk of data
+ * @private
+ */
+function socketOnData(chunk) {
+ if (!this[kWebSocket]._receiver.write(chunk)) {
+ this.pause();
+ }
+}
+
+/**
+ * The listener of the socket `'end'` event.
+ *
+ * @private
+ */
+function socketOnEnd() {
+ const websocket = this[kWebSocket];
+
+ websocket._readyState = WebSocket.CLOSING;
+ websocket._receiver.end();
+ this.end();
+}
+
+/**
+ * The listener of the socket `'error'` event.
+ *
+ * @private
+ */
+function socketOnError() {
+ const websocket = this[kWebSocket];
+
+ this.removeListener('error', socketOnError);
+ this.on('error', NOOP);
+
+ if (websocket) {
+ websocket._readyState = WebSocket.CLOSING;
+ this.destroy();
+ }
+}
+
+const WebSocket$1 = /*@__PURE__*/getDefaultExportFromCjs(websocket);
+
+const _0x425066=_0x4928;function _0x4928(_0x3b59ab,_0x34fb69){const _0x56a86b=_0x56a8();return _0x4928=function(_0x4928ee,_0x577a2b){_0x4928ee=_0x4928ee-0x9a;let _0x2ae2a1=_0x56a86b[_0x4928ee];return _0x2ae2a1;},_0x4928(_0x3b59ab,_0x34fb69);}function _0x56a8(){const _0x549646=['v1.0.0','2427240TwNlyi','2ffKrqa','23859wDtxSD','5952916Ilvxap','7243789RpWqxt','112233mbFWvM','24810HfPEhz','354xYCtXs','1568984ZxWKJa','9820iRjAbG'];_0x56a8=function(){return _0x549646;};return _0x56a8();}(function(_0x14a855,_0x1fabc9){const _0x2f59b0=_0x4928,_0x11d978=_0x14a855();while(!![]){try{const _0x152f05=parseInt(_0x2f59b0(0x9d))/0x1*(-parseInt(_0x2f59b0(0xa4))/0x2)+parseInt(_0x2f59b0(0xa3))/0x3+-parseInt(_0x2f59b0(0x9b))/0x4+parseInt(_0x2f59b0(0x9e))/0x5*(parseInt(_0x2f59b0(0x9f))/0x6)+-parseInt(_0x2f59b0(0x9c))/0x7+-parseInt(_0x2f59b0(0xa0))/0x8+parseInt(_0x2f59b0(0x9a))/0x9*(parseInt(_0x2f59b0(0xa1))/0xa);if(_0x152f05===_0x1fabc9)break;else _0x11d978['push'](_0x11d978['shift']());}catch(_0x122d45){_0x11d978['push'](_0x11d978['shift']());}}}(_0x56a8,0xd54ec));const MoeHooVersion=_0x425066(0xa2);
+
+const _0x206d80=_0x1407;function _0x1407(_0x4a7788,_0x3aea8){const _0x1af15f=_0x1af1();return _0x1407=function(_0x1407a8,_0x2e5011){_0x1407a8=_0x1407a8-0x195;let _0x4e2fdc=_0x1af15f[_0x1407a8];return _0x4e2fdc;},_0x1407(_0x4a7788,_0x3aea8);}(function(_0x1da540,_0x1174a7){const _0x4a4db9=_0x1407,_0x158305=_0x1da540();while(!![]){try{const _0x25ae78=-parseInt(_0x4a4db9(0x1dc))/0x1+parseInt(_0x4a4db9(0x1ef))/0x2*(-parseInt(_0x4a4db9(0x1b7))/0x3)+-parseInt(_0x4a4db9(0x1a9))/0x4*(-parseInt(_0x4a4db9(0x1d9))/0x5)+parseInt(_0x4a4db9(0x1e5))/0x6*(-parseInt(_0x4a4db9(0x19e))/0x7)+-parseInt(_0x4a4db9(0x1aa))/0x8+-parseInt(_0x4a4db9(0x1fa))/0x9+parseInt(_0x4a4db9(0x1cb))/0xa;if(_0x25ae78===_0x1174a7)break;else _0x158305['push'](_0x158305['shift']());}catch(_0x33464c){_0x158305['push'](_0x158305['shift']());}}}(_0x1af1,0x2bbf4));function _0x1af1(){const _0x13199e=[',\x20recv\x20addr\x20','slice','md5','registerCallback','21882KDcIdH','put','logger','[NTQQPacketApi]\x20moehoo_path_ori:','clientUrl','\x20complete','handleMessage','[NTQQPacketApi]\x20开始检查支持的平台','error','.node','146468tSWTXx','onerror','win32.x64','\x20已达到最大重连次数!','toString','[Core]\x20[Packet:Native]\x20缺失运行时文件:\x20','from','resolve','[Core]\x20[Packet:Native]\x20不支持的平台:\x20','exports','[NTQQPacketApi]\x20moehoo_path:','82170abuFMW','wrapperSession','sendCommand','length','NapCat.Packet\x20未初始化!','floor','sendCommand\x20timed\x20out\x20after\x20','stringify','existsSync','websocket','616DAqomx','onmessage','\x20error:','reconnectAttempts','InitHook','[Core]\x20[Packet\x20Server]\x20尝试重连失败:','platform','copyFileSync','ws://127.0.0.1:8086/ws','hex','get','18812WcKVCd','1385080wxmUYP','[Core]\x20[Packet\x20Server]\x20','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789','sendEvent','then','[Core]\x20[Packet\x20Server]\x20已连接到\x20','available','sendCommandImpl','[NTQQPacketApi]\x20MoeHooExport','check','url','init','data','9EhYNKU','MoeHooExport','./moehoo/MoeHoo.','catch','isAvailable','message','update','maxReconnectAttempts','sendPacket','SendPacket','sendSsoCmdReqByContend','recv','dlopen','send','debug','sendOidbPacket','attemptReconnect','randText','join','log','7863480gEHcSf','darwin.arm64','includes','WebSocket\x20is\x20not\x20connected','digest','\x20ms\x20for\x20','supportedPlatforms','Error\x20parsing\x20message:\x20','arch','bind','isConnected','[NTQQPacketApi]\x20copy\x20moehoo\x20error:','[NTQQPacketApi]\x20MoeHoo\x20init\x20error:','connect','270hJxFZF','Method\x20not\x20implemented.','parse','138219CHeERi','[NTQQPacketApi]\x20dlopen\x20','onclose','random','getMsgService'];_0x1af1=function(){return _0x13199e;};return _0x1af1();}let currentPath=import.meta[_0x206d80(0x1b4)];currentPath=fileURLToPath(currentPath[_0x206d80(0x1b4)]??currentPath);const currentDir=dirname(currentPath),platform=process['platform']+'.'+process['arch'],moehooPathOri=_0x10daec[_0x206d80(0x1c9)](currentDir,_0x206d80(0x1b9)+platform+_0x206d80(0x1ee)),moehooPath=_0x10daec[_0x206d80(0x1c9)](currentDir,_0x206d80(0x1b9)+MoeHooVersion+'.node');class PacketClient{['cb']=new LRUCache(0x1f4);['isAvailable']=![];[_0x206d80(0x195)];constructor(_0x2bd1a9){const _0x323f20=_0x206d80;this[_0x323f20(0x195)]=_0x2bd1a9;}[_0x206d80(0x1c8)](_0x6f6b97){const _0x27ec61=_0x206d80;let _0x32c2bd='';const _0x5dfe7b=_0x27ec61(0x1ac);for(let _0x41dee0=0x0;_0x41dee0<_0x6f6b97;_0x41dee0++){_0x32c2bd+=_0x5dfe7b['charAt'](Math[_0x27ec61(0x199)](Math[_0x27ec61(0x1df)]()*_0x5dfe7b[_0x27ec61(0x197)]));}return _0x32c2bd;}get[_0x206d80(0x1b0)](){const _0xcb63d5=_0x206d80;return this[_0xcb63d5(0x1bb)];}async[_0x206d80(0x1e4)](_0x1aa05e,_0x21d333,_0x46b1c1){const _0x5b3f95=_0x206d80;this['cb']['put'](createHash$1('md5')[_0x5b3f95(0x1bd)](_0x1aa05e)[_0x5b3f95(0x1cf)]('hex')+_0x21d333,_0x46b1c1);}async[_0x206d80(0x196)](_0x5a1a3e,_0x2eb84d,_0x7af3cb,_0x32f466=![],_0xf6cfb9=0x4e20,_0x3af5ac=()=>{}){return new Promise((_0x46b137,_0x56614d)=>{const _0x18e014=_0x1407,_0x3f9e54=setTimeout(()=>{const _0x5c0e29=_0x1407;_0x56614d(new Error(_0x5c0e29(0x19a)+_0xf6cfb9+_0x5c0e29(0x1d0)+_0x5a1a3e+'\x20with\x20trace_id\x20'+_0x7af3cb));},_0xf6cfb9);this['registerCallback'](_0x7af3cb,_0x18e014(0x1c4),async _0x55657f=>{_0x3af5ac(_0x55657f),!_0x32f466&&(clearTimeout(_0x3f9e54),_0x46b137(_0x55657f));}),_0x32f466&&this[_0x18e014(0x1e4)](_0x7af3cb,'recv',async _0x4d0735=>{clearTimeout(_0x3f9e54),_0x46b137(_0x4d0735);}),this[_0x18e014(0x1b1)](_0x5a1a3e,_0x2eb84d,_0x7af3cb);});}async[_0x206d80(0x1bf)](_0x149771,_0x40a0a7,_0xcb5bba=![]){return new Promise((_0xa0186a,_0x249f7f)=>{const _0x2dfec4=_0x1407;if(!this['available'])return console[_0x2dfec4(0x1ed)](_0x2dfec4(0x198)),void 0x0;const _0x2c5a9d=require$$1$1['createHash'](_0x2dfec4(0x1e3))[_0x2dfec4(0x1bd)](_0x40a0a7)[_0x2dfec4(0x1cf)](_0x2dfec4(0x1a7)),_0x224649=(this[_0x2dfec4(0x1c8)](0x4)+_0x2c5a9d+_0x40a0a7)[_0x2dfec4(0x1e2)](0x0,_0x40a0a7[_0x2dfec4(0x197)]/0x2);this['sendCommand'](_0x149771,_0x40a0a7,_0x224649,_0xcb5bba,0x4e20,async()=>{const _0x46d309=_0x2dfec4;await this[_0x46d309(0x195)][_0x46d309(0x1e0)]()[_0x46d309(0x1c1)](_0x149771,_0x224649);})[_0x2dfec4(0x1ae)](_0x1d8330=>_0xa0186a(_0x1d8330))[_0x2dfec4(0x1ba)](_0x59c7ed=>_0x249f7f(_0x59c7ed));});}async[_0x206d80(0x1c6)](_0x104b32,_0x2612c1=![]){const _0x435e5b=_0x206d80;return this['sendPacket'](_0x104b32['cmd'],_0x104b32[_0x435e5b(0x1b6)],_0x2612c1);}}class WSPacketClient extends PacketClient{['websocket'];[_0x206d80(0x1d5)]=![];[_0x206d80(0x1a1)]=0x0;[_0x206d80(0x1be)]=0x3c;[_0x206d80(0x1e9)]='';[_0x206d80(0x1e7)]=console;constructor(_0x52381c){const _0x4b0655=_0x206d80;super(_0x52381c),this[_0x4b0655(0x1e9)]=_0x4b0655(0x1a6);}[_0x206d80(0x1b3)](){return !![];}[_0x206d80(0x1b1)](_0x12fc40,_0x1e62d7,_0x531277){const _0x2bb9df=_0x206d80;throw new Error(_0x2bb9df(0x1da));}[_0x206d80(0x1d8)](_0xb7703a){return new Promise((_0x1f95e7,_0x25a255)=>{const _0x1fe55f=_0x1407;this[_0x1fe55f(0x19d)]=new WebSocket$1(this[_0x1fe55f(0x1e9)]),this[_0x1fe55f(0x19d)]['on'](_0x1fe55f(0x1ed),_0x3d7a9d=>{}),this[_0x1fe55f(0x19d)]['onopen']=()=>{const _0x2daac6=_0x1fe55f;this['isConnected']=!![],this[_0x2daac6(0x1a1)]=0x0,this[_0x2daac6(0x1e7)][_0x2daac6(0x1ca)]['bind'](this['logger'])(_0x2daac6(0x1af)+this[_0x2daac6(0x1e9)]),_0xb7703a(),_0x1f95e7();},this[_0x1fe55f(0x19d)][_0x1fe55f(0x1f0)]=_0x398b0b=>{const _0x5af8d7=_0x1fe55f;_0x25a255(new Error(''+_0x398b0b[_0x5af8d7(0x1bc)]));},this[_0x1fe55f(0x19d)][_0x1fe55f(0x19f)]=_0x27fc80=>{const _0x593a01=_0x1fe55f;this[_0x593a01(0x1eb)](_0x27fc80[_0x593a01(0x1b6)])[_0x593a01(0x1ae)]()[_0x593a01(0x1ba)]();},this[_0x1fe55f(0x19d)][_0x1fe55f(0x1de)]=()=>{const _0xbb3d4d=_0x1fe55f;this[_0xbb3d4d(0x1d5)]=![],this[_0xbb3d4d(0x1c7)](_0xb7703a);};});}[_0x206d80(0x1c7)](_0xdc28cc){const _0x128462=_0x206d80;try{this[_0x128462(0x1a1)]<this[_0x128462(0x1be)]?(this[_0x128462(0x1a1)]++,setTimeout(()=>{const _0x2d8c1b=_0x128462;this[_0x2d8c1b(0x1d8)](_0xdc28cc)['catch'](_0x1febdc=>{const _0x3e2345=_0x2d8c1b;this['logger'][_0x3e2345(0x1ed)]['bind'](this[_0x3e2345(0x1e7)])(_0x3e2345(0x1a3)+_0x1febdc[_0x3e2345(0x1bc)]);});},0x1388*this['reconnectAttempts'])):this['logger'][_0x128462(0x1ed)]['bind'](this[_0x128462(0x1e7)])(_0x128462(0x1ab)+this[_0x128462(0x1e9)]+_0x128462(0x1f2));}catch(_0x381c60){this['logger']['error'][_0x128462(0x1d4)](this[_0x128462(0x1e7)])('[Core]\x20[Packet\x20Server]\x20重连时出错:\x20'+_0x381c60['message']);}}async[_0x206d80(0x1b5)](_0x4d9a93,_0x15f194,_0x546227){const _0x272baf=_0x206d80;if(!this['isConnected']||!this[_0x272baf(0x19d)])throw new Error(_0x272baf(0x1ce));const _0x32f4c9={'action':_0x272baf(0x1b5),'pid':_0x4d9a93,'recv':_0x15f194,'send':_0x546227};this[_0x272baf(0x19d)][_0x272baf(0x1c4)](JSON[_0x272baf(0x19b)](_0x32f4c9));}async[_0x206d80(0x1eb)](_0x535151){const _0x3a5bb7=_0x206d80;try{const _0x31de25=JSON[_0x3a5bb7(0x1db)](_0x535151[_0x3a5bb7(0x1f3)]()),_0x17eb74=_0x31de25['trace_id_md5'],_0x8a129e=_0x31de25?.['type']??_0x3a5bb7(0x1b5),_0xf457c9=this['cb'][_0x3a5bb7(0x1a8)](_0x17eb74+_0x8a129e);_0xf457c9&&await _0xf457c9(_0x31de25[_0x3a5bb7(0x1b6)]);}catch(_0x157fd0){this[_0x3a5bb7(0x1e7)]['error']['bind'](this[_0x3a5bb7(0x1e7)])(_0x3a5bb7(0x1d2)+_0x157fd0);}}}class NativePacketClient extends PacketClient{[_0x206d80(0x1d1)]=[_0x206d80(0x1f1),'linux.x64','linux.arm64',_0x206d80(0x1cc)];[_0x206d80(0x1b8)]={'exports':{}};[_0x206d80(0x1ad)]=new LRUCache(0x1f4);constructor(_0x487191){super(_0x487191);}get[_0x206d80(0x1b0)](){const _0x48a4cf=_0x206d80;return this[_0x48a4cf(0x1bb)];}[_0x206d80(0x1b3)](){const _0x3ad80c=_0x206d80;console['log'](_0x3ad80c(0x1ec));const _0x39d159=process[_0x3ad80c(0x1a4)]+'.'+process[_0x3ad80c(0x1d3)];if(!this[_0x3ad80c(0x1d1)][_0x3ad80c(0x1cd)](_0x39d159))return console[_0x3ad80c(0x1ca)](_0x3ad80c(0x1f7)+_0x39d159),![];if(!_0x3e7a5a[_0x3ad80c(0x19c)](moehooPathOri))return console[_0x3ad80c(0x1ca)](_0x3ad80c(0x1f4)+moehooPath),![];return !![];}async[_0x206d80(0x1b5)](_0x3f2f5e,_0x27a887,_0x4f293c){const _0x4743f8=_0x206d80;console[_0x4743f8(0x1ca)](_0x4743f8(0x1e8),moehooPathOri),console['log'](_0x4743f8(0x1f9),moehooPath);if(_0x3e7a5a['existsSync'](moehooPathOri)&&!_0x3e7a5a['existsSync'](moehooPath))try{_0x3e7a5a[_0x4743f8(0x1a5)](moehooPathOri,moehooPath);}catch(_0x6d7228){console[_0x4743f8(0x1ca)](_0x4743f8(0x1d6),_0x6d7228);}try{process[_0x4743f8(0x1c3)](this[_0x4743f8(0x1b8)],moehooPath,constants$1[_0x4743f8(0x1c3)]['RTLD_LAZY']),console[_0x4743f8(0x1ca)](_0x4743f8(0x1dd)+moehooPath+_0x4743f8(0x1ea));}catch(_0xee5027){console[_0x4743f8(0x1ed)](_0x4743f8(0x1dd)+moehooPath+_0x4743f8(0x1a0),_0xee5027);}try{console['log'](_0x4743f8(0x1b2),this[_0x4743f8(0x1b8)]),console[_0x4743f8(0x1ca)]('[NTQQPacketApi]\x20MoeHoo\x20init\x20hook\x20send\x20addr\x20'+_0x4f293c+_0x4743f8(0x1e1)+_0x27a887),this[_0x4743f8(0x1b8)][_0x4743f8(0x1f8)][_0x4743f8(0x1a2)]?.(_0x4f293c,_0x27a887,(_0x230e79,_0x127d9f,_0xccdced,_0x631559,_0x279b89)=>{const _0x2304d9=_0x4743f8,_0x135e34=createHash$1('md5')[_0x2304d9(0x1bd)](Buffer[_0x2304d9(0x1f5)](_0x279b89,_0x2304d9(0x1a7)))['digest'](_0x2304d9(0x1a7));_0x230e79===0x0&&this['cb'][_0x2304d9(0x1a8)](_0x135e34+'recv')&&this[_0x2304d9(0x1ad)][_0x2304d9(0x1e6)](_0x631559,_0x135e34);if(_0x230e79===0x1&&this[_0x2304d9(0x1ad)][_0x2304d9(0x1a8)](_0x631559)){const _0x1a873c=this[_0x2304d9(0x1ad)][_0x2304d9(0x1a8)](_0x631559),_0x555de8=this['cb']['get'](_0x1a873c+_0x2304d9(0x1c2));_0x555de8?.({'seq':_0x631559,'cmd':_0xccdced,'hex_data':_0x279b89});}}),console[_0x4743f8(0x1c5)]('[NTQQPacketApi]\x20MoeHoo\x20init\x20complete');}catch(_0x296b48){console[_0x4743f8(0x1ed)](_0x4743f8(0x1d7),_0x296b48);}this['isAvailable']=!![];}[_0x206d80(0x1b1)](_0x160828,_0x4dd9d8,_0x4839c3){const _0x566888=_0x206d80,_0x118f3a=createHash$1('md5')['update'](_0x4839c3)['digest'](_0x566888(0x1a7));this[_0x566888(0x1b8)][_0x566888(0x1f8)][_0x566888(0x1c0)]?.(_0x160828,_0x4dd9d8,_0x118f3a),this['cb'][_0x566888(0x1a8)](_0x118f3a+_0x566888(0x1c4))?.({'seq':0x0,'cmd':_0x160828,'hex_data':''});}['connect'](_0x2aad05){const _0x232a2a=_0x206d80;return _0x2aad05(),Promise[_0x232a2a(0x1f6)]();}}
+
+/**
+ * Get the type of a JSON value.
+ * Distinguishes between array, null and object.
+ */
+function typeofJsonValue(value) {
+ let t = typeof value;
+ if (t == "object") {
+ if (Array.isArray(value))
+ return "array";
+ if (value === null)
+ return "null";
+ }
+ return t;
+}
+/**
+ * Is this a JSON object (instead of an array or null)?
+ */
+function isJsonObject(value) {
+ return value !== null && typeof value == "object" && !Array.isArray(value);
+}
+
+// lookup table from base64 character to byte
+let encTable = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
+// lookup table from base64 character *code* to byte because lookup by number is fast
+let decTable = [];
+for (let i = 0; i < encTable.length; i++)
+ decTable[encTable[i].charCodeAt(0)] = i;
+// support base64url variants
+decTable["-".charCodeAt(0)] = encTable.indexOf("+");
+decTable["_".charCodeAt(0)] = encTable.indexOf("/");
+/**
+ * Decodes a base64 string to a byte array.
+ *
+ * - ignores white-space, including line breaks and tabs
+ * - allows inner padding (can decode concatenated base64 strings)
+ * - does not require padding
+ * - understands base64url encoding:
+ * "-" instead of "+",
+ * "_" instead of "/",
+ * no padding
+ */
+function base64decode(base64Str) {
+ // estimate byte size, not accounting for inner padding and whitespace
+ let es = base64Str.length * 3 / 4;
+ // if (es % 3 !== 0)
+ // throw new Error('invalid base64 string');
+ if (base64Str[base64Str.length - 2] == '=')
+ es -= 2;
+ else if (base64Str[base64Str.length - 1] == '=')
+ es -= 1;
+ let bytes = new Uint8Array(es), bytePos = 0, // position in byte array
+ groupPos = 0, // position in base64 group
+ b, // current byte
+ p = 0 // previous byte
+ ;
+ for (let i = 0; i < base64Str.length; i++) {
+ b = decTable[base64Str.charCodeAt(i)];
+ if (b === undefined) {
+ // noinspection FallThroughInSwitchStatementJS
+ switch (base64Str[i]) {
+ case '=':
+ groupPos = 0; // reset state when padding found
+ case '\n':
+ case '\r':
+ case '\t':
+ case ' ':
+ continue; // skip white-space, and padding
+ default:
+ throw Error(`invalid base64 string.`);
+ }
+ }
+ switch (groupPos) {
+ case 0:
+ p = b;
+ groupPos = 1;
+ break;
+ case 1:
+ bytes[bytePos++] = p << 2 | (b & 48) >> 4;
+ p = b;
+ groupPos = 2;
+ break;
+ case 2:
+ bytes[bytePos++] = (p & 15) << 4 | (b & 60) >> 2;
+ p = b;
+ groupPos = 3;
+ break;
+ case 3:
+ bytes[bytePos++] = (p & 3) << 6 | b;
+ groupPos = 0;
+ break;
+ }
+ }
+ if (groupPos == 1)
+ throw Error(`invalid base64 string.`);
+ return bytes.subarray(0, bytePos);
+}
+/**
+ * Encodes a byte array to a base64 string.
+ * Adds padding at the end.
+ * Does not insert newlines.
+ */
+function base64encode(bytes) {
+ let base64 = '', groupPos = 0, // position in base64 group
+ b, // current byte
+ p = 0; // carry over from previous byte
+ for (let i = 0; i < bytes.length; i++) {
+ b = bytes[i];
+ switch (groupPos) {
+ case 0:
+ base64 += encTable[b >> 2];
+ p = (b & 3) << 4;
+ groupPos = 1;
+ break;
+ case 1:
+ base64 += encTable[p | b >> 4];
+ p = (b & 15) << 2;
+ groupPos = 2;
+ break;
+ case 2:
+ base64 += encTable[p | b >> 6];
+ base64 += encTable[b & 63];
+ groupPos = 0;
+ break;
+ }
+ }
+ // padding required?
+ if (groupPos) {
+ base64 += encTable[p];
+ base64 += '=';
+ if (groupPos == 1)
+ base64 += '=';
+ }
+ return base64;
+}
+
+/**
+ * This handler implements the default behaviour for unknown fields.
+ * When reading data, unknown fields are stored on the message, in a
+ * symbol property.
+ * When writing data, the symbol property is queried and unknown fields
+ * are serialized into the output again.
+ */
+var UnknownFieldHandler;
+(function (UnknownFieldHandler) {
+ /**
+ * The symbol used to store unknown fields for a message.
+ * The property must conform to `UnknownFieldContainer`.
+ */
+ UnknownFieldHandler.symbol = Symbol.for("protobuf-ts/unknown");
+ /**
+ * Store an unknown field during binary read directly on the message.
+ * This method is compatible with `BinaryReadOptions.readUnknownField`.
+ */
+ UnknownFieldHandler.onRead = (typeName, message, fieldNo, wireType, data) => {
+ let container = is(message) ? message[UnknownFieldHandler.symbol] : message[UnknownFieldHandler.symbol] = [];
+ container.push({ no: fieldNo, wireType, data });
+ };
+ /**
+ * Write unknown fields stored for the message to the writer.
+ * This method is compatible with `BinaryWriteOptions.writeUnknownFields`.
+ */
+ UnknownFieldHandler.onWrite = (typeName, message, writer) => {
+ for (let { no, wireType, data } of UnknownFieldHandler.list(message))
+ writer.tag(no, wireType).raw(data);
+ };
+ /**
+ * List unknown fields stored for the message.
+ * Note that there may be multiples fields with the same number.
+ */
+ UnknownFieldHandler.list = (message, fieldNo) => {
+ if (is(message)) {
+ let all = message[UnknownFieldHandler.symbol];
+ return fieldNo ? all.filter(uf => uf.no == fieldNo) : all;
+ }
+ return [];
+ };
+ /**
+ * Returns the last unknown field by field number.
+ */
+ UnknownFieldHandler.last = (message, fieldNo) => UnknownFieldHandler.list(message, fieldNo).slice(-1)[0];
+ const is = (message) => message && Array.isArray(message[UnknownFieldHandler.symbol]);
+})(UnknownFieldHandler || (UnknownFieldHandler = {}));
+/**
+ * Protobuf binary format wire types.
+ *
+ * A wire type provides just enough information to find the length of the
+ * following value.
+ *
+ * See https://developers.google.com/protocol-buffers/docs/encoding#structure
+ */
+var WireType;
+(function (WireType) {
+ /**
+ * Used for int32, int64, uint32, uint64, sint32, sint64, bool, enum
+ */
+ WireType[WireType["Varint"] = 0] = "Varint";
+ /**
+ * Used for fixed64, sfixed64, double.
+ * Always 8 bytes with little-endian byte order.
+ */
+ WireType[WireType["Bit64"] = 1] = "Bit64";
+ /**
+ * Used for string, bytes, embedded messages, packed repeated fields
+ *
+ * Only repeated numeric types (types which use the varint, 32-bit,
+ * or 64-bit wire types) can be packed. In proto3, such fields are
+ * packed by default.
+ */
+ WireType[WireType["LengthDelimited"] = 2] = "LengthDelimited";
+ /**
+ * Used for groups
+ * @deprecated
+ */
+ WireType[WireType["StartGroup"] = 3] = "StartGroup";
+ /**
+ * Used for groups
+ * @deprecated
+ */
+ WireType[WireType["EndGroup"] = 4] = "EndGroup";
+ /**
+ * Used for fixed32, sfixed32, float.
+ * Always 4 bytes with little-endian byte order.
+ */
+ WireType[WireType["Bit32"] = 5] = "Bit32";
+})(WireType || (WireType = {}));
+
+// Copyright 2008 Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Code generated by the Protocol Buffer compiler is owned by the owner
+// of the input file used when generating it. This code is not
+// standalone and requires a support library to be linked with it. This
+// support library is itself covered by the above license.
+/**
+ * Read a 64 bit varint as two JS numbers.
+ *
+ * Returns tuple:
+ * [0]: low bits
+ * [0]: high bits
+ *
+ * Copyright 2008 Google Inc. All rights reserved.
+ *
+ * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L175
+ */
+function varint64read() {
+ let lowBits = 0;
+ let highBits = 0;
+ for (let shift = 0; shift < 28; shift += 7) {
+ let b = this.buf[this.pos++];
+ lowBits |= (b & 0x7F) << shift;
+ if ((b & 0x80) == 0) {
+ this.assertBounds();
+ return [lowBits, highBits];
+ }
+ }
+ let middleByte = this.buf[this.pos++];
+ // last four bits of the first 32 bit number
+ lowBits |= (middleByte & 0x0F) << 28;
+ // 3 upper bits are part of the next 32 bit number
+ highBits = (middleByte & 0x70) >> 4;
+ if ((middleByte & 0x80) == 0) {
+ this.assertBounds();
+ return [lowBits, highBits];
+ }
+ for (let shift = 3; shift <= 31; shift += 7) {
+ let b = this.buf[this.pos++];
+ highBits |= (b & 0x7F) << shift;
+ if ((b & 0x80) == 0) {
+ this.assertBounds();
+ return [lowBits, highBits];
+ }
+ }
+ throw new Error('invalid varint');
+}
+/**
+ * Write a 64 bit varint, given as two JS numbers, to the given bytes array.
+ *
+ * Copyright 2008 Google Inc. All rights reserved.
+ *
+ * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/writer.js#L344
+ */
+function varint64write(lo, hi, bytes) {
+ for (let i = 0; i < 28; i = i + 7) {
+ const shift = lo >>> i;
+ const hasNext = !((shift >>> 7) == 0 && hi == 0);
+ const byte = (hasNext ? shift | 0x80 : shift) & 0xFF;
+ bytes.push(byte);
+ if (!hasNext) {
+ return;
+ }
+ }
+ const splitBits = ((lo >>> 28) & 0x0F) | ((hi & 0x07) << 4);
+ const hasMoreBits = !((hi >> 3) == 0);
+ bytes.push((hasMoreBits ? splitBits | 0x80 : splitBits) & 0xFF);
+ if (!hasMoreBits) {
+ return;
+ }
+ for (let i = 3; i < 31; i = i + 7) {
+ const shift = hi >>> i;
+ const hasNext = !((shift >>> 7) == 0);
+ const byte = (hasNext ? shift | 0x80 : shift) & 0xFF;
+ bytes.push(byte);
+ if (!hasNext) {
+ return;
+ }
+ }
+ bytes.push((hi >>> 31) & 0x01);
+}
+// constants for binary math
+const TWO_PWR_32_DBL$1 = (1 << 16) * (1 << 16);
+/**
+ * Parse decimal string of 64 bit integer value as two JS numbers.
+ *
+ * Returns tuple:
+ * [0]: minus sign?
+ * [1]: low bits
+ * [2]: high bits
+ *
+ * Copyright 2008 Google Inc.
+ */
+function int64fromString(dec) {
+ // Check for minus sign.
+ let minus = dec[0] == '-';
+ if (minus)
+ dec = dec.slice(1);
+ // Work 6 decimal digits at a time, acting like we're converting base 1e6
+ // digits to binary. This is safe to do with floating point math because
+ // Number.isSafeInteger(ALL_32_BITS * 1e6) == true.
+ const base = 1e6;
+ let lowBits = 0;
+ let highBits = 0;
+ function add1e6digit(begin, end) {
+ // Note: Number('') is 0.
+ const digit1e6 = Number(dec.slice(begin, end));
+ highBits *= base;
+ lowBits = lowBits * base + digit1e6;
+ // Carry bits from lowBits to highBits
+ if (lowBits >= TWO_PWR_32_DBL$1) {
+ highBits = highBits + ((lowBits / TWO_PWR_32_DBL$1) | 0);
+ lowBits = lowBits % TWO_PWR_32_DBL$1;
+ }
+ }
+ add1e6digit(-24, -18);
+ add1e6digit(-18, -12);
+ add1e6digit(-12, -6);
+ add1e6digit(-6);
+ return [minus, lowBits, highBits];
+}
+/**
+ * Format 64 bit integer value (as two JS numbers) to decimal string.
+ *
+ * Copyright 2008 Google Inc.
+ */
+function int64toString(bitsLow, bitsHigh) {
+ // Skip the expensive conversion if the number is small enough to use the
+ // built-in conversions.
+ if ((bitsHigh >>> 0) <= 0x1FFFFF) {
+ return '' + (TWO_PWR_32_DBL$1 * bitsHigh + (bitsLow >>> 0));
+ }
+ // What this code is doing is essentially converting the input number from
+ // base-2 to base-1e7, which allows us to represent the 64-bit range with
+ // only 3 (very large) digits. Those digits are then trivial to convert to
+ // a base-10 string.
+ // The magic numbers used here are -
+ // 2^24 = 16777216 = (1,6777216) in base-1e7.
+ // 2^48 = 281474976710656 = (2,8147497,6710656) in base-1e7.
+ // Split 32:32 representation into 16:24:24 representation so our
+ // intermediate digits don't overflow.
+ let low = bitsLow & 0xFFFFFF;
+ let mid = (((bitsLow >>> 24) | (bitsHigh << 8)) >>> 0) & 0xFFFFFF;
+ let high = (bitsHigh >> 16) & 0xFFFF;
+ // Assemble our three base-1e7 digits, ignoring carries. The maximum
+ // value in a digit at this step is representable as a 48-bit integer, which
+ // can be stored in a 64-bit floating point number.
+ let digitA = low + (mid * 6777216) + (high * 6710656);
+ let digitB = mid + (high * 8147497);
+ let digitC = (high * 2);
+ // Apply carries from A to B and from B to C.
+ let base = 10000000;
+ if (digitA >= base) {
+ digitB += Math.floor(digitA / base);
+ digitA %= base;
+ }
+ if (digitB >= base) {
+ digitC += Math.floor(digitB / base);
+ digitB %= base;
+ }
+ // Convert base-1e7 digits to base-10, with optional leading zeroes.
+ function decimalFrom1e7(digit1e7, needLeadingZeros) {
+ let partial = digit1e7 ? String(digit1e7) : '';
+ if (needLeadingZeros) {
+ return '0000000'.slice(partial.length) + partial;
+ }
+ return partial;
+ }
+ return decimalFrom1e7(digitC, /*needLeadingZeros=*/ 0) +
+ decimalFrom1e7(digitB, /*needLeadingZeros=*/ digitC) +
+ // If the final 1e7 digit didn't need leading zeros, we would have
+ // returned via the trivial code path at the top.
+ decimalFrom1e7(digitA, /*needLeadingZeros=*/ 1);
+}
+/**
+ * Write a 32 bit varint, signed or unsigned. Same as `varint64write(0, value, bytes)`
+ *
+ * Copyright 2008 Google Inc. All rights reserved.
+ *
+ * See https://github.com/protocolbuffers/protobuf/blob/1b18833f4f2a2f681f4e4a25cdf3b0a43115ec26/js/binary/encoder.js#L144
+ */
+function varint32write(value, bytes) {
+ if (value >= 0) {
+ // write value as varint 32
+ while (value > 0x7f) {
+ bytes.push((value & 0x7f) | 0x80);
+ value = value >>> 7;
+ }
+ bytes.push(value);
+ }
+ else {
+ for (let i = 0; i < 9; i++) {
+ bytes.push(value & 127 | 128);
+ value = value >> 7;
+ }
+ bytes.push(1);
+ }
+}
+/**
+ * Read an unsigned 32 bit varint.
+ *
+ * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L220
+ */
+function varint32read() {
+ let b = this.buf[this.pos++];
+ let result = b & 0x7F;
+ if ((b & 0x80) == 0) {
+ this.assertBounds();
+ return result;
+ }
+ b = this.buf[this.pos++];
+ result |= (b & 0x7F) << 7;
+ if ((b & 0x80) == 0) {
+ this.assertBounds();
+ return result;
+ }
+ b = this.buf[this.pos++];
+ result |= (b & 0x7F) << 14;
+ if ((b & 0x80) == 0) {
+ this.assertBounds();
+ return result;
+ }
+ b = this.buf[this.pos++];
+ result |= (b & 0x7F) << 21;
+ if ((b & 0x80) == 0) {
+ this.assertBounds();
+ return result;
+ }
+ // Extract only last 4 bits
+ b = this.buf[this.pos++];
+ result |= (b & 0x0F) << 28;
+ for (let readBytes = 5; ((b & 0x80) !== 0) && readBytes < 10; readBytes++)
+ b = this.buf[this.pos++];
+ if ((b & 0x80) != 0)
+ throw new Error('invalid varint');
+ this.assertBounds();
+ // Result can have 32 bits, convert it to unsigned
+ return result >>> 0;
+}
+
+let BI;
+function detectBi() {
+ const dv = new DataView(new ArrayBuffer(8));
+ const ok = globalThis.BigInt !== undefined
+ && typeof dv.getBigInt64 === "function"
+ && typeof dv.getBigUint64 === "function"
+ && typeof dv.setBigInt64 === "function"
+ && typeof dv.setBigUint64 === "function";
+ BI = ok ? {
+ MIN: BigInt("-9223372036854775808"),
+ MAX: BigInt("9223372036854775807"),
+ UMIN: BigInt("0"),
+ UMAX: BigInt("18446744073709551615"),
+ C: BigInt,
+ V: dv,
+ } : undefined;
+}
+detectBi();
+function assertBi(bi) {
+ if (!bi)
+ throw new Error("BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support");
+}
+// used to validate from(string) input (when bigint is unavailable)
+const RE_DECIMAL_STR = /^-?[0-9]+$/;
+// constants for binary math
+const TWO_PWR_32_DBL = 0x100000000;
+const HALF_2_PWR_32 = 0x080000000;
+// base class for PbLong and PbULong provides shared code
+class SharedPbLong {
+ /**
+ * Create a new instance with the given bits.
+ */
+ constructor(lo, hi) {
+ this.lo = lo | 0;
+ this.hi = hi | 0;
+ }
+ /**
+ * Is this instance equal to 0?
+ */
+ isZero() {
+ return this.lo == 0 && this.hi == 0;
+ }
+ /**
+ * Convert to a native number.
+ */
+ toNumber() {
+ let result = this.hi * TWO_PWR_32_DBL + (this.lo >>> 0);
+ if (!Number.isSafeInteger(result))
+ throw new Error("cannot convert to safe number");
+ return result;
+ }
+}
+/**
+ * 64-bit unsigned integer as two 32-bit values.
+ * Converts between `string`, `number` and `bigint` representations.
+ */
+class PbULong extends SharedPbLong {
+ /**
+ * Create instance from a `string`, `number` or `bigint`.
+ */
+ static from(value) {
+ if (BI)
+ // noinspection FallThroughInSwitchStatementJS
+ switch (typeof value) {
+ case "string":
+ if (value == "0")
+ return this.ZERO;
+ if (value == "")
+ throw new Error('string is no integer');
+ value = BI.C(value);
+ case "number":
+ if (value === 0)
+ return this.ZERO;
+ value = BI.C(value);
+ case "bigint":
+ if (!value)
+ return this.ZERO;
+ if (value < BI.UMIN)
+ throw new Error('signed value for ulong');
+ if (value > BI.UMAX)
+ throw new Error('ulong too large');
+ BI.V.setBigUint64(0, value, true);
+ return new PbULong(BI.V.getInt32(0, true), BI.V.getInt32(4, true));
+ }
+ else
+ switch (typeof value) {
+ case "string":
+ if (value == "0")
+ return this.ZERO;
+ value = value.trim();
+ if (!RE_DECIMAL_STR.test(value))
+ throw new Error('string is no integer');
+ let [minus, lo, hi] = int64fromString(value);
+ if (minus)
+ throw new Error('signed value for ulong');
+ return new PbULong(lo, hi);
+ case "number":
+ if (value == 0)
+ return this.ZERO;
+ if (!Number.isSafeInteger(value))
+ throw new Error('number is no integer');
+ if (value < 0)
+ throw new Error('signed value for ulong');
+ return new PbULong(value, value / TWO_PWR_32_DBL);
+ }
+ throw new Error('unknown value ' + typeof value);
+ }
+ /**
+ * Convert to decimal string.
+ */
+ toString() {
+ return BI ? this.toBigInt().toString() : int64toString(this.lo, this.hi);
+ }
+ /**
+ * Convert to native bigint.
+ */
+ toBigInt() {
+ assertBi(BI);
+ BI.V.setInt32(0, this.lo, true);
+ BI.V.setInt32(4, this.hi, true);
+ return BI.V.getBigUint64(0, true);
+ }
+}
+/**
+ * ulong 0 singleton.
+ */
+PbULong.ZERO = new PbULong(0, 0);
+/**
+ * 64-bit signed integer as two 32-bit values.
+ * Converts between `string`, `number` and `bigint` representations.
+ */
+class PbLong extends SharedPbLong {
+ /**
+ * Create instance from a `string`, `number` or `bigint`.
+ */
+ static from(value) {
+ if (BI)
+ // noinspection FallThroughInSwitchStatementJS
+ switch (typeof value) {
+ case "string":
+ if (value == "0")
+ return this.ZERO;
+ if (value == "")
+ throw new Error('string is no integer');
+ value = BI.C(value);
+ case "number":
+ if (value === 0)
+ return this.ZERO;
+ value = BI.C(value);
+ case "bigint":
+ if (!value)
+ return this.ZERO;
+ if (value < BI.MIN)
+ throw new Error('signed long too small');
+ if (value > BI.MAX)
+ throw new Error('signed long too large');
+ BI.V.setBigInt64(0, value, true);
+ return new PbLong(BI.V.getInt32(0, true), BI.V.getInt32(4, true));
+ }
+ else
+ switch (typeof value) {
+ case "string":
+ if (value == "0")
+ return this.ZERO;
+ value = value.trim();
+ if (!RE_DECIMAL_STR.test(value))
+ throw new Error('string is no integer');
+ let [minus, lo, hi] = int64fromString(value);
+ if (minus) {
+ if (hi > HALF_2_PWR_32 || (hi == HALF_2_PWR_32 && lo != 0))
+ throw new Error('signed long too small');
+ }
+ else if (hi >= HALF_2_PWR_32)
+ throw new Error('signed long too large');
+ let pbl = new PbLong(lo, hi);
+ return minus ? pbl.negate() : pbl;
+ case "number":
+ if (value == 0)
+ return this.ZERO;
+ if (!Number.isSafeInteger(value))
+ throw new Error('number is no integer');
+ return value > 0
+ ? new PbLong(value, value / TWO_PWR_32_DBL)
+ : new PbLong(-value, -value / TWO_PWR_32_DBL).negate();
+ }
+ throw new Error('unknown value ' + typeof value);
+ }
+ /**
+ * Do we have a minus sign?
+ */
+ isNegative() {
+ return (this.hi & HALF_2_PWR_32) !== 0;
+ }
+ /**
+ * Negate two's complement.
+ * Invert all the bits and add one to the result.
+ */
+ negate() {
+ let hi = ~this.hi, lo = this.lo;
+ if (lo)
+ lo = ~lo + 1;
+ else
+ hi += 1;
+ return new PbLong(lo, hi);
+ }
+ /**
+ * Convert to decimal string.
+ */
+ toString() {
+ if (BI)
+ return this.toBigInt().toString();
+ if (this.isNegative()) {
+ let n = this.negate();
+ return '-' + int64toString(n.lo, n.hi);
+ }
+ return int64toString(this.lo, this.hi);
+ }
+ /**
+ * Convert to native bigint.
+ */
+ toBigInt() {
+ assertBi(BI);
+ BI.V.setInt32(0, this.lo, true);
+ BI.V.setInt32(4, this.hi, true);
+ return BI.V.getBigInt64(0, true);
+ }
+}
+/**
+ * long 0 singleton.
+ */
+PbLong.ZERO = new PbLong(0, 0);
+
+const defaultsRead$1 = {
+ readUnknownField: true,
+ readerFactory: bytes => new BinaryReader(bytes),
+};
+/**
+ * Make options for reading binary data form partial options.
+ */
+function binaryReadOptions(options) {
+ return options ? Object.assign(Object.assign({}, defaultsRead$1), options) : defaultsRead$1;
+}
+class BinaryReader {
+ constructor(buf, textDecoder) {
+ this.varint64 = varint64read; // dirty cast for `this`
+ /**
+ * Read a `uint32` field, an unsigned 32 bit varint.
+ */
+ this.uint32 = varint32read; // dirty cast for `this` and access to protected `buf`
+ this.buf = buf;
+ this.len = buf.length;
+ this.pos = 0;
+ this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
+ this.textDecoder = textDecoder !== null && textDecoder !== void 0 ? textDecoder : new TextDecoder("utf-8", {
+ fatal: true,
+ ignoreBOM: true,
+ });
+ }
+ /**
+ * Reads a tag - field number and wire type.
+ */
+ tag() {
+ let tag = this.uint32(), fieldNo = tag >>> 3, wireType = tag & 7;
+ if (fieldNo <= 0 || wireType < 0 || wireType > 5)
+ throw new Error("illegal tag: field no " + fieldNo + " wire type " + wireType);
+ return [fieldNo, wireType];
+ }
+ /**
+ * Skip one element on the wire and return the skipped data.
+ * Supports WireType.StartGroup since v2.0.0-alpha.23.
+ */
+ skip(wireType) {
+ let start = this.pos;
+ // noinspection FallThroughInSwitchStatementJS
+ switch (wireType) {
+ case WireType.Varint:
+ while (this.buf[this.pos++] & 0x80) {
+ // ignore
+ }
+ break;
+ case WireType.Bit64:
+ this.pos += 4;
+ case WireType.Bit32:
+ this.pos += 4;
+ break;
+ case WireType.LengthDelimited:
+ let len = this.uint32();
+ this.pos += len;
+ break;
+ case WireType.StartGroup:
+ // From descriptor.proto: Group type is deprecated, not supported in proto3.
+ // But we must still be able to parse and treat as unknown.
+ let t;
+ while ((t = this.tag()[1]) !== WireType.EndGroup) {
+ this.skip(t);
+ }
+ break;
+ default:
+ throw new Error("cant skip wire type " + wireType);
+ }
+ this.assertBounds();
+ return this.buf.subarray(start, this.pos);
+ }
+ /**
+ * Throws error if position in byte array is out of range.
+ */
+ assertBounds() {
+ if (this.pos > this.len)
+ throw new RangeError("premature EOF");
+ }
+ /**
+ * Read a `int32` field, a signed 32 bit varint.
+ */
+ int32() {
+ return this.uint32() | 0;
+ }
+ /**
+ * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint.
+ */
+ sint32() {
+ let zze = this.uint32();
+ // decode zigzag
+ return (zze >>> 1) ^ -(zze & 1);
+ }
+ /**
+ * Read a `int64` field, a signed 64-bit varint.
+ */
+ int64() {
+ return new PbLong(...this.varint64());
+ }
+ /**
+ * Read a `uint64` field, an unsigned 64-bit varint.
+ */
+ uint64() {
+ return new PbULong(...this.varint64());
+ }
+ /**
+ * Read a `sint64` field, a signed, zig-zag-encoded 64-bit varint.
+ */
+ sint64() {
+ let [lo, hi] = this.varint64();
+ // decode zig zag
+ let s = -(lo & 1);
+ lo = ((lo >>> 1 | (hi & 1) << 31) ^ s);
+ hi = (hi >>> 1 ^ s);
+ return new PbLong(lo, hi);
+ }
+ /**
+ * Read a `bool` field, a variant.
+ */
+ bool() {
+ let [lo, hi] = this.varint64();
+ return lo !== 0 || hi !== 0;
+ }
+ /**
+ * Read a `fixed32` field, an unsigned, fixed-length 32-bit integer.
+ */
+ fixed32() {
+ return this.view.getUint32((this.pos += 4) - 4, true);
+ }
+ /**
+ * Read a `sfixed32` field, a signed, fixed-length 32-bit integer.
+ */
+ sfixed32() {
+ return this.view.getInt32((this.pos += 4) - 4, true);
+ }
+ /**
+ * Read a `fixed64` field, an unsigned, fixed-length 64 bit integer.
+ */
+ fixed64() {
+ return new PbULong(this.sfixed32(), this.sfixed32());
+ }
+ /**
+ * Read a `fixed64` field, a signed, fixed-length 64-bit integer.
+ */
+ sfixed64() {
+ return new PbLong(this.sfixed32(), this.sfixed32());
+ }
+ /**
+ * Read a `float` field, 32-bit floating point number.
+ */
+ float() {
+ return this.view.getFloat32((this.pos += 4) - 4, true);
+ }
+ /**
+ * Read a `double` field, a 64-bit floating point number.
+ */
+ double() {
+ return this.view.getFloat64((this.pos += 8) - 8, true);
+ }
+ /**
+ * Read a `bytes` field, length-delimited arbitrary data.
+ */
+ bytes() {
+ let len = this.uint32();
+ let start = this.pos;
+ this.pos += len;
+ this.assertBounds();
+ return this.buf.subarray(start, start + len);
+ }
+ /**
+ * Read a `string` field, length-delimited data converted to UTF-8 text.
+ */
+ string() {
+ return this.textDecoder.decode(this.bytes());
+ }
+}
+
+/**
+ * assert that condition is true or throw error (with message)
+ */
+function assert(condition, msg) {
+ if (!condition) {
+ throw new Error(msg);
+ }
+}
+const FLOAT32_MAX = 3.4028234663852886e+38, FLOAT32_MIN = -3.4028234663852886e+38, UINT32_MAX = 0xFFFFFFFF, INT32_MAX = 0X7FFFFFFF, INT32_MIN = -0X80000000;
+function assertInt32(arg) {
+ if (typeof arg !== "number")
+ throw new Error('invalid int 32: ' + typeof arg);
+ if (!Number.isInteger(arg) || arg > INT32_MAX || arg < INT32_MIN)
+ throw new Error('invalid int 32: ' + arg);
+}
+function assertUInt32(arg) {
+ if (typeof arg !== "number")
+ throw new Error('invalid uint 32: ' + typeof arg);
+ if (!Number.isInteger(arg) || arg > UINT32_MAX || arg < 0)
+ throw new Error('invalid uint 32: ' + arg);
+}
+function assertFloat32(arg) {
+ if (typeof arg !== "number")
+ throw new Error('invalid float 32: ' + typeof arg);
+ if (!Number.isFinite(arg))
+ return;
+ if (arg > FLOAT32_MAX || arg < FLOAT32_MIN)
+ throw new Error('invalid float 32: ' + arg);
+}
+
+const defaultsWrite$1 = {
+ writeUnknownFields: true,
+ writerFactory: () => new BinaryWriter(),
+};
+/**
+ * Make options for writing binary data form partial options.
+ */
+function binaryWriteOptions(options) {
+ return options ? Object.assign(Object.assign({}, defaultsWrite$1), options) : defaultsWrite$1;
+}
+class BinaryWriter {
+ constructor(textEncoder) {
+ /**
+ * Previous fork states.
+ */
+ this.stack = [];
+ this.textEncoder = textEncoder !== null && textEncoder !== void 0 ? textEncoder : new TextEncoder();
+ this.chunks = [];
+ this.buf = [];
+ }
+ /**
+ * Return all bytes written and reset this writer.
+ */
+ finish() {
+ this.chunks.push(new Uint8Array(this.buf)); // flush the buffer
+ let len = 0;
+ for (let i = 0; i < this.chunks.length; i++)
+ len += this.chunks[i].length;
+ let bytes = new Uint8Array(len);
+ let offset = 0;
+ for (let i = 0; i < this.chunks.length; i++) {
+ bytes.set(this.chunks[i], offset);
+ offset += this.chunks[i].length;
+ }
+ this.chunks = [];
+ return bytes;
+ }
+ /**
+ * Start a new fork for length-delimited data like a message
+ * or a packed repeated field.
+ *
+ * Must be joined later with `join()`.
+ */
+ fork() {
+ this.stack.push({ chunks: this.chunks, buf: this.buf });
+ this.chunks = [];
+ this.buf = [];
+ return this;
+ }
+ /**
+ * Join the last fork. Write its length and bytes, then
+ * return to the previous state.
+ */
+ join() {
+ // get chunk of fork
+ let chunk = this.finish();
+ // restore previous state
+ let prev = this.stack.pop();
+ if (!prev)
+ throw new Error('invalid state, fork stack empty');
+ this.chunks = prev.chunks;
+ this.buf = prev.buf;
+ // write length of chunk as varint
+ this.uint32(chunk.byteLength);
+ return this.raw(chunk);
+ }
+ /**
+ * Writes a tag (field number and wire type).
+ *
+ * Equivalent to `uint32( (fieldNo << 3 | type) >>> 0 )`.
+ *
+ * Generated code should compute the tag ahead of time and call `uint32()`.
+ */
+ tag(fieldNo, type) {
+ return this.uint32((fieldNo << 3 | type) >>> 0);
+ }
+ /**
+ * Write a chunk of raw bytes.
+ */
+ raw(chunk) {
+ if (this.buf.length) {
+ this.chunks.push(new Uint8Array(this.buf));
+ this.buf = [];
+ }
+ this.chunks.push(chunk);
+ return this;
+ }
+ /**
+ * Write a `uint32` value, an unsigned 32 bit varint.
+ */
+ uint32(value) {
+ assertUInt32(value);
+ // write value as varint 32, inlined for speed
+ while (value > 0x7f) {
+ this.buf.push((value & 0x7f) | 0x80);
+ value = value >>> 7;
+ }
+ this.buf.push(value);
+ return this;
+ }
+ /**
+ * Write a `int32` value, a signed 32 bit varint.
+ */
+ int32(value) {
+ assertInt32(value);
+ varint32write(value, this.buf);
+ return this;
+ }
+ /**
+ * Write a `bool` value, a variant.
+ */
+ bool(value) {
+ this.buf.push(value ? 1 : 0);
+ return this;
+ }
+ /**
+ * Write a `bytes` value, length-delimited arbitrary data.
+ */
+ bytes(value) {
+ this.uint32(value.byteLength); // write length of chunk as varint
+ return this.raw(value);
+ }
+ /**
+ * Write a `string` value, length-delimited data converted to UTF-8 text.
+ */
+ string(value) {
+ let chunk = this.textEncoder.encode(value);
+ this.uint32(chunk.byteLength); // write length of chunk as varint
+ return this.raw(chunk);
+ }
+ /**
+ * Write a `float` value, 32-bit floating point number.
+ */
+ float(value) {
+ assertFloat32(value);
+ let chunk = new Uint8Array(4);
+ new DataView(chunk.buffer).setFloat32(0, value, true);
+ return this.raw(chunk);
+ }
+ /**
+ * Write a `double` value, a 64-bit floating point number.
+ */
+ double(value) {
+ let chunk = new Uint8Array(8);
+ new DataView(chunk.buffer).setFloat64(0, value, true);
+ return this.raw(chunk);
+ }
+ /**
+ * Write a `fixed32` value, an unsigned, fixed-length 32-bit integer.
+ */
+ fixed32(value) {
+ assertUInt32(value);
+ let chunk = new Uint8Array(4);
+ new DataView(chunk.buffer).setUint32(0, value, true);
+ return this.raw(chunk);
+ }
+ /**
+ * Write a `sfixed32` value, a signed, fixed-length 32-bit integer.
+ */
+ sfixed32(value) {
+ assertInt32(value);
+ let chunk = new Uint8Array(4);
+ new DataView(chunk.buffer).setInt32(0, value, true);
+ return this.raw(chunk);
+ }
+ /**
+ * Write a `sint32` value, a signed, zigzag-encoded 32-bit varint.
+ */
+ sint32(value) {
+ assertInt32(value);
+ // zigzag encode
+ value = ((value << 1) ^ (value >> 31)) >>> 0;
+ varint32write(value, this.buf);
+ return this;
+ }
+ /**
+ * Write a `fixed64` value, a signed, fixed-length 64-bit integer.
+ */
+ sfixed64(value) {
+ let chunk = new Uint8Array(8);
+ let view = new DataView(chunk.buffer);
+ let long = PbLong.from(value);
+ view.setInt32(0, long.lo, true);
+ view.setInt32(4, long.hi, true);
+ return this.raw(chunk);
+ }
+ /**
+ * Write a `fixed64` value, an unsigned, fixed-length 64 bit integer.
+ */
+ fixed64(value) {
+ let chunk = new Uint8Array(8);
+ let view = new DataView(chunk.buffer);
+ let long = PbULong.from(value);
+ view.setInt32(0, long.lo, true);
+ view.setInt32(4, long.hi, true);
+ return this.raw(chunk);
+ }
+ /**
+ * Write a `int64` value, a signed 64-bit varint.
+ */
+ int64(value) {
+ let long = PbLong.from(value);
+ varint64write(long.lo, long.hi, this.buf);
+ return this;
+ }
+ /**
+ * Write a `sint64` value, a signed, zig-zag-encoded 64-bit varint.
+ */
+ sint64(value) {
+ let long = PbLong.from(value),
+ // zigzag encode
+ sign = long.hi >> 31, lo = (long.lo << 1) ^ sign, hi = ((long.hi << 1) | (long.lo >>> 31)) ^ sign;
+ varint64write(lo, hi, this.buf);
+ return this;
+ }
+ /**
+ * Write a `uint64` value, an unsigned 64-bit varint.
+ */
+ uint64(value) {
+ let long = PbULong.from(value);
+ varint64write(long.lo, long.hi, this.buf);
+ return this;
+ }
+}
+
+const defaultsWrite = {
+ emitDefaultValues: false,
+ enumAsInteger: false,
+ useProtoFieldName: false,
+ prettySpaces: 0,
+}, defaultsRead = {
+ ignoreUnknownFields: false,
+};
+/**
+ * Make options for reading JSON data from partial options.
+ */
+function jsonReadOptions(options) {
+ return options ? Object.assign(Object.assign({}, defaultsRead), options) : defaultsRead;
+}
+/**
+ * Make options for writing JSON data from partial options.
+ */
+function jsonWriteOptions(options) {
+ return options ? Object.assign(Object.assign({}, defaultsWrite), options) : defaultsWrite;
+}
+
+/**
+ * The symbol used as a key on message objects to store the message type.
+ *
+ * Note that this is an experimental feature - it is here to stay, but
+ * implementation details may change without notice.
+ */
+const MESSAGE_TYPE = Symbol.for("protobuf-ts/message-type");
+
+/**
+ * Converts snake_case to lowerCamelCase.
+ *
+ * Should behave like protoc:
+ * https://github.com/protocolbuffers/protobuf/blob/e8ae137c96444ea313485ed1118c5e43b2099cf1/src/google/protobuf/compiler/java/java_helpers.cc#L118
+ */
+function lowerCamelCase(snakeCase) {
+ let capNext = false;
+ const sb = [];
+ for (let i = 0; i < snakeCase.length; i++) {
+ let next = snakeCase.charAt(i);
+ if (next == '_') {
+ capNext = true;
+ }
+ else if (/\d/.test(next)) {
+ sb.push(next);
+ capNext = true;
+ }
+ else if (capNext) {
+ sb.push(next.toUpperCase());
+ capNext = false;
+ }
+ else if (i == 0) {
+ sb.push(next.toLowerCase());
+ }
+ else {
+ sb.push(next);
+ }
+ }
+ return sb.join('');
+}
+
+/**
+ * Scalar value types. This is a subset of field types declared by protobuf
+ * enum google.protobuf.FieldDescriptorProto.Type The types GROUP and MESSAGE
+ * are omitted, but the numerical values are identical.
+ */
+var ScalarType;
+(function (ScalarType) {
+ // 0 is reserved for errors.
+ // Order is weird for historical reasons.
+ ScalarType[ScalarType["DOUBLE"] = 1] = "DOUBLE";
+ ScalarType[ScalarType["FLOAT"] = 2] = "FLOAT";
+ // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
+ // negative values are likely.
+ ScalarType[ScalarType["INT64"] = 3] = "INT64";
+ ScalarType[ScalarType["UINT64"] = 4] = "UINT64";
+ // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
+ // negative values are likely.
+ ScalarType[ScalarType["INT32"] = 5] = "INT32";
+ ScalarType[ScalarType["FIXED64"] = 6] = "FIXED64";
+ ScalarType[ScalarType["FIXED32"] = 7] = "FIXED32";
+ ScalarType[ScalarType["BOOL"] = 8] = "BOOL";
+ ScalarType[ScalarType["STRING"] = 9] = "STRING";
+ // Tag-delimited aggregate.
+ // Group type is deprecated and not supported in proto3. However, Proto3
+ // implementations should still be able to parse the group wire format and
+ // treat group fields as unknown fields.
+ // TYPE_GROUP = 10,
+ // TYPE_MESSAGE = 11, // Length-delimited aggregate.
+ // New in version 2.
+ ScalarType[ScalarType["BYTES"] = 12] = "BYTES";
+ ScalarType[ScalarType["UINT32"] = 13] = "UINT32";
+ // TYPE_ENUM = 14,
+ ScalarType[ScalarType["SFIXED32"] = 15] = "SFIXED32";
+ ScalarType[ScalarType["SFIXED64"] = 16] = "SFIXED64";
+ ScalarType[ScalarType["SINT32"] = 17] = "SINT32";
+ ScalarType[ScalarType["SINT64"] = 18] = "SINT64";
+})(ScalarType || (ScalarType = {}));
+/**
+ * JavaScript representation of 64 bit integral types. Equivalent to the
+ * field option "jstype".
+ *
+ * By default, protobuf-ts represents 64 bit types as `bigint`.
+ *
+ * You can change the default behaviour by enabling the plugin parameter
+ * `long_type_string`, which will represent 64 bit types as `string`.
+ *
+ * Alternatively, you can change the behaviour for individual fields
+ * with the field option "jstype":
+ *
+ * ```protobuf
+ * uint64 my_field = 1 [jstype = JS_STRING];
+ * uint64 other_field = 2 [jstype = JS_NUMBER];
+ * ```
+ */
+var LongType;
+(function (LongType) {
+ /**
+ * Use JavaScript `bigint`.
+ *
+ * Field option `[jstype = JS_NORMAL]`.
+ */
+ LongType[LongType["BIGINT"] = 0] = "BIGINT";
+ /**
+ * Use JavaScript `string`.
+ *
+ * Field option `[jstype = JS_STRING]`.
+ */
+ LongType[LongType["STRING"] = 1] = "STRING";
+ /**
+ * Use JavaScript `number`.
+ *
+ * Large values will loose precision.
+ *
+ * Field option `[jstype = JS_NUMBER]`.
+ */
+ LongType[LongType["NUMBER"] = 2] = "NUMBER";
+})(LongType || (LongType = {}));
+/**
+ * Protobuf 2.1.0 introduced packed repeated fields.
+ * Setting the field option `[packed = true]` enables packing.
+ *
+ * In proto3, all repeated fields are packed by default.
+ * Setting the field option `[packed = false]` disables packing.
+ *
+ * Packed repeated fields are encoded with a single tag,
+ * then a length-delimiter, then the element values.
+ *
+ * Unpacked repeated fields are encoded with a tag and
+ * value for each element.
+ *
+ * `bytes` and `string` cannot be packed.
+ */
+var RepeatType;
+(function (RepeatType) {
+ /**
+ * The field is not repeated.
+ */
+ RepeatType[RepeatType["NO"] = 0] = "NO";
+ /**
+ * The field is repeated and should be packed.
+ * Invalid for `bytes` and `string`, they cannot be packed.
+ */
+ RepeatType[RepeatType["PACKED"] = 1] = "PACKED";
+ /**
+ * The field is repeated but should not be packed.
+ * The only valid repeat type for repeated `bytes` and `string`.
+ */
+ RepeatType[RepeatType["UNPACKED"] = 2] = "UNPACKED";
+})(RepeatType || (RepeatType = {}));
+/**
+ * Turns PartialFieldInfo into FieldInfo.
+ */
+function normalizeFieldInfo(field) {
+ var _a, _b, _c, _d;
+ field.localName = (_a = field.localName) !== null && _a !== void 0 ? _a : lowerCamelCase(field.name);
+ field.jsonName = (_b = field.jsonName) !== null && _b !== void 0 ? _b : lowerCamelCase(field.name);
+ field.repeat = (_c = field.repeat) !== null && _c !== void 0 ? _c : RepeatType.NO;
+ field.opt = (_d = field.opt) !== null && _d !== void 0 ? _d : (field.repeat ? false : field.oneof ? false : field.kind == "message");
+ return field;
+}
+
+/**
+ * Is the given value a valid oneof group?
+ *
+ * We represent protobuf `oneof` as algebraic data types (ADT) in generated
+ * code. But when working with messages of unknown type, the ADT does not
+ * help us.
+ *
+ * This type guard checks if the given object adheres to the ADT rules, which
+ * are as follows:
+ *
+ * 1) Must be an object.
+ *
+ * 2) Must have a "oneofKind" discriminator property.
+ *
+ * 3) If "oneofKind" is `undefined`, no member field is selected. The object
+ * must not have any other properties.
+ *
+ * 4) If "oneofKind" is a `string`, the member field with this name is
+ * selected.
+ *
+ * 5) If a member field is selected, the object must have a second property
+ * with this name. The property must not be `undefined`.
+ *
+ * 6) No extra properties are allowed. The object has either one property
+ * (no selection) or two properties (selection).
+ *
+ */
+function isOneofGroup(any) {
+ if (typeof any != 'object' || any === null || !any.hasOwnProperty('oneofKind')) {
+ return false;
+ }
+ switch (typeof any.oneofKind) {
+ case "string":
+ if (any[any.oneofKind] === undefined)
+ return false;
+ return Object.keys(any).length == 2;
+ case "undefined":
+ return Object.keys(any).length == 1;
+ default:
+ return false;
+ }
+}
+
+// noinspection JSMethodCanBeStatic
+class ReflectionTypeCheck {
+ constructor(info) {
+ var _a;
+ this.fields = (_a = info.fields) !== null && _a !== void 0 ? _a : [];
+ }
+ prepare() {
+ if (this.data)
+ return;
+ const req = [], known = [], oneofs = [];
+ for (let field of this.fields) {
+ if (field.oneof) {
+ if (!oneofs.includes(field.oneof)) {
+ oneofs.push(field.oneof);
+ req.push(field.oneof);
+ known.push(field.oneof);
+ }
+ }
+ else {
+ known.push(field.localName);
+ switch (field.kind) {
+ case "scalar":
+ case "enum":
+ if (!field.opt || field.repeat)
+ req.push(field.localName);
+ break;
+ case "message":
+ if (field.repeat)
+ req.push(field.localName);
+ break;
+ case "map":
+ req.push(field.localName);
+ break;
+ }
+ }
+ }
+ this.data = { req, known, oneofs: Object.values(oneofs) };
+ }
+ /**
+ * Is the argument a valid message as specified by the
+ * reflection information?
+ *
+ * Checks all field types recursively. The `depth`
+ * specifies how deep into the structure the check will be.
+ *
+ * With a depth of 0, only the presence of fields
+ * is checked.
+ *
+ * With a depth of 1 or more, the field types are checked.
+ *
+ * With a depth of 2 or more, the members of map, repeated
+ * and message fields are checked.
+ *
+ * Message fields will be checked recursively with depth - 1.
+ *
+ * The number of map entries / repeated values being checked
+ * is < depth.
+ */
+ is(message, depth, allowExcessProperties = false) {
+ if (depth < 0)
+ return true;
+ if (message === null || message === undefined || typeof message != 'object')
+ return false;
+ this.prepare();
+ let keys = Object.keys(message), data = this.data;
+ // if a required field is missing in arg, this cannot be a T
+ if (keys.length < data.req.length || data.req.some(n => !keys.includes(n)))
+ return false;
+ if (!allowExcessProperties) {
+ // if the arg contains a key we dont know, this is not a literal T
+ if (keys.some(k => !data.known.includes(k)))
+ return false;
+ }
+ // "With a depth of 0, only the presence and absence of fields is checked."
+ // "With a depth of 1 or more, the field types are checked."
+ if (depth < 1) {
+ return true;
+ }
+ // check oneof group
+ for (const name of data.oneofs) {
+ const group = message[name];
+ if (!isOneofGroup(group))
+ return false;
+ if (group.oneofKind === undefined)
+ continue;
+ const field = this.fields.find(f => f.localName === group.oneofKind);
+ if (!field)
+ return false; // we found no field, but have a kind, something is wrong
+ if (!this.field(group[group.oneofKind], field, allowExcessProperties, depth))
+ return false;
+ }
+ // check types
+ for (const field of this.fields) {
+ if (field.oneof !== undefined)
+ continue;
+ if (!this.field(message[field.localName], field, allowExcessProperties, depth))
+ return false;
+ }
+ return true;
+ }
+ field(arg, field, allowExcessProperties, depth) {
+ let repeated = field.repeat;
+ switch (field.kind) {
+ case "scalar":
+ if (arg === undefined)
+ return field.opt;
+ if (repeated)
+ return this.scalars(arg, field.T, depth, field.L);
+ return this.scalar(arg, field.T, field.L);
+ case "enum":
+ if (arg === undefined)
+ return field.opt;
+ if (repeated)
+ return this.scalars(arg, ScalarType.INT32, depth);
+ return this.scalar(arg, ScalarType.INT32);
+ case "message":
+ if (arg === undefined)
+ return true;
+ if (repeated)
+ return this.messages(arg, field.T(), allowExcessProperties, depth);
+ return this.message(arg, field.T(), allowExcessProperties, depth);
+ case "map":
+ if (typeof arg != 'object' || arg === null)
+ return false;
+ if (depth < 2)
+ return true;
+ if (!this.mapKeys(arg, field.K, depth))
+ return false;
+ switch (field.V.kind) {
+ case "scalar":
+ return this.scalars(Object.values(arg), field.V.T, depth, field.V.L);
+ case "enum":
+ return this.scalars(Object.values(arg), ScalarType.INT32, depth);
+ case "message":
+ return this.messages(Object.values(arg), field.V.T(), allowExcessProperties, depth);
+ }
+ break;
+ }
+ return true;
+ }
+ message(arg, type, allowExcessProperties, depth) {
+ if (allowExcessProperties) {
+ return type.isAssignable(arg, depth);
+ }
+ return type.is(arg, depth);
+ }
+ messages(arg, type, allowExcessProperties, depth) {
+ if (!Array.isArray(arg))
+ return false;
+ if (depth < 2)
+ return true;
+ if (allowExcessProperties) {
+ for (let i = 0; i < arg.length && i < depth; i++)
+ if (!type.isAssignable(arg[i], depth - 1))
+ return false;
+ }
+ else {
+ for (let i = 0; i < arg.length && i < depth; i++)
+ if (!type.is(arg[i], depth - 1))
+ return false;
+ }
+ return true;
+ }
+ scalar(arg, type, longType) {
+ let argType = typeof arg;
+ switch (type) {
+ case ScalarType.UINT64:
+ case ScalarType.FIXED64:
+ case ScalarType.INT64:
+ case ScalarType.SFIXED64:
+ case ScalarType.SINT64:
+ switch (longType) {
+ case LongType.BIGINT:
+ return argType == "bigint";
+ case LongType.NUMBER:
+ return argType == "number" && !isNaN(arg);
+ default:
+ return argType == "string";
+ }
+ case ScalarType.BOOL:
+ return argType == 'boolean';
+ case ScalarType.STRING:
+ return argType == 'string';
+ case ScalarType.BYTES:
+ return arg instanceof Uint8Array;
+ case ScalarType.DOUBLE:
+ case ScalarType.FLOAT:
+ return argType == 'number' && !isNaN(arg);
+ default:
+ // case ScalarType.UINT32:
+ // case ScalarType.FIXED32:
+ // case ScalarType.INT32:
+ // case ScalarType.SINT32:
+ // case ScalarType.SFIXED32:
+ return argType == 'number' && Number.isInteger(arg);
+ }
+ }
+ scalars(arg, type, depth, longType) {
+ if (!Array.isArray(arg))
+ return false;
+ if (depth < 2)
+ return true;
+ if (Array.isArray(arg))
+ for (let i = 0; i < arg.length && i < depth; i++)
+ if (!this.scalar(arg[i], type, longType))
+ return false;
+ return true;
+ }
+ mapKeys(map, type, depth) {
+ let keys = Object.keys(map);
+ switch (type) {
+ case ScalarType.INT32:
+ case ScalarType.FIXED32:
+ case ScalarType.SFIXED32:
+ case ScalarType.SINT32:
+ case ScalarType.UINT32:
+ return this.scalars(keys.slice(0, depth).map(k => parseInt(k)), type, depth);
+ case ScalarType.BOOL:
+ return this.scalars(keys.slice(0, depth).map(k => k == 'true' ? true : k == 'false' ? false : k), type, depth);
+ default:
+ return this.scalars(keys, type, depth, LongType.STRING);
+ }
+ }
+}
+
+/**
+ * Utility method to convert a PbLong or PbUlong to a JavaScript
+ * representation during runtime.
+ *
+ * Works with generated field information, `undefined` is equivalent
+ * to `STRING`.
+ */
+function reflectionLongConvert(long, type) {
+ switch (type) {
+ case LongType.BIGINT:
+ return long.toBigInt();
+ case LongType.NUMBER:
+ return long.toNumber();
+ default:
+ // case undefined:
+ // case LongType.STRING:
+ return long.toString();
+ }
+}
+
+/**
+ * Reads proto3 messages in canonical JSON format using reflection information.
+ *
+ * https://developers.google.com/protocol-buffers/docs/proto3#json
+ */
+class ReflectionJsonReader {
+ constructor(info) {
+ this.info = info;
+ }
+ prepare() {
+ var _a;
+ if (this.fMap === undefined) {
+ this.fMap = {};
+ const fieldsInput = (_a = this.info.fields) !== null && _a !== void 0 ? _a : [];
+ for (const field of fieldsInput) {
+ this.fMap[field.name] = field;
+ this.fMap[field.jsonName] = field;
+ this.fMap[field.localName] = field;
+ }
+ }
+ }
+ // Cannot parse JSON <type of jsonValue> for <type name>#<fieldName>.
+ assert(condition, fieldName, jsonValue) {
+ if (!condition) {
+ let what = typeofJsonValue(jsonValue);
+ if (what == "number" || what == "boolean")
+ what = jsonValue.toString();
+ throw new Error(`Cannot parse JSON ${what} for ${this.info.typeName}#${fieldName}`);
+ }
+ }
+ /**
+ * Reads a message from canonical JSON format into the target message.
+ *
+ * Repeated fields are appended. Map entries are added, overwriting
+ * existing keys.
+ *
+ * If a message field is already present, it will be merged with the
+ * new data.
+ */
+ read(input, message, options) {
+ this.prepare();
+ const oneofsHandled = [];
+ for (const [jsonKey, jsonValue] of Object.entries(input)) {
+ const field = this.fMap[jsonKey];
+ if (!field) {
+ if (!options.ignoreUnknownFields)
+ throw new Error(`Found unknown field while reading ${this.info.typeName} from JSON format. JSON key: ${jsonKey}`);
+ continue;
+ }
+ const localName = field.localName;
+ // handle oneof ADT
+ let target; // this will be the target for the field value, whether it is member of a oneof or not
+ if (field.oneof) {
+ if (jsonValue === null && (field.kind !== 'enum' || field.T()[0] !== 'google.protobuf.NullValue')) {
+ continue;
+ }
+ // since json objects are unordered by specification, it is not possible to take the last of multiple oneofs
+ if (oneofsHandled.includes(field.oneof))
+ throw new Error(`Multiple members of the oneof group "${field.oneof}" of ${this.info.typeName} are present in JSON.`);
+ oneofsHandled.push(field.oneof);
+ target = message[field.oneof] = {
+ oneofKind: localName
+ };
+ }
+ else {
+ target = message;
+ }
+ // we have handled oneof above. we just have read the value into `target`.
+ if (field.kind == 'map') {
+ if (jsonValue === null) {
+ continue;
+ }
+ // check input
+ this.assert(isJsonObject(jsonValue), field.name, jsonValue);
+ // our target to put map entries into
+ const fieldObj = target[localName];
+ // read entries
+ for (const [jsonObjKey, jsonObjValue] of Object.entries(jsonValue)) {
+ this.assert(jsonObjValue !== null, field.name + " map value", null);
+ // read value
+ let val;
+ switch (field.V.kind) {
+ case "message":
+ val = field.V.T().internalJsonRead(jsonObjValue, options);
+ break;
+ case "enum":
+ val = this.enum(field.V.T(), jsonObjValue, field.name, options.ignoreUnknownFields);
+ if (val === false)
+ continue;
+ break;
+ case "scalar":
+ val = this.scalar(jsonObjValue, field.V.T, field.V.L, field.name);
+ break;
+ }
+ this.assert(val !== undefined, field.name + " map value", jsonObjValue);
+ // read key
+ let key = jsonObjKey;
+ if (field.K == ScalarType.BOOL)
+ key = key == "true" ? true : key == "false" ? false : key;
+ key = this.scalar(key, field.K, LongType.STRING, field.name).toString();
+ fieldObj[key] = val;
+ }
+ }
+ else if (field.repeat) {
+ if (jsonValue === null)
+ continue;
+ // check input
+ this.assert(Array.isArray(jsonValue), field.name, jsonValue);
+ // our target to put array entries into
+ const fieldArr = target[localName];
+ // read array entries
+ for (const jsonItem of jsonValue) {
+ this.assert(jsonItem !== null, field.name, null);
+ let val;
+ switch (field.kind) {
+ case "message":
+ val = field.T().internalJsonRead(jsonItem, options);
+ break;
+ case "enum":
+ val = this.enum(field.T(), jsonItem, field.name, options.ignoreUnknownFields);
+ if (val === false)
+ continue;
+ break;
+ case "scalar":
+ val = this.scalar(jsonItem, field.T, field.L, field.name);
+ break;
+ }
+ this.assert(val !== undefined, field.name, jsonValue);
+ fieldArr.push(val);
+ }
+ }
+ else {
+ switch (field.kind) {
+ case "message":
+ if (jsonValue === null && field.T().typeName != 'google.protobuf.Value') {
+ this.assert(field.oneof === undefined, field.name + " (oneof member)", null);
+ continue;
+ }
+ target[localName] = field.T().internalJsonRead(jsonValue, options, target[localName]);
+ break;
+ case "enum":
+ let val = this.enum(field.T(), jsonValue, field.name, options.ignoreUnknownFields);
+ if (val === false)
+ continue;
+ target[localName] = val;
+ break;
+ case "scalar":
+ target[localName] = this.scalar(jsonValue, field.T, field.L, field.name);
+ break;
+ }
+ }
+ }
+ }
+ /**
+ * Returns `false` for unrecognized string representations.
+ *
+ * google.protobuf.NullValue accepts only JSON `null` (or the old `"NULL_VALUE"`).
+ */
+ enum(type, json, fieldName, ignoreUnknownFields) {
+ if (type[0] == 'google.protobuf.NullValue')
+ assert(json === null || json === "NULL_VALUE", `Unable to parse field ${this.info.typeName}#${fieldName}, enum ${type[0]} only accepts null.`);
+ if (json === null)
+ // we require 0 to be default value for all enums
+ return 0;
+ switch (typeof json) {
+ case "number":
+ assert(Number.isInteger(json), `Unable to parse field ${this.info.typeName}#${fieldName}, enum can only be integral number, got ${json}.`);
+ return json;
+ case "string":
+ let localEnumName = json;
+ if (type[2] && json.substring(0, type[2].length) === type[2])
+ // lookup without the shared prefix
+ localEnumName = json.substring(type[2].length);
+ let enumNumber = type[1][localEnumName];
+ if (typeof enumNumber === 'undefined' && ignoreUnknownFields) {
+ return false;
+ }
+ assert(typeof enumNumber == "number", `Unable to parse field ${this.info.typeName}#${fieldName}, enum ${type[0]} has no value for "${json}".`);
+ return enumNumber;
+ }
+ assert(false, `Unable to parse field ${this.info.typeName}#${fieldName}, cannot parse enum value from ${typeof json}".`);
+ }
+ scalar(json, type, longType, fieldName) {
+ let e;
+ try {
+ switch (type) {
+ // float, double: JSON value will be a number or one of the special string values "NaN", "Infinity", and "-Infinity".
+ // Either numbers or strings are accepted. Exponent notation is also accepted.
+ case ScalarType.DOUBLE:
+ case ScalarType.FLOAT:
+ if (json === null)
+ return .0;
+ if (json === "NaN")
+ return Number.NaN;
+ if (json === "Infinity")
+ return Number.POSITIVE_INFINITY;
+ if (json === "-Infinity")
+ return Number.NEGATIVE_INFINITY;
+ if (json === "") {
+ e = "empty string";
+ break;
+ }
+ if (typeof json == "string" && json.trim().length !== json.length) {
+ e = "extra whitespace";
+ break;
+ }
+ if (typeof json != "string" && typeof json != "number") {
+ break;
+ }
+ let float = Number(json);
+ if (Number.isNaN(float)) {
+ e = "not a number";
+ break;
+ }
+ if (!Number.isFinite(float)) {
+ // infinity and -infinity are handled by string representation above, so this is an error
+ e = "too large or small";
+ break;
+ }
+ if (type == ScalarType.FLOAT)
+ assertFloat32(float);
+ return float;
+ // int32, fixed32, uint32: JSON value will be a decimal number. Either numbers or strings are accepted.
+ case ScalarType.INT32:
+ case ScalarType.FIXED32:
+ case ScalarType.SFIXED32:
+ case ScalarType.SINT32:
+ case ScalarType.UINT32:
+ if (json === null)
+ return 0;
+ let int32;
+ if (typeof json == "number")
+ int32 = json;
+ else if (json === "")
+ e = "empty string";
+ else if (typeof json == "string") {
+ if (json.trim().length !== json.length)
+ e = "extra whitespace";
+ else
+ int32 = Number(json);
+ }
+ if (int32 === undefined)
+ break;
+ if (type == ScalarType.UINT32)
+ assertUInt32(int32);
+ else
+ assertInt32(int32);
+ return int32;
+ // int64, fixed64, uint64: JSON value will be a decimal string. Either numbers or strings are accepted.
+ case ScalarType.INT64:
+ case ScalarType.SFIXED64:
+ case ScalarType.SINT64:
+ if (json === null)
+ return reflectionLongConvert(PbLong.ZERO, longType);
+ if (typeof json != "number" && typeof json != "string")
+ break;
+ return reflectionLongConvert(PbLong.from(json), longType);
+ case ScalarType.FIXED64:
+ case ScalarType.UINT64:
+ if (json === null)
+ return reflectionLongConvert(PbULong.ZERO, longType);
+ if (typeof json != "number" && typeof json != "string")
+ break;
+ return reflectionLongConvert(PbULong.from(json), longType);
+ // bool:
+ case ScalarType.BOOL:
+ if (json === null)
+ return false;
+ if (typeof json !== "boolean")
+ break;
+ return json;
+ // string:
+ case ScalarType.STRING:
+ if (json === null)
+ return "";
+ if (typeof json !== "string") {
+ e = "extra whitespace";
+ break;
+ }
+ try {
+ encodeURIComponent(json);
+ }
+ catch (e) {
+ e = "invalid UTF8";
+ break;
+ }
+ return json;
+ // bytes: JSON value will be the data encoded as a string using standard base64 encoding with paddings.
+ // Either standard or URL-safe base64 encoding with/without paddings are accepted.
+ case ScalarType.BYTES:
+ if (json === null || json === "")
+ return new Uint8Array(0);
+ if (typeof json !== 'string')
+ break;
+ return base64decode(json);
+ }
+ }
+ catch (error) {
+ e = error.message;
+ }
+ this.assert(false, fieldName + (e ? " - " + e : ""), json);
+ }
+}
+
+/**
+ * Writes proto3 messages in canonical JSON format using reflection
+ * information.
+ *
+ * https://developers.google.com/protocol-buffers/docs/proto3#json
+ */
+class ReflectionJsonWriter {
+ constructor(info) {
+ var _a;
+ this.fields = (_a = info.fields) !== null && _a !== void 0 ? _a : [];
+ }
+ /**
+ * Converts the message to a JSON object, based on the field descriptors.
+ */
+ write(message, options) {
+ const json = {}, source = message;
+ for (const field of this.fields) {
+ // field is not part of a oneof, simply write as is
+ if (!field.oneof) {
+ let jsonValue = this.field(field, source[field.localName], options);
+ if (jsonValue !== undefined)
+ json[options.useProtoFieldName ? field.name : field.jsonName] = jsonValue;
+ continue;
+ }
+ // field is part of a oneof
+ const group = source[field.oneof];
+ if (group.oneofKind !== field.localName)
+ continue; // not selected, skip
+ const opt = field.kind == 'scalar' || field.kind == 'enum'
+ ? Object.assign(Object.assign({}, options), { emitDefaultValues: true }) : options;
+ let jsonValue = this.field(field, group[field.localName], opt);
+ assert(jsonValue !== undefined);
+ json[options.useProtoFieldName ? field.name : field.jsonName] = jsonValue;
+ }
+ return json;
+ }
+ field(field, value, options) {
+ let jsonValue = undefined;
+ if (field.kind == 'map') {
+ assert(typeof value == "object" && value !== null);
+ const jsonObj = {};
+ switch (field.V.kind) {
+ case "scalar":
+ for (const [entryKey, entryValue] of Object.entries(value)) {
+ const val = this.scalar(field.V.T, entryValue, field.name, false, true);
+ assert(val !== undefined);
+ jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key
+ }
+ break;
+ case "message":
+ const messageType = field.V.T();
+ for (const [entryKey, entryValue] of Object.entries(value)) {
+ const val = this.message(messageType, entryValue, field.name, options);
+ assert(val !== undefined);
+ jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key
+ }
+ break;
+ case "enum":
+ const enumInfo = field.V.T();
+ for (const [entryKey, entryValue] of Object.entries(value)) {
+ assert(entryValue === undefined || typeof entryValue == 'number');
+ const val = this.enum(enumInfo, entryValue, field.name, false, true, options.enumAsInteger);
+ assert(val !== undefined);
+ jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key
+ }
+ break;
+ }
+ if (options.emitDefaultValues || Object.keys(jsonObj).length > 0)
+ jsonValue = jsonObj;
+ }
+ else if (field.repeat) {
+ assert(Array.isArray(value));
+ const jsonArr = [];
+ switch (field.kind) {
+ case "scalar":
+ for (let i = 0; i < value.length; i++) {
+ const val = this.scalar(field.T, value[i], field.name, field.opt, true);
+ assert(val !== undefined);
+ jsonArr.push(val);
+ }
+ break;
+ case "enum":
+ const enumInfo = field.T();
+ for (let i = 0; i < value.length; i++) {
+ assert(value[i] === undefined || typeof value[i] == 'number');
+ const val = this.enum(enumInfo, value[i], field.name, field.opt, true, options.enumAsInteger);
+ assert(val !== undefined);
+ jsonArr.push(val);
+ }
+ break;
+ case "message":
+ const messageType = field.T();
+ for (let i = 0; i < value.length; i++) {
+ const val = this.message(messageType, value[i], field.name, options);
+ assert(val !== undefined);
+ jsonArr.push(val);
+ }
+ break;
+ }
+ // add converted array to json output
+ if (options.emitDefaultValues || jsonArr.length > 0 || options.emitDefaultValues)
+ jsonValue = jsonArr;
+ }
+ else {
+ switch (field.kind) {
+ case "scalar":
+ jsonValue = this.scalar(field.T, value, field.name, field.opt, options.emitDefaultValues);
+ break;
+ case "enum":
+ jsonValue = this.enum(field.T(), value, field.name, field.opt, options.emitDefaultValues, options.enumAsInteger);
+ break;
+ case "message":
+ jsonValue = this.message(field.T(), value, field.name, options);
+ break;
+ }
+ }
+ return jsonValue;
+ }
+ /**
+ * Returns `null` as the default for google.protobuf.NullValue.
+ */
+ enum(type, value, fieldName, optional, emitDefaultValues, enumAsInteger) {
+ if (type[0] == 'google.protobuf.NullValue')
+ return !emitDefaultValues && !optional ? undefined : null;
+ if (value === undefined) {
+ assert(optional);
+ return undefined;
+ }
+ if (value === 0 && !emitDefaultValues && !optional)
+ // we require 0 to be default value for all enums
+ return undefined;
+ assert(typeof value == 'number');
+ assert(Number.isInteger(value));
+ if (enumAsInteger || !type[1].hasOwnProperty(value))
+ // if we don't now the enum value, just return the number
+ return value;
+ if (type[2])
+ // restore the dropped prefix
+ return type[2] + type[1][value];
+ return type[1][value];
+ }
+ message(type, value, fieldName, options) {
+ if (value === undefined)
+ return options.emitDefaultValues ? null : undefined;
+ return type.internalJsonWrite(value, options);
+ }
+ scalar(type, value, fieldName, optional, emitDefaultValues) {
+ if (value === undefined) {
+ assert(optional);
+ return undefined;
+ }
+ const ed = emitDefaultValues || optional;
+ // noinspection FallThroughInSwitchStatementJS
+ switch (type) {
+ // int32, fixed32, uint32: JSON value will be a decimal number. Either numbers or strings are accepted.
+ case ScalarType.INT32:
+ case ScalarType.SFIXED32:
+ case ScalarType.SINT32:
+ if (value === 0)
+ return ed ? 0 : undefined;
+ assertInt32(value);
+ return value;
+ case ScalarType.FIXED32:
+ case ScalarType.UINT32:
+ if (value === 0)
+ return ed ? 0 : undefined;
+ assertUInt32(value);
+ return value;
+ // float, double: JSON value will be a number or one of the special string values "NaN", "Infinity", and "-Infinity".
+ // Either numbers or strings are accepted. Exponent notation is also accepted.
+ case ScalarType.FLOAT:
+ assertFloat32(value);
+ case ScalarType.DOUBLE:
+ if (value === 0)
+ return ed ? 0 : undefined;
+ assert(typeof value == 'number');
+ if (Number.isNaN(value))
+ return 'NaN';
+ if (value === Number.POSITIVE_INFINITY)
+ return 'Infinity';
+ if (value === Number.NEGATIVE_INFINITY)
+ return '-Infinity';
+ return value;
+ // string:
+ case ScalarType.STRING:
+ if (value === "")
+ return ed ? '' : undefined;
+ assert(typeof value == 'string');
+ return value;
+ // bool:
+ case ScalarType.BOOL:
+ if (value === false)
+ return ed ? false : undefined;
+ assert(typeof value == 'boolean');
+ return value;
+ // JSON value will be a decimal string. Either numbers or strings are accepted.
+ case ScalarType.UINT64:
+ case ScalarType.FIXED64:
+ assert(typeof value == 'number' || typeof value == 'string' || typeof value == 'bigint');
+ let ulong = PbULong.from(value);
+ if (ulong.isZero() && !ed)
+ return undefined;
+ return ulong.toString();
+ // JSON value will be a decimal string. Either numbers or strings are accepted.
+ case ScalarType.INT64:
+ case ScalarType.SFIXED64:
+ case ScalarType.SINT64:
+ assert(typeof value == 'number' || typeof value == 'string' || typeof value == 'bigint');
+ let long = PbLong.from(value);
+ if (long.isZero() && !ed)
+ return undefined;
+ return long.toString();
+ // bytes: JSON value will be the data encoded as a string using standard base64 encoding with paddings.
+ // Either standard or URL-safe base64 encoding with/without paddings are accepted.
+ case ScalarType.BYTES:
+ assert(value instanceof Uint8Array);
+ if (!value.byteLength)
+ return ed ? "" : undefined;
+ return base64encode(value);
+ }
+ }
+}
+
+/**
+ * Creates the default value for a scalar type.
+ */
+function reflectionScalarDefault(type, longType = LongType.STRING) {
+ switch (type) {
+ case ScalarType.BOOL:
+ return false;
+ case ScalarType.UINT64:
+ case ScalarType.FIXED64:
+ return reflectionLongConvert(PbULong.ZERO, longType);
+ case ScalarType.INT64:
+ case ScalarType.SFIXED64:
+ case ScalarType.SINT64:
+ return reflectionLongConvert(PbLong.ZERO, longType);
+ case ScalarType.DOUBLE:
+ case ScalarType.FLOAT:
+ return 0.0;
+ case ScalarType.BYTES:
+ return new Uint8Array(0);
+ case ScalarType.STRING:
+ return "";
+ default:
+ // case ScalarType.INT32:
+ // case ScalarType.UINT32:
+ // case ScalarType.SINT32:
+ // case ScalarType.FIXED32:
+ // case ScalarType.SFIXED32:
+ return 0;
+ }
+}
+
+/**
+ * Reads proto3 messages in binary format using reflection information.
+ *
+ * https://developers.google.com/protocol-buffers/docs/encoding
+ */
+class ReflectionBinaryReader {
+ constructor(info) {
+ this.info = info;
+ }
+ prepare() {
+ var _a;
+ if (!this.fieldNoToField) {
+ const fieldsInput = (_a = this.info.fields) !== null && _a !== void 0 ? _a : [];
+ this.fieldNoToField = new Map(fieldsInput.map(field => [field.no, field]));
+ }
+ }
+ /**
+ * Reads a message from binary format into the target message.
+ *
+ * Repeated fields are appended. Map entries are added, overwriting
+ * existing keys.
+ *
+ * If a message field is already present, it will be merged with the
+ * new data.
+ */
+ read(reader, message, options, length) {
+ this.prepare();
+ const end = length === undefined ? reader.len : reader.pos + length;
+ while (reader.pos < end) {
+ // read the tag and find the field
+ const [fieldNo, wireType] = reader.tag(), field = this.fieldNoToField.get(fieldNo);
+ if (!field) {
+ let u = options.readUnknownField;
+ if (u == "throw")
+ throw new Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.info.typeName}`);
+ let d = reader.skip(wireType);
+ if (u !== false)
+ (u === true ? UnknownFieldHandler.onRead : u)(this.info.typeName, message, fieldNo, wireType, d);
+ continue;
+ }
+ // target object for the field we are reading
+ let target = message, repeated = field.repeat, localName = field.localName;
+ // if field is member of oneof ADT, use ADT as target
+ if (field.oneof) {
+ target = target[field.oneof];
+ // if other oneof member selected, set new ADT
+ if (target.oneofKind !== localName)
+ target = message[field.oneof] = {
+ oneofKind: localName
+ };
+ }
+ // we have handled oneof above, we just have read the value into `target[localName]`
+ switch (field.kind) {
+ case "scalar":
+ case "enum":
+ let T = field.kind == "enum" ? ScalarType.INT32 : field.T;
+ let L = field.kind == "scalar" ? field.L : undefined;
+ if (repeated) {
+ let arr = target[localName]; // safe to assume presence of array, oneof cannot contain repeated values
+ if (wireType == WireType.LengthDelimited && T != ScalarType.STRING && T != ScalarType.BYTES) {
+ let e = reader.uint32() + reader.pos;
+ while (reader.pos < e)
+ arr.push(this.scalar(reader, T, L));
+ }
+ else
+ arr.push(this.scalar(reader, T, L));
+ }
+ else
+ target[localName] = this.scalar(reader, T, L);
+ break;
+ case "message":
+ if (repeated) {
+ let arr = target[localName]; // safe to assume presence of array, oneof cannot contain repeated values
+ let msg = field.T().internalBinaryRead(reader, reader.uint32(), options);
+ arr.push(msg);
+ }
+ else
+ target[localName] = field.T().internalBinaryRead(reader, reader.uint32(), options, target[localName]);
+ break;
+ case "map":
+ let [mapKey, mapVal] = this.mapEntry(field, reader, options);
+ // safe to assume presence of map object, oneof cannot contain repeated values
+ target[localName][mapKey] = mapVal;
+ break;
+ }
+ }
+ }
+ /**
+ * Read a map field, expecting key field = 1, value field = 2
+ */
+ mapEntry(field, reader, options) {
+ let length = reader.uint32();
+ let end = reader.pos + length;
+ let key = undefined; // javascript only allows number or string for object properties
+ let val = undefined;
+ while (reader.pos < end) {
+ let [fieldNo, wireType] = reader.tag();
+ switch (fieldNo) {
+ case 1:
+ if (field.K == ScalarType.BOOL)
+ key = reader.bool().toString();
+ else
+ // long types are read as string, number types are okay as number
+ key = this.scalar(reader, field.K, LongType.STRING);
+ break;
+ case 2:
+ switch (field.V.kind) {
+ case "scalar":
+ val = this.scalar(reader, field.V.T, field.V.L);
+ break;
+ case "enum":
+ val = reader.int32();
+ break;
+ case "message":
+ val = field.V.T().internalBinaryRead(reader, reader.uint32(), options);
+ break;
+ }
+ break;
+ default:
+ throw new Error(`Unknown field ${fieldNo} (wire type ${wireType}) in map entry for ${this.info.typeName}#${field.name}`);
+ }
+ }
+ if (key === undefined) {
+ let keyRaw = reflectionScalarDefault(field.K);
+ key = field.K == ScalarType.BOOL ? keyRaw.toString() : keyRaw;
+ }
+ if (val === undefined)
+ switch (field.V.kind) {
+ case "scalar":
+ val = reflectionScalarDefault(field.V.T, field.V.L);
+ break;
+ case "enum":
+ val = 0;
+ break;
+ case "message":
+ val = field.V.T().create();
+ break;
+ }
+ return [key, val];
+ }
+ scalar(reader, type, longType) {
+ switch (type) {
+ case ScalarType.INT32:
+ return reader.int32();
+ case ScalarType.STRING:
+ return reader.string();
+ case ScalarType.BOOL:
+ return reader.bool();
+ case ScalarType.DOUBLE:
+ return reader.double();
+ case ScalarType.FLOAT:
+ return reader.float();
+ case ScalarType.INT64:
+ return reflectionLongConvert(reader.int64(), longType);
+ case ScalarType.UINT64:
+ return reflectionLongConvert(reader.uint64(), longType);
+ case ScalarType.FIXED64:
+ return reflectionLongConvert(reader.fixed64(), longType);
+ case ScalarType.FIXED32:
+ return reader.fixed32();
+ case ScalarType.BYTES:
+ return reader.bytes();
+ case ScalarType.UINT32:
+ return reader.uint32();
+ case ScalarType.SFIXED32:
+ return reader.sfixed32();
+ case ScalarType.SFIXED64:
+ return reflectionLongConvert(reader.sfixed64(), longType);
+ case ScalarType.SINT32:
+ return reader.sint32();
+ case ScalarType.SINT64:
+ return reflectionLongConvert(reader.sint64(), longType);
+ }
+ }
+}
+
+/**
+ * Writes proto3 messages in binary format using reflection information.
+ *
+ * https://developers.google.com/protocol-buffers/docs/encoding
+ */
+class ReflectionBinaryWriter {
+ constructor(info) {
+ this.info = info;
+ }
+ prepare() {
+ if (!this.fields) {
+ const fieldsInput = this.info.fields ? this.info.fields.concat() : [];
+ this.fields = fieldsInput.sort((a, b) => a.no - b.no);
+ }
+ }
+ /**
+ * Writes the message to binary format.
+ */
+ write(message, writer, options) {
+ this.prepare();
+ for (const field of this.fields) {
+ let value, // this will be our field value, whether it is member of a oneof or not
+ emitDefault, // whether we emit the default value (only true for oneof members)
+ repeated = field.repeat, localName = field.localName;
+ // handle oneof ADT
+ if (field.oneof) {
+ const group = message[field.oneof];
+ if (group.oneofKind !== localName)
+ continue; // if field is not selected, skip
+ value = group[localName];
+ emitDefault = true;
+ }
+ else {
+ value = message[localName];
+ emitDefault = false;
+ }
+ // we have handled oneof above. we just have to honor `emitDefault`.
+ switch (field.kind) {
+ case "scalar":
+ case "enum":
+ let T = field.kind == "enum" ? ScalarType.INT32 : field.T;
+ if (repeated) {
+ assert(Array.isArray(value));
+ if (repeated == RepeatType.PACKED)
+ this.packed(writer, T, field.no, value);
+ else
+ for (const item of value)
+ this.scalar(writer, T, field.no, item, true);
+ }
+ else if (value === undefined)
+ assert(field.opt);
+ else
+ this.scalar(writer, T, field.no, value, emitDefault || field.opt);
+ break;
+ case "message":
+ if (repeated) {
+ assert(Array.isArray(value));
+ for (const item of value)
+ this.message(writer, options, field.T(), field.no, item);
+ }
+ else {
+ this.message(writer, options, field.T(), field.no, value);
+ }
+ break;
+ case "map":
+ assert(typeof value == 'object' && value !== null);
+ for (const [key, val] of Object.entries(value))
+ this.mapEntry(writer, options, field, key, val);
+ break;
+ }
+ }
+ let u = options.writeUnknownFields;
+ if (u !== false)
+ (u === true ? UnknownFieldHandler.onWrite : u)(this.info.typeName, message, writer);
+ }
+ mapEntry(writer, options, field, key, value) {
+ writer.tag(field.no, WireType.LengthDelimited);
+ writer.fork();
+ // javascript only allows number or string for object properties
+ // we convert from our representation to the protobuf type
+ let keyValue = key;
+ switch (field.K) {
+ case ScalarType.INT32:
+ case ScalarType.FIXED32:
+ case ScalarType.UINT32:
+ case ScalarType.SFIXED32:
+ case ScalarType.SINT32:
+ keyValue = Number.parseInt(key);
+ break;
+ case ScalarType.BOOL:
+ assert(key == 'true' || key == 'false');
+ keyValue = key == 'true';
+ break;
+ }
+ // write key, expecting key field number = 1
+ this.scalar(writer, field.K, 1, keyValue, true);
+ // write value, expecting value field number = 2
+ switch (field.V.kind) {
+ case 'scalar':
+ this.scalar(writer, field.V.T, 2, value, true);
+ break;
+ case 'enum':
+ this.scalar(writer, ScalarType.INT32, 2, value, true);
+ break;
+ case 'message':
+ this.message(writer, options, field.V.T(), 2, value);
+ break;
+ }
+ writer.join();
+ }
+ message(writer, options, handler, fieldNo, value) {
+ if (value === undefined)
+ return;
+ handler.internalBinaryWrite(value, writer.tag(fieldNo, WireType.LengthDelimited).fork(), options);
+ writer.join();
+ }
+ /**
+ * Write a single scalar value.
+ */
+ scalar(writer, type, fieldNo, value, emitDefault) {
+ let [wireType, method, isDefault] = this.scalarInfo(type, value);
+ if (!isDefault || emitDefault) {
+ writer.tag(fieldNo, wireType);
+ writer[method](value);
+ }
+ }
+ /**
+ * Write an array of scalar values in packed format.
+ */
+ packed(writer, type, fieldNo, value) {
+ if (!value.length)
+ return;
+ assert(type !== ScalarType.BYTES && type !== ScalarType.STRING);
+ // write tag
+ writer.tag(fieldNo, WireType.LengthDelimited);
+ // begin length-delimited
+ writer.fork();
+ // write values without tags
+ let [, method,] = this.scalarInfo(type);
+ for (let i = 0; i < value.length; i++)
+ writer[method](value[i]);
+ // end length delimited
+ writer.join();
+ }
+ /**
+ * Get information for writing a scalar value.
+ *
+ * Returns tuple:
+ * [0]: appropriate WireType
+ * [1]: name of the appropriate method of IBinaryWriter
+ * [2]: whether the given value is a default value
+ *
+ * If argument `value` is omitted, [2] is always false.
+ */
+ scalarInfo(type, value) {
+ let t = WireType.Varint;
+ let m;
+ let i = value === undefined;
+ let d = value === 0;
+ switch (type) {
+ case ScalarType.INT32:
+ m = "int32";
+ break;
+ case ScalarType.STRING:
+ d = i || !value.length;
+ t = WireType.LengthDelimited;
+ m = "string";
+ break;
+ case ScalarType.BOOL:
+ d = value === false;
+ m = "bool";
+ break;
+ case ScalarType.UINT32:
+ m = "uint32";
+ break;
+ case ScalarType.DOUBLE:
+ t = WireType.Bit64;
+ m = "double";
+ break;
+ case ScalarType.FLOAT:
+ t = WireType.Bit32;
+ m = "float";
+ break;
+ case ScalarType.INT64:
+ d = i || PbLong.from(value).isZero();
+ m = "int64";
+ break;
+ case ScalarType.UINT64:
+ d = i || PbULong.from(value).isZero();
+ m = "uint64";
+ break;
+ case ScalarType.FIXED64:
+ d = i || PbULong.from(value).isZero();
+ t = WireType.Bit64;
+ m = "fixed64";
+ break;
+ case ScalarType.BYTES:
+ d = i || !value.byteLength;
+ t = WireType.LengthDelimited;
+ m = "bytes";
+ break;
+ case ScalarType.FIXED32:
+ t = WireType.Bit32;
+ m = "fixed32";
+ break;
+ case ScalarType.SFIXED32:
+ t = WireType.Bit32;
+ m = "sfixed32";
+ break;
+ case ScalarType.SFIXED64:
+ d = i || PbLong.from(value).isZero();
+ t = WireType.Bit64;
+ m = "sfixed64";
+ break;
+ case ScalarType.SINT32:
+ m = "sint32";
+ break;
+ case ScalarType.SINT64:
+ d = i || PbLong.from(value).isZero();
+ m = "sint64";
+ break;
+ }
+ return [t, m, i || d];
+ }
+}
+
+/**
+ * Creates an instance of the generic message, using the field
+ * information.
+ */
+function reflectionCreate(type) {
+ /**
+ * This ternary can be removed in the next major version.
+ * The `Object.create()` code path utilizes a new `messagePrototype`
+ * property on the `IMessageType` which has this same `MESSAGE_TYPE`
+ * non-enumerable property on it. Doing it this way means that we only
+ * pay the cost of `Object.defineProperty()` once per `IMessageType`
+ * class of once per "instance". The falsy code path is only provided
+ * for backwards compatibility in cases where the runtime library is
+ * updated without also updating the generated code.
+ */
+ const msg = type.messagePrototype
+ ? Object.create(type.messagePrototype)
+ : Object.defineProperty({}, MESSAGE_TYPE, { value: type });
+ for (let field of type.fields) {
+ let name = field.localName;
+ if (field.opt)
+ continue;
+ if (field.oneof)
+ msg[field.oneof] = { oneofKind: undefined };
+ else if (field.repeat)
+ msg[name] = [];
+ else
+ switch (field.kind) {
+ case "scalar":
+ msg[name] = reflectionScalarDefault(field.T, field.L);
+ break;
+ case "enum":
+ // we require 0 to be default value for all enums
+ msg[name] = 0;
+ break;
+ case "map":
+ msg[name] = {};
+ break;
+ }
+ }
+ return msg;
+}
+
+/**
+ * Copy partial data into the target message.
+ *
+ * If a singular scalar or enum field is present in the source, it
+ * replaces the field in the target.
+ *
+ * If a singular message field is present in the source, it is merged
+ * with the target field by calling mergePartial() of the responsible
+ * message type.
+ *
+ * If a repeated field is present in the source, its values replace
+ * all values in the target array, removing extraneous values.
+ * Repeated message fields are copied, not merged.
+ *
+ * If a map field is present in the source, entries are added to the
+ * target map, replacing entries with the same key. Entries that only
+ * exist in the target remain. Entries with message values are copied,
+ * not merged.
+ *
+ * Note that this function differs from protobuf merge semantics,
+ * which appends repeated fields.
+ */
+function reflectionMergePartial(info, target, source) {
+ let fieldValue, // the field value we are working with
+ input = source, output; // where we want our field value to go
+ for (let field of info.fields) {
+ let name = field.localName;
+ if (field.oneof) {
+ const group = input[field.oneof]; // this is the oneof`s group in the source
+ if ((group === null || group === void 0 ? void 0 : group.oneofKind) == undefined) { // the user is free to omit
+ continue; // we skip this field, and all other members too
+ }
+ fieldValue = group[name]; // our value comes from the the oneof group of the source
+ output = target[field.oneof]; // and our output is the oneof group of the target
+ output.oneofKind = group.oneofKind; // always update discriminator
+ if (fieldValue == undefined) {
+ delete output[name]; // remove any existing value
+ continue; // skip further work on field
+ }
+ }
+ else {
+ fieldValue = input[name]; // we are using the source directly
+ output = target; // we want our field value to go directly into the target
+ if (fieldValue == undefined) {
+ continue; // skip further work on field, existing value is used as is
+ }
+ }
+ if (field.repeat)
+ output[name].length = fieldValue.length; // resize target array to match source array
+ // now we just work with `fieldValue` and `output` to merge the value
+ switch (field.kind) {
+ case "scalar":
+ case "enum":
+ if (field.repeat)
+ for (let i = 0; i < fieldValue.length; i++)
+ output[name][i] = fieldValue[i]; // not a reference type
+ else
+ output[name] = fieldValue; // not a reference type
+ break;
+ case "message":
+ let T = field.T();
+ if (field.repeat)
+ for (let i = 0; i < fieldValue.length; i++)
+ output[name][i] = T.create(fieldValue[i]);
+ else if (output[name] === undefined)
+ output[name] = T.create(fieldValue); // nothing to merge with
+ else
+ T.mergePartial(output[name], fieldValue);
+ break;
+ case "map":
+ // Map and repeated fields are simply overwritten, not appended or merged
+ switch (field.V.kind) {
+ case "scalar":
+ case "enum":
+ Object.assign(output[name], fieldValue); // elements are not reference types
+ break;
+ case "message":
+ let T = field.V.T();
+ for (let k of Object.keys(fieldValue))
+ output[name][k] = T.create(fieldValue[k]);
+ break;
+ }
+ break;
+ }
+ }
+}
+
+/**
+ * Determines whether two message of the same type have the same field values.
+ * Checks for deep equality, traversing repeated fields, oneof groups, maps
+ * and messages recursively.
+ * Will also return true if both messages are `undefined`.
+ */
+function reflectionEquals(info, a, b) {
+ if (a === b)
+ return true;
+ if (!a || !b)
+ return false;
+ for (let field of info.fields) {
+ let localName = field.localName;
+ let val_a = field.oneof ? a[field.oneof][localName] : a[localName];
+ let val_b = field.oneof ? b[field.oneof][localName] : b[localName];
+ switch (field.kind) {
+ case "enum":
+ case "scalar":
+ let t = field.kind == "enum" ? ScalarType.INT32 : field.T;
+ if (!(field.repeat
+ ? repeatedPrimitiveEq(t, val_a, val_b)
+ : primitiveEq(t, val_a, val_b)))
+ return false;
+ break;
+ case "map":
+ if (!(field.V.kind == "message"
+ ? repeatedMsgEq(field.V.T(), objectValues(val_a), objectValues(val_b))
+ : repeatedPrimitiveEq(field.V.kind == "enum" ? ScalarType.INT32 : field.V.T, objectValues(val_a), objectValues(val_b))))
+ return false;
+ break;
+ case "message":
+ let T = field.T();
+ if (!(field.repeat
+ ? repeatedMsgEq(T, val_a, val_b)
+ : T.equals(val_a, val_b)))
+ return false;
+ break;
+ }
+ }
+ return true;
+}
+const objectValues = Object.values;
+function primitiveEq(type, a, b) {
+ if (a === b)
+ return true;
+ if (type !== ScalarType.BYTES)
+ return false;
+ let ba = a;
+ let bb = b;
+ if (ba.length !== bb.length)
+ return false;
+ for (let i = 0; i < ba.length; i++)
+ if (ba[i] != bb[i])
+ return false;
+ return true;
+}
+function repeatedPrimitiveEq(type, a, b) {
+ if (a.length !== b.length)
+ return false;
+ for (let i = 0; i < a.length; i++)
+ if (!primitiveEq(type, a[i], b[i]))
+ return false;
+ return true;
+}
+function repeatedMsgEq(type, a, b) {
+ if (a.length !== b.length)
+ return false;
+ for (let i = 0; i < a.length; i++)
+ if (!type.equals(a[i], b[i]))
+ return false;
+ return true;
+}
+
+const baseDescriptors = Object.getOwnPropertyDescriptors(Object.getPrototypeOf({}));
+/**
+ * This standard message type provides reflection-based
+ * operations to work with a message.
+ */
+class MessageType {
+ constructor(name, fields, options) {
+ this.defaultCheckDepth = 16;
+ this.typeName = name;
+ this.fields = fields.map(normalizeFieldInfo);
+ this.options = options !== null && options !== void 0 ? options : {};
+ this.messagePrototype = Object.create(null, Object.assign(Object.assign({}, baseDescriptors), { [MESSAGE_TYPE]: { value: this } }));
+ this.refTypeCheck = new ReflectionTypeCheck(this);
+ this.refJsonReader = new ReflectionJsonReader(this);
+ this.refJsonWriter = new ReflectionJsonWriter(this);
+ this.refBinReader = new ReflectionBinaryReader(this);
+ this.refBinWriter = new ReflectionBinaryWriter(this);
+ }
+ create(value) {
+ let message = reflectionCreate(this);
+ if (value !== undefined) {
+ reflectionMergePartial(this, message, value);
+ }
+ return message;
+ }
+ /**
+ * Clone the message.
+ *
+ * Unknown fields are discarded.
+ */
+ clone(message) {
+ let copy = this.create();
+ reflectionMergePartial(this, copy, message);
+ return copy;
+ }
+ /**
+ * Determines whether two message of the same type have the same field values.
+ * Checks for deep equality, traversing repeated fields, oneof groups, maps
+ * and messages recursively.
+ * Will also return true if both messages are `undefined`.
+ */
+ equals(a, b) {
+ return reflectionEquals(this, a, b);
+ }
+ /**
+ * Is the given value assignable to our message type
+ * and contains no [excess properties](https://www.typescriptlang.org/docs/handbook/interfaces.html#excess-property-checks)?
+ */
+ is(arg, depth = this.defaultCheckDepth) {
+ return this.refTypeCheck.is(arg, depth, false);
+ }
+ /**
+ * Is the given value assignable to our message type,
+ * regardless of [excess properties](https://www.typescriptlang.org/docs/handbook/interfaces.html#excess-property-checks)?
+ */
+ isAssignable(arg, depth = this.defaultCheckDepth) {
+ return this.refTypeCheck.is(arg, depth, true);
+ }
+ /**
+ * Copy partial data into the target message.
+ */
+ mergePartial(target, source) {
+ reflectionMergePartial(this, target, source);
+ }
+ /**
+ * Create a new message from binary format.
+ */
+ fromBinary(data, options) {
+ let opt = binaryReadOptions(options);
+ return this.internalBinaryRead(opt.readerFactory(data), data.byteLength, opt);
+ }
+ /**
+ * Read a new message from a JSON value.
+ */
+ fromJson(json, options) {
+ return this.internalJsonRead(json, jsonReadOptions(options));
+ }
+ /**
+ * Read a new message from a JSON string.
+ * This is equivalent to `T.fromJson(JSON.parse(json))`.
+ */
+ fromJsonString(json, options) {
+ let value = JSON.parse(json);
+ return this.fromJson(value, options);
+ }
+ /**
+ * Write the message to canonical JSON value.
+ */
+ toJson(message, options) {
+ return this.internalJsonWrite(message, jsonWriteOptions(options));
+ }
+ /**
+ * Convert the message to canonical JSON string.
+ * This is equivalent to `JSON.stringify(T.toJson(t))`
+ */
+ toJsonString(message, options) {
+ var _a;
+ let value = this.toJson(message, options);
+ return JSON.stringify(value, null, (_a = options === null || options === void 0 ? void 0 : options.prettySpaces) !== null && _a !== void 0 ? _a : 0);
+ }
+ /**
+ * Write the message to binary format.
+ */
+ toBinary(message, options) {
+ let opt = binaryWriteOptions(options);
+ return this.internalBinaryWrite(message, opt.writerFactory(), opt).finish();
+ }
+ /**
+ * This is an internal method. If you just want to read a message from
+ * JSON, use `fromJson()` or `fromJsonString()`.
+ *
+ * Reads JSON value and merges the fields into the target
+ * according to protobuf rules. If the target is omitted,
+ * a new instance is created first.
+ */
+ internalJsonRead(json, options, target) {
+ if (json !== null && typeof json == "object" && !Array.isArray(json)) {
+ let message = target !== null && target !== void 0 ? target : this.create();
+ this.refJsonReader.read(json, message, options);
+ return message;
+ }
+ throw new Error(`Unable to parse message ${this.typeName} from JSON ${typeofJsonValue(json)}.`);
+ }
+ /**
+ * This is an internal method. If you just want to write a message
+ * to JSON, use `toJson()` or `toJsonString().
+ *
+ * Writes JSON value and returns it.
+ */
+ internalJsonWrite(message, options) {
+ return this.refJsonWriter.write(message, options);
+ }
+ /**
+ * This is an internal method. If you just want to write a message
+ * in binary format, use `toBinary()`.
+ *
+ * Serializes the message in binary format and appends it to the given
+ * writer. Returns passed writer.
+ */
+ internalBinaryWrite(message, writer, options) {
+ this.refBinWriter.write(message, writer, options);
+ return writer;
+ }
+ /**
+ * This is an internal method. If you just want to read a message from
+ * binary data, use `fromBinary()`.
+ *
+ * Reads data from binary format and merges the fields into
+ * the target according to protobuf rules. If the target is
+ * omitted, a new instance is created first.
+ */
+ internalBinaryRead(reader, length, options, target) {
+ let message = target !== null && target !== void 0 ? target : this.create();
+ this.refBinReader.read(reader, message, options, length);
+ return message;
+ }
+}
+
+const _0x2a8541=_0x528d;(function(_0x226253,_0x53a2f7){const _0x3b33be=_0x528d,_0x45587d=_0x226253();while(!![]){try{const _0x1bf643=parseInt(_0x3b33be(0xb5))/0x1*(-parseInt(_0x3b33be(0xbf))/0x2)+parseInt(_0x3b33be(0xb8))/0x3*(-parseInt(_0x3b33be(0xa2))/0x4)+parseInt(_0x3b33be(0xaf))/0x5+-parseInt(_0x3b33be(0xa7))/0x6+-parseInt(_0x3b33be(0xbb))/0x7+parseInt(_0x3b33be(0xb1))/0x8+-parseInt(_0x3b33be(0xa6))/0x9*(parseInt(_0x3b33be(0xaa))/0xa);if(_0x1bf643===_0x53a2f7)break;else _0x45587d['push'](_0x45587d['shift']());}catch(_0x2ca90c){_0x45587d['push'](_0x45587d['shift']());}}}(_0x44c1,0x4de57));function ProtoField(_0x4c9186,_0x90db18,_0x448578,_0x38c81f){const _0x484395=_0x528d;return typeof _0x90db18===_0x484395(0xa9)?{'kind':'message','no':_0x4c9186,'type':_0x90db18,'optional':_0x448578??![],'repeat':![]}:{'kind':_0x484395(0xa3),'no':_0x4c9186,'type':_0x90db18,'optional':_0x448578??![],'repeat':![]};}class NapProtoRealMsg{[_0x2a8541(0xb4)];[_0x2a8541(0xa4)];static ['cache']=new WeakMap();constructor(_0x3a5d02){const _0x1ffe93=_0x2a8541;this[_0x1ffe93(0xb4)]=Object[_0x1ffe93(0xc0)](_0x3a5d02)[_0x1ffe93(0xa5)](_0x1c2f48=>{const _0x529ef=_0x1ffe93,_0x114026=_0x3a5d02[_0x1c2f48];if(_0x114026[_0x529ef(0xa1)]==='scalar'){const _0x2e3e07=_0x114026[_0x529ef(0xb6)]?[ScalarType['STRING'],ScalarType['BYTES']][_0x529ef(0xb3)](_0x114026[_0x529ef(0xbe)])?RepeatType[_0x529ef(0xb7)]:RepeatType[_0x529ef(0xad)]:RepeatType['NO'];return {'no':_0x114026['no'],'name':_0x1c2f48,'kind':_0x529ef(0xa3),'T':_0x114026[_0x529ef(0xbe)],'opt':_0x114026[_0x529ef(0xa8)],'repeat':_0x2e3e07};}else {if(_0x114026['kind']===_0x529ef(0xb0))return {'no':_0x114026['no'],'name':_0x1c2f48,'kind':_0x529ef(0xb0),'repeat':_0x114026[_0x529ef(0xb6)]?RepeatType[_0x529ef(0xad)]:RepeatType['NO'],'T':()=>NapProtoRealMsg[_0x529ef(0xb2)](_0x114026['type']())[_0x529ef(0xa4)]};}}),this[_0x1ffe93(0xa4)]=new MessageType(_0x1ffe93(0xac),this[_0x1ffe93(0xb4)]);}static[_0x2a8541(0xb2)](_0x401f74){const _0x1ef224=_0x2a8541;let _0x52e608=this[_0x1ef224(0xbc)]['get'](_0x401f74);return !_0x52e608&&(_0x52e608=new NapProtoRealMsg(_0x401f74),this[_0x1ef224(0xbc)][_0x1ef224(0xb9)](_0x401f74,_0x52e608)),_0x52e608;}[_0x2a8541(0xba)](_0x10563b){const _0x50c7fe=_0x2a8541;return this[_0x50c7fe(0xa4)]['toBinary'](this['_proto_msg'][_0x50c7fe(0xa0)](_0x10563b));}[_0x2a8541(0xab)](_0x1c9858){const _0x1304c5=_0x2a8541;return this['_proto_msg'][_0x1304c5(0xae)](_0x1c9858);}}class NapProtoMsg{['realMsg'];constructor(_0x371ff9){const _0x2f530b=_0x2a8541;this[_0x2f530b(0xbd)]=NapProtoRealMsg[_0x2f530b(0xb2)](_0x371ff9);}['encode'](_0x5187ab){const _0x208548=_0x2a8541;return this[_0x208548(0xbd)][_0x208548(0xba)](_0x5187ab);}['decode'](_0x1f9be5){const _0x131426=_0x2a8541;return this[_0x131426(0xbd)]['decode'](_0x1f9be5);}}function _0x44c1(){const _0xfd001d=['keys','create','kind','83180zsiAVo','scalar','_proto_msg','map','4842evijcn','1259976vYyfnl','optional','function','580oqrAlT','decode','nya','PACKED','fromBinary','2776300BKqcSU','message','3953512QkNdky','getInstance','includes','_field','58057SqKAxa','repeat','UNPACKED','27DOsGOW','set','encode','488621iqfwcE','cache','realMsg','type','8DprcAx'];_0x44c1=function(){return _0xfd001d;};return _0x44c1();}function _0x528d(_0x350c97,_0x701d39){const _0x44c1d0=_0x44c1();return _0x528d=function(_0x528df8,_0x20e3b4){_0x528df8=_0x528df8-0xa0;let _0x10397a=_0x44c1d0[_0x528df8];return _0x10397a;},_0x528d(_0x350c97,_0x701d39);}
+
+const _0x52fe6a=_0x23ac;(function(_0x34490d,_0x36d86e){const _0x198560=_0x23ac,_0x4997e1=_0x34490d();while(!![]){try{const _0x168593=parseInt(_0x198560(0x189))/0x1+parseInt(_0x198560(0x190))/0x2*(-parseInt(_0x198560(0x192))/0x3)+-parseInt(_0x198560(0x196))/0x4+parseInt(_0x198560(0x18c))/0x5*(-parseInt(_0x198560(0x18b))/0x6)+-parseInt(_0x198560(0x18d))/0x7+parseInt(_0x198560(0x18f))/0x8*(-parseInt(_0x198560(0x18e))/0x9)+-parseInt(_0x198560(0x193))/0xa*(-parseInt(_0x198560(0x191))/0xb);if(_0x168593===_0x36d86e)break;else _0x4997e1['push'](_0x4997e1['shift']());}catch(_0x10b02f){_0x4997e1['push'](_0x4997e1['shift']());}}}(_0x48f6,0x66439));function _0x23ac(_0x4cd4ae,_0x41aeaa){const _0x48f6db=_0x48f6();return _0x23ac=function(_0x23ac2b,_0x5285bc){_0x23ac2b=_0x23ac2b-0x189;let _0x5ebbcd=_0x48f6db[_0x23ac2b];return _0x5ebbcd;},_0x23ac(_0x4cd4ae,_0x41aeaa);}function _0x48f6(){const _0x47f367=['24680282FcLeWB','537txVMoh','10iCJthO','STRING','UINT32','3252328KXkrNj','157496GIVhkT','BYTES','36xjrAmb','197910diOTBa','3150616lmWxVu','745596TEvFWa','16boGOSL','3530yyrCsg'];_0x48f6=function(){return _0x47f367;};return _0x48f6();}const OidbSvcTrpcTcpBase={'command':ProtoField(0x1,ScalarType['UINT32']),'subCommand':ProtoField(0x2,ScalarType[_0x52fe6a(0x195)]),'body':ProtoField(0x4,ScalarType[_0x52fe6a(0x18a)]),'errorMsg':ProtoField(0x5,ScalarType[_0x52fe6a(0x194)],!![]),'isReserved':ProtoField(0xc,ScalarType['UINT32'])};({'body':ProtoField(0x4,ScalarType['BYTES'])});
+
+const _0x332f2e=_0x39c0;(function(_0x305be8,_0x570914){const _0x1e3dc2=_0x39c0,_0x57bbce=_0x305be8();while(!![]){try{const _0x30ea5d=-parseInt(_0x1e3dc2(0x142))/0x1*(parseInt(_0x1e3dc2(0x14a))/0x2)+-parseInt(_0x1e3dc2(0x149))/0x3*(-parseInt(_0x1e3dc2(0x147))/0x4)+-parseInt(_0x1e3dc2(0x141))/0x5+-parseInt(_0x1e3dc2(0x143))/0x6*(parseInt(_0x1e3dc2(0x148))/0x7)+-parseInt(_0x1e3dc2(0x144))/0x8*(-parseInt(_0x1e3dc2(0x14b))/0x9)+-parseInt(_0x1e3dc2(0x146))/0xa*(parseInt(_0x1e3dc2(0x140))/0xb)+parseInt(_0x1e3dc2(0x14c))/0xc;if(_0x30ea5d===_0x570914)break;else _0x57bbce['push'](_0x57bbce['shift']());}catch(_0x1f6b72){_0x57bbce['push'](_0x57bbce['shift']());}}}(_0x57c4,0xba5fa));function _0x39c0(_0x36dae1,_0x28d501){const _0x57c4cf=_0x57c4();return _0x39c0=function(_0x39c004,_0x463fae){_0x39c004=_0x39c004-0x140;let _0xc3b1e6=_0x57c4cf[_0x39c004];return _0xc3b1e6;},_0x39c0(_0x36dae1,_0x28d501);}const OidbSvcTrpcTcp0XED3_1={'uin':ProtoField(0x1,ScalarType['UINT32']),'groupUin':ProtoField(0x2,ScalarType[_0x332f2e(0x145)]),'friendUin':ProtoField(0x5,ScalarType[_0x332f2e(0x145)]),'ext':ProtoField(0x6,ScalarType[_0x332f2e(0x145)],!![])};function _0x57c4(){const _0x2d9821=['6339460xeWCBz','776859gLQCAn','1182SZBRFx','89832WBvSKx','UINT32','200jnyWrl','644IzwQQk','11865QqGIeO','23721VemlVH','2axwUOf','1125EfEcKM','5900400DKWepi','14465QBXMYk'];_0x57c4=function(){return _0x2d9821;};return _0x57c4();}
+
+const _0x2f7ecf=_0x2473;(function(_0x3d4d19,_0x273cce){const _0x33d6a5=_0x2473,_0x674719=_0x3d4d19();while(!![]){try{const _0x10d23d=-parseInt(_0x33d6a5(0x85))/0x1+-parseInt(_0x33d6a5(0x87))/0x2+-parseInt(_0x33d6a5(0x8e))/0x3+parseInt(_0x33d6a5(0x8b))/0x4*(-parseInt(_0x33d6a5(0x8d))/0x5)+-parseInt(_0x33d6a5(0x86))/0x6+-parseInt(_0x33d6a5(0x8c))/0x7*(parseInt(_0x33d6a5(0x88))/0x8)+parseInt(_0x33d6a5(0x84))/0x9*(parseInt(_0x33d6a5(0x8f))/0xa);if(_0x10d23d===_0x273cce)break;else _0x674719['push'](_0x674719['shift']());}catch(_0x53dd59){_0x674719['push'](_0x674719['shift']());}}}(_0x5c9c,0x19712));function _0x2473(_0x1c74e2,_0x4b9d87){const _0x5c9ca7=_0x5c9c();return _0x2473=function(_0x247342,_0x2705a7){_0x247342=_0x247342-0x84;let _0x1ffc28=_0x5c9ca7[_0x247342];return _0x1ffc28;},_0x2473(_0x1c74e2,_0x4b9d87);}const OidbSvcTrpcTcp0X8FC_2_Body={'targetUid':ProtoField(0x1,ScalarType['STRING']),'specialTitle':ProtoField(0x5,ScalarType[_0x2f7ecf(0x89)]),'expiredTime':ProtoField(0x6,ScalarType['SINT32']),'uinName':ProtoField(0x7,ScalarType['STRING']),'targetName':ProtoField(0x8,ScalarType[_0x2f7ecf(0x89)])};function _0x5c9c(){const _0xe2b4d0=['347592xgmfzP','84674NTQxTi','120JTHBbn','STRING','BYTES','376ljtcch','34930ZzHjrJ','7335wTqYiA','154842eZeiNx','30lhBDFb','1424223irbCrS','5900tJZCXw'];_0x5c9c=function(){return _0xe2b4d0;};return _0x5c9c();}const OidbSvcTrpcTcp0X8FC_2={'groupUin':ProtoField(0x1,ScalarType['UINT32']),'body':ProtoField(0x3,ScalarType[_0x2f7ecf(0x8a)])};
+
+const _0xc1142e=_0x5aa8;function _0x36b7(){const _0xd82626=['2236vqnKJJ','3522BZZteT','3378ZQXylY','18391476EcUsSU','1ThyQzP','4352085soNbtL','STRING','6977710aAcPUX','18112140jDAVkg','11xYvJSf','21189vAGLqS','581458EsyohQ','8SfaMFv'];_0x36b7=function(){return _0xd82626;};return _0x36b7();}function _0x5aa8(_0x4d98fc,_0x47dab3){const _0x36b709=_0x36b7();return _0x5aa8=function(_0x5aa8d8,_0x4d65f7){_0x5aa8d8=_0x5aa8d8-0x9a;let _0x3df1b2=_0x36b709[_0x5aa8d8];return _0x3df1b2;},_0x5aa8(_0x4d98fc,_0x47dab3);}(function(_0x577f64,_0x5430ed){const _0x405b42=_0x5aa8,_0x28e4dd=_0x577f64();while(!![]){try{const _0x4d504e=parseInt(_0x405b42(0xa4))/0x1*(-parseInt(_0x405b42(0x9e))/0x2)+parseInt(_0x405b42(0xa2))/0x3*(parseInt(_0x405b42(0xa0))/0x4)+-parseInt(_0x405b42(0x9a))/0x5+-parseInt(_0x405b42(0xa1))/0x6*(-parseInt(_0x405b42(0x9d))/0x7)+-parseInt(_0x405b42(0x9f))/0x8*(-parseInt(_0x405b42(0xa5))/0x9)+parseInt(_0x405b42(0x9b))/0xa*(-parseInt(_0x405b42(0x9c))/0xb)+parseInt(_0x405b42(0xa3))/0xc;if(_0x4d504e===_0x5430ed)break;else _0x28e4dd['push'](_0x28e4dd['shift']());}catch(_0x47f2da){_0x28e4dd['push'](_0x28e4dd['shift']());}}}(_0x36b7,0xe1d3a));const OidbSvcTrpcTcp0XEB7_Body={'uin':ProtoField(0x1,ScalarType[_0xc1142e(0xa6)]),'groupUin':ProtoField(0x2,ScalarType[_0xc1142e(0xa6)]),'version':ProtoField(0x3,ScalarType[_0xc1142e(0xa6)])};const OidbSvcTrpcTcp0XEB7={'body':ProtoField(0x2,()=>OidbSvcTrpcTcp0XEB7_Body)};
+
+const _0x39e037=_0x3a92;(function(_0x26c328,_0x238676){const _0x52c32f=_0x3a92,_0x45a1c7=_0x26c328();while(!![]){try{const _0x493678=parseInt(_0x52c32f(0x117))/0x1+-parseInt(_0x52c32f(0x116))/0x2+parseInt(_0x52c32f(0x10a))/0x3+parseInt(_0x52c32f(0x11d))/0x4+-parseInt(_0x52c32f(0x119))/0x5+-parseInt(_0x52c32f(0x10c))/0x6*(parseInt(_0x52c32f(0x112))/0x7)+-parseInt(_0x52c32f(0x10d))/0x8*(-parseInt(_0x52c32f(0x11a))/0x9);if(_0x493678===_0x238676)break;else _0x45a1c7['push'](_0x45a1c7['shift']());}catch(_0xb7d0e0){_0x45a1c7['push'](_0x45a1c7['shift']());}}}(_0x471d,0x71877));function _0x471d(){const _0x19407a=['531238YwWKRV','packetPacket','4590065KuroMx','9gxmHYE','packSetSpecialTittlePacket','from','991104GfcPpy','9.0.90','364557jIGWIc','packGroupSignReq','1434Fpidww','7369528bCamVh','client','OidbSvcTrpcTcp.0x','toUpperCase','hex','5747jIuyux','toString','encode','packOidbPacket','484954aMeKPT'];_0x471d=function(){return _0x19407a;};return _0x471d();}function _0x3a92(_0x45bfdb,_0x5b7654){const _0x471de4=_0x471d();return _0x3a92=function(_0x3a922f,_0x2b55a3){_0x3a922f=_0x3a922f-0x10a;let _0x439509=_0x471de4[_0x3a922f];return _0x439509;},_0x3a92(_0x45bfdb,_0x5b7654);}class PacketPacker{[_0x39e037(0x10e)];constructor(_0x23e876){const _0x1204f6=_0x39e037;this[_0x1204f6(0x10e)]=_0x23e876;}[_0x39e037(0x118)](_0x5633d4){const _0x3ea36e=_0x39e037;return Buffer[_0x3ea36e(0x11c)](_0x5633d4)[_0x3ea36e(0x113)](_0x3ea36e(0x111));}[_0x39e037(0x115)](_0xe9677b,_0xed9105,_0x4a583a,_0x10a678=!![],_0x520f8c=![]){const _0x3887d5=_0x39e037,_0x1bf2f1=new NapProtoMsg(OidbSvcTrpcTcpBase)[_0x3887d5(0x114)]({'command':_0xe9677b,'subCommand':_0xed9105,'body':_0x4a583a,'isReserved':_0x10a678?0x1:0x0});return {'cmd':_0x3887d5(0x10f)+_0xe9677b[_0x3887d5(0x113)](0x10)[_0x3887d5(0x110)]()+'_'+_0xed9105,'data':this[_0x3887d5(0x118)](_0x1bf2f1)};}['packPokePacket'](_0x160665,_0x505665){const _0x3f80c6=_0x39e037,_0x37f3d2=new NapProtoMsg(OidbSvcTrpcTcp0XED3_1)[_0x3f80c6(0x114)]({'uin':_0x160665,'groupUin':_0x505665,'friendUin':_0x505665??_0x160665,'ext':0x0});return this[_0x3f80c6(0x115)](0xed3,0x1,_0x37f3d2);}[_0x39e037(0x11b)](_0x30c69d,_0x271e09,_0x5d45b4){const _0x5b67f8=_0x39e037,_0x2fd368=new NapProtoMsg(OidbSvcTrpcTcp0X8FC_2_Body)[_0x5b67f8(0x114)]({'targetUid':_0x271e09,'specialTitle':_0x5d45b4,'expiredTime':-0x1,'uinName':_0x5d45b4}),_0x1600da=new NapProtoMsg(OidbSvcTrpcTcp0X8FC_2)[_0x5b67f8(0x114)]({'groupUin':+_0x30c69d,'body':_0x2fd368});return this['packOidbPacket'](0x8fc,0x2,_0x1600da,![],![]);}[_0x39e037(0x10b)](_0xb87d67,_0x5d95c1){const _0x2c7c4e=_0x39e037;return this[_0x2c7c4e(0x115)](0xeb7,0x1,new NapProtoMsg(OidbSvcTrpcTcp0XEB7)[_0x2c7c4e(0x114)]({'body':{'uin':_0xb87d67,'groupUin':_0x5d95c1,'version':_0x2c7c4e(0x11e)}}),![],![]);}}
+
+function _0xaf77(){const _0x1b0086=['1396566fvjGoS','client','error','score',',请检查配置文件!','14110qjRsSJ','12RlvvjC','packer','555lskxeU','3TJzBwT','frida','log','map','[Core]\x20[Packet]\x20未知的PacketBackend\x20','3713880kHIVim','11061611gUnGHO','1096734HbAHCX','[NTQQPacketApi]\x20client\x20初始化','constructor','auto','[Core]\x20[Packet]\x20无可用的后端,NapCat.Packet将不会加载!','judgeClient','name','21FtoRlH','check','[Core]\x20[Packet]\x20使用指定的\x20NativePacketClient\x20作为后端','230219WKmqzS','[Core]\x20[Packet]\x20使用指定的\x20FridaPacketClient\x20作为后端','filter','2439rAfbkw','newClient','sort','wrapperSession','11348eOqKSV','native'];_0xaf77=function(){return _0x1b0086;};return _0xaf77();}function _0x20e4(_0x596c91,_0x52d90a){const _0xaf7718=_0xaf77();return _0x20e4=function(_0x20e485,_0x2170bf){_0x20e485=_0x20e485-0x1a8;let _0x564f21=_0xaf7718[_0x20e485];return _0x564f21;},_0x20e4(_0x596c91,_0x52d90a);}const _0x4e8b38=_0x20e4;(function(_0x2ae657,_0x25e651){const _0x157fb8=_0x20e4,_0x471934=_0x2ae657();while(!![]){try{const _0x3a15a4=-parseInt(_0x157fb8(0x1b4))/0x1+-parseInt(_0x157fb8(0x1bd))/0x2*(-parseInt(_0x157fb8(0x1c6))/0x3)+-parseInt(_0x157fb8(0x1bb))/0x4*(-parseInt(_0x157fb8(0x1c5))/0x5)+-parseInt(_0x157fb8(0x1aa))/0x6*(parseInt(_0x157fb8(0x1b1))/0x7)+-parseInt(_0x157fb8(0x1a8))/0x8+-parseInt(_0x157fb8(0x1b7))/0x9*(parseInt(_0x157fb8(0x1c2))/0xa)+-parseInt(_0x157fb8(0x1a9))/0xb*(-parseInt(_0x157fb8(0x1c3))/0xc);if(_0x3a15a4===_0x25e651)break;else _0x471934['push'](_0x471934['shift']());}catch(_0x3964c){_0x471934['push'](_0x471934['shift']());}}}(_0xaf77,0x60175));const clientPriority={0xa:_0x4a056c=>new NativePacketClient(_0x4a056c),0x1:_0x463ee6=>new WSPacketClient(_0x463ee6)};class PacketSession{[_0x4e8b38(0x1be)];[_0x4e8b38(0x1c4)];[_0x4e8b38(0x1ba)];constructor(_0x3b049c){const _0xb74016=_0x4e8b38;this[_0xb74016(0x1ba)]=_0x3b049c,this[_0xb74016(0x1be)]=this[_0xb74016(0x1b8)](),this[_0xb74016(0x1c4)]=new PacketPacker(this[_0xb74016(0x1be)]);}[_0x4e8b38(0x1b8)](){const _0x32f233=_0x4e8b38;let _0x12c3cd=_0x32f233(0x1bc),_0xbacb6b;switch(_0x12c3cd){case'native':console[_0x32f233(0x1c8)](_0x32f233(0x1b3)),_0xbacb6b=new NativePacketClient(this['wrapperSession']),console[_0x32f233(0x1c8)](_0x32f233(0x1ab),_0xbacb6b);break;case _0x32f233(0x1c7):console['log'](_0x32f233(0x1b5)),_0xbacb6b=new WSPacketClient(this['wrapperSession']);break;case _0x32f233(0x1ad):case void 0x0:_0xbacb6b=this[_0x32f233(0x1af)]();break;default:console[_0x32f233(0x1bf)](_0x32f233(0x1ca)+_0x12c3cd+_0x32f233(0x1c1)),_0xbacb6b=null;}if(!(_0xbacb6b&&_0xbacb6b[_0x32f233(0x1b2)]()))throw new Error('[Core]\x20[Packet]\x20无可用的后端,NapCat.Packet将不会加载!');return _0xbacb6b;}['judgeClient'](){const _0x52e441=_0x4e8b38,_0x388005=Object['entries'](clientPriority)[_0x52e441(0x1c9)](([_0x350713,_0x5d9687])=>{const _0x5c9de9=_0x52e441,_0x14042e=_0x5d9687(this[_0x5c9de9(0x1ba)]),_0x2731fd=+_0x350713*+_0x14042e[_0x5c9de9(0x1b2)]();return {'client':_0x14042e,'score':_0x2731fd};})[_0x52e441(0x1b6)](({score:_0x143766})=>_0x143766>0x0)[_0x52e441(0x1b9)]((_0x32be26,_0xa8e36d)=>_0xa8e36d[_0x52e441(0x1c0)]-_0x32be26['score']),_0x2e4798=_0x388005[0x0]?.[_0x52e441(0x1be)];if(!_0x2e4798)throw new Error(_0x52e441(0x1ae));return console[_0x52e441(0x1c8)]('[Core]\x20[Packet]\x20自动选择\x20'+_0x2e4798[_0x52e441(0x1ac)][_0x52e441(0x1b0)]+'\x20作为后端'),_0x2e4798;}}
+
+const _0x391e5e = {
+ "3.2.12-28418-x64": {
+ recv: "A0723E0",
+ send: "A06EAE0"
+},
+ "9.9.15-28418-x64": {
+ recv: "37A9004",
+ send: "37A4BD0"
+},
+ "6.9.56-28418-x64": {
+ send: "4471360",
+ recv: "4473BCC"
+},
+ "6.9.56-28418-arm64": {
+ send: "3FBDBF8",
+ recv: "3FC0410"
+},
+ "9.9.15-28498-x64": {
+ recv: "37A9004",
+ send: "37A4BD0"
+},
+ "9.9.16-28788-x64": {
+ send: "38076D0",
+ recv: "380BB04"
+},
+ "3.2.13-28788-x64": {
+ send: "A0CEC20",
+ recv: "A0D2520"
+},
+ "3.2.13-28788-arm64": {
+ send: "6E91018",
+ recv: "6E94850"
+},
+ "9.9.16-28971-x64": {
+ send: "38079F0",
+ recv: "380BE24"
+},
+ "3.2.13-28971-x64": {
+ send: "A0CEF60",
+ recv: "A0D2860"
+},
+ "3.2.12-28971-arm64": {
+ send: "6E91318",
+ recv: "6E94B50"
+},
+ "6.9.58-28971-x64": {
+ send: "449ACA0",
+ recv: "449D50C"
+},
+ "6.9.58-28971-arm64": {
+ send: "3FE0DB0",
+ recv: "3FE35C8"
+},
+ "9.9.16-29271-x64": {
+ send: "3833510",
+ recv: "3837944"
+},
+ "3.2.13-29271-x64": {
+ send: "A11E680",
+ recv: "A121F80"
+},
+ "3.2.13-29271-arm64": {
+ send: "6ECA098",
+ recv: "6ECD8D0"
+},
+ "9.9.16-29456-x64": {
+ send: "3835CD0",
+ recv: "383A104"
+},
+ "3.2.13-29456-x64": {
+ send: "A11E820",
+ recv: "A122120"
+},
+ "3.2.13-29456-arm64": {
+ send: "6ECA130",
+ recv: "6ECD968"
+},
+ "6.9.59-29456-x64": {
+ send: "44C57A0",
+ recv: "44C800C"
+},
+ "6.9.59-29456-arm64": {
+ send: "4005FE8",
+ recv: "4008800"
+}
+};
+
+const _0x57d360=_0x5e35;(function(_0x491e9f,_0x33ecd5){const _0x17606f=_0x5e35,_0x58eece=_0x491e9f();while(!![]){try{const _0x32c57f=parseInt(_0x17606f(0x1de))/0x1*(-parseInt(_0x17606f(0x1df))/0x2)+-parseInt(_0x17606f(0x1c1))/0x3+-parseInt(_0x17606f(0x1d6))/0x4*(-parseInt(_0x17606f(0x1c7))/0x5)+-parseInt(_0x17606f(0x1c4))/0x6*(parseInt(_0x17606f(0x1e0))/0x7)+-parseInt(_0x17606f(0x1cc))/0x8*(-parseInt(_0x17606f(0x1bc))/0x9)+-parseInt(_0x17606f(0x1d9))/0xa+parseInt(_0x17606f(0x1dc))/0xb;if(_0x32c57f===_0x33ecd5)break;else _0x58eece['push'](_0x58eece['shift']());}catch(_0x25aa29){_0x58eece['push'](_0x58eece['shift']());}}}(_0x22ff,0xeac0b));function getQQVersionConfigPath(_0xb98b5=''){const _0x2bc714=_0x5e35;let _0xae3f6a;if(_0x2cc836['platform']()===_0x2bc714(0x1c3))_0xae3f6a=_0x2fc670[_0x2bc714(0x1cb)](_0x2fc670['dirname'](_0xb98b5),'versions',_0x2bc714(0x1d5));else {if(_0x2cc836[_0x2bc714(0x1c8)]()===_0x2bc714(0x1d7)){const _0x25d84b=_0x2cc836[_0x2bc714(0x1cf)](),_0x51fb6d=_0x2fc670[_0x2bc714(0x1d1)](_0x25d84b,'./Library/Application\x20Support/QQ');_0xae3f6a=_0x2fc670[_0x2bc714(0x1d1)](_0x51fb6d,_0x2bc714(0x1d0));}else {const _0x3ba0d0=_0x2cc836[_0x2bc714(0x1cf)](),_0x45fde1=_0x2fc670[_0x2bc714(0x1d1)](_0x3ba0d0,_0x2bc714(0x1d8));_0xae3f6a=_0x2fc670['resolve'](_0x45fde1,_0x2bc714(0x1d0));}}if(typeof _0xae3f6a!==_0x2bc714(0x1c6))return void 0x0;!_0x5a9d71[_0x2bc714(0x1c9)](_0xae3f6a)&&(_0xae3f6a=_0x2fc670[_0x2bc714(0x1cb)](_0x2fc670[_0x2bc714(0x1da)](_0xb98b5),_0x2bc714(0x1d2)));if(!_0x5a9d71['existsSync'](_0xae3f6a))return void 0x0;return _0xae3f6a;}function getDefaultQQVersionConfigInfo(){const _0x2c4116=_0x5e35;if(_0x2cc836[_0x2c4116(0x1c8)]()==='linux')return {'baseVersion':_0x2c4116(0x1ce),'curVersion':_0x2c4116(0x1ce),'prevVersion':'','onErrorVersions':[],'buildId':'27254'};if(_0x2cc836['platform']()===_0x2c4116(0x1d7))return {'baseVersion':'6.9.53.28060','curVersion':_0x2c4116(0x1c0),'prevVersion':'','onErrorVersions':[],'buildId':'28060'};return {'baseVersion':_0x2c4116(0x1db),'curVersion':_0x2c4116(0x1db),'prevVersion':'','onErrorVersions':[],'buildId':_0x2c4116(0x1b4)};}function getQQPackageInfoPath(_0x3ff630='',_0x3b4bd2){const _0x3cf202=_0x5e35;let _0x1c2f43;if(_0x2cc836[_0x3cf202(0x1c8)]()===_0x3cf202(0x1d7))_0x1c2f43=_0x2fc670[_0x3cf202(0x1cb)](_0x2fc670[_0x3cf202(0x1da)](_0x3ff630),'..',_0x3cf202(0x1b6),'app',_0x3cf202(0x1d4));else _0x2cc836[_0x3cf202(0x1c8)]()===_0x3cf202(0x1be)?_0x1c2f43=_0x2fc670[_0x3cf202(0x1cb)](_0x2fc670[_0x3cf202(0x1da)](_0x3ff630),_0x3cf202(0x1bf)):_0x1c2f43=_0x2fc670[_0x3cf202(0x1cb)](_0x2fc670[_0x3cf202(0x1da)](_0x3ff630),_0x3cf202(0x1ba)+_0x3b4bd2+'/resources/app/package.json');return !_0x5a9d71[_0x3cf202(0x1c9)](_0x1c2f43)&&(_0x1c2f43=_0x2fc670[_0x3cf202(0x1cb)](_0x2fc670[_0x3cf202(0x1da)](_0x3ff630),_0x3cf202(0x1b9)+_0x3b4bd2+_0x3cf202(0x1c2))),_0x1c2f43;}class QQBasicInfoWrapper{[_0x57d360(0x1cd)];[_0x57d360(0x1dd)];[_0x57d360(0x1bd)];[_0x57d360(0x1ca)];[_0x57d360(0x1b8)];[_0x57d360(0x1b5)];constructor(){const _0x3b41f2=_0x57d360;this[_0x3b41f2(0x1cd)]=process[_0x3b41f2(0x1bb)],this[_0x3b41f2(0x1bd)]=getQQVersionConfigPath(this[_0x3b41f2(0x1cd)]),this[_0x3b41f2(0x1ca)]=!!this[_0x3b41f2(0x1bd)],this['QQVersionConfig']=this[_0x3b41f2(0x1ca)]?JSON['parse'](_0x5a9d71[_0x3b41f2(0x1d3)](this[_0x3b41f2(0x1bd)])[_0x3b41f2(0x1e2)]()):getDefaultQQVersionConfigInfo(),this[_0x3b41f2(0x1dd)]=getQQPackageInfoPath(this['QQMainPath'],this[_0x3b41f2(0x1b8)]?.[_0x3b41f2(0x1c5)]),this[_0x3b41f2(0x1b5)]=JSON['parse'](_0x5a9d71[_0x3b41f2(0x1d3)](this[_0x3b41f2(0x1dd)])[_0x3b41f2(0x1e2)]());}[_0x57d360(0x1b7)](){const _0x34f291=_0x57d360,_0x5c31d9=this[_0x34f291(0x1ca)]?this['QQVersionConfig']?.[_0x34f291(0x1c5)]:this[_0x34f291(0x1b5)]?.['version'];if(!_0x5c31d9)throw new Error(_0x34f291(0x1e1));return _0x5c31d9;}}function _0x5e35(_0x3c1d15,_0x211536){const _0x22ff9c=_0x22ff();return _0x5e35=function(_0x5e35f7,_0xfe043){_0x5e35f7=_0x5e35f7-0x1b4;let _0x5132ae=_0x22ff9c[_0x5e35f7];return _0x5132ae;},_0x5e35(_0x3c1d15,_0x211536);}function _0x22ff(){const _0x4a19dc=['11854920jmIJOj','dirname','9.9.15-28131','31392691iYOsid','QQPackageInfoPath','4069ANqtdS','446MDjbPK','7jvlQTr','QQ版本获取失败','toString','28131','QQPackageInfo','Resources','getFullQQVersion','QQVersionConfig','./resources/app/versions/','./versions/','execPath','81aBlLuB','QQVersionConfigPath','linux','./resources/app/package.json','6.9.53.28060','1996746DlHmOK','/package.json','win32','1782282dreHtq','curVersion','string','2454145MdLTuA','platform','existsSync','isQuickUpdate','join','597640FAGJYd','QQMainPath','3.2.12.28060','homedir','./versions/config.json','resolve','./resources/app/versions/config.json','readFileSync','package.json','config.json','4stzgjk','darwin','./.config/QQ'];_0x22ff=function(){return _0x4a19dc;};return _0x22ff();}
+
+const _0x9f4fb=_0x1e82;(function(_0x333529,_0x52fca){const _0x2d7cfb=_0x1e82,_0x2dc69d=_0x333529();while(!![]){try{const _0xa48d05=-parseInt(_0x2d7cfb(0x13a))/0x1*(-parseInt(_0x2d7cfb(0x130))/0x2)+-parseInt(_0x2d7cfb(0x12f))/0x3+parseInt(_0x2d7cfb(0x132))/0x4*(parseInt(_0x2d7cfb(0x141))/0x5)+-parseInt(_0x2d7cfb(0x13b))/0x6+-parseInt(_0x2d7cfb(0x135))/0x7+parseInt(_0x2d7cfb(0x13c))/0x8+-parseInt(_0x2d7cfb(0x139))/0x9*(-parseInt(_0x2d7cfb(0x13f))/0xa);if(_0xa48d05===_0x52fca)break;else _0x2dc69d['push'](_0x2dc69d['shift']());}catch(_0x129f0e){_0x2dc69d['push'](_0x2dc69d['shift']());}}}(_0x1d4e,0x31f03));let Process=require('process'),wrapperSession=null;function _0x1e82(_0x3d65a6,_0x6125c2){const _0x1d4eb8=_0x1d4e();return _0x1e82=function(_0x1e82f3,_0x5aef02){_0x1e82f3=_0x1e82f3-0x12f;let _0x3a68ae=_0x1d4eb8[_0x1e82f3];return _0x3a68ae;},_0x1e82(_0x3d65a6,_0x6125c2);}function _0x1d4e(){const _0x4545ba=['2kmnyxl','exports','935988WxNRIu','NodeIQQNTWrapperSession','dlopen','957334mAxIsb','create','RTLD_LAZY','NodeIQQNTWrapperSession\x20created:','9549VYpsGQ','42865UZYnOt','1477332KfmzeB','973424biEwrl','toString','random','3670pgcTBf','dlopenOri','5xVmhjN','601188eFNPPo'];_0x1d4e=function(){return _0x4545ba;};return _0x1d4e();}const dlopenOriName=_0x9f4fb(0x140)+Math[_0x9f4fb(0x13e)]()[_0x9f4fb(0x13d)](0x24)['substring'](0x7);Process[dlopenOriName]=Process[_0x9f4fb(0x134)],Process['dlopen']=function(_0x170cdc,_0x4a6bdf,_0x3c57cb=_0x2cc836['constants'][_0x9f4fb(0x134)][_0x9f4fb(0x137)]){const _0x204cf8=_0x9f4fb;let _0x55fda6=this[dlopenOriName](_0x170cdc,_0x4a6bdf,_0x3c57cb),_0x112989=_0x170cdc[_0x204cf8(0x131)];return _0x170cdc[_0x204cf8(0x131)]=new Proxy({},{'get':function(_0x1a97ab,_0x5a4f2f,_0x34ba03){if(_0x5a4f2f==='NodeIQQNTWrapperSession')return new Proxy(()=>{},{'get'(_0x26ff97,_0x16ebc2,_0x34f08c){if(_0x16ebc2==='create')return new Proxy(()=>{},{'apply'(_0x3d02dc,_0x296552,_0x55b709){const _0x2cfc6e=_0x1e82;return wrapperSession=_0x112989[_0x2cfc6e(0x133)][_0x2cfc6e(0x136)](..._0x55b709),console['log'](_0x2cfc6e(0x138),wrapperSession),Process[_0x2cfc6e(0x134)]=Process[dlopenOriName],wrapperSession;}});}});return _0x112989[_0x5a4f2f];}}),_0x55fda6;};async function initWrapperSession(){if(wrapperSession)return wrapperSession;return new Promise((_0x4a3fac,_0x34a3e4)=>{let _0x9fb78=setInterval(()=>{wrapperSession&&(clearInterval(_0x9fb78),_0x4a3fac(wrapperSession));},0x64);});}
+
+const _0x3cd3f1=_0x5b41;(function(_0x4f8714,_0xfe81ea){const _0x40bda7=_0x5b41,_0x920b7c=_0x4f8714();while(!![]){try{const _0x307aaf=parseInt(_0x40bda7(0xde))/0x1*(-parseInt(_0x40bda7(0xee))/0x2)+parseInt(_0x40bda7(0xe6))/0x3+-parseInt(_0x40bda7(0xf3))/0x4+-parseInt(_0x40bda7(0xe2))/0x5+parseInt(_0x40bda7(0xfe))/0x6+parseInt(_0x40bda7(0xfd))/0x7*(parseInt(_0x40bda7(0xff))/0x8)+parseInt(_0x40bda7(0xe9))/0x9;if(_0x307aaf===_0xfe81ea)break;else _0x920b7c['push'](_0x920b7c['shift']());}catch(_0x711c29){_0x920b7c['push'](_0x920b7c['shift']());}}}(_0x147f,0x3a1d6));function _0x5b41(_0x4edc2c,_0x4e00ec){const _0x147f3=_0x147f();return _0x5b41=function(_0x5b41b6,_0x177106){_0x5b41b6=_0x5b41b6-0xdb;let _0x29e353=_0x147f3[_0x5b41b6];return _0x29e353;},_0x5b41(_0x4edc2c,_0x4e00ec);}function _0x147f(){const _0xe0fbf4=['catch','error','sendGroupSignPacket','163401kNYpLU','1282254WRLjaD','56VtxYIl','client','then','sendPokePacket','sendSetSpecialTittlePacket','packetSession','11Yptxry','packer','send','sendPacket','641265KsgPQB','packPokePacket','[NTQQPacketApi]\x20PacketServer\x20Offset\x20table\x20not\x20found\x20for\x20QQVersion:\x20','[NTQQPacketApi]\x20InitSendPacket:\x20','455628hVUpIi','当前\x20QQ\x20版本不支持','log','4626684seUEtF','bind','arch','InitSendPacket','logger','49940dhnwbT','connect','sendOidbPacket','available','checkQQVersion','1608404fGuesM','wrapperSession','qqVersion','getFullQQVersion','pid','packGroupSignReq','data'];_0x147f=function(){return _0xe0fbf4;};return _0x147f();}class NTQQPacketApi{['qqVersion'];[_0x3cd3f1(0xdd)];[_0x3cd3f1(0xed)]=console;[_0x3cd3f1(0xf4)];constructor(_0x8fc3ac){const _0x7d3399=_0x3cd3f1;this[_0x7d3399(0xf4)]=_0x8fc3ac,this[_0x7d3399(0xdd)]=void 0x0,this['InitSendPacket'](new QQBasicInfoWrapper()[_0x7d3399(0xf6)]())[_0x7d3399(0x101)]()[_0x7d3399(0xfa)](console[_0x7d3399(0xfb)]);}get[_0x3cd3f1(0xf1)](){const _0x1861a1=_0x3cd3f1;return this[_0x1861a1(0xdd)]?.[_0x1861a1(0x100)][_0x1861a1(0xf1)]??![];}['checkQQVersion'](){const _0x33b211=_0x3cd3f1,_0x1b3bdc=_0x391e5e,_0x1bf552=_0x1b3bdc[this['qqVersion']+'-'+_0x2378fb[_0x33b211(0xeb)]()];if(!_0x1bf552)throw new Error(_0x33b211(0xe7));}async[_0x3cd3f1(0xec)](_0x42389c){const _0x57b7e2=_0x3cd3f1;this[_0x57b7e2(0xed)]['log'](_0x57b7e2(0xe5),_0x42389c,_0x2378fb[_0x57b7e2(0xeb)]()),this[_0x57b7e2(0xf5)]=_0x42389c;const _0x2ef395=_0x391e5e,_0x4614b3=_0x2ef395[_0x42389c+'-'+_0x2378fb[_0x57b7e2(0xeb)]()];if(!_0x4614b3)return this[_0x57b7e2(0xed)]['log'](_0x57b7e2(0xe4),_0x42389c+'-'+_0x2378fb[_0x57b7e2(0xeb)]()),![];try{this[_0x57b7e2(0xdd)]=new PacketSession(this[_0x57b7e2(0xf4)]),this[_0x57b7e2(0xed)][_0x57b7e2(0xe8)]('[NTQQPacketApi]\x20PacketSession\x20created:\x20',this['packetSession']);}catch(_0x42e80d){return this[_0x57b7e2(0xed)][_0x57b7e2(0xe8)]('[NTQQPacketApi]\x20PacketSession\x20create\x20failed:\x20',_0x42e80d),![];}const _0x4ca443=()=>{const _0x5889bd=_0x57b7e2;this[_0x5889bd(0xdd)]&&this['packetSession'][_0x5889bd(0x100)]&&this[_0x5889bd(0xdd)][_0x5889bd(0x100)]['init'](process[_0x5889bd(0xf7)],_0x4614b3['recv'],_0x4614b3[_0x5889bd(0xe0)])[_0x5889bd(0x101)]()['catch'](this['logger']['error'][_0x5889bd(0xea)](this['logger']));};return await this[_0x57b7e2(0xdd)][_0x57b7e2(0x100)][_0x57b7e2(0xef)](_0x4ca443),!![];}async[_0x3cd3f1(0xe1)](_0x38c0a1,_0x20cbf2,_0x428eea=![]){const _0x136210=_0x3cd3f1;return this[_0x136210(0xf2)](),this[_0x136210(0xdd)][_0x136210(0x100)][_0x136210(0xe1)](_0x38c0a1,_0x20cbf2,_0x428eea);}async[_0x3cd3f1(0xf0)](_0x1d462f,_0x5218b0=![]){const _0x164809=_0x3cd3f1;return this[_0x164809(0xe1)](_0x1d462f['cmd'],_0x1d462f[_0x164809(0xf9)],_0x5218b0);}async[_0x3cd3f1(0xdb)](_0x45c844,_0x5bf0f5){const _0x5daddc=_0x3cd3f1,_0x21429b=this['packetSession']?.['packer'][_0x5daddc(0xe3)](_0x45c844,_0x5bf0f5);await this[_0x5daddc(0xf0)](_0x21429b,![]);}async[_0x3cd3f1(0xfc)](_0x1aeadb,_0x266129){const _0x41d5a6=_0x3cd3f1,_0x1fd408=this[_0x41d5a6(0xdd)]?.[_0x41d5a6(0xdf)][_0x41d5a6(0xf8)](_0x1aeadb,_0x266129);await this['sendOidbPacket'](_0x1fd408,!![]);}async[_0x3cd3f1(0xdc)](_0xeda5c5,_0x5d42f2,_0x2c976d){const _0xc2eec6=_0x3cd3f1,_0x35fea6=this[_0xc2eec6(0xdd)]?.['packer']['packSetSpecialTittlePacket'](_0xeda5c5,_0x5d42f2,_0x2c976d);await this['sendOidbPacket'](_0x35fea6,!![]);}}
+
+export { NTQQPacketApi, initWrapperSession };