11 lines
79 KiB
JavaScript
11 lines
79 KiB
JavaScript
/*!
|
||
* rtsp2web v2.4.7
|
||
* (c) 2020-2023 NeverYu
|
||
* My home page:https://neveryu.github.io/neveryu/
|
||
* 微信(wechat):miracle421354532
|
||
* Released under the ISC License.
|
||
*/
|
||
"use strict";var e=require("http"),t=require("https"),r=require("fs"),n=require("net"),s=require("path"),i=require("crypto"),o=require("child_process"),a=require("events"),c=require("tls"),l=require("stream"),u=require("url"),f=require("zlib");function h(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=h(e),d=h(t),m=h(r),_=h(n),y=h(s),g=h(i),v=h(o),E=h(a),w=h(c),b=h(l),S=h(u),x=h(f);function k(e){return k="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},k(e)}function T(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function P(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function C(e,t,r){return t&&P(e.prototype,t),r&&P(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function N(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function O(e){return O=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},O(e)}function I(e,t){return I=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},I(e,t)}function A(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function L(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return A(e)}function R(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=O(e);if(t){var s=O(this).constructor;r=Reflect.construct(n,arguments,s)}else r=n.apply(this,arguments);return L(this,r)}}function F(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,s,i=[],o=!0,a=!1;try{for(r=r.call(e);!(o=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);o=!0);}catch(e){a=!0,s=e}finally{try{o||null==r.return||r.return()}finally{if(a)throw s}}return i}(e,t)||U(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function M(e){return function(e){if(Array.isArray(e))return B(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||U(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function U(e,t){if(e){if("string"==typeof e)return B(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?B(e,t):void 0}}function B(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function W(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=U(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,s=function(){};return{s:s,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,a=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){a=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(a)throw i}}}}var D="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function j(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var q={},K={};Object.defineProperty(K,"__esModule",{value:!0}),K.promisify=$;function $(e){if("function"!=typeof e)throw new TypeError("Argument to promisify must be a function");var t=e["__ES6-PROMISIFY--CUSTOM-ARGUMENTS__"],r=$.Promise||Promise;if("function"!=typeof r)throw new Error("No Promise implementation found; do you need a polyfill?");return function(){for(var n=this,s=arguments.length,i=new Array(s),o=0;o<s;o++)i[o]=arguments[o];return new r((function(r,s){i.push((function(e){if(e)return s(e);for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];if(1===i.length||!t)return r(i[0]);var a={};i.forEach((function(e,r){var n=t[r];n&&(a[n]=e)})),r(a)})),e.apply(n,i)}))}}$.argumentNames="__ES6-PROMISIFY--CUSTOM-ARGUMENTS__",$.Promise=void 0;var G={exports:{}},V="win32"===process.platform,z=V?/[^:]\\$/:/.\/$/,Y=function(){var e;return e=V?process.env.TEMP||process.env.TMP||(process.env.SystemRoot||process.env.windir)+"\\temp":process.env.TMPDIR||process.env.TMP||process.env.TEMP||"/tmp",z.test(e)&&(e=e.slice(0,-1)),e};!function(e){var t=y.default,r=m.default,n=g.default,s=Y,i=process.env.PEMJS_TMPDIR||s();e.exports.isNumber=function(e){return!Array.isArray(e)&&/^\d+$/g.test(e)},e.exports.isHex=function(e){return/^(0x){0,1}([0-9A-F]{1,40}|[0-9A-F]{1,40})$/gi.test(e)},e.exports.toHex=function(e){for(var t="",r=0;r<e.length;r++)t+=""+e.charCodeAt(r).toString(16);return t},e.exports.ciphers=["aes128","aes192","aes256","camellia128","camellia192","camellia256","des","des3","idea"];var o=e.exports.ciphers;e.exports.createPasswordFile=function(e,s,a){if(!(e&&Object.prototype.hasOwnProperty.call(e,"password")&&Object.prototype.hasOwnProperty.call(e,"passType")&&/^(word|in|out)$/.test(e.passType)))return!1;var c=t.join(i,n.randomBytes(20).toString("hex"));return a.push(c),e.password=e.password.trim(),""===e.password&&(e.mustPass=!0),e.cipher&&-1!==o.indexOf(e.cipher)&&s.push("-"+e.cipher),s.push("-pass"+e.passType),e.mustPass?s.push("pass:"+e.password):(r.writeFileSync(c,e.password),s.push("file:"+c)),!0},e.exports.deleteTempFiles=function(e,t){var n=[];if("string"==typeof e)n.push(e);else{if(!Array.isArray(e))return t(new Error("Unexcepted files parameter type; only string or array supported"));n=e}var s=function(e,t){if(!e.length)return t(null);var n=e.shift();if(!n||"string"!=typeof n)return s(e,t);r.unlink(n,(function(r){return r&&"ENOENT"===r.code?s(e,t):r?t(r):s(e,t)}))};s(n,t)}}(G);var H=Z;Z.sync=function(e,t){return X(J.statSync(e),e,t)};var J=m.default;function X(e,t,r){return!(!e.isSymbolicLink()&&!e.isFile())&&function(e,t){var r=void 0!==t.pathExt?t.pathExt:process.env.PATHEXT;if(!r)return!0;if(-1!==(r=r.split(";")).indexOf(""))return!0;for(var n=0;n<r.length;n++){var s=r[n].toLowerCase();if(s&&e.substr(-s.length).toLowerCase()===s)return!0}return!1}(t,r)}function Z(e,t,r){J.stat(e,(function(n,s){r(n,!n&&X(s,e,t))}))}var Q=re;re.sync=function(e,t){return ne(te.statSync(e),t)};var ee,te=m.default;function re(e,t,r){te.stat(e,(function(e,n){r(e,!e&&ne(n,t))}))}function ne(e,t){return e.isFile()&&function(e,t){var r=e.mode,n=e.uid,s=e.gid,i=void 0!==t.uid?t.uid:process.getuid&&process.getuid(),o=void 0!==t.gid?t.gid:process.getgid&&process.getgid(),a=parseInt("100",8),c=parseInt("010",8),l=parseInt("001",8),u=a|c;return r&l||r&c&&s===o||r&a&&n===i||r&u&&0===i}(e,t)}ee="win32"===process.platform||D.TESTING_WINDOWS?H:Q;var se=ie;function ie(e,t,r){if("function"==typeof t&&(r=t,t={}),!r){if("function"!=typeof Promise)throw new TypeError("callback not provided");return new Promise((function(r,n){ie(e,t||{},(function(e,t){e?n(e):r(t)}))}))}ee(e,t||{},(function(e,n){e&&("EACCES"===e.code||t&&t.ignoreErrors)&&(e=null,n=!1),r(e,n)}))}ie.sync=function(e,t){try{return ee.sync(e,t||{})}catch(e){if(t&&t.ignoreErrors||"EACCES"===e.code)return!1;throw e}};const oe="win32"===process.platform||"cygwin"===process.env.OSTYPE||"msys"===process.env.OSTYPE,ae=y.default,ce=oe?";":":",le=se,ue=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),fe=(e,t)=>{const r=t.colon||ce,n=e.match(/\//)||oe&&e.match(/\\/)?[""]:[...oe?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(r)],s=oe?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",i=oe?s.split(r):[""];return oe&&-1!==e.indexOf(".")&&""!==i[0]&&i.unshift(""),{pathEnv:n,pathExt:i,pathExtExe:s}},he=(e,t,r)=>{"function"==typeof t&&(r=t,t={}),t||(t={});const{pathEnv:n,pathExt:s,pathExtExe:i}=fe(e,t),o=[],a=r=>new Promise(((s,i)=>{if(r===n.length)return t.all&&o.length?s(o):i(ue(e));const a=n[r],l=/^".*"$/.test(a)?a.slice(1,-1):a,u=ae.join(l,e),f=!l&&/^\.[\\\/]/.test(e)?e.slice(0,2)+u:u;s(c(f,r,0))})),c=(e,r,n)=>new Promise(((l,u)=>{if(n===s.length)return l(a(r+1));const f=s[n];le(e+f,{pathExt:i},((s,i)=>{if(!s&&i){if(!t.all)return l(e+f);o.push(e+f)}return l(c(e,r,n+1))}))}));return r?a(0).then((e=>r(null,e)),r):a(0)};var pe=he;he.sync=(e,t)=>{t=t||{};const{pathEnv:r,pathExt:n,pathExtExe:s}=fe(e,t),i=[];for(let o=0;o<r.length;o++){const a=r[o],c=/^".*"$/.test(a)?a.slice(1,-1):a,l=ae.join(c,e),u=!c&&/^\.[\\\/]/.test(e)?e.slice(0,2)+l:l;for(let e=0;e<n.length;e++){const r=u+n[e];try{if(le.sync(r,{pathExt:s})){if(!t.all)return r;i.push(r)}}catch(e){}}}if(t.all&&i.length)return i;if(t.nothrow)return null;throw ue(e)};var de=G.exports,me=v.default.spawn,_e=y.default,ye=m.default,ge=Y,ve=g.default,Ee=pe,we={},be=process.env.PEMJS_TMPDIR||ge();function Se(e,t){we[e]=t}function xe(e){return we[e]||null}function ke(e,t,r){var n=xe("pathOpenSSL")||process.env.OPENSSL_BIN||"openssl";!function(e,t){Ee(e,(function(r){if(r)return t(new Error("Could not find openssl on your system on this path: "+e));t()}))}(n,(function(s){if(s)return r(s);var i=me(n,e),o="",a=t?Buffer.alloc(0):"";i.stdout.on("data",(function(e){t?a=Buffer.concat([a,e]):a+=e.toString("binary")})),i.stderr.on("data",(function(e){o+=e.toString("binary")}));var c=2,l=-1,u=!1,f=function(t){if(!u)return t?(u=!0,r(t)):--c<1?(u=!0,l&&(2!==l||""!==o&&!/depth lookup: unable to/.test(o))?r(new Error("Invalid openssl exit code: "+l+"\n% openssl "+e.join(" ")+"\n"+o),l):r(null,l,a,o)):void 0};i.on("error",f),i.on("exit",(function(e){l=e,f()})),i.on("close",(function(){a=t?a:Buffer.from(a,"binary").toString("utf-8"),o=Buffer.from(o,"binary").toString("utf-8"),f()}))}))}function Te(e,t,r,n){n||"function"!=typeof r||(n=r,r=!1);var s,i,o,a=[],c=[];if(t)for(t=[].concat(t),i=0;i<e.length;i++)"--TMPFILE--"===e[i]&&(s=_e.join(be,ve.randomBytes(20).toString("hex")),a.push({path:s,contents:t.shift()}),e[i]=s,c.push(s));for(i=0;i<a.length;i++)o=a[i],ye.writeFileSync(o.path,o.contents);ke(e,r,(function(e,t,r,s){de.deleteTempFiles(c,(function(i){n(e||i,t,r,s)}))}))}ke(["version"],!1,(function(e,t,r,n){var s=(String(r)+"\n"+String(n)+"\n"+String(e)).match(/^LibreSSL/i);Se("openSslVersion",(s&&s[0]?"LibreSSL":"openssl").toUpperCase())}));var Pe={exec:function(e,t,r,n){n||"function"!=typeof r||(n=r,r=!1),Te(e,r,(function(e,r,s,i){var o,a;return e?n(e):(o=(o=s.match(new RegExp("\\-+BEGIN "+t+"\\-+$","m")))?o.index:-1,"EC PARAMETERS"===t&&(t="EC PRIVATE KEY"),a=(a=s.match(new RegExp("^\\-+END "+t+"\\-+","m")))?a.index+a[0].length:-1,o>=0&&a>=0?n(null,s.substring(o,a)):n(new Error(t+" not found from openssl output:\n---stdout---\n"+s+"\n---stderr---\n"+i+"\ncode: "+r)))}))},execBinary:function(e,t,r){r||"function"!=typeof t||(r=t,t=!1),Te(e,t,!0,(function(e,t,n,s){return e?r(e):r(null,n)}))},spawn:ke,spawnWrapper:Te,set:Se,get:xe},Ce={},Ne=Pe,Oe=G.exports;Ce.PEM2DER=function(e,t,r,n){n||"function"!=typeof r||(n=r,r="x509");var s=[r,"-outform","der","-in",e,"-out",t];Ne.spawnWrapper(s,!1,(function(e,t){e?n(e):n(null,0===t)}))},Ce.DER2PEM=function(e,t,r,n){n||"function"!=typeof r||(n=r,r="x509");var s=[r,"-inform","der","-in",e,"-out",t];Ne.spawnWrapper(s,!1,(function(e,t){e?n(e):n(null,0===t)}))},Ce.PEM2P7B=function(e,t,r){var n=["crl2pkcs7","-nocrl","-certfile",e.cert,"-out",t];e.ca&&(Array.isArray(e.ca)||(e.ca=[e.ca]),e.ca.forEach((function(e){n.push("-certfile"),n.push(e)}))),Ne.spawnWrapper(n,!1,(function(e,t){e?r(e):r(null,0===t)}))},Ce.P7B2PEM=function(e,t,r){var n=["pkcs7","-print_certs","-in",e,"-out",t];Ne.spawnWrapper(n,!1,(function(e,t){e?r(e):r(null,0===t)}))},Ce.PEM2PFX=function(e,t,r,n){var s=["pkcs12","-export","-out",t,"-inkey",e.key,"-in",e.cert];e.ca&&(Array.isArray(e.ca)||(e.ca=[e.ca]),e.ca.forEach((function(e){s.push("-certfile"),s.push(e)})));var i=[];Oe.createPasswordFile({cipher:"",password:r,passType:"in"},s,i),Oe.createPasswordFile({cipher:"",password:r,passType:"out"},s,i),Ne.spawnWrapper(s,!1,(function(e,t){Oe.deleteTempFiles(i,(function(r){!function(e){e?n(e):n(null,0===t)}(e||r)}))}))},Ce.PFX2PEM=function(e,t,r,n){var s=["pkcs12","-in",e,"-out",t,"-nodes"],i=[];Oe.createPasswordFile({cipher:"",password:r,passType:"in"},s,i),Oe.createPasswordFile({cipher:"",password:r,passType:"out"},s,i),Ne.spawnWrapper(s,!1,(function(e,t){Oe.deleteTempFiles(i,(function(r){!function(e){e?n(e):n(null,0===t)}(e||r)}))}))},Ce.P7B2PFX=function(e,t,r,n){var s=e.cert.replace(/\.[^.]+$/,".cer"),i=["pkcs7","-print_certs","-in",e.cert,"-out",s];Ne.spawnWrapper(i,!1,(function(i,o){if(i)n(i);else{var a=["pkcs12","-export","-in",s,"-inkey",e.key,"-out",t];e.ca&&(Array.isArray(e.ca)||(e.ca=[e.ca]),e.ca.forEach((function(e){a.push("-certfile"),a.push(e)})));var c=[s];Oe.createPasswordFile({cipher:"",password:r,passType:"in"},a,c),Oe.createPasswordFile({cipher:"",password:r,passType:"out"},a,c),Ne.spawnWrapper(a,!1,(function(e,t){Oe.deleteTempFiles(c,(function(r){!function(e){e?n(e):n(null,0===t)}(e||r)}))}))}}))};const{promisify:Ie}=K;var Ae=_.default,Le=G.exports,Re=Pe;q.createPrivateKey=Fe,q.createDhparam=Me,q.createEcparam=Ue,q.createCSR=Be,q.createCertificate=We,q.readCertificateInfo=je,q.getPublicKey=De,q.getFingerprint=$e,q.getModulus=qe,q.getDhparamInfo=Ke,q.createPkcs12=Ge,q.readPkcs12=Ve,q.verifySigningChain=He,q.checkCertificate=ze,q.checkPkcs12=Ye,q.config=function(e){Object.keys(e).forEach((function(t){Re.set(t,e[t])}))},q.convert=Ce;function Fe(e,t,r){r||t||"function"!=typeof e?!r&&e&&"function"==typeof t&&(r=t,t={}):(r=e,e=void 0,t={}),e=Number(e)||2048;var n=["genrsa"],s=[];t&&t.cipher&&-1!==Number(Le.ciphers.indexOf(t.cipher))&&t.password&&Le.createPasswordFile({cipher:t.cipher,password:t.password,passType:"out"},n,s),n.push(e),Re.exec(n,"RSA PRIVATE KEY",(function(e,t){Le.deleteTempFiles(s,(function(n){!function(e){if(e)return r(e);r(null,{key:t})}(e||n)}))}))}function Me(e,t){t||"function"!=typeof e||(t=e,e=void 0);var r=["dhparam","-outform","PEM",e=Number(e)||512];Re.exec(r,"DH PARAMETERS",(function(e,r){return e?t(e):t(null,{dhparam:r})}))}function Ue(e,t,r,n){n||void 0!==r||t||"function"!=typeof e?!n&&void 0===r&&e&&"function"==typeof t?(n=t,t=void 0):!n&&"function"==typeof r&&e&&t&&(n=r,r=void 0):(n=e,e=void 0);var s=["ecparam","-name",e=e||"secp256k1","-genkey","-param_enc",t=t||"explicit"],i="EC PARAMETERS";(r=r||!1)&&(s.push("-noout"),i="EC PRIVATE KEY"),Re.exec(s,i,(function(e,t){return e?n(e):n(null,{ecparam:t})}))}function Be(e,t){if(t||"function"!=typeof e||(t=e,e=void 0),(e=e||{}).commonName&&(Ae.isIPv4(e.commonName)||Ae.isIPv6(e.commonName))&&(e.altNames?-1===e.altNames.indexOf(e.commonName)&&(e.altNames=e.altNames.concat([e.commonName])):e.altNames=[e.commonName]),e.clientKey){var r=["req","-new","-"+(e.hash||"sha256")];e.csrConfigFile?(r.push("-config"),r.push(e.csrConfigFile)):(r.push("-subj"),r.push(function(e){var t={C:(e=e||{}).country||e.C,ST:e.state||e.ST,L:e.locality||e.L,O:e.organization||e.O,OU:e.organizationUnit||e.OU,CN:e.commonName||e.CN||"localhost",DC:e.dc||e.DC||"",emailAddress:e.emailAddress};return Object.keys(t).map((function(e){if(t[e]){if("object"==typeof t[e]&&t[e].length>=1){var r="";return t[e].map((function(t){r+="/"+e+"="+t.replace(/[^\w .*\-,@']+/g," ").trim()})),r}return"/"+e+"="+t[e].replace(/[^\w .*\-,@']+/g," ").trim()}})).join("")}(e))),r.push("-key"),r.push("--TMPFILE--");var n=[e.clientKey],s=null;if(e.altNames&&Array.isArray(e.altNames)&&e.altNames.length){r.push("-extensions"),r.push("v3_req"),r.push("-config"),r.push("--TMPFILE--");for(var i=[],o=0;o<e.altNames.length;o++)i.push((Ae.isIP(e.altNames[o])?"IP":"DNS")+"."+(o+1)+" = "+e.altNames[o]);n.push(s=["[req]","req_extensions = v3_req","distinguished_name = req_distinguished_name","[v3_req]","subjectAltName = @alt_names","[alt_names]",i.join("\n"),"[req_distinguished_name]","commonName = Common Name","commonName_max = 64"].join("\n"))}else e.config&&(s=e.config);var a=[];e.clientKeyPassword&&Le.createPasswordFile({cipher:"",password:e.clientKeyPassword,passType:"in"},r,a),Re.exec(r,"CERTIFICATE REQUEST",n,(function(r,n){Le.deleteTempFiles(a,(function(i){!function(r){if(r)return t(r);t(null,{csr:n,config:s,clientKey:e.clientKey})}(r||i)}))}))}else Fe(e.keyBitsize||2048,(function(r,n){if(r)return t(r);e.clientKey=n.key,Be(e,t)}))}function We(e,t){if(t||"function"!=typeof e||(t=e,e=void 0),(e=e||{}).csr){if(e.clientKey||(e.clientKey=""),!e.serviceKey){if(!e.selfSigned)return void Fe(e.keyBitsize||2048,(function(r,n){if(r)return t(r);e.serviceKey=n.key,We(e,t)}));e.serviceKey=e.clientKey}je(e.csr,(function(r,n){if(r)return t(r);var s=["x509","-req","-"+(e.hash||"sha256"),"-days",Number(e.days)||"365","-in","--TMPFILE--"],i=[e.csr],o=[];if(e.serviceCertificate?(s.push("-CA"),s.push("--TMPFILE--"),s.push("-CAkey"),s.push("--TMPFILE--"),e.serial?(s.push("-set_serial"),Le.isNumber(e.serial)?s.push("0x"+("0000000000000000000000000000000000000000"+e.serial.toString(16)).slice(-40)):Le.isHex(e.serial)?(e.serial.startsWith("0x")&&(e.serial=e.serial.substring(2,e.serial.length)),s.push("0x"+("0000000000000000000000000000000000000000"+e.serial).slice(-40))):s.push("0x"+("0000000000000000000000000000000000000000"+Le.toHex(e.serial)).slice(-40))):(s.push("-CAcreateserial"),e.serialFile&&(s.push("-CAserial"),s.push(e.serialFile+".srl"))),e.serviceKeyPassword&&Le.createPasswordFile({cipher:"",password:e.serviceKeyPassword,passType:"in"},s,o),i.push(e.serviceCertificate),i.push(e.serviceKey)):(s.push("-signkey"),s.push("--TMPFILE--"),e.serviceKeyPassword&&Le.createPasswordFile({cipher:"",password:e.serviceKeyPassword,passType:"in"},s,o),i.push(e.serviceKey)),e.config)s.push("-extensions"),s.push("v3_req"),s.push("-extfile"),s.push("--TMPFILE--"),i.push(e.config);else if(e.extFile)s.push("-extfile"),s.push(e.extFile);else{var a=[];if(n&&n.san){for(var c=0;c<n.san.dns.length;c++)a.push("DNS."+(c+1)+" = "+n.san.dns[c]);for(var l=0;l<n.san.ip.length;l++)a.push("IP."+(l+1)+" = "+n.san.ip[l]);for(var u=0;u<n.san.email.length;u++)a.push("email."+(u+1)+" = "+n.san.email[u]);s.push("-extensions"),s.push("v3_req"),s.push("-extfile"),s.push("--TMPFILE--"),i.push(["[v3_req]","subjectAltName = @alt_names","[alt_names]",a.join("\n")].join("\n"))}}e.clientKeyPassword&&Le.createPasswordFile({cipher:"",password:e.clientKeyPassword,passType:"in"},s,o),Re.exec(s,"CERTIFICATE",i,(function(r,n){Le.deleteTempFiles(o,(function(s){!function(r){if(r)return t(r);var s={csr:e.csr,clientKey:e.clientKey,certificate:n,serviceKey:e.serviceKey};t(null,s)}(r||s)}))}))}))}else Be(e,(function(r,n){if(r)return t(r);e.csr=n.csr,e.config=n.config,e.clientKey=n.clientKey,We(e,t)}))}function De(e,t){var r;t||"function"!=typeof e||(t=e,e=void 0),r=(e=(e||"").toString()).match(/BEGIN(\sNEW)? CERTIFICATE REQUEST/)?["req","-in","--TMPFILE--","-pubkey","-noout"]:e.match(/BEGIN RSA PRIVATE KEY/)||e.match(/BEGIN PRIVATE KEY/)?["rsa","-in","--TMPFILE--","-pubout"]:["x509","-in","--TMPFILE--","-pubkey","-noout"],Re.exec(r,"PUBLIC KEY",e,(function(e,r){return e?t(e):t(null,{publicKey:r})}))}function je(e,t){t||"function"!=typeof e||(t=e,e=void 0);var r=[(e=(e||"").toString()).match(/BEGIN(\sNEW)? CERTIFICATE REQUEST/)?"req":"x509","-noout","-nameopt","RFC2253,sep_multiline,space_eq,-esc_msb,utf8","-text","-in","--TMPFILE--"];Re.spawnWrapper(r,e,(function(e,r,n,s){return e?t(e):s?t(s):function(e,t){try{var r,n,s,i;e=(e||"").toString();var o,a,c,l={issuer:{}},u={};if((r=e.match(/\s*Serial Number:\r?\n?\s*([^\r\n]*)\r?\n\s*\b/))&&r.length>1&&(l.serial=r[1]),(n=e.match(/\s*Subject:\r?\n(\s*(([a-zA-Z0-9.]+)\s=\s[^\r\n]+\r?\n))*\s*\b/))&&n.length>1){if(s=Je(n=n[0],/\s([a-zA-Z0-9.]+)\s=\s([^\r\n].*)/g))for(c=0;c<s.length;c++)(a=s[c][1].trim()).match("(C|ST|L|O|OU|CN|emailAddress|DC)")||""===a||(l[a]=s[c][2].trim());s=n.match(/\sC\s=\s([^\r\n].*?)[\r\n]/),l.country=s&&s[1]||"",s=n.match(/\sST\s=\s([^\r\n].*?)[\r\n]/),l.state=s&&s[1]||"",s=n.match(/\sL\s=\s([^\r\n].*?)[\r\n]/),l.locality=s&&s[1]||"",s=Je(n,/\sO\s=\s([^\r\n].*)/g),l.organization=s?s.length>1?s.sort((function(e,t){var r=e[1].toUpperCase(),n=t[1].toUpperCase();return n>r?-1:r>n?1:0})).sort((function(e,t){return e[1].length-t[1].length})).map((function(e){return e[1]})):s[0][1]:"",s=Je(n,/\sOU\s=\s([^\r\n].*)/g),l.organizationUnit=s?s.length>1?s.sort((function(e,t){var r=e[1].toUpperCase(),n=t[1].toUpperCase();return n>r?-1:r>n?1:0})).sort((function(e,t){return e[1].length-t[1].length})).map((function(e){return e[1]})):s[0][1]:"",s=Je(n,/\sCN\s=\s([^\r\n].*)/g),l.commonName=s?s.length>1?s.sort((function(e,t){var r=e[1].toUpperCase(),n=t[1].toUpperCase();return n>r?-1:r>n?1:0})).sort((function(e,t){return e[1].length-t[1].length})).map((function(e){return e[1]})):s[0][1]:"",s=Je(n,/emailAddress\s=\s([^\r\n].*)/g),l.emailAddress=s?s.length>1?s.sort((function(e,t){var r=e[1].toUpperCase(),n=t[1].toUpperCase();return n>r?-1:r>n?1:0})).sort((function(e,t){return e[1].length-t[1].length})).map((function(e){return e[1]})):s[0][1]:"",s=Je(n,/\sDC\s=\s([^\r\n].*)/g),l.dc=s?s.length>1?s.sort((function(e,t){var r=e[1].toUpperCase(),n=t[1].toUpperCase();return n>r?-1:r>n?1:0})).sort((function(e,t){return e[1].length-t[1].length})).map((function(e){return e[1]})):s[0][1]:""}if((i=e.match(/\s*Issuer:\r?\n(\s*([a-zA-Z0-9.]+)\s=\s[^\r\n].*\r?\n)*\s*\b/))&&i.length>1){for(s=Je(i=i[0],/\s([a-zA-Z0-9.]+)\s=\s([^\r\n].*)/g),c=0;c<s.length;c++)(a=s[c][1].toString()).match("(C|ST|L|O|OU|CN|emailAddress|DC)")||(l.issuer[a]=s[c][2].toString());s=i.match(/\sC\s=\s([^\r\n].*?)[\r\n]/),l.issuer.country=s&&s[1]||"",s=i.match(/\sST\s=\s([^\r\n].*?)[\r\n]/),l.issuer.state=s&&s[1]||"",s=i.match(/\sL\s=\s([^\r\n].*?)[\r\n]/),l.issuer.locality=s&&s[1]||"",s=Je(i,/\sO\s=\s([^\r\n].*)/g),l.issuer.organization=s?s.length>1?s.sort((function(e,t){var r=e[1].toUpperCase(),n=t[1].toUpperCase();return n>r?-1:r>n?1:0})).sort((function(e,t){return e[1].length-t[1].length})).map((function(e){return e[1]})):s[0][1]:"",s=Je(i,/\sOU\s=\s([^\r\n].*)/g),l.issuer.organizationUnit=s?s.length>1?s.sort((function(e,t){var r=e[1].toUpperCase(),n=t[1].toUpperCase();return n>r?-1:r>n?1:0})).sort((function(e,t){return e[1].length-t[1].length})).map((function(e){return e[1]})):s[0][1]:"",s=Je(i,/\sCN\s=\s([^\r\n].*)/g),l.issuer.commonName=s?s.length>1?s.sort((function(e,t){var r=e[1].toUpperCase(),n=t[1].toUpperCase();return n>r?-1:r>n?1:0})).sort((function(e,t){return e[1].length-t[1].length})).map((function(e){return e[1]})):s[0][1]:"",s=Je(i,/\sDC\s=\s([^\r\n].*)/g),l.issuer.dc=s?s.length>1?s.sort((function(e,t){var r=e[1].toUpperCase(),n=t[1].toUpperCase();return n>r?-1:r>n?1:0})).sort((function(e,t){return e[1].length-t[1].length})).map((function(e){return e[1]})):s[0][1]:""}(o=e.match(/X509v3 Subject Alternative Name: \r?\n([^\r\n]*)\r?\n/))&&o.length>1&&(o=o[1].trim()+"\n",l.san={},s=Xe("DNS:([^,\\r\\n].*?)[,\\r\\n\\s]",o),l.san.dns=s||"",s=Xe("IP Address:([^,\\r\\n].*?)[,\\r\\n\\s]",o),l.san.ip=s||"",s=Xe("email:([^,\\r\\n].*?)[,\\r\\n\\s]",o),l.san.email=s||""),(s=e.match(/Not Before\s?:\s?([^\r\n]*)\r?\n/))&&s.length>1&&(u.start=Date.parse(s&&s[1]||"")),(s=e.match(/Not After\s?:\s?([^\r\n]*)\r?\n/))&&s.length>1&&(u.end=Date.parse(s&&s[1]||"")),u.start&&u.end&&(l.validity=u),(s=e.match(/Signature Algorithm: ([^\r\n]*)\r?\n/))&&s.length>1&&(l.signatureAlgorithm=s&&s[1]||""),(s=e.match(/Public[ -]Key: ([^\r\n]*)\r?\n/))&&s.length>1&&(l.publicKeySize=(s&&s[1]||"").replace(/[()]/g,"")),(s=e.match(/Public Key Algorithm: ([^\r\n]*)\r?\n/))&&s.length>1&&(l.publicKeyAlgorithm=s&&s[1]||""),t(null,l)}catch(e){t(e)}}(n,t)}))}function qe(e,t,r,n){n||r||"function"!=typeof t?!n&&r&&"function"==typeof r&&(n=r,r=!1):(n=t,t=void 0,r=!1),r&&"md5"!==r&&(r=!1);var s=[(e=Buffer.isBuffer(e)&&e.toString()||e).match(/BEGIN(\sNEW)? CERTIFICATE REQUEST/)?"req":e.match(/BEGIN RSA PRIVATE KEY/)||e.match(/BEGIN PRIVATE KEY/)?"rsa":"x509","-noout","-modulus","-in","--TMPFILE--"],i=[];t&&Le.createPasswordFile({cipher:"",password:t,passType:"in"},s,i),Re.spawnWrapper(s,e,(function(e,t,s,o){Le.deleteTempFiles(i,(function(t){!function(e){if(e)return n(e);var t=s.match(/Modulus=([0-9a-fA-F]+)$/m);t?n(null,{modulus:r?j(r)(t[1]):t[1]}):n(new Error("No modulus"))}(e||t||o)}))}))}function Ke(e,t){e=Buffer.isBuffer(e)&&e.toString()||e;Re.spawnWrapper(["dhparam","-text","-in","--TMPFILE--"],e,(function(e,r,n,s){if(e)return t(e);if(s)return t(s);var i={},o=n.match(/Parameters: \((\d+) bit\)/);o&&(i.size=Number(o[1]));var a="";return n.split("\n").forEach((function(e){/\s+([0-9a-f][0-9a-f]:)+[0-9a-f]?[0-9a-f]?/g.test(e)&&(a+=e.trim())})),a&&(i.prime=a),o||a?t(null,i):t(new Error("No DH info found"))}))}function $e(e,t,r){r||"function"!=typeof t||(r=t,t=void 0);var n=["x509","-in","--TMPFILE--","-fingerprint","-noout","-"+(t=t||"sha1")];Re.spawnWrapper(n,e,(function(e,t,n,s){if(e)return r(e);if(s)return r(s);var i=n.match(/Fingerprint=([0-9a-fA-F:]+)$/m);return i?r(null,{fingerprint:i[1]}):r(new Error("No fingerprint"))}))}function Ge(e,t,r,n,s){s||"function"!=typeof n||(s=n,n={});var i=["pkcs12","-export"],o=[];n.cipher&&n.clientKeyPassword&&Le.createPasswordFile({cipher:n.cipher,password:n.clientKeyPassword,passType:"in"},i,o),Le.createPasswordFile({cipher:"",password:r,passType:"word"},i,o),i.push("-in"),i.push("--TMPFILE--"),i.push("-inkey"),i.push("--TMPFILE--");var a=[t,e];n.certFiles&&(a.push(n.certFiles.join("")),i.push("-certfile"),i.push("--TMPFILE--")),Re.execBinary(i,a,(function(e,t){Le.deleteTempFiles(o,(function(r){var n;(n=e||r)?s(n):s(null,{pkcs12:t})}))}))}function Ve(e,t,r){r||"function"!=typeof t||(r=t,t={}),t.p12Password=t.p12Password||"";var n=[],s=[],i=["pkcs12","-in",e];Le.createPasswordFile({cipher:"",password:t.p12Password,passType:"in"},i,s),Buffer.isBuffer(e)&&(n=[e],i[2]="--TMPFILE--"),t.clientKeyPassword?Le.createPasswordFile({cipher:"",password:t.clientKeyPassword,passType:"out"},i,s):i.push("-nodes"),Re.execBinary(i,n,(function(e,n){Le.deleteTempFiles(s,(function(s){!function(e){var s={};if(e&&-1!==e.message.indexOf("No such file or directory")&&(e.code="ENOENT"),!e){var i=Ze(n,"-----BEGIN CERTIFICATE-----","-----END CERTIFICATE-----");if(s.cert=i.shift(),s.ca=i,s.key=Ze(n,"-----BEGIN PRIVATE KEY-----","-----END PRIVATE KEY-----").pop(),s.key)return Re.exec(["rsa","-in","--TMPFILE--"],"RSA PRIVATE KEY",[s.key],(function(e,t){return s.key=t,r(e,s)}));t.clientKeyPassword?s.key=Ze(n,"-----BEGIN ENCRYPTED PRIVATE KEY-----","-----END ENCRYPTED PRIVATE KEY-----").pop():s.key=Ze(n,"-----BEGIN RSA PRIVATE KEY-----","-----END RSA PRIVATE KEY-----").pop()}r(e,s)}(e||s)}))}))}function ze(e,t,r){var n,s=[];r||"function"!=typeof t||(r=t,t=void 0),e=(e||"").toString(),n=e.match(/BEGIN(\sNEW)? CERTIFICATE REQUEST/)?["req","-text","-noout","-verify","-in","--TMPFILE--"]:e.match(/BEGIN RSA PRIVATE KEY/)||e.match(/BEGIN PRIVATE KEY/)?["rsa","-noout","-check","-in","--TMPFILE--"]:["x509","-text","-noout","-in","--TMPFILE--"],t&&Le.createPasswordFile({cipher:"",password:t,passType:"in"},n,s),Re.spawnWrapper(n,e,(function(e,t,i,o){Le.deleteTempFiles(s,(function(t){!function(e){if(e&&"verify OK"!==e.toString().trim())return r(e);var t;t="rsa"===n[0]?/^Rsa key ok$/i.test(i.trim()):/Signature Algorithm/im.test(i);r(null,t)}(e||t||o)}))}))}function Ye(e,t,r){r||"function"!=typeof t||(r=t,t="");var n=[],s=[],i=["pkcs12","-info","-in",e,"-noout","-maciter","-nodes"];Le.createPasswordFile({cipher:"",password:t,passType:"in"},i,s),Buffer.isBuffer(e)&&(n=[e],i[3]="--TMPFILE--"),Re.spawnWrapper(i,n,(function(e,t,n,i){Le.deleteTempFiles(s,(function(t){!function(e){if(e)return r(e);r(null,/MAC verified OK/im.test(i)||!/MAC verified OK/im.test(i)&&!/Mac verify error/im.test(i))}(e||t)}))}))}function He(e,t,r){r||"function"!=typeof t||(r=t,t=void 0),Array.isArray(e)||(e=[e]),Array.isArray(t)||void 0===t||""!==t&&(t=[t]);var n=[];void 0!==t&&n.push(t.join("\n")),n.push(e.join("\n"));var s=["verify"];void 0!==t&&(s.push("-CAfile"),s.push("--TMPFILE--")),s.push("--TMPFILE--"),Re.spawnWrapper(s,n,(function(e,t,n,s){if(e)return r(e);r(null,": OK"===n.trim().slice(-4))}))}function Je(e,t){var r=[];return e.replace(t,(function(){var e=[].slice.call(arguments,0),t=e.splice(-2);e.index=t[0],e.input=t[1],r.push(e)})),r.length?r:null}function Xe(e,t){for(var r,n,s=new RegExp(e,"g"),i=t.match(s)||[],o=[],a=0;a<i.length;a++)r=new RegExp(e),n=i[a].match(r),o.push(n[1]);return o}function Ze(e,t,r){Buffer.isBuffer(e)&&(e=e.toString("utf8"));var n=[];if(!e)return n;for(var s=e.indexOf(t);-1!==s;){var i=(e=e.substring(s)).indexOf(r);if(-1===i)break;i+=r.length,n.push(e.substring(0,i)),s=e.indexOf(t,i)}return n}q.promisified={createPrivateKey:Ie(Fe),createDhparam:Ie(Me),createEcparam:Ie(Ue),createCSR:Ie(Be),createCertificate:Ie(We),readCertificateInfo:Ie(je),getPublicKey:Ie(De),getFingerprint:Ie($e),getModulus:Ie(qe),getDhparamInfo:Ie(Ke),createPkcs12:Ie(Ge),readPkcs12:Ie(Ve),verifySigningChain:Ie(He),checkCertificate:Ie(ze),checkPkcs12:Ie(Ye)};var Qe={exports:{}};
|
||
/*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */!function(e,t){!function(r){var n=t,s=e&&e.exports==n&&e,i="object"==typeof D&&D;i.global!==i&&i.window!==i||(r=i);var o=function(e){this.message=e};(o.prototype=new Error).name="InvalidCharacterError";var a=function(e){throw new o(e)},c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=/[\t\n\f\r ]/g,u={encode:function(e){e=String(e),/[^\0-\xFF]/.test(e)&&a("The string to be encoded contains characters outside of the Latin1 range.");for(var t,r,n,s,i=e.length%3,o="",l=-1,u=e.length-i;++l<u;)t=e.charCodeAt(l)<<16,r=e.charCodeAt(++l)<<8,n=e.charCodeAt(++l),o+=c.charAt((s=t+r+n)>>18&63)+c.charAt(s>>12&63)+c.charAt(s>>6&63)+c.charAt(63&s);return 2==i?(t=e.charCodeAt(l)<<8,r=e.charCodeAt(++l),o+=c.charAt((s=t+r)>>10)+c.charAt(s>>4&63)+c.charAt(s<<2&63)+"="):1==i&&(s=e.charCodeAt(l),o+=c.charAt(s>>2)+c.charAt(s<<4&63)+"=="),o},decode:function(e){var t=(e=String(e).replace(l,"")).length;t%4==0&&(t=(e=e.replace(/==?$/,"")).length),(t%4==1||/[^+a-zA-Z0-9/]/.test(e))&&a("Invalid character: the string to be decoded is not correctly encoded.");for(var r,n,s=0,i="",o=-1;++o<t;)n=c.indexOf(e.charAt(o)),r=s%4?64*r+n:n,s++%4&&(i+=String.fromCharCode(255&r>>(-2*s&6)));return i},version:"1.0.0"};if(n&&!n.nodeType)if(s)s.exports=u;else for(var f in u)u.hasOwnProperty(f)&&(n[f]=u[f]);else r.base64=u}(D)}(Qe,Qe.exports);var et={exports:{}},tt={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}};const{EMPTY_BUFFER:rt}=tt;function nt(e,t){if(0===e.length)return rt;if(1===e.length)return e[0];const r=Buffer.allocUnsafe(t);let n=0;for(let t=0;t<e.length;t++){const s=e[t];r.set(s,n),n+=s.length}return n<t?r.slice(0,n):r}function st(e,t,r,n,s){for(let i=0;i<s;i++)r[n+i]=e[i]^t[3&i]}function it(e,t){for(let r=0;r<e.length;r++)e[r]^=t[3&r]}function ot(e){return e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function at(e){if(at.readOnly=!0,Buffer.isBuffer(e))return e;let t;return e instanceof ArrayBuffer?t=Buffer.from(e):ArrayBuffer.isView(e)?t=Buffer.from(e.buffer,e.byteOffset,e.byteLength):(t=Buffer.from(e),at.readOnly=!1),t}try{const e=require("bufferutil");et.exports={concat:nt,mask(t,r,n,s,i){i<48?st(t,r,n,s,i):e.mask(t,r,n,s,i)},toArrayBuffer:ot,toBuffer:at,unmask(t,r){t.length<32?it(t,r):e.unmask(t,r)}}}catch(e){et.exports={concat:nt,mask:st,toArrayBuffer:ot,toBuffer:at,unmask:it}}const ct=Symbol("kDone"),lt=Symbol("kRun");var ut=class{constructor(e){this[ct]=()=>{this.pending--,this[lt]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[lt]()}[lt](){if(this.pending!==this.concurrency&&this.jobs.length){const e=this.jobs.shift();this.pending++,e(this[ct])}}};const ft=x.default,ht=et.exports,pt=ut,{kStatusCode:dt}=tt,mt=Buffer.from([0,0,255,255]),_t=Symbol("permessage-deflate"),yt=Symbol("total-length"),gt=Symbol("callback"),vt=Symbol("buffers"),Et=Symbol("error");let wt;var bt=class{constructor(e,t,r){if(this._maxPayload=0|r,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,!wt){const e=void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10;wt=new pt(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[gt];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,r=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(!r)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(r.server_no_context_takeover=!0),t.clientNoContextTakeover&&(r.client_no_context_takeover=!0),"number"==typeof t.serverMaxWindowBits&&(r.server_max_window_bits=t.serverMaxWindowBits),"number"==typeof t.clientMaxWindowBits?r.client_max_window_bits=t.clientMaxWindowBits:!0!==r.client_max_window_bits&&!1!==t.clientMaxWindowBits||delete r.client_max_window_bits,r}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 r=e[t];if(r.length>1)throw new Error(`Parameter "${t}" must have only a single value`);if(r=r[0],"client_max_window_bits"===t){if(!0!==r){const e=+r;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${r}`);r=e}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${t}": ${r}`)}else if("server_max_window_bits"===t){const e=+r;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${r}`);r=e}else{if("client_no_context_takeover"!==t&&"server_no_context_takeover"!==t)throw new Error(`Unknown parameter "${t}"`);if(!0!==r)throw new TypeError(`Invalid value for parameter "${t}": ${r}`)}e[t]=r}))})),e}decompress(e,t,r){wt.add((n=>{this._decompress(e,t,((e,t)=>{n(),r(e,t)}))}))}compress(e,t,r){wt.add((n=>{this._compress(e,t,((e,t)=>{n(),r(e,t)}))}))}_decompress(e,t,r){const n=this._isServer?"client":"server";if(!this._inflate){const e=`${n}_max_window_bits`,t="number"!=typeof this.params[e]?ft.Z_DEFAULT_WINDOWBITS:this.params[e];this._inflate=ft.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[_t]=this,this._inflate[yt]=0,this._inflate[vt]=[],this._inflate.on("error",kt),this._inflate.on("data",xt)}this._inflate[gt]=r,this._inflate.write(e),t&&this._inflate.write(mt),this._inflate.flush((()=>{const e=this._inflate[Et];if(e)return this._inflate.close(),this._inflate=null,void r(e);const s=ht.concat(this._inflate[vt],this._inflate[yt]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[yt]=0,this._inflate[vt]=[],t&&this.params[`${n}_no_context_takeover`]&&this._inflate.reset()),r(null,s)}))}_compress(e,t,r){const n=this._isServer?"server":"client";if(!this._deflate){const e=`${n}_max_window_bits`,t="number"!=typeof this.params[e]?ft.Z_DEFAULT_WINDOWBITS:this.params[e];this._deflate=ft.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[yt]=0,this._deflate[vt]=[],this._deflate.on("data",St)}this._deflate[gt]=r,this._deflate.write(e),this._deflate.flush(ft.Z_SYNC_FLUSH,(()=>{if(!this._deflate)return;let e=ht.concat(this._deflate[vt],this._deflate[yt]);t&&(e=e.slice(0,e.length-4)),this._deflate[gt]=null,this._deflate[yt]=0,this._deflate[vt]=[],t&&this.params[`${n}_no_context_takeover`]&&this._deflate.reset(),r(null,e)}))}};function St(e){this[vt].push(e),this[yt]+=e.length}function xt(e){this[yt]+=e.length,this[_t]._maxPayload<1||this[yt]<=this[_t]._maxPayload?this[vt].push(e):(this[Et]=new RangeError("Max payload size exceeded"),this[Et].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[Et][dt]=1009,this.removeListener("data",xt),this.reset())}function kt(e){this[_t]._inflate=null,e[dt]=1007,this[gt](e)}var Tt={exports:{}};const Pt=[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];function Ct(e){return e>=1e3&&e<=1014&&1004!==e&&1005!==e&&1006!==e||e>=3e3&&e<=4999}function Nt(e){const t=e.length;let r=0;for(;r<t;)if(0==(128&e[r]))r++;else if(192==(224&e[r])){if(r+1===t||128!=(192&e[r+1])||192==(254&e[r]))return!1;r+=2}else if(224==(240&e[r])){if(r+2>=t||128!=(192&e[r+1])||128!=(192&e[r+2])||224===e[r]&&128==(224&e[r+1])||237===e[r]&&160==(224&e[r+1]))return!1;r+=3}else{if(240!=(248&e[r]))return!1;if(r+3>=t||128!=(192&e[r+1])||128!=(192&e[r+2])||128!=(192&e[r+3])||240===e[r]&&128==(240&e[r+1])||244===e[r]&&e[r+1]>143||e[r]>244)return!1;r+=4}return!0}try{const e=require("utf-8-validate");Tt.exports={isValidStatusCode:Ct,isValidUTF8:t=>t.length<150?Nt(t):e(t),tokenChars:Pt}}catch(e){Tt.exports={isValidStatusCode:Ct,isValidUTF8:Nt,tokenChars:Pt}}const{Writable:Ot}=b.default,It=bt,{BINARY_TYPES:At,EMPTY_BUFFER:Lt,kStatusCode:Rt,kWebSocket:Ft}=tt,{concat:Mt,toArrayBuffer:Ut,unmask:Bt}=et.exports,{isValidStatusCode:Wt,isValidUTF8:Dt}=Tt.exports;var jt=class extends Ot{constructor(e={}){super(),this._binaryType=e.binaryType||At[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=0|e.maxPayload,this._skipUTF8Validation=!!e.skipUTF8Validation,this[Ft]=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._state=0,this._loop=!1}_write(e,t,r){if(8===this._opcode&&0==this._state)return r();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(r)}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]=t.slice(e),t.slice(0,e)}const t=Buffer.allocUnsafe(e);do{const r=this._buffers[0],n=t.length-e;e>=r.length?t.set(this._buffers.shift(),n):(t.set(new Uint8Array(r.buffer,r.byteOffset,e),n),this._buffers[0]=r.slice(e)),e-=r.length}while(e>0);return t}startLoop(e){let t;this._loop=!0;do{switch(this._state){case 0:t=this.getInfo();break;case 1:t=this.getPayloadLength16();break;case 2:t=this.getPayloadLength64();break;case 3:this.getMask();break;case 4:t=this.getData(e);break;default:return void(this._loop=!1)}}while(this._loop);e(t)}getInfo(){if(this._bufferedBytes<2)return void(this._loop=!1);const e=this.consume(2);if(0!=(48&e[0]))return this._loop=!1,qt(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");const t=64==(64&e[0]);if(t&&!this._extensions[It.extensionName])return this._loop=!1,qt(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._fin=128==(128&e[0]),this._opcode=15&e[0],this._payloadLength=127&e[1],0===this._opcode){if(t)return this._loop=!1,qt(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(!this._fragmented)return this._loop=!1,qt(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 this._loop=!1,qt(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");this._compressed=t}else{if(!(this._opcode>7&&this._opcode<11))return this._loop=!1,qt(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");if(!this._fin)return this._loop=!1,qt(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");if(t)return this._loop=!1,qt(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._payloadLength>125)return this._loop=!1,qt(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==(128&e[1]),this._isServer){if(!this._masked)return this._loop=!1,qt(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK")}else if(this._masked)return this._loop=!1,qt(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");if(126===this._payloadLength)this._state=1;else{if(127!==this._payloadLength)return this.haveLength();this._state=2}}getPayloadLength16(){if(!(this._bufferedBytes<2))return this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength();this._loop=!1}getPayloadLength64(){if(this._bufferedBytes<8)return void(this._loop=!1);const e=this.consume(8),t=e.readUInt32BE(0);return t>Math.pow(2,21)-1?(this._loop=!1,qt(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH")):(this._payloadLength=t*Math.pow(2,32)+e.readUInt32BE(4),this.haveLength())}haveLength(){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return this._loop=!1,qt(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");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=Lt;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength)return void(this._loop=!1);t=this.consume(this._payloadLength),this._masked&&0!=(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])&&Bt(t,this._mask)}return this._opcode>7?this.controlMessage(t):this._compressed?(this._state=5,void this.decompress(t,e)):(t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage())}decompress(e,t){this._extensions[It.extensionName].decompress(e,this._fin,((e,r)=>{if(e)return t(e);if(r.length){if(this._messageLength+=r.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return t(qt(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));this._fragments.push(r)}const n=this.dataMessage();if(n)return t(n);this.startLoop(t)}))}dataMessage(){if(this._fin){const e=this._messageLength,t=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],2===this._opcode){let r;r="nodebuffer"===this._binaryType?Mt(t,e):"arraybuffer"===this._binaryType?Ut(Mt(t,e)):t,this.emit("message",r,!0)}else{const r=Mt(t,e);if(!this._skipUTF8Validation&&!Dt(r))return this._loop=!1,qt(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("message",r,!1)}}this._state=0}controlMessage(e){if(8===this._opcode)if(this._loop=!1,0===e.length)this.emit("conclude",1005,Lt),this.end();else{if(1===e.length)return qt(RangeError,"invalid payload length 1",!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");{const t=e.readUInt16BE(0);if(!Wt(t))return qt(RangeError,`invalid status code ${t}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");const r=e.slice(2);if(!this._skipUTF8Validation&&!Dt(r))return qt(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("conclude",t,r),this.end()}}else 9===this._opcode?this.emit("ping",e):this.emit("pong",e);this._state=0}};function qt(e,t,r,n,s){const i=new e(r?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(i,qt),i.code=s,i[Rt]=n,i}const{randomFillSync:Kt}=g.default,$t=bt,{EMPTY_BUFFER:Gt}=tt,{isValidStatusCode:Vt}=Tt.exports,{mask:zt,toBuffer:Yt}=et.exports,Ht=Symbol("kByteLength"),Jt=Buffer.alloc(4);class Xt{constructor(e,t,r){this._extensions=t||{},r&&(this._generateMask=r,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._deflating=!1,this._queue=[]}static frame(e,t){let r,n,s=!1,i=2,o=!1;t.mask&&(r=t.maskBuffer||Jt,t.generateMask?t.generateMask(r):Kt(r,0,4),o=0==(r[0]|r[1]|r[2]|r[3]),i=6),"string"==typeof e?n=t.mask&&!o||void 0===t[Ht]?(e=Buffer.from(e)).length:t[Ht]:(n=e.length,s=t.mask&&t.readOnly&&!o);let a=n;n>=65536?(i+=8,a=127):n>125&&(i+=2,a=126);const c=Buffer.allocUnsafe(s?n+i:i);return c[0]=t.fin?128|t.opcode:t.opcode,t.rsv1&&(c[0]|=64),c[1]=a,126===a?c.writeUInt16BE(n,2):127===a&&(c[2]=c[3]=0,c.writeUIntBE(n,4,6)),t.mask?(c[1]|=128,c[i-4]=r[0],c[i-3]=r[1],c[i-2]=r[2],c[i-1]=r[3],o?[c,e]:s?(zt(e,r,c,i,n),[c]):(zt(e,r,e,0,n),[c,e])):[c,e]}close(e,t,r,n){let s;if(void 0===e)s=Gt;else{if("number"!=typeof e||!Vt(e))throw new TypeError("First argument must be a valid error code number");if(void 0!==t&&t.length){const r=Buffer.byteLength(t);if(r>123)throw new RangeError("The message must not be greater than 123 bytes");s=Buffer.allocUnsafe(2+r),s.writeUInt16BE(e,0),"string"==typeof t?s.write(t,2):s.set(t,2)}else s=Buffer.allocUnsafe(2),s.writeUInt16BE(e,0)}const i={[Ht]:s.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._deflating?this.enqueue([this.dispatch,s,!1,i,n]):this.sendFrame(Xt.frame(s,i),n)}ping(e,t,r){let n,s;if("string"==typeof e?(n=Buffer.byteLength(e),s=!1):(n=(e=Yt(e)).length,s=Yt.readOnly),n>125)throw new RangeError("The data size must not be greater than 125 bytes");const i={[Ht]:n,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:s,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,i,r]):this.sendFrame(Xt.frame(e,i),r)}pong(e,t,r){let n,s;if("string"==typeof e?(n=Buffer.byteLength(e),s=!1):(n=(e=Yt(e)).length,s=Yt.readOnly),n>125)throw new RangeError("The data size must not be greater than 125 bytes");const i={[Ht]:n,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:s,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,i,r]):this.sendFrame(Xt.frame(e,i),r)}send(e,t,r){const n=this._extensions[$t.extensionName];let s,i,o=t.binary?2:1,a=t.compress;if("string"==typeof e?(s=Buffer.byteLength(e),i=!1):(s=(e=Yt(e)).length,i=Yt.readOnly),this._firstFragment?(this._firstFragment=!1,a&&n&&n.params[n._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(a=s>=n._threshold),this._compress=a):(a=!1,o=0),t.fin&&(this._firstFragment=!0),n){const n={[Ht]:s,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:o,readOnly:i,rsv1:a};this._deflating?this.enqueue([this.dispatch,e,this._compress,n,r]):this.dispatch(e,this._compress,n,r)}else this.sendFrame(Xt.frame(e,{[Ht]:s,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:o,readOnly:i,rsv1:!1}),r)}dispatch(e,t,r,n){if(!t)return void this.sendFrame(Xt.frame(e,r),n);const s=this._extensions[$t.extensionName];this._bufferedBytes+=r[Ht],this._deflating=!0,s.compress(e,r.fin,((e,t)=>{if(this._socket.destroyed){const e=new Error("The socket was closed while data was being compressed");"function"==typeof n&&n(e);for(let t=0;t<this._queue.length;t++){const r=this._queue[t],n=r[r.length-1];"function"==typeof n&&n(e)}}else this._bufferedBytes-=r[Ht],this._deflating=!1,r.readOnly=!1,this.sendFrame(Xt.frame(t,r),n),this.dequeue()}))}dequeue(){for(;!this._deflating&&this._queue.length;){const e=this._queue.shift();this._bufferedBytes-=e[3][Ht],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][Ht],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)}}var Zt=Xt;const{kForOnEventAttribute:Qt,kListener:er}=tt,tr=Symbol("kCode"),rr=Symbol("kData"),nr=Symbol("kError"),sr=Symbol("kMessage"),ir=Symbol("kReason"),or=Symbol("kTarget"),ar=Symbol("kType"),cr=Symbol("kWasClean");class lr{constructor(e){this[or]=null,this[ar]=e}get target(){return this[or]}get type(){return this[ar]}}Object.defineProperty(lr.prototype,"target",{enumerable:!0}),Object.defineProperty(lr.prototype,"type",{enumerable:!0});class ur extends lr{constructor(e,t={}){super(e),this[tr]=void 0===t.code?0:t.code,this[ir]=void 0===t.reason?"":t.reason,this[cr]=void 0!==t.wasClean&&t.wasClean}get code(){return this[tr]}get reason(){return this[ir]}get wasClean(){return this[cr]}}Object.defineProperty(ur.prototype,"code",{enumerable:!0}),Object.defineProperty(ur.prototype,"reason",{enumerable:!0}),Object.defineProperty(ur.prototype,"wasClean",{enumerable:!0});class fr extends lr{constructor(e,t={}){super(e),this[nr]=void 0===t.error?null:t.error,this[sr]=void 0===t.message?"":t.message}get error(){return this[nr]}get message(){return this[sr]}}Object.defineProperty(fr.prototype,"error",{enumerable:!0}),Object.defineProperty(fr.prototype,"message",{enumerable:!0});class hr extends lr{constructor(e,t={}){super(e),this[rr]=void 0===t.data?null:t.data}get data(){return this[rr]}}Object.defineProperty(hr.prototype,"data",{enumerable:!0});const pr={addEventListener(e,t,r={}){let n;if("message"===e)n=function(e,r){const n=new hr("message",{data:r?e:e.toString()});n[or]=this,t.call(this,n)};else if("close"===e)n=function(e,r){const n=new ur("close",{code:e,reason:r.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});n[or]=this,t.call(this,n)};else if("error"===e)n=function(e){const r=new fr("error",{error:e,message:e.message});r[or]=this,t.call(this,r)};else{if("open"!==e)return;n=function(){const e=new lr("open");e[or]=this,t.call(this,e)}}n[Qt]=!!r[Qt],n[er]=t,r.once?this.once(e,n):this.on(e,n)},removeEventListener(e,t){for(const r of this.listeners(e))if(r[er]===t&&!r[Qt]){this.removeListener(e,r);break}}};var dr={CloseEvent:ur,ErrorEvent:fr,Event:lr,EventTarget:pr,MessageEvent:hr};const{tokenChars:mr}=Tt.exports;function _r(e,t,r){void 0===e[t]?e[t]=[r]:e[t].push(r)}var yr={format:function(e){return Object.keys(e).map((t=>{let r=e[t];return Array.isArray(r)||(r=[r]),r.map((e=>[t].concat(Object.keys(e).map((t=>{let r=e[t];return Array.isArray(r)||(r=[r]),r.map((e=>!0===e?t:`${t}=${e}`)).join("; ")}))).join("; "))).join(", ")})).join(", ")},parse:function(e){const t=Object.create(null);let r,n,s=Object.create(null),i=!1,o=!1,a=!1,c=-1,l=-1,u=-1,f=0;for(;f<e.length;f++)if(l=e.charCodeAt(f),void 0===r)if(-1===u&&1===mr[l])-1===c&&(c=f);else if(0===f||32!==l&&9!==l){if(59!==l&&44!==l)throw new SyntaxError(`Unexpected character at index ${f}`);{if(-1===c)throw new SyntaxError(`Unexpected character at index ${f}`);-1===u&&(u=f);const n=e.slice(c,u);44===l?(_r(t,n,s),s=Object.create(null)):r=n,c=u=-1}}else-1===u&&-1!==c&&(u=f);else if(void 0===n)if(-1===u&&1===mr[l])-1===c&&(c=f);else if(32===l||9===l)-1===u&&-1!==c&&(u=f);else if(59===l||44===l){if(-1===c)throw new SyntaxError(`Unexpected character at index ${f}`);-1===u&&(u=f),_r(s,e.slice(c,u),!0),44===l&&(_r(t,r,s),s=Object.create(null),r=void 0),c=u=-1}else{if(61!==l||-1===c||-1!==u)throw new SyntaxError(`Unexpected character at index ${f}`);n=e.slice(c,f),c=u=-1}else if(o){if(1!==mr[l])throw new SyntaxError(`Unexpected character at index ${f}`);-1===c?c=f:i||(i=!0),o=!1}else if(a)if(1===mr[l])-1===c&&(c=f);else if(34===l&&-1!==c)a=!1,u=f;else{if(92!==l)throw new SyntaxError(`Unexpected character at index ${f}`);o=!0}else if(34===l&&61===e.charCodeAt(f-1))a=!0;else if(-1===u&&1===mr[l])-1===c&&(c=f);else if(-1===c||32!==l&&9!==l){if(59!==l&&44!==l)throw new SyntaxError(`Unexpected character at index ${f}`);{if(-1===c)throw new SyntaxError(`Unexpected character at index ${f}`);-1===u&&(u=f);let o=e.slice(c,u);i&&(o=o.replace(/\\/g,""),i=!1),_r(s,n,o),44===l&&(_r(t,r,s),s=Object.create(null),r=void 0),n=void 0,c=u=-1}}else-1===u&&(u=f);if(-1===c||a||32===l||9===l)throw new SyntaxError("Unexpected end of input");-1===u&&(u=f);const h=e.slice(c,u);return void 0===r?_r(t,h,s):(void 0===n?_r(s,h,!0):_r(s,n,i?h.replace(/\\/g,""):h),_r(t,r,s)),t}};const gr=E.default,vr=d.default,Er=p.default,wr=_.default,br=w.default,{randomBytes:Sr,createHash:xr}=g.default,{URL:kr}=S.default,Tr=bt,Pr=jt,Cr=Zt,{BINARY_TYPES:Nr,EMPTY_BUFFER:Or,GUID:Ir,kForOnEventAttribute:Ar,kListener:Lr,kStatusCode:Rr,kWebSocket:Fr,NOOP:Mr}=tt,{EventTarget:{addEventListener:Ur,removeEventListener:Br}}=dr,{format:Wr,parse:Dr}=yr,{toBuffer:jr}=et.exports,qr=["CONNECTING","OPEN","CLOSING","CLOSED"],Kr=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,$r=[8,13];class Gr extends gr{constructor(e,t,r){super(),this._binaryType=Nr[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Or,this._closeTimer=null,this._extensions={},this._paused=!1,this._protocol="",this._readyState=Gr.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?(r=t,t=[]):t=[t]),zr(this,e,t,r)):this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(e){Nr.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,r){const n=new Pr({binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation});this._sender=new Cr(e,this._extensions,r.generateMask),this._receiver=n,this._socket=e,n[Fr]=this,e[Fr]=this,n.on("conclude",Qr),n.on("drain",en),n.on("error",tn),n.on("message",nn),n.on("ping",sn),n.on("pong",on),e.setTimeout(0),e.setNoDelay(),t.length>0&&e.unshift(t),e.on("close",cn),e.on("data",ln),e.on("end",un),e.on("error",fn),this._readyState=Gr.OPEN,this.emit("open")}emitClose(){if(!this._socket)return this._readyState=Gr.CLOSED,void this.emit("close",this._closeCode,this._closeMessage);this._extensions[Tr.extensionName]&&this._extensions[Tr.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=Gr.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,t){if(this.readyState!==Gr.CLOSED){if(this.readyState===Gr.CONNECTING){const e="WebSocket was closed before the connection was established";return Xr(this,this._req,e)}this.readyState!==Gr.CLOSING?(this._readyState=Gr.CLOSING,this._sender.close(e,t,!this._isServer,(e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())})),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),3e4)):this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end()}}pause(){this.readyState!==Gr.CONNECTING&&this.readyState!==Gr.CLOSED&&(this._paused=!0,this._socket.pause())}ping(e,t,r){if(this.readyState===Gr.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(r=e,e=t=void 0):"function"==typeof t&&(r=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===Gr.OPEN?(void 0===t&&(t=!this._isServer),this._sender.ping(e||Or,t,r)):Zr(this,e,r)}pong(e,t,r){if(this.readyState===Gr.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(r=e,e=t=void 0):"function"==typeof t&&(r=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===Gr.OPEN?(void 0===t&&(t=!this._isServer),this._sender.pong(e||Or,t,r)):Zr(this,e,r)}resume(){this.readyState!==Gr.CONNECTING&&this.readyState!==Gr.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,t,r){if(this.readyState===Gr.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof t&&(r=t,t={}),"number"==typeof e&&(e=e.toString()),this.readyState!==Gr.OPEN)return void Zr(this,e,r);const n={binary:"string"!=typeof e,mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[Tr.extensionName]||(n.compress=!1),this._sender.send(e||Or,n,r)}terminate(){if(this.readyState!==Gr.CLOSED){if(this.readyState===Gr.CONNECTING){const e="WebSocket was closed before the connection was established";return Xr(this,this._req,e)}this._socket&&(this._readyState=Gr.CLOSING,this._socket.destroy())}}}Object.defineProperty(Gr,"CONNECTING",{enumerable:!0,value:qr.indexOf("CONNECTING")}),Object.defineProperty(Gr.prototype,"CONNECTING",{enumerable:!0,value:qr.indexOf("CONNECTING")}),Object.defineProperty(Gr,"OPEN",{enumerable:!0,value:qr.indexOf("OPEN")}),Object.defineProperty(Gr.prototype,"OPEN",{enumerable:!0,value:qr.indexOf("OPEN")}),Object.defineProperty(Gr,"CLOSING",{enumerable:!0,value:qr.indexOf("CLOSING")}),Object.defineProperty(Gr.prototype,"CLOSING",{enumerable:!0,value:qr.indexOf("CLOSING")}),Object.defineProperty(Gr,"CLOSED",{enumerable:!0,value:qr.indexOf("CLOSED")}),Object.defineProperty(Gr.prototype,"CLOSED",{enumerable:!0,value:qr.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach((e=>{Object.defineProperty(Gr.prototype,e,{enumerable:!0})})),["open","error","close","message"].forEach((e=>{Object.defineProperty(Gr.prototype,`on${e}`,{enumerable:!0,get(){for(const t of this.listeners(e))if(t[Ar])return t[Lr];return null},set(t){for(const t of this.listeners(e))if(t[Ar]){this.removeListener(e,t);break}"function"==typeof t&&this.addEventListener(e,t,{[Ar]:!0})}})})),Gr.prototype.addEventListener=Ur,Gr.prototype.removeEventListener=Br;var Vr=Gr;function zr(e,t,r,n){const s={protocolVersion:$r[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...n,createConnection:void 0,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:void 0,host:void 0,path:void 0,port:void 0};if(!$r.includes(s.protocolVersion))throw new RangeError(`Unsupported protocol version: ${s.protocolVersion} (supported versions: ${$r.join(", ")})`);let i;if(t instanceof kr)i=t,e._url=t.href;else{try{i=new kr(t)}catch(e){throw new SyntaxError(`Invalid URL: ${t}`)}e._url=t}const o="wss:"===i.protocol,a="ws+unix:"===i.protocol;let c;if("ws:"===i.protocol||o||a?a&&!i.pathname?c="The URL's pathname is empty":i.hash&&(c="The URL contains a fragment identifier"):c='The URL\'s protocol must be one of "ws:", "wss:", or "ws+unix:"',c){const t=new SyntaxError(c);if(0===e._redirects)throw t;return void Yr(e,t)}const l=o?443:80,u=Sr(16).toString("base64"),f=o?vr.get:Er.get,h=new Set;let p;if(s.createConnection=o?Jr:Hr,s.defaultPort=s.defaultPort||l,s.port=i.port||l,s.host=i.hostname.startsWith("[")?i.hostname.slice(1,-1):i.hostname,s.headers={"Sec-WebSocket-Version":s.protocolVersion,"Sec-WebSocket-Key":u,Connection:"Upgrade",Upgrade:"websocket",...s.headers},s.path=i.pathname+i.search,s.timeout=s.handshakeTimeout,s.perMessageDeflate&&(p=new Tr(!0!==s.perMessageDeflate?s.perMessageDeflate:{},!1,s.maxPayload),s.headers["Sec-WebSocket-Extensions"]=Wr({[Tr.extensionName]:p.offer()})),r.length){for(const e of r){if("string"!=typeof e||!Kr.test(e)||h.has(e))throw new SyntaxError("An invalid or duplicated subprotocol was specified");h.add(e)}s.headers["Sec-WebSocket-Protocol"]=r.join(",")}if(s.origin&&(s.protocolVersion<13?s.headers["Sec-WebSocket-Origin"]=s.origin:s.headers.Origin=s.origin),(i.username||i.password)&&(s.auth=`${i.username}:${i.password}`),a){const e=s.path.split(":");s.socketPath=e[0],s.path=e[1]}if(s.followRedirects){if(0===e._redirects){e._originalHost=i.host;const t=n&&n.headers;if(n={...n,headers:{}},t)for(const[e,r]of Object.entries(t))n.headers[e.toLowerCase()]=r}else i.host!==e._originalHost&&(delete s.headers.authorization,delete s.headers.cookie,delete s.headers.host,s.auth=void 0);s.auth&&!n.headers.authorization&&(n.headers.authorization="Basic "+Buffer.from(s.auth).toString("base64"))}let d=e._req=f(s);s.timeout&&d.on("timeout",(()=>{Xr(e,d,"Opening handshake has timed out")})),d.on("error",(t=>{null===d||d.aborted||(d=e._req=null,Yr(e,t))})),d.on("response",(i=>{const o=i.headers.location,a=i.statusCode;if(o&&s.followRedirects&&a>=300&&a<400){if(++e._redirects>s.maxRedirects)return void Xr(e,d,"Maximum redirects exceeded");let i;d.abort();try{i=new kr(o,t)}catch(t){const r=new SyntaxError(`Invalid URL: ${o}`);return void Yr(e,r)}zr(e,i,r,n)}else e.emit("unexpected-response",d,i)||Xr(e,d,`Unexpected server response: ${i.statusCode}`)})),d.on("upgrade",((t,r,n)=>{if(e.emit("upgrade",t),e.readyState!==Gr.CONNECTING)return;d=e._req=null;const i=xr("sha1").update(u+Ir).digest("base64");if(t.headers["sec-websocket-accept"]!==i)return void Xr(e,r,"Invalid Sec-WebSocket-Accept header");const o=t.headers["sec-websocket-protocol"];let a;if(void 0!==o?h.size?h.has(o)||(a="Server sent an invalid subprotocol"):a="Server sent a subprotocol but none was requested":h.size&&(a="Server sent no subprotocol"),a)return void Xr(e,r,a);o&&(e._protocol=o);const c=t.headers["sec-websocket-extensions"];if(void 0!==c){if(!p){return void Xr(e,r,"Server sent a Sec-WebSocket-Extensions header but no extension was requested")}let t;try{t=Dr(c)}catch(t){return void Xr(e,r,"Invalid Sec-WebSocket-Extensions header")}const n=Object.keys(t);if(1!==n.length||n[0]!==Tr.extensionName){return void Xr(e,r,"Server indicated an extension that was not requested")}try{p.accept(t[Tr.extensionName])}catch(t){return void Xr(e,r,"Invalid Sec-WebSocket-Extensions header")}e._extensions[Tr.extensionName]=p}e.setSocket(r,n,{generateMask:s.generateMask,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation})}))}function Yr(e,t){e._readyState=Gr.CLOSING,e.emit("error",t),e.emitClose()}function Hr(e){return e.path=e.socketPath,wr.connect(e)}function Jr(e){return e.path=void 0,e.servername||""===e.servername||(e.servername=wr.isIP(e.host)?"":e.host),br.connect(e)}function Xr(e,t,r){e._readyState=Gr.CLOSING;const n=new Error(r);Error.captureStackTrace(n,Xr),t.setHeader?(t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),t.once("abort",e.emitClose.bind(e)),e.emit("error",n)):(t.destroy(n),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function Zr(e,t,r){if(t){const r=jr(t).length;e._socket?e._sender._bufferedBytes+=r:e._bufferedAmount+=r}if(r){r(new Error(`WebSocket is not open: readyState ${e.readyState} (${qr[e.readyState]})`))}}function Qr(e,t){const r=this[Fr];r._closeFrameReceived=!0,r._closeMessage=t,r._closeCode=e,void 0!==r._socket[Fr]&&(r._socket.removeListener("data",ln),process.nextTick(an,r._socket),1005===e?r.close():r.close(e,t))}function en(){const e=this[Fr];e.isPaused||e._socket.resume()}function tn(e){const t=this[Fr];void 0!==t._socket[Fr]&&(t._socket.removeListener("data",ln),process.nextTick(an,t._socket),t.close(e[Rr])),t.emit("error",e)}function rn(){this[Fr].emitClose()}function nn(e,t){this[Fr].emit("message",e,t)}function sn(e){const t=this[Fr];t.pong(e,!t._isServer,Mr),t.emit("ping",e)}function on(e){this[Fr].emit("pong",e)}function an(e){e.resume()}function cn(){const e=this[Fr];let t;this.removeListener("close",cn),this.removeListener("data",ln),this.removeListener("end",un),e._readyState=Gr.CLOSING,this._readableState.endEmitted||e._closeFrameReceived||e._receiver._writableState.errorEmitted||null===(t=e._socket.read())||e._receiver.write(t),e._receiver.end(),this[Fr]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",rn),e._receiver.on("finish",rn))}function ln(e){this[Fr]._receiver.write(e)||this.pause()}function un(){const e=this[Fr];e._readyState=Gr.CLOSING,e._receiver.end(),this.end()}function fn(){const e=this[Fr];this.removeListener("error",fn),this.on("error",Mr),e&&(e._readyState=Gr.CLOSING,this.destroy())}const{Duplex:hn}=b.default;function pn(e){e.emit("close")}function dn(){!this.destroyed&&this._writableState.finished&&this.destroy()}function mn(e){this.removeListener("error",mn),this.destroy(),0===this.listenerCount("error")&&this.emit("error",e)}var _n=function(e,t){let r=!0;const n=new hn({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",(function(t,r){const s=!r&&n._readableState.objectMode?t.toString():t;n.push(s)||e.pause()})),e.once("error",(function(e){n.destroyed||(r=!1,n.destroy(e))})),e.once("close",(function(){n.destroyed||n.push(null)})),n._destroy=function(t,s){if(e.readyState===e.CLOSED)return s(t),void process.nextTick(pn,n);let i=!1;e.once("error",(function(e){i=!0,s(e)})),e.once("close",(function(){i||s(t),process.nextTick(pn,n)})),r&&e.terminate()},n._final=function(t){e.readyState!==e.CONNECTING?null!==e._socket&&(e._socket._writableState.finished?(t(),n._readableState.endEmitted&&n.destroy()):(e._socket.once("finish",(function(){t()})),e.close())):e.once("open",(function(){n._final(t)}))},n._read=function(){e.isPaused&&e.resume()},n._write=function(t,r,s){e.readyState!==e.CONNECTING?e.send(t,s):e.once("open",(function(){n._write(t,r,s)}))},n.on("end",dn),n.on("error",mn),n};const{tokenChars:yn}=Tt.exports;var gn={parse:function(e){const t=new Set;let r=-1,n=-1,s=0;for(;s<e.length;s++){const i=e.charCodeAt(s);if(-1===n&&1===yn[i])-1===r&&(r=s);else if(0===s||32!==i&&9!==i){if(44!==i)throw new SyntaxError(`Unexpected character at index ${s}`);{if(-1===r)throw new SyntaxError(`Unexpected character at index ${s}`);-1===n&&(n=s);const i=e.slice(r,n);if(t.has(i))throw new SyntaxError(`The "${i}" subprotocol is duplicated`);t.add(i),r=n=-1}}else-1===n&&-1!==r&&(n=s)}if(-1===r||-1!==n)throw new SyntaxError("Unexpected end of input");const i=e.slice(r,s);if(t.has(i))throw new SyntaxError(`The "${i}" subprotocol is duplicated`);return t.add(i),t}};const vn=E.default,En=p.default,{createHash:wn}=g.default,bn=yr,Sn=bt,xn=gn,kn=Vr,{GUID:Tn,kWebSocket:Pn}=tt,Cn=/^[+/0-9A-Za-z]{22}==$/;var Nn=class extends vn{constructor(e,t){if(super(),null==(e={maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:kn,...e}).port&&!e.server&&!e.noServer||null!=e.port&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(null!=e.port?(this._server=En.createServer(((e,t)=>{const r=En.STATUS_CODES[426];t.writeHead(426,{"Content-Length":r.length,"Content-Type":"text/plain"}),t.end(r)})),this._server.listen(e.port,e.host,e.backlog,t)):e.server&&(this._server=e.server),this._server){const e=this.emit.bind(this,"connection");this._removeListeners=function(e,t){for(const r of Object.keys(t))e.on(r,t[r]);return function(){for(const r of Object.keys(t))e.removeListener(r,t[r])}}(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(t,r,n)=>{this.handleUpgrade(t,r,n,e)}})}!0===e.perMessageDeflate&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(2===this._state)return e&&this.once("close",(()=>{e(new Error("The server is not running"))})),void process.nextTick(On,this);if(e&&this.once("close",e),1!==this._state)if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(On,this);else{const e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close((()=>{On(this)}))}}shouldHandle(e){if(this.options.path){const t=e.url.indexOf("?");if((-1!==t?e.url.slice(0,t):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,t,r,n){t.on("error",In);const s=void 0!==e.headers["sec-websocket-key"]&&e.headers["sec-websocket-key"],i=+e.headers["sec-websocket-version"];if("GET"!==e.method||"websocket"!==e.headers.upgrade.toLowerCase()||!s||!Cn.test(s)||8!==i&&13!==i||!this.shouldHandle(e))return An(t,400);const o=e.headers["sec-websocket-protocol"];let a=new Set;if(void 0!==o)try{a=xn.parse(o)}catch(e){return An(t,400)}const c=e.headers["sec-websocket-extensions"],l={};if(this.options.perMessageDeflate&&void 0!==c){const e=new Sn(this.options.perMessageDeflate,!0,this.options.maxPayload);try{const t=bn.parse(c);t[Sn.extensionName]&&(e.accept(t[Sn.extensionName]),l[Sn.extensionName]=e)}catch(e){return An(t,400)}}if(this.options.verifyClient){const o={origin:e.headers[""+(8===i?"sec-websocket-origin":"origin")],secure:!(!e.socket.authorized&&!e.socket.encrypted),req:e};if(2===this.options.verifyClient.length)return void this.options.verifyClient(o,((i,o,c,u)=>{if(!i)return An(t,o||401,c,u);this.completeUpgrade(l,s,a,e,t,r,n)}));if(!this.options.verifyClient(o))return An(t,401)}this.completeUpgrade(l,s,a,e,t,r,n)}completeUpgrade(e,t,r,n,s,i,o){if(!s.readable||!s.writable)return s.destroy();if(s[Pn])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>0)return An(s,503);const a=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${wn("sha1").update(t+Tn).digest("base64")}`],c=new this.options.WebSocket(null);if(r.size){const e=this.options.handleProtocols?this.options.handleProtocols(r,n):r.values().next().value;e&&(a.push(`Sec-WebSocket-Protocol: ${e}`),c._protocol=e)}if(e[Sn.extensionName]){const t=e[Sn.extensionName].params,r=bn.format({[Sn.extensionName]:[t]});a.push(`Sec-WebSocket-Extensions: ${r}`),c._extensions=e}this.emit("headers",a,n),s.write(a.concat("\r\n").join("\r\n")),s.removeListener("error",In),c.setSocket(s,i,{maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(c),c.on("close",(()=>{this.clients.delete(c),this._shouldEmitClose&&!this.clients.size&&process.nextTick(On,this)}))),o(c,n)}};function On(e){e._state=2,e.emit("close")}function In(){this.destroy()}function An(e,t,r,n){e.writable&&(r=r||En.STATUS_CODES[t],n={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(r),...n},e.write(`HTTP/1.1 ${t} ${En.STATUS_CODES[t]}\r\n`+Object.keys(n).map((e=>`${e}: ${n[e]}`)).join("\r\n")+"\r\n\r\n"+r)),e.removeListener("error",In),e.destroy()}const Ln=Vr;Ln.createWebSocketStream=_n,Ln.Server=Nn,Ln.Receiver=jt,Ln.Sender=Zt,Ln.WebSocket=Ln,Ln.WebSocketServer=Ln.Server;var Rn=Ln,Fn=require("child_process"),Mn=require("events"),Un=require("url"),Bn=Rn.Server,Wn="mpeg1video",Dn=!1,jn="drawtext=x=w-tw-100:y=100:fontcolor=white:fontsize=36:text="+decodeURIComponent(Qe.exports.decode("JUU1JThFJUJCJUU5JTk5JUE0JUU2JUIwJUI0JUU1JThEJUIwUVElRUYlQkMlOUE0MjEzNTQ1MzI="))+":box=1:boxcolor=black,scale=-1:-1,eq=",qn=["vcodec","c:v","-c:v","codec:v"],Kn=["-s","-b:v","scale","contrast","brightness","saturation","gamma"].concat(qn),$n=["scale","contrast","brightness","saturation","gamma"],Gn=function(e,t){switch(e){case"-s":if(t.includes("x")&&t.split("x")[0]&&t.split("x")[0]>0&&t.split("x")[1]&&t.split("x")[1]>0)return!0;break;case"vcodec":case"c:v":case"-c:v":case"codec:v":case"contrast":case"brightness":case"saturation":case"gamma":if(t)return!0;break;case"-b:v":if(t.endsWith("k"))return!0;break;case"scale":if(t.includes(":")&&t.split(":")[0]&&t.split(":")[1])return!0}},Vn=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&I(e,t)}(r,Mn.EventEmitter);var t=R(r);function r(e){var n;return T(this,r),N(A(n=t.call(this)),"exitCode",void 0),N(A(n),"additionalFlags",[]),N(A(n),"stream",null),N(A(n),"inputStreamStarted",!1),n.options=e,n.ffmpegPath=e.ffmpegPath||"ffmpeg",n.url=e.url,n.ffmpegOptions=e.ffmpegOptions,n.initMpeg2Muxer(),n}return C(r,[{key:"initMpeg2Muxer",value:function(){var e=this;if(this.ffmpegOptions)for(var t in this.ffmpegOptions)this.additionalFlags.push(t),""!==String(this.ffmpegOptions[t])&&this.additionalFlags.push(String(this.ffmpegOptions[t]));this.spawnOptions=["-rtsp_transport","tcp","-thread_queue_size","256","-i",this.url,"-f","mpegts"].concat(M(this.additionalFlags),["-codec:a","mp2",Dn?"-an":null,"-ar","44100","-ac","2","-nostats","-r","29.97","-"]),this.spawnOptions=this.spawnOptions.filter((function(e){return null!==e})),this.stream=Fn.spawn(this.ffmpegPath,this.spawnOptions,{detached:!1}),this.stream.on("error",(function(e,t){console.error("启动ffmpeg时出错,请确保你安装了ffmpeg,然后检查路径或者命令参数")})),this.stream.on("exit",(function(t,r){if(1===t)return console.error("***由于ffmpeg退出,ffmpeg启动不成功,请检查ffmpeg参数或相关情况或联系作者***"),e.exitCode=1,e.emit("exitWithError")})),this.stream.on("close",(function(t,r){return console.log("ffmpeg关闭,code:",t),e.emit("ffmpegClosed")})),this.inputStreamStarted=!0,this.stream.stdout.on("data",(function(t){return e.emit("mpeg2data",t)})),this.stream.stderr.on("data",(function(t){return e.emit("ffmpegStderr",t)}))}}]),r}(),zn=function(){function e(t){T(this,e),N(this,"freeTime",0),N(this,"isStreamWrap",!1),N(this,"clients",[]),N(this,"mpeg2Muxer",{instance:null,stream:null,data:null}),this.config=t,this.url=t.url}return C(e,[{key:"createStream",value:function(){var e=this;this.isStreamWrap||(console.log("创建一个新的ffmpeg子进程"),this.isStreamWrap=!0,this.mpeg2Muxer.instance=new Vn({ffmpegOptions:this.formatParams(this.config),url:this.url,ffmpegPath:"ffmpeg"}),this.mpeg2Muxer.stream=this.mpeg2Muxer.instance.stream,this.mpeg2Muxer.instance.on("mpeg2data",(function(t){e.broadcast(t)})),this.mpeg2Muxer.instance.on("exitWithError",(function(){})),this.mpeg2Muxer.instance.on("ffmpegClosed",(function(){e.destroy()})))}},{key:"formatParams",value:function(e){for(var t={"-codec:v":Wn,"-vf":jn},r=0,n=Object.entries(e);r<n.length;r++){var s=F(n[r],2),i=s[0],o=s[1];"wm"===i&&"0"===o&&(t["-vf"]="scale=-1:-1,eq="),Kn.includes(i)&&($n.includes(i)?"scale"===i?t["-vf"]=t["-vf"].replace(/scale=[x0-9\:\-]*/g,"scale=".concat(o)):t["-vf"]+="".concat(i,"=").concat(o,":"):qn.includes(i)?t["-codec:v"]=o:Gn(i,o)&&(t[i]=o))}return t}},{key:"destroy",value:function(){var e,t;null===(e=this.mpeg2Muxer.stream)||void 0===e||e.kill(),this.mpeg2Muxer.stream=null,null===(t=this.mpeg2Muxer.instance)||void 0===t||t.removeAllListeners(),this.mpeg2Muxer.instance=null,this.isStreamWrap=!1,this.dropAllClient()}},{key:"broadcast",value:function(e){var t,r=W(this.clients);try{for(r.s();!(t=r.n()).done;){var n=t.value;n.isSegment&&n.send(e)}}catch(e){r.e(e)}finally{r.f()}}},{key:"addClient",value:function(e){var t=this;e.once("close",(function(){t.dropClient(e)})),this.clients.push(e),this.isStreamWrap||this.createStream(),e.isSegment=!0}},{key:"dropClient",value:function(e){var t=this.clients.indexOf(e);e.isSegment=!1,e.terminate(),e=null,console.log("视频关闭,销毁一个client(ws句柄)"),t>-1&&this.clients.splice(t,1)}},{key:"dropAllClient",value:function(){var e,t=W(this.clients);try{for(t.s();!(e=t.n()).done;){var r=e.value;r.isSegment=!1,r.terminate()}}catch(e){t.e(e)}finally{t.f()}this.clients=[]}}]),e}(),Yn=function(){function e(t){var r=this;T(this,e),N(this,"channels",[]),t&&"boolean"==typeof t.wm&&!t.wm&&(jn="scale=-1:-1,eq="),t&&"string"==typeof t.vcodec&&t.vcodec.length>0&&(Wn=t.vcodec),t&&"boolean"==typeof t.audio&&!t.audio&&(Dn=!0),setInterval((function(){return r.checkFree()}),1e4);var n=p.default.createServer();if(t&&"object"===k(t.wss))if(console.log("wss启动中...."),t.wss.hasOwnProperty("pfx"))if(t.wss.hasOwnProperty("passphrase"))try{var s={pfx:m.default.readFileSync(t.wss.pfx),passphrase:m.default.readFileSync(t.wss.passphrase)};q.readPkcs12(s.pfx,{p12Password:s.passphrase},(function(e,t){n=d.default.createServer({cert:t.cert,key:t.key})}))}catch(e){console.error("--【读取pfx安全证书文件出错,wss启动失败,退回到ws;错误信息如下,有问题请联系我】--"),console.log(e)}else console.error("【wss启动失败;请传入正确的pfx文件指定密码:passphrase】");else if(t.wss.hasOwnProperty("cert"))if(t.wss.hasOwnProperty("key"))try{n=d.default.createServer({cert:m.default.readFileSync(t.wss.cert),key:m.default.readFileSync(t.wss.key)})}catch(e){console.error("--【读取cert安全证书文件出错,wss启动失败,退回到ws;错误信息如下,有问题请联系我】--"),console.log(e)}else console.error("【wss启动失败;请传入正确的安全证书私钥:key】");else console.error("【wss启动失败;请传入正确的安全证书公钥:cert】");this.wss=new Bn({server:n}),this.wss.on("connection",(function(e,t){var n=Un.parse(t.url,!0);if(n.query.url){var s=Qe.exports.decode(n.query.url.toString());n.query.url=s,r.registeClient(e,{url:s,options:n.query})}console.log("一个新的client(ws句柄)连接成功")})),n.listen(t&&t.port||9999)}return C(e,[{key:"registeClient",value:function(e,t){var r=this.getChannel(t.url);r||(r=this.createChannel(t.options,e)),r.addClient(e)}},{key:"getChannel",value:function(e){var t,r=W(this.channels);try{for(r.s();!(t=r.n()).done;){var n=t.value;if(n.url===e)return n}}catch(e){r.e(e)}finally{r.f()}return null}},{key:"createChannel",value:function(e,t){var r=new zn(e,t);return this.channels.push(r),r}},{key:"checkFree",value:function(){var e,t=W(this.channels);try{for(t.s();!(e=t.n()).done;){var r=e.value;r.clients.length>0?r.freeTime=0:r.freeTime+=10,r.freeTime>=60&&this.destroyedChannel(r)}}catch(e){t.e(e)}finally{t.f()}}},{key:"destroyedChannel",value:function(e){var t=this.channels.indexOf(e);t>-1&&(this.channels.splice(t,1),e.destroy())}}]),e}();N(Yn,"version","2.4.7"),module.exports=Yn;
|
||
//# sourceMappingURL=rtsp2web.min.js.map
|