diff --git a/.github/workflows/build-executable.yml b/.github/workflows/build-executable.yml index 55c973649..425f40127 100644 --- a/.github/workflows/build-executable.yml +++ b/.github/workflows/build-executable.yml @@ -79,6 +79,10 @@ jobs: - name: Building executable run: pyinstaller --clean -y --dist ./dist --workpath /tmp MMVCServerSIO.spec working-directory: ./server + - name: Copy utils + run: cp ./server/{force_gpu_clocks.bat,reset_gpu_clocks.bat} ./server/dist/ + shell: bash + if: matrix.os == 'windows-latest' && matrix.backend == 'cuda' - name: Pack artifact shell: bash run: | diff --git a/.github/workflows/make-release.yml b/.github/workflows/make-release.yml index d7afcc57a..abdc38437 100644 --- a/.github/workflows/make-release.yml +++ b/.github/workflows/make-release.yml @@ -118,6 +118,10 @@ jobs: - name: Building executable run: pyinstaller --clean -y --dist ./dist --workpath /tmp MMVCServerSIO.spec working-directory: ./server + - name: Copy utils + run: cp ./server/{force_gpu_clocks.bat,reset_gpu_clocks.bat} ./server/dist/ + shell: bash + if: matrix.os == 'windows-latest' && matrix.backend == 'cuda' - name: Pack artifact shell: bash run: | diff --git a/client/demo/dist/index.js b/client/demo/dist/index.js index 66aac672d..b27381a4d 100644 --- a/client/demo/dist/index.js +++ b/client/demo/dist/index.js @@ -1,2 +1,2 @@ /*! For license information please see index.js.LICENSE.txt */ -(()=>{var __webpack_modules__={504:function(module,__unused_webpack_exports,__webpack_require__){var t;"undefined"!=typeof self&&self,t=__WEBPACK_EXTERNAL_MODULE__8156__=>(()=>{var __webpack_modules__={1446:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AwsCrc32=void 0;var i=n(655),r=n(1359),a=n(4079),o=function(){function e(){this.crc32=new a.Crc32}return e.prototype.update=function(e){(0,r.isEmptyData)(e)||this.crc32.update((0,r.convertToBuffer)(e))},e.prototype.digest=function(){return i.__awaiter(this,void 0,void 0,(function(){return i.__generator(this,(function(e){return[2,(0,r.numToUint8)(this.crc32.digest())]}))}))},e.prototype.reset=function(){this.crc32=new a.Crc32},e}();t.AwsCrc32=o},4079:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AwsCrc32=t.Crc32=t.crc32=void 0;var i=n(655),r=n(1359);t.crc32=function(e){return(new a).update(e).digest()};var a=function(){function e(){this.checksum=4294967295}return e.prototype.update=function(e){var t,n;try{for(var r=i.__values(e),a=r.next();!a.done;a=r.next()){var s=a.value;this.checksum=this.checksum>>>8^o[255&(this.checksum^s)]}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}return this},e.prototype.digest=function(){return(4294967295^this.checksum)>>>0},e}();t.Crc32=a;var o=(0,r.uint32ArrayFrom)([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]),s=n(1446);Object.defineProperty(t,"AwsCrc32",{enumerable:!0,get:function(){return s.AwsCrc32}})},8229:(e,t,n)=>{"use strict";var i=n(8764).lW;Object.defineProperty(t,"__esModule",{value:!0}),t.convertToBuffer=void 0;var r=n(470),a=void 0!==i&&i.from?function(e){return i.from(e,"utf8")}:r.fromUtf8;t.convertToBuffer=function(e){return e instanceof Uint8Array?e:"string"==typeof e?a(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}},1359:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uint32ArrayFrom=t.numToUint8=t.isEmptyData=t.convertToBuffer=void 0;var i=n(8229);Object.defineProperty(t,"convertToBuffer",{enumerable:!0,get:function(){return i.convertToBuffer}});var r=n(701);Object.defineProperty(t,"isEmptyData",{enumerable:!0,get:function(){return r.isEmptyData}});var a=n(6251);Object.defineProperty(t,"numToUint8",{enumerable:!0,get:function(){return a.numToUint8}});var o=n(3340);Object.defineProperty(t,"uint32ArrayFrom",{enumerable:!0,get:function(){return o.uint32ArrayFrom}})},701:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isEmptyData=void 0,t.isEmptyData=function(e){return"string"==typeof e?0===e.length:0===e.byteLength}},6251:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.numToUint8=void 0,t.numToUint8=function(e){return new Uint8Array([(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])}},3340:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uint32ArrayFrom=void 0,t.uint32ArrayFrom=function(e){if(!Uint32Array.from){for(var t=new Uint32Array(e.length),n=0;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},6665:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},5470:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},969:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},5287:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isMsWindow=void 0;var n=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"];t.isMsWindow=function(e){if(function(e){return"MSInputMethodContext"in e&&"msCrypto"in e}(e)&&void 0!==e.msCrypto.subtle){var t=e.msCrypto,i=t.getRandomValues,r=t.subtle;return n.map((function(e){return r[e]})).concat(i).every((function(e){return"function"==typeof e}))}return!1}},87:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(655);i.__exportStar(n(8260),t),i.__exportStar(n(6665),t),i.__exportStar(n(5470),t),i.__exportStar(n(969),t),i.__exportStar(n(5287),t)},7333:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EMPTY_DATA_SHA_256=t.SHA_256_HMAC_ALGO=t.SHA_256_HASH=void 0,t.SHA_256_HASH={name:"SHA-256"},t.SHA_256_HMAC_ALGO={name:"HMAC",hash:t.SHA_256_HASH},t.EMPTY_DATA_SHA_256=new Uint8Array([227,176,196,66,152,252,28,20,154,251,244,200,153,111,185,36,39,174,65,228,100,155,147,76,164,149,153,27,120,82,184,85])},2769:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sha256=void 0;var i=n(3479),r=n(8889),a=n(3137),o=n(21),s=n(87),c=n(6495),l=n(2037),d=function(){function e(e){(0,o.supportsWebCrypto)((0,c.locateWindow)())?this.hash=new r.Sha256(e):(0,s.isMsWindow)((0,c.locateWindow)())?this.hash=new i.Sha256(e):this.hash=new a.Sha256(e)}return e.prototype.update=function(e,t){this.hash.update((0,l.convertToBuffer)(e))},e.prototype.digest=function(){return this.hash.digest()},e.prototype.reset=function(){this.hash.reset()},e}();t.Sha256=d},3479:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sha256=void 0;var i=n(8036),r=n(7333),a=n(470),o=n(6495),s=function(){function e(e){this.secret=e,this.reset()}return e.prototype.update=function(e){var t=this;(0,i.isEmptyData)(e)||(this.operation=this.operation.then((function(n){return n.onerror=function(){t.operation=Promise.reject(new Error("Error encountered updating hash"))},n.process(c(e)),n})),this.operation.catch((function(){})))},e.prototype.digest=function(){return this.operation.then((function(e){return new Promise((function(t,n){e.onerror=function(){n(new Error("Error encountered finalizing hash"))},e.oncomplete=function(){e.result&&t(new Uint8Array(e.result)),n(new Error("Error encountered finalizing hash"))},e.finish()}))}))},e.prototype.reset=function(){var e;this.secret?(this.operation=(e=this.secret,new Promise((function(t,n){var i=(0,o.locateWindow)().msCrypto.subtle.importKey("raw",c(e),r.SHA_256_HMAC_ALGO,!1,["sign"]);i.oncomplete=function(){i.result&&t(i.result),n(new Error("ImportKey completed without importing key."))},i.onerror=function(){n(new Error("ImportKey failed to import key."))}}))).then((function(e){return(0,o.locateWindow)().msCrypto.subtle.sign(r.SHA_256_HMAC_ALGO,e)})),this.operation.catch((function(){}))):this.operation=Promise.resolve((0,o.locateWindow)().msCrypto.subtle.digest("SHA-256"))},e}();function c(e){return"string"==typeof e?(0,a.fromUtf8)(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}t.Sha256=s},7643:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WebCryptoSha256=t.Ie11Sha256=void 0,n(655).__exportStar(n(2769),t);var i=n(3479);Object.defineProperty(t,"Ie11Sha256",{enumerable:!0,get:function(){return i.Sha256}});var r=n(8889);Object.defineProperty(t,"WebCryptoSha256",{enumerable:!0,get:function(){return r.Sha256}})},8036:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isEmptyData=void 0,t.isEmptyData=function(e){return"string"==typeof e?0===e.length:0===e.byteLength}},8889:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sha256=void 0;var i=n(2037),r=n(7333),a=n(6495),o=function(){function e(e){this.toHash=new Uint8Array(0),this.secret=e,this.reset()}return e.prototype.update=function(e){if(!(0,i.isEmptyData)(e)){var t=(0,i.convertToBuffer)(e),n=new Uint8Array(this.toHash.byteLength+t.byteLength);n.set(this.toHash,0),n.set(t,this.toHash.byteLength),this.toHash=n}},e.prototype.digest=function(){var e=this;return this.key?this.key.then((function(t){return(0,a.locateWindow)().crypto.subtle.sign(r.SHA_256_HMAC_ALGO,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):(0,i.isEmptyData)(this.toHash)?Promise.resolve(r.EMPTY_DATA_SHA_256):Promise.resolve().then((function(){return(0,a.locateWindow)().crypto.subtle.digest(r.SHA_256_HASH,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){var e=this;this.toHash=new Uint8Array(0),this.secret&&void 0!==this.secret&&(this.key=new Promise((function(t,n){(0,a.locateWindow)().crypto.subtle.importKey("raw",(0,i.convertToBuffer)(e.secret),r.SHA_256_HMAC_ALGO,!1,["sign"]).then(t,n)})),this.key.catch((function(){})))},e}();t.Sha256=o},9558:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RawSha256=void 0;var i=n(4750),r=function(){function e(){this.state=Int32Array.from(i.INIT),this.temp=new Int32Array(64),this.buffer=new Uint8Array(64),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}return e.prototype.update=function(e){if(this.finished)throw new Error("Attempted to update an already finished hash.");var t=0,n=e.byteLength;if(this.bytesHashed+=n,8*this.bytesHashed>i.MAX_HASHABLE_LENGTH)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;n>0;)this.buffer[this.bufferLength++]=e[t++],n--,this.bufferLength===i.BLOCK_SIZE&&(this.hashBuffer(),this.bufferLength=0)},e.prototype.digest=function(){if(!this.finished){var e=8*this.bytesHashed,t=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),n=this.bufferLength;if(t.setUint8(this.bufferLength++,128),n%i.BLOCK_SIZE>=i.BLOCK_SIZE-8){for(var r=this.bufferLength;r>>24&255,a[4*r+1]=this.state[r]>>>16&255,a[4*r+2]=this.state[r]>>>8&255,a[4*r+3]=this.state[r]>>>0&255;return a},e.prototype.hashBuffer=function(){for(var e=this.buffer,t=this.state,n=t[0],r=t[1],a=t[2],o=t[3],s=t[4],c=t[5],l=t[6],d=t[7],u=0;u>>17|f<<15)^(f>>>19|f<<13)^f>>>10,m=((f=this.temp[u-15])>>>7|f<<25)^(f>>>18|f<<14)^f>>>3;this.temp[u]=(h+this.temp[u-7]|0)+(m+this.temp[u-16]|0)}var p=(((s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7))+(s&c^~s&l)|0)+(d+(i.KEY[u]+this.temp[u]|0)|0)|0,g=((n>>>2|n<<30)^(n>>>13|n<<19)^(n>>>22|n<<10))+(n&r^n&a^r&a)|0;d=l,l=c,c=s,s=o+p|0,o=a,a=r,r=n,n=p+g|0}t[0]+=n,t[1]+=r,t[2]+=a,t[3]+=o,t[4]+=s,t[5]+=c,t[6]+=l,t[7]+=d},e}();t.RawSha256=r},4750:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MAX_HASHABLE_LENGTH=t.INIT=t.KEY=t.DIGEST_LENGTH=t.BLOCK_SIZE=void 0,t.BLOCK_SIZE=64,t.DIGEST_LENGTH=32,t.KEY=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),t.INIT=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],t.MAX_HASHABLE_LENGTH=Math.pow(2,53)-1},3137:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(655).__exportStar(n(3020),t)},3020:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sha256=void 0;var i=n(655),r=n(4750),a=n(9558),o=n(2037),s=function(){function e(e){this.secret=e,this.hash=new a.RawSha256,this.reset()}return e.prototype.update=function(e){if(!(0,o.isEmptyData)(e)&&!this.error)try{this.hash.update((0,o.convertToBuffer)(e))}catch(e){this.error=e}},e.prototype.digestSync=function(){if(this.error)throw this.error;return this.outer?(this.outer.finished||this.outer.update(this.hash.digest()),this.outer.digest()):this.hash.digest()},e.prototype.digest=function(){return i.__awaiter(this,void 0,void 0,(function(){return i.__generator(this,(function(e){return[2,this.digestSync()]}))}))},e.prototype.reset=function(){if(this.hash=new a.RawSha256,this.secret){this.outer=new a.RawSha256;var e=function(e){var t=(0,o.convertToBuffer)(e);if(t.byteLength>r.BLOCK_SIZE){var n=new a.RawSha256;n.update(t),t=n.digest()}var i=new Uint8Array(r.BLOCK_SIZE);return i.set(t),i}(this.secret),t=new Uint8Array(r.BLOCK_SIZE);t.set(e);for(var n=0;n{"use strict";var i=n(8764).lW;Object.defineProperty(t,"__esModule",{value:!0}),t.convertToBuffer=void 0;var r=n(470),a=void 0!==i&&i.from?function(e){return i.from(e,"utf8")}:r.fromUtf8;t.convertToBuffer=function(e){return e instanceof Uint8Array?e:"string"==typeof e?a(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}},2037:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uint32ArrayFrom=t.numToUint8=t.isEmptyData=t.convertToBuffer=void 0;var i=n(6867);Object.defineProperty(t,"convertToBuffer",{enumerable:!0,get:function(){return i.convertToBuffer}});var r=n(5355);Object.defineProperty(t,"isEmptyData",{enumerable:!0,get:function(){return r.isEmptyData}});var a=n(9921);Object.defineProperty(t,"numToUint8",{enumerable:!0,get:function(){return a.numToUint8}});var o=n(4935);Object.defineProperty(t,"uint32ArrayFrom",{enumerable:!0,get:function(){return o.uint32ArrayFrom}})},5355:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isEmptyData=void 0,t.isEmptyData=function(e){return"string"==typeof e?0===e.length:0===e.byteLength}},9921:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.numToUint8=void 0,t.numToUint8=function(e){return new Uint8Array([(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])}},4935:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uint32ArrayFrom=void 0,t.uint32ArrayFrom=function(e){if(!Uint32Array.from){for(var t=new Uint32Array(e.length),n=0;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RawSha256=void 0;var i=n(6532),r=function(){function e(){this.state=Int32Array.from(i.INIT),this.temp=new Int32Array(64),this.buffer=new Uint8Array(64),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}return e.prototype.update=function(e){if(this.finished)throw new Error("Attempted to update an already finished hash.");var t=0,n=e.byteLength;if(this.bytesHashed+=n,8*this.bytesHashed>i.MAX_HASHABLE_LENGTH)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;n>0;)this.buffer[this.bufferLength++]=e[t++],n--,this.bufferLength===i.BLOCK_SIZE&&(this.hashBuffer(),this.bufferLength=0)},e.prototype.digest=function(){if(!this.finished){var e=8*this.bytesHashed,t=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),n=this.bufferLength;if(t.setUint8(this.bufferLength++,128),n%i.BLOCK_SIZE>=i.BLOCK_SIZE-8){for(var r=this.bufferLength;r>>24&255,a[4*r+1]=this.state[r]>>>16&255,a[4*r+2]=this.state[r]>>>8&255,a[4*r+3]=this.state[r]>>>0&255;return a},e.prototype.hashBuffer=function(){for(var e=this.buffer,t=this.state,n=t[0],r=t[1],a=t[2],o=t[3],s=t[4],c=t[5],l=t[6],d=t[7],u=0;u>>17|f<<15)^(f>>>19|f<<13)^f>>>10,m=((f=this.temp[u-15])>>>7|f<<25)^(f>>>18|f<<14)^f>>>3;this.temp[u]=(h+this.temp[u-7]|0)+(m+this.temp[u-16]|0)}var p=(((s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7))+(s&c^~s&l)|0)+(d+(i.KEY[u]+this.temp[u]|0)|0)|0,g=((n>>>2|n<<30)^(n>>>13|n<<19)^(n>>>22|n<<10))+(n&r^n&a^r&a)|0;d=l,l=c,c=s,s=o+p|0,o=a,a=r,r=n,n=p+g|0}t[0]+=n,t[1]+=r,t[2]+=a,t[3]+=o,t[4]+=s,t[5]+=c,t[6]+=l,t[7]+=d},e}();t.RawSha256=r},6532:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MAX_HASHABLE_LENGTH=t.INIT=t.KEY=t.DIGEST_LENGTH=t.BLOCK_SIZE=void 0,t.BLOCK_SIZE=64,t.DIGEST_LENGTH=32,t.KEY=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),t.INIT=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],t.MAX_HASHABLE_LENGTH=Math.pow(2,53)-1},1938:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(655).__exportStar(n(5430),t)},5430:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sha256=void 0;var i=n(655),r=n(6532),a=n(914),o=n(7658),s=function(){function e(e){if(this.hash=new a.RawSha256,e){this.outer=new a.RawSha256;var t=function(e){var t=(0,o.convertToBuffer)(e);if(t.byteLength>r.BLOCK_SIZE){var n=new a.RawSha256;n.update(t),t=n.digest()}var i=new Uint8Array(r.BLOCK_SIZE);return i.set(t),i}(e),n=new Uint8Array(r.BLOCK_SIZE);n.set(t);for(var i=0;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(655).__exportStar(n(7787),t)},7787:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.supportsZeroByteGCM=t.supportsSubtleCrypto=t.supportsSecureRandom=t.supportsWebCrypto=void 0;var i=n(655),r=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"];function a(e){return"object"==typeof e&&"object"==typeof e.crypto&&"function"==typeof e.crypto.getRandomValues}function o(e){return e&&r.every((function(t){return"function"==typeof e[t]}))}t.supportsWebCrypto=function(e){return!(!a(e)||"object"!=typeof e.crypto.subtle)&&o(e.crypto.subtle)},t.supportsSecureRandom=a,t.supportsSubtleCrypto=o,t.supportsZeroByteGCM=function(e){return i.__awaiter(this,void 0,void 0,(function(){var t;return i.__generator(this,(function(n){switch(n.label){case 0:if(!o(e))return[2,!1];n.label=1;case 1:return n.trys.push([1,4,,5]),[4,e.generateKey({name:"AES-GCM",length:128},!1,["encrypt"])];case 2:return t=n.sent(),[4,e.encrypt({name:"AES-GCM",iv:new Uint8Array(Array(12)),additionalData:new Uint8Array(Array(16)),tagLength:128},t,new Uint8Array(0))];case 3:return[2,16===n.sent().byteLength];case 4:return n.sent(),[2,!1];case 5:return[2]}}))}))}},1106:(e,t,n)=>{"use strict";var i=n(8764).lW;Object.defineProperty(t,"__esModule",{value:!0}),t.convertToBuffer=void 0;var r=n(470),a=void 0!==i&&i.from?function(e){return i.from(e,"utf8")}:r.fromUtf8;t.convertToBuffer=function(e){return e instanceof Uint8Array?e:"string"==typeof e?a(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}},7658:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uint32ArrayFrom=t.numToUint8=t.isEmptyData=t.convertToBuffer=void 0;var i=n(1106);Object.defineProperty(t,"convertToBuffer",{enumerable:!0,get:function(){return i.convertToBuffer}});var r=n(4304);Object.defineProperty(t,"isEmptyData",{enumerable:!0,get:function(){return r.isEmptyData}});var a=n(2174);Object.defineProperty(t,"numToUint8",{enumerable:!0,get:function(){return a.numToUint8}});var o=n(1558);Object.defineProperty(t,"uint32ArrayFrom",{enumerable:!0,get:function(){return o.uint32ArrayFrom}})},4304:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isEmptyData=void 0,t.isEmptyData=function(e){return"string"==typeof e?0===e.length:0===e.byteLength}},2174:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.numToUint8=void 0,t.numToUint8=function(e){return new Uint8Array([(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])}},1558:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uint32ArrayFrom=void 0,t.uint32ArrayFrom=function(e){if(!Uint32Array.from){for(var t=new Uint32Array(e.length),n=0;n{"use strict";n.r(t),n.d(t,{$Command:()=>cn,AllowNotifications:()=>pi,AssociateChannelFlowCommand:()=>Ma,BadRequestException:()=>bi,BatchChannelMembershipsFilterSensitiveLog:()=>Bi,BatchCreateChannelMembershipCommand:()=>za,BatchCreateChannelMembershipResponseFilterSensitiveLog:()=>Ui,ChannelAssociatedWithFlowSummaryFilterSensitiveLog:()=>Wi,ChannelBanFilterSensitiveLog:()=>qi,ChannelBanSummaryFilterSensitiveLog:()=>$i,ChannelFilterSensitiveLog:()=>ji,ChannelFlowCallbackCommand:()=>xa,ChannelFlowCallbackRequestFilterSensitiveLog:()=>Yi,ChannelFlowFilterSensitiveLog:()=>Ki,ChannelFlowSummaryFilterSensitiveLog:()=>Xi,ChannelMembershipFilterSensitiveLog:()=>er,ChannelMembershipForAppInstanceUserSummaryFilterSensitiveLog:()=>nr,ChannelMembershipPreferencesFilterSensitiveLog:()=>rr,ChannelMembershipSummaryFilterSensitiveLog:()=>ar,ChannelMembershipType:()=>gi,ChannelMessageCallbackFilterSensitiveLog:()=>Qi,ChannelMessageFilterSensitiveLog:()=>or,ChannelMessagePersistenceType:()=>Ai,ChannelMessageStatus:()=>Ii,ChannelMessageSummaryFilterSensitiveLog:()=>sr,ChannelMessageType:()=>Ni,ChannelMode:()=>Ei,ChannelModeratedByAppInstanceUserSummaryFilterSensitiveLog:()=>cr,ChannelModeratorFilterSensitiveLog:()=>lr,ChannelModeratorSummaryFilterSensitiveLog:()=>dr,ChannelPrivacy:()=>Hi,ChannelSummaryFilterSensitiveLog:()=>tr,ChimeSDKMessaging:()=>wo,ChimeSDKMessagingClient:()=>hi,ChimeSDKMessagingServiceException:()=>mi,ConflictException:()=>yi,CreateChannelBanCommand:()=>ka,CreateChannelBanResponseFilterSensitiveLog:()=>hr,CreateChannelCommand:()=>Va,CreateChannelFlowCommand:()=>Ea,CreateChannelFlowRequestFilterSensitiveLog:()=>mr,CreateChannelMembershipCommand:()=>Ha,CreateChannelMembershipResponseFilterSensitiveLog:()=>pr,CreateChannelModeratorCommand:()=>_a,CreateChannelModeratorResponseFilterSensitiveLog:()=>gr,CreateChannelRequestFilterSensitiveLog:()=>fr,DeleteChannelBanCommand:()=>La,DeleteChannelCommand:()=>Ta,DeleteChannelFlowCommand:()=>Aa,DeleteChannelMembershipCommand:()=>Ia,DeleteChannelMessageCommand:()=>Na,DeleteChannelModeratorCommand:()=>Pa,DeleteMessagingStreamingConfigurationsCommand:()=>Oa,DescribeChannelBanCommand:()=>Ra,DescribeChannelBanResponseFilterSensitiveLog:()=>br,DescribeChannelCommand:()=>Da,DescribeChannelFlowCommand:()=>Fa,DescribeChannelFlowResponseFilterSensitiveLog:()=>yr,DescribeChannelMembershipCommand:()=>Ba,DescribeChannelMembershipForAppInstanceUserCommand:()=>Ua,DescribeChannelMembershipForAppInstanceUserResponseFilterSensitiveLog:()=>Cr,DescribeChannelMembershipResponseFilterSensitiveLog:()=>Sr,DescribeChannelModeratedByAppInstanceUserCommand:()=>ja,DescribeChannelModeratedByAppInstanceUserResponseFilterSensitiveLog:()=>wr,DescribeChannelModeratorCommand:()=>Wa,DescribeChannelModeratorResponseFilterSensitiveLog:()=>Mr,DescribeChannelResponseFilterSensitiveLog:()=>vr,DisassociateChannelFlowCommand:()=>qa,ErrorCode:()=>vi,ExpirationCriterion:()=>Vi,FallbackAction:()=>Li,ForbiddenException:()=>Si,GetChannelMembershipPreferencesCommand:()=>$a,GetChannelMembershipPreferencesResponseFilterSensitiveLog:()=>zr,GetChannelMessageCommand:()=>Ga,GetChannelMessageResponseFilterSensitiveLog:()=>xr,GetChannelMessageStatusCommand:()=>Ka,GetMessagingSessionEndpointCommand:()=>Ja,GetMessagingStreamingConfigurationsCommand:()=>Za,IdentityFilterSensitiveLog:()=>Fi,InvocationType:()=>_i,ListChannelBansCommand:()=>Qa,ListChannelBansRequestFilterSensitiveLog:()=>kr,ListChannelBansResponseFilterSensitiveLog:()=>Vr,ListChannelFlowsCommand:()=>Ya,ListChannelFlowsRequestFilterSensitiveLog:()=>Er,ListChannelFlowsResponseFilterSensitiveLog:()=>Hr,ListChannelMembershipsCommand:()=>Xa,ListChannelMembershipsForAppInstanceUserCommand:()=>eo,ListChannelMembershipsForAppInstanceUserRequestFilterSensitiveLog:()=>Tr,ListChannelMembershipsForAppInstanceUserResponseFilterSensitiveLog:()=>Ar,ListChannelMembershipsRequestFilterSensitiveLog:()=>_r,ListChannelMembershipsResponseFilterSensitiveLog:()=>Lr,ListChannelMessagesCommand:()=>to,ListChannelMessagesRequestFilterSensitiveLog:()=>Ir,ListChannelMessagesResponseFilterSensitiveLog:()=>Nr,ListChannelModeratorsCommand:()=>no,ListChannelModeratorsRequestFilterSensitiveLog:()=>Pr,ListChannelModeratorsResponseFilterSensitiveLog:()=>Or,ListChannelsAssociatedWithChannelFlowCommand:()=>io,ListChannelsAssociatedWithChannelFlowRequestFilterSensitiveLog:()=>Fr,ListChannelsAssociatedWithChannelFlowResponseFilterSensitiveLog:()=>Br,ListChannelsCommand:()=>ro,ListChannelsModeratedByAppInstanceUserCommand:()=>ao,ListChannelsModeratedByAppInstanceUserRequestFilterSensitiveLog:()=>Ur,ListChannelsModeratedByAppInstanceUserResponseFilterSensitiveLog:()=>jr,ListChannelsRequestFilterSensitiveLog:()=>Rr,ListChannelsResponseFilterSensitiveLog:()=>Dr,ListSubChannelsCommand:()=>oo,ListSubChannelsRequestFilterSensitiveLog:()=>Wr,ListSubChannelsResponseFilterSensitiveLog:()=>qr,ListTagsForResourceCommand:()=>so,ListTagsForResourceResponseFilterSensitiveLog:()=>$r,MessageAttributeValueFilterSensitiveLog:()=>Ji,MessagingDataType:()=>Pi,NotFoundException:()=>Ci,ProcessorFilterSensitiveLog:()=>Gi,PushNotificationConfigurationFilterSensitiveLog:()=>Zi,PushNotificationPreferencesFilterSensitiveLog:()=>ir,PushNotificationType:()=>Ti,PutChannelExpirationSettingsCommand:()=>co,PutChannelMembershipPreferencesCommand:()=>lo,PutChannelMembershipPreferencesRequestFilterSensitiveLog:()=>Gr,PutChannelMembershipPreferencesResponseFilterSensitiveLog:()=>Kr,PutMessagingStreamingConfigurationsCommand:()=>uo,RedactChannelMessageCommand:()=>fo,ResourceLimitExceededException:()=>ki,SearchChannelsCommand:()=>ho,SearchChannelsRequestFilterSensitiveLog:()=>Jr,SearchChannelsResponseFilterSensitiveLog:()=>Zr,SearchFieldKey:()=>Ri,SearchFieldOperator:()=>Di,SendChannelMessageCommand:()=>mo,SendChannelMessageRequestFilterSensitiveLog:()=>Qr,ServiceFailureException:()=>wi,ServiceUnavailableException:()=>Mi,SortOrder:()=>Oi,TagFilterSensitiveLog:()=>ur,TagResourceCommand:()=>po,TagResourceRequestFilterSensitiveLog:()=>Yr,ThrottledClientException:()=>zi,UnauthorizedClientException:()=>xi,UntagResourceCommand:()=>go,UntagResourceRequestFilterSensitiveLog:()=>Xr,UpdateChannelCommand:()=>vo,UpdateChannelFlowCommand:()=>bo,UpdateChannelFlowRequestFilterSensitiveLog:()=>ta,UpdateChannelMessageCommand:()=>yo,UpdateChannelMessageRequestFilterSensitiveLog:()=>na,UpdateChannelReadMarkerCommand:()=>So,UpdateChannelRequestFilterSensitiveLog:()=>ea,__Client:()=>Kt,paginateListChannelBans:()=>zo,paginateListChannelFlows:()=>ko,paginateListChannelMemberships:()=>_o,paginateListChannelMembershipsForAppInstanceUser:()=>Eo,paginateListChannelMessages:()=>To,paginateListChannelModerators:()=>Io,paginateListChannels:()=>Fo,paginateListChannelsAssociatedWithChannelFlow:()=>Po,paginateListChannelsModeratedByAppInstanceUser:()=>Ro,paginateListSubChannels:()=>Uo,paginateSearchChannels:()=>Wo});const i=e=>{let t=e.httpHandler;return{setHttpHandler(e){t=e},httpHandler:()=>t,updateHttpClientConfig(e,n){t.updateHttpClientConfig(e,n)},httpHandlerConfigs:()=>t.httpHandlerConfigs()}};var r,a,o,s,c,l;!function(e){e.HEADER="header",e.QUERY="query"}(r||(r={})),function(e){e.HEADER="header",e.QUERY="query"}(a||(a={})),function(e){e.HTTP="http",e.HTTPS="https"}(o||(o={})),function(e){e.MD5="md5",e.CRC32="crc32",e.CRC32C="crc32c",e.SHA1="sha1",e.SHA256="sha256"}(s||(s={})),(l=c||(c={}))[l.HEADER=0]="HEADER",l[l.TRAILER=1]="TRAILER";const d="__smithy_context";var u,f;!function(e){e.PROFILE="profile",e.SSO_SESSION="sso-session",e.SERVICES="services"}(u||(u={})),function(e){e.HTTP_0_9="http/0.9",e.HTTP_1_0="http/1.0",e.TDS_8_0="tds/8.0"}(f||(f={}));class h{constructor(e){this.method=e.method||"GET",this.hostname=e.hostname||"localhost",this.port=e.port,this.query=e.query||{},this.headers=e.headers||{},this.body=e.body,this.protocol=e.protocol?":"!==e.protocol.slice(-1)?`${e.protocol}:`:e.protocol:"https:",this.path=e.path?"/"!==e.path.charAt(0)?`/${e.path}`:e.path:"/",this.username=e.username,this.password=e.password,this.fragment=e.fragment}static isInstance(e){if(!e)return!1;const t=e;return"method"in t&&"protocol"in t&&"hostname"in t&&"path"in t&&"object"==typeof t.query&&"object"==typeof t.headers}clone(){const e=new h({...this,headers:{...this.headers}});var t;return e.query&&(e.query=(t=e.query,Object.keys(t).reduce(((e,n)=>{const i=t[n];return{...e,[n]:Array.isArray(i)?[...i]:i}}),{}))),e}}class m{constructor(e){this.statusCode=e.statusCode,this.reason=e.reason,this.headers=e.headers||{},this.body=e.body}static isInstance(e){if(!e)return!1;const t=e;return"number"==typeof t.statusCode&&"object"==typeof t.headers}}const p={name:"hostHeaderMiddleware",step:"build",priority:"low",tags:["HOST"],override:!0},g={name:"loggerMiddleware",tags:["LOGGER"],step:"initialize",override:!0},v="X-Amzn-Trace-Id",b={step:"build",tags:["RECURSION_DETECTION"],name:"recursionDetectionMiddleware",override:!0,priority:"low"},y=(e,t,n)=>{let i,r,a,o=!1;const s=async()=>{r||(r=e());try{i=await r,a=!0,o=!1}finally{r=void 0}return i};return void 0===t?async e=>(a&&!e?.forceRefresh||(i=await s()),i):async e=>(a&&!e?.forceRefresh||(i=await s()),o?i:n&&!n(i)?(o=!0,i):t(i)?(await s(),i):i)};n(4079);const S={},C={};for(let e=0;e<256;e++){let t=e.toString(16).toLowerCase();1===t.length&&(t=`0${t}`),S[e]=t,C[t]=e}function w(e){let t="";for(let n=0;n0x8000000000000000||e<-0x8000000000000000)throw new Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);const t=new Uint8Array(8);for(let n=7,i=Math.abs(Math.round(e));n>-1&&i>0;n--,i/=256)t[n]=i;return e<0&&z(t),new M(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&z(e),parseInt(w(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function z(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}class x{constructor(e,t){this.toUtf8=e,this.fromUtf8=t}format(e){const t=[];for(const n of Object.keys(e)){const i=this.fromUtf8(n);t.push(Uint8Array.from([i.byteLength]),i,this.formatHeaderValue(e[n]))}const n=new Uint8Array(t.reduce(((e,t)=>e+t.byteLength),0));let i=0;for(const e of t)n.set(e,i),i+=e.byteLength;return n}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":const t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":const n=new DataView(new ArrayBuffer(5));return n.setUint8(0,4),n.setInt32(1,e.value,!1),new Uint8Array(n.buffer);case"long":const i=new Uint8Array(9);return i[0]=5,i.set(e.value.bytes,1),i;case"binary":const r=new DataView(new ArrayBuffer(3+e.value.byteLength));r.setUint8(0,6),r.setUint16(1,e.value.byteLength,!1);const a=new Uint8Array(r.buffer);return a.set(e.value,3),a;case"string":const o=this.fromUtf8(e.value),s=new DataView(new ArrayBuffer(3+o.byteLength));s.setUint8(0,7),s.setUint16(1,o.byteLength,!1);const c=new Uint8Array(s.buffer);return c.set(o,3),c;case"timestamp":const l=new Uint8Array(9);return l[0]=8,l.set(M.fromNumber(e.value.valueOf()).bytes,1),l;case"uuid":if(!P.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(function(e){if(e.length%2!=0)throw new Error("Hex encoded strings must have an even number length");const t=new Uint8Array(e.length/2);for(let n=0;n{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t},B=e=>new TextDecoder("utf-8").decode(e),U=e=>(new TextEncoder).encode(e),j=e=>"string"==typeof e?U(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e),W="X-Amz-Date",q="X-Amz-Signature",$="X-Amz-Security-Token",G="authorization",K=W.toLowerCase(),J=[G,K,"date"],Z=q.toLowerCase(),Q="x-amz-content-sha256",Y=$.toLowerCase(),X={authorization:!0,"cache-control":!0,connection:!0,expect:!0,from:!0,"keep-alive":!0,"max-forwards":!0,pragma:!0,referer:!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0,"user-agent":!0,"x-amzn-trace-id":!0},ee=/^proxy-/,te=/^sec-/,ne="AWS4-HMAC-SHA256",ie="AWS4-HMAC-SHA256-PAYLOAD",re="aws4_request",ae={},oe=[],se=(e,t,n)=>`${e}/${t}/${n}/${re}`,ce=(e,t,n)=>{const i=new e(t);return i.update(j(n)),i.digest()},le=({headers:e},t,n)=>{const i={};for(const r of Object.keys(e).sort()){if(null==e[r])continue;const a=r.toLowerCase();(a in X||t?.has(a)||ee.test(a)||te.test(a))&&(!n||n&&!n.has(a))||(i[a]=e[r].trim().replace(/\s+/g," "))}return i},de=e=>encodeURIComponent(e).replace(/[!'()*]/g,ue),ue=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`,fe=async({headers:e,body:t},n)=>{for(const t of Object.keys(e))if(t.toLowerCase()===Q)return e[t];if(null==t)return"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";if("string"==typeof t||ArrayBuffer.isView(t)||(i=t,"function"==typeof ArrayBuffer&&i instanceof ArrayBuffer||"[object ArrayBuffer]"===Object.prototype.toString.call(i))){const e=new n;return e.update(j(t)),D(await e.digest())}var i;return"UNSIGNED-PAYLOAD"},he=({headers:e,query:t,...n})=>({...n,headers:{...e},query:t?me(t):void 0}),me=e=>Object.keys(e).reduce(((t,n)=>{const i=e[n];return{...t,[n]:Array.isArray(i)?[...i]:i}}),{}),pe=e=>{e="function"==typeof e.clone?e.clone():he(e);for(const t of Object.keys(e.headers))J.indexOf(t.toLowerCase())>-1&&delete e.headers[t];return e};class ge{constructor({applyChecksum:e,credentials:t,region:n,service:i,sha256:r,uriEscapePath:a=!0}){this.headerMarshaller=new x(B,U),this.service=i,this.sha256=r,this.uriEscapePath=a,this.applyChecksum="boolean"!=typeof e||e,this.regionProvider=F(n),this.credentialProvider=F(t)}async presign(e,t={}){const{signingDate:n=new Date,expiresIn:i=3600,unsignableHeaders:r,unhoistableHeaders:a,signableHeaders:o,signingRegion:s,signingService:c}=t,l=await this.credentialProvider();this.validateResolvedCredentials(l);const d=s??await this.regionProvider(),{longDate:u,shortDate:f}=ve(n);if(i>604800)return Promise.reject("Signature version 4 presigned URLs must have an expiration date less than one week in the future");const h=se(f,d,c??this.service),m=((e,t={})=>{const{headers:n,query:i={}}="function"==typeof e.clone?e.clone():he(e);for(const e of Object.keys(n)){const r=e.toLowerCase();"x-amz-"!==r.slice(0,6)||t.unhoistableHeaders?.has(r)||(i[e]=n[e],delete n[e])}return{...e,headers:n,query:i}})(pe(e),{unhoistableHeaders:a});l.sessionToken&&(m.query[$]=l.sessionToken),m.query["X-Amz-Algorithm"]=ne,m.query["X-Amz-Credential"]=`${l.accessKeyId}/${h}`,m.query[W]=u,m.query["X-Amz-Expires"]=i.toString(10);const p=le(m,r,o);return m.query["X-Amz-SignedHeaders"]=be(p),m.query[q]=await this.getSignature(u,h,this.getSigningKey(l,d,f,c),this.createCanonicalRequest(m,p,await fe(e,this.sha256))),m}async sign(e,t){return"string"==typeof e?this.signString(e,t):e.headers&&e.payload?this.signEvent(e,t):e.message?this.signMessage(e,t):this.signRequest(e,t)}async signEvent({headers:e,payload:t},{signingDate:n=new Date,priorSignature:i,signingRegion:r,signingService:a}){const o=r??await this.regionProvider(),{shortDate:s,longDate:c}=ve(n),l=se(s,o,a??this.service),d=await fe({headers:{},body:t},this.sha256),u=new this.sha256;u.update(e);const f=D(await u.digest()),h=[ie,c,l,i,f,d].join("\n");return this.signString(h,{signingDate:n,signingRegion:o,signingService:a})}async signMessage(e,{signingDate:t=new Date,signingRegion:n,signingService:i}){return this.signEvent({headers:this.headerMarshaller.format(e.message.headers),payload:e.message.body},{signingDate:t,signingRegion:n,signingService:i,priorSignature:e.priorSignature}).then((t=>({message:e.message,signature:t})))}async signString(e,{signingDate:t=new Date,signingRegion:n,signingService:i}={}){const r=await this.credentialProvider();this.validateResolvedCredentials(r);const a=n??await this.regionProvider(),{shortDate:o}=ve(t),s=new this.sha256(await this.getSigningKey(r,a,o,i));return s.update(j(e)),D(await s.digest())}async signRequest(e,{signingDate:t=new Date,signableHeaders:n,unsignableHeaders:i,signingRegion:r,signingService:a}={}){const o=await this.credentialProvider();this.validateResolvedCredentials(o);const s=r??await this.regionProvider(),c=pe(e),{longDate:l,shortDate:d}=ve(t),u=se(d,s,a??this.service);c.headers[K]=l,o.sessionToken&&(c.headers[Y]=o.sessionToken);const f=await fe(c,this.sha256);!((e,t)=>{e=e.toLowerCase();for(const n of Object.keys(t))if(e===n.toLowerCase())return!0;return!1})(Q,c.headers)&&this.applyChecksum&&(c.headers[Q]=f);const h=le(c,i,n),m=await this.getSignature(l,u,this.getSigningKey(o,s,d,a),this.createCanonicalRequest(c,h,f));return c.headers[G]=`${ne} Credential=${o.accessKeyId}/${u}, SignedHeaders=${be(h)}, Signature=${m}`,c}createCanonicalRequest(e,t,n){const i=Object.keys(t).sort();return`${e.method}\n${this.getCanonicalPath(e)}\n${(({query:e={}})=>{const t=[],n={};for(const i of Object.keys(e).sort()){if(i.toLowerCase()===Z)continue;t.push(i);const r=e[i];"string"==typeof r?n[i]=`${de(i)}=${de(r)}`:Array.isArray(r)&&(n[i]=r.slice(0).reduce(((e,t)=>e.concat([`${de(i)}=${de(t)}`])),[]).sort().join("&"))}return t.map((e=>n[e])).filter((e=>e)).join("&")})(e)}\n${i.map((e=>`${e}:${t[e]}`)).join("\n")}\n\n${i.join(";")}\n${n}`}async createStringToSign(e,t,n){const i=new this.sha256;i.update(j(n));const r=await i.digest();return`${ne}\n${e}\n${t}\n${D(r)}`}getCanonicalPath({path:e}){if(this.uriEscapePath){const t=[];for(const n of e.split("/"))0!==n?.length&&"."!==n&&(".."===n?t.pop():t.push(n));const n=`${e?.startsWith("/")?"/":""}${t.join("/")}${t.length>0&&e?.endsWith("/")?"/":""}`;return encodeURIComponent(n).replace(/%2F/g,"/")}return e}async getSignature(e,t,n,i){const r=await this.createStringToSign(e,t,i),a=new this.sha256(await n);return a.update(j(r)),D(await a.digest())}getSigningKey(e,t,n,i){return(async(e,t,n,i,r)=>{const a=`${n}:${i}:${r}:${D(await ce(e,t.secretAccessKey,t.accessKeyId))}:${t.sessionToken}`;if(a in ae)return ae[a];for(oe.push(a);oe.length>50;)delete ae[oe.shift()];let o=`AWS4${t.secretAccessKey}`;for(const t of[n,i,r,re])o=await ce(e,o,t);return ae[a]=o})(this.sha256,e,n,t,i||this.service)}validateResolvedCredentials(e){if("object"!=typeof e||"string"!=typeof e.accessKeyId||"string"!=typeof e.secretAccessKey)throw new Error("Resolved credential object is not valid")}}const ve=e=>{const t=(n=e,(e=>"number"==typeof e?new Date(1e3*e):"string"==typeof e?Number(e)?new Date(1e3*Number(e)):new Date(e):e)(n).toISOString().replace(/\.\d{3}Z$/,"Z")).replace(/[\-:]/g,"");var n;return{longDate:t,shortDate:t.slice(0,8)}},be=e=>Object.keys(e).sort().join(";"),ye=e=>new Date(Date.now()+e),Se=(e,t)=>{const n=Date.parse(e);return((e,t)=>Math.abs(ye(t).getTime()-e)>=3e5)(n,t)?n-Date.now():t},Ce=e=>m.isInstance(e)?e.headers?.date??e.headers?.Date:void 0,we={name:"awsAuthMiddleware",tags:["SIGNATURE","AWSAUTH"],relation:"after",toMiddleware:"retryMiddleware",override:!0},Me=new RegExp("^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$"),ze=e=>Me.test(e)||e.startsWith("[")&&e.endsWith("]"),xe=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),ke=(e,t=!1)=>{if(!t)return xe.test(e);const n=e.split(".");for(const e of n)if(!ke(e))return!1;return!0},Ve={},Ee="endpoints";function He(e){return"object"!=typeof e||null==e?e:"ref"in e?`$${He(e.ref)}`:"fn"in e?`${e.fn}(${(e.argv||[]).map(He).join(", ")})`:JSON.stringify(e,null,2)}class _e extends Error{constructor(e){super(e),this.name="EndpointError"}}const Le=(e,t)=>(e=>{const t=e.split("."),n=[];for(const i of t){const t=i.indexOf("[");if(-1!==t){if(i.indexOf("]")!==i.length-1)throw new _e(`Path: '${e}' does not end with ']'`);const r=i.slice(t+1,-1);if(Number.isNaN(parseInt(r)))throw new _e(`Invalid array index: '${r}' in path: '${e}'`);0!==t&&n.push(i.slice(0,t)),n.push(r)}else n.push(i)}return n})(t).reduce(((n,i)=>{if("object"!=typeof n)throw new _e(`Index '${i}' in '${t}' not found in '${JSON.stringify(e)}'`);return Array.isArray(n)?n[parseInt(i)]:n[i]}),e),Te={[o.HTTP]:80,[o.HTTPS]:443},Ae={booleanEquals:(e,t)=>e===t,getAttr:Le,isSet:e=>null!=e,isValidHostLabel:ke,not:e=>!e,parseURL:e=>{const t=(()=>{try{if(e instanceof URL)return e;if("object"==typeof e&&"hostname"in e){const{hostname:t,port:n,protocol:i="",path:r="",query:a={}}=e,o=new URL(`${i}//${t}${n?`:${n}`:""}${r}`);return o.search=Object.entries(a).map((([e,t])=>`${e}=${t}`)).join("&"),o}return new URL(e)}catch(e){return null}})();if(!t)return console.error(`Unable to parse ${JSON.stringify(e)} as a whatwg URL.`),null;const n=t.href,{host:i,hostname:r,pathname:a,protocol:s,search:c}=t;if(c)return null;const l=s.slice(0,-1);if(!Object.values(o).includes(l))return null;const d=ze(r);return{scheme:l,authority:`${i}${n.includes(`${i}:${Te[l]}`)||"string"==typeof e&&e.includes(`${i}:${Te[l]}`)?`:${Te[l]}`:""}`,path:a,normalizedPath:a.endsWith("/")?a:`${a}/`,isIp:d}},stringEquals:(e,t)=>e===t,substring:(e,t,n,i)=>t>=n||e.lengthencodeURIComponent(e).replace(/[!*'()]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))},Ie=(e,t)=>{const n=[],i={...t.endpointParams,...t.referenceRecord};let r=0;for(;r{if("string"==typeof e)return Ie(e,n);if(e.fn)return Pe(e,n);if(e.ref)return(({ref:e},t)=>({...t.endpointParams,...t.referenceRecord}[e]))(e,n);throw new _e(`'${t}': ${String(e)} is not a string, function or reference.`)},Pe=({fn:e,argv:t},n)=>{const i=t.map((e=>["boolean","number"].includes(typeof e)?e:Ne(e,"arg",n))),r=e.split(".");return r[0]in Ve&&null!=r[1]?Ve[r[0]][r[1]](...i):Ae[e](...i)},Oe=({assign:e,...t},n)=>{if(e&&e in n.referenceRecord)throw new _e(`'${e}' is already defined in Reference Record.`);const i=Pe(t,n);return n.logger?.debug?.(Ee,`evaluateCondition: ${He(t)} = ${He(i)}`),{result:""===i||!!i,...null!=e&&{toAssign:{name:e,value:i}}}},Re=(e=[],t)=>{const n={};for(const i of e){const{result:e,toAssign:r}=Oe(i,{...t,referenceRecord:{...t.referenceRecord,...n}});if(!e)return{result:e};r&&(n[r.name]=r.value,t.logger?.debug?.(Ee,`assign: ${r.name} := ${He(r.value)}`))}return{result:!0,referenceRecord:n}},De=(e,t)=>Object.entries(e).reduce(((e,[n,i])=>({...e,[n]:i.map((e=>{const i=Ne(e,"Header value entry",t);if("string"!=typeof i)throw new _e(`Header '${n}' value '${i}' is not a string`);return i}))})),{}),Fe=(e,t)=>{if(Array.isArray(e))return e.map((e=>Fe(e,t)));switch(typeof e){case"string":return Ie(e,t);case"object":if(null===e)throw new _e(`Unexpected endpoint property: ${e}`);return Be(e,t);case"boolean":return e;default:throw new _e("Unexpected endpoint property type: "+typeof e)}},Be=(e,t)=>Object.entries(e).reduce(((e,[n,i])=>({...e,[n]:Fe(i,t)})),{}),Ue=(e,t)=>{const n=Ne(e,"Endpoint URL",t);if("string"==typeof n)try{return new URL(n)}catch(e){throw console.error(`Failed to construct URL with ${n}`,e),e}throw new _e("Endpoint URL must be a string, got "+typeof n)},je=(e,t)=>{const{conditions:n,endpoint:i}=e,{result:r,referenceRecord:a}=Re(n,t);if(!r)return;const o={...t,referenceRecord:{...t.referenceRecord,...a}},{url:s,properties:c,headers:l}=i;return t.logger?.debug?.(Ee,`Resolving endpoint from template: ${He(i)}`),{...null!=l&&{headers:De(l,o)},...null!=c&&{properties:Be(c,o)},url:Ue(s,o)}},We=(e,t)=>{const{conditions:n,error:i}=e,{result:r,referenceRecord:a}=Re(n,t);if(r)throw new _e(Ne(i,"Error",{...t,referenceRecord:{...t.referenceRecord,...a}}))},qe=(e,t)=>{const{conditions:n,rules:i}=e,{result:r,referenceRecord:a}=Re(n,t);if(r)return $e(i,{...t,referenceRecord:{...t.referenceRecord,...a}})},$e=(e,t)=>{for(const n of e)if("endpoint"===n.type){const e=je(n,t);if(e)return e}else if("error"===n.type)We(n,t);else{if("tree"!==n.type)throw new _e(`Unknown endpoint rule: ${n}`);{const e=qe(n,t);if(e)return e}}throw new _e("Rules evaluation failed")},Ge=(e,t=!1)=>{if(t){for(const t of e.split("."))if(!Ge(t))return!1;return!0}return!(!ke(e)||e.length<3||e.length>63||e!==e.toLowerCase()||ze(e))};let Ke=JSON.parse('{"partitions":[{"id":"aws","outputs":{"dnsSuffix":"amazonaws.com","dualStackDnsSuffix":"api.aws","implicitGlobalRegion":"us-east-1","name":"aws","supportsDualStack":true,"supportsFIPS":true},"regionRegex":"^(us|eu|ap|sa|ca|me|af|il)\\\\-\\\\w+\\\\-\\\\d+$","regions":{"af-south-1":{"description":"Africa (Cape Town)"},"ap-east-1":{"description":"Asia Pacific (Hong Kong)"},"ap-northeast-1":{"description":"Asia Pacific (Tokyo)"},"ap-northeast-2":{"description":"Asia Pacific (Seoul)"},"ap-northeast-3":{"description":"Asia Pacific (Osaka)"},"ap-south-1":{"description":"Asia Pacific (Mumbai)"},"ap-south-2":{"description":"Asia Pacific (Hyderabad)"},"ap-southeast-1":{"description":"Asia Pacific (Singapore)"},"ap-southeast-2":{"description":"Asia Pacific (Sydney)"},"ap-southeast-3":{"description":"Asia Pacific (Jakarta)"},"ap-southeast-4":{"description":"Asia Pacific (Melbourne)"},"aws-global":{"description":"AWS Standard global region"},"ca-central-1":{"description":"Canada (Central)"},"eu-central-1":{"description":"Europe (Frankfurt)"},"eu-central-2":{"description":"Europe (Zurich)"},"eu-north-1":{"description":"Europe (Stockholm)"},"eu-south-1":{"description":"Europe (Milan)"},"eu-south-2":{"description":"Europe (Spain)"},"eu-west-1":{"description":"Europe (Ireland)"},"eu-west-2":{"description":"Europe (London)"},"eu-west-3":{"description":"Europe (Paris)"},"il-central-1":{"description":"Israel (Tel Aviv)"},"me-central-1":{"description":"Middle East (UAE)"},"me-south-1":{"description":"Middle East (Bahrain)"},"sa-east-1":{"description":"South America (Sao Paulo)"},"us-east-1":{"description":"US East (N. Virginia)"},"us-east-2":{"description":"US East (Ohio)"},"us-west-1":{"description":"US West (N. California)"},"us-west-2":{"description":"US West (Oregon)"}}},{"id":"aws-cn","outputs":{"dnsSuffix":"amazonaws.com.cn","dualStackDnsSuffix":"api.amazonwebservices.com.cn","implicitGlobalRegion":"cn-northwest-1","name":"aws-cn","supportsDualStack":true,"supportsFIPS":true},"regionRegex":"^cn\\\\-\\\\w+\\\\-\\\\d+$","regions":{"aws-cn-global":{"description":"AWS China global region"},"cn-north-1":{"description":"China (Beijing)"},"cn-northwest-1":{"description":"China (Ningxia)"}}},{"id":"aws-us-gov","outputs":{"dnsSuffix":"amazonaws.com","dualStackDnsSuffix":"api.aws","implicitGlobalRegion":"us-gov-west-1","name":"aws-us-gov","supportsDualStack":true,"supportsFIPS":true},"regionRegex":"^us\\\\-gov\\\\-\\\\w+\\\\-\\\\d+$","regions":{"aws-us-gov-global":{"description":"AWS GovCloud (US) global region"},"us-gov-east-1":{"description":"AWS GovCloud (US-East)"},"us-gov-west-1":{"description":"AWS GovCloud (US-West)"}}},{"id":"aws-iso","outputs":{"dnsSuffix":"c2s.ic.gov","dualStackDnsSuffix":"c2s.ic.gov","implicitGlobalRegion":"us-iso-east-1","name":"aws-iso","supportsDualStack":false,"supportsFIPS":true},"regionRegex":"^us\\\\-iso\\\\-\\\\w+\\\\-\\\\d+$","regions":{"aws-iso-global":{"description":"AWS ISO (US) global region"},"us-iso-east-1":{"description":"US ISO East"},"us-iso-west-1":{"description":"US ISO WEST"}}},{"id":"aws-iso-b","outputs":{"dnsSuffix":"sc2s.sgov.gov","dualStackDnsSuffix":"sc2s.sgov.gov","implicitGlobalRegion":"us-isob-east-1","name":"aws-iso-b","supportsDualStack":false,"supportsFIPS":true},"regionRegex":"^us\\\\-isob\\\\-\\\\w+\\\\-\\\\d+$","regions":{"aws-iso-b-global":{"description":"AWS ISOB (US) global region"},"us-isob-east-1":{"description":"US ISOB East (Ohio)"}}},{"id":"aws-iso-e","outputs":{"dnsSuffix":"cloud.adc-e.uk","dualStackDnsSuffix":"cloud.adc-e.uk","implicitGlobalRegion":"eu-isoe-west-1","name":"aws-iso-e","supportsDualStack":false,"supportsFIPS":true},"regionRegex":"^eu\\\\-isoe\\\\-\\\\w+\\\\-\\\\d+$","regions":{}},{"id":"aws-iso-f","outputs":{"dnsSuffix":"csp.hci.ic.gov","dualStackDnsSuffix":"csp.hci.ic.gov","implicitGlobalRegion":"us-isof-south-1","name":"aws-iso-f","supportsDualStack":false,"supportsFIPS":true},"regionRegex":"^us\\\\-isof\\\\-\\\\w+\\\\-\\\\d+$","regions":{}}],"version":"1.1"}');const Je={isVirtualHostableS3Bucket:Ge,parseArn:e=>{const t=e.split(":");if(t.length<6)return null;const[n,i,r,a,o,...s]=t;return"arn"!==n||""===i||""===r||""===s[0]?null:{partition:i,service:r,region:a,accountId:o,resourceId:s[0].includes("/")?s[0].split("/"):s}},partition:e=>{const{partitions:t}=Ke;for(const n of t){const{regions:t,outputs:i}=n;for(const[n,r]of Object.entries(t))if(n===e)return{...i,...r}}for(const n of t){const{regionRegex:t,outputs:i}=n;if(new RegExp(t).test(e))return{...i}}const n=t.find((e=>"aws"===e.id));if(!n)throw new Error("Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist.");return{...n.outputs}}};Ve.aws=Je;const Ze="user-agent",Qe="x-amz-user-agent",Ye=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g,Xe=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g,et=e=>{const t=e[0].split("/").map((e=>e.replace(Ye,"-"))).join("/"),n=e[1]?.replace(Xe,"-"),i=t.indexOf("/"),r=t.substring(0,i);let a=t.substring(i+1);return"api"===r&&(a=a.toLowerCase()),[r,a,n].filter((e=>e&&e.length>0)).reduce(((e,t,n)=>{switch(n){case 0:return t;case 1:return`${e}/${t}`;default:return`${e}#${t}`}}),"")},tt={name:"getUserAgentMiddleware",step:"build",priority:"low",tags:["SET_USER_AGENT","USER_AGENT"],override:!0};var nt;!function(e){e.ENV="env",e.CONFIG="shared config entry"}(nt||(nt={}));const it=e=>"string"==typeof e&&(e.startsWith("fips-")||e.endsWith("-fips")),rt=e=>it(e)?["fips-aws-global","aws-fips"].includes(e)?"us-east-1":e.replace(/fips-(dkr-|prod-)?|-fips/,""):e,at="content-length",ot={step:"build",tags:["SET_CONTENT_LENGTH","CONTENT_LENGTH"],name:"contentLengthMiddleware",override:!0},st=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,ct=/(\d+\.){3}\d+/,lt=/\.\./,dt=(e,t,n)=>{const i=async()=>{const i=n[e]??n[t];return"function"==typeof i?i():i};return"endpoint"===e||"endpoint"===t?async()=>{const e=await i();if(e&&"object"==typeof e){if("url"in e)return e.url.href;if("hostname"in e){const{protocol:t,hostname:n,port:i,path:r}=e;return`${t}//${n}${i?":"+i:""}${r}`}}return e}:i},ut=e=>{if("string"==typeof e)return ut(new URL(e));const{hostname:t,pathname:n,port:i,protocol:r,search:a}=e;let o;return a&&(o=function(e){const t={};if(e=e.replace(/^\?/,""))for(const n of e.split("&")){let[e,i=null]=n.split("=");e=decodeURIComponent(e),i&&(i=decodeURIComponent(i)),e in t?Array.isArray(t[e])?t[e].push(i):t[e]=[t[e],i]:t[e]=i}return t}(a)),{hostname:t,port:i?parseInt(i):void 0,protocol:r,path:n,query:o}},ft=e=>"object"==typeof e?"url"in e?ut(e.url):e:ut(e),ht={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},mt={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function pt(e,t,n){return{applyToStack:i=>{i.add(((e,t)=>(n,i)=>async i=>{const{response:r}=await n(i);try{return{response:r,output:await t(r,e)}}catch(e){if(Object.defineProperty(e,"$response",{value:r}),!("$metadata"in e)){const t="Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.";e.message+="\n "+t}throw e}})(e,n),ht),i.add(((e,t)=>(n,i)=>async r=>{const a=i.endpointV2?.url&&e.urlParser?async()=>e.urlParser(i.endpointV2.url):e.endpoint;if(!a)throw new Error("No valid endpoint provider available.");const o=await t(r.input,{...e,endpoint:a});return n({...r,request:o})})(e,t),mt)}}}const gt={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:mt.name},vt=(e,t)=>({applyToStack:n=>{n.addRelativeTo((({config:e,instructions:t})=>(n,i)=>async r=>{const a=await(async(e,t,n,i)=>{if(!n.endpoint){const e=await(async e=>{})(n.serviceId);e&&(n.endpoint=()=>Promise.resolve(ft(e)))}const r=await(async(e,t,n)=>{const i={},r=t?.getEndpointParameterInstructions?.()||{};for(const[t,a]of Object.entries(r))switch(a.type){case"staticContextParams":i[t]=a.value;break;case"contextParams":i[t]=e[a.name];break;case"clientContextParams":case"builtInParams":i[t]=await dt(a.name,t,n)();break;default:throw new Error("Unrecognized endpoint parameter instruction: "+JSON.stringify(a))}return 0===Object.keys(r).length&&Object.assign(i,n),"s3"===String(n.serviceId).toLowerCase()&&await(async e=>{const t=e?.Bucket||"";if("string"==typeof e.Bucket&&(e.Bucket=t.replace(/#/g,encodeURIComponent("#")).replace(/\?/g,encodeURIComponent("?"))),(e=>{const[t,n,i,r,a,o]=e.split(":"),s="arn"===t&&e.split(":").length>=6,c=5===[t,n,i,a,o].filter(Boolean).length;if(s&&!c)throw new Error(`Invalid ARN: ${e} was an invalid ARN.`);return!!("arn"===t&&n&&i&&a&&o)})(t)){if(!0===e.ForcePathStyle)throw new Error("Path-style addressing cannot be used with ARN buckets")}else n=t,(!st.test(n)||ct.test(n)||lt.test(n)||-1!==t.indexOf(".")&&!String(e.Endpoint).startsWith("http:")||t.toLowerCase()!==t||t.length<3)&&(e.ForcePathStyle=!0);var n;return e.DisableMultiRegionAccessPoints&&(e.disableMultiRegionAccessPoints=!0,e.DisableMRAP=!0),e})(i),i})(e,t,n);if("function"!=typeof n.endpointProvider)throw new Error("config.endpointProvider is not set.");return n.endpointProvider(r,i)})(r.input,{getEndpointParameterInstructions:()=>t},{...e},i);i.endpointV2=a,i.authSchemes=a.properties?.authSchemes;const o=i.authSchemes?.[0];if(o){i.signing_region=o.signingRegion,i.signing_service=o.signingName;const e=(e=>e[d]||(e[d]={}))(i),t=e?.selectedHttpAuthScheme?.httpAuthOption;t&&(t.signingProperties=Object.assign(t.signingProperties||{},{signing_region:o.signingRegion,signingRegion:o.signingRegion,signing_service:o.signingName,signingName:o.signingName,signingRegionSet:o.signingRegionSet},o.properties))}return n({...r})})({config:e,instructions:t}),gt)}});var bt,yt;(yt=bt||(bt={})).STANDARD="standard",yt.ADAPTIVE="adaptive";const St=bt.STANDARD,Ct=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],wt=["TimeoutError","RequestTimeout","RequestTimeoutException"],Mt=[500,502,503,504],zt=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],xt=e=>429===e.$metadata?.httpStatusCode||Ct.includes(e.name)||1==e.$retryable?.throttling,kt=e=>wt.includes(e.name)||zt.includes(e?.code||"")||Mt.includes(e.$metadata?.httpStatusCode||0);class Vt{constructor(e){this.currentCapacity=0,this.enabled=!1,this.lastMaxRate=0,this.measuredTxRate=0,this.requestCount=0,this.lastTimestamp=0,this.timeWindow=0,this.beta=e?.beta??.7,this.minCapacity=e?.minCapacity??1,this.minFillRate=e?.minFillRate??.5,this.scaleConstant=e?.scaleConstant??.4,this.smooth=e?.smooth??.8;const t=this.getCurrentTimeInSeconds();this.lastThrottleTime=t,this.lastTxRateBucket=Math.floor(this.getCurrentTimeInSeconds()),this.fillRate=this.minFillRate,this.maxCapacity=this.minCapacity}getCurrentTimeInSeconds(){return Date.now()/1e3}async getSendToken(){return this.acquireTokenBucket(1)}async acquireTokenBucket(e){if(this.enabled){if(this.refillTokenBucket(),e>this.currentCapacity){const t=(e-this.currentCapacity)/this.fillRate*1e3;await new Promise((e=>setTimeout(e,t)))}this.currentCapacity=this.currentCapacity-e}}refillTokenBucket(){const e=this.getCurrentTimeInSeconds();if(!this.lastTimestamp)return void(this.lastTimestamp=e);const t=(e-this.lastTimestamp)*this.fillRate;this.currentCapacity=Math.min(this.maxCapacity,this.currentCapacity+t),this.lastTimestamp=e}updateClientSendingRate(e){let t;if(this.updateMeasuredRate(),xt(e)){const e=this.enabled?Math.min(this.measuredTxRate,this.fillRate):this.measuredTxRate;this.lastMaxRate=e,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),t=this.cubicThrottle(e),this.enableTokenBucket()}else this.calculateTimeWindow(),t=this.cubicSuccess(this.getCurrentTimeInSeconds());const n=Math.min(t,2*this.measuredTxRate);this.updateTokenBucketRate(n)}calculateTimeWindow(){this.timeWindow=this.getPrecise(Math.pow(this.lastMaxRate*(1-this.beta)/this.scaleConstant,1/3))}cubicThrottle(e){return this.getPrecise(e*this.beta)}cubicSuccess(e){return this.getPrecise(this.scaleConstant*Math.pow(e-this.lastThrottleTime-this.timeWindow,3)+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(e){this.refillTokenBucket(),this.fillRate=Math.max(e,this.minFillRate),this.maxCapacity=Math.max(e,this.minCapacity),this.currentCapacity=Math.min(this.currentCapacity,this.maxCapacity)}updateMeasuredRate(){const e=this.getCurrentTimeInSeconds(),t=Math.floor(2*e)/2;if(this.requestCount++,t>this.lastTxRateBucket){const e=this.requestCount/(t-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(e*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=t}}getPrecise(e){return parseFloat(e.toFixed(8))}}const Et=({retryDelay:e,retryCount:t,retryCost:n})=>({getRetryCount:()=>t,getRetryDelay:()=>Math.min(2e4,e),getRetryCost:()=>n});class Ht{constructor(e){this.maxAttempts=e,this.mode=bt.STANDARD,this.capacity=500,this.retryBackoffStrategy=(()=>{let e=100;return{computeNextBackoffDelay:t=>Math.floor(Math.min(2e4,Math.random()*2**t*e)),setDelayBase:t=>{e=t}}})(),this.maxAttemptsProvider="function"==typeof e?e:async()=>e}async acquireInitialRetryToken(e){return Et({retryDelay:100,retryCount:0})}async refreshRetryTokenForRetry(e,t){const n=await this.getMaxAttempts();if(this.shouldRetry(e,t,n)){const n=t.errorType;this.retryBackoffStrategy.setDelayBase("THROTTLING"===n?500:100);const i=this.retryBackoffStrategy.computeNextBackoffDelay(e.getRetryCount()),r=t.retryAfterHint?Math.max(t.retryAfterHint.getTime()-Date.now()||0,i):i,a=this.getCapacityCost(n);return this.capacity-=a,Et({retryDelay:r,retryCount:e.getRetryCount()+1,retryCost:a})}throw new Error("No retry token available")}recordSuccess(e){this.capacity=Math.max(500,this.capacity+(e.getRetryCost()??1))}getCapacity(){return this.capacity}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch(e){return console.warn("Max attempts provider could not resolve. Using default of 3"),3}}shouldRetry(e,t,n){return e.getRetryCount()+1=this.getCapacityCost(t.errorType)&&this.isRetryableError(t.errorType)}getCapacityCost(e){return"TRANSIENT"===e?10:5}isRetryableError(e){return"THROTTLING"===e||"TRANSIENT"===e}}class _t{constructor(e,t){this.maxAttemptsProvider=e,this.mode=bt.ADAPTIVE;const{rateLimiter:n}=t??{};this.rateLimiter=n??new Vt,this.standardRetryStrategy=new Ht(e)}async acquireInitialRetryToken(e){return await this.rateLimiter.getSendToken(),this.standardRetryStrategy.acquireInitialRetryToken(e)}async refreshRetryTokenForRetry(e,t){return this.rateLimiter.updateClientSendingRate(t),this.standardRetryStrategy.refreshRetryTokenForRetry(e,t)}recordSuccess(e){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(e)}}var Lt,Tt=new Uint8Array(16);function At(){if(!Lt&&!(Lt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Lt(Tt)}const It=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;for(var Nt=[],Pt=0;Pt<256;++Pt)Nt.push((Pt+256).toString(16).substr(1));const Ot=function(e,t,n){var i=(e=e||{}).random||(e.rng||At)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){n=n||0;for(var r=0;r<16;++r)t[n+r]=i[r];return t}return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(Nt[e[t+0]]+Nt[e[t+1]]+Nt[e[t+2]]+Nt[e[t+3]]+"-"+Nt[e[t+4]]+Nt[e[t+5]]+"-"+Nt[e[t+6]]+Nt[e[t+7]]+"-"+Nt[e[t+8]]+Nt[e[t+9]]+"-"+Nt[e[t+10]]+Nt[e[t+11]]+Nt[e[t+12]]+Nt[e[t+13]]+Nt[e[t+14]]+Nt[e[t+15]]).toLowerCase();if(!function(e){return"string"==typeof e&&It.test(e)}(n))throw TypeError("Stringified UUID is invalid");return n}(i)},Rt=e=>{const t={errorType:Dt(e)},n=Bt(e.$response);return n&&(t.retryAfterHint=n),t},Dt=e=>xt(e)?"THROTTLING":kt(e)?"TRANSIENT":(e=>{if(void 0!==e.$metadata?.httpStatusCode){const t=e.$metadata.httpStatusCode;return 500<=t&&t<=599&&!kt(e)}return!1})(e)?"SERVER_ERROR":"CLIENT_ERROR",Ft={name:"retryMiddleware",tags:["RETRY"],step:"finalizeRequest",priority:"high",override:!0},Bt=e=>{if(!m.isInstance(e))return;const t=Object.keys(e.headers).find((e=>"retry-after"===e.toLowerCase()));if(!t)return;const n=e.headers[t],i=Number(n);return Number.isNaN(i)?new Date(n):new Date(1e3*i)};class Ut{trace(){}debug(){}info(){}warn(){}error(){}}const jt=(e,t)=>{const n=[];if(e&&n.push(e),t)for(const e of t)n.push(e);return n},Wt=(e,t)=>`${e||"anonymous"}${t&&t.length>0?` (a.k.a. ${t.join(",")})`:""}`,qt=()=>{let e=[],t=[],n=!1;const i=new Set,r=n=>(e.forEach((e=>{n.add(e.middleware,{...e})})),t.forEach((e=>{n.addRelativeTo(e.middleware,{...e})})),n.identifyOnResolve?.(s.identifyOnResolve()),n),a=e=>{const t=[];return e.before.forEach((e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...a(e))})),t.push(e),e.after.reverse().forEach((e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...a(e))})),t},o=(n=!1)=>{const i=[],r=[],o={};e.forEach((e=>{const t={...e,before:[],after:[]};for(const e of jt(t.name,t.aliases))o[e]=t;i.push(t)})),t.forEach((e=>{const t={...e,before:[],after:[]};for(const e of jt(t.name,t.aliases))o[e]=t;r.push(t)})),r.forEach((e=>{if(e.toMiddleware){const t=o[e.toMiddleware];if(void 0===t){if(n)return;throw new Error(`${e.toMiddleware} is not found when adding ${Wt(e.name,e.aliases)} middleware ${e.relation} ${e.toMiddleware}`)}"after"===e.relation&&t.after.push(e),"before"===e.relation&&t.before.push(e)}}));const s=(c=i,c.sort(((e,t)=>$t[t.step]-$t[e.step]||Gt[t.priority||"normal"]-Gt[e.priority||"normal"]))).map(a).reduce(((e,t)=>(e.push(...t),e)),[]);var c;return s},s={add:(t,n={})=>{const{name:r,override:a,aliases:o}=n,s={step:"initialize",priority:"normal",middleware:t,...n},c=jt(r,o);if(c.length>0){if(c.some((e=>i.has(e)))){if(!a)throw new Error(`Duplicate middleware name '${Wt(r,o)}'`);for(const t of c){const n=e.findIndex((e=>e.name===t||e.aliases?.some((e=>e===t))));if(-1===n)continue;const i=e[n];if(i.step!==s.step||s.priority!==i.priority)throw new Error(`"${Wt(i.name,i.aliases)}" middleware with ${i.priority} priority in ${i.step} step cannot be overridden by "${Wt(r,o)}" middleware with ${s.priority} priority in ${s.step} step.`);e.splice(n,1)}}for(const e of c)i.add(e)}e.push(s)},addRelativeTo:(e,n)=>{const{name:r,override:a,aliases:o}=n,s={middleware:e,...n},c=jt(r,o);if(c.length>0){if(c.some((e=>i.has(e)))){if(!a)throw new Error(`Duplicate middleware name '${Wt(r,o)}'`);for(const e of c){const n=t.findIndex((t=>t.name===e||t.aliases?.some((t=>t===e))));if(-1===n)continue;const i=t[n];if(i.toMiddleware!==s.toMiddleware||i.relation!==s.relation)throw new Error(`"${Wt(i.name,i.aliases)}" middleware ${i.relation} "${i.toMiddleware}" middleware cannot be overridden by "${Wt(r,o)}" middleware ${s.relation} "${s.toMiddleware}" middleware.`);t.splice(n,1)}}for(const e of c)i.add(e)}t.push(s)},clone:()=>r(qt()),use:e=>{e.applyToStack(s)},remove:n=>"string"==typeof n?(n=>{let r=!1;const a=e=>{const t=jt(e.name,e.aliases);if(t.includes(n)){r=!0;for(const e of t)i.delete(e);return!1}return!0};return e=e.filter(a),t=t.filter(a),r})(n):(n=>{let r=!1;const a=e=>{if(e.middleware===n){r=!0;for(const t of jt(e.name,e.aliases))i.delete(t);return!1}return!0};return e=e.filter(a),t=t.filter(a),r})(n),removeByTag:n=>{let r=!1;const a=e=>{const{tags:t,name:a,aliases:o}=e;if(t&&t.includes(n)){const e=jt(a,o);for(const t of e)i.delete(t);return r=!0,!1}return!0};return e=e.filter(a),t=t.filter(a),r},concat:e=>{const t=r(qt());return t.use(e),t.identifyOnResolve(n||t.identifyOnResolve()||(e.identifyOnResolve?.()??!1)),t},applyToStack:r,identify:()=>o(!0).map((e=>{const t=e.step??e.relation+" "+e.toMiddleware;return Wt(e.name,e.aliases)+" - "+t})),identifyOnResolve:e=>("boolean"==typeof e&&(n=e),n),resolve:(e,t)=>{for(const n of o().map((e=>e.middleware)).reverse())e=n(e,t);return n&&console.log(s.identify()),e}};return s},$t={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},Gt={high:3,normal:2,low:1};class Kt{constructor(e){this.middlewareStack=qt(),this.config=e}send(e,t,n){const i="function"!=typeof t?t:void 0,r="function"==typeof t?t:n,a=e.resolveMiddleware(this.middlewareStack,this.config,i);if(!r)return a(e).then((e=>e.output));a(e).then((e=>r(null,e.output)),(e=>r(e))).catch((()=>{}))}destroy(){this.config.requestHandler.destroy&&this.config.requestHandler.destroy()}}const Jt={},Zt=new Array(64);for(let e=0,t="A".charCodeAt(0),n="Z".charCodeAt(0);e+t<=n;e++){const n=String.fromCharCode(e+t);Jt[n]=e,Zt[e]=n}for(let e=0,t="a".charCodeAt(0),n="z".charCodeAt(0);e+t<=n;e++){const n=String.fromCharCode(e+t),i=e+26;Jt[n]=i,Zt[i]=n}for(let e=0;e<10;e++){Jt[e.toString(10)]=e+52;const t=e.toString(10),n=e+52;Jt[t]=n,Zt[n]=t}Jt["+"]=62,Zt[62]="+",Jt["/"]=63,Zt[63]="/";const Qt=e=>{let t=e.length/4*3;"=="===e.slice(-2)?t-=2:"="===e.slice(-1)&&t--;const n=new ArrayBuffer(t),i=new DataView(n);for(let t=0;t>=6;const a=t/4*3;n>>=r%8;const o=Math.floor(r/8);for(let e=0;e>t)}}return new Uint8Array(n)};function Yt(e){let t="";for(let n=0;n>n]}t+="==".slice(0,4-a)}return t}class Xt extends Uint8Array{static fromString(e,t="utf-8"){if("string"==typeof e)return function(e,t){return"base64"===t?Xt.mutate(Qt(e)):Xt.mutate(U(e))}(e,t);throw new Error(`Unsupported conversion from ${typeof e} to Uint8ArrayBlobAdapter.`)}static mutate(e){return Object.setPrototypeOf(e,Xt.prototype),e}transformToString(e="utf-8"){return function(e,t="utf-8"){return"base64"===t?Yt(e):B(e)}(this,e)}}function en(e=0){return new Promise(((t,n)=>{e&&setTimeout((()=>{const t=new Error(`Request did not complete within ${e} ms`);t.name="TimeoutError",n(t)}),e)}))}const tn=Boolean("undefined"!=typeof Request&&"keepalive"in new Request("https://[::1]"));class nn{constructor(e){"function"==typeof e?this.configProvider=e().then((e=>e||{})):(this.config=e??{},this.configProvider=Promise.resolve(this.config))}destroy(){}async handle(e,{abortSignal:t}={}){this.config||(this.config=await this.configProvider);const n=this.config.requestTimeout,i=!0===this.config.keepAlive;if(t?.aborted){const e=new Error("Request aborted");return e.name="AbortError",Promise.reject(e)}let r=e.path;const a=function(e){const t=[];for(let n of Object.keys(e).sort()){const i=e[n];if(n=de(n),Array.isArray(i))for(let e=0,r=i.length;e{const t=e.headers,n={};for(const e of t.entries())n[e[0]]=e[1];return null!=e.body?{response:new m({headers:n,reason:e.statusText,statusCode:e.status,body:e.body})}:e.blob().then((t=>({response:new m({headers:n,reason:e.statusText,statusCode:e.status,body:t})})))})),en(n)];return t&&f.push(new Promise(((e,n)=>{t.onabort=()=>{const e=new Error("Request aborted");e.name="AbortError",n(e)}}))),Promise.race(f)}updateHttpClientConfig(e,t){this.config=void 0,this.configProvider=this.configProvider.then((n=>(n[e]=t,n)))}httpHandlerConfigs(){return this.config??{}}}const rn=e=>"function"==typeof Blob&&e instanceof Blob?async function(e){const t=await function(e){return new Promise(((t,n)=>{const i=new FileReader;i.onloadend=()=>{if(2!==i.readyState)return n(new Error("Reader aborted too early"));const e=i.result??"",r=e.indexOf(","),a=r>-1?r+1:e.length;t(e.substring(a))},i.onabort=()=>n(new Error("Read aborted")),i.onerror=()=>n(i.error),i.readAsDataURL(e)}))}(e),n=Qt(t);return new Uint8Array(n)}(e):async function(e){let t=new Uint8Array(0);const n=e.getReader();let i=!1;for(;!i;){const{done:e,value:r}=await n.read();if(r){const e=t;t=new Uint8Array(e.length+r.length),t.set(e),t.set(r,e.length)}i=e}return t}(e),an={},on={};for(let e=0;e<256;e++){let t=e.toString(16).toLowerCase();1===t.length&&(t=`0${t}`),an[e]=t,on[t]=e}const sn=async(e=new Uint8Array,t)=>{if(e instanceof Uint8Array)return Xt.mutate(e);if(!e)return Xt.mutate(new Uint8Array);const n=t.streamCollector(e);return Xt.mutate(await n)};class cn{constructor(){this.middlewareStack=qt()}}const ln="***SensitiveInformation***",dn=e=>{if(null!=e){if("number"==typeof e){if(0!==e&&1!==e||vn.warn(gn(`Expected boolean, got ${typeof e}: ${e}`)),0===e)return!1;if(1===e)return!0}if("string"==typeof e){const t=e.toLowerCase();if("false"!==t&&"true"!==t||vn.warn(gn(`Expected boolean, got ${typeof e}: ${e}`)),"false"===t)return!1;if("true"===t)return!0}if("boolean"==typeof e)return e;throw new TypeError(`Expected boolean, got ${typeof e}: ${e}`)}},un=e=>{if(null!=e){if("string"==typeof e){const t=parseFloat(e);if(!Number.isNaN(t))return String(t)!==String(e)&&vn.warn(gn(`Expected number but observed string: ${e}`)),t}if("number"==typeof e)return e;throw new TypeError(`Expected number, got ${typeof e}: ${e}`)}},fn=(Math.ceil(2**127*(2-2**-23)),(e,t)=>{if(null==e){if(t)throw new TypeError(`Expected a non-null value for ${t}`);throw new TypeError("Expected a non-null value")}return e}),hn=e=>{if(null==e)return;if("object"==typeof e&&!Array.isArray(e))return e;const t=Array.isArray(e)?"array":typeof e;throw new TypeError(`Expected object, got ${t}: ${e}`)},mn=e=>{if(null!=e){if("string"==typeof e)return e;if(["boolean","number","bigint"].includes(typeof e))return vn.warn(gn(`Expected string, got ${typeof e}: ${e}`)),String(e);throw new TypeError(`Expected string, got ${typeof e}: ${e}`)}},pn=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,gn=e=>String(new TypeError(e).stack||e).split("\n").slice(0,5).filter((e=>!e.includes("stackTraceWarning"))).join("\n"),vn={warn:console.warn},bn=e=>{if(null==e)return;let t;if("number"==typeof e)t=e;else{if("string"!=typeof e)throw new TypeError("Epoch timestamps must be expressed as floating point numbers or their string representation");t=(e=>un("string"==typeof e?(e=>{const t=e.match(pn);if(null===t||t[0].length!==e.length)throw new TypeError("Expected real number, got implicit NaN");return parseFloat(e)})(e):e))(e)}if(Number.isNaN(t)||t===1/0||t===-1/0)throw new TypeError("Epoch timestamps must be valid, non-Infinite, non-NaN numerics");return new Date(Math.round(1e3*t))};class yn extends Error{constructor(e){super(e.message),Object.setPrototypeOf(this,yn.prototype),this.name=e.name,this.$fault=e.$fault,this.$metadata=e.$metadata}}const Sn=(e,t={})=>{Object.entries(t).filter((([,e])=>void 0!==e)).forEach((([t,n])=>{null!=e[t]&&""!==e[t]||(e[t]=n)}));const n=e.message||e.Message||"UnknownError";return e.message=n,delete e.Message,e},Cn=e=>{switch(e){case"standard":case"cross-region":return{retryMode:"standard",connectionTimeout:3100};case"in-region":return{retryMode:"standard",connectionTimeout:1100};case"mobile":return{retryMode:"standard",connectionTimeout:3e4};default:return{}}},wn=e=>{const t=[];for(const n in s){const i=s[n];void 0!==e[i]&&t.push({algorithmId:()=>i,checksumConstructor:()=>e[i]})}return{_checksumAlgorithms:t,addChecksumAlgorithm(e){this._checksumAlgorithms.push(e)},checksumAlgorithms(){return this._checksumAlgorithms}}},Mn=e=>{const t={};return e.checksumAlgorithms().forEach((e=>{t[e.algorithmId()]=e.checksumConstructor()})),t},zn=e=>{let t=e.retryStrategy;return{setRetryStrategy(e){t=e},retryStrategy:()=>t}},xn=e=>{const t={};return t.retryStrategy=e.retryStrategy(),t},kn=e=>({...wn(e),...zn(e)}),Vn=function(){const e=Object.getPrototypeOf(this).constructor,t=new(Function.bind.apply(String,[null,...arguments]));return Object.setPrototypeOf(t,e.prototype),t};function En(e,t,n){let i,r,a;if(void 0===t&&void 0===n)i={},a=e;else{if(i=e,"function"==typeof t)return r=t,a=n,_n(i,r,a);a=t}for(const e of Object.keys(a))Array.isArray(a[e])?Ln(i,null,a,e):i[e]=a[e];return i}Vn.prototype=Object.create(String.prototype,{constructor:{value:Vn,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf(Vn,String);const Hn=(e,t)=>{const n={};for(const i in t)Ln(n,e,t,i);return n},_n=(e,t,n)=>En(e,Object.entries(n).reduce(((e,[n,i])=>(Array.isArray(i)?e[n]=i:e[n]="function"==typeof i?[t,i()]:[t,i],e)),{})),Ln=(e,t,n,i)=>{if(null!==t){let r=n[i];"function"==typeof r&&(r=[,r]);const[a=Tn,o=An,s=i]=r;return void(("function"==typeof a&&a(t[s])||"function"!=typeof a&&a)&&(e[i]=o(t[s])))}let[r,a]=n[i];if("function"==typeof a){let t;const n=void 0===r&&null!=(t=a()),o="function"==typeof r&&!!r(void 0)||"function"!=typeof r&&!!r;n?e[i]=t:o&&(e[i]=a())}else{const t=void 0===r&&null!=a,n="function"==typeof r&&!!r(a)||"function"!=typeof r&&!!r;(t||n)&&(e[i]=a)}},Tn=e=>null!=e,An=e=>e;function In(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}const Nn=(e,t,n,i,r,a)=>{if(null==t||void 0===t[n])throw new Error("No value provided for input HTTP label: "+n+".");{const t=i();if(t.length<=0)throw new Error("Empty value provided for input HTTP label: "+n+".");e=e.replace(r,a?t.split("/").map((e=>In(e))).join("/"):In(t))}return e},Pn=e=>{if(null==e)return{};if(Array.isArray(e))return e.filter((e=>null!=e));if("object"==typeof e){const t={};for(const n of Object.keys(e))null!=e[n]&&(t[n]=Pn(e[n]));return t}return e};var On=n(7643),Rn=n(1206),Dn=n.n(Rn);const Fn=({serviceId:e,clientVersion:t})=>async()=>{const n="undefined"!=typeof window&&window?.navigator?.userAgent?Dn().parse(window.navigator.userAgent):void 0,i=[["aws-sdk-js",t],["ua","2.0"],[`os/${n?.os?.name||"other"}`,n?.os?.version],["lang/js"],["md/browser",`${n?.browser?.name??"unknown"}_${n?.browser?.version??"unknown"}`]];return e&&i.push([`api/${e}`,t]),i},Bn=e=>{if("string"==typeof e){let t=e.length;for(let n=t-1;n>=0;n--){const i=e.charCodeAt(n);i>127&&i<=2047?t++:i>2047&&i<=65535&&(t+=2),i>=56320&&i<=57343&&n--}return t}if("number"==typeof e.byteLength)return e.byteLength;if("number"==typeof e.size)return e.size;throw new Error(`Body Length computation failed for ${e}`)},Un="required",jn="fn",Wn="argv",qn="ref",$n="isSet",Gn="booleanEquals",Kn="error",Jn="endpoint",Zn="tree",Qn="PartitionResult",Yn={[Un]:!1,type:"String"},Xn={[Un]:!0,default:!1,type:"Boolean"},ei={[qn]:"Endpoint"},ti={[jn]:Gn,[Wn]:[{[qn]:"UseFIPS"},!0]},ni={[jn]:Gn,[Wn]:[{[qn]:"UseDualStack"},!0]},ii={},ri={[jn]:"getAttr",[Wn]:[{[qn]:Qn},"supportsFIPS"]},ai={[jn]:Gn,[Wn]:[!0,{[jn]:"getAttr",[Wn]:[{[qn]:Qn},"supportsDualStack"]}]},oi=[ti],si=[ni],ci=[{[qn]:"Region"}],li={version:"1.0",parameters:{Region:Yn,UseDualStack:Xn,UseFIPS:Xn,Endpoint:Yn},rules:[{conditions:[{[jn]:$n,[Wn]:[ei]}],rules:[{conditions:oi,error:"Invalid Configuration: FIPS and custom endpoint are not supported",type:Kn},{conditions:si,error:"Invalid Configuration: Dualstack and custom endpoint are not supported",type:Kn},{endpoint:{url:ei,properties:ii,headers:ii},type:Jn}],type:Zn},{conditions:[{[jn]:$n,[Wn]:ci}],rules:[{conditions:[{[jn]:"aws.partition",[Wn]:ci,assign:Qn}],rules:[{conditions:[ti,ni],rules:[{conditions:[{[jn]:Gn,[Wn]:[!0,ri]},ai],rules:[{endpoint:{url:"https://messaging-chime-fips.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:ii,headers:ii},type:Jn}],type:Zn},{error:"FIPS and DualStack are enabled, but this partition does not support one or both",type:Kn}],type:Zn},{conditions:oi,rules:[{conditions:[{[jn]:Gn,[Wn]:[ri,!0]}],rules:[{endpoint:{url:"https://messaging-chime-fips.{Region}.{PartitionResult#dnsSuffix}",properties:ii,headers:ii},type:Jn}],type:Zn},{error:"FIPS is enabled but this partition does not support FIPS",type:Kn}],type:Zn},{conditions:si,rules:[{conditions:[ai],rules:[{endpoint:{url:"https://messaging-chime.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:ii,headers:ii},type:Jn}],type:Zn},{error:"DualStack is enabled but this partition does not support DualStack",type:Kn}],type:Zn},{endpoint:{url:"https://messaging-chime.{Region}.{PartitionResult#dnsSuffix}",properties:ii,headers:ii},type:Jn}],type:Zn}],type:Zn},{error:"Invalid Configuration: Missing Region",type:Kn}]},di=(e,t={})=>((e,t)=>{const{endpointParams:n,logger:i}=t,{parameters:r,rules:a}=e;t.logger?.debug?.(`${Ee} Initial EndpointParams: ${He(n)}`);const o=Object.entries(r).filter((([,e])=>null!=e.default)).map((([e,t])=>[e,t.default]));if(o.length>0)for(const[e,t]of o)n[e]=n[e]??t;const s=Object.entries(r).filter((([,e])=>e.required)).map((([e])=>e));for(const e of s)if(null==n[e])throw new _e(`Missing required parameter: '${e}'`);const c=$e(a,{endpointParams:n,logger:i,referenceRecord:{}});if(t.endpointParams?.Endpoint)try{const e=new URL(t.endpointParams.Endpoint),{protocol:n,port:i}=e;c.url.protocol=n,c.url.port=i}catch(e){}return t.logger?.debug?.(`${Ee} Resolved endpoint: ${He(c)}`),c})(li,{endpointParams:e,logger:t.logger}),ui=["in-region","cross-region","mobile","standard","legacy"],fi=e=>{let t=async()=>{if(void 0===e.region)throw new Error("Region is missing from runtimeConfig");const t=e.region;return"string"==typeof t?t:t()};return{setRegion(e){t=e},region:()=>t}};class hi extends Kt{constructor(...[e]){var t;const n=(e=>{const{region:t,useFipsEndpoint:n}=e;if(!t)throw new Error("Region is missing");return{...e,region:async()=>{if("string"==typeof t)return rt(t);const e=await t();return rt(e)},useFipsEndpoint:async()=>{const e="string"==typeof t?t:await t();return!!it(e)||("function"!=typeof n?Promise.resolve(!!n):n())}}})((t=(e=>{const t=(({defaultsMode:e}={})=>y((async()=>{const t="function"==typeof e?await e():e;switch(t?.toLowerCase()){case"auto":return Promise.resolve((()=>{const e="undefined"!=typeof window&&window?.navigator?.userAgent?Dn().parse(window.navigator.userAgent):void 0,t=e?.platform?.type;return"tablet"===t||"mobile"===t})()?"mobile":"standard");case"mobile":case"in-region":case"cross-region":case"standard":case"legacy":return Promise.resolve(t?.toLocaleLowerCase());case void 0:return Promise.resolve("legacy");default:throw new Error(`Invalid parameter for "defaultsMode", expect ${ui.join(", ")}, got ${t}`)}})))(e),n=()=>t().then(Cn),i=(e=>({apiVersion:"2021-05-15",base64Decoder:e?.base64Decoder??Qt,base64Encoder:e?.base64Encoder??Yt,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??di,extensions:e?.extensions??[],logger:e?.logger??new Ut,serviceId:e?.serviceId??"Chime SDK Messaging",urlParser:e?.urlParser??ut,utf8Decoder:e?.utf8Decoder??U,utf8Encoder:e?.utf8Encoder??B}))(e);return{...i,...e,runtime:"browser",defaultsMode:t,bodyLengthChecker:e?.bodyLengthChecker??Bn,credentialDefaultProvider:e?.credentialDefaultProvider??(e=>()=>Promise.reject(new Error("Credential is missing"))),defaultUserAgentProvider:e?.defaultUserAgentProvider??Fn({serviceId:i.serviceId,clientVersion:"3.465.0"}),maxAttempts:e?.maxAttempts??3,region:e?.region??(()=>Promise.reject("Region is missing")),requestHandler:e?.requestHandler??new nn(n),retryMode:e?.retryMode??(async()=>(await n()).retryMode||St),sha256:e?.sha256??On.Sha256,streamCollector:e?.streamCollector??rn,useDualstackEndpoint:e?.useDualstackEndpoint??(()=>Promise.resolve(!1)),useFipsEndpoint:e?.useFipsEndpoint??(()=>Promise.resolve(!1))}})(e||{}),{...t,useDualstackEndpoint:t.useDualstackEndpoint??!1,useFipsEndpoint:t.useFipsEndpoint??!1,defaultSigningName:"chime"})),r=(e=>{const t=e.tls??!0,{endpoint:n}=e,i=null!=n?async()=>ft(await F(n)()):void 0,r=!!n;return{...e,endpoint:i,tls:t,isCustomEndpoint:r,useDualstackEndpoint:F(e.useDualstackEndpoint??!1),useFipsEndpoint:F(e.useFipsEndpoint??!1)}})(n),a=(e=>{const{retryStrategy:t}=e,n=F(e.maxAttempts??3);return{...e,maxAttempts:n,retryStrategy:async()=>t||(await F(e.retryMode)()===bt.ADAPTIVE?new _t(n):new Ht(n))}})(r),o=(e=>{const t=e.credentials?"function"==typeof(a=e.credentials)?y(a,(e=>void 0!==e.expiration&&e.expiration.getTime()-Date.now()<3e5),(e=>void 0!==e.expiration)):F(a):e.credentialDefaultProvider(e),{signingEscapePath:n=!0,systemClockOffset:i=e.systemClockOffset||0,sha256:r}=e;var a;let o;return o=e.signer?F(e.signer):e.regionInfoProvider?()=>F(e.region)().then((async t=>[await e.regionInfoProvider(t,{useFipsEndpoint:await e.useFipsEndpoint(),useDualstackEndpoint:await e.useDualstackEndpoint()})||{},t])).then((([i,a])=>{const{signingRegion:o,signingService:s}=i;e.signingRegion=e.signingRegion||o||a,e.signingName=e.signingName||s||e.serviceId;const c={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:r,uriEscapePath:n};return new(e.signerConstructor||ge)(c)})):async i=>{const a=(i=Object.assign({},{name:"sigv4",signingName:e.signingName||e.defaultSigningName,signingRegion:await F(e.region)(),properties:{}},i)).signingRegion,o=i.signingName;e.signingRegion=e.signingRegion||a,e.signingName=e.signingName||o||e.serviceId;const s={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:r,uriEscapePath:n};return new(e.signerConstructor||ge)(s)},{...e,systemClockOffset:i,signingEscapePath:n,credentials:t,signer:o}})(a);var s;const c=((e,t)=>{const n={...fi(e),...kn(e),...i(e)};return t.forEach((e=>e.configure(n))),{...e,...(o=n,{region:o.region()}),...(a=n,{...Mn(a),...xn(a)}),...(r=n,{httpHandler:r.httpHandler()})};var r,a,o})((s=o,{...s,customUserAgent:"string"==typeof s.customUserAgent?[[s.customUserAgent]]:s.customUserAgent}),e?.extensions||[]);var l;super(c),this.config=c,this.middlewareStack.use((e=>({applyToStack:t=>{t.add((e=>(t,n)=>async i=>{let r=await e.retryStrategy();const a=await e.maxAttempts();if(!(e=>void 0!==e.acquireInitialRetryToken&&void 0!==e.refreshRetryTokenForRetry&&void 0!==e.recordSuccess)(r))return r?.mode&&(n.userAgent=[...n.userAgent||[],["cfg/retry-mode",r.mode]]),r.retry(t,i);{let e=await r.acquireInitialRetryToken(n.partition_id),s=new Error,c=0,l=0;const{request:d}=i;for(h.isInstance(d)&&(d.headers["amz-sdk-invocation-id"]=Ot());;)try{h.isInstance(d)&&(d.headers["amz-sdk-request"]=`attempt=${c+1}; max=${a}`);const{response:n,output:o}=await t(i);return r.recordSuccess(e),o.$metadata.attempts=c+1,o.$metadata.totalRetryDelay=l,{response:n,output:o}}catch(t){const n=Rt(t);s=(o=t)instanceof Error?o:o instanceof Object?Object.assign(new Error,o):"string"==typeof o?new Error(o):new Error(`AWS SDK error wrapper for ${o}`);try{e=await r.refreshRetryTokenForRetry(e,n)}catch(e){throw s.$metadata||(s.$metadata={}),s.$metadata.attempts=c+1,s.$metadata.totalRetryDelay=l,s}c=e.getRetryCount();const i=e.getRetryDelay();l+=i,await new Promise((e=>setTimeout(e,i)))}}var o})(e),Ft)}}))(this.config)),this.middlewareStack.use((e=>({applyToStack:t=>{var n;t.add((n=e.bodyLengthChecker,e=>async t=>{const i=t.request;if(h.isInstance(i)){const{body:e,headers:t}=i;if(e&&-1===Object.keys(t).map((e=>e.toLowerCase())).indexOf(at))try{const t=n(e);i.headers={...i.headers,[at]:String(t)}}catch(e){}}return e({...t,request:i})}),ot)}}))(this.config)),this.middlewareStack.use((e=>({applyToStack:t=>{t.add((e=>t=>async n=>{if(!h.isInstance(n.request))return t(n);const{request:i}=n,{handlerProtocol:r=""}=e.requestHandler.metadata||{};if(r.indexOf("h2")>=0&&!i.headers[":authority"])delete i.headers.host,i.headers[":authority"]=i.hostname+(i.port?":"+i.port:"");else if(!i.headers.host){let e=i.hostname;null!=i.port&&(e+=`:${i.port}`),i.headers.host=e}return t(n)})(e),p)}}))(this.config)),this.middlewareStack.use((this.config,{applyToStack:e=>{e.add(((e,t)=>async n=>{try{const i=await e(n),{clientName:r,commandName:a,logger:o,dynamoDbDocumentClientOptions:s={}}=t,{overrideInputFilterSensitiveLog:c,overrideOutputFilterSensitiveLog:l}=s,d=c??t.inputFilterSensitiveLog,u=l??t.outputFilterSensitiveLog,{$metadata:f,...h}=i.output;return o?.info?.({clientName:r,commandName:a,input:d(n.input),output:u(h),metadata:f}),i}catch(e){const{clientName:i,commandName:r,logger:a,dynamoDbDocumentClientOptions:o={}}=t,{overrideInputFilterSensitiveLog:s}=o,c=s??t.inputFilterSensitiveLog;throw a?.error?.({clientName:i,commandName:r,input:c(n.input),error:e,metadata:e.$metadata}),e}}),g)}})),this.middlewareStack.use((e=>({applyToStack:t=>{t.add((e=>t=>async n=>{const{request:i}=n;if(!h.isInstance(i)||"node"!==e.runtime||i.headers.hasOwnProperty(v))return t(n);const r=process.env.AWS_LAMBDA_FUNCTION_NAME,a=process.env._X_AMZN_TRACE_ID,o=e=>"string"==typeof e&&e.length>0;return o(r)&&o(a)&&(i.headers[v]=a),t({...n,request:i})})(e),b)}}))(this.config)),this.middlewareStack.use((e=>({applyToStack:t=>{t.addRelativeTo((e=>(t,n)=>async function(i){if(!h.isInstance(i.request))return t(i);const r=n.endpointV2?.properties?.authSchemes?.[0],a="sigv4a"===r?.name?r?.signingRegionSet?.join(","):void 0,o=await e.signer(r);let s;const c={signingDate:ye(e.systemClockOffset),signingRegion:a||n.signing_region,signingService:n.signing_service};if(n.s3ExpressIdentity){const e=o;if(s=await e.signWithCredentials(i.request,n.s3ExpressIdentity,c),s.headers["X-Amz-Security-Token"]||s.headers["x-amz-security-token"])throw new Error("X-Amz-Security-Token must not be set for s3-express requests.")}else s=await o.sign(i.request,c);const l=await t({...i,request:s}).catch((t=>{const n=t.ServerTime??Ce(t.$response);throw n&&(e.systemClockOffset=Se(n,e.systemClockOffset)),t})),d=Ce(l.response);return d&&(e.systemClockOffset=Se(d,e.systemClockOffset)),l})(e),we)}}))(this.config)),this.middlewareStack.use((l=this.config,{applyToStack:e=>{e.add((e=>(t,n)=>async i=>{const{request:r}=i;if(!h.isInstance(r))return t(i);const{headers:a}=r,o=n?.userAgent?.map(et)||[],s=(await e.defaultUserAgentProvider()).map(et),c=e?.customUserAgent?.map(et)||[],l=[].concat([...s,...o,...c]).join(" "),d=[...s.filter((e=>e.startsWith("aws-sdk-"))),...c].join(" ");return"browser"!==e.runtime?(d&&(a[Qe]=a[Qe]?`${a[Ze]} ${d}`:d),a[Ze]=l):a[Qe]=l,t({...i,request:r})})(l),tt)}}))}destroy(){super.destroy()}}class mi extends yn{constructor(e){super(e),Object.setPrototypeOf(this,mi.prototype)}}const pi={ALL:"ALL",FILTERED:"FILTERED",NONE:"NONE"},gi={DEFAULT:"DEFAULT",HIDDEN:"HIDDEN"},vi={AccessDenied:"AccessDenied",BadRequest:"BadRequest",Conflict:"Conflict",Forbidden:"Forbidden",NotFound:"NotFound",PhoneNumberAssociationsExist:"PhoneNumberAssociationsExist",PreconditionFailed:"PreconditionFailed",ResourceLimitExceeded:"ResourceLimitExceeded",ServiceFailure:"ServiceFailure",ServiceUnavailable:"ServiceUnavailable",Throttled:"Throttled",Throttling:"Throttling",Unauthorized:"Unauthorized",Unprocessable:"Unprocessable",VoiceConnectorGroupAssociationsExist:"VoiceConnectorGroupAssociationsExist"};class bi extends mi{constructor(e){super({name:"BadRequestException",$fault:"client",...e}),this.name="BadRequestException",this.$fault="client",Object.setPrototypeOf(this,bi.prototype),this.Code=e.Code,this.Message=e.Message}}class yi extends mi{constructor(e){super({name:"ConflictException",$fault:"client",...e}),this.name="ConflictException",this.$fault="client",Object.setPrototypeOf(this,yi.prototype),this.Code=e.Code,this.Message=e.Message}}class Si extends mi{constructor(e){super({name:"ForbiddenException",$fault:"client",...e}),this.name="ForbiddenException",this.$fault="client",Object.setPrototypeOf(this,Si.prototype),this.Code=e.Code,this.Message=e.Message}}class Ci extends mi{constructor(e){super({name:"NotFoundException",$fault:"client",...e}),this.name="NotFoundException",this.$fault="client",Object.setPrototypeOf(this,Ci.prototype),this.Code=e.Code,this.Message=e.Message}}class wi extends mi{constructor(e){super({name:"ServiceFailureException",$fault:"server",...e}),this.name="ServiceFailureException",this.$fault="server",Object.setPrototypeOf(this,wi.prototype),this.Code=e.Code,this.Message=e.Message}}class Mi extends mi{constructor(e){super({name:"ServiceUnavailableException",$fault:"server",...e}),this.name="ServiceUnavailableException",this.$fault="server",Object.setPrototypeOf(this,Mi.prototype),this.Code=e.Code,this.Message=e.Message}}class zi extends mi{constructor(e){super({name:"ThrottledClientException",$fault:"client",...e}),this.name="ThrottledClientException",this.$fault="client",Object.setPrototypeOf(this,zi.prototype),this.Code=e.Code,this.Message=e.Message}}class xi extends mi{constructor(e){super({name:"UnauthorizedClientException",$fault:"client",...e}),this.name="UnauthorizedClientException",this.$fault="client",Object.setPrototypeOf(this,xi.prototype),this.Code=e.Code,this.Message=e.Message}}class ki extends mi{constructor(e){super({name:"ResourceLimitExceededException",$fault:"client",...e}),this.name="ResourceLimitExceededException",this.$fault="client",Object.setPrototypeOf(this,ki.prototype),this.Code=e.Code,this.Message=e.Message}}const Vi={CREATED_TIMESTAMP:"CREATED_TIMESTAMP",LAST_MESSAGE_TIMESTAMP:"LAST_MESSAGE_TIMESTAMP"},Ei={RESTRICTED:"RESTRICTED",UNRESTRICTED:"UNRESTRICTED"},Hi={PRIVATE:"PRIVATE",PUBLIC:"PUBLIC"},_i={ASYNC:"ASYNC"},Li={ABORT:"ABORT",CONTINUE:"CONTINUE"},Ti={DEFAULT:"DEFAULT",VOIP:"VOIP"},Ai={NON_PERSISTENT:"NON_PERSISTENT",PERSISTENT:"PERSISTENT"},Ii={DENIED:"DENIED",FAILED:"FAILED",PENDING:"PENDING",SENT:"SENT"},Ni={CONTROL:"CONTROL",STANDARD:"STANDARD"},Pi={Channel:"Channel",ChannelMessage:"ChannelMessage"},Oi={ASCENDING:"ASCENDING",DESCENDING:"DESCENDING"},Ri={MEMBERS:"MEMBERS"},Di={EQUALS:"EQUALS",INCLUDES:"INCLUDES"},Fi=e=>({...e,...e.Name&&{Name:ln}}),Bi=e=>({...e,...e.InvitedBy&&{InvitedBy:Fi(e.InvitedBy)},...e.Members&&{Members:e.Members.map((e=>Fi(e)))}}),Ui=e=>({...e,...e.BatchChannelMemberships&&{BatchChannelMemberships:Bi(e.BatchChannelMemberships)}}),ji=e=>({...e,...e.Name&&{Name:ln},...e.Metadata&&{Metadata:ln},...e.CreatedBy&&{CreatedBy:Fi(e.CreatedBy)}}),Wi=e=>({...e,...e.Name&&{Name:ln},...e.Metadata&&{Metadata:ln}}),qi=e=>({...e,...e.Member&&{Member:Fi(e.Member)},...e.CreatedBy&&{CreatedBy:Fi(e.CreatedBy)}}),$i=e=>({...e,...e.Member&&{Member:Fi(e.Member)}}),Gi=e=>({...e,...e.Name&&{Name:ln}}),Ki=e=>({...e,...e.Processors&&{Processors:e.Processors.map((e=>Gi(e)))},...e.Name&&{Name:ln}}),Ji=e=>({...e,...e.StringValues&&{StringValues:ln}}),Zi=e=>({...e,...e.Title&&{Title:ln},...e.Body&&{Body:ln}}),Qi=e=>({...e,...e.Content&&{Content:ln},...e.Metadata&&{Metadata:ln},...e.PushNotification&&{PushNotification:Zi(e.PushNotification)},...e.MessageAttributes&&{MessageAttributes:Object.entries(e.MessageAttributes).reduce(((e,[t,n])=>(e[t]=Ji(n),e)),{})},...e.ContentType&&{ContentType:ln}}),Yi=e=>({...e,...e.ChannelMessage&&{ChannelMessage:Qi(e.ChannelMessage)}}),Xi=e=>({...e,...e.Name&&{Name:ln},...e.Processors&&{Processors:e.Processors.map((e=>Gi(e)))}}),er=e=>({...e,...e.InvitedBy&&{InvitedBy:Fi(e.InvitedBy)},...e.Member&&{Member:Fi(e.Member)}}),tr=e=>({...e,...e.Name&&{Name:ln},...e.Metadata&&{Metadata:ln}}),nr=e=>({...e,...e.ChannelSummary&&{ChannelSummary:tr(e.ChannelSummary)}}),ir=e=>({...e,...e.FilterRule&&{FilterRule:ln}}),rr=e=>({...e,...e.PushNotifications&&{PushNotifications:ir(e.PushNotifications)}}),ar=e=>({...e,...e.Member&&{Member:Fi(e.Member)}}),or=e=>({...e,...e.Content&&{Content:ln},...e.Metadata&&{Metadata:ln},...e.Sender&&{Sender:Fi(e.Sender)},...e.MessageAttributes&&{MessageAttributes:Object.entries(e.MessageAttributes).reduce(((e,[t,n])=>(e[t]=Ji(n),e)),{})},...e.ContentType&&{ContentType:ln}}),sr=e=>({...e,...e.Content&&{Content:ln},...e.Metadata&&{Metadata:ln},...e.Sender&&{Sender:Fi(e.Sender)},...e.MessageAttributes&&{MessageAttributes:Object.entries(e.MessageAttributes).reduce(((e,[t,n])=>(e[t]=Ji(n),e)),{})},...e.ContentType&&{ContentType:ln}}),cr=e=>({...e,...e.ChannelSummary&&{ChannelSummary:tr(e.ChannelSummary)}}),lr=e=>({...e,...e.Moderator&&{Moderator:Fi(e.Moderator)},...e.CreatedBy&&{CreatedBy:Fi(e.CreatedBy)}}),dr=e=>({...e,...e.Moderator&&{Moderator:Fi(e.Moderator)}}),ur=e=>({...e,...e.Key&&{Key:ln},...e.Value&&{Value:ln}}),fr=e=>({...e,...e.Name&&{Name:ln},...e.Metadata&&{Metadata:ln},...e.ClientRequestToken&&{ClientRequestToken:ln},...e.Tags&&{Tags:e.Tags.map((e=>ur(e)))},...e.ChannelId&&{ChannelId:ln}}),hr=e=>({...e,...e.Member&&{Member:Fi(e.Member)}}),mr=e=>({...e,...e.Processors&&{Processors:e.Processors.map((e=>Gi(e)))},...e.Name&&{Name:ln},...e.Tags&&{Tags:e.Tags.map((e=>ur(e)))},...e.ClientRequestToken&&{ClientRequestToken:ln}}),pr=e=>({...e,...e.Member&&{Member:Fi(e.Member)}}),gr=e=>({...e,...e.ChannelModerator&&{ChannelModerator:Fi(e.ChannelModerator)}}),vr=e=>({...e,...e.Channel&&{Channel:ji(e.Channel)}}),br=e=>({...e,...e.ChannelBan&&{ChannelBan:qi(e.ChannelBan)}}),yr=e=>({...e,...e.ChannelFlow&&{ChannelFlow:Ki(e.ChannelFlow)}}),Sr=e=>({...e,...e.ChannelMembership&&{ChannelMembership:er(e.ChannelMembership)}}),Cr=e=>({...e,...e.ChannelMembership&&{ChannelMembership:nr(e.ChannelMembership)}}),wr=e=>({...e,...e.Channel&&{Channel:cr(e.Channel)}}),Mr=e=>({...e,...e.ChannelModerator&&{ChannelModerator:lr(e.ChannelModerator)}}),zr=e=>({...e,...e.Member&&{Member:Fi(e.Member)},...e.Preferences&&{Preferences:rr(e.Preferences)}}),xr=e=>({...e,...e.ChannelMessage&&{ChannelMessage:or(e.ChannelMessage)}}),kr=e=>({...e,...e.NextToken&&{NextToken:ln}}),Vr=e=>({...e,...e.NextToken&&{NextToken:ln},...e.ChannelBans&&{ChannelBans:e.ChannelBans.map((e=>$i(e)))}}),Er=e=>({...e,...e.NextToken&&{NextToken:ln}}),Hr=e=>({...e,...e.ChannelFlows&&{ChannelFlows:e.ChannelFlows.map((e=>Xi(e)))},...e.NextToken&&{NextToken:ln}}),_r=e=>({...e,...e.NextToken&&{NextToken:ln}}),Lr=e=>({...e,...e.ChannelMemberships&&{ChannelMemberships:e.ChannelMemberships.map((e=>ar(e)))},...e.NextToken&&{NextToken:ln}}),Tr=e=>({...e,...e.NextToken&&{NextToken:ln}}),Ar=e=>({...e,...e.ChannelMemberships&&{ChannelMemberships:e.ChannelMemberships.map((e=>nr(e)))},...e.NextToken&&{NextToken:ln}}),Ir=e=>({...e,...e.NextToken&&{NextToken:ln}}),Nr=e=>({...e,...e.NextToken&&{NextToken:ln},...e.ChannelMessages&&{ChannelMessages:e.ChannelMessages.map((e=>sr(e)))}}),Pr=e=>({...e,...e.NextToken&&{NextToken:ln}}),Or=e=>({...e,...e.NextToken&&{NextToken:ln},...e.ChannelModerators&&{ChannelModerators:e.ChannelModerators.map((e=>dr(e)))}}),Rr=e=>({...e,...e.NextToken&&{NextToken:ln}}),Dr=e=>({...e,...e.Channels&&{Channels:e.Channels.map((e=>tr(e)))},...e.NextToken&&{NextToken:ln}}),Fr=e=>({...e,...e.NextToken&&{NextToken:ln}}),Br=e=>({...e,...e.Channels&&{Channels:e.Channels.map((e=>Wi(e)))},...e.NextToken&&{NextToken:ln}}),Ur=e=>({...e,...e.NextToken&&{NextToken:ln}}),jr=e=>({...e,...e.Channels&&{Channels:e.Channels.map((e=>cr(e)))},...e.NextToken&&{NextToken:ln}}),Wr=e=>({...e,...e.NextToken&&{NextToken:ln}}),qr=e=>({...e,...e.NextToken&&{NextToken:ln}}),$r=e=>({...e,...e.Tags&&{Tags:e.Tags.map((e=>ur(e)))}}),Gr=e=>({...e,...e.Preferences&&{Preferences:rr(e.Preferences)}}),Kr=e=>({...e,...e.Member&&{Member:Fi(e.Member)},...e.Preferences&&{Preferences:rr(e.Preferences)}}),Jr=e=>({...e,...e.NextToken&&{NextToken:ln}}),Zr=e=>({...e,...e.Channels&&{Channels:e.Channels.map((e=>tr(e)))},...e.NextToken&&{NextToken:ln}}),Qr=e=>({...e,...e.Content&&{Content:ln},...e.Metadata&&{Metadata:ln},...e.ClientRequestToken&&{ClientRequestToken:ln},...e.PushNotification&&{PushNotification:Zi(e.PushNotification)},...e.MessageAttributes&&{MessageAttributes:Object.entries(e.MessageAttributes).reduce(((e,[t,n])=>(e[t]=Ji(n),e)),{})},...e.ContentType&&{ContentType:ln}}),Yr=e=>({...e,...e.Tags&&{Tags:e.Tags.map((e=>ur(e)))}}),Xr=e=>({...e,...e.TagKeys&&{TagKeys:ln}}),ea=e=>({...e,...e.Name&&{Name:ln},...e.Metadata&&{Metadata:ln}}),ta=e=>({...e,...e.Processors&&{Processors:e.Processors.map((e=>Gi(e)))},...e.Name&&{Name:ln}}),na=e=>({...e,...e.Content&&{Content:ln},...e.Metadata&&{Metadata:ln},...e.ContentType&&{ContentType:ln}}),ia=(ra=mi,({output:e,parsedBody:t,errorCode:n})=>{(({output:e,parsedBody:t,exceptionCtor:n,errorCode:i})=>{const r=(e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}))(e),a=r.httpStatusCode?r.httpStatusCode+"":void 0,o=new n({name:t?.code||t?.Code||i||a||"UnknownError",$fault:"client",$metadata:r});throw Sn(o,t)})({output:e,parsedBody:t,exceptionCtor:ra,errorCode:n})});var ra;const aa=async(e,t)=>{const n=En({}),i=e.body,r=Hn(i,{Code:mn,Message:mn});Object.assign(n,r);const a=new bi({$metadata:ba(e),...n});return Sn(a,e.body)},oa=async(e,t)=>{const n=En({}),i=e.body,r=Hn(i,{Code:mn,Message:mn});Object.assign(n,r);const a=new yi({$metadata:ba(e),...n});return Sn(a,e.body)},sa=async(e,t)=>{const n=En({}),i=e.body,r=Hn(i,{Code:mn,Message:mn});Object.assign(n,r);const a=new Si({$metadata:ba(e),...n});return Sn(a,e.body)},ca=async(e,t)=>{const n=En({}),i=e.body,r=Hn(i,{Code:mn,Message:mn});Object.assign(n,r);const a=new Ci({$metadata:ba(e),...n});return Sn(a,e.body)},la=async(e,t)=>{const n=En({}),i=e.body,r=Hn(i,{Code:mn,Message:mn});Object.assign(n,r);const a=new ki({$metadata:ba(e),...n});return Sn(a,e.body)},da=async(e,t)=>{const n=En({}),i=e.body,r=Hn(i,{Code:mn,Message:mn});Object.assign(n,r);const a=new wi({$metadata:ba(e),...n});return Sn(a,e.body)},ua=async(e,t)=>{const n=En({}),i=e.body,r=Hn(i,{Code:mn,Message:mn});Object.assign(n,r);const a=new Mi({$metadata:ba(e),...n});return Sn(a,e.body)},fa=async(e,t)=>{const n=En({}),i=e.body,r=Hn(i,{Code:mn,Message:mn});Object.assign(n,r);const a=new zi({$metadata:ba(e),...n});return Sn(a,e.body)},ha=async(e,t)=>{const n=En({}),i=e.body,r=Hn(i,{Code:mn,Message:mn});Object.assign(n,r);const a=new xi({$metadata:ba(e),...n});return Sn(a,e.body)},ma=(e,t)=>Hn(e,{AppInstanceUserMembershipSummary:e=>((e,t)=>Hn(e,{ReadMarkerTimestamp:e=>fn(bn(un(e))),SubChannelId:mn,Type:mn}))(e),ChannelSummary:e=>ga(e,t)}),pa=(e,t)=>Hn(e,{ChannelSummary:e=>ga(e,t)}),ga=(e,t)=>Hn(e,{ChannelArn:mn,LastMessageTimestamp:e=>fn(bn(un(e))),Metadata:mn,Mode:mn,Name:mn,Privacy:mn}),va=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>ga(e,t))),ba=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),ya=e=>!(null==e||""===e||Object.getOwnPropertyNames(e).includes("length")&&0==e.length||Object.getOwnPropertyNames(e).includes("size")&&0==e.size),Sa=(e,t)=>((e,t)=>sn(e,t).then((e=>t.utf8Encoder(e))))(e,t).then((e=>e.length?JSON.parse(e):{})),Ca=async(e,t)=>{const n=await Sa(e,t);return n.message=n.message??n.Message,n},wa=(e,t)=>{const n=e=>{let t=e;return"number"==typeof t&&(t=t.toString()),t.indexOf(",")>=0&&(t=t.split(",")[0]),t.indexOf(":")>=0&&(t=t.split(":")[0]),t.indexOf("#")>=0&&(t=t.split("#")[1]),t},i=(r=e.headers,Object.keys(r).find((e=>e.toLowerCase()==="x-amzn-errortype".toLowerCase())));var r;return void 0!==i?n(e.headers[i]):void 0!==t.code?n(t.code):void 0!==t.__type?n(t.__type):void 0};class Ma extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Ma.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"AssociateChannelFlowCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"AssociateChannelFlow"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"content-type":"application/json","x-amz-chime-bearer":e.ChimeBearer});let s,c=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/channel-flow`;return c=Nn(c,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=JSON.stringify(Hn(e,{ChannelFlowArn:[]})),new h({protocol:i,hostname:n,port:r,method:"PUT",headers:o,path:c,body:s})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"NotFoundException":case"com.amazonaws.chimesdkmessaging#NotFoundException":throw await ca(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)});return await sn(e.body,t),n})(e,t)}}class za extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,za.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"BatchCreateChannelMembershipCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:Ui,[d]:{service:"ChimeMessagingService",operation:"BatchCreateChannelMembership"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"content-type":"application/json","x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/memberships`;s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1);const c=En({operation:[,"batch-create"]});let l;return l=JSON.stringify(Hn(e,{MemberArns:e=>Pn(e),SubChannelId:[],Type:[]})),new h({protocol:i,hostname:n,port:r,method:"POST",headers:o,path:s,query:c,body:l})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"NotFoundException":case"com.amazonaws.chimesdkmessaging#NotFoundException":throw await ca(n);case"ResourceLimitExceededException":case"com.amazonaws.chimesdkmessaging#ResourceLimitExceededException":throw await la(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{BatchChannelMemberships:Pn,Errors:Pn});return Object.assign(n,r),n})(e,t)}}class xa extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,xa.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"ChannelFlowCallbackCommand",inputFilterSensitiveLog:Yi,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"ChannelFlowCallback"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint();let o=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}`;o=Nn(o,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1);const s=En({operation:[,"channel-flow-callback"]});let c;return c=JSON.stringify(Hn(e,{CallbackId:[!0,e=>e??Ot()],ChannelMessage:e=>Pn(e),DeleteResource:[]})),new h({protocol:i,hostname:n,port:r,method:"POST",headers:{"content-type":"application/json"},path:o,query:s,body:c})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{CallbackId:mn,ChannelArn:mn});return Object.assign(n,r),n})(e,t)}}class ka extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,ka.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"CreateChannelBanCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:hr,[d]:{service:"ChimeMessagingService",operation:"CreateChannelBan"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"content-type":"application/json","x-amz-chime-bearer":e.ChimeBearer});let s,c=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/bans`;return c=Nn(c,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=JSON.stringify(Hn(e,{MemberArn:[]})),new h({protocol:i,hostname:n,port:r,method:"POST",headers:o,path:c,body:s})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(201!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ResourceLimitExceededException":case"com.amazonaws.chimesdkmessaging#ResourceLimitExceededException":throw await la(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn,Member:Pn});return Object.assign(n,r),n})(e,t)}}class Va extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Va.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"CreateChannelCommand",inputFilterSensitiveLog:fr,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"CreateChannel"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"content-type":"application/json","x-amz-chime-bearer":e.ChimeBearer}),s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels`;let c;return c=JSON.stringify(Hn(e,{AppInstanceArn:[],ChannelId:[],ClientRequestToken:[!0,e=>e??Ot()],ElasticChannelConfiguration:e=>Pn(e),ExpirationSettings:e=>Pn(e),MemberArns:e=>Pn(e),Metadata:[],Mode:[],ModeratorArns:e=>Pn(e),Name:[],Privacy:[],Tags:e=>Pn(e)})),new h({protocol:i,hostname:n,port:r,method:"POST",headers:o,path:s,body:c})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(201!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ResourceLimitExceededException":case"com.amazonaws.chimesdkmessaging#ResourceLimitExceededException":throw await la(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn});return Object.assign(n,r),n})(e,t)}}class Ea extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Ea.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"CreateChannelFlowCommand",inputFilterSensitiveLog:mr,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"CreateChannelFlow"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channel-flows`;let s;return s=JSON.stringify(Hn(e,{AppInstanceArn:[],ClientRequestToken:[!0,e=>e??Ot()],Name:[],Processors:e=>Pn(e),Tags:e=>Pn(e)})),new h({protocol:i,hostname:n,port:r,method:"POST",headers:{"content-type":"application/json"},path:o,body:s})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(201!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ResourceLimitExceededException":case"com.amazonaws.chimesdkmessaging#ResourceLimitExceededException":throw await la(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelFlowArn:mn});return Object.assign(n,r),n})(e,t)}}class Ha extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Ha.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"CreateChannelMembershipCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:pr,[d]:{service:"ChimeMessagingService",operation:"CreateChannelMembership"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"content-type":"application/json","x-amz-chime-bearer":e.ChimeBearer});let s,c=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/memberships`;return c=Nn(c,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=JSON.stringify(Hn(e,{MemberArn:[],SubChannelId:[],Type:[]})),new h({protocol:i,hostname:n,port:r,method:"POST",headers:o,path:c,body:s})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(201!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"NotFoundException":case"com.amazonaws.chimesdkmessaging#NotFoundException":throw await ca(n);case"ResourceLimitExceededException":case"com.amazonaws.chimesdkmessaging#ResourceLimitExceededException":throw await la(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn,Member:Pn,SubChannelId:mn});return Object.assign(n,r),n})(e,t)}}class _a extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,_a.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"CreateChannelModeratorCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:gr,[d]:{service:"ChimeMessagingService",operation:"CreateChannelModerator"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"content-type":"application/json","x-amz-chime-bearer":e.ChimeBearer});let s,c=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/moderators`;return c=Nn(c,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=JSON.stringify(Hn(e,{ChannelModeratorArn:[]})),new h({protocol:i,hostname:n,port:r,method:"POST",headers:o,path:c,body:s})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(201!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ResourceLimitExceededException":case"com.amazonaws.chimesdkmessaging#ResourceLimitExceededException":throw await la(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn,ChannelModerator:Pn});return Object.assign(n,r),n})(e,t)}}class La extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,La.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"DeleteChannelBanCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"DeleteChannelBan"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/bans/{MemberArn}`;return s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=Nn(s,e,"MemberArn",(()=>e.MemberArn),"{MemberArn}",!1),new h({protocol:i,hostname:n,port:r,method:"DELETE",headers:o,path:s,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)});return await sn(e.body,t),n})(e,t)}}class Ta extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Ta.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"DeleteChannelCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"DeleteChannel"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}`;return s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),new h({protocol:i,hostname:n,port:r,method:"DELETE",headers:o,path:s,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)});return await sn(e.body,t),n})(e,t)}}class Aa extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Aa.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"DeleteChannelFlowCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"DeleteChannelFlow"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint();let o=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channel-flows/{ChannelFlowArn}`;return o=Nn(o,e,"ChannelFlowArn",(()=>e.ChannelFlowArn),"{ChannelFlowArn}",!1),new h({protocol:i,hostname:n,port:r,method:"DELETE",headers:{},path:o,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)});return await sn(e.body,t),n})(e,t)}}class Ia extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Ia.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"DeleteChannelMembershipCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"DeleteChannelMembership"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/memberships/{MemberArn}`;s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=Nn(s,e,"MemberArn",(()=>e.MemberArn),"{MemberArn}",!1);const c=En({"sub-channel-id":[,e.SubChannelId]});return new h({protocol:i,hostname:n,port:r,method:"DELETE",headers:o,path:s,query:c,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)});return await sn(e.body,t),n})(e,t)}}class Na extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Na.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"DeleteChannelMessageCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"DeleteChannelMessage"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/messages/{MessageId}`;s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=Nn(s,e,"MessageId",(()=>e.MessageId),"{MessageId}",!1);const c=En({"sub-channel-id":[,e.SubChannelId]});return new h({protocol:i,hostname:n,port:r,method:"DELETE",headers:o,path:s,query:c,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)});return await sn(e.body,t),n})(e,t)}}class Pa extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Pa.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"DeleteChannelModeratorCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"DeleteChannelModerator"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/moderators/{ChannelModeratorArn}`;return s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=Nn(s,e,"ChannelModeratorArn",(()=>e.ChannelModeratorArn),"{ChannelModeratorArn}",!1),new h({protocol:i,hostname:n,port:r,method:"DELETE",headers:o,path:s,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)});return await sn(e.body,t),n})(e,t)}}class Oa extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Oa.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"DeleteMessagingStreamingConfigurationsCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"DeleteMessagingStreamingConfigurations"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint();let o=`${a?.endsWith("/")?a.slice(0,-1):a||""}/app-instances/{AppInstanceArn}/streaming-configurations`;return o=Nn(o,e,"AppInstanceArn",(()=>e.AppInstanceArn),"{AppInstanceArn}",!1),new h({protocol:i,hostname:n,port:r,method:"DELETE",headers:{},path:o,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)});return await sn(e.body,t),n})(e,t)}}class Ra extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Ra.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"DescribeChannelBanCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:br,[d]:{service:"ChimeMessagingService",operation:"DescribeChannelBan"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/bans/{MemberArn}`;return s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=Nn(s,e,"MemberArn",(()=>e.MemberArn),"{MemberArn}",!1),new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"NotFoundException":case"com.amazonaws.chimesdkmessaging#NotFoundException":throw await ca(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelBan:e=>((e,t)=>Hn(e,{ChannelArn:mn,CreatedBy:Pn,CreatedTimestamp:e=>fn(bn(un(e))),Member:Pn}))(e)});return Object.assign(n,r),n})(e,t)}}class Da extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Da.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"DescribeChannelCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:vr,[d]:{service:"ChimeMessagingService",operation:"DescribeChannel"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}`;return s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{Channel:e=>((e,t)=>Hn(e,{ChannelArn:mn,ChannelFlowArn:mn,CreatedBy:Pn,CreatedTimestamp:e=>fn(bn(un(e))),ElasticChannelConfiguration:Pn,ExpirationSettings:Pn,LastMessageTimestamp:e=>fn(bn(un(e))),LastUpdatedTimestamp:e=>fn(bn(un(e))),Metadata:mn,Mode:mn,Name:mn,Privacy:mn}))(e)});return Object.assign(n,r),n})(e,t)}}class Fa extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Fa.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"DescribeChannelFlowCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:yr,[d]:{service:"ChimeMessagingService",operation:"DescribeChannelFlow"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint();let o=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channel-flows/{ChannelFlowArn}`;return o=Nn(o,e,"ChannelFlowArn",(()=>e.ChannelFlowArn),"{ChannelFlowArn}",!1),new h({protocol:i,hostname:n,port:r,method:"GET",headers:{},path:o,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelFlow:e=>((e,t)=>Hn(e,{ChannelFlowArn:mn,CreatedTimestamp:e=>fn(bn(un(e))),LastUpdatedTimestamp:e=>fn(bn(un(e))),Name:mn,Processors:Pn}))(e)});return Object.assign(n,r),n})(e,t)}}class Ba extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Ba.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"DescribeChannelMembershipCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:Sr,[d]:{service:"ChimeMessagingService",operation:"DescribeChannelMembership"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/memberships/{MemberArn}`;s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=Nn(s,e,"MemberArn",(()=>e.MemberArn),"{MemberArn}",!1);const c=En({"sub-channel-id":[,e.SubChannelId]});return new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,query:c,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"NotFoundException":case"com.amazonaws.chimesdkmessaging#NotFoundException":throw await ca(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelMembership:e=>((e,t)=>Hn(e,{ChannelArn:mn,CreatedTimestamp:e=>fn(bn(un(e))),InvitedBy:Pn,LastUpdatedTimestamp:e=>fn(bn(un(e))),Member:Pn,SubChannelId:mn,Type:mn}))(e)});return Object.assign(n,r),n})(e,t)}}class Ua extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Ua.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"DescribeChannelMembershipForAppInstanceUserCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:Cr,[d]:{service:"ChimeMessagingService",operation:"DescribeChannelMembershipForAppInstanceUser"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}`;s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1);const c=En({scope:[,"app-instance-user-membership"],"app-instance-user-arn":[,fn(e.AppInstanceUserArn,"AppInstanceUserArn")]});return new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,query:c,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelMembership:e=>ma(e,t)});return Object.assign(n,r),n})(e,t)}}class ja extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,ja.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"DescribeChannelModeratedByAppInstanceUserCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:wr,[d]:{service:"ChimeMessagingService",operation:"DescribeChannelModeratedByAppInstanceUser"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}`;s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1);const c=En({scope:[,"app-instance-user-moderated-channel"],"app-instance-user-arn":[,fn(e.AppInstanceUserArn,"AppInstanceUserArn")]});return new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,query:c,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{Channel:e=>pa(e,t)});return Object.assign(n,r),n})(e,t)}}class Wa extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Wa.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"DescribeChannelModeratorCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:Mr,[d]:{service:"ChimeMessagingService",operation:"DescribeChannelModerator"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/moderators/{ChannelModeratorArn}`;return s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=Nn(s,e,"ChannelModeratorArn",(()=>e.ChannelModeratorArn),"{ChannelModeratorArn}",!1),new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"NotFoundException":case"com.amazonaws.chimesdkmessaging#NotFoundException":throw await ca(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelModerator:e=>((e,t)=>Hn(e,{ChannelArn:mn,CreatedBy:Pn,CreatedTimestamp:e=>fn(bn(un(e))),Moderator:Pn}))(e)});return Object.assign(n,r),n})(e,t)}}class qa extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,qa.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"DisassociateChannelFlowCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"DisassociateChannelFlow"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/channel-flow/{ChannelFlowArn}`;return s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=Nn(s,e,"ChannelFlowArn",(()=>e.ChannelFlowArn),"{ChannelFlowArn}",!1),new h({protocol:i,hostname:n,port:r,method:"DELETE",headers:o,path:s,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"NotFoundException":case"com.amazonaws.chimesdkmessaging#NotFoundException":throw await ca(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)});return await sn(e.body,t),n})(e,t)}}class $a extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,$a.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"GetChannelMembershipPreferencesCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:zr,[d]:{service:"ChimeMessagingService",operation:"GetChannelMembershipPreferences"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/memberships/{MemberArn}/preferences`;return s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=Nn(s,e,"MemberArn",(()=>e.MemberArn),"{MemberArn}",!1),new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn,Member:Pn,Preferences:Pn});return Object.assign(n,r),n})(e,t)}}class Ga extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Ga.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"GetChannelMessageCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:xr,[d]:{service:"ChimeMessagingService",operation:"GetChannelMessage"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/messages/{MessageId}`;s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=Nn(s,e,"MessageId",(()=>e.MessageId),"{MessageId}",!1);const c=En({"sub-channel-id":[,e.SubChannelId]});return new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,query:c,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"NotFoundException":case"com.amazonaws.chimesdkmessaging#NotFoundException":throw await ca(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelMessage:e=>((e,t)=>Hn(e,{ChannelArn:mn,Content:mn,ContentType:mn,CreatedTimestamp:e=>fn(bn(un(e))),LastEditedTimestamp:e=>fn(bn(un(e))),LastUpdatedTimestamp:e=>fn(bn(un(e))),MessageAttributes:Pn,MessageId:mn,Metadata:mn,Persistence:mn,Redacted:dn,Sender:Pn,Status:Pn,SubChannelId:mn,Target:Pn,Type:mn}))(e)});return Object.assign(n,r),n})(e,t)}}class Ka extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Ka.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"GetChannelMessageStatusCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"GetChannelMessageStatus"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/messages/{MessageId}`;s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=Nn(s,e,"MessageId",(()=>e.MessageId),"{MessageId}",!1);const c=En({scope:[,"message-status"],"sub-channel-id":[,e.SubChannelId]});return new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,query:c,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{Status:Pn});return Object.assign(n,r),n})(e,t)}}class Ja extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Ja.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"GetMessagingSessionEndpointCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"GetMessagingSessionEndpoint"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=`${a?.endsWith("/")?a.slice(0,-1):a||""}/endpoints/messaging-session`;let s;return s="",new h({protocol:i,hostname:n,port:r,method:"GET",headers:{"content-type":"application/json"},path:o,body:""})})(0,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{Endpoint:Pn});return Object.assign(n,r),n})(e,t)}}class Za extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Za.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"GetMessagingStreamingConfigurationsCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"GetMessagingStreamingConfigurations"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint();let o=`${a?.endsWith("/")?a.slice(0,-1):a||""}/app-instances/{AppInstanceArn}/streaming-configurations`;return o=Nn(o,e,"AppInstanceArn",(()=>e.AppInstanceArn),"{AppInstanceArn}",!1),new h({protocol:i,hostname:n,port:r,method:"GET",headers:{},path:o,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"NotFoundException":case"com.amazonaws.chimesdkmessaging#NotFoundException":throw await ca(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{StreamingConfigurations:Pn});return Object.assign(n,r),n})(e,t)}}class Qa extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Qa.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"ListChannelBansCommand",inputFilterSensitiveLog:kr,outputFilterSensitiveLog:Vr,[d]:{service:"ChimeMessagingService",operation:"ListChannelBans"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/bans`;s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1);const c=En({"max-results":[()=>void 0!==e.MaxResults,()=>e.MaxResults.toString()],"next-token":[,e.NextToken]});return new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,query:c,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn,ChannelBans:Pn,NextToken:mn});return Object.assign(n,r),n})(e,t)}}class Ya extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Ya.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"ListChannelFlowsCommand",inputFilterSensitiveLog:Er,outputFilterSensitiveLog:Hr,[d]:{service:"ChimeMessagingService",operation:"ListChannelFlows"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channel-flows`,s=En({"app-instance-arn":[,fn(e.AppInstanceArn,"AppInstanceArn")],"max-results":[()=>void 0!==e.MaxResults,()=>e.MaxResults.toString()],"next-token":[,e.NextToken]});return new h({protocol:i,hostname:n,port:r,method:"GET",headers:{},path:o,query:s,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelFlows:Pn,NextToken:mn});return Object.assign(n,r),n})(e,t)}}class Xa extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,Xa.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"ListChannelMembershipsCommand",inputFilterSensitiveLog:_r,outputFilterSensitiveLog:Lr,[d]:{service:"ChimeMessagingService",operation:"ListChannelMemberships"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/memberships`;s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1);const c=En({type:[,e.Type],"max-results":[()=>void 0!==e.MaxResults,()=>e.MaxResults.toString()],"next-token":[,e.NextToken],"sub-channel-id":[,e.SubChannelId]});return new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,query:c,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn,ChannelMemberships:Pn,NextToken:mn});return Object.assign(n,r),n})(e,t)}}class eo extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,eo.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"ListChannelMembershipsForAppInstanceUserCommand",inputFilterSensitiveLog:Tr,outputFilterSensitiveLog:Ar,[d]:{service:"ChimeMessagingService",operation:"ListChannelMembershipsForAppInstanceUser"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer}),s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels`,c=En({scope:[,"app-instance-user-memberships"],"app-instance-user-arn":[,e.AppInstanceUserArn],"max-results":[()=>void 0!==e.MaxResults,()=>e.MaxResults.toString()],"next-token":[,e.NextToken]});return new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,query:c,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelMemberships:e=>((e,t)=>(e||[]).filter((e=>null!=e)).map((e=>ma(e,t))))(e,t),NextToken:mn});return Object.assign(n,r),n})(e,t)}}class to extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,to.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"ListChannelMessagesCommand",inputFilterSensitiveLog:Ir,outputFilterSensitiveLog:Nr,[d]:{service:"ChimeMessagingService",operation:"ListChannelMessages"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/messages`;s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1);const c=En({"sort-order":[,e.SortOrder],"not-before":[()=>void 0!==e.NotBefore,()=>(e.NotBefore.toISOString().split(".")[0]+"Z").toString()],"not-after":[()=>void 0!==e.NotAfter,()=>(e.NotAfter.toISOString().split(".")[0]+"Z").toString()],"max-results":[()=>void 0!==e.MaxResults,()=>e.MaxResults.toString()],"next-token":[,e.NextToken],"sub-channel-id":[,e.SubChannelId]});return new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,query:c,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn,ChannelMessages:e=>((e,t)=>(e||[]).filter((e=>null!=e)).map((e=>((e,t)=>Hn(e,{Content:mn,ContentType:mn,CreatedTimestamp:e=>fn(bn(un(e))),LastEditedTimestamp:e=>fn(bn(un(e))),LastUpdatedTimestamp:e=>fn(bn(un(e))),MessageAttributes:Pn,MessageId:mn,Metadata:mn,Redacted:dn,Sender:Pn,Status:Pn,Target:Pn,Type:mn}))(e))))(e),NextToken:mn,SubChannelId:mn});return Object.assign(n,r),n})(e,t)}}class no extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,no.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"ListChannelModeratorsCommand",inputFilterSensitiveLog:Pr,outputFilterSensitiveLog:Or,[d]:{service:"ChimeMessagingService",operation:"ListChannelModerators"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/moderators`;s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1);const c=En({"max-results":[()=>void 0!==e.MaxResults,()=>e.MaxResults.toString()],"next-token":[,e.NextToken]});return new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,query:c,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn,ChannelModerators:Pn,NextToken:mn});return Object.assign(n,r),n})(e,t)}}class io extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,io.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"ListChannelsAssociatedWithChannelFlowCommand",inputFilterSensitiveLog:Fr,outputFilterSensitiveLog:Br,[d]:{service:"ChimeMessagingService",operation:"ListChannelsAssociatedWithChannelFlow"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels`,s=En({scope:[,"channel-flow-associations"],"channel-flow-arn":[,fn(e.ChannelFlowArn,"ChannelFlowArn")],"max-results":[()=>void 0!==e.MaxResults,()=>e.MaxResults.toString()],"next-token":[,e.NextToken]});return new h({protocol:i,hostname:n,port:r,method:"GET",headers:{},path:o,query:s,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{Channels:Pn,NextToken:mn});return Object.assign(n,r),n})(e,t)}}class ro extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,ro.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"ListChannelsCommand",inputFilterSensitiveLog:Rr,outputFilterSensitiveLog:Dr,[d]:{service:"ChimeMessagingService",operation:"ListChannels"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer}),s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels`,c=En({"app-instance-arn":[,fn(e.AppInstanceArn,"AppInstanceArn")],privacy:[,e.Privacy],"max-results":[()=>void 0!==e.MaxResults,()=>e.MaxResults.toString()],"next-token":[,e.NextToken]});return new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,query:c,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{Channels:e=>va(e,t),NextToken:mn});return Object.assign(n,r),n})(e,t)}}class ao extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,ao.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"ListChannelsModeratedByAppInstanceUserCommand",inputFilterSensitiveLog:Ur,outputFilterSensitiveLog:jr,[d]:{service:"ChimeMessagingService",operation:"ListChannelsModeratedByAppInstanceUser"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer}),s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels`,c=En({scope:[,"app-instance-user-moderated-channels"],"app-instance-user-arn":[,e.AppInstanceUserArn],"max-results":[()=>void 0!==e.MaxResults,()=>e.MaxResults.toString()],"next-token":[,e.NextToken]});return new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,query:c,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{Channels:e=>((e,t)=>(e||[]).filter((e=>null!=e)).map((e=>pa(e,t))))(e,t),NextToken:mn});return Object.assign(n,r),n})(e,t)}}class oo extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,oo.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"ListSubChannelsCommand",inputFilterSensitiveLog:Wr,outputFilterSensitiveLog:qr,[d]:{service:"ChimeMessagingService",operation:"ListSubChannels"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/subchannels`;s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1);const c=En({"max-results":[()=>void 0!==e.MaxResults,()=>e.MaxResults.toString()],"next-token":[,e.NextToken]});return new h({protocol:i,hostname:n,port:r,method:"GET",headers:o,path:s,query:c,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn,NextToken:mn,SubChannels:Pn});return Object.assign(n,r),n})(e,t)}}class so extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,so.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"ListTagsForResourceCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:$r,[d]:{service:"ChimeMessagingService",operation:"ListTagsForResource"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=`${a?.endsWith("/")?a.slice(0,-1):a||""}/tags`,s=En({arn:[,fn(e.ResourceARN,"ResourceARN")]});return new h({protocol:i,hostname:n,port:r,method:"GET",headers:{},path:o,query:s,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{Tags:Pn});return Object.assign(n,r),n})(e,t)}}class co extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,co.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"PutChannelExpirationSettingsCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"PutChannelExpirationSettings"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"content-type":"application/json","x-amz-chime-bearer":e.ChimeBearer});let s,c=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/expiration-settings`;return c=Nn(c,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=JSON.stringify(Hn(e,{ExpirationSettings:e=>Pn(e)})),new h({protocol:i,hostname:n,port:r,method:"PUT",headers:o,path:c,body:s})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn,ExpirationSettings:Pn});return Object.assign(n,r),n})(e,t)}}class lo extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,lo.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"PutChannelMembershipPreferencesCommand",inputFilterSensitiveLog:Gr,outputFilterSensitiveLog:Kr,[d]:{service:"ChimeMessagingService",operation:"PutChannelMembershipPreferences"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"content-type":"application/json","x-amz-chime-bearer":e.ChimeBearer});let s,c=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/memberships/{MemberArn}/preferences`;return c=Nn(c,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),c=Nn(c,e,"MemberArn",(()=>e.MemberArn),"{MemberArn}",!1),s=JSON.stringify(Hn(e,{Preferences:e=>Pn(e)})),new h({protocol:i,hostname:n,port:r,method:"PUT",headers:o,path:c,body:s})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn,Member:Pn,Preferences:Pn});return Object.assign(n,r),n})(e,t)}}class uo extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,uo.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"PutMessagingStreamingConfigurationsCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"PutMessagingStreamingConfigurations"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint();let o,s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/app-instances/{AppInstanceArn}/streaming-configurations`;return s=Nn(s,e,"AppInstanceArn",(()=>e.AppInstanceArn),"{AppInstanceArn}",!1),o=JSON.stringify(Hn(e,{StreamingConfigurations:e=>Pn(e)})),new h({protocol:i,hostname:n,port:r,method:"PUT",headers:{"content-type":"application/json"},path:s,body:o})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"NotFoundException":case"com.amazonaws.chimesdkmessaging#NotFoundException":throw await ca(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{StreamingConfigurations:Pn});return Object.assign(n,r),n})(e,t)}}class fo extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,fo.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"RedactChannelMessageCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"RedactChannelMessage"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"content-type":"application/json","x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/messages/{MessageId}`;s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=Nn(s,e,"MessageId",(()=>e.MessageId),"{MessageId}",!1);const c=En({operation:[,"redact"]});let l;return l=JSON.stringify(Hn(e,{SubChannelId:[]})),new h({protocol:i,hostname:n,port:r,method:"POST",headers:o,path:s,query:c,body:l})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn,MessageId:mn,SubChannelId:mn});return Object.assign(n,r),n})(e,t)}}class ho extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,ho.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"SearchChannelsCommand",inputFilterSensitiveLog:Jr,outputFilterSensitiveLog:Zr,[d]:{service:"ChimeMessagingService",operation:"SearchChannels"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"content-type":"application/json","x-amz-chime-bearer":e.ChimeBearer}),s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels`,c=En({operation:[,"search"],"max-results":[()=>void 0!==e.MaxResults,()=>e.MaxResults.toString()],"next-token":[,e.NextToken]});let l;return l=JSON.stringify(Hn(e,{Fields:e=>Pn(e)})),new h({protocol:i,hostname:n,port:r,method:"POST",headers:o,path:s,query:c,body:l})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{Channels:e=>va(e,t),NextToken:mn});return Object.assign(n,r),n})(e,t)}}class mo extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,mo.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"SendChannelMessageCommand",inputFilterSensitiveLog:Qr,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"SendChannelMessage"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"content-type":"application/json","x-amz-chime-bearer":e.ChimeBearer});let s,c=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/messages`;return c=Nn(c,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=JSON.stringify(Hn(e,{ClientRequestToken:[!0,e=>e??Ot()],Content:[],ContentType:[],MessageAttributes:e=>Pn(e),Metadata:[],Persistence:[],PushNotification:e=>Pn(e),SubChannelId:[],Target:e=>Pn(e),Type:[]})),new h({protocol:i,hostname:n,port:r,method:"POST",headers:o,path:c,body:s})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(201!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn,MessageId:mn,Status:Pn,SubChannelId:mn});return Object.assign(n,r),n})(e,t)}}class po extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,po.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"TagResourceCommand",inputFilterSensitiveLog:Yr,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"TagResource"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=`${a?.endsWith("/")?a.slice(0,-1):a||""}/tags`,s=En({operation:[,"tag-resource"]});let c;return c=JSON.stringify(Hn(e,{ResourceARN:[],Tags:e=>Pn(e)})),new h({protocol:i,hostname:n,port:r,method:"POST",headers:{"content-type":"application/json"},path:o,query:s,body:c})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ResourceLimitExceededException":case"com.amazonaws.chimesdkmessaging#ResourceLimitExceededException":throw await la(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)});return await sn(e.body,t),n})(e,t)}}class go extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,go.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"UntagResourceCommand",inputFilterSensitiveLog:Xr,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"UntagResource"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=`${a?.endsWith("/")?a.slice(0,-1):a||""}/tags`,s=En({operation:[,"untag-resource"]});let c;return c=JSON.stringify(Hn(e,{ResourceARN:[],TagKeys:e=>Pn(e)})),new h({protocol:i,hostname:n,port:r,method:"POST",headers:{"content-type":"application/json"},path:o,query:s,body:c})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)});return await sn(e.body,t),n})(e,t)}}class vo extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,vo.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"UpdateChannelCommand",inputFilterSensitiveLog:ea,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"UpdateChannel"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"content-type":"application/json","x-amz-chime-bearer":e.ChimeBearer});let s,c=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}`;return c=Nn(c,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),s=JSON.stringify(Hn(e,{Metadata:[],Mode:[],Name:[]})),new h({protocol:i,hostname:n,port:r,method:"PUT",headers:o,path:c,body:s})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn});return Object.assign(n,r),n})(e,t)}}class bo extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,bo.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"UpdateChannelFlowCommand",inputFilterSensitiveLog:ta,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"UpdateChannelFlow"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint();let o,s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channel-flows/{ChannelFlowArn}`;return s=Nn(s,e,"ChannelFlowArn",(()=>e.ChannelFlowArn),"{ChannelFlowArn}",!1),o=JSON.stringify(Hn(e,{Name:[],Processors:e=>Pn(e)})),new h({protocol:i,hostname:n,port:r,method:"PUT",headers:{"content-type":"application/json"},path:s,body:o})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelFlowArn:mn});return Object.assign(n,r),n})(e,t)}}class yo extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,yo.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"UpdateChannelMessageCommand",inputFilterSensitiveLog:na,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"UpdateChannelMessage"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"content-type":"application/json","x-amz-chime-bearer":e.ChimeBearer});let s,c=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/messages/{MessageId}`;return c=Nn(c,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),c=Nn(c,e,"MessageId",(()=>e.MessageId),"{MessageId}",!1),s=JSON.stringify(Hn(e,{Content:[],ContentType:[],Metadata:[],SubChannelId:[]})),new h({protocol:i,hostname:n,port:r,method:"PUT",headers:o,path:c,body:s})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn,MessageId:mn,Status:Pn,SubChannelId:mn});return Object.assign(n,r),n})(e,t)}}class So extends cn{static getEndpointParameterInstructions(){return{UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}}constructor(e){super(),this.input=e}resolveMiddleware(e,t,n){this.middlewareStack.use(pt(t,this.serialize,this.deserialize)),this.middlewareStack.use(vt(t,So.getEndpointParameterInstructions()));const i=e.concat(this.middlewareStack),{logger:r}=t,a={logger:r,clientName:"ChimeSDKMessagingClient",commandName:"UpdateChannelReadMarkerCommand",inputFilterSensitiveLog:e=>e,outputFilterSensitiveLog:e=>e,[d]:{service:"ChimeMessagingService",operation:"UpdateChannelReadMarker"}},{requestHandler:o}=t;return i.resolve((e=>o.handle(e.request,n||{})),a)}serialize(e,t){return(async(e,t)=>{const{hostname:n,protocol:i="https",port:r,path:a}=await t.endpoint(),o=En({},ya,{"x-amz-chime-bearer":e.ChimeBearer});let s=`${a?.endsWith("/")?a.slice(0,-1):a||""}/channels/{ChannelArn}/readMarker`;return s=Nn(s,e,"ChannelArn",(()=>e.ChannelArn),"{ChannelArn}",!1),new h({protocol:i,hostname:n,port:r,method:"PUT",headers:o,path:s,body:void 0})})(e,t)}deserialize(e,t){return(async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return(async(e,t)=>{const n={...e,body:await Ca(e.body,t)},i=wa(e,n.body);switch(i){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await aa(n);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oa(n);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await sa(n);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await da(n);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await ua(n);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await fa(n);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await ha(n);default:const t=n.body;return ia({output:e,parsedBody:t,errorCode:i})}})(e,t);const n=En({$metadata:ba(e)}),i=fn(hn(await Sa(e.body,t)),"body"),r=Hn(i,{ChannelArn:mn});return Object.assign(n,r),n})(e,t)}}const Co={AssociateChannelFlowCommand:Ma,BatchCreateChannelMembershipCommand:za,ChannelFlowCallbackCommand:xa,CreateChannelCommand:Va,CreateChannelBanCommand:ka,CreateChannelFlowCommand:Ea,CreateChannelMembershipCommand:Ha,CreateChannelModeratorCommand:_a,DeleteChannelCommand:Ta,DeleteChannelBanCommand:La,DeleteChannelFlowCommand:Aa,DeleteChannelMembershipCommand:Ia,DeleteChannelMessageCommand:Na,DeleteChannelModeratorCommand:Pa,DeleteMessagingStreamingConfigurationsCommand:Oa,DescribeChannelCommand:Da,DescribeChannelBanCommand:Ra,DescribeChannelFlowCommand:Fa,DescribeChannelMembershipCommand:Ba,DescribeChannelMembershipForAppInstanceUserCommand:Ua,DescribeChannelModeratedByAppInstanceUserCommand:ja,DescribeChannelModeratorCommand:Wa,DisassociateChannelFlowCommand:qa,GetChannelMembershipPreferencesCommand:$a,GetChannelMessageCommand:Ga,GetChannelMessageStatusCommand:Ka,GetMessagingSessionEndpointCommand:Ja,GetMessagingStreamingConfigurationsCommand:Za,ListChannelBansCommand:Qa,ListChannelFlowsCommand:Ya,ListChannelMembershipsCommand:Xa,ListChannelMembershipsForAppInstanceUserCommand:eo,ListChannelMessagesCommand:to,ListChannelModeratorsCommand:no,ListChannelsCommand:ro,ListChannelsAssociatedWithChannelFlowCommand:io,ListChannelsModeratedByAppInstanceUserCommand:ao,ListSubChannelsCommand:oo,ListTagsForResourceCommand:so,PutChannelExpirationSettingsCommand:co,PutChannelMembershipPreferencesCommand:lo,PutMessagingStreamingConfigurationsCommand:uo,RedactChannelMessageCommand:fo,SearchChannelsCommand:ho,SendChannelMessageCommand:mo,TagResourceCommand:po,UntagResourceCommand:go,UpdateChannelCommand:vo,UpdateChannelFlowCommand:bo,UpdateChannelMessageCommand:yo,UpdateChannelReadMarkerCommand:So};class wo extends hi{}((e,t)=>{for(const n of Object.keys(e)){const i=e[n],r=async function(e,t,n){const r=new i(e);if("function"==typeof t)this.send(r,t);else{if("function"!=typeof n)return this.send(r,t);if("object"!=typeof t)throw new Error("Expected http options but got "+typeof t);this.send(r,t||{},n)}},a=(n[0].toLowerCase()+n.slice(1)).replace(/Command$/,"");t.prototype[a]=r}})(Co,wo);const Mo=async(e,t,...n)=>await e.send(new Qa(t),...n);async function*zo(e,t,...n){let i,r=e.startingToken||void 0,a=!0;for(;a;){if(t.NextToken=r,t.MaxResults=e.pageSize,!(e.client instanceof hi))throw new Error("Invalid client, expected ChimeSDKMessaging | ChimeSDKMessagingClient");i=await Mo(e.client,t,...n),yield i;const o=r;r=i.NextToken,a=!(!r||e.stopOnSameToken&&r===o)}}const xo=async(e,t,...n)=>await e.send(new Ya(t),...n);async function*ko(e,t,...n){let i,r=e.startingToken||void 0,a=!0;for(;a;){if(t.NextToken=r,t.MaxResults=e.pageSize,!(e.client instanceof hi))throw new Error("Invalid client, expected ChimeSDKMessaging | ChimeSDKMessagingClient");i=await xo(e.client,t,...n),yield i;const o=r;r=i.NextToken,a=!(!r||e.stopOnSameToken&&r===o)}}const Vo=async(e,t,...n)=>await e.send(new eo(t),...n);async function*Eo(e,t,...n){let i,r=e.startingToken||void 0,a=!0;for(;a;){if(t.NextToken=r,t.MaxResults=e.pageSize,!(e.client instanceof hi))throw new Error("Invalid client, expected ChimeSDKMessaging | ChimeSDKMessagingClient");i=await Vo(e.client,t,...n),yield i;const o=r;r=i.NextToken,a=!(!r||e.stopOnSameToken&&r===o)}}const Ho=async(e,t,...n)=>await e.send(new Xa(t),...n);async function*_o(e,t,...n){let i,r=e.startingToken||void 0,a=!0;for(;a;){if(t.NextToken=r,t.MaxResults=e.pageSize,!(e.client instanceof hi))throw new Error("Invalid client, expected ChimeSDKMessaging | ChimeSDKMessagingClient");i=await Ho(e.client,t,...n),yield i;const o=r;r=i.NextToken,a=!(!r||e.stopOnSameToken&&r===o)}}const Lo=async(e,t,...n)=>await e.send(new to(t),...n);async function*To(e,t,...n){let i,r=e.startingToken||void 0,a=!0;for(;a;){if(t.NextToken=r,t.MaxResults=e.pageSize,!(e.client instanceof hi))throw new Error("Invalid client, expected ChimeSDKMessaging | ChimeSDKMessagingClient");i=await Lo(e.client,t,...n),yield i;const o=r;r=i.NextToken,a=!(!r||e.stopOnSameToken&&r===o)}}const Ao=async(e,t,...n)=>await e.send(new no(t),...n);async function*Io(e,t,...n){let i,r=e.startingToken||void 0,a=!0;for(;a;){if(t.NextToken=r,t.MaxResults=e.pageSize,!(e.client instanceof hi))throw new Error("Invalid client, expected ChimeSDKMessaging | ChimeSDKMessagingClient");i=await Ao(e.client,t,...n),yield i;const o=r;r=i.NextToken,a=!(!r||e.stopOnSameToken&&r===o)}}const No=async(e,t,...n)=>await e.send(new io(t),...n);async function*Po(e,t,...n){let i,r=e.startingToken||void 0,a=!0;for(;a;){if(t.NextToken=r,t.MaxResults=e.pageSize,!(e.client instanceof hi))throw new Error("Invalid client, expected ChimeSDKMessaging | ChimeSDKMessagingClient");i=await No(e.client,t,...n),yield i;const o=r;r=i.NextToken,a=!(!r||e.stopOnSameToken&&r===o)}}const Oo=async(e,t,...n)=>await e.send(new ao(t),...n);async function*Ro(e,t,...n){let i,r=e.startingToken||void 0,a=!0;for(;a;){if(t.NextToken=r,t.MaxResults=e.pageSize,!(e.client instanceof hi))throw new Error("Invalid client, expected ChimeSDKMessaging | ChimeSDKMessagingClient");i=await Oo(e.client,t,...n),yield i;const o=r;r=i.NextToken,a=!(!r||e.stopOnSameToken&&r===o)}}const Do=async(e,t,...n)=>await e.send(new ro(t),...n);async function*Fo(e,t,...n){let i,r=e.startingToken||void 0,a=!0;for(;a;){if(t.NextToken=r,t.MaxResults=e.pageSize,!(e.client instanceof hi))throw new Error("Invalid client, expected ChimeSDKMessaging | ChimeSDKMessagingClient");i=await Do(e.client,t,...n),yield i;const o=r;r=i.NextToken,a=!(!r||e.stopOnSameToken&&r===o)}}const Bo=async(e,t,...n)=>await e.send(new oo(t),...n);async function*Uo(e,t,...n){let i,r=e.startingToken||void 0,a=!0;for(;a;){if(t.NextToken=r,t.MaxResults=e.pageSize,!(e.client instanceof hi))throw new Error("Invalid client, expected ChimeSDKMessaging | ChimeSDKMessagingClient");i=await Bo(e.client,t,...n),yield i;const o=r;r=i.NextToken,a=!(!r||e.stopOnSameToken&&r===o)}}const jo=async(e,t,...n)=>await e.send(new ho(t),...n);async function*Wo(e,t,...n){let i,r=e.startingToken||void 0,a=!0;for(;a;){if(t.NextToken=r,t.MaxResults=e.pageSize,!(e.client instanceof hi))throw new Error("Invalid client, expected ChimeSDKMessaging | ChimeSDKMessagingClient");i=await jo(e.client,t,...n),yield i;const o=r;r=i.NextToken,a=!(!r||e.stopOnSameToken&&r===o)}}},3884:(e,t,n)=>{"use strict";n.r(t),n.d(t,{fromHex:()=>a,toHex:()=>o});const i={},r={};for(let e=0;e<256;e++){let t=e.toString(16).toLowerCase();1===t.length&&(t=`0${t}`),i[e]=t,r[t]=e}function a(e){if(e.length%2!=0)throw new Error("Hex encoded strings must have an even number length");const t=new Uint8Array(e.length/2);for(let n=0;n{"use strict";n.r(t),n.d(t,{locateWindow:()=>r});const i={};function r(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:i}},470:(e,t,n)=>{"use strict";n.r(t),n.d(t,{fromUtf8:()=>i,toUtf8:()=>r});const i=e=>"function"==typeof TextEncoder?function(e){return(new TextEncoder).encode(e)}(e):(e=>{const t=[];for(let n=0,i=e.length;n>6|192,63&i|128);else if(n+1>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}else t.push(i>>12|224,i>>6&63|128,63&i|128)}return Uint8Array.from(t)})(e),r=e=>"function"==typeof TextDecoder?function(e){return new TextDecoder("utf-8").decode(e)}(e):(e=>{let t="";for(let n=0,i=e.length;ne.toString(16))).join("%");t+=decodeURIComponent(r)}else t+=String.fromCharCode((15&i)<<12|(63&e[++n])<<6|63&e[++n])}return t})(e)},4537:e=>{"use strict";e.exports=function(e,t){for(var n=new Array(arguments.length-1),i=0,r=2,a=!0;r{"use strict";var n=t;n.length=function(e){var t=e.length;if(!t)return 0;for(var n=0;--t%4>1&&"="===e.charAt(t);)++n;return Math.ceil(3*e.length)/4-n};for(var i=new Array(64),r=new Array(123),a=0;a<64;)r[i[a]=a<26?a+65:a<52?a+71:a<62?a-4:a-59|43]=a++;n.encode=function(e,t,n){for(var r,a=null,o=[],s=0,c=0;t>2],r=(3&l)<<4,c=1;break;case 1:o[s++]=i[r|l>>4],r=(15&l)<<2,c=2;break;case 2:o[s++]=i[r|l>>6],o[s++]=i[63&l],c=0}s>8191&&((a||(a=[])).push(String.fromCharCode.apply(String,o)),s=0)}return c&&(o[s++]=i[r],o[s++]=61,1===c&&(o[s++]=61)),a?(s&&a.push(String.fromCharCode.apply(String,o.slice(0,s))),a.join("")):String.fromCharCode.apply(String,o.slice(0,s))};var o="invalid encoding";n.decode=function(e,t,n){for(var i,a=n,s=0,c=0;c1)break;if(void 0===(l=r[l]))throw Error(o);switch(s){case 0:i=l,s=1;break;case 1:t[n++]=i<<2|(48&l)>>4,i=l,s=2;break;case 2:t[n++]=(15&i)<<4|(60&l)>>2,i=l,s=3;break;case 3:t[n++]=(3&i)<<6|l,s=0}}if(1===s)throw Error(o);return n-a},n.test=function(e){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e)}},9211:e=>{"use strict";function t(){this._listeners={}}e.exports=t,t.prototype.on=function(e,t,n){return(this._listeners[e]||(this._listeners[e]=[])).push({fn:t,ctx:n||this}),this},t.prototype.off=function(e,t){if(void 0===e)this._listeners={};else if(void 0===t)this._listeners[e]=[];else for(var n=this._listeners[e],i=0;i{"use strict";function t(e){return"undefined"!=typeof Float32Array?function(){var t=new Float32Array([-0]),n=new Uint8Array(t.buffer),i=128===n[3];function r(e,i,r){t[0]=e,i[r]=n[0],i[r+1]=n[1],i[r+2]=n[2],i[r+3]=n[3]}function a(e,i,r){t[0]=e,i[r]=n[3],i[r+1]=n[2],i[r+2]=n[1],i[r+3]=n[0]}function o(e,i){return n[0]=e[i],n[1]=e[i+1],n[2]=e[i+2],n[3]=e[i+3],t[0]}function s(e,i){return n[3]=e[i],n[2]=e[i+1],n[1]=e[i+2],n[0]=e[i+3],t[0]}e.writeFloatLE=i?r:a,e.writeFloatBE=i?a:r,e.readFloatLE=i?o:s,e.readFloatBE=i?s:o}():function(){function t(e,t,n,i){var r=t<0?1:0;if(r&&(t=-t),0===t)e(1/t>0?0:2147483648,n,i);else if(isNaN(t))e(2143289344,n,i);else if(t>34028234663852886e22)e((r<<31|2139095040)>>>0,n,i);else if(t<11754943508222875e-54)e((r<<31|Math.round(t/1401298464324817e-60))>>>0,n,i);else{var a=Math.floor(Math.log(t)/Math.LN2);e((r<<31|a+127<<23|8388607&Math.round(t*Math.pow(2,-a)*8388608))>>>0,n,i)}}function o(e,t,n){var i=e(t,n),r=2*(i>>31)+1,a=i>>>23&255,o=8388607&i;return 255===a?o?NaN:r*(1/0):0===a?1401298464324817e-60*r*o:r*Math.pow(2,a-150)*(o+8388608)}e.writeFloatLE=t.bind(null,n),e.writeFloatBE=t.bind(null,i),e.readFloatLE=o.bind(null,r),e.readFloatBE=o.bind(null,a)}(),"undefined"!=typeof Float64Array?function(){var t=new Float64Array([-0]),n=new Uint8Array(t.buffer),i=128===n[7];function r(e,i,r){t[0]=e,i[r]=n[0],i[r+1]=n[1],i[r+2]=n[2],i[r+3]=n[3],i[r+4]=n[4],i[r+5]=n[5],i[r+6]=n[6],i[r+7]=n[7]}function a(e,i,r){t[0]=e,i[r]=n[7],i[r+1]=n[6],i[r+2]=n[5],i[r+3]=n[4],i[r+4]=n[3],i[r+5]=n[2],i[r+6]=n[1],i[r+7]=n[0]}function o(e,i){return n[0]=e[i],n[1]=e[i+1],n[2]=e[i+2],n[3]=e[i+3],n[4]=e[i+4],n[5]=e[i+5],n[6]=e[i+6],n[7]=e[i+7],t[0]}function s(e,i){return n[7]=e[i],n[6]=e[i+1],n[5]=e[i+2],n[4]=e[i+3],n[3]=e[i+4],n[2]=e[i+5],n[1]=e[i+6],n[0]=e[i+7],t[0]}e.writeDoubleLE=i?r:a,e.writeDoubleBE=i?a:r,e.readDoubleLE=i?o:s,e.readDoubleBE=i?s:o}():function(){function t(e,t,n,i,r,a){var o=i<0?1:0;if(o&&(i=-i),0===i)e(0,r,a+t),e(1/i>0?0:2147483648,r,a+n);else if(isNaN(i))e(0,r,a+t),e(2146959360,r,a+n);else if(i>17976931348623157e292)e(0,r,a+t),e((o<<31|2146435072)>>>0,r,a+n);else{var s;if(i<22250738585072014e-324)e((s=i/5e-324)>>>0,r,a+t),e((o<<31|s/4294967296)>>>0,r,a+n);else{var c=Math.floor(Math.log(i)/Math.LN2);1024===c&&(c=1023),e(4503599627370496*(s=i*Math.pow(2,-c))>>>0,r,a+t),e((o<<31|c+1023<<20|1048576*s&1048575)>>>0,r,a+n)}}}function o(e,t,n,i,r){var a=e(i,r+t),o=e(i,r+n),s=2*(o>>31)+1,c=o>>>20&2047,l=4294967296*(1048575&o)+a;return 2047===c?l?NaN:s*(1/0):0===c?5e-324*s*l:s*Math.pow(2,c-1075)*(l+4503599627370496)}e.writeDoubleLE=t.bind(null,n,0,4),e.writeDoubleBE=t.bind(null,i,4,0),e.readDoubleLE=o.bind(null,r,0,4),e.readDoubleBE=o.bind(null,a,4,0)}(),e}function n(e,t,n){t[n]=255&e,t[n+1]=e>>>8&255,t[n+2]=e>>>16&255,t[n+3]=e>>>24}function i(e,t,n){t[n]=e>>>24,t[n+1]=e>>>16&255,t[n+2]=e>>>8&255,t[n+3]=255&e}function r(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}function a(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}e.exports=t(t)},7199:module=>{"use strict";function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}module.exports=inquire},6662:e=>{"use strict";e.exports=function(e,t,n){var i=n||8192,r=i>>>1,a=null,o=i;return function(n){if(n<1||n>r)return e(n);o+n>i&&(a=e(i),o=0);var s=t.call(a,o,o+=n);return 7&o&&(o=1+(7|o)),s}}},4997:(e,t)=>{"use strict";var n=t;n.length=function(e){for(var t=0,n=0,i=0;i191&&i<224?a[o++]=(31&i)<<6|63&e[t++]:i>239&&i<365?(i=((7&i)<<18|(63&e[t++])<<12|(63&e[t++])<<6|63&e[t++])-65536,a[o++]=55296+(i>>10),a[o++]=56320+(1023&i)):a[o++]=(15&i)<<12|(63&e[t++])<<6|63&e[t++],o>8191&&((r||(r=[])).push(String.fromCharCode.apply(String,a)),o=0);return r?(o&&r.push(String.fromCharCode.apply(String,a.slice(0,o))),r.join("")):String.fromCharCode.apply(String,a.slice(0,o))},n.write=function(e,t,n){for(var i,r,a=n,o=0;o>6|192,t[n++]=63&i|128):55296==(64512&i)&&56320==(64512&(r=e.charCodeAt(o+1)))?(i=65536+((1023&i)<<10)+(1023&r),++o,t[n++]=i>>18|240,t[n++]=i>>12&63|128,t[n++]=i>>6&63|128,t[n++]=63&i|128):(t[n++]=i>>12|224,t[n++]=i>>6&63|128,t[n++]=63&i|128);return n-a}},8320:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(3922));t.default=class{constructor(e,t,n,i=1e3,r=200){this.realtimeController=e,this.selfAttendeeId=t,this.hasBandwidthPriorityCallback=n,this.waitIntervalMs=i,this.updateIntervalMs=r,this.speakerScores={},this.speakerMuteState={},this.detectorCallbackToHandler=new Map,this.detectorCallbackToScoresTimer=new Map,this.detectorCallbackToActivityTimer=new Map,this.hasBandwidthPriority=!1,this.mostRecentUpdateTimestamp={}}needUpdate(e){return!this.activeSpeakers||0===this.speakerScores[e]&&this.activeSpeakers.includes(e)||this.speakerScores[e]>0&&!this.activeSpeakers.includes(e)}updateActiveSpeakers(e,t,n){if(!this.needUpdate(n))return;const i=[],r=Object.keys(this.speakerScores);for(let e=0;et.activeScore-e.activeScore)).filter((function(e){return e.activeScore>0})).map((function(e){return e.attendeeId}));this.activeSpeakers=a,t(a);const o=a.length>0&&a[0]===this.selfAttendeeId&&e.prioritizeVideoSendBandwidthForActiveSpeaker();this.hasBandwidthPriority!==o&&(this.hasBandwidthPriority=o,this.hasBandwidthPriorityCallback(o))}updateScore(e,t,n,i,r){const a=e.calculateScore(n,i,r);this.speakerScores[n]!==a&&(this.speakerScores[n]=a,this.mostRecentUpdateTimestamp[n]=Date.now(),this.updateActiveSpeakers(e,t,n))}subscribe(e,t,n,i){const r=(n,i)=>{if(!i)return this.speakerScores[n]=0,this.mostRecentUpdateTimestamp[n]=Date.now(),void this.updateActiveSpeakers(e,t,n);this.realtimeController.realtimeSubscribeToVolumeIndicator(n,((n,i,r,a)=>{this.mostRecentUpdateTimestamp[n]=Date.now(),null!==r&&(this.speakerMuteState[n]=r),this.updateScore(e,t,n,i,r)}))};this.detectorCallbackToHandler.set(t,r);const o=new a.default(this.updateIntervalMs);if(o.start((()=>{for(const n in this.speakerScores)Date.now()-this.mostRecentUpdateTimestamp[n]>this.waitIntervalMs&&this.updateScore(e,t,n,0,this.speakerMuteState[n])})),this.detectorCallbackToActivityTimer.set(t,o),n&&i){const e=new a.default(i);e.start((()=>{n(this.speakerScores)})),this.detectorCallbackToScoresTimer.set(t,e)}this.realtimeController.realtimeSubscribeToAttendeeIdPresence(r)}unsubscribe(e){const t=this.detectorCallbackToHandler.get(e);this.detectorCallbackToHandler.delete(e),t&&this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(t);const n=this.detectorCallbackToActivityTimer.get(e);n&&(n.stop(),this.detectorCallbackToActivityTimer.delete(e));const i=this.detectorCallbackToScoresTimer.get(e);i&&(i.stop(),this.detectorCallbackToHandler.delete(e))}destroy(){return i(this,void 0,void 0,(function*(){for(const e of this.detectorCallbackToHandler.values())this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(e);for(const e of this.detectorCallbackToActivityTimer.values())e.stop();for(const e of this.detectorCallbackToScoresTimer.values())e.stop();this.detectorCallbackToHandler.clear(),this.detectorCallbackToActivityTimer.clear(),this.detectorCallbackToScoresTimer.clear()}))}}},2363:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e=.9,t=.01,n=.2,i=.2){this.speakerWeight=e,this.cutoffThreshold=t,this.silenceThreshold=n,this.takeoverRate=i,this.volumes={}}calculateScore(e,t,n){(n||null===t)&&(t=0),this.volumes.hasOwnProperty(e)||(this.volumes[e]=0),t=t>this.silenceThreshold?1:0;const i=this.volumes[e]*this.speakerWeight+t*(1-this.speakerWeight);this.volumes[e]=i;for(const n in this.volumes)n!==e&&(this.volumes[n]=Math.max(this.volumes[n]-this.takeoverRate*t,0));return i{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class n{constructor(e,t){this.appName=e,this.appVersion=t}static create(e,t){const i=/^[a-zA-Z0-9]+[a-zA-Z0-9_-]*[a-zA-Z0-9]+$/g;if(!e||e.length>32)throw new Error("appName should be a valid string and 1 to 32 characters in length");if(!i.test(e))throw new Error(`appName must satisfy ${i} regular expression`);if(!t||t.length>32)throw new Error("appVersion should be a valid string and 1 to 32 characters in length");if(!/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/gm.test(t))throw new Error("appVersion must satisfy Semantic Versioning format");return new n(e,t)}}t.default=n},7602:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{}},6802:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(543)),o=r(n(7797));t.default=class{constructor(e){this.logger=e,this.audioDevice=null,this.audioElement=null,this.audioStream=null,this.browserBehavior=new a.default,this.observers=new Set}bindAudioElement(e){return i(this,void 0,void 0,(function*(){if(!e)throw new Error(`Cannot bind audio element: ${e}`);return this.audioElement=e,this.audioElement.autoplay=!0,this.bindAudioMix()}))}unbindAudioElement(){this.audioElement&&(this.audioElement.srcObject=null,this.audioElement=null,this.forEachObserver((e=>{this.audioStream&&e.meetingAudioStreamBecameInactive(this.audioStream)})))}bindAudioStream(e){return i(this,void 0,void 0,(function*(){if(e){this.audioStream=e;try{yield this.bindAudioMix()}catch(e){this.logger&&this.logger.warn(`Failed to bind audio stream: ${e}`)}}}))}bindAudioDevice(e){return i(this,void 0,void 0,(function*(){if(e&&!this.browserBehavior.supportsSetSinkId())throw new Error("Cannot select audio output device. This browser does not support setSinkId.");return this.audioDevice=e,this.bindAudioMix()}))}forEachObserver(e){for(const t of this.observers)o.default.nextTick((()=>{e(t)}))}bindAudioMix(){var e,t;return i(this,void 0,void 0,(function*(){if(!this.audioElement)return;const n=this.audioElement.srcObject;this.audioStream&&(this.audioElement.srcObject=this.audioStream),n!==this.audioStream&&this.forEachObserver((e=>{n&&e.meetingAudioStreamBecameInactive(n),this.audioStream&&e.meetingAudioStreamBecameActive(this.audioStream)}));const i=(null===(e=this.audioDevice)||void 0===e?void 0:e.deviceId)!==this.audioElement.sinkId;if(i&&void 0===this.audioElement.sinkId)throw new Error("Cannot select audio output device. This browser does not support setSinkId.");const r=this.audioDevice?this.audioDevice.deviceId:"";if(r===this.audioElement.sinkId)return;const a=this.audioElement,o=this.audioStream;if(this.browserBehavior.hasChromiumWebRTC()&&(a.srcObject=null),i)try{yield a.setSinkId(r)}catch(e){throw null===(t=this.logger)||void 0===t||t.error(`Failed to set sinkId for audio element: ${e}`),e}this.browserBehavior.hasChromiumWebRTC()&&(a.srcObject=o)}))}getCurrentMeetingAudioStream(){return i(this,void 0,void 0,(function*(){return this.audioStream}))}addAudioMixObserver(e){return i(this,void 0,void 0,(function*(){this.observers.add(e)}))}removeAudioMixObserver(e){return i(this,void 0,void 0,(function*(){this.observers.delete(e)}))}audioOutputDidChange(e){return i(this,void 0,void 0,(function*(){return this.logger.info("Receive an audio output change event"),this.bindAudioDevice(e)}))}}},3765:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(543));class a{constructor(e=null,t=!0){this.audioBitrateBps=e,this.enableAudioRedundancy=!(new r.default).hasFirefoxWebRTC()&&t}static fullbandSpeechMono(e=!0){return new a(4e4,e)}static fullbandMusicMono(e=!0){return new a(64e3,e)}static fullbandMusicStereo(e=!0){return new a(128e3,e)}isStereo(){return 128e3===this.audioBitrateBps}hasRedundancyEnabled(){return this.enableAudioRedundancy}}t.default=a},1876:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DEFAULT_VIDEO_SUBSCRIPTION_LIMIT=void 0,t.DEFAULT_VIDEO_SUBSCRIPTION_LIMIT=25,t.default=class{constructor(){this.logger=null,this.browserBehavior=null,this.meetingSessionConfiguration=null,this.signalingClient=null,this.peer=null,this.previousSdpOffer=null,this.sdpOfferInit=null,this.audioVideoController=null,this.realtimeController=null,this.videoTileController=null,this.mediaStreamBroker=null,this.activeAudioInput=void 0,this.activeVideoInput=void 0,this.audioMixController=null,this.transceiverController=null,this.indexFrame=null,this.iceCandidates=[],this.iceCandidateHandler=null,this.iceGatheringStateEventHandler=null,this.sdpAnswer=null,this.turnCredentials=null,this.reconnectController=null,this.removableObservers=[],this.audioProfile=null,this.videoStreamIndex=null,this.videoDownlinkBandwidthPolicy=null,this.videoUplinkBandwidthPolicy=null,this.lastKnownVideoAvailability=null,this.videoCaptureAndEncodeParameter=null,this.videosToReceive=null,this.lastVideosToReceive=null,this.videoSubscriptions=null,this.lastVideoSubscriptionConfiguration=new Map,this.videoSubscriptionLimit=t.DEFAULT_VIDEO_SUBSCRIPTION_LIMIT,this.previousSdpAnswerAsString="",this.serverSupportsCompression=!1,this.videoSendCodecPreferences=[],this.currentVideoSendCodec=void 0,this.meetingSupportedVideoSendCodecPreferences=void 0,this.videosPaused=null,this.videoDuplexMode=null,this.volumeIndicatorAdapter=null,this.statsCollector=null,this.connectionMonitor=null,this.videoInputAttachedTimestampMs=0,this.audioDeviceInformation={},this.videoDeviceInformation={},this.enableSimulcast=!1,this.eventController=null,this.signalingOpenDurationMs=null,this.iceGatheringDurationMs=null,this.startAudioVideoTimestamp=null,this.attendeePresenceDurationMs=null,this.meetingStartDurationMs=null,this.poorConnectionCount=0,this.maxVideoTileCount=0,this.startTimeMs=null}resetConnectionSpecificState(){this.peer&&this.peer.close(),this.peer=null,this.previousSdpOffer=null,this.sdpOfferInit=null,void 0!==this.transceiverController&&this.transceiverController.reset(),this.indexFrame=null,this.iceCandidates=[],this.iceCandidateHandler=null,this.sdpAnswer=null,this.turnCredentials=null,this.videoDownlinkBandwidthPolicy.reset(),this.videoUplinkBandwidthPolicy.reset&&this.videoUplinkBandwidthPolicy.reset(),this.lastVideosToReceive=null,this.lastVideoSubscriptionConfiguration=new Map,this.videoSubscriptions=null,this.videoSubscriptionLimit=t.DEFAULT_VIDEO_SUBSCRIPTION_LIMIT,this.previousSdpAnswerAsString="",this.serverSupportsCompression=!1,this.currentVideoSendCodec=void 0,this.meetingSupportedVideoSendCodecPreferences=void 0,this.videoDuplexMode=null}}},9059:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t},o=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const c=s(n(8320)),l=s(n(6802)),d=s(n(3765)),u=s(n(543)),f=s(n(6688)),h=s(n(8581)),m=s(n(3789)),p=s(n(5687)),g=s(n(5723)),v=s(n(214)),b=s(n(7500)),y=s(n(983)),S=s(n(7797)),C=s(n(9678)),w=s(n(3860)),M=s(n(9553)),z=s(n(3013)),x=s(n(1208)),k=a(n(7103)),V=s(n(9416)),E=s(n(9101)),H=n(289),_=s(n(8597)),L=s(n(8358)),T=s(n(3216)),A=s(n(7408)),I=s(n(5482)),N=s(n(1129)),P=s(n(6240)),O=s(n(1960)),R=s(n(6180)),D=s(n(2748)),F=s(n(1981)),B=s(n(4543)),U=s(n(8556)),j=s(n(9945)),W=s(n(1209)),q=s(n(6274)),$=s(n(5547)),G=s(n(120)),K=s(n(9560)),J=s(n(9485)),Z=s(n(7079)),Q=s(n(4833)),Y=s(n(5275)),X=s(n(5924)),ee=s(n(250)),te=s(n(6171)),ne=s(n(365)),ie=s(n(7377)),re=s(n(5785)),ae=s(n(9354)),oe=n(8660),se=s(n(1133)),ce=s(n(5185)),le=s(n(2880)),de=n(1819),ue=s(n(1508)),fe=s(n(1318)),he=s(n(4242)),me=s(n(2958)),pe=s(n(4922)),ge=s(n(4450)),ve=s(n(4442)),be=s(n(9751)),ye=s(n(1876));class Se{constructor(e,t,n,i,r,a){this._audioProfile=new d.default,this.connectionHealthData=new f.default,this.observerQueue=new Set,this.meetingSessionContext=new ye.default,this.enableSimulcast=!1,this.useUpdateTransceiverControllerForUplink=!1,this.totalRetryCount=0,this.startAudioVideoTimestamp=0,this.mayNeedRenegotiationForSimulcastLayerChange=!1,this.promotedToPrimaryMeeting=!1,this.hasGetRTCPeerConnectionStatsDeprecationMessageBeenSent=!1,this.receiveIndexTask=void 0,this.monitorTask=void 0,this.destroyed=!1,this._logger=t,this.sessionStateController=new C.default(this._logger),this._configuration=e,this._webSocketAdapter=n,this._realtimeController=new y.default(i),this._realtimeController.realtimeSetLocalAttendeeId(e.credentials.attendeeId,e.credentials.externalUserId),this._mediaStreamBroker=i,this._reconnectController=r,this._videoTileController=new me.default(new pe.default,this,this._logger),this._audioMixController=new l.default(this._logger),this._mediaStreamBroker.addMediaStreamBrokerObserver(this._audioMixController),this.meetingSessionContext.logger=this._logger,this._eventController=a}destroy(){return o(this,void 0,void 0,(function*(){this.observerQueue.clear(),this._mediaStreamBroker.removeMediaStreamBrokerObserver(this._audioMixController),this.destroyed=!0}))}get configuration(){return this._configuration}get realtimeController(){return this._realtimeController}get activeSpeakerDetector(){return this._activeSpeakerDetector||(this._activeSpeakerDetector=new c.default(this._realtimeController,this._configuration.credentials.attendeeId,this.handleHasBandwidthPriority.bind(this))),this._activeSpeakerDetector}get videoTileController(){return this._videoTileController}get audioMixController(){return this._audioMixController}get logger(){return this._logger}get rtcPeerConnection(){return this.meetingSessionContext&&this.meetingSessionContext.peer||null}get mediaStreamBroker(){return this._mediaStreamBroker}get eventController(){return this._eventController}getRTCPeerConnectionStats(e){return this.hasGetRTCPeerConnectionStatsDeprecationMessageBeenSent||(this.logger.warn("The `getRTCPeerConnectionStats()` is on its way to be deprecated. It makes an additional call to the `getStats` API and therefore may cause slight performance degradation. Please use the new API `clientMetricReport.getRTCStatsReport()` returned by `metricsDidReceive(clientMetricReport)` callback instead."),this.hasGetRTCPeerConnectionStatsDeprecationMessageBeenSent=!0),this.rtcPeerConnection?this.rtcPeerConnection.getStats(e):null}setAudioProfile(e){this._audioProfile=e}addObserver(e){this.logger.info("adding meeting observer"),this.observerQueue.add(e)}removeObserver(e){this.logger.info("removing meeting observer"),this.observerQueue.delete(e)}forEachObserver(e){for(const t of this.observerQueue)S.default.nextTick((()=>{this.observerQueue.has(t)&&e(t)}))}initSignalingClient(){this.connectionHealthData.reset(),this.meetingSessionContext.signalingClient||(this.meetingSessionContext=new ye.default,this.meetingSessionContext.logger=this.logger,this.meetingSessionContext.eventController=this.eventController,this.meetingSessionContext.browserBehavior=new u.default,this.meetingSessionContext.videoSendCodecPreferences=this.videoSendCodecPreferences,this.meetingSessionContext.audioProfile=this._audioProfile,this.meetingSessionContext.meetingSessionConfiguration=this.configuration,this.meetingSessionContext.signalingClient=new x.default(this._webSocketAdapter,this.logger))}uninstallPreStartObserver(){this.meetingSessionContext.signalingClient.removeObserver(this.preStartObserver),this.preStartObserver=void 0}prestart(){return this.logger.info("Pre-connecting signaling connection."),this.createOrReuseSignalingTask().run().then((()=>{const e=()=>o(this,void 0,void 0,(function*(){this.logger.info("Early connection closed; discarding signaling task."),this.signalingTask=void 0,this.uninstallPreStartObserver()}));this.preStartObserver={handleSignalingClientEvent(t){t.type===V.default.WebSocketClosed&&e()}},this.meetingSessionContext.signalingClient.registerObserver(this.preStartObserver)})).catch((e=>{this.logger.error(`Signaling task pre-start failed: ${e}`),this.signalingTask=void 0}))}start(e){this.startReturningPromise(e).then((()=>{this.logger.info("start completed")})).catch((e=>{this.logger.error(`start failed: ${e}`)}))}startReturningPromise(e){return!0===(null==e?void 0:e.signalingOnly)?this.prestart():(this.activeSpeakerDetector,new Promise(((e,t)=>{this.sessionStateController.perform(w.default.Connect,(()=>{this.actionConnect(!1).then(e).catch(t)}))})))}connectWithPromises(e){const t=this.meetingSessionContext;this.monitorTask=new F.default(t,this.configuration.connectionHealthPolicyConfiguration,this.connectionHealthData);const n=this.monitorTask.once(),i=new W.default(t).once();this.receiveIndexTask=new K.default(t),this.monitorTask.pauseResubscribeCheck(),this.receiveIndexTask.pauseIngestion();const r=new Z.default(this.logger,"Signaling",[this.createOrReuseSignalingTask(),new D.default(t),new J.default(t),new O.default(t),new $.default(t),this.receiveIndexTask]).once(),a=new I.default(t).once(r),o=new L.default(t).once(a,i),s=new N.default(t).once(o),c=new Q.default(t).once(s),l=new P.default(t).once(c),d=new X.default(t).once(l),u=new q.default(t).once(d);return new Z.default(this.logger,this.wrapTaskName("AudioVideoStart"),[n,((e,t)=>new ee.default(this.logger,t,e))(this.configuration.connectionTimeoutMs,new Z.default(this.logger,"Peer",[d,u,e?new ee.default(this.logger,new U.default(this.logger,"FinalizeConnection",[new te.default(t),new Y.default(t)]),this.meetingSessionContext.meetingSessionConfiguration.attendeePresenceTimeoutMs):new Y.default(t)]))])}actionConnect(e){var t;return o(this,void 0,void 0,(function*(){this.initSignalingClient(),this.uninstallPreStartObserver(),this.meetingSessionContext.mediaStreamBroker=this._mediaStreamBroker,this.meetingSessionContext.realtimeController=this._realtimeController,this.meetingSessionContext.audioMixController=this._audioMixController,this.meetingSessionContext.audioVideoController=this,this.enableSimulcast=this.configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers&&(new u.default).hasChromiumWebRTC();const n=!!this.configuration.urls.audioHostURL;if(n?this.enableSimulcast?(this.logger.info("Using transceiver controller with simulcast support"),new v.default(this.configuration.credentials.attendeeId).hasModality(v.default.MODALITY_CONTENT)?this.meetingSessionContext.transceiverController=new ie.default(this.logger,this.meetingSessionContext.browserBehavior,this.meetingSessionContext):this.meetingSessionContext.transceiverController=new re.default(this.logger,this.meetingSessionContext.browserBehavior,this.meetingSessionContext)):(this.logger.info("Using default transceiver controller"),this.meetingSessionContext.transceiverController=new ne.default(this.logger,this.meetingSessionContext.browserBehavior,this.meetingSessionContext)):(this.logger.info("Using video only transceiver controller"),this.meetingSessionContext.transceiverController=new ae.default(this.logger,this.meetingSessionContext.browserBehavior,this.meetingSessionContext)),this.meetingSessionContext.volumeIndicatorAdapter=new be.default(this.logger,this._realtimeController,Se.MIN_VOLUME_DECIBELS,Se.MAX_VOLUME_DECIBELS,this.configuration.credentials.attendeeId),this.meetingSessionContext.videoTileController=this._videoTileController,this.meetingSessionContext.videoDownlinkBandwidthPolicy=this.configuration.videoDownlinkBandwidthPolicy,this.meetingSessionContext.videoUplinkBandwidthPolicy=this.configuration.videoUplinkBandwidthPolicy,this.meetingSessionContext.enableSimulcast=this.enableSimulcast,this.enableSimulcast){let e=this.meetingSessionContext.videoUplinkBandwidthPolicy;e||(e=new ge.default(this.configuration.credentials.attendeeId,this.meetingSessionContext.logger),this.meetingSessionContext.videoUplinkBandwidthPolicy=e),e.addObserver(this),this.meetingSessionContext.videoDownlinkBandwidthPolicy||(this.meetingSessionContext.videoDownlinkBandwidthPolicy=new le.default(this.meetingSessionContext.logger)),this.meetingSessionContext.videoStreamIndex=new he.default(this.logger)}else this.meetingSessionContext.enableSimulcast=!1,this.meetingSessionContext.videoStreamIndex=new fe.default(this.logger),this.meetingSessionContext.videoUplinkBandwidthPolicy||(this.meetingSessionContext.videoUplinkBandwidthPolicy=new ve.default(this.configuration.credentials.attendeeId,!this.meetingSessionContext.browserBehavior.disableResolutionScaleDown(),this.meetingSessionContext.logger,this.meetingSessionContext.browserBehavior)),this.meetingSessionContext.videoDownlinkBandwidthPolicy||(this.meetingSessionContext.videoDownlinkBandwidthPolicy=new ce.default(this.configuration.credentials.attendeeId)),this.meetingSessionContext.videoUplinkBandwidthPolicy.setTransceiverController&&this.meetingSessionContext.videoUplinkBandwidthPolicy.updateTransceiverController&&(this.useUpdateTransceiverControllerForUplink=!0,this.meetingSessionContext.videoUplinkBandwidthPolicy.setTransceiverController(this.meetingSessionContext.transceiverController)),this.meetingSessionContext.audioProfile=this._audioProfile;this.meetingSessionContext.videoUplinkBandwidthPolicy&&this.maxUplinkBandwidthKbps&&this.meetingSessionContext.videoUplinkBandwidthPolicy.setIdealMaxBandwidthKbps(this.maxUplinkBandwidthKbps),this.meetingSessionContext.videoDownlinkBandwidthPolicy.bindToTileController&&this.meetingSessionContext.videoDownlinkBandwidthPolicy.bindToTileController(this._videoTileController),this.meetingSessionContext.videoDownlinkBandwidthPolicy.setWantsResubscribeObserver&&this.meetingSessionContext.videoDownlinkBandwidthPolicy.setWantsResubscribeObserver((()=>this.update({needsRenegotiation:!1}))),this.meetingSessionContext.lastKnownVideoAvailability=new g.default,this.meetingSessionContext.videoCaptureAndEncodeParameter=new se.default(0,0,0,0,!1),this.meetingSessionContext.videosToReceive=new ue.default,this.meetingSessionContext.videosPaused=new ue.default,this.meetingSessionContext.statsCollector=new _.default(this,this.logger),this.meetingSessionContext.connectionMonitor=new h.default(this,this._realtimeController,this.connectionHealthData,new b.default(this.meetingSessionContext.signalingClient,Se.PING_PONG_INTERVAL_MS,this.logger),this.meetingSessionContext.statsCollector),this.meetingSessionContext.reconnectController=this._reconnectController,this.meetingSessionContext.videoDeviceInformation={},e||(this.totalRetryCount=0,this._reconnectController.reset(),this.startAudioVideoTimestamp=Date.now(),this.forEachObserver((e=>{oe.Maybe.of(e.audioVideoDidStartConnecting).map((t=>t.bind(e)(!1)))})),null===(t=this.eventController)||void 0===t||t.publishEvent("meetingStartRequested")),this.meetingSessionContext.startAudioVideoTimestamp=this.startAudioVideoTimestamp,this._reconnectController.hasStartedConnectionAttempt()?this._reconnectController.startedConnectionAttempt(!1):this._reconnectController.startedConnectionAttempt(!0);const i=n&&this.meetingSessionContext.meetingSessionConfiguration.attendeePresenceTimeoutMs>0;this.logger.info("Needs to wait for attendee presence? "+i);const r=this.connectWithPromises(i);try{yield r.run(),this.connectionHealthData.setConnectionStartTime(),this._mediaStreamBroker.addMediaStreamBrokerObserver(this),this.sessionStateController.perform(w.default.FinishConnecting,(()=>{this.eventController&&(this.meetingSessionContext.meetingStartDurationMs=Date.now()-this.startAudioVideoTimestamp,this.eventController.publishEvent("meetingStartSucceeded",{maxVideoTileCount:this.meetingSessionContext.maxVideoTileCount,poorConnectionCount:this.meetingSessionContext.poorConnectionCount,retryCount:this.totalRetryCount,signalingOpenDurationMs:this.meetingSessionContext.signalingOpenDurationMs,iceGatheringDurationMs:this.meetingSessionContext.iceGatheringDurationMs,meetingStartDurationMs:this.meetingSessionContext.meetingStartDurationMs})),this.meetingSessionContext.startTimeMs=Date.now(),this.actionFinishConnecting()}))}catch(e){this.signalingTask=void 0;const t=new m.default(this.getMeetingStatusCode(e)||p.default.TaskFailed);if(this.logger.info(`Start failed: ${t} due to error ${e}.`),this.sessionStateController.state()===M.default.NotConnected)return void this.logger.info("Start failed and not connected. Not cleaning up.");this.sessionStateController.perform(w.default.Fail,(()=>o(this,void 0,void 0,(function*(){yield this.actionDisconnect(t,!0,e),this.handleMeetingSessionStatus(t,e)||this.notifyStop(t,e)}))))}}))}createOrReuseSignalingTask(){return this.signalingTask||(this.initSignalingClient(),this.signalingTask=new ee.default(this.logger,new B.default(this.meetingSessionContext),this.configuration.connectionTimeoutMs).once()),this.signalingTask}actionFinishConnecting(){this.signalingTask=void 0,this.meetingSessionContext.videoDuplexMode=H.SdkStreamServiceType.RX,this.meetingSessionContext.enableSimulcast||(this.useUpdateTransceiverControllerForUplink?this.meetingSessionContext.videoUplinkBandwidthPolicy.updateTransceiverController():this.enforceBandwidthLimitationForSender(this.meetingSessionContext.videoCaptureAndEncodeParameter.encodeBitrates()[0])),this.forEachObserver((e=>{oe.Maybe.of(e.audioVideoDidStart).map((t=>t.bind(e)()))})),this._reconnectController.reset(),this.receiveIndexTask.resumeIngestion(),this.monitorTask.resumeResubscribeCheck()}stopReturningPromise(){var e;return this._reconnectController.disableReconnect(),this.sessionStateController.state()===M.default.NotConnected?(null===(e=this.meetingSessionContext.signalingClient)||void 0===e||e.closeConnection(),this.cleanUpMediaStreamsAfterStop(),Promise.resolve()):new Promise(((e,t)=>{this.sessionStateController.perform(w.default.Disconnect,(()=>{this.logger.info("attendee left meeting, session will not be reconnected"),this.actionDisconnect(new m.default(p.default.Left),!1,null).then(e).catch(t)}))}))}stop(){this.stopReturningPromise()}actionDisconnect(e,t,n){return o(this,void 0,void 0,(function*(){try{yield new Z.default(this.logger,this.wrapTaskName("AudioVideoStop"),[new ee.default(this.logger,new R.default(this.meetingSessionContext),this.configuration.connectionTimeoutMs)]).run()}catch(e){this.logger.info("fail to stop")}try{const e=[new ee.default(this.logger,new A.default(this.meetingSessionContext),this.configuration.connectionTimeoutMs)];this.cleanUpMediaStreamsAfterStop(),yield new Z.default(this.logger,this.wrapTaskName("AudioVideoClean"),e).run()}catch(e){this.logger.info("fail to clean")}this.sessionStateController.perform(w.default.FinishDisconnecting,(()=>{t||this.notifyStop(e,n)}))}))}update(e={needsRenegotiation:!0}){let t=e.needsRenegotiation;if(t||(t=void 0===this.meetingSessionContext.peer),t||(t=!this.updateRemoteVideosFromPolicy()),t||(t=!this.updateLocalVideoFromPolicy()),this.meetingSessionContext.lastVideosToReceive=this.meetingSessionContext.videosToReceive,!t)return this.logger.info("Update request does not require resubscribe"),this.actionFinishUpdating(),!0;this.logger.info("Update request requires resubscribe");const n=this.sessionStateController.perform(w.default.Update,(()=>{this.actionUpdateWithRenegotiation(!0)}));return n===z.default.Transitioned||n===z.default.DeferredTransition}updateRemoteVideosFromPolicy(){if(this.meetingSessionContext.videoDownlinkBandwidthPolicy&&void 0!==this.meetingSessionContext.videoDownlinkBandwidthPolicy.getVideoPreferences&&void 0!==this.meetingSessionContext.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption&&!k.serverSideNetworkAdaptionIsNoneOrDefault(this.meetingSessionContext.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption())){if(!this.sendRemoteVideoUpdate())return!1;if(this.meetingSessionContext.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption()===k.default.BandwidthProbingAndRemoteVideoQualityAdaption)return this.isNotAddingOrRemovingStreams()}return this.updateRemoteVideosIfNotAddingOrRemovingStreams()}updateRemoteVideosIfNotAddingOrRemovingStreams(){const e=this.detectChangesInVideosToReceive();if(void 0===e)return!1;const t=e.added,n=e.simulcastStreamUpdates,i=e.removed,r=this.meetingSessionContext,a=[];for(const[e,t]of n.entries()){const n=new E.default;if(n.streamId=t,n.attendeeId=r.videoStreamIndex.attendeeIdForStreamId(t),n.mid=r.transceiverController.getMidForStreamId(e),void 0===n.mid)return this.logger.info(`No MID found for stream ID ${e}, cannot update stream without renegotiation`),!1;if(a.push(n),r.transceiverController.setStreamIdForMid(n.mid,t),r.videoStreamIndex.overrideStreamIdMappings(e,t),r.videoTileController.haveVideoTileForAttendeeId(n.attendeeId)){const e=r.videoTileController.getVideoTileForAttendeeId(n.attendeeId);if(!e.setStreamId)return!1;e.setStreamId(t)}}return 0!==a.length&&r.signalingClient.remoteVideoUpdate(a,[]),0===t.length&&0===i.length&&(r.videoStreamIndex.subscribeFrameSent(),!0)}detectChangesInVideosToReceive(){const e=this.meetingSessionContext;if(null===e.videosToReceive)return;if(!(e.transceiverController&&e.transceiverController.getMidForStreamId&&e.transceiverController.setStreamIdForMid&&e.videosToReceive.forEach&&e.signalingClient.remoteVideoUpdate&&e.videoStreamIndex.overrideStreamIdMappings))return;let t=[];const n=new Map;let i=[];if(null===e.lastVideosToReceive)t=e.videosToReceive.array();else{const r=e.videoStreamIndex;e.videosToReceive.forEach((i=>{if(e.lastVideosToReceive.contain(i))return;let a=!1;e.lastVideosToReceive.forEach((e=>{a||r.StreamIdsInSameGroup(e,i)&&(n.set(e,i),a=!0)})),a||t.push(i)})),i=e.lastVideosToReceive.array().filter((t=>{const i=e.videosToReceive.contain(t),r=n.has(t);return!i&&!r}))}return this.logger.info(`Request to update remote videos with added: ${t}, updated: ${[...n.entries()]}, removed: ${i}`),{added:t,removed:i,simulcastStreamUpdates:n}}isNotAddingOrRemovingStreams(){const e=this.detectChangesInVideosToReceive();if(void 0===e)return!1;const t=e.added,n=e.removed;return 0===t.length&&0===n.length}sendRemoteVideoUpdate(){const e=this.meetingSessionContext;if(null===e.videosToReceive)return!1;const t=e.videosToReceive.array().map((t=>e.videoStreamIndex.groupIdForStreamId(t))),n=de.convertVideoPreferencesToSignalingClientVideoSubscriptionConfiguration(e,t,e.videoDownlinkBandwidthPolicy.getVideoPreferences()),i=new Map,r=[];for(const t of n){let n=!1;if(e.lastVideoSubscriptionConfiguration.has(t.groupId)){const i=e.lastVideoSubscriptionConfiguration.get(t.groupId);t.equals(i)||(this.logger.debug(`${JSON.stringify(t)} does not equal ${JSON.stringify(i)}, sending update`),n=!0)}else n=!0;i.set(t.groupId,t),n&&r.push(t)}e.lastVideoSubscriptionConfiguration=i;const a=[];if(null!==e.lastVideosToReceive){const n=new Set(t);for(const t of e.lastVideosToReceive.array()){const i=e.videoStreamIndex.groupIdForStreamId(t);if(!n.has(i)){const t=e.transceiverController.getMidForGroupId(i);if(void 0===t){e.logger.warn(`Could not find MID for group ID to remove: ${i}`);continue}a.push(t)}}}return 0===r.length&&0===a.length||e.signalingClient.remoteVideoUpdate(r,a),!0}updateLocalVideoFromPolicy(){if(this.meetingSessionContext.enableSimulcast){const e=this.meetingSessionContext.videoUplinkBandwidthPolicy.chooseEncodingParameters();if(this.mayNeedRenegotiationForSimulcastLayerChange&&!this.negotiatedBitrateLayersAllocationRtpHeaderExtension())return this.logger.info("Needs regenotiation for local video simulcast layer change"),this.mayNeedRenegotiationForSimulcastLayerChange=!1,!1;this.meetingSessionContext.transceiverController.setEncodingParameters(e)}else this.meetingSessionContext.videoCaptureAndEncodeParameter=this.meetingSessionContext.videoUplinkBandwidthPolicy.chooseCaptureAndEncodeParameters();return this.logger.info("Updated local video from policy without renegotiation"),!0}negotiatedBitrateLayersAllocationRtpHeaderExtension(){if(!this.meetingSessionContext.transceiverController.localVideoTransceiver())return!1;const e=this.meetingSessionContext.transceiverController.localVideoTransceiver().sender.getParameters();return!(!e||!e.headerExtensions)&&e.headerExtensions.some((e=>"http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00"===e.uri))}restartLocalVideo(e){const t=()=>o(this,void 0,void 0,(function*(){this._videoTileController.hasStartedLocalVideoTile()&&(this.logger.info("stopping local video tile prior to local video restart"),this._videoTileController.stopLocalVideoTile(),this.logger.info("preparing local video restart update"),yield this.actionUpdateWithRenegotiation(!1),this.logger.info("starting local video tile for local video restart"),this._videoTileController.startLocalVideoTile()),this.logger.info("finalizing local video restart update"),yield this.actionUpdateWithRenegotiation(!0),e()})),n=this.sessionStateController.perform(w.default.Update,(()=>{t()}));return n===z.default.Transitioned||n===z.default.DeferredTransition}replaceLocalVideo(e){return o(this,void 0,void 0,(function*(){if(!e||e.getVideoTracks().length<1)throw new Error("could not acquire video track");if(!this.meetingSessionContext||!this.meetingSessionContext.peer)throw new Error("no active meeting and peer connection");const t=this.meetingSessionContext.videoTileController.getLocalVideoTile();if(t){const n=t.state(),i=e.getVideoTracks()[0].getSettings();t.bindVideoStream(n.boundAttendeeId,!0,e,i.width,i.height,n.streamId,n.boundExternalUserId)}yield this.meetingSessionContext.transceiverController.setVideoInput(e.getVideoTracks()[0]),this.meetingSessionContext.activeVideoInput=e,this.logger.info("Local video input is updated")}))}replaceLocalAudio(e){return o(this,void 0,void 0,(function*(){if(!e||e.getAudioTracks().length<1)throw new Error("could not acquire audio track");if(!this.meetingSessionContext||!this.meetingSessionContext.peer)throw new Error("no active meeting and peer connection");if(this.connectionHealthData.reset(),this.connectionHealthData.setConnectionStartTime(),!(yield this.meetingSessionContext.transceiverController.replaceAudioTrack(e.getAudioTracks()[0])))throw new Error("Failed to replace audio track");this.meetingSessionContext.activeAudioInput=e,this.logger.info("Local audio input is updated")}))}actionUpdateWithRenegotiation(e){return o(this,void 0,void 0,(function*(){this.monitorTask.pauseResubscribeCheck(),this.receiveIndexTask.pauseIngestion();try{yield new Z.default(this.logger,this.wrapTaskName("AudioVideoUpdate"),[new G.default(this.meetingSessionContext),new ee.default(this.logger,new Z.default(this.logger,"UpdateSession",[new L.default(this.meetingSessionContext),new N.default(this.meetingSessionContext),new Q.default(this.meetingSessionContext),new P.default(this.meetingSessionContext),new X.default(this.meetingSessionContext),new Y.default(this.meetingSessionContext)]),this.configuration.connectionTimeoutMs)]).run(),e&&this.sessionStateController.perform(w.default.FinishUpdating,(()=>{this.actionFinishUpdating()}))}catch(e){this.sessionStateController.perform(w.default.FinishUpdating,(()=>{const t=new m.default(this.getMeetingStatusCode(e)||p.default.TaskFailed);t.statusCode()!==p.default.IncompatibleSDP&&this.logger.info("failed to update audio-video session"),this.handleMeetingSessionStatus(t,e)}))}}))}notifyStop(e,t){var n;if(this.forEachObserver((t=>{oe.Maybe.of(t.audioVideoDidStop).map((n=>n.bind(t)(e)))})),this.promotedToPrimaryMeeting&&t&&this.forEachObserver((e=>{this.promotedToPrimaryMeeting=!1,oe.Maybe.of(e.audioVideoWasDemotedFromPrimaryMeeting).map((t=>t.bind(e)(new m.default(p.default.SignalingInternalServerError))))})),this.eventController){const{signalingOpenDurationMs:i,poorConnectionCount:r,startTimeMs:a,iceGatheringDurationMs:o,attendeePresenceDurationMs:s,meetingStartDurationMs:c}=this.meetingSessionContext,l={maxVideoTileCount:this.meetingSessionContext.maxVideoTileCount,meetingDurationMs:null===a?0:Math.round(Date.now()-a),meetingStatus:p.default[e.statusCode()],signalingOpenDurationMs:i,iceGatheringDurationMs:o,attendeePresenceDurationMs:s,poorConnectionCount:r,meetingStartDurationMs:c,retryCount:this.totalRetryCount},d=t&&t.message||(null===(n=e.toString)||void 0===n?void 0:n.call(e))||"";0===l.meetingDurationMs?(l.meetingErrorMessage=d,delete l.meetingDurationMs,delete l.attendeePresenceDurationMs,delete l.meetingStartDurationMs,this.eventController.publishEvent("meetingStartFailed",l)):e.isFailure()||e.isAudioConnectionFailure()?(l.meetingErrorMessage=d,this.eventController.publishEvent("meetingFailed",l)):this.eventController.publishEvent("meetingEnded",l)}}actionFinishUpdating(){if(!this.meetingSessionContext.enableSimulcast)if(this.useUpdateTransceiverControllerForUplink)this.meetingSessionContext.videoUplinkBandwidthPolicy.updateTransceiverController();else{const e=this.meetingSessionContext.videoCaptureAndEncodeParameter.encodeBitrates()[0];this.enforceBandwidthLimitationForSender(e)}this.monitorTask.resumeResubscribeCheck(),this.receiveIndexTask.resumeIngestion(),this.logger.info("updated audio-video session")}reconnect(e,t){const n=this._reconnectController.retryWithBackoff((()=>o(this,void 0,void 0,(function*(){this.sessionStateController.state()===M.default.NotConnected?this.sessionStateController.perform(w.default.Connect,(()=>{this.actionConnect(!0)})):this.sessionStateController.perform(w.default.Reconnect,(()=>{this.actionReconnect(e)})),this.totalRetryCount+=1}))),(()=>{this.logger.info("canceled retry")}));return n||this.sessionStateController.perform(w.default.Fail,(()=>{this.actionDisconnect(e,!1,t)})),n}actionReconnect(e){return o(this,void 0,void 0,(function*(){this._reconnectController.hasStartedConnectionAttempt()||(this._reconnectController.startedConnectionAttempt(!1),this.forEachObserver((e=>{oe.Maybe.of(e.audioVideoDidStartConnecting).map((t=>t.bind(e)(!0)))}))),this.meetingSessionContext.volumeIndicatorAdapter.onReconnect(),this.connectionHealthData.reset();try{yield new Z.default(this.logger,this.wrapTaskName("AudioVideoReconnect"),[new ee.default(this.logger,new Z.default(this.logger,"Media",[new T.default(this.meetingSessionContext),new Z.default(this.logger,"Signaling",[new B.default(this.meetingSessionContext),new O.default(this.meetingSessionContext),new $.default(this.meetingSessionContext)]),new I.default(this.meetingSessionContext)]),this.configuration.connectionTimeoutMs),new G.default(this.meetingSessionContext),new ee.default(this.logger,new Z.default(this.logger,"UpdateSession",[new L.default(this.meetingSessionContext),new N.default(this.meetingSessionContext),new Q.default(this.meetingSessionContext),new P.default(this.meetingSessionContext),new X.default(this.meetingSessionContext),new Y.default(this.meetingSessionContext)]),this.configuration.connectionTimeoutMs)]).run(),this.sessionStateController.perform(w.default.FinishConnecting,(()=>{if(this.eventController){const{signalingOpenDurationMs:t,poorConnectionCount:n,startTimeMs:i,iceGatheringDurationMs:r,attendeePresenceDurationMs:a,meetingStartDurationMs:o}=this.meetingSessionContext,s={maxVideoTileCount:this.meetingSessionContext.maxVideoTileCount,meetingDurationMs:Math.round(Date.now()-i),meetingStatus:p.default[e.statusCode()],signalingOpenDurationMs:t,iceGatheringDurationMs:r,attendeePresenceDurationMs:a,poorConnectionCount:n,meetingStartDurationMs:o,retryCount:this.totalRetryCount};this.eventController.publishEvent("meetingReconnected",s)}this.actionFinishConnecting()}))}catch(e){this.sessionStateController.perform(w.default.FinishConnecting,(()=>{this.logger.info("failed to reconnect audio-video session");const t=new m.default(this.getMeetingStatusCode(e)||p.default.TaskFailed);this.handleMeetingSessionStatus(t,e)}))}this.connectionHealthData.setConnectionStartTime()}))}wrapTaskName(e){return`${e}/${this.configuration.meetingId}/${this.configuration.credentials.attendeeId}`}cleanUpMediaStreamsAfterStop(){this._mediaStreamBroker.removeMediaStreamBrokerObserver(this),this.meetingSessionContext.activeAudioInput=void 0,this.meetingSessionContext.activeVideoInput=void 0}getMeetingStatusCode(e){const t=/the meeting status code: (\d+)/.exec(e&&e.message);return t&&t.length>1?Number.parseInt(t[1],10):null}enforceBandwidthLimitationForSender(e){return o(this,void 0,void 0,(function*(){yield this.meetingSessionContext.transceiverController.setVideoSendingBitrateKbps(e)}))}handleMeetingSessionStatus(e,t){if(this.logger.info(`handling status: ${p.default[e.statusCode()]}`),e.isTerminal()||this.meetingSessionContext.statsCollector&&this.meetingSessionContext.statsCollector.logMeetingSessionStatus(e),e.statusCode()===p.default.IncompatibleSDP)return this.restartLocalVideo((()=>{this.logger.info("handled incompatible SDP by attempting to restart video")})),!0;if(e.statusCode()===p.default.VideoCallSwitchToViewOnly)return this._videoTileController.removeLocalVideoTile(),this.forEachObserver((e=>{oe.Maybe.of(e.videoSendDidBecomeUnavailable).map((t=>t.bind(e)()))})),!1;if(e.statusCode()===p.default.AudioVideoWasRemovedFromPrimaryMeeting)return this.forEachObserver((t=>{oe.Maybe.of(t.audioVideoWasDemotedFromPrimaryMeeting).map((n=>n.bind(t)(e)))})),!1;if(e.isTerminal()&&(this.logger.error("session will not be reconnected"),this.meetingSessionContext.reconnectController&&this.meetingSessionContext.reconnectController.disableReconnect()),(e.isFailure()||e.isTerminal())&&this.meetingSessionContext.reconnectController){const n=this.reconnect(e,t);return n?this.logger.warn(`The audio video controller will reconnect due to status code ${p.default[e.statusCode()]}${t?` and error: ${t.message}`:""}`):this.logger.error(`The audio video controller failed with status code ${p.default[e.statusCode()]}${t?` and error: ${t.message}`:""}`),n}return!1}setVideoMaxBandwidthKbps(e){if(e<=0)throw new Error("Max bandwidth kbps has to be greater than 0");this.meetingSessionContext&&this.meetingSessionContext.videoUplinkBandwidthPolicy&&(this.logger.info(`video send has ideal max bandwidth ${e} kbps`),this.meetingSessionContext.videoUplinkBandwidthPolicy.setIdealMaxBandwidthKbps(e)),this.maxUplinkBandwidthKbps=e}handleHasBandwidthPriority(e){return o(this,void 0,void 0,(function*(){if(this.meetingSessionContext&&this.meetingSessionContext.videoUplinkBandwidthPolicy&&!this.meetingSessionContext.enableSimulcast){if(this.useUpdateTransceiverControllerForUplink)return this.meetingSessionContext.videoUplinkBandwidthPolicy.setHasBandwidthPriority(e),void(yield this.meetingSessionContext.videoUplinkBandwidthPolicy.updateTransceiverController());const t=this.meetingSessionContext.videoUplinkBandwidthPolicy.maxBandwidthKbps();this.meetingSessionContext.videoUplinkBandwidthPolicy.setHasBandwidthPriority(e);const n=this.meetingSessionContext.videoUplinkBandwidthPolicy.maxBandwidthKbps();t!==n&&(this.logger.info(`video send bandwidth priority ${e} max has changed from ${t} kbps to ${n} kbps`),yield this.enforceBandwidthLimitationForSender(n))}}))}pauseReceivingStream(e){this.meetingSessionContext&&this.meetingSessionContext.signalingClient&&this.meetingSessionContext.signalingClient.pause([e])}resumeReceivingStream(e){this.meetingSessionContext&&this.meetingSessionContext.signalingClient&&this.meetingSessionContext.signalingClient.resume([e])}setVideoCodecSendPreferences(e){this.videoSendCodecPreferences=e,this.meetingSessionContext.videoSendCodecPreferences=e,this.sessionStateController.state()!==M.default.NotConnected&&this.update({needsRenegotiation:!0})}getRemoteVideoSources(){const{videoStreamIndex:e}=this.meetingSessionContext;if(!e)return this.logger.info("meeting has not started"),[];const t=this.configuration.credentials.attendeeId;return e.allVideoSendingSourcesExcludingSelf(t)}encodingSimulcastLayersDidChange(e){this.mayNeedRenegotiationForSimulcastLayerChange=!0,this.forEachObserver((t=>{oe.Maybe.of(t.encodingSimulcastLayersDidChange).map((n=>n.bind(t)(e)))}))}promoteToPrimaryMeeting(e){return this.actionPromoteToPrimaryMeeting(e)}actionPromoteToPrimaryMeeting(e){return o(this,void 0,void 0,(function*(){let t=new m.default(p.default.SignalingRequestFailed);return yield new Z.default(this.logger,this.wrapTaskName("PromoteToPrimaryMeeting"),[new ee.default(this.logger,new j.default(this.meetingSessionContext,e,(e=>{t=e})),this.configuration.connectionTimeoutMs)]).run(),this.promotedToPrimaryMeeting=t.statusCode()===p.default.OK,t}))}demoteFromPrimaryMeeting(){this.meetingSessionContext.signalingClient.demoteFromPrimaryMeeting(),this.forEachObserver((e=>{oe.Maybe.of(e.audioVideoWasDemotedFromPrimaryMeeting).map((t=>t.bind(e)(new m.default(p.default.OK))))}))}videoInputDidChange(e){return o(this,void 0,void 0,(function*(){this.logger.info("Receive a video input change event"),this.meetingSessionContext&&this.meetingSessionContext.peer?this._videoTileController.hasStartedLocalVideoTile()&&(e?yield this.replaceLocalVideo(e):this._videoTileController.stopLocalVideoTile()):this.logger.info("Skip updating video input because there is no active meeting and peer connection")}))}audioInputDidChange(e){return o(this,void 0,void 0,(function*(){if(this.logger.info("Receive an audio input change event"),this.meetingSessionContext&&this.meetingSessionContext.peer){if(!e)try{e=yield this.mediaStreamBroker.acquireAudioInputStream()}catch(e){return void this.logger.error("Could not acquire audio track from mediaStreamBroker")}yield this.replaceLocalAudio(e)}else this.logger.info("Skip updating audio input because there is no active meeting and peer connection")}))}}t.default=Se,Se.MIN_VOLUME_DECIBELS=-42,Se.MAX_VOLUME_DECIBELS=-14,Se.PING_PONG_INTERVAL_MS=1e4},9836:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(8434)),a=i(n(3831)),o=i(n(209)),s=i(n(4015)),c=i(n(589)),l=i(n(8015)),d=i(n(3789)),u=i(n(5687)),f=i(n(6057)),h=i(n(9141)),m=i(n(7631)),p=i(n(9059));class g extends p.default{constructor(e){const t=new c.default;t.meetingId="",t.externalMeetingId="",t.credentials=new l.default,t.credentials.attendeeId="",t.credentials.joinToken="",t.urls=new f.default,t.urls.turnControlURL="",t.urls.audioHostURL="",t.urls.signalingURL="wss://localhost/";const n=new o.default;super(e||t,n,new m.default(new o.default),new s.default,new h.default(0,new r.default(0,0,0)),new a.default(e||t,n))}setAudioProfile(e){}start(){}stop(){}promoteToPrimaryMeeting(e){return Promise.resolve(new d.default(u.default.OK))}demoteFromPrimaryMeeting(){}}t.default=g},8538:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0});const r=n(7170);t.default=class{constructor(e,t,n,i,r,a){this.audioVideoController=e,this.videoTileController=t,this.realtimeController=n,this.audioMixController=i,this.deviceController=r,this.contentShareController=a}addObserver(e){this.audioVideoController.addObserver(e),this.trace("addObserver")}removeObserver(e){this.audioVideoController.removeObserver(e),this.trace("removeObserver")}setAudioProfile(e){this.trace("setAudioProfile",e),this.audioVideoController.setAudioProfile(e)}start(e){this.audioVideoController.start(e),this.trace("start")}stop(){this.audioVideoController.stop(),this.trace("stop")}getRTCPeerConnectionStats(e){return this.trace("getRTCPeerConnectionStats",e?e.id:null),this.audioVideoController.getRTCPeerConnectionStats(e)}bindAudioElement(e){const t=this.audioMixController.bindAudioElement(e);return this.trace("bindAudioElement",e.id,t),t}unbindAudioElement(){this.audioMixController.unbindAudioElement(),this.trace("unbindAudioElement")}getCurrentMeetingAudioStream(){return this.trace("getCurrentConferenceStream"),this.audioMixController.getCurrentMeetingAudioStream()}addAudioMixObserver(e){this.trace("addAudioMixObserver"),this.audioMixController.addAudioMixObserver(e)}removeAudioMixObserver(e){this.trace("removeAudioMixObserver"),this.audioMixController.removeAudioMixObserver(e)}bindVideoElement(e,t){this.videoTileController.bindVideoElement(e,t),this.trace("bindVideoElement",{tileId:e,videoElementId:t.id})}unbindVideoElement(e,t=!0){this.videoTileController.unbindVideoElement(e,t),this.trace("unbindVideoElement",{tileId:e,cleanUpVideoElement:t})}startLocalVideoTile(){const e=this.videoTileController.startLocalVideoTile();return this.trace("startLocalVideoTile",null,e),e}stopLocalVideoTile(){this.videoTileController.stopLocalVideoTile(),this.trace("stopLocalVideoTile")}hasStartedLocalVideoTile(){const e=this.videoTileController.hasStartedLocalVideoTile();return this.trace("hasStartedLocalVideoTile",null,e),e}removeLocalVideoTile(){this.videoTileController.removeLocalVideoTile(),this.trace("removeLocalVideoTile")}getLocalVideoTile(){const e=this.videoTileController.getLocalVideoTile();return this.trace("getLocalVideoTile"),e}pauseVideoTile(e){this.videoTileController.pauseVideoTile(e),this.trace("pauseVideoTile",e)}unpauseVideoTile(e){this.videoTileController.unpauseVideoTile(e),this.trace("unpauseVideoTile",e)}getVideoTile(e){const t=this.videoTileController.getVideoTile(e);return this.trace("getVideoTile",e),t}getAllRemoteVideoTiles(){const e=this.videoTileController.getAllRemoteVideoTiles();return this.trace("getAllRemoteVideoTiles"),e}getAllVideoTiles(){const e=this.videoTileController.getAllVideoTiles();return this.trace("getAllVideoTiles"),e}addVideoTile(){const e=this.videoTileController.addVideoTile();return this.trace("addVideoTile",null,e.state()),e}removeVideoTile(e){this.videoTileController.removeVideoTile(e),this.trace("removeVideoTile",e)}removeVideoTilesByAttendeeId(e){const t=this.videoTileController.removeVideoTilesByAttendeeId(e);return this.trace("removeVideoTilesByAttendeeId",e,t),t}removeAllVideoTiles(){this.videoTileController.removeAllVideoTiles(),this.trace("removeAllVideoTiles")}captureVideoTile(e){const t=this.videoTileController.captureVideoTile(e);return this.trace("captureVideoTile",e),t}realtimeSubscribeToAttendeeIdPresence(e){this.realtimeController.realtimeSubscribeToAttendeeIdPresence(e),this.trace("realtimeSubscribeToAttendeeIdPresence")}realtimeUnsubscribeToAttendeeIdPresence(e){this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(e),this.trace("realtimeUnsubscribeToAttendeeIdPresence")}realtimeSetCanUnmuteLocalAudio(e){this.realtimeController.realtimeSetCanUnmuteLocalAudio(e),this.trace("realtimeSetCanUnmuteLocalAudio",e)}realtimeSubscribeToSetCanUnmuteLocalAudio(e){this.realtimeController.realtimeSubscribeToSetCanUnmuteLocalAudio(e),this.trace("realtimeSubscribeToSetCanUnmuteLocalAudio")}realtimeUnsubscribeToSetCanUnmuteLocalAudio(e){this.realtimeController.realtimeUnsubscribeToSetCanUnmuteLocalAudio(e),this.trace("realtimeUnsubscribeToSetCanUnmuteLocalAudio")}realtimeCanUnmuteLocalAudio(){const e=this.realtimeController.realtimeCanUnmuteLocalAudio();return this.trace("realtimeCanUnmuteLocalAudio",null,e),e}realtimeMuteLocalAudio(){this.realtimeController.realtimeMuteLocalAudio(),this.trace("realtimeMuteLocalAudio")}realtimeUnmuteLocalAudio(){const e=this.realtimeController.realtimeUnmuteLocalAudio();return this.trace("realtimeUnmuteLocalAudio"),e}realtimeSubscribeToMuteAndUnmuteLocalAudio(e){this.realtimeController.realtimeSubscribeToMuteAndUnmuteLocalAudio(e),this.trace("realtimeSubscribeToMuteAndUnmuteLocalAudio")}realtimeUnsubscribeToMuteAndUnmuteLocalAudio(e){this.realtimeController.realtimeUnsubscribeToMuteAndUnmuteLocalAudio(e),this.trace("realtimeUnsubscribeToMuteAndUnmuteLocalAudio")}realtimeIsLocalAudioMuted(){const e=this.realtimeController.realtimeIsLocalAudioMuted();return this.trace("realtimeIsLocalAudioMuted"),e}realtimeSubscribeToVolumeIndicator(e,t){this.realtimeController.realtimeSubscribeToVolumeIndicator(e,t),this.trace("realtimeSubscribeToVolumeIndicator",e)}realtimeUnsubscribeFromVolumeIndicator(e,t){this.realtimeController.realtimeUnsubscribeFromVolumeIndicator(e,t),this.trace("realtimeUnsubscribeFromVolumeIndicator",e,t)}realtimeSubscribeToLocalSignalStrengthChange(e){this.realtimeController.realtimeSubscribeToLocalSignalStrengthChange(e),this.trace("realtimeSubscribeToLocalSignalStrengthChange")}realtimeUnsubscribeToLocalSignalStrengthChange(e){this.realtimeController.realtimeUnsubscribeToLocalSignalStrengthChange(e),this.trace("realtimeUnsubscribeToLocalSignalStrengthChange")}realtimeSendDataMessage(e,t,n){this.realtimeController.realtimeSendDataMessage(e,t,n),this.trace("realtimeSendDataMessage")}realtimeSubscribeToReceiveDataMessage(e,t){this.realtimeController.realtimeSubscribeToReceiveDataMessage(e,t),this.trace("realtimeSubscribeToReceiveDataMessage")}realtimeUnsubscribeFromReceiveDataMessage(e){this.realtimeController.realtimeUnsubscribeFromReceiveDataMessage(e),this.trace("realtimeUnsubscribeFromReceiveDataMessage")}realtimeSubscribeToFatalError(e){this.realtimeController.realtimeSubscribeToFatalError(e),this.trace("realtimeSubscribeToFatalError")}realtimeUnsubscribeToFatalError(e){this.realtimeController.realtimeUnsubscribeToFatalError(e),this.trace("realtimeUnsubscribeToFatalError")}subscribeToActiveSpeakerDetector(e,t,n,i){this.audioVideoController.activeSpeakerDetector.subscribe(e,t,n,i),this.trace("subscribeToActiveSpeakerDetector")}unsubscribeFromActiveSpeakerDetector(e){this.audioVideoController.activeSpeakerDetector.unsubscribe(e),this.trace("unsubscribeFromActiveSpeakerDetector")}listAudioInputDevices(e=!1){return i(this,void 0,void 0,(function*(){const t=yield this.deviceController.listAudioInputDevices(e);return this.trace("listAudioInputDevices",e,t),t}))}listVideoInputDevices(e=!1){return i(this,void 0,void 0,(function*(){const t=yield this.deviceController.listVideoInputDevices(e);return this.trace("listVideoInputDevices",e,t),t}))}listAudioOutputDevices(e=!1){return i(this,void 0,void 0,(function*(){const t=yield this.deviceController.listAudioOutputDevices(e);return this.trace("listAudioOutputDevices",e,t),t}))}startAudioInput(e){return i(this,void 0,void 0,(function*(){return this.trace("startAudioInput",e),this.deviceController.startAudioInput(e)}))}stopAudioInput(){return i(this,void 0,void 0,(function*(){return this.trace("stopAudioInput"),this.deviceController.stopAudioInput()}))}startVideoInput(e){return i(this,void 0,void 0,(function*(){return r.isVideoTransformDevice(e)?this.trace("startVideoInput with transform device"):this.trace("startVideoInput",e),this.deviceController.startVideoInput(e)}))}stopVideoInput(){return i(this,void 0,void 0,(function*(){return this.trace("stopVideoInput"),this.deviceController.stopVideoInput()}))}chooseAudioOutput(e){const t=this.deviceController.chooseAudioOutput(e);return this.trace("chooseAudioOutput",e),t}addDeviceChangeObserver(e){this.deviceController.addDeviceChangeObserver(e),this.trace("addDeviceChangeObserver")}removeDeviceChangeObserver(e){this.deviceController.removeDeviceChangeObserver(e),this.trace("removeDeviceChangeObserver")}createAnalyserNodeForAudioInput(){const e=this.deviceController.createAnalyserNodeForAudioInput();return this.trace("createAnalyserNodeForAudioInput"),e}startVideoPreviewForVideoInput(e){this.deviceController.startVideoPreviewForVideoInput(e),this.trace("startVideoPreviewForVideoInput",e.id)}stopVideoPreviewForVideoInput(e){this.deviceController.stopVideoPreviewForVideoInput(e),this.trace("stopVideoPreviewForVideoInput",e.id)}setDeviceLabelTrigger(e){this.deviceController.setDeviceLabelTrigger(e),this.trace("setDeviceLabelTrigger")}mixIntoAudioInput(e){const t=this.deviceController.mixIntoAudioInput(e);return this.trace("mixIntoAudioInput",e.id),t}chooseVideoInputQuality(e,t,n){this.deviceController.chooseVideoInputQuality(e,t,n),this.trace("chooseVideoInputQuality",{width:e,height:t,frameRate:n})}setVideoMaxBandwidthKbps(e){this.audioVideoController.setVideoMaxBandwidthKbps(e),this.trace("setVideoMaxBandwidthKbps",e)}setVideoCodecSendPreferences(e){this.audioVideoController.setVideoCodecSendPreferences(e),this.trace("setVideoCodecSendPreferences",e)}getVideoInputQualitySettings(){const e=this.deviceController.getVideoInputQualitySettings();return this.trace("getVideoInputQualitySettings"),e}setContentAudioProfile(e){this.trace("setContentAudioProfile",e),this.contentShareController.setContentAudioProfile(e)}enableSimulcastForContentShare(e,t){this.trace("enableSimulcastForContentShare"),this.contentShareController.enableSimulcastForContentShare(e,t)}startContentShare(e){const t=this.contentShareController.startContentShare(e);return this.trace("startContentShare"),t}startContentShareFromScreenCapture(e,t){const n=this.contentShareController.startContentShareFromScreenCapture(e,t);return this.trace("startContentShareFromScreenCapture"),n}pauseContentShare(){this.contentShareController.pauseContentShare(),this.trace("pauseContentShare")}unpauseContentShare(){this.contentShareController.unpauseContentShare(),this.trace("unpauseContentShare")}stopContentShare(){this.contentShareController.stopContentShare(),this.trace("stopContentShare")}addContentShareObserver(e){this.contentShareController.addContentShareObserver(e),this.trace("addContentShareObserver")}removeContentShareObserver(e){this.contentShareController.removeContentShareObserver(e),this.trace("removeContentShareObserver")}setContentShareVideoCodecPreferences(e){this.contentShareController.setContentShareVideoCodecPreferences(e),this.trace("setContentShareVideoCodecPreferences")}trace(e,t,n){let i=`API/DefaultAudioVideoFacade/${this.audioVideoController.configuration.meetingId}/${this.audioVideoController.configuration.credentials.attendeeId}/${e}`;void 0!==t&&(i+=` ${JSON.stringify(t)}`),void 0!==n&&(i+=` -> ${JSON.stringify(n)}`),this.audioVideoController.logger.info(i)}getRemoteVideoSources(){const e=this.audioVideoController.getRemoteVideoSources();return this.trace("getRemoteVideoSources",null,e),e}get transcriptionController(){return this.realtimeController.transcriptionController}promoteToPrimaryMeeting(e){this.audioVideoController.removeObserver(this),this.audioVideoController.addObserver(this);const t=this.audioVideoController.promoteToPrimaryMeeting(e);return this.trace("promoteToPrimaryMeeting",null,t),t}demoteFromPrimaryMeeting(){this.trace("demoteFromPrimaryMeeting"),this.audioVideoController.demoteFromPrimaryMeeting()}audioVideoWasDemotedFromPrimaryMeeting(e){this.contentShareController.stopContentShare(),this.audioVideoController.removeObserver(this)}}},179:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(8074)),o=n(9734);class s extends a.default{constructor(e,t){super(e,t),this.blurCanvas=document.createElement("canvas"),this.blurCanvasCtx=this.blurCanvas.getContext("2d"),this.blurCanvas.width=this.spec.model.input.width,this.blurCanvas.height=this.spec.model.input.height,this.logger.info("BackgroundBlur processor using builtin blur")}drawImageWithMask(e,t){const n=this.blurredImage,{canvasCtx:i,targetCanvas:r}=this,{width:a,height:o}=r;t&&n?(this.scaledCanvas.getContext("2d").putImageData(t,0,0),this.blurCanvasCtx.putImageData(this.blurredImage,0,0),i.save(),i.clearRect(0,0,a,o),i.drawImage(this.scaledCanvas,0,0,a,o),i.globalCompositeOperation="source-in",i.drawImage(e,0,0,a,o),i.globalCompositeOperation="destination-over",i.drawImage(this.blurCanvas,0,0,a,o),i.restore()):i.clearRect(0,0,a,o)}setBlurStrength(e){if(super.setBlurStrength(e),this.worker){this.modelInitialized=!1,this.worker.postMessage({msg:"destroy"});const e=this.spec.model;this.worker.postMessage({msg:"loadModel",payload:{modelUrl:e.path,inputHeight:e.input.height,inputWidth:e.input.width,inputChannels:4,modelRangeMin:e.input.range[0],modelRangeMax:e.input.range[1],blurPixels:this.blurAmount}})}}setBlurPixels(){this.blurAmount=o.BlurStrengthMapper.getBlurAmount(this._blurStrength,{height:540}),this.logger.info(`background blur amount set to ${this.blurAmount}`)}handleInitialize(e){if(this.logger.info(`received initialize message: ${this.stringify(e)}`),!e.payload)return this.logger.error("failed to initialize module"),void this.initWorkerPromise.reject(new Error("failed to initialize the module"));const t=this.spec.model;this.worker.postMessage({msg:"loadModel",payload:{modelUrl:t.path,inputHeight:t.input.height,inputWidth:t.input.width,inputChannels:4,modelRangeMin:t.input.range[0],modelRangeMax:t.input.range[1],blurPixels:this.blurAmount}}),this.initWorkerPromise.resolve({})}handlePredict(e){this.blurredImage=e.payload.blurOutput,super.handlePredict(e)}destroy(){const e=Object.create(null,{destroy:{get:()=>super.destroy}});var t;return i(this,void 0,void 0,(function*(){e.destroy.call(this),null===(t=this.blurCanvas)||void 0===t||t.remove(),this.blurCanvas=void 0}))}}t.default=s},8074:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1851)),o=n(9734),s=r(n(9852));class c extends a.default{constructor(e,t){super("background blur",e,t,new s.default),this.blurAmount=0,this.setBlurStrength(t.blurStrength),this.logger.info("BackgroundBlur processor successfully created"),this.logger.info(`BackgroundBlur spec: ${this.stringify(this.spec)}`),this.logger.info(`BackgroundBlur options: ${this.stringify(t)}`)}validateOptions(e){if(super.validateOptions(e),!e.blurStrength)throw new Error("processor has null options - blurStrength")}initOnFirstExecution(){this.setBlurPixels()}drawImageWithMask(e,t){t||(t=new ImageData(this.spec.model.input.width,this.spec.model.input.height)),this.scaledCanvas.getContext("2d").putImageData(t,0,0);const{canvasCtx:n,targetCanvas:i}=this,{width:r,height:a}=i;n.save(),n.clearRect(0,0,r,a),n.drawImage(this.scaledCanvas,0,0,r,a),n.globalCompositeOperation="source-in",n.drawImage(e,0,0,r,a),n.globalCompositeOperation="destination-over",n.filter=`blur(${this.blurAmount}px)`,n.drawImage(e,0,0,i.width,i.height),n.restore()}setBlurStrength(e){this._blurStrength=e,this.logger.info(`blur strength set to ${this._blurStrength}`),this.setBlurPixels()}setBlurPixels(){this.blurAmount=o.BlurStrengthMapper.getBlurAmount(this._blurStrength,{height:this.sourceHeight}),this.logger.info(`background blur amount set to ${this.blurAmount}`)}addObserver(e){this.delegate.addObserver(e)}removeObserver(e){this.delegate.removeObserver(e)}static isSupported(){return i(this,void 0,void 0,(function*(){const e=document.createElement("canvas"),t=void 0!==e.getContext("2d").filter;return e.remove(),t}))}setEventController(e){this.eventController?this.eventController=e:(this.eventController=e,this.publishBackgroundFilterEvent())}publishBackgroundFilterEvent(){const e={backgroundBlurEnabled:"true",backgroundBlurStrength:this._blurStrength,backgroundReplacementEnabled:"false",backgroundFilterVersion:1};this.eventController.publishEvent("backgroundFilterConfigSelected",e)}}t.default=c},9734:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BlurStrengthMapper=void 0;class n{static getBlurAmount(e,t){if(e<=0)throw new Error(`invalid value for blur strength: ${e}`);return Math.round(e*t.height/this.BLUR_STRENGTH_DIVISOR)}}t.BlurStrengthMapper=n,n.BLUR_STRENGTH_DIVISOR=540,t.default={LOW:7,MEDIUM:15,HIGH:30}},1260:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(4243)),o=r(n(8030)),s=r(n(813)),c=r(n(2801)),l=r(n(179)),d=r(n(8074)),u=r(n(9734));class f extends c.default{setBlurStrength(){}loadAssets(){return i(this,void 0,void 0,(function*(){}))}addObserver(){}removeObserver(){}}class h extends a.default{static create(e,t){return i(this,void 0,void 0,(function*(){e=h.resolveSpec(e),t=h.resolveOptions(t);const{logger:n}=t,i=yield h.isSupported(e,t);if(n.info(`processor is ${i?"":"not"} supported`),!i)return n.warn("Using no-op processor because background blur is not supported"),new f;let r;return(yield d.default.isSupported())?(n.info("Using browser-provided background blur"),r=new d.default(e,t)):(n.info("Using built-in background blur"),r=new l.default(e,t)),yield r.loadAssets(),r}))}static resolveOptions(e={}){let t=Object.assign({},e);return t.blurStrength||(t.blurStrength=u.default.MEDIUM),t.logger||(t.logger=new o.default("BackgroundBlurProcessor",s.default.INFO)),t=super.resolveOptions(t),t}static isSupported(e,t){return e=h.resolveSpec(e),t=h.resolveOptions(t),super.isSupported(e,t)}}t.default=h},9852:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(4627));class a extends r.default{}t.default=a},22:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class n{constructor(){this.path=null,this.input=null,this.output=null}static builder(){return new n}withDefaultModel(){return this.withSelfieSegmentationDefaults()}withSelfieSegmentationDefaults(){return this.path="https://static.sdkassets.chime.aws/bgblur/models/selfie_segmentation_landscape.tflite",this.input={height:144,width:256,range:[0,1],channels:3},this.output={height:144,width:256,range:[0,1],channels:1},this}withPath(e){return this.path=e,this}withInput(e){return this.input=e,this}withOutput(e){return this.output=e,this}validate(){if(!this.path)throw new Error("model spec path is not set");if(!this.input)throw new Error("model spec input is not set");if(!this.output)throw new Error("model spec output is not set")}build(){return this.validate(),{path:this.path,input:this.input,output:this.output}}}t.default=n},3368:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e,t,n,i){this.delegate=e,this.reportingPeriodMillis=t,this.filterCPUUtilization=n,this.logger=i,this._processingFilter=!0,this.lastReportedEventTimestamp=0,this.lastFilterCompleteTimestamp=0,this.filterTotalMillis=0,this.filterCount=0,this.framerate=0,this.filterDurationNotifyMillis=0,this.setSegmentationDuration()}reportEvent(e){const t=e-this.lastReportedEventTimestamp;if(t>=this.reportingPeriodMillis){const n=this.filterCount,i=this.filterTotalMillis;if(this.filterCount=0,this.filterTotalMillis=0,this.lastReportedEventTimestamp=e,0===this.framerate||0===n)return;const r=Math.round(i/n),a=Math.round(this.framerate*(t/1e3))-n,o=Math.round(100*i/t);r>=this.filterDurationNotifyMillis&&this.delegate.filterFrameDurationHigh({framesDropped:a,avgFilterDurationMillis:r,framerate:this.framerate,periodMillis:t}),o>=this.filterCPUUtilization&&this.delegate.filterCPUUtilizationHigh({cpuUtilization:o,filterMillis:i,periodMillis:t})}}setSegmentationDuration(){this.filterDurationNotifyMillis=Math.round(1e3/this.framerate*.8)}frameReceived(e){e!==this.framerate&&(this.framerate=e,this.logger.info(`frame counter setting frame rate to ${this.framerate}`),this.setSegmentationDuration());const t=Date.now();this.reportEvent(t)}filterSubmitted(){this._processingFilter=!0,this.lastFilterCompleteTimestamp=Date.now()}filterComplete(){this.filterTotalMillis+=Date.now()-this.lastFilterCompleteTimestamp,this._processingFilter=!1,this.filterCount++}get processingSegment(){return this._processingFilter}}},1851:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.BackgroundFilterMonitor=void 0;const a=n(5021),o=r(n(9807)),s=r(n(3368));class c{constructor(){this.value=void 0,this.resolve=null}whenNext(){return this.promise||(this.promise=new Promise((e=>this.resolve=e))),this.promise}next(e){this.value=e,this.resolve(e),delete this.promise}}class l{constructor(e,t,n,i,r){this.targetCanvas=document.createElement("canvas"),this.canvasCtx=this.targetCanvas.getContext("2d"),this.canvasVideoFrameBuffer=new o.default(this.targetCanvas),this.mask$=new c,this.sourceWidth=0,this.sourceHeight=0,this.frameNumber=0,this.videoFramesPerFilterUpdate=1,this.initWorkerPromise=l.createWorkerPromise(),this.loadModelPromise=l.createWorkerPromise(),this.modelInitialized=!1,this.destroyed=!1,this.filterType=e,this.validateSpec(t),this.validateOptions(n),this.spec=t,this.logger=n.logger,this.delegate=i,this.initCPUMonitor(n),this.eventController=r}static createWorkerPromise(){const e={resolve:null,reject:null,promise:null};return e.promise=new Promise(((t,n)=>{e.resolve=t,e.reject=n})),e}validateSpec(e){if(!e)throw new Error("processor has null spec");if(!e.model)throw new Error("processor spec has null model");if(!e.paths)throw new Error("processor spec has null paths")}validateOptions(e){if(!e)throw new Error("processor has null options");if(!e.logger)throw new Error("processor has null options - logger");if(!e.reportingPeriodMillis)throw new Error("processor has null options - reportingPeriodMillis");if(!e.filterCPUUtilization)throw new Error("processor has null options - filterCPUUtilization")}initCPUMonitor(e){this.videoFramesPerFilterUpdate=1,this.frameCounter=new s.default(this.delegate,e.reportingPeriodMillis,e.filterCPUUtilization,this.logger),this.cpuMonitor=new d(5e3,{reduceCPUUtilization:()=>{this.updateVideoFramesPerFilterUpdate(Math.min(this.videoFramesPerFilterUpdate+1,10))},increaseCPUUtilization:()=>{this.updateVideoFramesPerFilterUpdate(Math.max(this.videoFramesPerFilterUpdate-1,1))}}),this.delegate.addObserver(this.cpuMonitor)}stringify(e){return JSON.stringify(e,null,2)}handleInitialize(e){if(this.logger.info(`received initialize message: ${this.stringify(e)}`),!e.payload)return this.logger.error("failed to initialize module"),void this.initWorkerPromise.reject(new Error("failed to initialize the module"));const t=this.spec.model;this.worker.postMessage({msg:"loadModel",payload:{modelUrl:t.path,inputHeight:t.input.height,inputWidth:t.input.width,inputChannels:4,modelRangeMin:t.input.range[0],modelRangeMax:t.input.range[1],blurPixels:0}}),this.initWorkerPromise.resolve({})}handleLoadModel(e){if(this.logger.info(`received load model message: ${this.stringify(e)}`),2!==e.payload)return this.logger.error("failed to load model! status: "+e.payload),void this.loadModelPromise.reject(new Error("failed to load model! status: "+e.payload));this.modelInitialized=!0,this.loadModelPromise.resolve({})}handlePredict(e){this.mask$.next(e.payload.output)}handleWorkerEvent(e){const t=e.data;switch(t.msg){case"initialize":this.handleInitialize(t);break;case"loadModel":this.handleLoadModel(t);break;case"predict":this.handlePredict(t);break;default:this.logger.info(`unexpected event msg: ${this.stringify(t)}`)}}loadAssets(){return i(this,void 0,void 0,(function*(){this.logger.info("start initializing the processor");try{this.worker=yield a.loadWorker(this.spec.paths.worker,"BackgroundFilterWorker",{},null),this.worker.addEventListener("message",(e=>this.handleWorkerEvent(e))),this.worker.postMessage({msg:"initialize",payload:{wasmPath:this.spec.paths.wasm,simdPath:this.spec.paths.simd}}),yield this.initWorkerPromise.promise,this.logger.info(`successfully initialized the ${this.filterType} worker`),yield this.loadModelPromise.promise,this.logger.info(`successfully loaded ${this.filterType} worker segmentation model`)}catch(e){throw new Error(`could not initialize the ${this.filterType} video frame processor due to '${e.message}'`)}this.logger.info(`successfully initialized the ${this.filterType} processor`)}))}process(e){return i(this,void 0,void 0,(function*(){if(this.destroyed)return e;this.frameCounter.frameReceived(e[0].framerate),this.cpuMonitor.frameReceived();const t=e[0].asCanvasElement();if(!t)return e;if(!this.modelInitialized)return e[0]=this.canvasVideoFrameBuffer,e;const n=t.width,i=t.height;if(0===n||0===i)return e;0===this.sourceWidth&&(this.sourceWidth=n,this.sourceHeight=i,this.targetCanvas.width=this.sourceWidth,this.targetCanvas.height=this.sourceHeight,this.logger.info(`${this.filterType} source width: ${this.sourceWidth}`),this.logger.info(`${this.filterType} source height: ${this.sourceHeight}`),this.initOnFirstExecution()),this.sourceWidth===n&&this.sourceHeight===i||(this.sourceWidth=n,this.sourceHeight=i,this.targetCanvas.width=this.sourceWidth,this.targetCanvas.height=this.sourceHeight);try{this.frameCounter.filterSubmitted();let e=this.mask$.value;const n=this.spec.model.input.width/t.width,i=this.spec.model.input.height/t.height;void 0===this.scaledCanvas&&(this.scaledCanvas=document.createElement("canvas"),this.scaledCanvas.width=this.spec.model.input.width,this.scaledCanvas.height=this.spec.model.input.height);const r=this.scaledCanvas.getContext("2d");r.save(),r.scale(n,i),r.drawImage(t,0,0),r.restore();const a=r.getImageData(0,0,this.scaledCanvas.width,this.scaledCanvas.height);if(this.frameNumber%this.videoFramesPerFilterUpdate==0){const t=this.mask$.whenNext();this.worker.postMessage({msg:"predict",payload:a},[a.data.buffer]),e=yield t}this.destroyed||this.drawImageWithMask(t,e)}catch(t){return this.logger.error(`could not process ${this.filterType} frame buffer due to ${t}`),e}finally{this.frameCounter.filterComplete(),this.frameNumber++}return e[0]=this.canvasVideoFrameBuffer,e}))}updateVideoFramesPerFilterUpdate(e){e!==this.videoFramesPerFilterUpdate&&(this.videoFramesPerFilterUpdate=e,this.logger.info(`Adjusting filter rate to compensate for CPU utilization. Filter rate is ${this.videoFramesPerFilterUpdate} video frames per filter.`))}destroy(){var e,t,n,r;return i(this,void 0,void 0,(function*(){this.destroyed=!0,this.delegate.removeObserver(this.cpuMonitor),this.canvasVideoFrameBuffer.destroy(),null===(e=this.worker)||void 0===e||e.postMessage({msg:"destroy"}),null===(t=this.worker)||void 0===t||t.postMessage({msg:"stop"}),null===(n=this.targetCanvas)||void 0===n||n.remove(),this.targetCanvas=void 0,null===(r=this.scaledCanvas)||void 0===r||r.remove(),this.scaledCanvas=void 0,this.logger.info(`${this.filterType} frame process destroyed`)}))}}t.default=l;class d{constructor(e,t){this.monitoringPeriodMillis=e,this.observer=t,this.lastCPUChangeTimestamp=0}filterCPUUtilizationHigh(){const e=Date.now();e-this.lastCPUChangeTimestamp>=this.monitoringPeriodMillis&&(this.lastCPUChangeTimestamp=e,this.observer.reduceCPUUtilization())}frameReceived(){const e=Date.now();e-this.lastCPUChangeTimestamp>=2*this.monitoringPeriodMillis&&(this.lastCPUChangeTimestamp=e,this.observer.increaseCPUUtilization())}}t.BackgroundFilterMonitor=d},4243:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=n(5021),o=n(9424),s=r(n(22)),c=r(n(543)),l=r(n(4046)),d=()=>s.default.builder().withSelfieSegmentationDefaults().build(),u="https://static.sdkassets.chime.aws",f={worker:`${u}/bgblur/workers/worker.js`,wasm:`${u}/bgblur/wasm/_cwt-wasm.wasm`,simd:`${u}/bgblur/wasm/_cwt-wasm-simd.wasm`};t.default=class{static defaultAssetSpec(){const e=l.default.sdkVersionSemVer;return{assetGroup:`sdk-${e.major}.${e.minor}`}}static createUrlWithParams(e,t){const n=new URL(e),i=Object.keys(t);for(const e of i)void 0!==t[e]&&n.searchParams.set(e,t[e]);return n.toString()}static resolveSpec(e){const{paths:t=f,model:n=d(),assetGroup:i=this.defaultAssetSpec().assetGroup,revisionID:r=this.defaultAssetSpec().revisionID}=e||{},a={assetGroup:i,revisionID:r,sdk:encodeURIComponent(l.default.sdkVersion),ua:encodeURIComponent(l.default.sdkUserAgentLowResolution)};return t.worker=this.createUrlWithParams(t.worker,a),t.wasm=this.createUrlWithParams(t.wasm,a),t.simd=this.createUrlWithParams(t.simd,a),n.path=this.createUrlWithParams(n.path,a),{paths:t,model:n,assetGroup:i,revisionID:r}}static resolveOptions(e){return e.reportingPeriodMillis||(e.reportingPeriodMillis=1e3),e.filterCPUUtilization?(e.filterCPUUtilization<0||e.filterCPUUtilization>100)&&(e.logger.warn("filterCPUUtilization must be set to a range between 0 and 100 percent. Falling back to default of 30 percent"),e.filterCPUUtilization=30):e.filterCPUUtilization=30,e}static isSupported(e,t){const{logger:n}=t;return"undefined"==typeof globalThis?(n.info("Browser does not have globalThis."),Promise.resolve(!1)):(new c.default).supportsBackgroundFilter()?o.supportsWASM(globalThis,n)?this.supportsBackgroundFilter(globalThis,e,n):(n.info("Browser does not support WASM."),Promise.resolve(!1)):(n.info("Browser is not supported."),Promise.resolve(!1))}static supportsBackgroundFilter(e=globalThis,t,n){return i(this,void 0,void 0,(function*(){if(!o.supportsWorker(e,n))return n.info("Browser does not support web workers."),!1;const i=t.paths.worker;try{const e=yield a.loadWorker(i,"BackgroundFilterWorker",{},null);try{e.terminate()}catch(e){n.info(`Failed to terminate worker. ${e.message}`)}return!0}catch(e){return n.info(`Failed to fetch and instantiate test worker ${e.message}`),!1}}))}}},4627:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.observers=new Set}addObserver(e){this.observers.add(e)}removeObserver(e){this.observers.delete(e)}filterFrameDurationHigh(e){var t;for(const n of this.observers)null===(t=n.filterFrameDurationHigh)||void 0===t||t.call(n,e)}filterCPUUtilizationHigh(e){var t;for(const n of this.observers)null===(t=n.filterCPUUtilizationHigh)||void 0===t||t.call(n,e)}}},9392:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1851)),o=r(n(1447));class s extends a.default{constructor(e,t){super("background replacement",e,t,new o.default),this.replacementBlob=t.imageBlob,this.logger.info("BackgroundReplacement processor successfully created"),this.logger.info(`BackgroundReplacement spec: ${this.stringify(this.spec)}`),this.logger.info(`BackgroundReplacement options: ${this.stringify(t)}`)}setImageBlob(e){return i(this,void 0,void 0,(function*(){this.replacementBlob=e,this.replacementImage=yield s.loadImage(this.createReplacementObjectUrl())}))}initOnFirstExecution(){}drawImageWithMask(e,t){t||(t=new ImageData(this.spec.model.input.width,this.spec.model.input.height)),this.scaledCanvas.getContext("2d").putImageData(t,0,0);const{canvasCtx:n,targetCanvas:i}=this,{width:r,height:a}=i;n.save(),n.clearRect(0,0,r,a),n.drawImage(this.scaledCanvas,0,0,r,a),n.globalCompositeOperation="source-in",n.drawImage(e,0,0,r,a),n.globalCompositeOperation="destination-over",n.drawImage(this.replacementImage,0,0,i.width,i.height),n.restore()}static loadImageExecutor(e,t,n){const i=new Image;i.crossOrigin="Anonymous",i.addEventListener("load",(()=>{e(i)}),!1),i.addEventListener("error",(e=>{t(new Error(`Could not load replacement image ${i.src}: ${e.message}`))}),!1),i.src=n}static loadImage(e){return i(this,void 0,void 0,(function*(){return new Promise(((t,n)=>this.loadImageExecutor(t,n,e)))}))}revokeReplacementObjectUrl(){this.replacementObjectUrl&&URL.revokeObjectURL(this.replacementObjectUrl)}createReplacementObjectUrl(){return this.revokeReplacementObjectUrl(),this.replacementObjectUrl=URL.createObjectURL(this.replacementBlob),this.replacementObjectUrl}loadAssets(){const e=Object.create(null,{loadAssets:{get:()=>super.loadAssets}});return i(this,void 0,void 0,(function*(){this.replacementImage=yield s.loadImage(this.createReplacementObjectUrl()),e.loadAssets.call(this)}))}addObserver(e){this.delegate.addObserver(e)}removeObserver(e){this.delegate.removeObserver(e)}destroy(){const e=Object.create(null,{destroy:{get:()=>super.destroy}});return i(this,void 0,void 0,(function*(){e.destroy.call(this),this.revokeReplacementObjectUrl()}))}setEventController(e){this.eventController?this.eventController=e:(this.eventController=e,this.publishBackgroundFilterEvent())}publishBackgroundFilterEvent(){this.eventController.publishEvent("backgroundFilterConfigSelected",{backgroundBlurEnabled:"false",backgroundBlurStrength:"low",backgroundReplacementEnabled:"true",backgroundFilterVersion:1})}}t.default=s},9854:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(4243)),o=r(n(8030)),s=r(n(813)),c=r(n(2801)),l=r(n(9392));class d extends c.default{loadAssets(){return i(this,void 0,void 0,(function*(){}))}addObserver(){}removeObserver(){}setImageBlob(){return i(this,void 0,void 0,(function*(){}))}}class u extends a.default{static create(e,t){return i(this,void 0,void 0,(function*(){e=this.resolveSpec(e),t=this.resolveOptions(t),yield this.resolveOptionsAsync(t);const{logger:n}=t;if(!(yield u.isSupported(e,t)))return n.warn("Using no-op processor because background replacement is not supported"),new d;n.info("Using background replacement filter");const i=new l.default(e,t);return yield i.loadAssets(),i}))}static resolveOptions(e={}){const t=Object.assign({},e);return t.logger||(t.logger=new o.default("BackgroundReplacementProcessor",s.default.INFO)),super.resolveOptions(t)}static resolveOptionsAsync(e){return i(this,void 0,void 0,(function*(){if(!e.imageBlob){const t=document.createElement("canvas");t.width=100,t.height=100;const n=t.getContext("2d");n.fillStyle="blue",n.fillRect(0,0,100,100);const i=yield new Promise((e=>{t.toBlob(e)}));e.imageBlob=i}}))}static isSupported(e,t){const n=Object.create(null,{isSupported:{get:()=>super.isSupported}});return i(this,void 0,void 0,(function*(){e=this.resolveSpec(e),t=this.resolveOptions(t),yield this.resolveOptionsAsync(t);const i=t.imageBlob,r=URL.createObjectURL(i);try{yield l.default.loadImage(r)}catch(e){return t.logger.info(`Failed to fetch load replacement image ${e.message}`),!1}finally{URL.revokeObjectURL(r)}return n.isSupported.call(this,e,t)}))}}t.default=u},1447:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(4627));class a extends r.default{}t.default=a},8434:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e,t,n){this.fixedWaitMs=e,this.shortBackoffMs=t,this.longBackoffMs=n,this.currentRetry=0,this.fixedWaitMs<0&&(this.fixedWaitMs=0),this.shortBackoffMs<0&&(this.shortBackoffMs=0),this.longBackoffMs<0&&(this.longBackoffMs=0),this.reset()}reset(){this.currentRetry=0}nextBackoffAmountMs(){const e=Math.random()*Math.min(this.longBackoffMs,this.shortBackoffMs*Math.pow(2,this.currentRetry))+this.fixedWaitMs;return this.currentRetry+=1,e}}},5640:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(8434)),a=i(n(7300));t.default=class{constructor(e,t,n){this.fixedWaitMs=e,this.shortBackoffMs=t,this.longBackoffMs=n}create(){return new r.default(this.fixedWaitMs,this.shortBackoffMs,this.longBackoffMs)}createWithLimit(e){return new a.default(this.fixedWaitMs,this.shortBackoffMs,this.longBackoffMs,e)}}},7300:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(8434));class a extends r.default{constructor(e,t,n,i){super(e,t,n),this.limit=i,this.attempts=0}nextBackoffAmountMs(){if(this.attempts++,this.attempts>this.limit)throw new Error("retry limit exceeded");return super.nextBackoffAmountMs()}}t.default=a},543:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0});const r=n(3631),a=n(2238);class o{constructor(){this.FALLBACK_BROWSER={type:"browser",name:"unknown",version:"unknown",os:"unknown"},this.browser=r.detect()||this.FALLBACK_BROWSER,this.uaParserResult=navigator&&navigator.userAgent?new a.UAParser(navigator.userAgent).getResult():null,this.browserSupport={chrome:78,"edge-chromium":79,electron:7,firefox:75,ios:13,safari:13,opera:66,samsung:12,crios:86,fxios:23,"ios-webview":605,"chromium-webview":92},this.browserName={chrome:"Google Chrome","edge-chromium":"Microsoft Edge",electron:"Electron",firefox:"Mozilla Firefox",ios:"Safari iOS",safari:"Safari",opera:"Opera",samsung:"Samsung Internet",crios:"Chrome iOS",fxios:"Firefox iOS","ios-webview":"WKWebView iOS","chromium-webview":"Chrome WebView"},this.chromeLike=["chrome","edge-chromium","chromium-webview","opera","samsung"],this.webkitBrowsers=["crios","fxios","safari","ios","ios-webview","edge-ios"]}version(){return this.browser.version}majorVersion(){return null!==this.version()?parseInt(this.version().split(".")[0]):-1}osMajorVersion(){return parseInt(this.uaParserResult.os.version.split(".")[0])}name(){return this.browser.name}hasChromiumWebRTC(){for(const e of this.chromeLike)if(e===this.browser.name)return!0;return!1}hasWebKitWebRTC(){for(const e of this.webkitBrowsers)if(e===this.browser.name)return!0;return!1}hasFirefoxWebRTC(){return this.isFirefox()}requiresPlaybackLatencyHintForAudioContext(){return-1!==navigator.userAgent.indexOf("Windows")}supportsCanvasCapturedStreamPlayback(){return!this.isIOSSafari()&&!this.isIOSChrome()&&!this.isIOSFirefox()&&!this.isIOSEdge()||this.isIOSSafari()&&this.majorVersion()>=o.MIN_IOS_SUPPORT_CANVAS_STREAM_PLAYBACK||this.majorVersion()>=o.MIN_IOS_NON_SAFARI_SUPPORT_CANVAS_STREAM_PLAYBACK}supportsBackgroundFilter(){return("safari"!==this.name()||15!==this.majorVersion())&&!!this.supportsCanvasCapturedStreamPlayback()}supportsVideoLayersAllocationRtpHeaderExtension(){return this.hasChromiumWebRTC()}requiresResolutionAlignment(e,t){return this.isAndroid()&&this.isPixel3()?[64*Math.ceil(e/64),64*Math.ceil(t/64)]:[e,t]}requiresCheckForSdpConnectionAttributes(){return!this.isIOSSafari()&&!this.isIOSChrome()&&!this.isIOSFirefox()}requiresIceCandidateGatheringTimeoutWorkaround(){return this.hasChromiumWebRTC()}requiresBundlePolicy(){return"max-bundle"}requiresNoExactMediaStreamConstraints(){return this.isSamsungInternet()}requiresGroupIdMediaStreamConstraints(){return this.isSamsungInternet()}getDisplayMediaAudioCaptureSupport(){return this.isChrome()||this.isEdge()}doesNotSupportMediaDeviceLabels(){return"chromium-webview"===this.browser.name}isSupported(){return!(!this.browserSupport[this.browser.name]||this.majorVersion()e.includes("a=rtpmap:"))).map((e=>e.replace(/.* /,"").replace(/\/.*/,""))).filter(((e,t,n)=>n.indexOf(e)===t)).filter((e=>"rtx"!==e&&"red"!==e&&"ulpfec"!==e))}))}supportsSetSinkId(){return"setSinkId"in HTMLAudioElement.prototype}disableResolutionScaleDown(){return this.isAndroid()}disable480pResolutionScaleDown(){return/( Chrome\/98\.)/i.test(navigator.userAgent)&&this.browser.os.startsWith("Windows")}requiresDisablingH264Encoding(){return(this.isIOSSafari()||this.isIOSChrome()||this.isIOSFirefox())&&("15.1.0"===this.version()||/( OS 15_1)/i.test(navigator.userAgent))}requiresVideoPlayWorkaround(){return this.isSafari()}isVideoFxSupportedBrowser(){return this.supportsBackgroundFilter()}isIOSSafari(){return"ios"===this.browser.name||"ios-webview"===this.browser.name||"safari"===this.browser.name&&/( Mac )/i.test(navigator.userAgent)&&navigator.maxTouchPoints>1}isSafari(){return"safari"===this.browser.name||this.isIOSSafari()}isFirefox(){return"firefox"===this.browser.name}isIOSFirefox(){return"fxios"===this.browser.name}isIOSChrome(){return"crios"===this.browser.name}isChrome(){return"chrome"===this.browser.name}isEdge(){return"edge-chromium"===this.browser.name}isIOSEdge(){return"edge-ios"===this.browser.name}isSamsungInternet(){return"samsung"===this.browser.name}isAndroid(){return/(android)/i.test(navigator.userAgent)}isPixel3(){return/( pixel 3)/i.test(navigator.userAgent)}}t.default=o,o.MIN_IOS_SUPPORT_CANVAS_STREAM_PLAYBACK=16,o.MIN_IOS_NON_SAFARI_SUPPORT_CANVAS_STREAM_PLAYBACK=106},4571:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(289),a=i(n(6196)),o=i(n(9496)),s=i(n(2306));class c{constructor(e,t,n){this.logger=e,this.videoStreamIndex=t,this.selfAttendeeId=n,this.globalMetricReport=new s.default,this.streamMetricReports={},this.rtcStatsReport={},this.customStatsReports=[],this.currentTimestampMs=0,this.previousTimestampMs=0,this.currentSsrcs={},this.overriddenObservableMetrics=new Map,this.identityValue=(e,t)=>{const n=t?this.streamMetricReports[t]:this.globalMetricReport;return Number(n.currentMetrics[e])},this.decoderLossPercent=(e,t)=>{const n=this.streamMetricReports[t],i=n.currentMetrics.concealedSamples-(n.previousMetrics.concealedSamples||0),r=n.currentMetrics.totalSamplesReceived-(n.previousMetrics.totalSamplesReceived||0);return r<=0||r-i<=0?0:i/r*100},this.packetLossPercent=(e,t)=>{const n=this.streamMetricReports[t],i=n.currentMetrics[e]-(n.previousMetrics[e]||0),r=n.currentMetrics.packetsLost-(n.previousMetrics.packetsLost||0),a=i+r;return a<=0||r<=0?0:100*r/a},this.jitterBufferMs=(e,t)=>{const n=this.streamMetricReports[t],i=n.currentMetrics.jitterBufferDelay-(n.previousMetrics.jitterBufferDelay||0),r=n.currentMetrics.jitterBufferEmittedCount-(n.previousMetrics.jitterBufferEmittedCount||0);return i<=0||r<=0?0:i/r*1e3},this.countPerSecond=(e,t)=>{const n=t?this.streamMetricReports[t]:this.globalMetricReport;let i=(this.currentTimestampMs-this.previousTimestampMs)/1e3;if(i<=0)return 0;this.previousTimestampMs<=0&&(i=1);const r=n.currentMetrics[e]-(n.previousMetrics[e]||0);return r<=0?0:Math.trunc(r/i)},this.bitsPerSecond=(e,t)=>{const n=t?this.streamMetricReports[t]:this.globalMetricReport;let i=(this.currentTimestampMs-this.previousTimestampMs)/1e3;if(i<=0)return 0;this.previousTimestampMs<=0&&(i=1);const r=8*(n.currentMetrics[e]-(n.previousMetrics[e]||0));return r<=0?0:Math.trunc(r/i)},this.secondsToMilliseconds=(e,t)=>{const n=t?this.streamMetricReports[t]:this.globalMetricReport;return Number(1e3*n.currentMetrics[e])},this.averageTimeSpentPerSecondInMilliseconds=(e,t)=>{const n=t?this.streamMetricReports[t]:this.globalMetricReport;let i=(this.currentTimestampMs-this.previousTimestampMs)/1e3;if(i<=0)return 0;this.previousTimestampMs<=0&&(i=1);const r=n.currentMetrics[e]-(n.previousMetrics[e]||0);return r<=0?0:1e3*r/i},this.averageCpuQualityLimitationDurationPerSecondInMilliseconds=(e,t)=>{const n=this.streamMetricReports[t];let i=(this.currentTimestampMs-this.previousTimestampMs)/1e3;if(i<=0)return 0;this.previousTimestampMs<=0&&(i=1);let r=0,a=0;for(const[t,i]of Object.entries(n.previousObjectMetrics[e]))"cpu"===t&&(r=i);for(const[t,i]of Object.entries(n.currentObjectMetrics[e]))"cpu"===t&&(a=i);const o=a-r;return o<=0?0:1e3*o/i},this.isHardwareImplementation=(e,t)=>{const n=this.streamMetricReports[t],i=String(n.currentStringMetrics[e]),r=i.includes("ExternalDecoder")||i.includes("ExternalEncoder")||i.includes("EncodeAccelerator")||i.includes("DecodeAccelerator"),a=i.includes("fallback from");return r&&!a?1:0},this.globalMetricMap={retransmittedBytesSent:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_RETRANSMIT_BITRATE},totalEncodedBytesTarget:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_TARGET_ENCODER_BITRATE},totalPacketSendDelay:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_BUCKET_DELAY_MS},packetsDiscardedOnSend:{transform:this.countPerSecond,type:r.SdkMetric.Type.SOCKET_DISCARDED_PPS},availableIncomingBitrate:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_AVAILABLE_RECEIVE_BANDWIDTH},availableOutgoingBitrate:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_AVAILABLE_SEND_BANDWIDTH},currentRoundTripTime:{transform:this.secondsToMilliseconds,type:r.SdkMetric.Type.STUN_RTT_MS},audioLevel:{transform:this.identityValue,type:r.SdkMetric.Type.RTC_MIC_AUDIO_LEVEL,source:"audioLevel"}},this.audioUpstreamMetricMap={jitter:{transform:this.secondsToMilliseconds,type:r.SdkMetric.Type.RTC_MIC_JITTER_MS},packetsSent:{transform:this.countPerSecond,type:r.SdkMetric.Type.RTC_MIC_PPS},bytesSent:{transform:this.bitsPerSecond,type:r.SdkMetric.Type.RTC_MIC_BITRATE},roundTripTime:{transform:this.secondsToMilliseconds,type:r.SdkMetric.Type.RTC_MIC_RTT_MS},packetsLost:{transform:this.packetLossPercent,type:r.SdkMetric.Type.RTC_MIC_FRACTION_PACKET_LOST_PERCENT,source:"packetsSent"}},this.audioDownstreamMetricMap={concealedSamples:{transform:this.countPerSecond},totalSamplesReceived:{transform:this.countPerSecond},decoderLoss:{transform:this.decoderLossPercent,type:r.SdkMetric.Type.RTC_SPK_FRACTION_DECODER_LOSS_PERCENT},packetsReceived:{transform:this.countPerSecond,type:r.SdkMetric.Type.RTC_SPK_PPS},packetsLost:{transform:this.packetLossPercent,type:r.SdkMetric.Type.RTC_SPK_FRACTION_PACKET_LOST_PERCENT,source:"packetsReceived"},jitter:{transform:this.secondsToMilliseconds,type:r.SdkMetric.Type.RTC_SPK_JITTER_MS},jitterBufferDelay:{transform:this.countPerSecond},jitterBufferEmittedCount:{transform:this.countPerSecond},jitterBufferMs:{transform:this.jitterBufferMs,type:r.SdkMetric.Type.RTC_SPK_JITTER_BUFFER_MS},bytesReceived:{transform:this.bitsPerSecond,type:r.SdkMetric.Type.RTC_SPK_BITRATE},audioLevel:{transform:this.identityValue,type:r.SdkMetric.Type.RTC_SPK_AUDIO_LEVEL},totalAudioPacketsLost:{transform:this.identityValue,type:r.SdkMetric.Type.RTC_SPK_TOTAL_LOST},totalAudioPacketsExpected:{transform:this.identityValue,type:r.SdkMetric.Type.RTC_SPK_TOTAL_EXPECTED},totalAudioPacketsRecoveredRed:{transform:this.identityValue,type:r.SdkMetric.Type.RTC_SPK_TOTAL_RECOVERED_RED},totalAudioPacketsRecoveredFec:{transform:this.identityValue,type:r.SdkMetric.Type.RTC_SPK_TOTAL_RECOVERED_FEC}},this.videoUpstreamMetricMap={roundTripTime:{transform:this.secondsToMilliseconds,type:r.SdkMetric.Type.VIDEO_SENT_RTT_MS},nackCount:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_NACKS_RECEIVED},pliCount:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_PLIS_RECEIVED},firCount:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_FIRS_RECEIVED},framesPerSecond:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_INPUT_FPS},framesEncoded:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_ENCODE_FPS},packetsSent:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_SENT_PPS},packetsLost:{transform:this.packetLossPercent,type:r.SdkMetric.Type.VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT,source:"packetsSent"},bytesSent:{transform:this.bitsPerSecond,type:r.SdkMetric.Type.VIDEO_SENT_BITRATE},qpSum:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_SENT_QP_SUM},frameHeight:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_ENCODE_HEIGHT},frameWidth:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_ENCODE_WIDTH},jitter:{transform:this.secondsToMilliseconds},totalEncodeTime:{transform:this.averageTimeSpentPerSecondInMilliseconds,type:r.SdkMetric.Type.VIDEO_ENCODE_MS},encoderImplementation:{transform:this.isHardwareImplementation,type:r.SdkMetric.Type.VIDEO_ENCODER_IS_HARDWARE},qualityLimitationDurations:{transform:this.averageCpuQualityLimitationDurationPerSecondInMilliseconds,type:r.SdkMetric.Type.VIDEO_QUALITY_LIMITATION_DURATION_CPU}},this.videoDownstreamMetricMap={packetsReceived:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_RECEIVED_PPS},packetsLost:{transform:this.packetLossPercent,type:r.SdkMetric.Type.VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT,source:"packetsReceived"},framesReceived:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_RECEIVED_FPS},framesDecoded:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_DECODE_FPS},nackCount:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_NACKS_SENT},firCount:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_FIRS_SENT},pliCount:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_PLIS_SENT},bytesReceived:{transform:this.bitsPerSecond,type:r.SdkMetric.Type.VIDEO_RECEIVED_BITRATE},jitter:{transform:this.secondsToMilliseconds,type:r.SdkMetric.Type.VIDEO_RECEIVED_JITTER_MS},jitterBufferDelay:{transform:this.countPerSecond},jitterBufferEmittedCount:{transform:this.countPerSecond},jitterBufferMs:{transform:this.jitterBufferMs,type:r.SdkMetric.Type.VIDEO_JITTER_BUFFER_MS},qpSum:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_RECEIVED_QP_SUM},frameHeight:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_DECODE_HEIGHT},frameWidth:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_DECODE_WIDTH},totalDecodeTime:{transform:this.averageTimeSpentPerSecondInMilliseconds,type:r.SdkMetric.Type.VIDEO_DECODE_MS},decoderImplementation:{transform:this.isHardwareImplementation,type:r.SdkMetric.Type.VIDEO_DECODER_IS_HARDWARE},totalFreezeDuration:{transform:this.averageTimeSpentPerSecondInMilliseconds,type:r.SdkMetric.Type.VIDEO_FREEZE_DURATION},freezeCount:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_FREEZE_COUNT},totalPauseDuration:{transform:this.averageTimeSpentPerSecondInMilliseconds,type:r.SdkMetric.Type.VIDEO_PAUSE_DURATION},pauseCount:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_PAUSE_COUNT},framesDropped:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_DROPPED_FPS}},this.streamDimensionMap={encoderImplementation:r.SdkStreamDimension.Type.VIDEO_ENCODER_NAME,decoderImplementation:r.SdkStreamDimension.Type.VIDEO_DECODER_NAME},this.observableVideoMetricSpec={videoUpstreamBitrate:{source:"bytesSent",media:o.default.VIDEO,dir:a.default.UPSTREAM},videoUpstreamPacketsSent:{source:"packetsSent",media:o.default.VIDEO,dir:a.default.UPSTREAM},videoUpstreamPacketLossPercent:{source:"packetsLost",media:o.default.VIDEO,dir:a.default.UPSTREAM},videoUpstreamFramesEncodedPerSecond:{source:"framesEncoded",media:o.default.VIDEO,dir:a.default.UPSTREAM},videoUpstreamFrameHeight:{source:"frameHeight",media:o.default.VIDEO,dir:a.default.UPSTREAM},videoUpstreamFrameWidth:{source:"frameWidth",media:o.default.VIDEO,dir:a.default.UPSTREAM},videoUpstreamJitterMs:{source:"jitter",media:o.default.VIDEO,dir:a.default.UPSTREAM},videoUpstreamRoundTripTimeMs:{source:"roundTripTime",media:o.default.VIDEO,dir:a.default.UPSTREAM},videoDownstreamBitrate:{source:"bytesReceived",media:o.default.VIDEO,dir:a.default.DOWNSTREAM},videoDownstreamPacketLossPercent:{source:"packetsLost",media:o.default.VIDEO,dir:a.default.DOWNSTREAM},videoDownstreamPacketsReceived:{source:"packetsReceived",media:o.default.VIDEO,dir:a.default.DOWNSTREAM},videoDownstreamFramesDecodedPerSecond:{source:"framesDecoded",media:o.default.VIDEO,dir:a.default.DOWNSTREAM},videoDownstreamFrameHeight:{source:"frameHeight",media:o.default.VIDEO,dir:a.default.DOWNSTREAM},videoDownstreamFrameWidth:{source:"frameWidth",media:o.default.VIDEO,dir:a.default.DOWNSTREAM},videoDownstreamJitterMs:{source:"jitter",media:o.default.VIDEO,dir:a.default.DOWNSTREAM},videoDownstreamDelayMs:{source:"jitterBufferMs",media:o.default.VIDEO,dir:a.default.DOWNSTREAM}},this.observableMetricSpec={audioPacketsReceived:{source:"packetsReceived",media:o.default.AUDIO,dir:a.default.DOWNSTREAM},audioPacketsReceivedFractionLoss:{source:"packetsLost",media:o.default.AUDIO,dir:a.default.DOWNSTREAM},audioDecoderLoss:{source:"decoderLoss",media:o.default.AUDIO,dir:a.default.DOWNSTREAM},audioPacketsSent:{source:"packetsSent",media:o.default.AUDIO,dir:a.default.UPSTREAM},audioPacketLossPercent:{source:"packetsLost",media:o.default.AUDIO,dir:a.default.UPSTREAM},audioUpstreamRoundTripTimeMs:{source:"roundTripTime",media:o.default.AUDIO,dir:a.default.UPSTREAM},videoUpstreamBitrate:{source:"bytesSent",media:o.default.VIDEO,dir:a.default.UPSTREAM},videoPacketSentPerSecond:{source:"packetsSent",media:o.default.VIDEO,dir:a.default.UPSTREAM},audioSpeakerDelayMs:{source:"jitterBufferMs",media:o.default.AUDIO,dir:a.default.DOWNSTREAM},audioUpstreamJitterMs:{source:"jitter",media:o.default.AUDIO,dir:a.default.UPSTREAM},audioDownstreamJitterMs:{source:"jitter",media:o.default.AUDIO,dir:a.default.DOWNSTREAM},nackCountReceivedPerSecond:{source:"nackCount",media:o.default.VIDEO,dir:a.default.UPSTREAM},availableOutgoingBitrate:{source:"availableOutgoingBitrate"},availableIncomingBitrate:{source:"availableIncomingBitrate"},currentRoundTripTimeMs:{source:"currentRoundTripTime"},audioDownstreamLevel:{source:"audioLevel",media:o.default.AUDIO,dir:a.default.DOWNSTREAM},audioUpstreamLevel:{source:"audioLevel"}}}getMetricMap(e,t){switch(e){case o.default.AUDIO:switch(t){case a.default.UPSTREAM:return this.audioUpstreamMetricMap;case a.default.DOWNSTREAM:return this.audioDownstreamMetricMap}case o.default.VIDEO:switch(t){case a.default.UPSTREAM:return this.videoUpstreamMetricMap;case a.default.DOWNSTREAM:return this.videoDownstreamMetricMap}default:return this.globalMetricMap}}getStreamDimensionMap(){return this.streamDimensionMap}getObservableMetricValue(e){if(this.overriddenObservableMetrics.has(e))return this.overriddenObservableMetrics.get(e);const t=this.observableMetricSpec[e],n=this.getMetricMap(t.media,t.dir)[t.source],{transform:i,source:r}=n;if(!t.hasOwnProperty("media"))return i(r||t.source);for(const e in this.streamMetricReports){const n=this.streamMetricReports[e];if(n.direction===t.dir&&n.mediaType===t.media)return i(r||t.source,Number(e))}return 0}getObservableVideoMetricValue(e,t){const n=this.observableVideoMetricSpec[e],i=this.getMetricMap(n.media,n.dir)[n.source],{transform:r,source:a}=i;return r(a||n.source,t)}getObservableMetrics(){const e={};for(const t in this.observableMetricSpec)e[t]=this.getObservableMetricValue(t);return e}getObservableVideoMetrics(){const e={};if(!this.videoStreamIndex||!this.selfAttendeeId)return this.logger.error("Need to define VideoStreamIndex and selfAttendeeId if using getObservableVideoMetrics API"),e;for(const t in this.streamMetricReports)if(this.streamMetricReports[t].mediaType===o.default.VIDEO){const n={};for(const e in this.observableVideoMetricSpec)if(this.observableVideoMetricSpec[e].dir===this.streamMetricReports[t].direction){const i=this.getObservableVideoMetricValue(e,Number(t));isNaN(i)||(n[e]=i)}const i=this.streamMetricReports[t].groupId,r=this.streamMetricReports[t].streamId;let a="";a=void 0!==this.videoStreamIndex.attendeeIdForGroupId?i?this.videoStreamIndex.attendeeIdForGroupId(i):this.selfAttendeeId:r?this.videoStreamIndex.attendeeIdForStreamId(r):this.selfAttendeeId,e[a]=e[a]?e[a]:{},e[a][t]=n}return e}getRTCStatsReport(){return this.rtcStatsReport}clone(){const e=new c(this.logger,this.videoStreamIndex,this.selfAttendeeId);return e.globalMetricReport=this.globalMetricReport,e.streamMetricReports=this.streamMetricReports,e.rtcStatsReport=this.rtcStatsReport,e.customStatsReports=this.customStatsReports,e.currentTimestampMs=this.currentTimestampMs,e.previousTimestampMs=this.previousTimestampMs,e.overriddenObservableMetrics=this.overriddenObservableMetrics,e}print(){const e={globalMetricReport:this.globalMetricReport,streamMetricReports:this.streamMetricReports,currentTimestampMs:this.currentTimestampMs,previousTimestampMs:this.previousTimestampMs};this.logger.debug((()=>`Client Metric Report: ${JSON.stringify(e)}`))}removeDestroyedSsrcs(){for(const e in this.streamMetricReports)this.currentSsrcs[e]||delete this.streamMetricReports[e]}overrideObservableMetric(e,t){this.overriddenObservableMetrics.set(e,t)}}t.default=c},6196:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ClientMetricReportDirection=void 0,function(e){e[e.UPSTREAM=0]="UPSTREAM",e[e.DOWNSTREAM=1]="DOWNSTREAM"}(n=t.ClientMetricReportDirection||(t.ClientMetricReportDirection={})),t.default=n},9496:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ClientMetricReportMediaType=void 0,function(e){e[e.AUDIO=0]="AUDIO",e[e.VIDEO=1]="VIDEO"}(n=t.ClientMetricReportMediaType||(t.ClientMetricReportMediaType={})),t.default=n},2770:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{}},2306:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.previousMetrics={},this.currentMetrics={},this.currentStringMetrics={},this.previousObjectMetrics={},this.currentObjectMetrics={}}}},2353:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.currentTimestampMs=0,this.ssrc=0,this.totalAudioPacketsLost=0,this.totalAudioPacketsExpected=0,this.totalAudioPacketsRecoveredRed=0,this.totalAudioPacketsRecoveredFec=0}}},2811:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.previousMetrics={},this.currentMetrics={},this.currentStringMetrics={},this.previousObjectMetrics={},this.currentObjectMetrics={}}}},3940:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e,t,n){this.minHealth=e.minHealth,this.maxHealth=e.maxHealth,this.currentHealth=e.initialHealth,this.currentData=t.clone(),this.name=n}minimumHealth(){return this.minHealth}maximumHealth(){return this.maxHealth}health(){return this.maximumHealth()}update(e){this.currentData=e}getConnectionHealthData(){return this.currentData.clone()}healthy(){return this.health()>this.minimumHealth()}healthIfChanged(){const e=this.health();return e!==this.currentHealth?(this.currentHealth=e,e):null}}},6688:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class n{constructor(){this.connectionStartTimestampMs=0,this.consecutiveStatsWithNoPackets=0,this.consecutiveStatsWithNoAudioPacketsSent=0,this.lastPacketLossInboundTimestampMs=0,this.lastGoodSignalTimestampMs=0,this.lastWeakSignalTimestampMs=0,this.lastNoSignalTimestampMs=0,this.consecutiveMissedPongs=0,this.packetsReceivedInLastMinute=[],this.fractionPacketsLostInboundInLastMinute=[],this.audioSpeakerDelayMs=0,this.connectionStartTimestampMs=Date.now(),this.lastGoodSignalTimestampMs=Date.now()}static isTimestampRecent(e,t){return Date.now(){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.minHealth=0,this.maxHealth=1,this.initialHealth=1,this.connectionUnhealthyThreshold=25,this.noSignalThresholdTimeMs=1e4,this.connectionWaitTimeMs=1e4,this.zeroBarsNoSignalTimeMs=5e3,this.oneBarWeakSignalTimeMs=5e3,this.twoBarsTimeMs=5e3,this.threeBarsTimeMs=1e4,this.fourBarsTimeMs=2e4,this.fiveBarsTimeMs=6e4,this.cooldownTimeMs=6e4,this.pastSamplesToConsider=15,this.goodSignalTimeMs=15e3,this.fractionalLoss=.5,this.packetsExpected=50,this.maximumTimesToWarn=2,this.missedPongsLowerThreshold=1,this.missedPongsUpperThreshold=4,this.maximumAudioDelayMs=6e4,this.maximumAudioDelayDataPoints=10,this.sendingAudioFailureSamplesToConsider=2,this.sendingAudioFailureInitialWaitTimeMs=3e3}}},9708:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(3940));class a extends r.default{constructor(e,t,n){super(t,n,"Reconnection Health"),this.logger=e,this.audioDelayPointsOverMaximum=0,a.CONNECTION_UNHEALTHY_THRESHOLD=t.connectionUnhealthyThreshold,a.CONNECTION_WAIT_TIME_MS=t.connectionWaitTimeMs,a.MISSED_PONGS_THRESHOLD=t.missedPongsUpperThreshold,a.MAXIMUM_AUDIO_DELAY_MS=t.maximumAudioDelayMs,a.MAXIMUM_AUDIO_DELAY_DATA_POINTS=t.maximumAudioDelayDataPoints}health(){if(this.currentData.isConnectionStartRecent(a.CONNECTION_WAIT_TIME_MS))return 1;const e=this.currentData.consecutiveStatsWithNoPackets>=a.CONNECTION_UNHEALTHY_THRESHOLD,t=this.currentData.consecutiveMissedPongs>=a.MISSED_PONGS_THRESHOLD;this.currentData.audioSpeakerDelayMs>a.MAXIMUM_AUDIO_DELAY_MS?this.audioDelayPointsOverMaximum+=1:this.audioDelayPointsOverMaximum=0;const n=this.audioDelayPointsOverMaximum>a.MAXIMUM_AUDIO_DELAY_DATA_POINTS;return n&&(this.audioDelayPointsOverMaximum=0),e||t||n?(this.logger.warn(`reconnection recommended due to: no packets received: ${e}, missed pongs: ${t}, bad audio delay: ${n}`),0):1}}t.default=a},2977:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(3940));class a extends r.default{constructor(e,t,n){super(t,n,"Sending Audio Health"),this.logger=e,this.sendingAudioFailureSamplesToConsider=t.sendingAudioFailureSamplesToConsider>0?t.sendingAudioFailureSamplesToConsider:1,this.sendingAudioFailureInitialWaitTimeMs=t.sendingAudioFailureInitialWaitTimeMs,this.maximumTimesToWarn=t.maximumTimesToWarn,this.coolDownTimeMs=t.cooldownTimeMs,this.lastWarnTimestampMs=0,this.warnCount=0}isSendingAudioUnhealthy(){const e=!this.currentData.isConnectionStartRecent(this.sendingAudioFailureInitialWaitTimeMs),t=this.currentData.consecutiveStatsWithNoAudioPacketsSent>=this.sendingAudioFailureSamplesToConsider;return e&&t}health(){if(this.isSendingAudioUnhealthy()){const e=Date.now()-this.lastWarnTimestampMsthis.minimumHealth()&&!e?(this.logger.warn(`Sending Audio is unhealthy for ${this.sendingAudioFailureSamplesToConsider} seconds consecutively.`),this.warnCount++,this.warnCount>this.maximumTimesToWarn?(this.logger.warn("SendingAudioFailure health policy maximum warnings breached. Falling back to reporting healthy."),this.maximumHealth()):(this.lastWarnTimestampMs=Date.now(),this.minimumHealth())):this.currentHealth}return this.maximumHealth()}}t.default=a},1922:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(3940));class a extends r.default{constructor(e,t){super(e,t,"Unusable Audio Warning"),this.coolDownTimeMs=e.cooldownTimeMs,this.pastSamplesToConsider=e.pastSamplesToConsider,this.fractionalLoss=e.fractionalLoss,this.packetsExpected=e.packetsExpected,this.maximumTimesToWarn=e.maximumTimesToWarn,this.lastWarnTimestampMs=0,this.warnCount=0}calculateFractionalLoss(){if(this.currentData.packetsReceivedInLastMinute.length=this.fractionalLoss?0!==this.currentHealth&&(this.lastWarnTimestampMs=Date.now(),this.warnCount++,this.warnCount>this.maximumTimesToWarn)?1:0:1}}t.default=a},8581:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(8660);t.default=class{constructor(e,t,n,i,r){this.audioVideoController=e,this.realtimeController=t,this.connectionHealthData=n,this.pingPong=i,this.statsCollector=r,this.isActive=!1,this.hasSeenValidPacketMetricsBefore=!1,this.realtimeController.realtimeSubscribeToLocalSignalStrengthChange((e=>{this.isActive&&this.receiveSignalStrengthChange(e)}))}start(){this.isActive=!0,this.pingPong.addObserver(this),this.pingPong.start(),this.audioVideoController.addObserver(this)}stop(){this.isActive=!1,this.pingPong.removeObserver(this),this.pingPong.stop(),this.audioVideoController.removeObserver(this)}receiveSignalStrengthChange(e){0===e?this.connectionHealthData.setLastNoSignalTimestampMs(Date.now()):e<=.5?this.connectionHealthData.setLastWeakSignalTimestampMs(Date.now()):this.connectionHealthData.setLastGoodSignalTimestampMs(Date.now()),this.updateConnectionHealth()}didReceivePong(e,t,n){this.connectionHealthData.setConsecutiveMissedPongs(0),this.statsCollector.logLatency("ping_pong",t),this.statsCollector.logLatency("ping_pong_clock_skew",n),this.updateConnectionHealth()}didMissPongs(){this.connectionHealthData.setConsecutiveMissedPongs(this.connectionHealthData.consecutiveMissedPongs+1),this.updateConnectionHealth()}metricsDidReceive(e){let t=0,n=0;const i=e.getObservableMetrics(),r=i.audioPacketsReceived,a=i.audioPacketsReceivedFractionLoss,o=i.audioSpeakerDelayMs;"number"!=typeof o||isNaN(o)||this.connectionHealthData.setAudioSpeakerDelayMs(o),"number"==typeof r&&"number"==typeof a&&(t=r,n=a,t<0||n<0||(this.addToMinuteWindow(this.connectionHealthData.packetsReceivedInLastMinute,t),this.addToMinuteWindow(this.connectionHealthData.fractionPacketsLostInboundInLastMinute,n),t>0?(this.hasSeenValidPacketMetricsBefore=!0,this.connectionHealthData.setConsecutiveStatsWithNoPackets(0)):this.hasSeenValidPacketMetricsBefore&&this.connectionHealthData.setConsecutiveStatsWithNoPackets(this.connectionHealthData.consecutiveStatsWithNoPackets+1),(0===t||n>0)&&this.connectionHealthData.setLastPacketLossInboundTimestampMs(Date.now()),"number"==typeof i.audioPacketsSent&&this.updateAudioPacketsSentInConnectionHealth(i.audioPacketsSent),this.updateConnectionHealth()))}updateAudioPacketsSentInConnectionHealth(e){e>0?this.connectionHealthData.setConsecutiveStatsWithNoAudioPacketsSent(0):this.connectionHealthData.setConsecutiveStatsWithNoAudioPacketsSent(this.connectionHealthData.consecutiveStatsWithNoAudioPacketsSent+1)}addToMinuteWindow(e,t){e.unshift(t),e.length>60&&e.pop()}updateConnectionHealth(){this.audioVideoController.forEachObserver((e=>{i.Maybe.of(e.connectionHealthDidChange).map((t=>t.bind(e)(this.connectionHealthData.clone())))}))}}},8890:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.Modality="#content"}(n||(n={})),t.default=n},8370:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(543)),o=r(n(4142));class s{constructor(e){this.logger=e}get mediaStream(){return this._mediaStream}set mediaStream(e){this._mediaStream=e}acquireAudioInputStream(){return i(this,void 0,void 0,(function*(){return 0===this._mediaStream.getAudioTracks().length?(this.logger.info("No audio stream available. Synthesizing an audio stream."),o.default.synthesizeAudioDevice(0)):this._mediaStream}))}acquireVideoInputStream(){return i(this,void 0,void 0,(function*(){return this._mediaStream}))}acquireDisplayInputStream(e){return i(this,void 0,void 0,(function*(){return e&&e.video&&e.video.mandatory&&e.video.mandatory.chromeMediaSource&&e.video.mandatory.chromeMediaSourceId?navigator.mediaDevices.getUserMedia(e):navigator.mediaDevices.getDisplayMedia(e)}))}acquireScreenCaptureDisplayInputStream(e,t){return i(this,void 0,void 0,(function*(){return this.acquireDisplayInputStream(this.screenCaptureDisplayMediaConstraints(e,t))}))}screenCaptureDisplayMediaConstraints(e,t){return{audio:!(e||!(new a.default).getDisplayMediaAudioCaptureSupport()),video:Object.assign(Object.assign({},!e&&{frameRate:{max:t||s.defaultFrameRate}}),e&&{mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:e,maxFrameRate:t||s.defaultFrameRate}})}}toggleMediaStream(e){let t=!1;if(this.mediaStream)for(let n=0;n{this.stopContentShare()}));this.contentAudioVideo.start()}}))}startContentShareFromScreenCapture(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.mediaStreamBroker.acquireScreenCaptureDisplayInputStream(e,t);return yield this.startContentShare(n),n}))}pauseContentShare(){this.mediaStreamBroker.toggleMediaStream(!1)&&this.forEachContentShareObserver((e=>{l.Maybe.of(e.contentShareDidPause).map((t=>t.call(e)))}))}unpauseContentShare(){this.mediaStreamBroker.toggleMediaStream(!0)&&this.forEachContentShareObserver((e=>{l.Maybe.of(e.contentShareDidUnpause).map((t=>t.call(e)))}))}setContentShareVideoCodecPreferences(e){this.contentAudioVideo.setVideoCodecSendPreferences(e)}destroy(){return i(this,void 0,void 0,(function*(){this.contentAudioVideo&&(this.destroyed=!0,this.contentAudioVideo.removeObserver(this),this.stopContentShare(),this.observerQueue.clear(),this.contentAudioVideo=void 0,this.attendeeAudioVideo=void 0,this.mediaStreamBroker=void 0)}))}stopContentShare(){this.contentAudioVideo.stop(),this.mediaStreamBroker.cleanup()}addContentShareObserver(e){this.observerQueue.add(e)}removeContentShareObserver(e){this.observerQueue.delete(e)}forEachContentShareObserver(e){for(const t of this.observerQueue)c.default.nextTick((()=>{this.observerQueue.has(t)&&e(t)}))}audioVideoDidStart(){var e;(null===(e=this.mediaStreamBroker.mediaStream)||void 0===e?void 0:e.getVideoTracks().length)>0&&this.contentAudioVideo.videoTileController.startLocalVideoTile()}audioVideoDidStop(e){this.mediaStreamBroker.cleanup(),this.contentShareTile&&(this.attendeeAudioVideo.videoTileController.removeVideoTile(this.contentShareTile.id()),this.contentShareTile=null),this.forEachContentShareObserver((e=>{l.Maybe.of(e.contentShareDidStop).map((t=>t.call(e)))}))}setupContentShareEvents(){this.attendeeAudioVideo.realtimeController.realtimeSubscribeToAttendeeIdPresence(((e,t,n,i)=>{const r=new s.default(e).hasModality(s.default.MODALITY_CONTENT),a=new s.default(e).base()===this.attendeeAudioVideo.configuration.credentials.attendeeId;if(!r||!a||!t||this.contentShareTile)return;const o=this.mediaStreamBroker.mediaStream;if(null==o?void 0:o.getVideoTracks().length){this.contentShareTile=this.attendeeAudioVideo.videoTileController.addVideoTile();const e=o.getVideoTracks()[0];let t,n;if(e.getSettings){const i=e.getSettings();t=i.width,n=i.height}else{const i=e.getCapabilities();t=i.width,n=i.height}this.contentShareTile.bindVideoStream(this.contentAudioVideo.configuration.credentials.attendeeId,!1,o,t,n,null,this.contentAudioVideo.configuration.credentials.externalUserId)}this.forEachContentShareObserver((e=>{l.Maybe.of(e.contentShareDidStart).map((t=>t.call(e)))}))}))}}},7237:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{static register(){"document"in n.g&&document.addEventListener&&i.shouldRegisterCSPMonitor&&(i.added||(document.addEventListener("securitypolicyviolation",i.listener),i.added=!0))}static unregister(){"document"in n.g&&document.removeEventListener&&(document.removeEventListener("securitypolicyviolation",i.listener),i.loggers=new Set,i.added=!1)}static disable(){i.shouldRegisterCSPMonitor=!1,i.unregister()}static addLogger(e){e&&i.loggers.add(e)}static removeLogger(e){e&&i.loggers.delete(e)}}t.default=i,i.loggers=new Set,i.shouldRegisterCSPMonitor=!0,i.added=!1,i.listener=e=>{const t=`Security Policy Violation\nBlocked URI: ${e.blockedURI}\nViolated Directive: ${e.violatedDirective}\nOriginal Policy: ${e.originalPolicy}\nDocument URI: ${e.documentURI}\nSource File: ${e.sourceFile}\nLine No.: ${e.lineNumber}\n`;for(const e of i.loggers)e.error(t);0===i.loggers.size&&console.error(t)}},1018:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e,t,n,i,r,a){this.timestampMs=e,this.topic=t,this.data=n,this.senderAttendeeId=i,this.senderExternalUserId=r,this.throttled=!!a}text(){return(new TextDecoder).decode(this.data)}json(){return JSON.parse((new TextDecoder).decode(this.data))}}},146:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isDestroyable=void 0,t.isDestroyable=function(e){return e&&"destroy"in e}},1746:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isAudioTransformDevice=void 0,t.isAudioTransformDevice=function(e){return!!e&&"object"==typeof e&&"mute"in e&&"stop"in e&&"intrinsicDevice"in e}},4142:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(543)),o=r(n(6354)),s=r(n(7797)),c=r(n(1515)),l=n(8660),d=r(n(7673)),u=r(n(3327)),f=n(1746),h=r(n(8128)),m=r(n(5348)),p=r(n(1238)),g=r(n(3110)),v=r(n(4842)),b=r(n(6991)),y=r(n(6950)),S=r(n(4500)),C=n(7170);class w{constructor(e,t,n=new a.default,i){this.logger=e,this.browserBehavior=n,this.eventController=i,this.deviceInfoCache=null,this.activeDevices={audio:null,video:null},this.chosenVideoTransformDevice=null,this.audioOutputDeviceId=void 0,this.deviceChangeObservers=new Set,this.mediaStreamBrokerObservers=new Set,this.deviceLabelTrigger=()=>navigator.mediaDevices.getUserMedia({audio:!0,video:!0}),this.audioInputDestinationNode=null,this.audioInputSourceNode=null,this.videoInputQualitySettings=null,this.useWebAudio=!1,this.useMediaConstraintsFallback=!0,this.audioInputTaskQueue=new c.default,this.videoInputTaskQueue=new c.default,this.muted=!1,this.mediaStreamMuteObserver=(e,t)=>{for(const n of this.deviceChangeObservers)s.default.nextTick((()=>{this.deviceChangeObservers.has(n)&&n.audioInputMuteStateChanged&&n.audioInputMuteStateChanged(e,t)}))},this.alreadyHandlingDeviceChange=!1;const{enableWebAudio:r=!1,useMediaConstraintsFallback:l=!0}=t||{};this.useWebAudio=r,this.useMediaConstraintsFallback=l,this.videoInputQualitySettings=new S.default(w.defaultVideoWidth,w.defaultVideoHeight,w.defaultVideoFrameRate);const d=this.browserBehavior.requiresResolutionAlignment(this.videoInputQualitySettings.videoWidth,this.videoInputQualitySettings.videoHeight);this.videoInputQualitySettings.videoWidth=d[0],this.videoInputQualitySettings.videoHeight=d[1],this.logger.info(`DefaultDeviceController video dimension ${this.videoInputQualitySettings.videoWidth} x ${this.videoInputQualitySettings.videoHeight}`);try{this.mediaDeviceWrapper=(new o.default).create();const e=navigator.mediaDevices.getSupportedConstraints();this.logger.info(`Supported Constraints in this browser ${JSON.stringify(e)}`)}catch(t){e.error(t.message)}}isWatchingForDeviceChanges(){return!!this.onDeviceChangeCallback}ensureWatchingDeviceChanges(){var e;this.isWatchingForDeviceChanges()||(this.logger.info("Starting devicechange listener."),this.onDeviceChangeCallback=()=>{this.logger.info("Device change event callback is triggered"),this.handleDeviceChange()},null===(e=this.mediaDeviceWrapper)||void 0===e||e.addEventListener("devicechange",this.onDeviceChangeCallback))}stopWatchingDeviceChanges(){var e;this.isWatchingForDeviceChanges()&&(this.logger.info("Stopping devicechange listener."),null===(e=this.mediaDeviceWrapper)||void 0===e||e.removeEventListener("devicechange",this.onDeviceChangeCallback),this.onDeviceChangeCallback=void 0)}shouldObserveDeviceChanges(){return!!this.deviceChangeObservers.size||this.activeDevices.audio&&null!==this.activeDevices.audio.constraints||this.activeDevices.video&&null!==this.activeDevices.video.constraints||!!this.audioOutputDeviceId}watchForDeviceChangesIfNecessary(){this.shouldObserveDeviceChanges()?this.ensureWatchingDeviceChanges():this.stopWatchingDeviceChanges()}destroy(){return i(this,void 0,void 0,(function*(){this.stopWatchingDeviceChanges(),yield this.stopAudioInput(),yield this.stopVideoInput()}))}listAudioInputDevices(e=!1){return i(this,void 0,void 0,(function*(){const t=yield this.listDevicesOfKind("audioinput",e);return this.trace("listAudioInputDevices",e,t),t}))}listVideoInputDevices(e=!1){return i(this,void 0,void 0,(function*(){const t=yield this.listDevicesOfKind("videoinput",e);return this.trace("listVideoInputDevices",e,t),t}))}listAudioOutputDevices(e=!1){return i(this,void 0,void 0,(function*(){const t=yield this.listDevicesOfKind("audiooutput",e);return this.trace("listAudioOutputDevices",e,t),t}))}pushAudioMeetingStateForPermissions(e){var t;null===(t=this.eventController)||void 0===t||t.publishEvent(void 0===e?"audioInputUnselected":"audioInputSelected")}pushVideoMeetingStateForPermissions(e){var t;null===(t=this.eventController)||void 0===t||t.publishEvent(void 0===e?"videoInputUnselected":"videoInputSelected")}startAudioInput(e){return i(this,void 0,void 0,(function*(){return yield this.audioInputTaskQueue.add((()=>this.startAudioInputTask(e)))}))}startAudioInputTask(e){var t;return i(this,void 0,void 0,(function*(){if(void 0!==e)try{return f.isAudioTransformDevice(e)?(this.logger.info(`Choosing transform input device ${e}`),yield this.chooseAudioTransformInputDevice(e)):(this.logger.info(`Choosing intrinsic audio input device ${e}`),this.removeTransform(),yield this.chooseInputIntrinsicDevice("audio",e)),this.trace("startAudioInputDevice",e,"success"),this.useWebAudio?(this.attachAudioInputStreamToAudioContext(this.activeDevices.audio.stream),this.pushAudioMeetingStateForPermissions(this.getMediaStreamDestinationNode().stream),yield null===(t=this.transform)||void 0===t?void 0:t.device.mute(this.muted),this.getMediaStreamDestinationNode().stream):(this.publishAudioInputDidChangeEvent(this.activeDevices.audio.stream),this.activeDevices.audio.stream)}catch(e){throw e}else this.logger.error("Audio input device cannot be undefined")}))}stopAudioInput(){return i(this,void 0,void 0,(function*(){return this.audioInputTaskQueue.add((()=>this.stopAudioInputTask()))}))}stopAudioInputTask(){return i(this,void 0,void 0,(function*(){try{if(this.useWebAudio)return void this.releaseAudioTransformStream();this.stopTracksAndRemoveCallbacks("audio")}finally{this.watchForDeviceChangesIfNecessary(),this.publishAudioInputDidChangeEvent(void 0)}}))}chooseAudioTransformInputDevice(e){var t;return i(this,void 0,void 0,(function*(){if((null===(t=this.transform)||void 0===t?void 0:t.device)===e)return;if(!this.useWebAudio)throw new Error("Cannot apply transform device without enabling Web Audio.");const n=w.getAudioContext();if(n instanceof OfflineAudioContext);else switch(n.state){case"running":break;case"closed":throw new Error("Cannot choose a transform device with a closed audio context.");case"suspended":yield n.resume()}let i;try{i=yield e.createAudioNode(n)}catch(e){throw this.logger.error(`Unable to create transform device node: ${e}.`),e}const r=yield e.intrinsicDevice();yield this.chooseInputIntrinsicDevice("audio",r),this.logger.debug(`Got inner stream: ${r}.`),this.setTransform(e,i)}))}chooseVideoTransformInputDevice(e){var t;return i(this,void 0,void 0,(function*(){if(this.eventController&&e instanceof d.default&&e.passEventControllerToProcessors(this.eventController),e===this.chosenVideoTransformDevice)return void this.logger.info("Reselecting same VideoTransformDevice");const n=this.chosenVideoTransformDevice;n&&this.logger.info("Switched from previous VideoTransformDevice");const i=!!n,r=yield e.intrinsicDevice();if(!this.isMediaStreamReusableByDeviceId(null===(t=this.activeDevices.video)||void 0===t?void 0:t.stream,r))return this.logger.info("video transform device needs new intrinsic device"),i&&n.onOutputStreamDisconnect(),this.chosenVideoTransformDevice=e,this.activeDevices.video=null,yield this.chooseInputIntrinsicDevice("video",r),this.logger.info("apply processors to transform"),void(yield this.chosenVideoTransformDevice.transformStream(this.activeDevices.video.stream));this.chosenVideoTransformDevice=e,this.logger.info("video transform device uses previous stream"),this.logger.info("apply processors to transform"),yield e.transformStream(this.activeDevices.video.stream)}))}startVideoInput(e){return i(this,void 0,void 0,(function*(){return yield this.videoInputTaskQueue.add((()=>this.startVideoInputTask(e)))}))}startVideoInputTask(e){return i(this,void 0,void 0,(function*(){if(e)try{return C.isVideoTransformDevice(e)?(this.logger.info(`Choosing video transform device ${e}`),yield this.chooseVideoTransformInputDevice(e),this.publishVideoInputDidChangeEvent(this.chosenVideoTransformDevice.outputMediaStream),this.chosenVideoTransformDevice.outputMediaStream):(this.chosenVideoInputIsTransformDevice()&&(this.chosenVideoTransformDevice.onOutputStreamDisconnect(),this.chosenVideoTransformDevice=null),yield this.chooseInputIntrinsicDevice("video",e),this.trace("startVideoInputDevice",e),this.publishVideoInputDidChangeEvent(this.activeDevices.video.stream),this.activeDevices.video.stream)}catch(e){throw e}else this.logger.error("Invalid video input device")}))}stopVideoInput(){return i(this,void 0,void 0,(function*(){return this.videoInputTaskQueue.add((()=>this.stopVideoInputTask()))}))}stopVideoInputTask(){return i(this,void 0,void 0,(function*(){try{if(this.chosenVideoInputIsTransformDevice())return void this.releaseVideoTransformStream();this.stopTracksAndRemoveCallbacks("video")}finally{this.watchForDeviceChangesIfNecessary(),this.publishVideoInputDidChangeEvent(void 0)}}))}chooseAudioOutput(e){return i(this,void 0,void 0,(function*(){this.audioOutputDeviceId=e,this.watchForDeviceChangesIfNecessary();const t=this.deviceInfoFromDeviceId("audiooutput",this.audioOutputDeviceId);this.publishAudioOutputDidChangeEvent(t),this.trace("chooseAudioOutput",e,null)}))}addDeviceChangeObserver(e){this.logger.info("adding device change observer"),this.deviceChangeObservers.add(e),this.watchForDeviceChangesIfNecessary(),this.trace("addDeviceChangeObserver")}removeDeviceChangeObserver(e){this.logger.info("removing device change observer"),this.deviceChangeObservers.delete(e),this.watchForDeviceChangesIfNecessary(),this.trace("removeDeviceChangeObserver")}createAnalyserNodeForAudioInput(){var e,t;if(!this.activeDevices.audio)return null;const n=null===(t=null===(e=this.transform)||void 0===e?void 0:e.nodes)||void 0===t?void 0:t.end;if(n){const e=n.context.createAnalyser();return e.removeOriginalInputs=()=>{try{n.disconnect(e)}catch(e){}},n.connect(e),e}return this.createAnalyserNodeForRawAudioInput()}createAnalyserNodeForRawAudioInput(){return this.activeDevices.audio?this.createAnalyserNodeForStream(this.activeDevices.audio.stream):null}createAnalyserNodeForStream(e){const t=w.getAudioContext(),n=t.createAnalyser(),i=t.createMediaStreamSource(e);return i.connect(n),this.trace("createAnalyserNodeForAudioInput"),n.removeOriginalInputs=()=>{try{i.disconnect(n)}catch(e){}},n}startVideoPreviewForVideoInput(e){if(!this.activeDevices.video)return this.logger.warn("cannot bind video preview since video input device has not been chosen"),void this.trace("startVideoPreviewForVideoInput",e.id);u.default.connectVideoStreamToVideoElement(this.chosenVideoTransformDevice?this.chosenVideoTransformDevice.outputMediaStream:this.activeDevices.video.stream,e,!0),this.trace("startVideoPreviewForVideoInput",e.id)}stopVideoPreviewForVideoInput(e){u.default.disconnectVideoStreamFromVideoElement(e,!1),this.trace("stopVideoPreviewForVideoInput",e.id)}setDeviceLabelTrigger(e){if(this.deviceInfoCache)for(const e of this.deviceInfoCache)if(!e.label){this.deviceInfoCache=null;break}this.deviceLabelTrigger=e,this.trace("setDeviceLabelTrigger")}mixIntoAudioInput(e){let t=null;return this.useWebAudio?(t=w.getAudioContext().createMediaStreamSource(e),t.connect(this.getMediaStreamOutputNode())):this.logger.warn("WebAudio is not enabled, mixIntoAudioInput will not work"),this.trace("mixIntoAudioInput",e.id),t}chooseVideoInputQuality(e,t,n){const i=this.browserBehavior.requiresResolutionAlignment(e,t);this.videoInputQualitySettings=new S.default(i[0],i[1],n)}getVideoInputQualitySettings(){return this.videoInputQualitySettings}acquireAudioInputStream(){return i(this,void 0,void 0,(function*(){return this.activeDevices.audio||(this.logger.info("No audio device chosen, creating empty audio device"),yield this.startAudioInput(null)),this.useWebAudio?this.getMediaStreamDestinationNode().stream:this.activeDevices.audio.stream}))}acquireVideoInputStream(){return i(this,void 0,void 0,(function*(){if(!this.activeDevices.video)throw new Error("No video device chosen");return this.chosenVideoInputIsTransformDevice()?this.chosenVideoTransformDevice.outputMediaStream:this.activeDevices.video.stream}))}acquireDisplayInputStream(e){return i(this,void 0,void 0,(function*(){throw new Error("unsupported")}))}releaseAudioTransformStream(){this.logger.info("Stopping audio track for Web Audio graph"),this.stopTracksAndRemoveCallbacks("audio"),this.logger.info("Removing audio transform, if there is one."),this.removeTransform(),this.audioInputSourceNode&&(this.audioInputSourceNode.disconnect(),this.audioInputSourceNode=void 0),this.audioInputDestinationNode&&(this.audioInputDestinationNode.disconnect(),this.audioInputDestinationNode=void 0)}releaseVideoTransformStream(){this.logger.info("Stopping video track for transform"),this.stopTracksAndRemoveCallbacks("video"),this.logger.info("Disconnecting video transform"),this.chosenVideoTransformDevice.onOutputStreamDisconnect(),this.chosenVideoTransformDevice=null}stopTracksAndRemoveCallbacks(e){const t=this.activeDevices[e];if(!t)return;const n=t.endedCallback,i=t.trackMuteCallback,r=t.trackUnmuteCallback;for(const a of t.stream.getTracks())a.stop(),n&&a.removeEventListener("ended",n),i&&a.removeEventListener("mute",i),r&&a.removeEventListener("unmute",r),delete t.endedCallback,delete t.trackMuteCallback,delete t.trackUnmuteCallback,delete this.activeDevices[e]}chosenVideoInputIsTransformDevice(){return!!this.chosenVideoTransformDevice}muteLocalAudioInputStream(){this.toggleLocalAudioInputStream(!1)}unmuteLocalAudioInputStream(){this.toggleLocalAudioInputStream(!0)}toggleLocalAudioInputStream(e){var t;let n=this.activeDevices.audio;if(this.useWebAudio&&(n=this.getMediaStreamDestinationNode()),n){for(const t of n.stream.getTracks())t.enabled!==e&&(t.enabled=e);this.muted!==!e&&(this.muted=!e,null===(t=this.transform)||void 0===t||t.device.mute(this.muted))}}static getIntrinsicDeviceId(e){if(!e)return;if("string"==typeof e)return e;if(e.id)return e.id;const t=e.deviceId;if(!t)return;if("string"==typeof t||Array.isArray(t))return t;const n=t;return"string"==typeof n.exact||Array.isArray(n.exact)?n.exact:void 0}static createEmptyAudioDevice(){return w.synthesizeAudioDevice(0)}static synthesizeAudioDevice(e){const t=w.getAudioContext(),n=t.createMediaStreamDestination();if(e){const i=t.createGain();i.gain.value=.1,i.connect(n);const r=t.createOscillator();r.frequency.value=e,r.connect(i),r.start()}else{const e=t.createBufferSource();try{e.buffer=t.createBuffer(1,5*t.sampleRate,t.sampleRate)}catch(n){if(!n||"NotSupportedError"!==n.name)throw n;e.buffer=t.createBuffer(1,5*w.defaultSampleRate,w.defaultSampleRate)}e.buffer.getChannelData(0)[0]=3e-4,e.loop=!0,e.connect(n),e.start()}return n.stream}listDevicesOfKind(e,t){return i(this,void 0,void 0,(function*(){return!t&&null!==this.deviceInfoCache&&this.isWatchingForDeviceChanges()||(yield this.updateDeviceInfoCacheFromBrowser()),this.listCachedDevicesOfKind(e)}))}updateDeviceInfoCacheFromBrowser(){var e;return i(this,void 0,void 0,(function*(){if("undefined"==typeof MediaDeviceInfo)return void(this.deviceInfoCache=[]);let t=yield navigator.mediaDevices.enumerateDevices(),n=!0;for(const e of t)if(!e.label){n=!1;break}if(!n)try{this.logger.info("attempting to trigger media device labels since they are hidden");const e=yield this.deviceLabelTrigger();t=yield navigator.mediaDevices.enumerateDevices();for(const t of e.getTracks())t.stop()}catch(t){this.logger.info("unable to get media device labels"),null===(e=this.eventController)||void 0===e||e.publishEvent("deviceLabelTriggerFailed",{deviceLabelTriggerErrorMessage:this.getErrorMessage(t)})}this.logger.debug(`Update device info cache with devices: ${JSON.stringify(t)}`),this.deviceInfoCache=t}))}listCachedDevicesOfKind(e){const t=[];if(this.deviceInfoCache)for(const n of this.deviceInfoCache)n.kind===e&&t.push(n);return t}handleDeviceChange(){return i(this,void 0,void 0,(function*(){if(null===this.deviceInfoCache)return;if(this.alreadyHandlingDeviceChange)return void s.default.nextTick((()=>{this.handleDeviceChange()}));this.alreadyHandlingDeviceChange=!0;const e=this.listCachedDevicesOfKind("audioinput"),t=this.listCachedDevicesOfKind("videoinput"),n=this.listCachedDevicesOfKind("audiooutput");yield this.updateDeviceInfoCacheFromBrowser();const i=this.listCachedDevicesOfKind("audioinput"),r=this.listCachedDevicesOfKind("videoinput"),a=this.listCachedDevicesOfKind("audiooutput");this.forEachObserver((o=>{this.areDeviceListsEqual(e,i)||l.Maybe.of(o.audioInputsChanged).map((e=>e.bind(o)(i))),this.areDeviceListsEqual(t,r)||l.Maybe.of(o.videoInputsChanged).map((e=>e.bind(o)(r))),this.areDeviceListsEqual(n,a)||l.Maybe.of(o.audioOutputsChanged).map((e=>e.bind(o)(a)))})),this.alreadyHandlingDeviceChange=!1}))}handleDeviceStreamEnded(e,t){return i(this,void 0,void 0,(function*(){try{"audio"===e?(this.logger.warn("Audio input device which was active is no longer available, resetting to null device"),yield this.startAudioInput(null)):(this.logger.warn("Video input device which was active is no longer available, stopping video"),yield this.stopVideoInput())}catch(e){this.logger.error("Failed to choose null device after stream ended.")}"audio"===e?this.forEachObserver((e=>{l.Maybe.of(e.audioInputStreamEnded).map((n=>n.bind(e)(t)))})):this.forEachObserver((e=>{l.Maybe.of(e.videoInputStreamEnded).map((n=>n.bind(e)(t)))}))}))}forEachObserver(e){for(const t of this.deviceChangeObservers)s.default.nextTick((()=>{this.deviceChangeObservers.has(t)&&e(t)}))}forEachMediaStreamBrokerObserver(e){for(const t of this.mediaStreamBrokerObservers)s.default.nextTick((()=>{this.mediaStreamBrokerObservers.has(t)&&e(t)}))}areDeviceListsEqual(e,t){return JSON.stringify(e.map((e=>JSON.stringify(e))).sort())===JSON.stringify(t.map((e=>JSON.stringify(e))).sort())}intrinsicDeviceAsMediaStream(e){return e&&e.id?e:null}hasSameMediaStreamId(e,t,n){var i,r,a,o;let s;return"audio"===e?(s=null==n?void 0:n.audio.streamId,!!s&&s===(null===(r=null===(i=t.constraints)||void 0===i?void 0:i.audio)||void 0===r?void 0:r.streamId)):(s=null==n?void 0:n.video.streamId,!!s&&s===(null===(o=null===(a=null==t?void 0:t.constraints)||void 0===a?void 0:a.video)||void 0===o?void 0:o.streamId))}hasSameGroupId(e,t,n){if(""===e)return!0;const i=w.getIntrinsicDeviceId(n);return this.logger.debug(`Checking deviceIds ${i} of type ${typeof i} with groupId ${e}`),"string"==typeof i&&e===this.getGroupIdFromDeviceId(t,i)}getGroupIdFromDeviceId(e,t){if(null!==this.deviceInfoCache){const n=this.listCachedDevicesOfKind(`${e}input`).find((e=>e.deviceId===t));if(n&&n.groupId)return this.logger.debug(`GroupId of deviceId ${t} found in cache is ${n.groupId}`),n.groupId}return this.logger.debug(`GroupId of deviceId ${t} found in cache is empty`),""}handleGetUserMediaError(e,t){if(!e)throw new m.default(e);switch(e.name){case"NotReadableError":case"TrackStartError":throw new g.default(e);case"NotFoundError":case"DevicesNotFoundError":throw new p.default(e);case"NotAllowedError":case"PermissionDeniedError":case"SecurityError":throw t&&t{this.activeDevices[e]&&this.activeDevices[e].stream===t.stream&&(this.handleDeviceStreamEnded(e,i),delete t.endedCallback)},r.addEventListener("ended",t.endedCallback,{once:!0})),"audio"===e){const e=t.stream.getAudioTracks()[0];if(e){const n=e.getSettings().deviceId||t.stream;t.trackMuteCallback=()=>{this.mediaStreamMuteObserver(n,!0)},t.trackUnmuteCallback=()=>{this.mediaStreamMuteObserver(n,!1)},e.addEventListener("mute",t.trackMuteCallback,{once:!1}),e.addEventListener("unmute",t.trackUnmuteCallback,{once:!1}),this.logger.debug("Notifying mute state after selection"),e.muted?t.trackMuteCallback():t.trackUnmuteCallback()}}}))}calculateMediaStreamConstraints(e,t,n,i){if(i&&1===this.listCachedDevicesOfKind(`${e}input`).length)return!0;const r={};return this.browserBehavior.requiresNoExactMediaStreamConstraints()?r.deviceId=t:r.deviceId={exact:t},n&&(r.groupId=n),i?r:"video"===e?(r.width={ideal:this.videoInputQualitySettings.videoWidth},r.height={ideal:this.videoInputQualitySettings.videoHeight},r.frameRate={ideal:this.videoInputQualitySettings.videoFrameRate},r):(this.supportSampleRateConstraint()&&(r.sampleRate={ideal:w.defaultSampleRate}),this.supportSampleSizeConstraint()&&(r.sampleSize={ideal:w.defaultSampleSize}),this.supportChannelCountConstraint()&&(r.channelCount={ideal:w.defaultChannelCount}),Object.assign({echoCancellation:!0,googEchoCancellation:!0,googEchoCancellation2:!0,googAutoGainControl:!0,googAutoGainControl2:!0,googNoiseSuppression:!0,googNoiseSuppression2:!0,googHighpassFilter:!0},r))}getMediaStreamConstraintsFromTrackConstraints(e,t){return"audio"===e?{audio:t}:{video:t}}getMediaStreamConstraints(e,t,n=!1){let i={};if(!t)return null;const r=this.intrinsicDeviceAsMediaStream(t);if(r)return i.streamId=r.id,this.getMediaStreamConstraintsFromTrackConstraints(e,i);if("string"==typeof t){let r="";return this.browserBehavior.requiresGroupIdMediaStreamConstraints()&&(null!==this.deviceInfoCache?r=this.getGroupIdFromDeviceId(e,t):this.logger.error("Device cache is not populated. Please make sure to call list devices first")),i=this.calculateMediaStreamConstraints(e,t,r,n),this.getMediaStreamConstraintsFromTrackConstraints(e,i)}return function(e){return"object"==typeof e&&"deviceId"in e&&"groupId"in e&&"kind"in e&&"label"in e}(t)?(i=this.calculateMediaStreamConstraints(e,t.deviceId,t.groupId,n),this.getMediaStreamConstraintsFromTrackConstraints(e,i)):(i=t,this.getMediaStreamConstraintsFromTrackConstraints(e,i))}deviceInfoFromDeviceId(e,t){if(null===this.deviceInfoCache)return null;for(const n of this.deviceInfoCache)if(n.kind===e&&n.deviceId===t)return n;return null}hasAppliedTransform(){return!!this.transform}isMediaStreamReusableByDeviceId(e,t){if(!e||!e.active||!t)return!1;if(t.id)return e.id===t.id;const n=this.getMediaTrackSettings(e);if(!n.deviceId)return!1;const i=w.getIntrinsicDeviceId(t);return"string"==typeof i&&n.deviceId===i}getMediaTrackSettings(e){var t;return null===(t=e.getTracks()[0])||void 0===t?void 0:t.getSettings()}reconnectAudioInputs(){if(!this.audioInputSourceNode)return;this.audioInputSourceNode.disconnect();const e=this.getMediaStreamOutputNode();this.audioInputSourceNode.connect(e)}setTransform(e,t){var n,i;null===(i=null===(n=this.transform)||void 0===n?void 0:n.nodes)||void 0===i||i.end.disconnect(),this.transform={nodes:t,device:e};const r=null==t?void 0:t.end,a=this.getMediaStreamDestinationNode();this.logger.debug(`Connecting transform node ${r} to destination ${a}.`),null==r||r.connect(a),this.reconnectAudioInputs()}removeTransform(){var e;const t=this.transform;if(t)return null===(e=this.transform.nodes)||void 0===e||e.end.disconnect(),this.transform=void 0,this.reconnectAudioInputs(),t}attachAudioInputStreamToAudioContext(e){var t;null===(t=this.audioInputSourceNode)||void 0===t||t.disconnect(),this.audioInputSourceNode=w.getAudioContext().createMediaStreamSource(e);const n=this.getMediaStreamOutputNode();this.audioInputSourceNode.connect(n)}getMediaStreamDestinationNode(){return this.audioInputDestinationNode||(this.audioInputDestinationNode=w.getAudioContext().createMediaStreamDestination()),this.audioInputDestinationNode}getMediaStreamOutputNode(){var e,t;return(null===(t=null===(e=this.transform)||void 0===e?void 0:e.nodes)||void 0===t?void 0:t.start)||this.getMediaStreamDestinationNode()}static setDefaultLatencyHint(e){w.defaultLatencyHint=e}static getAudioContext(){if(!w.audioContext){const e={};navigator.mediaDevices.getSupportedConstraints().sampleRate&&(e.sampleRate=w.defaultSampleRate),(new a.default).requiresPlaybackLatencyHintForAudioContext()&&(e.latencyHint="playback"),w.defaultLatencyHint&&(e.latencyHint=w.defaultLatencyHint),w.audioContext=new(window.AudioContext||window.webkitAudioContext)(e)}return w.audioContext}static closeAudioContext(){if(w.audioContext)try{w.audioContext.close()}catch(e){}w.audioContext=null}addMediaStreamBrokerObserver(e){this.mediaStreamBrokerObservers.add(e)}removeMediaStreamBrokerObserver(e){this.mediaStreamBrokerObservers.delete(e)}publishVideoInputDidChangeEvent(e){this.forEachMediaStreamBrokerObserver((t=>{t.videoInputDidChange&&t.videoInputDidChange(e)})),this.pushVideoMeetingStateForPermissions(e)}publishAudioInputDidChangeEvent(e){this.forEachMediaStreamBrokerObserver((t=>{t.audioInputDidChange&&t.audioInputDidChange(e)})),this.pushAudioMeetingStateForPermissions(e)}publishAudioOutputDidChangeEvent(e){this.forEachMediaStreamBrokerObserver((t=>{t.audioOutputDidChange&&t.audioOutputDidChange(e)}))}supportSampleRateConstraint(){return this.useWebAudio&&!!navigator.mediaDevices.getSupportedConstraints().sampleRate}supportSampleSizeConstraint(){return this.useWebAudio&&!!navigator.mediaDevices.getSupportedConstraints().sampleSize}supportChannelCountConstraint(){return this.useWebAudio&&!!navigator.mediaDevices.getSupportedConstraints().channelCount}trace(e,t,n){let i=`API/DefaultDeviceController/${e}`;void 0!==t&&(i+=` ${JSON.stringify(t)}`),void 0!==n&&(i+=` -> ${JSON.stringify(n)}`),this.logger.info(i)}}t.default=w,w.permissionDeniedOriginDetectionThresholdMs=500,w.defaultVideoWidth=960,w.defaultVideoHeight=540,w.defaultVideoFrameRate=15,w.defaultSampleRate=48e3,w.defaultSampleSize=16,w.defaultChannelCount=1,w.audioContext=null},8128:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.groupId=""}matchesConstraints(e){return JSON.stringify(this.constraints)===JSON.stringify(e)}}},5348:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class n extends Error{constructor(e,t){super(t||"Error fetching device."),this.cause=e,this.name="GetUserMediaError"}}t.default=n},6154:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.NoOpDeviceControllerWithEventController=void 0;const a=r(n(4015));class o extends a.default{constructor(e){super(),this.destroyed=!1}destroy(){return i(this,void 0,void 0,(function*(){this.destroyed=!0}))}listAudioInputDevices(){return Promise.resolve([])}listVideoInputDevices(){return Promise.resolve([])}listAudioOutputDevices(){return Promise.resolve([])}startAudioInput(e){return Promise.reject()}stopAudioInput(){return Promise.resolve()}startVideoInput(e){return Promise.reject()}stopVideoInput(){return Promise.resolve()}chooseAudioOutput(e){return Promise.reject()}addDeviceChangeObserver(e){}removeDeviceChangeObserver(e){}createAnalyserNodeForAudioInput(){return null}startVideoPreviewForVideoInput(e){}stopVideoPreviewForVideoInput(e){}setDeviceLabelTrigger(e){}mixIntoAudioInput(e){return null}chooseVideoInputQuality(e,t,n){}getVideoInputQualitySettings(){return null}}t.default=o,t.NoOpDeviceControllerWithEventController=class extends o{constructor(e){super(),this.eventController=e}}},1238:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(5348));class a extends r.default{constructor(e){super(e),this.name="NotFoundError"}}t.default=a},3110:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(5348));class a extends r.default{constructor(e){super(e),this.name="NotReadableError"}}t.default=a},4842:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(5348));class a extends r.default{constructor(e,t){super(e),this.constraint=t,this.name="OverconstrainedError"}}t.default=a},6991:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(5348));class a extends r.default{constructor(e,t){super(e,t),this.name="PermissionDeniedError"}}t.default=a},7786:function(e,t){"use strict";var n=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e){this.inner=e}mute(e){return n(this,void 0,void 0,(function*(){}))}stop(){var e;return n(this,void 0,void 0,(function*(){null===(e=this.node)||void 0===e||e.disconnect()}))}intrinsicDevice(){return n(this,void 0,void 0,(function*(){return this.inner}))}createAudioNode(e){var t;return n(this,void 0,void 0,(function*(){return null===(t=this.node)||void 0===t||t.disconnect(),this.node=yield this.createSingleAudioNode(e),{start:this.node,end:this.node}}))}}},6950:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(5348));class a extends r.default{constructor(e){super(e),this.name="TypeError"}}t.default=a},4500:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e,t,n){this.videoWidth=e,this.videoHeight=t,this.videoFrameRate=n}}},7170:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isVideoTransformDevice=void 0,t.isVideoTransformDevice=function(e){return!!e&&"object"==typeof e&&"transformStream"in e&&"stop"in e&&"intrinsicDevice"in e}},8236:function(e,t){"use strict";var n=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e,t){if(this.devicePixelRatioSource=e,this.observerQueue=new Set,this.mediaQueryListener=()=>{this.observerQueue.forEach((e=>{e.devicePixelRatioChanged(this.devicePixelRatioSource.devicePixelRatio())}))},"undefined"==typeof window)return;const n=matchMedia(`(resolution: ${this.devicePixelRatioSource.devicePixelRatio()}dppx)`);"function"==typeof n.addEventListener?(n.addEventListener("change",this.mediaQueryListener),this.mediaQueryList=n):"function"==typeof n.addListener?(n.addListener(this.mediaQueryListener),this.mediaQueryList=n):t.warn("ignoring DefaultDevicePixelRatioMonitor")}destroy(){return n(this,void 0,void 0,(function*(){this.mediaQueryList&&("function"==typeof this.mediaQueryList.addEventListener?this.mediaQueryList.removeEventListener("change",this.mediaQueryListener):this.mediaQueryList.removeListener(this.mediaQueryListener)),delete this.mediaQueryListener,this.observerQueue.clear()}))}registerObserver(e){this.observerQueue.add(e),e.devicePixelRatioChanged(this.devicePixelRatioSource.devicePixelRatio())}removeObserver(e){this.observerQueue.delete(e)}}},9190:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{devicePixelRatio(){return"undefined"!=typeof window&&window&&window.devicePixelRatio?window.devicePixelRatio:1}}},3520:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__rest||function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r({type:e.type,v:e.v,payloads:[...e.payloads]}),this.sendEvents=()=>i(this,void 0,void 0,(function*(){if(this.lock)return;const e=this.getItems(this.flushSize);if(0===e.length)return;this.lock=!0;const t=this.makeRequestBody(e);let n=!1;const i=Date.now();"firefox"===this.metadata.browserName.toLowerCase()&&this.cancellableEvents.set(i,e);try{this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEvents - sending body ${t}`);const r=yield this.send(t);if(this.cancellableEvents.delete(i),r.ok)try{const e=yield r.json();this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEvents - send successful events: ${t} message: ${JSON.stringify(e)}`)}catch(e){this.logger.warn(`Event Reporting - InMemoryJSONEventBuffer - sendEvents error reading OK response ${e} for events ${t}`)}else this.logger.error(`Event Reporting - InMemoryJSONEventBuffer - sendEvents - Failed to send events ${t} with response status ${r.status}`),n=!0}catch(e){n=!0,this.logger.warn(`Event Reporting - InMemoryJSONEventBuffer - sendEvents - Error in sending events ${t} to the ingestion endpoint ${e}`)}finally{this.lock=!1}n&&(this.cancellableEvents.delete(i),this.failedIngestionEvents.push(...e))}));const s=new c.default(o).getParserResult(),{browserMajorVersion:l}=s,d=r(s,["browserMajorVersion"]),u=t.toJSON(),{type:f,v:h}=u,m=r(u,["type","v"]);this.authenticationToken=t.getAuthenticationToken(),this.metadata=Object.assign(Object.assign({},d),m),Object.keys(this.metadata).forEach((e=>this.attributesToFilter.push(e))),this.type=f,this.v=h,this.ingestionURL=n,this.logger=o,this.importantEvents=new Set(a);const{maxBufferCapacityKb:p,totalBufferItems:g,flushSize:v,flushIntervalMs:b,retryCountLimit:y}=e;this.maxBufferCapacityBytes=1024*p,this.totalBufferItems=g,this.maxBufferItemCapacityBytes=Math.round(this.maxBufferCapacityBytes/g),this.flushIntervalMs=b,this.flushSize=v,this.retryCountLimit=y,this.currentIngestionEvent=this.initializeAndGetCurrentIngestionEvent(),this.beaconEventListener=e=>this.beaconEventHandler(e),this.addEventListeners()}addEventListeners(){this.beaconEventListener&&"window"in n.g&&window.addEventListener&&"document"in n.g&&document.addEventListener&&(this.logger.debug("Event Reporting - InMemoryJSONEventBuffer - addEventListeners - adding pagehide and visibility change event listeners"),window.addEventListener("pagehide",this.beaconEventListener),document.addEventListener("visibilitychange",this.beaconEventListener))}beaconEventHandler(e){("visibilitychange"===e.type&&"hidden"===document.visibilityState||"pagehide"===e.type)&&(this.logger.debug("Event Reporting - InMemoryJSONEventBuffer - beaconEventHandler is triggered calling sendBeacon"),this.sendBeacon())}removeEventListeners(){this.beaconEventListener&&"window"in n.g&&window.removeEventListener&&"document"in n.g&&document.removeEventListener&&(window.removeEventListener("pagehide",this.beaconEventListener),document.removeEventListener("visibilitychange",this.beaconEventListener),this.logger.debug("Event Reporting - InMemoryJSONEventBuffer - removeEventListeners - removing pagehide and visibility change event listeners"))}start(){var e;this.removeEventListeners(),this.addEventListeners(),null===(e=this.intervalScheduler)||void 0===e||e.stop(),this.intervalScheduler=new s.default(this.flushIntervalMs),this.intervalScheduler.start((()=>this.sendEvents()))}stop(){var e;null===(e=this.intervalScheduler)||void 0===e||e.stop(),this.intervalScheduler=void 0,this.sendBeacon(),this.removeEventListeners()}addItem(e){return i(this,void 0,void 0,(function*(){this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - addItem - received event ${JSON.stringify(e)}`);const{name:t,ts:n,attributes:i}=e,r=i&&this.filterAttributes(i,this.attributesToFilter),a=Object.assign({name:t,ts:n},r);this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - addItem - event after filtering attributes ${JSON.stringify(a)}`);const o=this.getSize(a);if(o>d.MAX_ITEM_SIZE_BYTES_ALLOWED)throw new Error(`Event Reporting - Item to be added has size ${o} bytes. Item cannot exceed max item size allowed of ${d.MAX_ITEM_SIZE_BYTES_ALLOWED} bytes.`);if(this.importantEvents.has(t))return this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - addItem - sending important event ${JSON.stringify(a)}`),void this.sendEventImmediately({name:t,ts:n,attributes:r});if(this.isFull())throw this.logger.warn("Event Reporting - Event buffer is full"),new Error("Buffer full");if(this.currentIngestionEvent.payloads.push(a),this.ingestionEventSize+=o,this.bufferItemThresholdReached(o)){const e=this.deepCopyCurrentIngestionEvent(this.currentIngestionEvent);this.buffer.push(e),this.bufferSize+=this.ingestionEventSize,this.currentIngestionEvent=this.initializeAndGetCurrentIngestionEvent(),this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - addItem - buffer item threshold reached updated buffer ${JSON.stringify(this.buffer)}`)}}))}filterAttributes(e,t){const n=new Set(t);return Object.keys(e).filter((e=>n.has(e))).forEach((t=>delete e[t])),e}initializeAndGetCurrentIngestionEvent(){const e={type:this.type,v:this.v,payloads:[]};return this.ingestionEventSize=this.getSize(e),e}bufferItemThresholdReached(e){return e+this.ingestionEventSize>=this.maxBufferItemCapacityBytes||this.currentIngestionEvent.payloads.length===d.MAX_PAYLOAD_ITEMS}getSize(e){let t=0;if("object"==typeof e)for(const[n,i]of Object.entries(e))t+=this.getPrimitiveSize(n),t+=this.getSize(i);else t+=this.getPrimitiveSize(e);return t}getPrimitiveSize(e){let t=0;return"string"==typeof e?t+=2*e.length:"number"==typeof e&&(t+=8),t}isFull(){return this.bufferSize===this.maxBufferCapacityBytes||this.buffer.length===this.totalBufferItems}isEmpty(){return 0===this.buffer.length||0===this.bufferSize}getItems(e,t=0){return this.isEmpty()?[]:(e=Math.min(this.buffer.length,e+1),this.buffer.splice(t,e))}makeBeaconRequestBody(e){const t={metadata:this.metadata,events:e,authorization:this.authenticationToken};return JSON.stringify(t)}makeRequestBody(e){const t={metadata:this.metadata,events:e};return JSON.stringify(t)}sendEventImmediately(e){return i(this,void 0,void 0,(function*(){this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - important event received ${JSON.stringify(e)}`);const{name:t,ts:n,attributes:i}=e,r={type:this.type,v:this.v,payloads:[Object.assign({name:t,ts:n},i)]};let a=!1,o=null;const s=this.makeRequestBody([r]);try{if(o=yield this.send(s),o.ok){try{const e=yield o.json();this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - send successful event: ${s}, message: ${JSON.stringify(e)}`)}catch(e){this.logger.warn(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - Error reading OK response ${e} for event ${s}`)}return}this.logger.error(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - Failed to send an important event ${s} with response status ${o.status}`),a=!0}catch(e){this.logger.warn(`Event Reporting - There may be a failure in sending an important event ${s} to the ingestion endpoint ${e}.`),a=!0;try{if("firefox"===this.metadata.browserName.toLowerCase()){const e=this.makeBeaconRequestBody([r]);this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - beaconing data out ${e}`),a=!navigator.sendBeacon(`${this.ingestionURL}?beacon=1`,e)}}catch(e){this.logger.warn(`Event Reporting - Error sending beacon for an important event ${s}`),a=!0}}a&&(this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - pushing to failed events ${s}`),this.failedIngestionEvents.push(r))}))}send(e){return i(this,void 0,void 0,(function*(){const t=new o.default(d.RETRY_FIXED_BACKOFF_WAIT_MS,d.RETRY_SHORT_BACKOFF_MS,d.RETRY_LONG_BACKOFF_MS);try{let n=0;for(;n0){const t=this.deepCopyCurrentIngestionEvent(this.currentIngestionEvent);e.push(t),this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendBeacon - clearing out current ingestion event ${JSON.stringify(t)}`),this.currentIngestionEvent=this.initializeAndGetCurrentIngestionEvent()}if(this.failedIngestionEvents.length>0){const t=this.failedIngestionEvents.map((e=>this.deepCopyCurrentIngestionEvent(e)));e.push(...t),this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendBeacon - clearing out any failed ingestion event ${JSON.stringify(t)}`),this.failedIngestionEvents=[]}if(this.cancellableEvents.size>0&&(this.cancellableEvents.forEach((t=>{e.push(...t),this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendBeacon - clearing out each cancellable event ${JSON.stringify(t)}`)})),this.cancellableEvents.clear()),0===e.length)return;const t=this.makeBeaconRequestBody(e);this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendBeacon - beacon data to send ${t}`);try{navigator.sendBeacon(`${this.ingestionURL}?beacon=1`,t)||this.logger.warn(`Event Reporting - Browser failed to queue beacon data ${t}`)}catch(e){this.logger.warn(`Event Reporting - Sending beacon data ${t} failed with error ${e}`)}}))}reset(){this.maxBufferCapacityBytes=0,this.totalBufferItems=0,this.buffer=[],this.bufferSize=0,this.maxBufferItemCapacityBytes=0,this.ingestionEventSize=0,this.flushIntervalMs=0,this.flushSize=0,this.failedIngestionEvents=[],this.lock=!1,this.beaconEventListener=void 0,this.cancellableEvents.clear()}destroy(){return i(this,void 0,void 0,(function*(){this.stop(),this.reset()}))}}t.default=d,d.SENDING_FAILURE_CODES=new Set([408,429,500,502,503,504]),d.RETRY_FIXED_BACKOFF_WAIT_MS=0,d.RETRY_SHORT_BACKOFF_MS=1e3,d.RETRY_LONG_BACKOFF_MS=15e3,d.MAX_PAYLOAD_ITEMS=2,d.MAX_ITEM_SIZE_BYTES_ALLOWED=3e3},7700:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e=5e3,t=2,n=64,i=100,r=15){this.flushIntervalMs=e,this.flushSize=t,this.maxBufferCapacityKb=n,this.totalBufferItems=i,this.retryCountLimit=r}}},3831:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=n(2238),o=n(146),s=r(n(5680)),c=r(n(6366)),l=r(n(9385)),d=r(n(7797)),u=r(n(4046)),f=r(n(731));class h{constructor(e,t,n){var i,r,o,s,c,l,d;this.meetingHistoryStates=[],this.observerSet=new Set,this.destroyed=!1,this.logger=t,this.configuration=e,this.setupEventReporter(e,t,n);try{this.parserResult=navigator&&navigator.userAgent?new a.UAParser(navigator.userAgent).getResult():null}catch(e){this.logger.error(e.message)}this.browserMajorVersion=(null===(o=null===(r=null===(i=this.parserResult)||void 0===i?void 0:i.browser)||void 0===r?void 0:r.version)||void 0===o?void 0:o.split(".")[0])||h.UNAVAILABLE,this.browserName=(null===(s=this.parserResult)||void 0===s?void 0:s.browser.name)||h.UNAVAILABLE,this.browserVersion=(null===(c=this.parserResult)||void 0===c?void 0:c.browser.version)||h.UNAVAILABLE,this.deviceName=[(null===(l=this.parserResult)||void 0===l?void 0:l.device.vendor)||"",(null===(d=this.parserResult)||void 0===d?void 0:d.device.model)||""].join(" ").trim()||h.UNAVAILABLE}addObserver(e){this.observerSet.add(e)}removeObserver(e){this.observerSet.delete(e)}forEachObserver(e){for(const t of this.observerSet)d.default.nextTick((()=>{this.observerSet.has(t)&&e(t)}))}publishEvent(e,t){return i(this,void 0,void 0,(function*(){const n=Date.now();this.meetingHistoryStates.push({name:e,timestampMs:n});const i=Object.freeze(Object.assign(this.getAttributes(n),t));this.forEachObserver((t=>{t.eventDidReceive(e,i)})),this.reportEvent(e,n,t)}))}reportEvent(e,t,n){var r;return i(this,void 0,void 0,(function*(){let i;try{n&&(i=f.default(n)),yield null===(r=this.eventReporter)||void 0===r?void 0:r.reportEvent(t,e,i)}catch(e){this.logger.error(`Error reporting event ${e}`)}}))}setupEventReporter(e,t,n){if(n)this._eventReporter=n;else if(e.urls){const n=e.urls.eventIngestionURL;if(n){this.logger.info("Event ingestion URL is present in the configuration");const{meetingId:i,credentials:{attendeeId:r,joinToken:a}}=e,o=new l.default(i,r,a),d=new s.default(o,n);this._eventReporter=new c.default(d,t)}}}getAttributes(e){var t,n;return{attendeeId:this.configuration.credentials.attendeeId,browserMajorVersion:this.browserMajorVersion,browserName:this.browserName,browserVersion:this.browserVersion,deviceName:this.deviceName,externalMeetingId:"string"==typeof this.configuration.externalMeetingId?this.configuration.externalMeetingId:"",externalUserId:this.configuration.credentials.externalUserId,meetingHistory:this.meetingHistoryStates,meetingId:this.configuration.meetingId,osName:(null===(t=this.parserResult)||void 0===t?void 0:t.os.name)||h.UNAVAILABLE,osVersion:(null===(n=this.parserResult)||void 0===n?void 0:n.os.version)||h.UNAVAILABLE,sdkVersion:u.default.sdkVersion,sdkName:u.default.sdkName,timestampMs:e}}get eventReporter(){return this._eventReporter}destroy(){return i(this,void 0,void 0,(function*(){o.isDestroyable(this.eventReporter)&&(yield this.eventReporter.destroy()),this.logger=void 0,this.configuration=void 0,this._eventReporter=void 0,this.destroyed=!0}))}}t.default=h,h.UNAVAILABLE="Unavailable"},731:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>{const t={};for(const[n,i]of Object.entries(e))if(null!=i&&""!==i){if("number"!=typeof i&&"string"!=typeof i)throw new TypeError("Unhandled type received while flattening attributes.");t[n]=i}return t}},5680:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(7700));t.default=class{constructor(e,t,n=new r.default){this.eventsClientConfiguration=e,this.ingestionURL=t,this.eventBufferConfiguration=n}}},6366:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=n(146),o=r(n(3520));t.default=class{constructor(e,t){this.reportingEvents=!1,this.importantEvents=["meetingEnded","meetingFailed","meetingStartFailed","audioInputFailed","videoInputFailed","meetingStartSucceeded","deviceLabelTriggerFailed"],this.destroyed=!1;const{eventsClientConfiguration:n,ingestionURL:i,eventBufferConfiguration:r}=e,{eventsToIgnore:a}=n;this.eventBuffer=new o.default(r,n,i,this.importantEvents,t),this.logger=t,this.eventsToIgnore=a,this.start()}start(){if(!this.reportingEvents)try{this.eventBuffer.start(),this.logger.info("Event reporting started"),this.reportingEvents=!0}catch(e){this.logger.error(`Event Reporting - Error starting the event buffer ${e}`)}}stop(){if(this.reportingEvents)try{this.eventBuffer.stop(),this.logger.info("Event reporting stopped"),this.reportingEvents=!1}catch(e){this.logger.error(`Event Reporting - Error stopping the event buffer ${e}`)}}reportEvent(e,t,n){return i(this,void 0,void 0,(function*(){if(this.logger.debug(`Event Reporting - DefaultMeetingEventReporter - event received in reportEvent ${e}, ${t}, ${JSON.stringify(n)}`),this.eventsToIgnore.includes(t))this.logger.debug(`Event Reporting - DefaultMeetingEventReporter - ${t} event will be ignored as it is in events to ignore`);else try{this.logger.debug("Event Reporting - DefaultMeetingEventReporter - adding item to event buffer"),yield this.eventBuffer.addItem({ts:e,name:t,attributes:n})}catch(e){this.logger.error(`Event Reporting - Error adding event to buffer ${e}`)}}))}destroy(){return i(this,void 0,void 0,(function*(){this.destroyed=!0,this.stop(),a.isDestroyable(this.eventBuffer)&&this.eventBuffer.destroy(),this.eventBuffer=void 0}))}}},732:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){}reportEvent(e,t,n){}start(){}stop(){}}},9385:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e,t,n,i=[]){this.type="Meet",this.v=1,this.meetingId=e,this.attendeeId=t,this.eventsToIgnore=i,this.authenticationToken=n}getAuthenticationToken(){return this.authenticationToken}toJSON(){const e={};return e.type=this.type,e.v=this.v,e.meetingId=this.meetingId,e.attendeeId=this.attendeeId,e}}},3204:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.DefaultEventController=t.DefaultDevicePixelRatioMonitor=t.DefaultDeviceController=t.DefaultContentShareController=t.DefaultBrowserBehavior=t.DefaultAudioVideoFacade=t.DefaultAudioVideoController=t.DefaultAudioMixController=t.DefaultActiveSpeakerPolicy=t.DefaultActiveSpeakerDetector=t.DataMessage=t.CreateSDPTask=t.CreatePeerConnectionTask=t.ContentShareMediaStreamBroker=t.ContentShareConstants=t.ConsoleLogger=t.ConnectionHealthPolicyConfiguration=t.ConnectionHealthData=t.ClientVideoStreamReceivingReport=t.ClientMetricReportMediaType=t.ClientMetricReportDirection=t.ClientMetricReport=t.CleanStoppedSessionTask=t.CleanRestartedSessionTask=t.CheckVideoInputFeedback=t.CheckVideoConnectivityFeedback=t.CheckNetworkUDPConnectivityFeedback=t.CheckNetworkTCPConnectivityFeedback=t.CheckContentShareConnectivityFeedback=t.CheckCameraResolutionFeedback=t.CheckAudioOutputFeedback=t.CheckAudioInputFeedback=t.CheckAudioConnectivityFeedback=t.CanvasVideoFrameBuffer=t.CSPMonitor=t.BitrateParameters=t.BaseTask=t.BaseConnectionHealthPolicy=t.BackgroundReplacementVideoFrameProcessor=t.BackgroundFilterVideoFrameProcessor=t.BackgroundBlurVideoFrameProcessor=t.BackgroundBlurStrength=t.AudioVideoControllerState=t.AudioProfile=t.AudioLogEvent=t.Attendee=t.AttachMediaInputTask=t.AsyncScheduler=t.ApplicationMetadata=t.AllHighestVideoBandwidthPolicy=void 0,t.MeetingSessionCredentials=t.MeetingSessionConfiguration=t.MeetingReadinessCheckerConfiguration=t.MeetingEventsClientConfiguration=t.MediaDeviceProxyHandler=t.Maybe=t.LogLevel=t.Log=t.ListenForVolumeIndicatorsTask=t.LeaveAndReceiveLeaveAckTask=t.JoinAndReceiveIndexTask=t.IntervalScheduler=t.InMemoryJSONEventBuffer=t.GlobalMetricReport=t.GetUserMediaError=t.FullJitterLimitedBackoff=t.FullJitterBackoffFactory=t.FullJitterBackoff=t.FinishGatheringICECandidatesTask=t.EventIngestionConfiguration=t.EventBufferConfiguration=t.DeviceSelection=t.DevicePixelRatioWindowSource=t.DefaultWebSocketAdapter=t.DefaultVolumeIndicatorAdapter=t.DefaultVideoTransformDevice=t.DefaultVideoTileFactory=t.DefaultVideoTileController=t.DefaultVideoTile=t.DefaultVideoStreamIndex=t.DefaultVideoStreamIdSet=t.DefaultVideoFrameProcessorPipeline=t.DefaultVideoCaptureAndEncodeParameter=t.DefaultUserAgentParser=t.DefaultTranscriptionController=t.DefaultTransceiverController=t.DefaultSimulcastUplinkPolicyForContentShare=t.DefaultSimulcastUplinkPolicy=t.DefaultSignalingClient=t.DefaultSigV4=t.DefaultSessionStateController=t.DefaultReconnectController=t.DefaultRealtimeController=t.DefaultPingPong=t.DefaultModality=t.DefaultMessagingSession=t.DefaultMeetingSession=t.DefaultMeetingReadinessChecker=t.DefaultMeetingEventReporter=t.DefaultMediaDeviceFactory=void 0,t.RedundantAudioRecoveryMetricReport=t.RedundantAudioEncoderWorkerCode=t.RedundantAudioEncoder=t.ReconnectionHealthPolicy=t.ReceiveVideoStreamIndexTask=t.ReceiveVideoInputTask=t.ReceiveTURNCredentialsTask=t.ReceiveRemoteVideoPauseResumeTask=t.ReceiveAudioInputTask=t.RealtimeVolumeIndicator=t.RealtimeState=t.RealtimeAttendeePositionInFrame=t.PromoteToPrimaryMeetingTask=t.PromiseQueue=t.PrefetchSortBy=t.PrefetchOn=t.PermissionDeniedError=t.ParallelGroupTask=t.POSTLogger=t.OverconstrainedError=t.OpenSignalingConnectionTask=t.OnceTask=t.NotReadableError=t.NotFoundError=t.None=t.NoVideoUplinkBandwidthPolicy=t.NoVideoDownlinkBandwidthPolicy=t.NoOpVideoFrameProcessor=t.NoOpVideoElementFactory=t.NoOpTask=t.NoOpMediaStreamBroker=t.NoOpLogger=t.NoOpEventReporter=t.NoOpDeviceController=t.NoOpDebugLogger=t.NoOpAudioVideoController=t.NScaleVideoUplinkBandwidthPolicy=t.MutableVideoPreferences=t.MultiLogger=t.MonitorTask=t.ModelSpecBuilder=t.MessagingSessionConfiguration=t.Message=t.MeetingSessionVideoAvailability=t.MeetingSessionURLs=t.MeetingSessionTURNCredentials=t.MeetingSessionStatusCode=t.MeetingSessionStatus=t.MeetingSessionLifecycleEventCondition=t.MeetingSessionLifecycleEvent=void 0,t.VideoOnlyTransceiverController=t.VideoLogEvent=t.VideoFxProcessor=t.VideoCodecCapability=t.VideoAdaptiveProbePolicy=t.Versioning=t.UnusableAudioWarningConnectionHealthPolicy=t.TypeError=t.TranscriptionStatusType=t.TranscriptionStatus=t.TranscriptResult=t.TranscriptLanguageWithScore=t.TranscriptItemType=t.TranscriptItem=t.TranscriptEntity=t.TranscriptAlternative=t.Transcript=t.TimeoutTask=t.TimeoutScheduler=t.TaskStatus=t.TargetDisplaySize=t.SubscribeAndReceiveSubscribeAckTask=t.StreamMetricReport=t.Some=t.SingleNodeAudioTransformDevice=t.SimulcastVideoStreamIndex=t.SimulcastTransceiverController=t.SimulcastLayers=t.SimulcastContentShareTransceiverController=t.SignalingClientVideoSubscriptionConfiguration=t.SignalingClientSubscribe=t.SignalingClientJoin=t.SignalingClientEventType=t.SignalingClientEvent=t.SignalingClientConnectionRequest=t.SignalingAndMetricsConnectionMonitor=t.SetRemoteDescriptionTask=t.SetLocalDescriptionTask=t.SessionStateControllerTransitionResult=t.SessionStateControllerState=t.SessionStateControllerDeferPriority=t.SessionStateControllerAction=t.ServerSideNetworkAdaption=t.SerialGroupTask=t.SendingAudioFailureConnectionHealthPolicy=t.SendAndReceiveDataMessagesTask=t.SDPMediaSection=t.SDPCandidateType=t.SDP=t.RunnableTask=void 0,t.isVideoTransformDevice=t.isDestroyable=t.isAudioTransformDevice=t.ZLIBTextCompressor=t.WebSocketReadyState=t.WaitForAttendeePresenceTask=t.VoiceFocusTransformDevice=t.VoiceFocusDeviceTransformer=t.VideoTileState=t.VideoStreamDescription=t.VideoSource=t.VideoQualitySettings=t.VideoPriorityBasedPolicyConfig=t.VideoPriorityBasedPolicy=t.VideoPreferences=t.VideoPreference=void 0;const r=i(n(5185));t.AllHighestVideoBandwidthPolicy=r.default;const a=i(n(7535));t.ApplicationMetadata=a.default;const o=i(n(7797));t.AsyncScheduler=o.default;const s=i(n(8358));t.AttachMediaInputTask=s.default;const c=i(n(7602));t.Attendee=c.default;const l=i(n(9880));t.AudioLogEvent=l.default;const d=i(n(3765));t.AudioProfile=d.default;const u=i(n(1876));t.AudioVideoControllerState=u.default;const f=i(n(9734));t.BackgroundBlurStrength=f.default;const h=i(n(1260));t.BackgroundBlurVideoFrameProcessor=h.default;const m=i(n(4243));t.BackgroundFilterVideoFrameProcessor=m.default;const p=i(n(9854));t.BackgroundReplacementVideoFrameProcessor=p.default;const g=i(n(3940));t.BaseConnectionHealthPolicy=g.default;const v=i(n(1789));t.BaseTask=v.default;const b=i(n(9394));t.BitrateParameters=b.default;const y=i(n(7237));t.CSPMonitor=y.default;const S=i(n(9807));t.CanvasVideoFrameBuffer=S.default;const C=i(n(2084));t.CheckAudioConnectivityFeedback=C.default;const w=i(n(8892));t.CheckAudioInputFeedback=w.default;const M=i(n(9333));t.CheckAudioOutputFeedback=M.default;const z=i(n(1087));t.CheckCameraResolutionFeedback=z.default;const x=i(n(2606));t.CheckContentShareConnectivityFeedback=x.default;const k=i(n(7415));t.CheckNetworkTCPConnectivityFeedback=k.default;const V=i(n(4299));t.CheckNetworkUDPConnectivityFeedback=V.default;const E=i(n(6818));t.CheckVideoConnectivityFeedback=E.default;const H=i(n(1737));t.CheckVideoInputFeedback=H.default;const _=i(n(3216));t.CleanRestartedSessionTask=_.default;const L=i(n(7408));t.CleanStoppedSessionTask=L.default;const T=i(n(4571));t.ClientMetricReport=T.default;const A=i(n(6196));t.ClientMetricReportDirection=A.default;const I=i(n(9496));t.ClientMetricReportMediaType=I.default;const N=i(n(2770));t.ClientVideoStreamReceivingReport=N.default;const P=i(n(6688));t.ConnectionHealthData=P.default;const O=i(n(3731));t.ConnectionHealthPolicyConfiguration=O.default;const R=i(n(8030));t.ConsoleLogger=R.default;const D=i(n(8890));t.ContentShareConstants=D.default;const F=i(n(8370));t.ContentShareMediaStreamBroker=F.default;const B=i(n(5482));t.CreatePeerConnectionTask=B.default;const U=i(n(1129));t.CreateSDPTask=U.default;const j=i(n(1018));t.DataMessage=j.default;const W=i(n(8320));t.DefaultActiveSpeakerDetector=W.default;const q=i(n(2363));t.DefaultActiveSpeakerPolicy=q.default;const $=i(n(6802));t.DefaultAudioMixController=$.default;const G=i(n(9059));t.DefaultAudioVideoController=G.default;const K=i(n(8538));t.DefaultAudioVideoFacade=K.default;const J=i(n(543));t.DefaultBrowserBehavior=J.default;const Z=i(n(8023));t.DefaultContentShareController=Z.default;const Q=i(n(4142));t.DefaultDeviceController=Q.default;const Y=i(n(8236));t.DefaultDevicePixelRatioMonitor=Y.default;const X=i(n(3831));t.DefaultEventController=X.default;const ee=i(n(6354));t.DefaultMediaDeviceFactory=ee.default;const te=i(n(6366));t.DefaultMeetingEventReporter=te.default;const ne=i(n(3980));t.DefaultMeetingReadinessChecker=ne.default;const ie=i(n(4202));t.DefaultMeetingSession=ie.default;const re=i(n(8947));t.DefaultMessagingSession=re.default;const ae=i(n(214));t.DefaultModality=ae.default;const oe=i(n(7500));t.DefaultPingPong=oe.default;const se=i(n(983));t.DefaultRealtimeController=se.default;const ce=i(n(9141));t.DefaultReconnectController=ce.default;const le=i(n(9678));t.DefaultSessionStateController=le.default;const de=i(n(334));t.DefaultSigV4=de.default;const ue=i(n(1208));t.DefaultSignalingClient=ue.default;const fe=i(n(4450));t.DefaultSimulcastUplinkPolicy=fe.default;const he=i(n(3879));t.DefaultSimulcastUplinkPolicyForContentShare=he.default;const me=i(n(365));t.DefaultTransceiverController=me.default;const pe=i(n(5308));t.DefaultTranscriptionController=pe.default;const ge=i(n(8627));t.DefaultUserAgentParser=ge.default;const ve=i(n(1133));t.DefaultVideoCaptureAndEncodeParameter=ve.default;const be=i(n(8919));t.DefaultVideoFrameProcessorPipeline=be.default;const ye=i(n(1508));t.DefaultVideoStreamIdSet=ye.default;const Se=i(n(1318));t.DefaultVideoStreamIndex=Se.default;const Ce=i(n(3327));t.DefaultVideoTile=Ce.default;const we=i(n(2958));t.DefaultVideoTileController=we.default;const Me=i(n(4922));t.DefaultVideoTileFactory=Me.default;const ze=i(n(7673));t.DefaultVideoTransformDevice=ze.default;const xe=i(n(9751));t.DefaultVolumeIndicatorAdapter=xe.default;const ke=i(n(7631));t.DefaultWebSocketAdapter=ke.default;const Ve=i(n(9190));t.DevicePixelRatioWindowSource=Ve.default;const Ee=i(n(8128));t.DeviceSelection=Ee.default;const He=i(n(7700));t.EventBufferConfiguration=He.default;const _e=i(n(5680));t.EventIngestionConfiguration=_e.default;const Le=i(n(6240));t.FinishGatheringICECandidatesTask=Le.default;const Te=i(n(8434));t.FullJitterBackoff=Te.default;const Ae=i(n(5640));t.FullJitterBackoffFactory=Ae.default;const Ie=i(n(7300));t.FullJitterLimitedBackoff=Ie.default;const Ne=i(n(5348));t.GetUserMediaError=Ne.default;const Pe=i(n(2306));t.GlobalMetricReport=Pe.default;const Oe=i(n(3520));t.InMemoryJSONEventBuffer=Oe.default;const Re=i(n(3922));t.IntervalScheduler=Re.default;const De=i(n(1960));t.JoinAndReceiveIndexTask=De.default;const Fe=i(n(6180));t.LeaveAndReceiveLeaveAckTask=Fe.default;const Be=i(n(2748));t.ListenForVolumeIndicatorsTask=Be.default;const Ue=i(n(293));t.Log=Ue.default;const je=i(n(813));t.LogLevel=je.default;const We=i(n(4236));t.MediaDeviceProxyHandler=We.default;const qe=i(n(9385));t.MeetingEventsClientConfiguration=qe.default;const $e=i(n(3990));t.MeetingReadinessCheckerConfiguration=$e.default;const Ge=i(n(589));t.MeetingSessionConfiguration=Ge.default;const Ke=i(n(8015));t.MeetingSessionCredentials=Ke.default;const Je=i(n(7604));t.MeetingSessionLifecycleEvent=Je.default;const Ze=i(n(1296));t.MeetingSessionLifecycleEventCondition=Ze.default;const Qe=i(n(3789));t.MeetingSessionStatus=Qe.default;const Ye=i(n(5687));t.MeetingSessionStatusCode=Ye.default;const Xe=i(n(7215));t.MeetingSessionTURNCredentials=Xe.default;const et=i(n(6057));t.MeetingSessionURLs=et.default;const tt=i(n(5723));t.MeetingSessionVideoAvailability=tt.default;const nt=i(n(9358));t.Message=nt.default;const it=i(n(4323));t.MessagingSessionConfiguration=it.default;const rt=i(n(22));t.ModelSpecBuilder=rt.default;const at=i(n(1981));t.MonitorTask=at.default;const ot=i(n(9938));t.MultiLogger=ot.default;const st=i(n(4442));t.NScaleVideoUplinkBandwidthPolicy=st.default;const ct=i(n(9836));t.NoOpAudioVideoController=ct.default;const lt=i(n(209));t.NoOpDebugLogger=lt.default;const dt=i(n(6154));t.NoOpDeviceController=dt.default;const ut=i(n(732));t.NoOpEventReporter=ut.default;const ft=i(n(7434));t.NoOpLogger=ft.default;const ht=i(n(4015));t.NoOpMediaStreamBroker=ht.default;const mt=i(n(8831));t.NoOpTask=mt.default;const pt=i(n(3663));t.NoOpVideoElementFactory=pt.default;const gt=i(n(2801));t.NoOpVideoFrameProcessor=gt.default;const vt=i(n(5319));t.NoVideoDownlinkBandwidthPolicy=vt.default;const bt=i(n(657));t.NoVideoUplinkBandwidthPolicy=bt.default;const yt=i(n(1238));t.NotFoundError=yt.default;const St=i(n(3110));t.NotReadableError=St.default;const Ct=i(n(1124));t.OnceTask=Ct.default;const wt=i(n(4543));t.OpenSignalingConnectionTask=wt.default;const Mt=i(n(4842));t.OverconstrainedError=Mt.default;const zt=i(n(5013));t.POSTLogger=zt.default;const xt=i(n(8556));t.ParallelGroupTask=xt.default;const kt=i(n(6991));t.PermissionDeniedError=kt.default;const Vt=i(n(106));t.PrefetchOn=Vt.default;const Et=i(n(3938));t.PrefetchSortBy=Et.default;const Ht=i(n(1515));t.PromiseQueue=Ht.default;const _t=i(n(9945));t.PromoteToPrimaryMeetingTask=_t.default;const Lt=i(n(5910));t.RealtimeAttendeePositionInFrame=Lt.default;const Tt=i(n(9825));t.RealtimeState=Tt.default;const At=i(n(9576));t.RealtimeVolumeIndicator=At.default;const It=i(n(1209));t.ReceiveAudioInputTask=It.default;const Nt=i(n(6274));t.ReceiveRemoteVideoPauseResumeTask=Nt.default;const Pt=i(n(5547));t.ReceiveTURNCredentialsTask=Pt.default;const Ot=i(n(120));t.ReceiveVideoInputTask=Ot.default;const Rt=i(n(9560));t.ReceiveVideoStreamIndexTask=Rt.default;const Dt=i(n(9708));t.ReconnectionHealthPolicy=Dt.default;const Ft=i(n(4773));t.RedundantAudioEncoder=Ft.default;const Bt=i(n(1044));t.RedundantAudioEncoderWorkerCode=Bt.default;const Ut=i(n(2353));t.RedundantAudioRecoveryMetricReport=Ut.default;const jt=i(n(4191));t.RunnableTask=jt.default;const Wt=i(n(326));t.SDP=Wt.default;const qt=i(n(4076));t.SDPCandidateType=qt.default;const $t=i(n(1944));t.SDPMediaSection=$t.default;const Gt=i(n(9485));t.SendAndReceiveDataMessagesTask=Gt.default;const Kt=i(n(2977));t.SendingAudioFailureConnectionHealthPolicy=Kt.default;const Jt=i(n(7079));t.SerialGroupTask=Jt.default;const Zt=i(n(7103));t.ServerSideNetworkAdaption=Zt.default;const Qt=i(n(3860));t.SessionStateControllerAction=Qt.default;const Yt=i(n(6850));t.SessionStateControllerDeferPriority=Yt.default;const Xt=i(n(9553));t.SessionStateControllerState=Xt.default;const en=i(n(3013));t.SessionStateControllerTransitionResult=en.default;const tn=i(n(4833));t.SetLocalDescriptionTask=tn.default;const nn=i(n(5275));t.SetRemoteDescriptionTask=nn.default;const rn=i(n(8581));t.SignalingAndMetricsConnectionMonitor=rn.default;const an=i(n(3920));t.SignalingClientConnectionRequest=an.default;const on=i(n(2902));t.SignalingClientEvent=on.default;const sn=i(n(9416));t.SignalingClientEventType=sn.default;const cn=i(n(2168));t.SignalingClientJoin=cn.default;const ln=i(n(6729));t.SignalingClientSubscribe=ln.default;const dn=i(n(9101));t.SignalingClientVideoSubscriptionConfiguration=dn.default;const un=i(n(7377));t.SimulcastContentShareTransceiverController=un.default;const fn=i(n(7606));t.SimulcastLayers=fn.default;const hn=i(n(5785));t.SimulcastTransceiverController=hn.default;const mn=i(n(4242));t.SimulcastVideoStreamIndex=mn.default;const pn=i(n(7786));t.SingleNodeAudioTransformDevice=pn.default;const gn=i(n(2811));t.StreamMetricReport=gn.default;const vn=i(n(5924));t.SubscribeAndReceiveSubscribeAckTask=vn.default;const bn=i(n(2721));t.TargetDisplaySize=bn.default;const yn=i(n(4456));t.TaskStatus=yn.default;const Sn=i(n(4929));t.TimeoutScheduler=Sn.default;const Cn=i(n(250));t.TimeoutTask=Cn.default;const wn=i(n(4739));t.Transcript=wn.default;const Mn=i(n(2471));t.TranscriptAlternative=Mn.default;const zn=i(n(7210));t.TranscriptEntity=zn.default;const xn=i(n(1741));t.TranscriptItem=xn.default;const kn=i(n(6864));t.TranscriptItemType=kn.default;const Vn=i(n(9063));t.TranscriptLanguageWithScore=Vn.default;const En=i(n(5323));t.TranscriptResult=En.default;const Hn=i(n(1288));t.TranscriptionStatus=Hn.default;const _n=i(n(1326));t.TranscriptionStatusType=_n.default;const Ln=i(n(6950));t.TypeError=Ln.default;const Tn=i(n(1922));t.UnusableAudioWarningConnectionHealthPolicy=Tn.default;const An=i(n(4046));t.Versioning=An.default;const In=i(n(2880));t.VideoAdaptiveProbePolicy=In.default;const Nn=i(n(2330));t.VideoCodecCapability=Nn.default;const Pn=i(n(7746));t.VideoFxProcessor=Pn.default;const On=i(n(155));t.VideoLogEvent=On.default;const Rn=i(n(9354));t.VideoOnlyTransceiverController=Rn.default;const Dn=i(n(1754));t.VideoPreference=Dn.default;const Fn=i(n(1819));t.VideoPreferences=Fn.default;const Bn=i(n(4992));t.VideoPriorityBasedPolicy=Bn.default;const Un=i(n(1034));t.VideoPriorityBasedPolicyConfig=Un.default;const jn=i(n(4500));t.VideoQualitySettings=jn.default;const Wn=i(n(60));t.VideoSource=Wn.default;const qn=i(n(6876));t.VideoStreamDescription=qn.default;const $n=i(n(7804));t.VideoTileState=$n.default;const Gn=i(n(2497));t.VoiceFocusDeviceTransformer=Gn.default;const Kn=i(n(8878));t.VoiceFocusTransformDevice=Kn.default;const Jn=i(n(6171));t.WaitForAttendeePresenceTask=Jn.default;const Zn=i(n(7387));t.WebSocketReadyState=Zn.default;const Qn=i(n(3320));t.ZLIBTextCompressor=Qn.default;const Yn=n(1819);Object.defineProperty(t,"MutableVideoPreferences",{enumerable:!0,get:function(){return Yn.MutableVideoPreferences}});const Xn=n(8660);Object.defineProperty(t,"Some",{enumerable:!0,get:function(){return Xn.Some}}),Object.defineProperty(t,"None",{enumerable:!0,get:function(){return Xn.None}}),Object.defineProperty(t,"Maybe",{enumerable:!0,get:function(){return Xn.Maybe}});const ei=n(1746);Object.defineProperty(t,"isAudioTransformDevice",{enumerable:!0,get:function(){return ei.isAudioTransformDevice}});const ti=n(146);Object.defineProperty(t,"isDestroyable",{enumerable:!0,get:function(){return ti.isDestroyable}});const ni=n(7170);Object.defineProperty(t,"isVideoTransformDevice",{enumerable:!0,get:function(){return ni.isVideoTransformDevice}})},8030:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(813));t.default=class{constructor(e,t=r.default.WARN){this.name=e,this.level=t}info(e){this.log(r.default.INFO,e)}warn(e){this.log(r.default.WARN,e)}error(e){this.log(r.default.ERROR,e)}debug(e){r.default.DEBUG{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e,t,n,i){this.sequenceNumber=e,this.message=t,this.timestampMs=n,this.logLevel=i}}},813:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.LogLevel=void 0,function(e){e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e[e.OFF=4]="OFF"}(n=t.LogLevel||(t.LogLevel={})),t.default=n},9938:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(813));t.default=class{constructor(...e){this._loggers=e}info(e){for(const t of this._loggers)t.info(e)}warn(e){for(const t of this._loggers)t.warn(e)}error(e){for(const t of this._loggers)t.error(e)}debug(e){let t,n;n="string"==typeof e?e:e?()=>(t||(t=e()),t):""+e;for(const e of this._loggers)e.debug(n)}setLogLevel(e){for(const t of this._loggers)t.setLogLevel(e)}getLogLevel(){for(const e of this._loggers)return e.getLogLevel();return r.default.OFF}}},209:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(813)),a=i(n(7434));class o extends a.default{constructor(){super(r.default.DEBUG)}}t.default=o},7434:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(813));t.default=class{constructor(e=r.default.OFF){this.level=e}info(e){}warn(e){}error(e){}debug(e){r.default.DEBUG{this.stop()},this.addEventListener()}addEventListener(){this.eventListener&&"window"in n.g&&window.addEventListener&&window.addEventListener("unload",this.eventListener)}removeEventListener(){this.eventListener&&"window"in n.g&&window.removeEventListener&&window.removeEventListener("unload",this.eventListener)}debug(e){s.default.DEBUGi(this,void 0,void 0,(function*(){if(!0===this.lock||0===this.getLogCaptureSize())return;this.lock=!0;const e=this.logCapture.slice(0,this.batchSize),t=this.makeRequestBody(e);try{200===(yield fetch(this.url,Object.assign({method:"POST",body:t},this.headers?{headers:this.headers}:{}))).status&&(this.logCapture=this.logCapture.slice(e.length))}catch(e){console.warn("[POSTLogger] "+e.message)}finally{this.lock=!1}}))))}stop(){var e;null===(e=this.intervalScheduler)||void 0===e||e.stop(),this.intervalScheduler=void 0,this.removeEventListener();const t=this.makeRequestBody(this.logCapture);navigator.sendBeacon(this.url,t)}destroy(){return i(this,void 0,void 0,(function*(){this.stop(),this.metadata=void 0,this.headers=void 0,this.logCapture=[],this.sequenceNumber=0,this.lock=!1,this.batchSize=0,this.intervalMs=0,this.url=void 0}))}makeRequestBody(e){return JSON.stringify(Object.assign(Object.assign({},this.metadata),{logs:e}))}log(e,t){if(e{if(!Reflect.has(e,t))return;if(!("ondevicechange"in navigator.mediaDevices)){if("addEventListener"===t)return this.patchAddEventListener(e,t,n);if("removeEventListener"===t)return this.patchRemoveEventListener(e,t,n)}const i=Reflect.get(e,t,n);return"function"==typeof i?i.bind(e):i},this.patchAddEventListener=(e,t,n)=>{const i=Reflect.get(e,t,n);return(t,n,r)=>{if("devicechange"!==t)return Reflect.apply(i,e,[t,n,r]);this.deviceChangeListeners.add(n),this.scheduler||(this.scheduler=new o.default(s.INTERVAL_MS),this.scheduler.start(this.pollDeviceLists))}},this.patchRemoveEventListener=(e,t,n)=>{const i=Reflect.get(e,t,n);return(t,n,r)=>{if("devicechange"!==t)return Reflect.apply(i,e,[t,n,r]);this.deviceChangeListeners.delete(n),0===this.deviceChangeListeners.size&&this.scheduler&&(this.scheduler.stop(),this.scheduler=null)}},this.pollDeviceLists=()=>i(this,void 0,void 0,(function*(){const e=yield this.sortedDeviceList();this.devices&&(e.length!==this.devices.length||e.some(((e,t)=>e.deviceId!==this.devices[t].deviceId)))&&this.handleDeviceChangeEvent(),this.devices=e}))}sortedDeviceList(){return i(this,void 0,void 0,(function*(){return(yield navigator.mediaDevices.enumerateDevices()).sort(((e,t)=>e.deviceIdt.deviceId?-1:0))}))}handleDeviceChangeEvent(){for(const e of this.deviceChangeListeners)a.default.nextTick((()=>{if(this.deviceChangeListeners.has(e)){const t=new Event("devicechange");"function"==typeof e?e(t):e.handleEvent(t)}}))}}t.default=s,s.INTERVAL_MS=1e3},4015:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{acquireAudioInputStream(){return Promise.reject()}acquireVideoInputStream(){return Promise.reject()}acquireDisplayInputStream(e){return Promise.reject()}muteLocalAudioInputStream(){}unmuteLocalAudioInputStream(){}addMediaStreamBrokerObserver(e){}removeMediaStreamBrokerObserver(e){}}},2084:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckAudioConnectivityFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.AudioInputRequestFailed=1]="AudioInputRequestFailed",e[e.AudioInputPermissionDenied=2]="AudioInputPermissionDenied",e[e.ConnectionFailed=3]="ConnectionFailed",e[e.AudioNotReceived=4]="AudioNotReceived"}(n=t.CheckAudioConnectivityFeedback||(t.CheckAudioConnectivityFeedback={})),t.default=n},8892:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckAudioInputFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.Failed=1]="Failed",e[e.PermissionDenied=2]="PermissionDenied"}(n=t.CheckAudioInputFeedback||(t.CheckAudioInputFeedback={})),t.default=n},9333:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckAudioOutputFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.Failed=1]="Failed"}(n=t.CheckAudioOutputFeedback||(t.CheckAudioOutputFeedback={})),t.default=n},1087:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckCameraResolutionFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.Failed=1]="Failed",e[e.ResolutionNotSupported=2]="ResolutionNotSupported",e[e.PermissionDenied=3]="PermissionDenied"}(n=t.CheckCameraResolutionFeedback||(t.CheckCameraResolutionFeedback={})),t.default=n},2606:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckContentShareConnectivityFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.Failed=1]="Failed",e[e.PermissionDenied=2]="PermissionDenied",e[e.TimedOut=3]="TimedOut",e[e.ConnectionFailed=4]="ConnectionFailed"}(n=t.CheckContentShareConnectivityFeedback||(t.CheckContentShareConnectivityFeedback={})),t.default=n},7415:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckNetworkTCPConnectivityFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.MeetingSessionURLsNotInitialized=1]="MeetingSessionURLsNotInitialized",e[e.ConnectionFailed=2]="ConnectionFailed",e[e.ICENegotiationFailed=3]="ICENegotiationFailed"}(n=t.CheckNetworkTCPConnectivityFeedback||(t.CheckNetworkTCPConnectivityFeedback={})),t.default=n},4299:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckNetworkUDPConnectivityFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.MeetingSessionURLsNotInitialized=1]="MeetingSessionURLsNotInitialized",e[e.ConnectionFailed=2]="ConnectionFailed",e[e.ICENegotiationFailed=3]="ICENegotiationFailed"}(n=t.CheckNetworkUDPConnectivityFeedback||(t.CheckNetworkUDPConnectivityFeedback={})),t.default=n},6818:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckVideoConnectivityFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.VideoInputRequestFailed=1]="VideoInputRequestFailed",e[e.VideoInputPermissionDenied=2]="VideoInputPermissionDenied",e[e.ConnectionFailed=3]="ConnectionFailed",e[e.VideoNotSent=4]="VideoNotSent"}(n=t.CheckVideoConnectivityFeedback||(t.CheckVideoConnectivityFeedback={})),t.default=n},1737:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckVideoInputFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.Failed=1]="Failed",e[e.PermissionDenied=2]="PermissionDenied"}(n=t.CheckVideoInputFeedback||(t.CheckVideoInputFeedback={})),t.default=n},3980:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(6802)),o=r(n(543)),s=r(n(4142)),c=r(n(6991)),l=r(n(1789)),d=r(n(250)),u=r(n(2084)),f=r(n(8892)),h=r(n(9333)),m=r(n(1087)),p=r(n(2606)),g=r(n(7415)),v=r(n(4299)),b=r(n(6818)),y=r(n(1737)),S=r(n(3990));class C{constructor(e,t,n=new S.default){this.logger=e,this.meetingSession=t,this.configuration=n,this.browserBehavior=new o.default}static delay(e){return i(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}checkAudioInput(e){return i(this,void 0,void 0,(function*(){try{return yield this.meetingSession.audioVideo.startAudioInput(e),yield this.meetingSession.audioVideo.stopAudioInput(),f.default.Succeeded}catch(e){return this.logger.error(`MeetingReadinessChecker: Audio input check failed with error ${e}`),e instanceof c.default?f.default.PermissionDenied:f.default.Failed}}))}checkAudioOutput(e,t,n=null){return i(this,void 0,void 0,(function*(){try{const i=e?s.default.getIntrinsicDeviceId(e):"";return yield this.playTone(i,this.configuration.audioOutputFrequency,n),(yield t())?h.default.Succeeded:h.default.Failed}catch(e){return this.logger.error(`MeetingReadinessChecker: Audio output check failed with error: ${e}`),h.default.Failed}finally{this.stopTone()}}))}playTone(e,t,n){return i(this,void 0,void 0,(function*(){const i=this.configuration.audioOutputGain;this.oscillatorNode&&this.stopTone(),this.audioContext=s.default.getAudioContext(),this.gainNode=this.audioContext.createGain(),this.gainNode.gain.value=0,this.oscillatorNode=this.audioContext.createOscillator(),this.oscillatorNode.frequency.value=t,this.oscillatorNode.connect(this.gainNode),this.destinationStream=this.audioContext.createMediaStreamDestination(),this.gainNode.connect(this.destinationStream);const r=this.audioContext.currentTime+.1;this.gainNode.gain.linearRampToValueAtTime(0,r),this.gainNode.gain.linearRampToValueAtTime(i,r+.1),this.oscillatorNode.start();const o=new a.default(this.logger);try{this.browserBehavior.supportsSetSinkId()&&(yield o.bindAudioDevice({deviceId:e}))}catch(e){this.logger.error(`Failed to bind audio device: ${e}`)}try{yield o.bindAudioElement(n||new Audio)}catch(e){this.logger.error(`Failed to bind audio element: ${e}`)}yield o.bindAudioStream(this.destinationStream.stream)}))}stopTone(){if(!(this.audioContext&&this.gainNode&&this.oscillatorNode&&this.destinationStream))return;const e=this.configuration.audioOutputGain,t=this.audioContext.currentTime;this.gainNode.gain.linearRampToValueAtTime(e,t+.1+1),this.gainNode.gain.linearRampToValueAtTime(0,t+.2+1),this.oscillatorNode.stop(),this.oscillatorNode.disconnect(this.gainNode),this.gainNode.disconnect(this.destinationStream),this.oscillatorNode=null,this.gainNode=null,this.destinationStream=null}checkVideoInput(e){return i(this,void 0,void 0,(function*(){try{return yield this.meetingSession.audioVideo.startVideoInput(e),yield this.meetingSession.audioVideo.stopVideoInput(),y.default.Succeeded}catch(e){return this.logger.error(`MeetingReadinessChecker: Video check failed with error ${e}`),e instanceof c.default?y.default.PermissionDenied:y.default.Failed}}))}checkCameraResolution(e,t,n){return i(this,void 0,void 0,(function*(){let i;try{const r=s.default.getIntrinsicDeviceId(e),a={video:this.calculateVideoConstraint(r,t,n)};i=yield navigator.mediaDevices.getUserMedia(a)}catch(e){return this.logger.error(`MeetingReadinessChecker: Camera resolution check with width: ${t} height ${n} failed with error ${e}`),e&&"OverconstrainedError"===e.name?m.default.ResolutionNotSupported:e&&"NotAllowedError"===e.name?m.default.PermissionDenied:m.default.Failed}finally{i&&i.getTracks().forEach((function(e){e.stop()}))}return m.default.Succeeded}))}calculateVideoConstraint(e,t,n){const i=this.browserBehavior.requiresResolutionAlignment(t,n),r={};return this.browserBehavior.requiresNoExactMediaStreamConstraints()?(r.deviceId=e,r.width=t,r.height=n):(r.deviceId={exact:e},r.width={exact:i[0]},r.height={exact:i[1]}),r}checkContentShareConnectivity(e){return i(this,void 0,void 0,(function*(){let t=!1,n=!1;const r={contentShareDidStart:()=>{t=!0}},a={audioVideoDidStart:()=>{n=!0}};try{return this.meetingSession.audioVideo.addObserver(a),this.meetingSession.audioVideo.start(),this.meetingSession.audioVideo.addContentShareObserver(r),yield this.meetingSession.audioVideo.startContentShareFromScreenCapture(e),yield this.executeTimeoutTask((()=>i(this,void 0,void 0,(function*(){return n&&t})))),n?(yield this.stopMeeting(),t?p.default.Succeeded:p.default.TimedOut):p.default.ConnectionFailed}catch(e){return this.logger.error(`MeetingReadinessChecker: Content share check failed with error ${e}`),"NotAllowedError"===e.name?p.default.PermissionDenied:p.default.Failed}finally{this.meetingSession.audioVideo.removeObserver(a),this.meetingSession.audioVideo.stopContentShare(),this.meetingSession.audioVideo.removeContentShareObserver(r)}}))}checkAudioConnectivity(e){return i(this,void 0,void 0,(function*(){let t=!1;const n={packetsReceived:0},r=this.meetingSession.audioVideo,a={metricsDidReceive(e){e.getRTCStatsReport().forEach((e=>{"inbound-rtp"===e.type&&"audio"===e.mediaType&&(n.packetsReceived=e.packetsReceived)}))}},o=(e,n,i,r)=>{e===this.meetingSession.configuration.credentials.attendeeId&&n&&(t=!0)};try{yield r.startAudioInput(e)}catch(e){return this.logger.error(`MeetingReadinessChecker: Failed to get audio input device with error ${e}`),e instanceof c.default?u.default.AudioInputPermissionDenied:u.default.AudioInputRequestFailed}return r.realtimeSubscribeToAttendeeIdPresence(o),r.addObserver(a),(yield this.startMeeting())?(yield this.executeTimeoutTask((()=>i(this,void 0,void 0,(function*(){return this.isAudioConnectionSuccessful(t,n)})))),r.removeObserver(a),r.realtimeUnsubscribeToAttendeeIdPresence(o),yield this.stopMeeting(),yield this.meetingSession.audioVideo.stopAudioInput(),this.isAudioConnectionSuccessful(t,n)?u.default.Succeeded:u.default.AudioNotReceived):(r.removeObserver(a),r.realtimeUnsubscribeToAttendeeIdPresence(o),yield this.meetingSession.audioVideo.stopAudioInput(),u.default.ConnectionFailed)}))}checkVideoConnectivity(e){return i(this,void 0,void 0,(function*(){const t=this.meetingSession.audioVideo;let n=0;const r={metricsDidReceive(e){e.getRTCStatsReport().forEach((e=>{"outbound-rtp"===e.type&&"video"===e.mediaType&&(n=e.packetsSent)}))}};try{yield t.startVideoInput(e)}catch(e){return this.logger.error(`MeetingReadinessChecker: Failed to get video input device with error ${e}`),e instanceof c.default?b.default.VideoInputPermissionDenied:b.default.VideoInputRequestFailed}return t.addObserver(r),(yield this.startMeeting())?(t.startLocalVideoTile(),yield this.executeTimeoutTask((()=>i(this,void 0,void 0,(function*(){return n>0})))),yield t.stopVideoInput(),yield this.stopMeeting(),t.removeObserver(r),n<=0?b.default.VideoNotSent:b.default.Succeeded):b.default.ConnectionFailed}))}checkNetworkUDPConnectivity(){return i(this,void 0,void 0,(function*(){let e=!1;const t={metricsDidReceive(t){t.getRTCStatsReport().forEach((t=>{"candidate-pair"===t.type&&"succeeded"===t.state&&(e=!0)}))}};try{this.originalURLRewriter=this.meetingSession.configuration.urls.urlRewriter}catch(e){return this.logger.error(`MeetingSessionConfiguration.urls doesn't exist. Error: ${e}`),v.default.MeetingSessionURLsNotInitialized}this.meetingSession.configuration.urls.urlRewriter=e=>{const t=this.originalURLRewriter(e);return t.includes("transport=tcp")?"":t};const n=this.meetingSession.audioVideo;return n.addObserver(t),(yield this.startMeeting())?(yield this.executeTimeoutTask((()=>i(this,void 0,void 0,(function*(){return e})))),this.meetingSession.configuration.urls.urlRewriter=this.originalURLRewriter,yield this.stopMeeting(),n.removeObserver(t),e?v.default.Succeeded:v.default.ICENegotiationFailed):(this.meetingSession.configuration.urls.urlRewriter=this.originalURLRewriter,v.default.ConnectionFailed)}))}checkNetworkTCPConnectivity(){return i(this,void 0,void 0,(function*(){let e=!1;const t={metricsDidReceive(t){t.getRTCStatsReport().forEach((t=>{"candidate-pair"===t.type&&"succeeded"===t.state&&(e=!0)}))}};try{this.originalURLRewriter=this.meetingSession.configuration.urls.urlRewriter}catch(e){return this.logger.error(`MeetingSessionConfiguration.urls doesn't exist. Error: ${e}`),g.default.MeetingSessionURLsNotInitialized}this.meetingSession.configuration.urls.urlRewriter=e=>{const t=this.originalURLRewriter(e);return t.includes("transport=udp")?"":t};const n=this.meetingSession.audioVideo;return n.addObserver(t),(yield this.startMeeting())?(yield this.executeTimeoutTask((()=>i(this,void 0,void 0,(function*(){return e})))),this.meetingSession.configuration.urls.urlRewriter=this.originalURLRewriter,yield this.stopMeeting(),n.removeObserver(t),e?g.default.Succeeded:g.default.ICENegotiationFailed):(this.meetingSession.configuration.urls.urlRewriter=this.originalURLRewriter,g.default.ConnectionFailed)}))}startMeeting(){return i(this,void 0,void 0,(function*(){let e=!1;const t={audioVideoDidStart:()=>{e=!0}};return this.meetingSession.audioVideo.addObserver(t),this.meetingSession.audioVideo.start(),yield this.executeTimeoutTask((()=>i(this,void 0,void 0,(function*(){return e})))),this.meetingSession.audioVideo.removeObserver(t),e}))}stopMeeting(){return i(this,void 0,void 0,(function*(){let e=!1;const t={audioVideoDidStop:t=>{e=!0}};return this.meetingSession.audioVideo.addObserver(t),this.meetingSession.audioVideo.stop(),yield this.executeTimeoutTask((()=>i(this,void 0,void 0,(function*(){return e})))),this.meetingSession.audioVideo.removeObserver(t),e}))}executeTimeoutTask(e){return i(this,void 0,void 0,(function*(){let t=!1;class n extends l.default{constructor(e,t){super(e),this.waitDurationMs=t,this.isCancelled=!1}cancel(){this.isCancelled=!0}run(){return i(this,void 0,void 0,(function*(){for(;!this.isCancelled;){if(yield e()){t=!0;break}yield C.delay(this.waitDurationMs)}}))}}const r=new d.default(this.logger,new n(this.logger,this.configuration.waitDurationMs),this.configuration.timeoutMs);return yield r.run(),t}))}isAudioConnectionSuccessful(e,t){return e&&t.packetsReceived>0}}t.default=C},3990:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.timeoutMs=1e4,this.waitDurationMs=3e3,this.audioOutputFrequency=440,this.audioOutputGain=.1}}},4202:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(9059)),o=r(n(8538)),s=r(n(8434)),c=r(n(543)),l=r(n(8370)),d=r(n(8023)),u=r(n(7237)),f=n(146),h=r(n(3831)),m=r(n(9141)),p=r(n(7631));t.default=class{constructor(e,t,n,i){this._eventController=i,this._configuration=e,this._logger=t,this.checkBrowserSupportAndFeatureConfiguration(),u.default.addLogger(this._logger),u.default.register(),this._eventController||(this._eventController=new h.default(e,t)),n.eventController||(n.eventController=this.eventController),this.audioVideoController=new a.default(this._configuration,this._logger,new p.default(this._logger),n,new m.default(this._configuration.reconnectTimeoutMs,new s.default(this._configuration.reconnectFixedWaitMs,this._configuration.reconnectShortBackOffMs,this._configuration.reconnectLongBackOffMs)),this.eventController),this._deviceController=n;const r=new l.default(this._logger);this.contentShareController=new d.default(r,new a.default(d.default.createContentShareMeetingSessionConfigure(this._configuration),this._logger,new p.default(this._logger),r,new m.default(this._configuration.reconnectTimeoutMs,new s.default(this._configuration.reconnectFixedWaitMs,this._configuration.reconnectShortBackOffMs,this._configuration.reconnectLongBackOffMs))),this.audioVideoController),this.audioVideoFacade=new o.default(this.audioVideoController,this.audioVideoController.videoTileController,this.audioVideoController.realtimeController,this.audioVideoController.audioMixController,this._deviceController,this.contentShareController)}get configuration(){return this._configuration}get logger(){return this._logger}get audioVideo(){return this.audioVideoFacade}get contentShare(){return this.contentShareController}get deviceController(){return this._deviceController}get eventController(){return this._eventController}destroy(){return i(this,void 0,void 0,(function*(){f.isDestroyable(this.contentShareController)&&(yield this.contentShareController.destroy()),f.isDestroyable(this.audioVideoController)&&(yield this.audioVideoController.destroy()),f.isDestroyable(this.eventController)&&(yield this.eventController.destroy()),u.default.removeLogger(this._logger),this._logger=void 0,this._configuration=void 0,this._deviceController=void 0,this.audioVideoFacade=void 0,this.audioVideoController=void 0,this.contentShareController=void 0,this._eventController=void 0}))}checkBrowserSupportAndFeatureConfiguration(){const e=new c.default,t=`${e.name()} ${e.majorVersion()} (${e.version()})`;if(this.logger.info(`browser is ${t}`),e.isSupported()||this.logger.warn(`this browser is not currently supported. Stability may suffer. Supported browsers are: ${e.supportString()}.`),this._configuration.videoUplinkBandwidthPolicy)if(this.isSimulcastUplinkPolicy(this._configuration.videoUplinkBandwidthPolicy)){if(!e.hasChromiumWebRTC())throw new Error("Simulcast is only supported on Chromium-based browsers");this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers=!0}else this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers=!1;this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers&&(e.hasChromiumWebRTC()?this.logger.info(`Simulcast is enabled for ${e.name()}`):(this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers=!1,this.logger.info("Simulcast is only supported on Chromium-based browsers")))}isSimulcastUplinkPolicy(e){return!(!e||!e.addObserver)}}},589:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(3731)),a=n(8690),o=i(n(8015)),s=i(n(6057));t.default=class{constructor(e,t){this.meetingId=null,this.externalMeetingId=null,this.credentials=null,this.urls=null,this.connectionTimeoutMs=15e3,this.attendeePresenceTimeoutMs=0,this.connectionHealthPolicyConfiguration=new r.default,this.reconnectTimeoutMs=12e4,this.reconnectFixedWaitMs=0,this.reconnectShortBackOffMs=1e3,this.reconnectLongBackOffMs=5e3,this.enableSimulcastForUnifiedPlanChromiumBasedBrowsers=!1,this.videoDownlinkBandwidthPolicy=null,this.videoUplinkBandwidthPolicy=null,this.keepLastFrameWhenPaused=!1,this.disablePeriodicKeyframeRequestOnContentSender=!1,e&&((e=a.toLowerCasePropertyNames(e)).meeting&&(e=e.meeting),this.meetingId=e.meetingid,this.externalMeetingId=e.externalmeetingid,this.urls=new s.default,this.urls.audioHostURL=e.mediaplacement.audiohosturl,this.urls.signalingURL=e.mediaplacement.signalingurl,this.urls.turnControlURL=e.mediaplacement.turncontrolurl,e.mediaplacement.eventingestionurl&&(this.urls.eventIngestionURL=e.mediaplacement.eventingestionurl)),t&&((t=a.toLowerCasePropertyNames(t)).attendee&&(t=t.attendee),this.credentials=new o.default,this.credentials.attendeeId=t.attendeeid,this.credentials.externalUserId=t.externaluserid,this.credentials.joinToken=t.jointoken)}}},8015:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.attendeeId=null,this.externalUserId=null,this.joinToken=null}toJSON(){return{attendeeId:this.attendeeId,joinToken:null===this.joinToken?null:""}}}},7604:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.MeetingSessionLifecycleEvent=void 0,function(e){e[e.Connecting=0]="Connecting",e[e.Started=1]="Started",e[e.Stopped=2]="Stopped"}(n=t.MeetingSessionLifecycleEvent||(t.MeetingSessionLifecycleEvent={})),t.default=n},1296:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.MeetingSessionLifecycleEventCondition=void 0,function(e){e[e.ConnectingNew=0]="ConnectingNew",e[e.ReconnectingExisting=1]="ReconnectingExisting",e[e.StartedNew=2]="StartedNew",e[e.StartedExisting=3]="StartedExisting",e[e.StartedAfterReconnect=4]="StartedAfterReconnect",e[e.StoppedCleanly=5]="StoppedCleanly",e[e.StoppedWithFailure=6]="StoppedWithFailure"}(n=t.MeetingSessionLifecycleEventCondition||(t.MeetingSessionLifecycleEventCondition={})),t.default=n},3789:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(289),a=i(n(5687));class o{constructor(e){this._statusCode=e}statusCode(){return this._statusCode}isFailure(){switch(this._statusCode){case a.default.AudioAuthenticationRejected:case a.default.AudioCallAtCapacity:case a.default.AudioInternalServerError:case a.default.AudioServiceUnavailable:case a.default.AudioDisconnected:case a.default.VideoCallAtSourceCapacity:case a.default.SignalingBadRequest:case a.default.SignalingInternalServerError:case a.default.SignalingRequestFailed:case a.default.ICEGatheringTimeoutWorkaround:case a.default.ConnectionHealthReconnect:case a.default.RealtimeApiFailed:case a.default.TaskFailed:case a.default.NoAttendeePresent:case a.default.SignalChannelClosedUnexpectedly:return!0;default:return!1}}isTerminal(){switch(this._statusCode){case a.default.Left:case a.default.AudioJoinedFromAnotherDevice:case a.default.AudioAuthenticationRejected:case a.default.AudioCallAtCapacity:case a.default.MeetingEnded:case a.default.AudioDisconnected:case a.default.TURNCredentialsForbidden:case a.default.SignalingBadRequest:case a.default.SignalingRequestFailed:case a.default.VideoCallAtSourceCapacity:case a.default.RealtimeApiFailed:case a.default.AudioAttendeeRemoved:return!0;default:return!1}}isAudioConnectionFailure(){switch(this._statusCode){case a.default.AudioAuthenticationRejected:case a.default.AudioInternalServerError:case a.default.AudioServiceUnavailable:case a.default.ICEGatheringTimeoutWorkaround:case a.default.SignalingBadRequest:case a.default.SignalingInternalServerError:case a.default.SignalingRequestFailed:case a.default.RealtimeApiFailed:case a.default.NoAttendeePresent:return!0;default:return!1}}toString(){switch(this._statusCode){case a.default.OK:return"Everything is OK so far.";case a.default.Left:return"The attendee left the meeting.";case a.default.AudioJoinedFromAnotherDevice:return"The attendee joined from another device.";case a.default.AudioAuthenticationRejected:return"The meeting rejected the attendee.";case a.default.AudioCallAtCapacity:return"The attendee couldn't join because the meeting was at capacity.";case a.default.MeetingEnded:return"The meeting ended.";case a.default.AudioInternalServerError:case a.default.AudioServiceUnavailable:case a.default.AudioDisconnected:return"The audio connection failed.";case a.default.VideoCallSwitchToViewOnly:return"The attendee couldn't start the local video because the maximum video capacity was reached.";case a.default.VideoCallAtSourceCapacity:return"The connection failed due to an internal server error.";case a.default.SignalingBadRequest:case a.default.SignalingInternalServerError:case a.default.SignalingRequestFailed:return"The signaling connection failed.";case a.default.ICEGatheringTimeoutWorkaround:return"Gathering ICE candidates timed out. In Chrome, this might indicate that the browser is in a bad state after reconnecting to VPN.";case a.default.ConnectionHealthReconnect:return"The meeting was reconnected.";case a.default.RealtimeApiFailed:return"The real-time API failed. This status code might indicate that the callback you passed to the real-time API threw an exception.";case a.default.TaskFailed:return"The connection failed. See the error message for more details.";case a.default.IncompatibleSDP:return"The connection failed due to incompatible SDP.";case a.default.TURNCredentialsForbidden:return"The meeting ended, or the attendee was removed.";case a.default.NoAttendeePresent:return"The attendee was not present.";case a.default.AudioAttendeeRemoved:return"The meeting ended because attendee removed.";case a.default.AudioVideoWasRemovedFromPrimaryMeeting:return"The Primary meeting credentials provided are no longer valid. chime::DeleteAttendee may have been called on them.";case a.default.AudioDisconnectAudio:return"The audio connection failed.";case a.default.SignalChannelClosedUnexpectedly:return"The websocket was closed unexpectedly. This may be due to a network change or backend detected failure.";default:{const e=this._statusCode;throw new Error(`Unhandled case: ${e}`)}}}static fromSignalFrame(e){return e.error&&e.error.status?this.fromSignalingStatus(e.error.status):e.type===r.SdkSignalFrame.Type.AUDIO_STATUS?e.audioStatus?this.fromAudioStatus(e.audioStatus.audioStatus):new o(a.default.SignalingRequestFailed):e.type===r.SdkSignalFrame.Type.PRIMARY_MEETING_LEAVE?new o(a.default.AudioVideoWasRemovedFromPrimaryMeeting):new o(a.default.OK)}static fromAudioStatus(e){switch(e){case 200:return new o(a.default.OK);case 301:return new o(a.default.AudioJoinedFromAnotherDevice);case 302:return new o(a.default.AudioDisconnectAudio);case 403:return new o(a.default.AudioAuthenticationRejected);case 409:return new o(a.default.AudioCallAtCapacity);case 410:return new o(a.default.MeetingEnded);case 411:return new o(a.default.AudioAttendeeRemoved);case 500:return new o(a.default.AudioInternalServerError);case 503:return new o(a.default.AudioServiceUnavailable);default:return 2===Math.floor(e/100)?new o(a.default.OK):new o(a.default.AudioDisconnected)}}static fromSignalingStatus(e){switch(e){case 206:return new o(a.default.VideoCallSwitchToViewOnly);case 509:return new o(a.default.VideoCallAtSourceCapacity);case 403:return new o(a.default.AudioAuthenticationRejected);case 409:return new o(a.default.AudioCallAtCapacity);default:switch(Math.floor(e/100)){case 2:return new o(a.default.OK);case 4:return new o(a.default.SignalingBadRequest);case 5:return new o(a.default.SignalingInternalServerError);default:return new o(a.default.SignalingRequestFailed)}}}}t.default=o},5687:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.MeetingSessionStatusCode=void 0,function(e){e[e.OK=0]="OK",e[e.Left=1]="Left",e[e.AudioJoinedFromAnotherDevice=2]="AudioJoinedFromAnotherDevice",e[e.AudioAuthenticationRejected=3]="AudioAuthenticationRejected",e[e.AudioCallAtCapacity=4]="AudioCallAtCapacity",e[e.MeetingEnded=5]="MeetingEnded",e[e.AudioInternalServerError=6]="AudioInternalServerError",e[e.AudioServiceUnavailable=7]="AudioServiceUnavailable",e[e.AudioDisconnected=8]="AudioDisconnected",e[e.VideoCallSwitchToViewOnly=9]="VideoCallSwitchToViewOnly",e[e.VideoCallAtSourceCapacity=10]="VideoCallAtSourceCapacity",e[e.SignalingBadRequest=11]="SignalingBadRequest",e[e.SignalingInternalServerError=12]="SignalingInternalServerError",e[e.SignalingRequestFailed=13]="SignalingRequestFailed",e[e.ICEGatheringTimeoutWorkaround=14]="ICEGatheringTimeoutWorkaround",e[e.ConnectionHealthReconnect=15]="ConnectionHealthReconnect",e[e.RealtimeApiFailed=16]="RealtimeApiFailed",e[e.TaskFailed=17]="TaskFailed",e[e.IncompatibleSDP=18]="IncompatibleSDP",e[e.TURNCredentialsForbidden=19]="TURNCredentialsForbidden",e[e.NoAttendeePresent=20]="NoAttendeePresent",e[e.AudioAttendeeRemoved=21]="AudioAttendeeRemoved",e[e.AudioVideoWasRemovedFromPrimaryMeeting=22]="AudioVideoWasRemovedFromPrimaryMeeting",e[e.AudioDisconnectAudio=23]="AudioDisconnectAudio",e[e.SignalChannelClosedUnexpectedly=24]="SignalChannelClosedUnexpectedly"}(n=t.MeetingSessionStatusCode||(t.MeetingSessionStatusCode={})),t.default=n},7215:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.username=null,this.password=null,this.ttl=null,this.uris=null}}},6057:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this._audioHostURL=null,this._signalingURL=null,this._turnControlURL=null,this._eventIngestionURL=null,this.urlRewriter=e=>e}get audioHostURL(){return this.urlRewriter(this._audioHostURL)}set audioHostURL(e){this._audioHostURL=e}get signalingURL(){return this.urlRewriter(this._signalingURL)}set signalingURL(e){this._signalingURL=e}get turnControlURL(){return this.urlRewriter(this._turnControlURL)}set turnControlURL(e){this._turnControlURL=e}get eventIngestionURL(){return this.urlRewriter(this._eventIngestionURL)}set eventIngestionURL(e){this._eventIngestionURL=e}}},5723:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class n{constructor(){this.remoteVideoAvailable=!1,this.canStartLocalVideo=!1}equal(e){return this.remoteVideoAvailable===e.remoteVideoAvailable&&this.canStartLocalVideo===e.canStartLocalVideo}clone(){const e=new n;return e.remoteVideoAvailable=this.remoteVideoAvailable,e.canStartLocalVideo=this.canStartLocalVideo,e}}t.default=n},9358:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e,t,n){this.type=e,this.headers=t,this.payload=n}}},8947:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=n(3456),o=r(n(8434)),s=r(n(7237)),c=r(n(9358)),l=r(n(9141)),d=r(n(7797)),u=r(n(334)),f=r(n(7631)),h=r(n(7387)),m=r(n(106));t.default=class{constructor(e,t,n,i,r){this.configuration=e,this.logger=t,this.webSocket=n,this.reconnectController=i,this.sigV4=r,this.observerQueue=new Set,this.webSocket||(this.webSocket=new f.default(this.logger)),this.reconnectController||(this.reconnectController=new l.default(e.reconnectTimeoutMs,new o.default(e.reconnectFixedWaitMs,e.reconnectShortBackoffMs,e.reconnectLongBackoffMs))),this.sigV4||(this.sigV4=new u.default(this.configuration.chimeClient)),s.default.addLogger(this.logger),s.default.register(),this.preBootstrapMessages=[]}addObserver(e){this.logger.info("adding messaging observer"),this.observerQueue.add(e)}removeObserver(e){this.logger.info("removing messaging observer"),this.observerQueue.delete(e)}start(){return i(this,void 0,void 0,(function*(){this.isClosed()?yield this.startConnecting(!1):this.logger.info("messaging session already started")}))}stop(){this.isClosed()?this.logger.info("no existing messaging session needs closing"):(this.isClosing=!0,this.webSocket.close(),s.default.removeLogger(this.logger))}forEachObserver(e){for(const t of this.observerQueue)d.default.nextTick((()=>{this.observerQueue.has(t)&&e(t)}))}setUpEventListeners(){this.webSocket.addEventListener("open",(()=>{this.openEventHandler()})),this.webSocket.addEventListener("message",(e=>{this.receiveMessageHandler(e.data)})),this.webSocket.addEventListener("close",(e=>{this.closeEventHandler(e)})),this.webSocket.addEventListener("error",(()=>{this.logger.error("WebSocket error")}))}startConnecting(e){return i(this,void 0,void 0,(function*(){return yield this.startConnectingInternal(e),yield new Promise(((e,t)=>{this.bootstrapResolved=e,this.bootstrapRejected=t}))}))}startConnectingInternal(e){var t;return i(this,void 0,void 0,(function*(){let n=this.configuration.endpointUrl;if(e||this.reconnectController.reset(),this.reconnectController.hasStartedConnectionAttempt()?this.reconnectController.startedConnectionAttempt(!1):this.reconnectController.startedConnectionAttempt(!0),e||void 0===n)try{if(this.configuration.chimeClient.getMessagingSessionEndpoint instanceof Function){const e=yield this.configuration.chimeClient.getMessagingSessionEndpoint();n=(null===(t=e.Endpoint)||void 0===t?void 0:t.Url)?e.Endpoint.Url:(yield this.configuration.chimeClient.getMessagingSessionEndpoint().promise()).Endpoint.Url}else n=(yield this.configuration.chimeClient.send(new a.GetMessagingSessionEndpointCommand({}))).Endpoint.Url;this.logger.debug(`Messaging endpoint resolved to: ${n}`)}catch(e){this.logger.error(`Messaging Session failed to resolve endpoint: ${e}`);const t=new CloseEvent("close",{wasClean:!1,code:4999,reason:"Failed to get messaging session endpoint URL",bubbles:!1});return void this.closeEventHandler(t)}const i=yield this.prepareWebSocketUrl(n);this.logger.info(`opening connection to ${i}`),e||this.reconnectController.reset(),this.reconnectController.hasStartedConnectionAttempt()?this.reconnectController.startedConnectionAttempt(!1):this.reconnectController.startedConnectionAttempt(!0),this.webSocket.create(i,[],!0),this.forEachObserver((t=>{t.messagingSessionDidStartConnecting&&t.messagingSessionDidStartConnecting(e)})),this.setUpEventListeners()}))}prepareWebSocketUrl(e){return i(this,void 0,void 0,(function*(){const t=new Map;return t.set("userArn",[this.configuration.userArn]),t.set("sessionId",[this.configuration.messagingSessionId]),this.configuration.prefetchOn===m.default.Connect&&t.set("prefetch-on",[m.default.Connect]),this.configuration.prefetchSortBy&&t.set("prefetch-sort-by",[this.configuration.prefetchSortBy]),yield this.sigV4.signURL("GET","wss","chime",e,"/connect","",t)}))}isClosed(){return this.webSocket.readyState()===h.default.None||this.webSocket.readyState()===h.default.Closed}openEventHandler(){this.reconnectController.reset(),this.isSessionEstablished=!1}receiveMessageHandler(e){try{const t=JSON.parse(e),n=t.Headers["x-amz-chime-event-type"],i=new c.default(n,t.Headers,t.Payload||null);if(this.isSessionEstablished||"SESSION_ESTABLISHED"!==n){if(!this.isSessionEstablished)return void this.preBootstrapMessages.push(i)}else{this.forEachObserver((e=>{e.messagingSessionDidStart&&e.messagingSessionDidStart()})),this.bootstrapResolved(),this.isSessionEstablished=!0;const e=this.preBootstrapMessages.length;for(let t=0;t{this.sendMessageToObserver(t,e)}))}}this.forEachObserver((e=>{this.sendMessageToObserver(e,i)}))}catch(e){this.logger.error(`Messaging parsing failed: ${e}`)}}sendMessageToObserver(e,t){e.messagingSessionDidReceiveMessage&&e.messagingSessionDidReceiveMessage(t)}retryConnection(){return this.reconnectController.retryWithBackoff((()=>i(this,void 0,void 0,(function*(){yield this.startConnecting(!0)}))),null)}closeEventHandler(e){this.logger.info(`WebSocket close: ${e.code} ${e.reason}`),4999!==e.code&&this.webSocket.destroy(),!this.isClosing&&this.canReconnect(e.code)&&this.retryConnection()||(this.isClosing=!1,this.isSessionEstablished?this.forEachObserver((t=>{t.messagingSessionDidStop&&t.messagingSessionDidStop(e)})):this.bootstrapRejected(e))}canReconnect(e){return 1001===e||1006===e||e>=1011&&e<=1014||e>4e3&&4002!==e&&4003!==e&&4401!==e}}},4323:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e,t,n,i){this.userArn=e,this.messagingSessionId=t,this.endpointUrl=n,this.chimeClient=i,this.reconnectTimeoutMs=1e4,this.reconnectFixedWaitMs=0,this.reconnectShortBackoffMs=1e3,this.reconnectLongBackoffMs=5e3,this.prefetchOn=void 0,this.prefetchSortBy=void 0,this.messagingSessionId||(this.messagingSessionId=this.generateSessionId())}generateSessionId(){const e=new Uint32Array(1);return window.crypto.getRandomValues(e)[0].toString()}}},106:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.Connect="connect"}(n||(n={})),t.default=n},3938:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.Unread="unread",e.LastMessageTimestamp="last-message-timestamp"}(n||(n={})),t.default=n},214:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(8890));class a{constructor(e){this._id=e}id(){return this._id}base(){return this._id?this._id.split(a.MODALITY_SEPARATOR)[0]:""}modality(){if(!this._id)return"";const e=this._id.split(a.MODALITY_SEPARATOR);return 2===e.length?e[1]:""}hasModality(e){return""!==e&&this.modality()===e}withModality(e){const t=new a(this.base()+a.MODALITY_SEPARATOR+e);return""===e||""===this.base()||new a(t._id).modality()!==e?new a(this.base()):t}}t.default=a,a.MODALITY_SEPARATOR=r.default.Modality[0],a.MODALITY_CONTENT=r.default.Modality.substr(1)},7500:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(7797)),a=i(n(3922)),o=i(n(9416)),s=n(289),c=n(8660);t.default=class{constructor(e,t,n){this.signalingClient=e,this.intervalMs=t,this.logger=n,this.observerQueue=new Set,this.consecutivePongsUnaccountedFor=0,this.intervalScheduler=new a.default(this.intervalMs),this.pingId=0}addObserver(e){this.logger.info("adding a ping-pong observer"),this.observerQueue.add(e)}removeObserver(e){this.logger.info("removing a ping-pong observer"),this.observerQueue.delete(e)}forEachObserver(e){for(const t of this.observerQueue)r.default.nextTick((()=>{this.observerQueue.has(t)&&e(t)}))}start(){this.stop(),this.signalingClient.registerObserver(this),this.signalingClient.ready()&&this.startPingInterval()}stop(){this.stopPingInterval(),this.signalingClient.removeObserver(this)}startPingInterval(){this.intervalScheduler.start((()=>{this.ping()})),this.ping()}stopPingInterval(){this.intervalScheduler.stop(),this.pingId=0,this.consecutivePongsUnaccountedFor=0}ping(){this.consecutivePongsUnaccountedFor>0&&(this.logger.warn(`missed pong ${this.consecutivePongsUnaccountedFor} time(s)`),this.forEachObserver((e=>{c.Maybe.of(e.didMissPongs).map((t=>t.bind(e)(this.consecutivePongsUnaccountedFor)))}))),this.consecutivePongsUnaccountedFor+=1,this.pingId=this.pingId+1&4294967295;const e=s.SdkPingPongFrame.create();e.pingId=this.pingId,e.type=s.SdkPingPongType.PING,this.pingTimestampLocalMs=this.signalingClient.pingPong(e),this.logger.debug((()=>`sent ping ${this.pingId}`))}pong(e){const t=s.SdkPingPongFrame.create();t.pingId=e,t.type=s.SdkPingPongType.PONG,this.signalingClient.pingPong(t)}handleSignalingClientEvent(e){switch(e.type){case o.default.WebSocketOpen:this.startPingInterval();break;case o.default.WebSocketFailed:case o.default.WebSocketError:this.logger.warn(`stopped pinging (${o.default[e.type]})`),this.stopPingInterval();break;case o.default.WebSocketClosing:case o.default.WebSocketClosed:this.logger.info(`stopped pinging (${o.default[e.type]})`),this.stopPingInterval();break;case o.default.ReceivedSignalFrame:if(e.message.type!==s.SdkSignalFrame.Type.PING_PONG)break;if(e.message.pingPong.type===s.SdkPingPongType.PONG){const t=e.message.pingPong.pingId;if(t!==this.pingId){this.logger.warn(`unexpected ping id ${t} (expected ${this.pingId})`);break}let n;if(this.consecutivePongsUnaccountedFor=0,"number"!=typeof e.message.timestampMs)break;n=e.message.timestampMs,this.logger.debug((()=>`received pong ${t} with timestamp ${n}`));const i=e.timestampMs-this.pingTimestampLocalMs,r=Math.round(n-i/2),a=this.pingTimestampLocalMs-r;this.logger.info(`local clock skew estimate=${a}ms from ping-pong time=${i}ms`),this.forEachObserver((e=>{c.Maybe.of(e.didReceivePong).map((n=>n.bind(e)(t,a,i)))}))}else this.pong(e.message.pingPong.pingId)}}}},983:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(5308)),a=i(n(9825)),o=i(n(9576));t.default=class{constructor(e,t){this.mediaStreamBroker=e,this.state=new a.default,this._transcriptionController=t||new r.default(this)}realtimeSetLocalAttendeeId(e,t){this.state.localAttendeeId=e,this.state.localExternalUserId=t}realtimeSetAttendeeIdPresence(e,t,n,i,r){try{t&&(this.state.attendeeIdToExternalUserId[e]=n);for(const a of this.state.attendeeIdChangesCallbacks)a(e,t,n,i,r)}catch(e){this.onError(e)}}realtimeSubscribeToAttendeeIdPresence(e){try{this.state.attendeeIdChangesCallbacks.push(e)}catch(e){this.onError(e)}}realtimeUnsubscribeToAttendeeIdPresence(e){try{const t=this.state.attendeeIdChangesCallbacks.indexOf(e);-1!==t&&this.state.attendeeIdChangesCallbacks.splice(t,1)}catch(e){this.onError(e)}}realtimeSetCanUnmuteLocalAudio(e){try{if(this.state.canUnmute===e)return;this.state.canUnmute=e;for(const t of this.state.setCanUnmuteLocalAudioCallbacks)t(e)}catch(e){this.onError(e)}}realtimeSubscribeToSetCanUnmuteLocalAudio(e){try{this.state.setCanUnmuteLocalAudioCallbacks.push(e)}catch(e){this.onError(e)}}realtimeUnsubscribeToSetCanUnmuteLocalAudio(e){try{const t=this.state.setCanUnmuteLocalAudioCallbacks.indexOf(e);-1!==t&&this.state.setCanUnmuteLocalAudioCallbacks.splice(t,1)}catch(e){this.onError(e)}}realtimeCanUnmuteLocalAudio(){return this.state.canUnmute}realtimeMuteLocalAudio(){if(!this.state.muted)try{this.setAudioInputEnabled(!1),this.state.muted=!0,this.realtimeUpdateVolumeIndicator(this.state.localAttendeeId,null,null,null,this.state.localExternalUserId);for(const e of this.state.muteAndUnmuteLocalAudioCallbacks)e(!0)}catch(e){this.onError(e)}}realtimeUnmuteLocalAudio(){if(!this.state.muted)return!0;if(!this.state.canUnmute)return!1;try{this.setAudioInputEnabled(!0),this.state.muted=!1,this.realtimeUpdateVolumeIndicator(this.state.localAttendeeId,null,null,null,this.state.localExternalUserId);for(const e of this.state.muteAndUnmuteLocalAudioCallbacks)e(!1);return!0}catch(e){return this.onError(e),!1}}realtimeSubscribeToMuteAndUnmuteLocalAudio(e){try{this.state.muteAndUnmuteLocalAudioCallbacks.push(e)}catch(e){this.onError(e)}}realtimeUnsubscribeToMuteAndUnmuteLocalAudio(e){try{const t=this.state.muteAndUnmuteLocalAudioCallbacks.indexOf(e);-1!==t&&this.state.muteAndUnmuteLocalAudioCallbacks.splice(t,1)}catch(e){this.onError(e)}}realtimeIsLocalAudioMuted(){return this.state.muted}realtimeSubscribeToVolumeIndicator(e,t){try{this.state.volumeIndicatorCallbacks.hasOwnProperty(e)||(this.state.volumeIndicatorCallbacks[e]=[]),this.state.volumeIndicatorCallbacks[e].push(t),this.sendVolumeIndicatorChange(e,!0,!0,!0,this.state.attendeeIdToExternalUserId[e])}catch(e){this.onError(e)}}realtimeUnsubscribeFromVolumeIndicator(e,t){if(this.state.volumeIndicatorCallbacks[e])if(t){const n=this.state.volumeIndicatorCallbacks[e].indexOf(t);n>=0&&this.state.volumeIndicatorCallbacks[e].splice(n,1)}else delete this.state.volumeIndicatorCallbacks[e]}realtimeUpdateVolumeIndicator(e,t,n,i,r){try{n=this.applyLocalMuteOverride(e,n);const a=this.getVolumeIndicatorState(e);let o=!1,s=!1,c=!1;null!==n&&a.muted!==n&&(a.muted=n,s=!0,a.muted&&0!==a.volume&&(a.volume=0,o=!0)),a.muted||null===t||(a.volume!==t&&(a.volume=t,o=!0),null===a.muted&&(a.muted=!1,s=!0)),null!==i&&a.signalStrength!==i&&(a.signalStrength=i,c=!0),this.sendVolumeIndicatorChange(e,o,s,c,r)}catch(e){this.onError(e)}}realtimeSubscribeToLocalSignalStrengthChange(e){try{if(this.state.localSignalStrengthChangeCallbacks.push(e),null===this.state.localAttendeeId)return;this.sendLocalSignalStrengthChange(this.state.localAttendeeId,!0)}catch(e){this.onError(e)}}realtimeUnsubscribeToLocalSignalStrengthChange(e){try{const t=this.state.localSignalStrengthChangeCallbacks.indexOf(e);-1!==t&&this.state.localSignalStrengthChangeCallbacks.splice(t,1)}catch(e){this.onError(e)}}realtimeSubscribeToSendDataMessage(e){try{this.state.sendDataMessageCallbacks.push(e)}catch(e){this.onError(e)}}realtimeUnsubscribeFromSendDataMessage(e){try{const t=this.state.sendDataMessageCallbacks.indexOf(e);-1!==t&&this.state.sendDataMessageCallbacks.splice(t,1)}catch(e){this.onError(e)}}realtimeSendDataMessage(e,t,n){try{for(const i of this.state.sendDataMessageCallbacks)i(e,t,n)}catch(e){this.onError(e)}}realtimeSubscribeToReceiveDataMessage(e,t){try{this.state.receiveDataMessageCallbacks.has(e)?this.state.receiveDataMessageCallbacks.get(e).push(t):this.state.receiveDataMessageCallbacks.set(e,[t])}catch(e){this.onError(e)}}realtimeUnsubscribeFromReceiveDataMessage(e){try{this.state.receiveDataMessageCallbacks.delete(e)}catch(e){this.onError(e)}}realtimeReceiveDataMessage(e){try{if(this.state.receiveDataMessageCallbacks.has(e.topic))for(const t of this.state.receiveDataMessageCallbacks.get(e.topic))t(e)}catch(e){this.onError(e)}}realtimeSubscribeToFatalError(e){try{this.state.fatalErrorCallbacks.push(e)}catch(e){this.onError(e)}}realtimeUnsubscribeToFatalError(e){try{const t=this.state.fatalErrorCallbacks.indexOf(e);-1!==t&&this.state.fatalErrorCallbacks.splice(t,1)}catch(e){this.onError(e)}}get transcriptionController(){return this._transcriptionController}setAudioInputEnabled(e){e?this.mediaStreamBroker.unmuteLocalAudioInputStream():this.mediaStreamBroker.muteLocalAudioInputStream()}applyLocalMuteOverride(e,t){const n=this.state.localAttendeeId,i=this.state.muted;return e!==n?t:"activeDevices"in this.mediaStreamBroker&&this.mediaStreamBroker.activeDevices.audio?i:t}sendVolumeIndicatorChange(e,t,n,i,r){if(this.sendLocalSignalStrengthChange(e,i),!this.state.volumeIndicatorCallbacks.hasOwnProperty(e))return;const a=this.getVolumeIndicatorState(e),s=new o.default;if(t&&(s.volume=a.volume),n&&(s.muted=a.muted),i&&(s.signalStrength=a.signalStrength),!this.stateIsEmpty(s))for(const t of this.state.volumeIndicatorCallbacks[e])t(e,s.volume,s.muted,s.signalStrength,r)}sendLocalSignalStrengthChange(e,t){if(!t)return;if(e!==this.state.localAttendeeId)return;const n=this.getVolumeIndicatorState(e).signalStrength;if(null!==n)for(const e of this.state.localSignalStrengthChangeCallbacks)e(n)}getVolumeIndicatorState(e){return this.state.volumeIndicatorState.hasOwnProperty(e)||(this.state.volumeIndicatorState[e]=new o.default),this.state.volumeIndicatorState[e]}stateIsEmpty(e){return null===e.volume&&null===e.muted&&null===e.signalStrength}onError(e){try{for(const t of this.state.fatalErrorCallbacks)t(e)}catch(t){try{console.error(e),console.error(t)}catch(e){}}}}},5910:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.attendeeIndex=null,this.attendeesInFrame=null}}},9825:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.localAttendeeId=null,this.localExternalUserId=null,this.attendeeIdChangesCallbacks=[],this.canUnmute=!0,this.setCanUnmuteLocalAudioCallbacks=[],this.muted=!1,this.muteAndUnmuteLocalAudioCallbacks=[],this.volumeIndicatorState={},this.attendeeIdToExternalUserId={},this.volumeIndicatorCallbacks={},this.localSignalStrengthChangeCallbacks=[],this.fatalErrorCallbacks=[],this.sendDataMessageCallbacks=[],this.receiveDataMessageCallbacks=new Map}}},9576:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.volume=null,this.muted=null,this.signalStrength=null}}},9141:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(4929));class a{constructor(e,t){this.reconnectTimeoutMs=e,this.backoffPolicy=t,this.shouldReconnect=!0,this.onlyRestartPeerConnection=!1,this.firstConnectionAttempted=!1,this.firstConnectionAttemptTimestampMs=0,this.lastActiveTimestampMs=1/0,this._isFirstConnection=!0,this.backoffTimer=null,this.backoffCancel=null,this.reset()}timeSpentReconnectingMs(){return this.firstConnectionAttempted?Date.now()-this.firstConnectionAttemptTimestampMs:0}hasPastReconnectDeadline(){return Date.now()-this.lastActiveTimestampMs>=this.reconnectTimeoutMs||this.timeSpentReconnectingMs()>=this.reconnectTimeoutMs}reset(){this.cancel(),this.shouldReconnect=!0,this.onlyRestartPeerConnection=!1,this.firstConnectionAttempted=!1,this.firstConnectionAttemptTimestampMs=0,this.lastActiveTimestampMs=1/0,this.backoffPolicy.reset()}startedConnectionAttempt(e){this._isFirstConnection=e,this.firstConnectionAttempted||(this.firstConnectionAttempted=!0,this.firstConnectionAttemptTimestampMs=Date.now())}hasStartedConnectionAttempt(){return this.firstConnectionAttempted}isFirstConnection(){return this._isFirstConnection}disableReconnect(){this.shouldReconnect=!1}enableRestartPeerConnection(){this.onlyRestartPeerConnection=!0}cancel(){this.disableReconnect(),this.backoffTimer&&(this.backoffTimer.stop(),this.backoffCancel&&(this.backoffCancel(),this.backoffCancel=null))}retryWithBackoff(e,t){const n=this.shouldReconnect&&!this.hasPastReconnectDeadline();return n&&(this.backoffCancel=t,this.backoffTimer=new r.default(this.backoffPolicy.nextBackoffAmountMs()),this.backoffTimer.start((()=>{this.backoffCancel=null,e()}))),n}shouldOnlyRestartPeerConnection(){return this.onlyRestartPeerConnection}clone(){return new a(this.reconnectTimeoutMs,this.backoffPolicy)}setLastActiveTimestampMs(e){this.lastActiveTimestampMs=e}}t.default=a},4773:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class n{constructor(){this.maxRedPacketSizeBytes=1024,this.maxAudioRtpPacketSizeBytes=1e3,this.maxRedTimestampOffset=16384,this.redHeaderSizeBytes=4,this.redLastHeaderSizeBytes=1,this.redPacketizationTime=960,this.redPacketDistance=2,this.maxRedEncodings=2,this.redMaxRecoveryDistance=this.redPacketDistance*this.maxRedEncodings+1,this.maxEncodingHistorySize=10,this.numRedundantEncodings=0,this.redundancyEnabled=!0,this.lossReportInterval=24e4,this.maxOutOfOrderPacketDistance=16,this.OPUS_BAD_ARG=-1,this.OPUS_INVALID_PACKET=-4,this.OPUS_MAX_OPUS_FRAMES=48,this.OPUS_MAX_FRAME_SIZE_BYTES=1275,this.encodingHistory=new Array,this.opusPayloadType=0,this.redPayloadType=0,this.initializePacketLogs()}static initializeWorker(){n.log("Initializing RedundantAudioEncoder");const e=new n;self.RTCRtpScriptTransformer&&(self.onrtctransform=t=>{"SenderTransform"===t.transformer.options.type?e.setupSenderTransform(t.transformer.readable,t.transformer.writable):"ReceiverTransform"===t.transformer.options.type?e.setupReceiverTransform(t.transformer.readable,t.transformer.writable):"PassthroughTransform"===t.transformer.options.type&&e.setupPassthroughTransform(t.transformer.readable,t.transformer.writable)}),self.onmessage=t=>{"StartRedWorker"===t.data.msgType?(e.setupSenderTransform(t.data.send.readable,t.data.send.writable),e.setupReceiverTransform(t.data.receive.readable,t.data.receive.writable)):"RedPayloadType"===t.data.msgType?e.setRedPayloadType(t.data.payloadType):"OpusPayloadType"===t.data.msgType?e.setOpusPayloadType(t.data.payloadType):"UpdateNumRedundantEncodings"===t.data.msgType?e.setNumRedundantEncodings(t.data.numRedundantEncodings):"Enable"===t.data.msgType?e.setRedundancyEnabled(!0):"Disable"===t.data.msgType&&e.setRedundancyEnabled(!1)}}static log(e){n.shouldLog&&self.postMessage({type:"REDWorkerLog",log:`[AudioRed] ${e}`})}static getNumRedundantEncodingsForPacketLoss(e){let t=0,n=!1;return e<=8?t=0:e<=18?t=1:e<=75?t=2:(t=0,n=!0),[t,n]}setupPassthroughTransform(e,t){n.log("Setting up passthrough transform"),e.pipeTo(t)}setupSenderTransform(e,t){n.log("Setting up sender RED transform");const i=new TransformStream({transform:this.senderTransform.bind(this)});e.pipeThrough(i).pipeTo(t)}setupReceiverTransform(e,t){n.log("Setting up receiver RED transform");const i=new TransformStream({transform:this.receivePacketLogTransform.bind(this)});e.pipeThrough(i).pipeTo(t)}setRedPayloadType(e){this.redPayloadType=e,n.log(`red payload type set to ${this.redPayloadType}`)}setOpusPayloadType(e){this.opusPayloadType=e,n.log(`opus payload type set to ${this.opusPayloadType}`)}setNumRedundantEncodings(e){this.numRedundantEncodings=e,this.numRedundantEncodings>this.maxRedEncodings&&(this.numRedundantEncodings=this.maxRedEncodings),n.log(`Updated numRedundantEncodings to ${this.numRedundantEncodings}`)}setRedundancyEnabled(e){this.redundancyEnabled=e,n.log("redundancy "+(this.redundancyEnabled?"enabled":"disabled"))}senderTransform(e,t){if(e.getMetadata().payloadType!==this.redPayloadType)return void t.enqueue(e);const n=this.getPrimaryPayload(e.timestamp,e.data);if(!n)return void t.enqueue(e);const i=this.encode(e.timestamp,n);i?(e.data=i,t.enqueue(e)):t.enqueue(e)}getPrimaryPayload(e,t){const n=this.splitEncodings(e,t);return!n||n.length<1?null:n[n.length-1].payload}splitEncodings(e,t,n=!1,i=void 0){const r=new DataView(t);let a=r.byteLength,o=0,s=0,c=0,l=0,d=!1;const u=new Array,f=new Array,h=new Array;for(;a>0;){if(d=0==(128&r.getUint8(l)),d){if((127&r.getUint8(l))!==this.opusPayloadType)return null;if(o+=this.redLastHeaderSizeBytes,s+=this.redLastHeaderSizeBytes,o>=r.byteLength)return null;c=r.byteLength-o;break}{if(a>2);h.push(n),o+=t+this.redHeaderSizeBytes,s+=this.redHeaderSizeBytes,l+=this.redHeaderSizeBytes,a-=this.redHeaderSizeBytes}}if(!d)return null;let m=s;for(let e=0;e=this.maxRedPacketSizeBytes||n>=this.maxAudioRtpPacketSizeBytes)return null;const i=this.numRedundantEncodings;let r=this.redLastHeaderSizeBytes,a=n,o=this.maxAudioRtpPacketSizeBytes-n-r;const s=new Array,c=new Array;if(this.redundancyEnabled){let t=this.uint32WrapAround(e-this.redPacketizationTime*this.redPacketDistance);for(let n=0;n=this.maxRedTimestampOffset);n++){let e=t,n=this.encodingHistory.find((t=>t.timestamp===e));if(n||(e=this.uint32WrapAround(t-this.redPacketizationTime),n=this.encodingHistory.find((t=>t.timestamp===e))),n){const e=n.payload.byteLength;if(o>8),d.setUint8(u+3,255&c[t].byteLength),u+=this.redHeaderSizeBytes}d.setUint8(u,this.opusPayloadType),u+=this.redLastHeaderSizeBytes;const f=new Uint8Array(l);for(let e=0;e=n))break;this.encodingHistory.shift()}const n=new DataView(t);(this.opusPacketIsCeltOnly(n)||this.opusPacketHasVoiceActivity(n,n.byteLength)>0)&&(this.encodingHistory.length+1>this.maxEncodingHistorySize&&(this.encodingHistory.length=0),this.encodingHistory.push({timestamp:e,payload:t}))}initializePacketLogs(){const e=this.maxOutOfOrderPacketDistance+this.redMaxRecoveryDistance;this.primaryPacketLog={window:new Array(e),index:0,windowSize:e},this.redRecoveryLog={window:new Array(e),index:0,windowSize:e},this.fecRecoveryLog={window:new Array(e),index:0,windowSize:e},this.totalAudioPacketsExpected=0,this.totalAudioPacketsLost=0,this.totalAudioPacketsRecoveredRed=0,this.totalAudioPacketsRecoveredFec=0}receivePacketLogTransform(e,t){const n=e.getMetadata();if(n.payloadType!==this.redPayloadType)return void t.enqueue(e);const i=this.splitEncodings(e.timestamp,e.data,!0,n.sequenceNumber);if(i){for(let e=i.length-1;e>=0;e--)this.updateLossStats(i[e])&&(this.updateRedStats(i[e]),this.updateFecStats(i[e]));this.maybeReportLossStats(i[i.length-1].timestamp,n.synchronizationSource),t.enqueue(e)}else t.enqueue(e)}updateLossStats(e){if(e.isRedundant)return!0;const t=e.timestamp,n=e.seq;if(0===this.totalAudioPacketsExpected)return this.totalAudioPacketsExpected=1,this.newestSequenceNumber=n,this.addTimestamp(this.primaryPacketLog,t),!0;const i=this.int16(n-this.newestSequenceNumber);return!(i<-this.maxOutOfOrderPacketDistance||(i<0?this.hasTimestamp(this.primaryPacketLog,t)||(this.totalAudioPacketsLost>0&&this.totalAudioPacketsLost--,this.addTimestamp(this.primaryPacketLog,t),this.removeFromRecoveryWindows(t)):i>1&&(this.totalAudioPacketsLost+=i-1),i>0&&(this.totalAudioPacketsExpected+=i,this.newestSequenceNumber=e.seq,this.addTimestamp(this.primaryPacketLog,t)),0))}updateRedStats(e){if(!e.isRedundant||0===this.totalAudioPacketsLost)return;const t=e.timestamp;this.hasTimestamp(this.primaryPacketLog,t)||(this.hasTimestamp(this.redRecoveryLog,t)||(this.totalAudioPacketsRecoveredRed++,this.addTimestamp(this.redRecoveryLog,t)),this.removeTimestamp(this.fecRecoveryLog,t)&&this.totalAudioPacketsRecoveredFec>0&&this.totalAudioPacketsRecoveredFec--)}updateFecStats(e){if(!e.hasFec||0===this.totalAudioPacketsLost)return;const t=e.timestamp-this.redPacketizationTime;this.hasTimestamp(this.primaryPacketLog,t)||this.hasTimestamp(this.redRecoveryLog,t)||this.hasTimestamp(this.fecRecoveryLog,t)||(this.totalAudioPacketsRecoveredFec++,this.addTimestamp(this.fecRecoveryLog,t))}maybeReportLossStats(e,t){e-this.lastLossReportTimestampe===t))}removeTimestamp(e,t){const n=e.window.indexOf(t);return n>=0&&(e.window[n]=void 0,!0)}removeFromRecoveryWindows(e){let t=this.removeTimestamp(this.redRecoveryLog,e);t&&this.totalAudioPacketsRecoveredRed>0&&this.totalAudioPacketsRecoveredRed--,t=this.removeTimestamp(this.fecRecoveryLog,e),t&&this.totalAudioPacketsRecoveredFec>0&&this.totalAudioPacketsRecoveredFec--}uint32WrapAround(e){const t=4294967296;let n=e;return e>=t?n=e-t:e<0&&(n=t+e),n}int16(e){return e<<16>>16}opusPacketIsCeltOnly(e){return!!(128&e.getUint8(0))}opusPacketGetSamplesPerFrame(e,t){let n,i;return t=Math.round(t),t=Math.min(Math.max(t,-Math.pow(2,32)),Math.pow(2,32)-1),this.opusPacketIsCeltOnly(e)?(i=e.getUint8(0)>>3&3,n=(t<>3&3,n=3===i?60*t/1e3:(t<h)return this.OPUS_INVALID_PACKET;m+=l,p=h-a[0][0];break;default:if(h<1)return this.OPUS_INVALID_PACKET;const t=e.getUint8(m++);if(--h,c=63&t,c<=0)return this.OPUS_INVALID_PACKET;if(this.opusPacketGetSamplesPerFrame(e,48e3)*c>5760)return this.OPUS_INVALID_PACKET;if(64&t){let t,n;do{if(h<=0)return this.OPUS_INVALID_PACKET;t=e.getUint8(m++),--h,n=255===t?254:t,h-=n,d+=n}while(255===t)}if(h<0)return this.OPUS_INVALID_PACKET;if(u=!(128&t),u){if(!n){if(p=Math.trunc(h/c),p*c!==h)return this.OPUS_INVALID_PACKET;for(let e=0;eh)return this.OPUS_INVALID_PACKET;m+=l,p-=l+a[t][0]}if(p<0)return this.OPUS_INVALID_PACKET}}if(n){if(l=this.opusParseSize(e,m,h,a[c-1]),h-=l,a[c-1][0]<0||a[c-1][0]>h)return this.OPUS_INVALID_PACKET;if(m+=l,u){if(a[c-1][0]*c>h)return this.OPUS_INVALID_PACKET;for(let e=0;ethis.OPUS_MAX_FRAME_SIZE_BYTES)return this.OPUS_INVALID_PACKET;a[c-1][0]=p}o&&(o[0]=m);for(let e=0;e>8-n)return 1;if(2===this.opusPacketGetNumChannels(e)&&e.getUint8(i[t][0])<>8-n)return 1}return 0}opusPacketHasFec(e,t){if(!e||t<=0)return!1;if(this.opusPacketIsCeltOnly(e))return!1;const n=new Array(this.OPUS_MAX_OPUS_FRAMES),i=new Array(this.OPUS_MAX_OPUS_FRAMES);for(let e=0;e>(t+1)*(r+1)-1)return!0;return!1}}t.default=n,n.shouldLog=!1,n.shouldReportStats=!1},1044:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default="class RedundantAudioEncoder {\n constructor() {\n // Each payload must be less than 1024 bytes to fit the 10 bit block length\n this.maxRedPacketSizeBytes = 1 << 10;\n // Limit payload to 1000 bytes to handle small MTU. 1000 is chosen because in Chromium-based browsers, writing audio\n // frames larger than 1000 bytes will cause an error to be thrown. See https://crbug.com/1248479.\n this.maxAudioRtpPacketSizeBytes = 1000;\n // Each payload can encode a timestamp delta of 14 bits\n this.maxRedTimestampOffset = 1 << 14;\n // 4 byte RED header\n this.redHeaderSizeBytes = 4;\n // reduced size for last RED header\n this.redLastHeaderSizeBytes = 1;\n // P-Time for Opus 20 msec packets\n // We do not support other p-times or clock rates\n this.redPacketizationTime = 960;\n // distance between redundant payloads, Opus FEC handles a distance of 1\n // TODO(https://issues.amazon.com/issues/ChimeSDKAudio-55):\n // Consider making this dynamic\n this.redPacketDistance = 2;\n // maximum number of redundant payloads per RTP packet\n this.maxRedEncodings = 2;\n // Maximum number of encodings that can be recovered with a single RED packet, assuming the primary and redundant\n // payloads have FEC.\n this.redMaxRecoveryDistance = this.redPacketDistance * this.maxRedEncodings + 1;\n // maximum history of prior payloads to keep\n // generally we will expire old entries based on timestamp\n // this limit is in place just to make sure the history does not\n // grow too large in the case of erroneous timestamp inputs\n this.maxEncodingHistorySize = 10;\n // Current number of encodings we want to send\n // to the remote end. This will be dynamically\n // updated through the setNumEncodingsFromPacketloss API\n this.numRedundantEncodings = 0;\n // Used to enable or disable redundancy\n // in response to very high packet loss events\n this.redundancyEnabled = true;\n // Loss stats are reported to the main thread every 5 seconds.\n // Since timestamp differences between 2 consecutive packets\n // give us the number of samples in each channel, 1 second\n // is equivalent to 48000 samples:\n // P-time * (1000ms/1s)\n // = (960 samples/20ms) * (1000ms/1s)\n // = 48000 samples/s\n this.lossReportInterval = 48000 * 5;\n // Maximum distance of a packet from the most recent packet timestamp\n // that we will consider for recovery.\n this.maxOutOfOrderPacketDistance = 16;\n /**\n * Below are Opus helper methods and constants.\n */\n this.OPUS_BAD_ARG = -1;\n this.OPUS_INVALID_PACKET = -4;\n // Max number of Opus frames in an Opus packet is 48 (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.5).\n this.OPUS_MAX_OPUS_FRAMES = 48;\n // Max number of bytes that any individual Opus frame can have.\n this.OPUS_MAX_FRAME_SIZE_BYTES = 1275;\n this.encodingHistory = new Array();\n this.opusPayloadType = 0;\n this.redPayloadType = 0;\n this.initializePacketLogs();\n }\n /**\n * Creates an instance of RedundantAudioEncoder and sets up callbacks.\n */\n static initializeWorker() {\n RedundantAudioEncoder.log('Initializing RedundantAudioEncoder');\n const encoder = new RedundantAudioEncoder();\n // RED encoding is done using WebRTC Encoded Transform\n // https://github.com/w3c/webrtc-encoded-transform/blob/main/explainer.md\n // Check the DedicatedWorkerGlobalScope for existence of\n // RTCRtpScriptTransformer interface. If exists, then\n // RTCRtpScriptTransform is supported by this browser.\n // @ts-ignore\n if (self.RTCRtpScriptTransformer) {\n // @ts-ignore\n self.onrtctransform = (event) => {\n if (event.transformer.options.type === 'SenderTransform') {\n encoder.setupSenderTransform(event.transformer.readable, event.transformer.writable);\n }\n else if (event.transformer.options.type === 'ReceiverTransform') {\n encoder.setupReceiverTransform(event.transformer.readable, event.transformer.writable);\n }\n else if (event.transformer.options.type === 'PassthroughTransform') {\n encoder.setupPassthroughTransform(event.transformer.readable, event.transformer.writable);\n }\n };\n }\n self.onmessage = (event) => {\n if (event.data.msgType === 'StartRedWorker') {\n encoder.setupSenderTransform(event.data.send.readable, event.data.send.writable);\n encoder.setupReceiverTransform(event.data.receive.readable, event.data.receive.writable);\n }\n else if (event.data.msgType === 'RedPayloadType') {\n encoder.setRedPayloadType(event.data.payloadType);\n }\n else if (event.data.msgType === 'OpusPayloadType') {\n encoder.setOpusPayloadType(event.data.payloadType);\n }\n else if (event.data.msgType === 'UpdateNumRedundantEncodings') {\n encoder.setNumRedundantEncodings(event.data.numRedundantEncodings);\n }\n else if (event.data.msgType === 'Enable') {\n encoder.setRedundancyEnabled(true);\n }\n else if (event.data.msgType === 'Disable') {\n encoder.setRedundancyEnabled(false);\n }\n };\n }\n /**\n * Post logs to the main thread\n */\n static log(msg) {\n if (RedundantAudioEncoder.shouldLog) {\n // @ts-ignore\n self.postMessage({\n type: 'REDWorkerLog',\n log: `[AudioRed] ${msg}`,\n });\n }\n }\n /**\n * Returns the number of encodings based on packetLoss value. This is used by `DefaultTransceiverController` to\n * determine when to alert the encoder to update the number of encodings. It also determines if we need to\n * turn off red in cases of very high packet loss to avoid congestion collapse.\n */\n static getNumRedundantEncodingsForPacketLoss(packetLoss) {\n let recommendedRedundantEncodings = 0;\n let shouldTurnOffRed = false;\n if (packetLoss <= 8) {\n recommendedRedundantEncodings = 0;\n }\n else if (packetLoss <= 18) {\n recommendedRedundantEncodings = 1;\n }\n else if (packetLoss <= 75) {\n recommendedRedundantEncodings = 2;\n }\n else {\n recommendedRedundantEncodings = 0;\n shouldTurnOffRed = true;\n }\n return [recommendedRedundantEncodings, shouldTurnOffRed];\n }\n /**\n * Sets up a passthrough (no-op) transform for the given streams.\n */\n setupPassthroughTransform(readable, writable) {\n RedundantAudioEncoder.log('Setting up passthrough transform');\n readable.pipeTo(writable);\n }\n /**\n * Sets up the transform stream and pipes the outgoing encoded audio frames through the transform function.\n */\n setupSenderTransform(readable, writable) {\n RedundantAudioEncoder.log('Setting up sender RED transform');\n const transformStream = new TransformStream({\n transform: this.senderTransform.bind(this),\n });\n readable.pipeThrough(transformStream).pipeTo(writable);\n return;\n }\n /**\n * Sets up the transform stream and pipes the received encoded audio frames through the transform function.\n */\n setupReceiverTransform(readable, writable) {\n RedundantAudioEncoder.log('Setting up receiver RED transform');\n const transformStream = new TransformStream({\n transform: this.receivePacketLogTransform.bind(this),\n });\n readable.pipeThrough(transformStream).pipeTo(writable);\n return;\n }\n /**\n * Set the RED payload type ideally obtained from local offer.\n */\n setRedPayloadType(payloadType) {\n this.redPayloadType = payloadType;\n RedundantAudioEncoder.log(`red payload type set to ${this.redPayloadType}`);\n }\n /**\n * Set the opus payload type ideally obtained from local offer.\n */\n setOpusPayloadType(payloadType) {\n this.opusPayloadType = payloadType;\n RedundantAudioEncoder.log(`opus payload type set to ${this.opusPayloadType}`);\n }\n /**\n * Set the number of redundant encodings\n */\n setNumRedundantEncodings(numRedundantEncodings) {\n this.numRedundantEncodings = numRedundantEncodings;\n if (this.numRedundantEncodings > this.maxRedEncodings) {\n this.numRedundantEncodings = this.maxRedEncodings;\n }\n RedundantAudioEncoder.log(`Updated numRedundantEncodings to ${this.numRedundantEncodings}`);\n }\n /**\n * Enable or disable redundancy in response to\n * high packet loss event.\n */\n setRedundancyEnabled(enabled) {\n this.redundancyEnabled = enabled;\n RedundantAudioEncoder.log(`redundancy ${this.redundancyEnabled ? 'enabled' : 'disabled'}`);\n }\n /**\n * Receives encoded frames and modifies as needed before sending to transport.\n */\n senderTransform(\n // @ts-ignore\n frame, controller) {\n const frameMetadata = frame.getMetadata();\n // @ts-ignore\n if (frameMetadata.payloadType !== this.redPayloadType) {\n controller.enqueue(frame);\n return;\n }\n const primaryPayloadBuffer = this.getPrimaryPayload(frame.timestamp, frame.data);\n if (!primaryPayloadBuffer) {\n controller.enqueue(frame);\n return;\n }\n const encodedBuffer = this.encode(frame.timestamp, primaryPayloadBuffer);\n /* istanbul ignore next */\n if (!encodedBuffer) {\n controller.enqueue(frame);\n return;\n }\n frame.data = encodedBuffer;\n controller.enqueue(frame);\n return;\n }\n /**\n * Get the primary payload from encoding\n */\n getPrimaryPayload(primaryTimestamp, frame) {\n const encodings = this.splitEncodings(primaryTimestamp, frame);\n if (!encodings || encodings.length < 1)\n return null;\n return encodings[encodings.length - 1].payload;\n }\n /**\n * Split up the encoding received into primary and redundant encodings\n * These will be ordered oldest to newest which is the same ordering\n * in the RTP red payload.\n */\n splitEncodings(primaryTimestamp, frame, getFecInfo = false, primarySequenceNumber = undefined) {\n // process RED headers (according to RFC 2198)\n // 0 1 2 3\n // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\n // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n // |F| block PT | timestamp offset | block length |\n // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n //\n // last header\n // 0 1 2 3 4 5 6 7\n // +-+-+-+-+-+-+-+-+\n // |0| Block PT |\n // +-+-+-+-+-+-+-+-+\n const payload = new DataView(frame);\n let payloadSizeBytes = payload.byteLength;\n let totalPayloadSizeBytes = 0;\n let totalHeaderSizeBytes = 0;\n let primaryPayloadSizeBytes = 0;\n let payloadOffset = 0;\n let gotLastBlock = false;\n const encodings = new Array();\n const redundantEncodingBlockLengths = new Array();\n const redundantEncodingTimestamps = new Array();\n while (payloadSizeBytes > 0) {\n gotLastBlock = (payload.getUint8(payloadOffset) & 0x80) === 0;\n if (gotLastBlock) {\n // Bits 1 through 7 are payload type\n const payloadType = payload.getUint8(payloadOffset) & 0x7f;\n // Unexpected payload type. This is a bad packet.\n if (payloadType !== this.opusPayloadType) {\n return null;\n }\n totalPayloadSizeBytes += this.redLastHeaderSizeBytes;\n totalHeaderSizeBytes += this.redLastHeaderSizeBytes;\n // Accumulated block lengths are equal to or larger than the buffer, which means there is no primary block. This\n // is a bad packet.\n if (totalPayloadSizeBytes >= payload.byteLength) {\n return null;\n }\n primaryPayloadSizeBytes = payload.byteLength - totalPayloadSizeBytes;\n break;\n }\n else {\n if (payloadSizeBytes < this.redHeaderSizeBytes) {\n return null;\n }\n // Bits 22 through 31 are payload length\n const blockLength = ((payload.getUint8(payloadOffset + 2) & 0x03) << 8) + payload.getUint8(payloadOffset + 3);\n redundantEncodingBlockLengths.push(blockLength);\n const timestampOffset = payload.getUint16(payloadOffset + 1) >> 2;\n const timestamp = primaryTimestamp - timestampOffset;\n redundantEncodingTimestamps.push(timestamp);\n totalPayloadSizeBytes += blockLength + this.redHeaderSizeBytes;\n totalHeaderSizeBytes += this.redHeaderSizeBytes;\n payloadOffset += this.redHeaderSizeBytes;\n payloadSizeBytes -= this.redHeaderSizeBytes;\n }\n }\n // The last block was never found. This is a bad packet.\n if (!gotLastBlock) {\n return null;\n }\n let redundantPayloadOffset = totalHeaderSizeBytes;\n for (let i = 0; i < redundantEncodingTimestamps.length; i++) {\n const redundantPayloadBuffer = new ArrayBuffer(redundantEncodingBlockLengths[i]);\n const redundantPayloadArray = new Uint8Array(redundantPayloadBuffer);\n redundantPayloadArray.set(new Uint8Array(payload.buffer, redundantPayloadOffset, redundantEncodingBlockLengths[i]), 0);\n const encoding = {\n timestamp: redundantEncodingTimestamps[i],\n payload: redundantPayloadBuffer,\n isRedundant: true,\n };\n if (getFecInfo) {\n encoding.hasFec = this.opusPacketHasFec(new DataView(redundantPayloadBuffer), redundantPayloadBuffer.byteLength);\n }\n encodings.push(encoding);\n redundantPayloadOffset += redundantEncodingBlockLengths[i];\n }\n const primaryPayloadOffset = payload.byteLength - primaryPayloadSizeBytes;\n const primaryPayloadBuffer = new ArrayBuffer(primaryPayloadSizeBytes);\n const primaryArray = new Uint8Array(primaryPayloadBuffer);\n primaryArray.set(new Uint8Array(payload.buffer, primaryPayloadOffset, primaryPayloadSizeBytes), 0);\n const encoding = {\n timestamp: primaryTimestamp,\n payload: primaryPayloadBuffer,\n isRedundant: false,\n seq: primarySequenceNumber,\n };\n if (getFecInfo) {\n encoding.hasFec = this.opusPacketHasFec(new DataView(primaryPayloadBuffer), primaryPayloadBuffer.byteLength);\n }\n encodings.push(encoding);\n return encodings;\n }\n /**\n * Create a new encoding with current primary payload and the older payloads of choice.\n */\n encode(primaryTimestamp, primaryPayload) {\n const primaryPayloadSize = primaryPayload.byteLength;\n // Payload size needs to be valid.\n if (primaryPayloadSize === 0 ||\n primaryPayloadSize >= this.maxRedPacketSizeBytes ||\n primaryPayloadSize >= this.maxAudioRtpPacketSizeBytes) {\n return null;\n }\n const numRedundantEncodings = this.numRedundantEncodings;\n let headerSizeBytes = this.redLastHeaderSizeBytes;\n let payloadSizeBytes = primaryPayloadSize;\n let bytesAvailable = this.maxAudioRtpPacketSizeBytes - primaryPayloadSize - headerSizeBytes;\n const redundantEncodingTimestamps = new Array();\n const redundantEncodingPayloads = new Array();\n // If redundancy is disabled then only send the primary payload\n if (this.redundancyEnabled) {\n // Determine how much redundancy we can fit into our packet\n let redundantTimestamp = this.uint32WrapAround(primaryTimestamp - this.redPacketizationTime * this.redPacketDistance);\n for (let i = 0; i < numRedundantEncodings; i++) {\n // Do not add redundant encodings that are beyond the maximum timestamp offset.\n if (this.uint32WrapAround(primaryTimestamp - redundantTimestamp) >= this.maxRedTimestampOffset) {\n break;\n }\n let findTimestamp = redundantTimestamp;\n let encoding = this.encodingHistory.find(e => e.timestamp === findTimestamp);\n if (!encoding) {\n // If not found or not important then look for the previous packet.\n // The current packet may have included FEC for the previous, so just\n // use the previous packet instead provided that it has voice activity.\n findTimestamp = this.uint32WrapAround(redundantTimestamp - this.redPacketizationTime);\n encoding = this.encodingHistory.find(e => e.timestamp === findTimestamp);\n }\n if (encoding) {\n const redundantEncodingSizeBytes = encoding.payload.byteLength;\n // Only add redundancy if there are enough bytes available.\n if (bytesAvailable < this.redHeaderSizeBytes + redundantEncodingSizeBytes)\n break;\n bytesAvailable -= this.redHeaderSizeBytes + redundantEncodingSizeBytes;\n headerSizeBytes += this.redHeaderSizeBytes;\n payloadSizeBytes += redundantEncodingSizeBytes;\n redundantEncodingTimestamps.unshift(encoding.timestamp);\n redundantEncodingPayloads.unshift(encoding.payload);\n }\n redundantTimestamp -= this.redPacketizationTime * this.redPacketDistance;\n redundantTimestamp = this.uint32WrapAround(redundantTimestamp);\n }\n }\n const redPayloadBuffer = new ArrayBuffer(headerSizeBytes + payloadSizeBytes);\n const redPayloadView = new DataView(redPayloadBuffer);\n // Add redundant encoding header(s) to new buffer\n let redPayloadOffset = 0;\n for (let i = 0; i < redundantEncodingTimestamps.length; i++) {\n const timestampDelta = primaryTimestamp - redundantEncodingTimestamps[i];\n redPayloadView.setUint8(redPayloadOffset, this.opusPayloadType | 0x80);\n redPayloadView.setUint16(redPayloadOffset + 1, (timestampDelta << 2) | (redundantEncodingPayloads[i].byteLength >> 8));\n redPayloadView.setUint8(redPayloadOffset + 3, redundantEncodingPayloads[i].byteLength & 0xff);\n redPayloadOffset += this.redHeaderSizeBytes;\n }\n // Add primary encoding header to new buffer\n redPayloadView.setUint8(redPayloadOffset, this.opusPayloadType);\n redPayloadOffset += this.redLastHeaderSizeBytes;\n // Add redundant payload(s) to new buffer\n const redPayloadArray = new Uint8Array(redPayloadBuffer);\n for (let i = 0; i < redundantEncodingPayloads.length; i++) {\n redPayloadArray.set(new Uint8Array(redundantEncodingPayloads[i]), redPayloadOffset);\n redPayloadOffset += redundantEncodingPayloads[i].byteLength;\n }\n // Add primary payload to new buffer\n redPayloadArray.set(new Uint8Array(primaryPayload), redPayloadOffset);\n redPayloadOffset += primaryPayload.byteLength;\n /* istanbul ignore next */\n // Sanity check that we got the expected total payload size.\n if (redPayloadOffset !== headerSizeBytes + payloadSizeBytes)\n return null;\n this.updateEncodingHistory(primaryTimestamp, primaryPayload);\n return redPayloadBuffer;\n }\n /**\n * Update the encoding history with the latest primary encoding\n */\n updateEncodingHistory(primaryTimestamp, primaryPayload) {\n // Remove encodings from the history if they are too old.\n for (const encoding of this.encodingHistory) {\n const maxTimestampDelta = this.redPacketizationTime * this.redMaxRecoveryDistance;\n if (primaryTimestamp - encoding.timestamp >= maxTimestampDelta) {\n this.encodingHistory.shift();\n }\n else {\n break;\n }\n }\n // Only add an encoding to the history if the encoding is deemed to be important. An encoding is important if it is\n // a CELT-only packet or contains voice activity.\n const packet = new DataView(primaryPayload);\n if (this.opusPacketIsCeltOnly(packet) ||\n this.opusPacketHasVoiceActivity(packet, packet.byteLength) > 0) {\n // Check if adding an encoding will cause the length of the encoding history to exceed the maximum history size.\n // This is not expected to happen but could occur if we get incorrect timestamps. We want to make sure our memory\n // usage is bounded. In this case, just clear the history and start over from empty.\n if (this.encodingHistory.length + 1 > this.maxEncodingHistorySize)\n this.encodingHistory.length = 0;\n this.encodingHistory.push({ timestamp: primaryTimestamp, payload: primaryPayload });\n }\n }\n /**\n * Initialize packet logs and metric values.\n */\n initializePacketLogs() {\n // The extra space from the max RED recovery distance is to ensure that we do not incorrectly count recovery for\n // packets that have already been received but are outside of the max out-of-order distance.\n const packetLogSize = this.maxOutOfOrderPacketDistance + this.redMaxRecoveryDistance;\n this.primaryPacketLog = {\n window: new Array(packetLogSize),\n index: 0,\n windowSize: packetLogSize,\n };\n this.redRecoveryLog = {\n window: new Array(packetLogSize),\n index: 0,\n windowSize: packetLogSize,\n };\n this.fecRecoveryLog = {\n window: new Array(packetLogSize),\n index: 0,\n windowSize: packetLogSize,\n };\n this.totalAudioPacketsExpected = 0;\n this.totalAudioPacketsLost = 0;\n this.totalAudioPacketsRecoveredRed = 0;\n this.totalAudioPacketsRecoveredFec = 0;\n }\n /**\n * Receives encoded frames from the server\n * and adds the timestamps to a packet log\n * to calculate an approximate recovery metric.\n */\n receivePacketLogTransform(\n // @ts-ignore\n frame, controller) {\n const frameMetadata = frame.getMetadata();\n // @ts-ignore\n if (frameMetadata.payloadType !== this.redPayloadType) {\n controller.enqueue(frame);\n return;\n }\n // @ts-ignore\n const encodings = this.splitEncodings(frame.timestamp, frame.data, \n /*getFecInfo*/ true, frameMetadata.sequenceNumber);\n if (!encodings) {\n controller.enqueue(frame);\n return;\n }\n for (let i = encodings.length - 1; i >= 0; i--) {\n if (this.updateLossStats(encodings[i])) {\n this.updateRedStats(encodings[i]);\n this.updateFecStats(encodings[i]);\n }\n }\n this.maybeReportLossStats(encodings[encodings.length - 1].timestamp, frameMetadata.synchronizationSource);\n controller.enqueue(frame);\n }\n /**\n * Adds a timestamp to the primary packet log.\n * This also updates totalAudioPacketsLost and totalAudioPacketsExpected by looking\n * at the difference between timestamps.\n *\n * @param encoding : The encoding to be analyzed\n * @returns false if sequence number was greater than max out of order distance\n * true otherwise\n */\n updateLossStats(encoding) {\n if (encoding.isRedundant)\n return true;\n const timestamp = encoding.timestamp;\n const seq = encoding.seq;\n if (this.totalAudioPacketsExpected === 0) {\n this.totalAudioPacketsExpected = 1;\n this.newestSequenceNumber = seq;\n this.addTimestamp(this.primaryPacketLog, timestamp);\n return true;\n }\n const diff = this.int16(seq - this.newestSequenceNumber);\n if (diff < -this.maxOutOfOrderPacketDistance)\n return false;\n if (diff < 0) {\n if (!this.hasTimestamp(this.primaryPacketLog, timestamp)) {\n if (this.totalAudioPacketsLost > 0)\n this.totalAudioPacketsLost--;\n this.addTimestamp(this.primaryPacketLog, timestamp);\n this.removeFromRecoveryWindows(timestamp);\n }\n }\n else if (diff > 1) {\n this.totalAudioPacketsLost += diff - 1;\n }\n if (diff > 0) {\n this.totalAudioPacketsExpected += diff;\n this.newestSequenceNumber = encoding.seq;\n this.addTimestamp(this.primaryPacketLog, timestamp);\n }\n return true;\n }\n /**\n * Adds a timestamp to the red recovery log if it is not present in\n * the primary packet log and if it's not too old.\n *\n * @param encoding : The encoding to be analyzed\n */\n updateRedStats(encoding) {\n if (!encoding.isRedundant || this.totalAudioPacketsLost === 0)\n return;\n const timestamp = encoding.timestamp;\n if (!this.hasTimestamp(this.primaryPacketLog, timestamp)) {\n if (!this.hasTimestamp(this.redRecoveryLog, timestamp)) {\n this.totalAudioPacketsRecoveredRed++;\n this.addTimestamp(this.redRecoveryLog, timestamp);\n }\n if (this.removeTimestamp(this.fecRecoveryLog, timestamp)) {\n /* istanbul ignore else */\n if (this.totalAudioPacketsRecoveredFec > 0)\n this.totalAudioPacketsRecoveredFec--;\n }\n }\n }\n /**\n * Adds a timestamp to the fec recovery log if it is not present in\n * the primary packet log and red recovery log and if it is not too old.\n *\n * @param encoding : The encoding to be analyzed\n */\n updateFecStats(encoding) {\n if (!encoding.hasFec || this.totalAudioPacketsLost === 0)\n return;\n const fecTimestamp = encoding.timestamp - this.redPacketizationTime;\n if (this.hasTimestamp(this.primaryPacketLog, fecTimestamp) ||\n this.hasTimestamp(this.redRecoveryLog, fecTimestamp) ||\n this.hasTimestamp(this.fecRecoveryLog, fecTimestamp)) {\n return;\n }\n this.totalAudioPacketsRecoveredFec++;\n this.addTimestamp(this.fecRecoveryLog, fecTimestamp);\n }\n /**\n * Reports loss metrics to DefaultTransceiverController\n *\n * @param timestamp : Timestamp of most recent primary packet\n */\n maybeReportLossStats(timestamp, ssrc) {\n if (timestamp - this.lastLossReportTimestamp < this.lossReportInterval)\n return;\n /* istanbul ignore next */\n if (RedundantAudioEncoder.shouldReportStats) {\n // @ts-ignore\n self.postMessage({\n type: 'RedundantAudioEncoderStats',\n ssrc,\n totalAudioPacketsLost: this.totalAudioPacketsLost,\n totalAudioPacketsExpected: this.totalAudioPacketsExpected,\n totalAudioPacketsRecoveredRed: this.totalAudioPacketsRecoveredRed,\n totalAudioPacketsRecoveredFec: this.totalAudioPacketsRecoveredFec,\n });\n }\n this.lastLossReportTimestamp = timestamp;\n }\n /**\n * Adds a timestamp to a packet log\n *\n * @param packetLog : The packetlog to add the timestamp to\n * @param timestamp : The timestamp that should be added\n */\n addTimestamp(packetLog, timestamp) {\n packetLog.window[packetLog.index] = timestamp;\n packetLog.index = (packetLog.index + 1) % packetLog.windowSize;\n }\n /**\n * Checks if a timestamp is in a packetlog\n *\n * @param packetLog : The packetlog to search\n * @param timestamp : The timestamp to search for\n * @returns true if timestamp is present, false otherwise\n */\n hasTimestamp(packetLog, timestamp) {\n const element = packetLog.window.find(t => t === timestamp);\n return !!element;\n }\n /**\n * Removes a timestamp from a packet log\n *\n * @param packetLog : The packetlog from which the timestamp should be removed\n * @param timestamp : The timestamp to be removed\n * @returns true if timestamp was present in the log and removed, false otherwise\n */\n removeTimestamp(packetLog, timestamp) {\n const index = packetLog.window.indexOf(timestamp);\n if (index >= 0) {\n packetLog.window[index] = undefined;\n return true;\n }\n return false;\n }\n /**\n * Removes a timestamp from red and fec recovery windows.\n *\n * @param timestamp : The timestamp to be removed\n */\n removeFromRecoveryWindows(timestamp) {\n let removed = this.removeTimestamp(this.redRecoveryLog, timestamp);\n if (removed) {\n if (this.totalAudioPacketsRecoveredRed > 0)\n this.totalAudioPacketsRecoveredRed--;\n }\n removed = this.removeTimestamp(this.fecRecoveryLog, timestamp);\n if (removed) {\n if (this.totalAudioPacketsRecoveredFec > 0)\n this.totalAudioPacketsRecoveredFec--;\n }\n }\n /**\n * Converts the supplied argument to 32-bit unsigned integer\n */\n uint32WrapAround(num) {\n const mod = 4294967296; // 2^32\n let res = num;\n if (num >= mod) {\n res = num - mod;\n }\n else if (num < 0) {\n res = mod + num;\n }\n return res;\n }\n /**\n * Converts the supplied argument to 16-bit signed integer\n */\n int16(num) {\n return (num << 16) >> 16;\n }\n /**\n * Determines if an Opus packet is in CELT-only mode.\n *\n * @param packet Opus packet.\n * @returns `true` if the packet is in CELT-only mode.\n */\n opusPacketIsCeltOnly(packet) {\n // TOC byte format (https://www.rfc-editor.org/rfc/rfc6716#section-3.1):\n // 0\n // 0 1 2 3 4 5 6 7\n // +-+-+-+-+-+-+-+-+\n // | config |s| c |\n // +-+-+-+-+-+-+-+-+\n // Since CELT-only packets are represented using configurations 16 to 31, the highest 'config' bit will always be 1\n // for CELT-only packets.\n return !!(packet.getUint8(0) & 0x80);\n }\n /**\n * Gets the number of samples per frame from an Opus packet.\n *\n * @param packet Opus packet. This must contain at least one byte of data.\n * @param sampleRateHz 32-bit integer sampling rate in Hz. This must be a multiple of 400 or inaccurate results will\n * be returned.\n * @returns Number of samples per frame.\n */\n opusPacketGetSamplesPerFrame(packet, sampleRateHz) {\n // Sample rate must be a 32-bit integer.\n sampleRateHz = Math.round(sampleRateHz);\n sampleRateHz = Math.min(Math.max(sampleRateHz, -(Math.pow(2, 32))), Math.pow(2, 32) - 1);\n // TOC byte format (https://www.rfc-editor.org/rfc/rfc6716#section-3.1):\n // 0\n // 0 1 2 3 4 5 6 7\n // +-+-+-+-+-+-+-+-+\n // | config |s| c |\n // +-+-+-+-+-+-+-+-+\n let numSamples;\n let frameSizeOption;\n // Case for CELT-only packet.\n if (this.opusPacketIsCeltOnly(packet)) {\n // The lower 3 'config' bits indicate the frame size option.\n frameSizeOption = (packet.getUint8(0) >> 3) & 0x3;\n // The frame size options 0, 1, 2, 3 correspond to frame sizes of 2.5, 5, 10, 20 ms. Notice that the frame sizes\n // can be represented as (2.5 * 2^0), (2.5 * 2^1), (2.5 * 2^2), (2.5 * 2^3) ms. So, the number of samples can be\n // calculated as follows:\n // (sample/s) * (1s/1000ms) * (2.5ms) * 2^(frameSizeOption)\n // = (sample/s) * (1s/400) * 2^(frameSizeOption)\n // = (sample/s) * 2^(frameSizeOption) * (1s/400)\n numSamples = (sampleRateHz << frameSizeOption) / 400;\n }\n // Case for Hybrid packet. Since Hybrid packets are represented using configurations 12 to 15, bits 1 and 2 in the\n // above TOC byte diagram will both be 1.\n else if ((packet.getUint8(0) & 0x60) === 0x60) {\n // In the case of configuration 13 or 15, bit 4 in the above TOC byte diagram will be 1. Configurations 13 and 15\n // correspond to a 20ms frame size, so the number of samples is calculated as follows:\n // (sample/s) * (1s/1000ms) * (20ms)\n // = (sample/s) * (1s/50)\n //\n // In the case of configuration 12 or 14, bit 4 in the above TOC byte diagram will be 0. Configurations 12 and 14\n // correspond to a 10ms frame size, so the number of samples is calculated as follows:\n // (sample/s) * (1s/1000ms) * (10ms)\n // = (sample/s) * (1s/100)\n numSamples = packet.getUint8(0) & 0x08 ? sampleRateHz / 50 : sampleRateHz / 100;\n }\n // Case for SILK-only packet.\n else {\n // The lower 3 'config' bits indicate the frame size option for SILK-only packets.\n frameSizeOption = (packet.getUint8(0) >> 3) & 0x3;\n if (frameSizeOption === 3) {\n // Frame size option 3 corresponds to a frame size of 60ms, so the number of samples is calculated as follows:\n // (sample/s) * (1s/1000ms) * (60ms)\n // = (sample/s) * (60ms) * (1s/1000ms)\n numSamples = (sampleRateHz * 60) / 1000;\n }\n else {\n // The frame size options 0, 1, 2 correspond to frame sizes of 10, 20, 40 ms. Notice that the frame sizes can be\n // represented as (10 * 2^0), (10 * 2^1), (10 * 2^2) ms. So, the number of samples can be calculated as follows:\n // (sample/s) * (1s/1000ms) * (10ms) * 2^(frameSizeOption)\n // = (sample/s) * (1s/100) * 2^(frameSizeOption)\n // = (sample/s) * 2^(frameSizeOption) * (1s/100)\n numSamples = (sampleRateHz << frameSizeOption) / 100;\n }\n }\n return numSamples;\n }\n /**\n * Gets the number of SILK frames per Opus frame.\n *\n * @param packet Opus packet.\n * @returns Number of SILK frames per Opus frame.\n */\n opusNumSilkFrames(packet) {\n // For computing the frame length in ms, the sample rate is not important since it cancels out. We use 48 kHz, but\n // any valid sample rate would work.\n //\n // To calculate the length of a frame (with a 48kHz sample rate) in ms:\n // (samples/frame) * (1s/48000 samples) * (1000ms/s)\n // = (samples/frame) * (1000ms/48000 samples)\n // = (samples/frame) * (1ms/48 samples)\n let frameLengthMs = this.opusPacketGetSamplesPerFrame(packet, 48000) / 48;\n if (frameLengthMs < 10)\n frameLengthMs = 10;\n // The number of SILK frames per Opus frame is described in https://www.rfc-editor.org/rfc/rfc6716#section-4.2.2.\n switch (frameLengthMs) {\n case 10:\n case 20:\n return 1;\n case 40:\n return 2;\n case 60:\n return 3;\n // It is not possible to reach the default case since an Opus packet can only encode sizes of 2.5, 5, 10, 20, 40,\n // or 60 ms, so we ignore the default case for test coverage.\n /* istanbul ignore next */\n default:\n return 0;\n }\n }\n /**\n * Gets the number of channels from an Opus packet.\n *\n * @param packet Opus packet.\n * @returns Number of channels.\n */\n opusPacketGetNumChannels(packet) {\n // TOC byte format (https://www.rfc-editor.org/rfc/rfc6716#section-3.1):\n // 0\n // 0 1 2 3 4 5 6 7\n // +-+-+-+-+-+-+-+-+\n // | config |s| c |\n // +-+-+-+-+-+-+-+-+\n // The 's' bit indicates mono or stereo audio, with 0 indicating mono and 1 indicating stereo.\n return packet.getUint8(0) & 0x4 ? 2 : 1;\n }\n /**\n * Determine the size (in bytes) of an Opus frame.\n *\n * @param packet Opus packet.\n * @param byteOffset Offset (from the start of the packet) to the byte containing the size information.\n * @param remainingBytes Remaining number of bytes to parse from the Opus packet.\n * @param sizeBytes Variable to store the parsed frame size (in bytes).\n * @returns Number of bytes that were parsed to determine the frame size.\n */\n opusParseSize(packet, byteOffset, remainingBytes, sizeBytes) {\n // See https://www.rfc-editor.org/rfc/rfc6716#section-3.2.1 for an explanation of how frame size is represented.\n // If there are no remaining bytes to parse the size from, then the size cannot be determined.\n if (remainingBytes < 1) {\n sizeBytes[0] = -1;\n return -1;\n }\n // If the first byte is in the range 0...251, then this value is the size of the frame.\n else if (packet.getUint8(byteOffset) < 252) {\n sizeBytes[0] = packet.getUint8(byteOffset);\n return 1;\n }\n // If the first byte is in the range 252...255, a second byte is needed. If there is no second byte, then the size\n // cannot be determined.\n else if (remainingBytes < 2) {\n sizeBytes[0] = -1;\n return -1;\n }\n // The total size of the frame given two size bytes is:\n // (4 * secondSizeByte) + firstSizeByte\n else {\n sizeBytes[0] = 4 * packet.getUint8(byteOffset + 1) + packet.getUint8(byteOffset);\n return 2;\n }\n }\n /**\n * Parse binary data containing an Opus packet into one or more Opus frames.\n *\n * @param data Binary data containing an Opus packet to be parsed. The data should begin with the first byte (i.e the\n * TOC byte) of an Opus packet. Note that the size of the data does not have to equal the size of the\n * contained Opus packet.\n * @param lenBytes Size of the data (in bytes).\n * @param selfDelimited Indicates if the Opus packet is self-delimiting\n * (https://www.rfc-editor.org/rfc/rfc6716#appendix-B).\n * @param tocByte Optional variable to store the TOC (table of contents) byte.\n * @param frameOffsets Optional variable to store the offsets (from the start of the data) to the first bytes of each\n * Opus frame.\n * @param frameSizes Required variable to store the sizes (in bytes) of each Opus frame.\n * @param payloadOffset Optional variable to store the offset (from the start of the data) to the first byte of the\n * payload.\n * @param packetLenBytes Optional variable to store the length of the Opus packet (in bytes).\n * @returns Number of Opus frames.\n */\n opusPacketParseImpl(data, lenBytes, selfDelimited, tocByte, frameOffsets, frameSizes, payloadOffset, packetLenBytes) {\n if (!frameSizes || lenBytes < 0)\n return this.OPUS_BAD_ARG;\n if (lenBytes === 0)\n return this.OPUS_INVALID_PACKET;\n // The number of Opus frames in the packet.\n let numFrames;\n // Intermediate storage for the number of bytes parsed to determine the size of a frame.\n let numBytesParsed;\n // The number of the padding bytes (excluding the padding count bytes) in the packet.\n let paddingBytes = 0;\n // Indicates whether CBR (constant bitrate) framing is used.\n let cbr = false;\n // The TOC (table of contents) byte (https://www.rfc-editor.org/rfc/rfc6716#section-3.1).\n const toc = data.getUint8(0);\n // Store the TOC byte.\n if (tocByte)\n tocByte[0] = toc;\n // The remaining number of bytes to parse from the packet. Note that the TOC byte has already been parsed, hence the\n // minus 1.\n let remainingBytes = lenBytes - 1;\n // This keeps track of where we are in the packet. This starts at 1 since the TOC byte has already been read.\n let byteOffset = 1;\n // The size of the last Opus frame in bytes.\n let lastSizeBytes = remainingBytes;\n // Read the `c` bits (i.e. code bits) from the TOC byte.\n switch (toc & 0x3) {\n // A code 0 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.2) has one frame.\n case 0:\n numFrames = 1;\n break;\n // A code 1 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.3) has two CBR (constant bitrate) frames.\n case 1:\n numFrames = 2;\n cbr = true;\n if (!selfDelimited) {\n // Undelimited code 1 packets must be an even number of data bytes, otherwise the packet is invalid.\n if (remainingBytes & 0x1)\n return this.OPUS_INVALID_PACKET;\n // The sizes of both frames are equal (i.e. half of the number of data bytes).\n lastSizeBytes = remainingBytes / 2;\n // If `lastSizeBytes` is too large, we will catch it later.\n frameSizes[0][0] = lastSizeBytes;\n }\n break;\n // A code 2 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.4) has two VBR (variable bitrate) frames.\n case 2:\n numFrames = 2;\n numBytesParsed = this.opusParseSize(data, byteOffset, remainingBytes, frameSizes[0]);\n remainingBytes -= numBytesParsed;\n // The parsed size of the first frame cannot be larger than the number of remaining bytes in the packet.\n if (frameSizes[0][0] < 0 || frameSizes[0][0] > remainingBytes) {\n return this.OPUS_INVALID_PACKET;\n }\n byteOffset += numBytesParsed;\n // The size of the second frame is the remaining number of bytes after the first frame.\n lastSizeBytes = remainingBytes - frameSizes[0][0];\n break;\n // A code 3 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.5) has multiple CBR/VBR frames (from 0 to\n // 120 ms).\n default:\n // Code 3 packets must have at least 2 bytes (i.e. at least 1 byte after the TOC byte).\n if (remainingBytes < 1)\n return this.OPUS_INVALID_PACKET;\n // Frame count byte format:\n // 0\n // 0 1 2 3 4 5 6 7\n // +-+-+-+-+-+-+-+-+\n // |v|p| M |\n // +-+-+-+-+-+-+-+-+\n //\n // Read the frame count byte, which immediately follows the TOC byte.\n const frameCountByte = data.getUint8(byteOffset++);\n --remainingBytes;\n // Read the 'M' bits of the frame count byte, which encode the number of frames.\n numFrames = frameCountByte & 0x3f;\n // The number of frames in a code 3 packet must not be 0.\n if (numFrames <= 0)\n return this.OPUS_INVALID_PACKET;\n const samplesPerFrame = this.opusPacketGetSamplesPerFrame(data, 48000);\n // A single frame can have at most 2880 samples, which happens in the case where 60ms of 48kHz audio is encoded\n // per frame. A code 3 packet cannot contain more than 120ms of audio, so the total number of samples cannot\n // exceed 2880 * 2 = 5760.\n if (samplesPerFrame * numFrames > 5760)\n return this.OPUS_INVALID_PACKET;\n // Parse padding bytes if the 'p' bit is 1.\n if (frameCountByte & 0x40) {\n let paddingCountByte;\n let numPaddingBytes;\n // Remove padding bytes (including padding count bytes) from the remaining byte count.\n do {\n // Sanity check that there are enough bytes to parse and remove the padding.\n if (remainingBytes <= 0)\n return this.OPUS_INVALID_PACKET;\n // Get the next padding count byte.\n paddingCountByte = data.getUint8(byteOffset++);\n --remainingBytes;\n // If the padding count byte has a value in the range 0...254, then the total size of the padding is the\n // value in the padding count byte.\n //\n // If the padding count byte has value 255, then the total size of the padding is 254 plus the value in the\n // next padding count byte. Therefore, keep reading padding count bytes while the value is 255.\n numPaddingBytes = paddingCountByte === 255 ? 254 : paddingCountByte;\n remainingBytes -= numPaddingBytes;\n paddingBytes += numPaddingBytes;\n } while (paddingCountByte === 255);\n }\n // Sanity check that the remaining number of bytes is not negative after removing the padding.\n if (remainingBytes < 0)\n return this.OPUS_INVALID_PACKET;\n // Read the 'v' bit (i.e. VBR bit).\n cbr = !(frameCountByte & 0x80);\n // VBR case\n if (!cbr) {\n lastSizeBytes = remainingBytes;\n // Let M be the number of frames. There will be M - 1 frame length indicators (which can be 1 or 2 bytes)\n // corresponding to the lengths of frames 0 to M - 2. The size of the last frame (i.e. frame M - 1) is the\n // number of data bytes after the end of frame M - 2 and before the start of the padding bytes.\n for (let i = 0; i < numFrames - 1; ++i) {\n numBytesParsed = this.opusParseSize(data, byteOffset, remainingBytes, frameSizes[i]);\n remainingBytes -= numBytesParsed;\n // The remaining number of data bytes must be enough to contain each frame.\n if (frameSizes[i][0] < 0 || frameSizes[i][0] > remainingBytes) {\n return this.OPUS_INVALID_PACKET;\n }\n byteOffset += numBytesParsed;\n lastSizeBytes -= numBytesParsed + frameSizes[i][0];\n }\n // Sanity check that the size of the last frame is not negative.\n if (lastSizeBytes < 0)\n return this.OPUS_INVALID_PACKET;\n }\n // CBR case\n else if (!selfDelimited) {\n // The size of each frame is the number of data bytes divided by the number of frames.\n lastSizeBytes = Math.trunc(remainingBytes / numFrames);\n // The number of data bytes must be a non-negative integer multiple of the number of frames.\n if (lastSizeBytes * numFrames !== remainingBytes)\n return this.OPUS_INVALID_PACKET;\n // All frames have equal size in the undelimited CBR case.\n for (let i = 0; i < numFrames - 1; ++i) {\n frameSizes[i][0] = lastSizeBytes;\n }\n }\n }\n // Self-delimited framing uses an extra 1 or 2 bytes, immediately preceding the data bytes, to indicate either the\n // size of the last frame (for code 0, code 2, and VBR code 3 packets) or the size of all the frames (for code 1 and\n // CBR code 3 packets). See https://www.rfc-editor.org/rfc/rfc6716#appendix-B.\n if (selfDelimited) {\n // The extra frame size byte(s) will always indicate the size of the last frame.\n numBytesParsed = this.opusParseSize(data, byteOffset, remainingBytes, frameSizes[numFrames - 1]);\n remainingBytes -= numBytesParsed;\n // There must be enough data bytes for the last frame.\n if (frameSizes[numFrames - 1][0] < 0 || frameSizes[numFrames - 1][0] > remainingBytes) {\n return this.OPUS_INVALID_PACKET;\n }\n byteOffset += numBytesParsed;\n // For CBR packets, the sizes of all the frames are equal.\n if (cbr) {\n // There must be enough data bytes for all the frames.\n if (frameSizes[numFrames - 1][0] * numFrames > remainingBytes) {\n return this.OPUS_INVALID_PACKET;\n }\n for (let i = 0; i < numFrames - 1; ++i) {\n frameSizes[i][0] = frameSizes[numFrames - 1][0];\n }\n }\n // At this point, `lastSizeBytes` contains the size of the last frame plus the size of the extra frame size\n // byte(s), so sanity check that `lastSizeBytes` is the upper bound for the size of the last frame.\n else if (!(numBytesParsed + frameSizes[numFrames - 1][0] <= lastSizeBytes)) {\n return this.OPUS_INVALID_PACKET;\n }\n }\n // Undelimited case\n else {\n // Because the size of the last packet is not encoded explicitly, it is possible that the size of the last packet\n // (or of all the packets, for the CBR case) is larger than maximum frame size.\n if (lastSizeBytes > this.OPUS_MAX_FRAME_SIZE_BYTES)\n return this.OPUS_INVALID_PACKET;\n frameSizes[numFrames - 1][0] = lastSizeBytes;\n }\n // Store the offset to the start of the payload.\n if (payloadOffset)\n payloadOffset[0] = byteOffset;\n // Store the offsets to the start of each frame.\n for (let i = 0; i < numFrames; ++i) {\n if (frameOffsets)\n frameOffsets[i][0] = byteOffset;\n byteOffset += frameSizes[i][0];\n }\n // Store the length of the Opus packet.\n if (packetLenBytes)\n packetLenBytes[0] = byteOffset + paddingBytes;\n return numFrames;\n }\n /**\n * Parse a single undelimited Opus packet into one or more Opus frames.\n *\n * @param packet Opus packet to be parsed.\n * @param lenBytes Size of the packet (in bytes).\n * @param tocByte Optional variable to store the TOC (table of contents) byte.\n * @param frameOffsets Optional variable to store the offsets (from the start of the packet) to the first bytes of\n * each Opus frame.\n * @param frameSizes Required variable to store the sizes (in bytes) of each Opus frame.\n * @param payloadOffset Optional variable to store the offset (from the start of the packet) to the first byte of the\n * payload.\n * @returns Number of Opus frames.\n */\n opusPacketParse(packet, lenBytes, tocByte, frameOffsets, frameSizes, payloadOffset) {\n return this.opusPacketParseImpl(packet, lenBytes, \n /* selfDelimited */ false, tocByte, frameOffsets, frameSizes, payloadOffset, null);\n }\n /**\n * This function returns the SILK VAD (voice activity detection) information encoded in the Opus packet. For CELT-only\n * packets that do not have VAD information, it returns -1.\n *\n * @param packet Opus packet.\n * @param lenBytes Size of the packet (in bytes).\n * @returns 0: no frame had the VAD flag set.\n * 1: at least one frame had the VAD flag set.\n * -1: VAD status could not be determined.\n */\n opusPacketHasVoiceActivity(packet, lenBytes) {\n if (!packet || lenBytes <= 0)\n return 0;\n // In CELT-only mode, we can not determine whether there is VAD.\n if (this.opusPacketIsCeltOnly(packet))\n return -1;\n const numSilkFrames = this.opusNumSilkFrames(packet);\n // It is not possible for `opusNumSilkFrames()` to return 0, so we ignore the next sanity check for test coverage.\n /* istanbul ignore next */\n if (numSilkFrames === 0)\n return -1;\n const opusFrameOffsets = new Array(this.OPUS_MAX_OPUS_FRAMES);\n const opusFrameSizes = new Array(this.OPUS_MAX_OPUS_FRAMES);\n for (let i = 0; i < this.OPUS_MAX_OPUS_FRAMES; ++i) {\n opusFrameOffsets[i] = [undefined];\n opusFrameSizes[i] = [undefined];\n }\n // Parse packet to get the Opus frames.\n const numOpusFrames = this.opusPacketParse(packet, lenBytes, null, opusFrameOffsets, opusFrameSizes, null);\n // VAD status cannot be determined for invalid packets.\n if (numOpusFrames < 0)\n return -1;\n // Iterate over all Opus frames, which may contain multiple SILK frames, to determine the VAD status.\n for (let i = 0; i < numOpusFrames; ++i) {\n if (opusFrameSizes[i][0] < 1)\n continue;\n // LP layer header bits format (https://www.rfc-editor.org/rfc/rfc6716#section-4.2.3):\n //\n // Mono case:\n // +-----------------+----------+\n // | 1 to 3 VAD bits | LBRR bit |\n // +-----------------+----------+\n //\n // Stereo case:\n // +---------------------+--------------+----------------------+---------------+\n // | 1 to 3 mid VAD bits | mid LBRR bit | 1 to 3 side VAD bits | side LBRR bit |\n // +---------------------+--------------+----------------------+---------------+\n // The upper 1 to 3 bits (dependent on the number of SILK frames) of the LP layer contain VAD bits. If any of\n // these VAD bits are 1, then voice activity is present.\n if (packet.getUint8(opusFrameOffsets[i][0]) >> (8 - numSilkFrames))\n return 1;\n // In the stereo case, there is a second set of 1 to 3 VAD bits, so also check these VAD bits.\n const channels = this.opusPacketGetNumChannels(packet);\n if (channels === 2 &&\n (packet.getUint8(opusFrameOffsets[i][0]) << (numSilkFrames + 1)) >> (8 - numSilkFrames)) {\n return 1;\n }\n }\n // No voice activity was detected.\n return 0;\n }\n /**\n * This method is based on Definition of the Opus Audio Codec\n * (https://tools.ietf.org/html/rfc6716). Basically, this method is based on\n * parsing the LP layer of an Opus packet, particularly the LBRR flag.\n *\n * @param packet Opus packet.\n * @param lenBytes Size of the packet (in bytes).\n * @returns true: packet has fec encoding about previous packet.\n * false: no fec encoding present.\n */\n opusPacketHasFec(packet, lenBytes) {\n if (!packet || lenBytes <= 0)\n return false;\n // In CELT-only mode, packets should not have FEC.\n if (this.opusPacketIsCeltOnly(packet))\n return false;\n const opusFrameOffsets = new Array(this.OPUS_MAX_OPUS_FRAMES);\n const opusFrameSizes = new Array(this.OPUS_MAX_OPUS_FRAMES);\n for (let i = 0; i < this.OPUS_MAX_OPUS_FRAMES; ++i) {\n opusFrameOffsets[i] = [undefined];\n opusFrameSizes[i] = [undefined];\n }\n // Parse packet to get the Opus frames.\n const numOpusFrames = this.opusPacketParse(packet, lenBytes, null, opusFrameOffsets, opusFrameSizes, null);\n if (numOpusFrames < 0)\n return false;\n /* istanbul ignore next */\n if (opusFrameSizes[0][0] <= 1)\n return false;\n const numSilkFrames = this.opusNumSilkFrames(packet);\n /* istanbul ignore next */\n if (numSilkFrames === 0)\n return false;\n const channels = this.opusPacketGetNumChannels(packet);\n /* istanbul ignore next */\n if (channels !== 1 && channels !== 2)\n return false;\n // A frame starts with the LP layer. The LP layer begins with two to eight\n // header bits.These consist of one VAD bit per SILK frame (up to 3),\n // followed by a single flag indicating the presence of LBRR frames.\n // For a stereo packet, these first flags correspond to the mid channel, and\n // a second set of flags is included for the side channel. Because these are\n // the first symbols decoded by the range coder and because they are coded\n // as binary values with uniform probability, they can be extracted directly\n // from the most significant bits of the first byte of compressed data.\n for (let i = 0; i < channels; i++) {\n if (packet.getUint8(opusFrameOffsets[0][0]) & (0x80 >> ((i + 1) * (numSilkFrames + 1) - 1)))\n return true;\n }\n return false;\n }\n}\nRedundantAudioEncoder.shouldLog = true;\nRedundantAudioEncoder.shouldReportStats = true;\nRedundantAudioEncoder.initializeWorker();\n"},7797:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(4929));class a extends r.default{constructor(){super(0)}static nextTick(e){setTimeout(e,0)}}t.default=a},3922:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e){this.intervalMs=e}start(e){this.stop(),this.timer=setInterval(e,this.intervalMs)}stop(){void 0!==this.timer&&(clearInterval(this.timer),this.timer=void 0)}running(){return void 0!==this.timer}}},4929:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e){this.timeoutMs=e,this.timer=null}start(e){this.stop(),this.timer=setTimeout((()=>{clearTimeout(this.timer),e()}),this.timeoutMs)}stop(){null!==this.timer&&(clearTimeout(this.timer),this.timer=null)}}},326:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(4076)),a=i(n(1944)),o=i(n(2330));class s{constructor(e){this.sdp=e}clone(){return new s(this.sdp)}static isRTPCandidate(e){const t=/candidate[:](\S+) (\d+)/g.exec(e);return null!==t&&"1"===t[2]}static linesToSDP(e){return new s(e.join(s.CRLF))}static candidateTypeFromString(e){switch(e){case r.default.Host:return r.default.Host;case r.default.ServerReflexive:return r.default.ServerReflexive;case r.default.PeerReflexive:return r.default.PeerReflexive;case r.default.Relay:return r.default.Relay}return null}static candidateType(e){const t=/a[=]candidate[:].* typ ([a-z]+) /g.exec(e);return null===t?null:s.candidateTypeFromString(t[1])}static mediaType(e){const t=/m=(audio|video)/g.exec(e);if(null!==t)return t[1]}static mid(e){if(e.includes("a=mid:"))return e.replace(/^(a=mid:)/,"")}static direction(e){const t=/a=(sendrecv|sendonly|recvonly|inactive)/g.exec(e);if(null!==t)return t[1]}static splitLines(e){return e.trim().split("\n").map((e=>e.trim()))}static splitSections(e){return e.split("\nm=").map(((e,t)=>(t>0?"m="+e:e).trim()+s.CRLF))}static findActiveCameraSection(e){let t=0,n=!1;for(const i of e){if(/^m=video/.test(i)&&(i.indexOf("sendrecv")>-1||-1===i.indexOf("sendonly")&&-1===i.indexOf("recvonly")&&-1===i.indexOf("inactive"))){n=!0;break}t++}return!1===n&&(t=-1),t}static extractSSRCsFromFIDGroupLine(e){return/^a=ssrc-group:FID\s(.+)/.exec(e)[1]}static matchPrefix(e,t){return s.splitLines(e).filter((e=>0===e.indexOf(t)))}lines(){return this.sdp.split(s.CRLF)}hasVideo(){return null!==/^m=video/gm.exec(this.sdp)}hasCandidates(){return null!==/a[=]candidate[:]/g.exec(this.sdp)}hasCandidatesForAllMLines(){return!(this.sdp.indexOf("c=IN IP4 0.0.0.0")>-1)}withoutCandidateType(e){return s.linesToSDP(this.lines().filter((t=>s.candidateType(t)!==e)))}withoutServerReflexiveCandidates(){return this.withoutCandidateType(r.default.ServerReflexive)}withAudioMaxAverageBitrate(e){if(!e)return this.clone();e=Math.trunc(Math.min(Math.max(e,s.rfc7587LowestBitrate),s.rfc7587HighestBitrate));const t=this.lines(),n=s.findOpusFmtpAttributes(t),i=s.updateOpusFmtpAttributes(t,n,[`maxaveragebitrate=${e}`]);return s.linesToSDP(i)}withStereoAudio(){const e=this.lines(),t=s.findOpusFmtpAttributes(e),n=s.updateOpusFmtpAttributes(e,t,["stereo=1","sprop-stereo=1"]);return s.linesToSDP(n)}static findOpusFmtpAttributes(e){const t=/^a=rtpmap:\s*(\d+)\s+opus\/48000/;let n=!1;const i=[];for(const r of e)if(r.startsWith("m=audio")&&(i.push(null),n=!0),r.startsWith("m=video")&&(n=!1),n){const e=t.exec(r);null!==e&&(i[i.length-1]=`a=fmtp:${e[1]} `)}return i}static updateOpusFmtpAttributes(e,t,n){const i=[];let r=0,a=null;for(const o of e)if(o.startsWith("m=audio")&&(a=t[r],r++),o.startsWith("m=video")&&(a=null),a&&o.startsWith(a)){const e=o.slice(a.length).split(";"),t=[];for(const i of e)n.findIndex((e=>e.startsWith(i.split("=")[0])))<0&&t.push(i);for(const e of n)t.push(e);i.push(a+t.join(";"))}else i.push(o);return i}withUnifiedPlanFormat(){let e=this.sdp;return e.includes("mozilla")?this.clone():(e=e.replace("o=-","o=mozilla-chrome"),new s(e))}getUniqueRtpHeaderExtensionId(e){const t=[];for(const n of e)if(/^a=extmap:/.test(n.trim())){const e=+n.split("a=extmap:")[1].split(" ")[0];t.includes(e)||t.push(e)}t.sort(((e,t)=>e-t));let n=0;for(const e of t){if(e-n>1)return n+1;n=e}return 14===n?-1:n+1}withVideoLayersAllocationRtpHeaderExtension(e){const t="http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00",n=e?e.getRtpHeaderExtensionId(t):-1,i=-1===n?this.getUniqueRtpHeaderExtensionId(s.splitLines(this.sdp)):n,r=s.splitSections(this.sdp),a=[];for(let e of r){if(/^m=video/.test(e)&&-1===s.getRtpHeaderExtensionIdInSection(e,t)){const n=s.splitLines(e),r=[];if(-1===i||this.hasRtpHeaderExtensionId(i)){a.push(e);continue}for(const e of n)if(r.push(e),/^a=sendrecv/.test(e.trim())){const e="a=extmap:"+i+" "+t;r.push(e)}e=r.join(s.CRLF)+s.CRLF}else if(-1!==n&&/^m=video/.test(e)&&s.getRtpHeaderExtensionIdInSection(e,t)!==n){const i=s.splitLines(e),r=[];for(const e of i)if(/^a=extmap:/.test(e.trim())&&e.split("a=extmap:")[1].split(" ")[1]===t){if(!this.hasRtpHeaderExtensionId(n)){const e="a=extmap:"+n+" "+t;r.push(e)}}else r.push(e);e=r.join(s.CRLF)+s.CRLF}a.push(e)}const o=a.join("");return new s(o)}ssrcForVideoSendingSection(){const e=this.sdp,t=s.splitSections(e);if(t.length<2)return"";const n=s.findActiveCameraSection(t);if(-1===n)return"";const i=s.matchPrefix(t[n],"a=ssrc-group:FID ");if(i.length<1)return"";const r=s.extractSSRCsFromFIDGroupLine(i[0]),[a]=r.split(" ").map((e=>parseInt(e,10)));return a.toString()}videoSendSectionHasDifferentSSRC(e){const t=this.ssrcForVideoSendingSection(),n=e.ssrcForVideoSendingSection();return""!==t&&""!==n&&parseInt(t,10)!==parseInt(n,10)}removeH264SupportFromSendSection(){const e=this.sdp,t=s.splitSections(e),n=s.findActiveCameraSection(t);if(-1===n)return new s(this.sdp);const i=t[n],r=s.splitLines(i),a=[],o=new Map;r.forEach((e=>{if(/^a=rtpmap:/.test(e)){const t=/^a=rtpmap:([0-9]+)\s/.exec(e);t&&e.toLowerCase().includes("h264")&&a.push(parseInt(t[1],10))}if(/^a=fmtp:/.test(e)){const t=/^a=fmtp:([0-9]+) apt=([0-9]+)/.exec(e);if(t&&3===t.length){const e=parseInt(t[1],10),n=parseInt(t[2],10);o.has(n)?o.get(n).push(e):o.set(n,[e])}}}));const c=new Set;for(const e of a){c.add(e);const t=o.get(e);if(t)for(const e of t)c.add(e)}if(a.length>0){const e=r[0].split(" ");r[0]=e.filter((e=>!c.has(parseInt(e)))).join(" ")}const l=r.filter((e=>{if(!e.includes("rtpmap")&&!e.includes("rtcp-fb")&&!e.includes("fmtp"))return!0;for(const t of c)if(e.includes(t.toString()))return!1;return!0}));t[n]=l.join(s.CRLF)+s.CRLF;const d=t.join("");return new s(d)}mediaSections(){const e=s.splitSections(this.sdp);if(e.length<2)return[];const t=[];for(let n=1;n{if(/^a=rtpmap:/.test(e))for(const r of t){if(!e.includes(`${r.codecName}/${r.codecCapability.clockRate}`))continue;const t=/^a=rtpmap:([0-9]+)\s/.exec(e);let a=!1;if(void 0!==r.codecCapability.sdpFmtpLine){for(const e of i)if(e.startsWith(`a=fmtp:${t[1]} ${r.codecCapability.sdpFmtpLine}`)){a=!0;break}}else a=!0;if(a){n.set(r.codecName,t[1]);break}}}));const r=new Set(n.values()),a=i[0].split(" ").filter((e=>!r.has(e))),o=Array.from(n.values()).sort(((e,i)=>t.findIndex((t=>n.get(t.codecName)===e))-t.findIndex((e=>n.get(e.codecName)===i))));return a.splice(3,0,...o.values()),i[0]=a.join(" "),i.join(s.CRLF)+s.CRLF}highestPriorityVideoSendCodec(){const e=this.sdp,t=s.splitSections(e),n=s.findActiveCameraSection(t);if(-1===n)return;const i=s.splitLines(t[n]),r=i[0].split(" ");if(r.length<4)return;const a=r[3];let c,l,d;for(const e of i){const t=/^a=rtpmap:([0-9]+)\s/.exec(e);if(null===t||t.length<2||t[1]!==a)continue;const n=e.split(" ")[1].split("/");if(!(void 0===n||n.length<2)){c=n[0],l=n[1];for(const e of i)if(e.startsWith(`a=fmtp:${a}`)){const t=e.split(" ");if(void 0===t||t.length<2)return;d=t[1]}break}}return void 0!==c?new o.default(c,{clockRate:parseInt(l),mimeType:`video/${c}`,sdpFmtpLine:d}):void 0}getAudioPayloadTypes(){const e=new Map,t=this.sdp,n=s.splitSections(t);return e.set("opus",s.findAudioPayloadType("opus",n)),e.set("red",s.findAudioPayloadType("red",n)),e}static findAudioPayloadType(e,t){const n=new RegExp(`a=rtpmap:\\s*(\\d+)\\s+${e}\\/48000`);for(const e of t)if(/^m=audio/.test(e)){const t=n.exec(e);if(null!==t)return Number(t[1])}return 0}}t.default=s,s.CRLF="\r\n",s.rfc7587LowestBitrate=6e3,s.rfc7587HighestBitrate=51e4},4076:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.SDPCandidateType=void 0,function(e){e.Host="host",e.ServerReflexive="srflx",e.PeerReflexive="prflx",e.Relay="relay"}(n=t.SDPCandidateType||(t.SDPCandidateType={})),t.default=n},1944:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{}},2330:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(289);class r{constructor(e,t){this.codecName=e,this.codecCapability=t}equals(e){return void 0!==e&&this.codecName===e.codecName&&this.codecCapability.mimeType===e.codecCapability.mimeType&&this.codecCapability.clockRate===e.codecCapability.clockRate&&this.codecCapability.sdpFmtpLine===e.codecCapability.sdpFmtpLine}static vp8(){return new r("VP8",{clockRate:9e4,mimeType:"video/VP8"})}static h264ConstrainedBaselineProfile(){return new r("H264",{clockRate:9e4,mimeType:"video/H264",sdpFmtpLine:"level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f"})}static h264(){return r.h264ConstrainedBaselineProfile()}static fromSignaled(e){switch(e){case i.SdkVideoCodecCapability.VP8:return r.vp8();case i.SdkVideoCodecCapability.H264_CONSTRAINED_BASELINE_PROFILE:return r.h264ConstrainedBaselineProfile();default:return}}}t.default=r},3320:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(9591);class r{constructor(e){this.logger=e}compress(e,t){if(t.length>0){const e=Math.min(t.length,r.MAX_DICTIONARY_SIZE);t=t.slice(0,e)}const n={memLevel:r.Z_MEM_LEVEL,dictionary:t};return i.deflateRaw(e,n)}decompress(e,t){if(t.length>0){const e=Math.min(t.length,r.MAX_DICTIONARY_SIZE);t=t.slice(0,e)}const n={to:"string",dictionary:t,chunkSize:4096};let a="";try{a=i.inflateRaw(e,n)}catch(e){this.logger.error(`failed to decompress the string with error: [${e}]`)}return a}}t.default=r,r.Z_MEM_LEVEL=9,r.MAX_DICTIONARY_SIZE=31744},9678:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(3860),r=n(6850),a=n(9553),o=n(3013);t.default=class{constructor(e){this.logger=e,this.currentState=a.SessionStateControllerState.NotConnected,this.deferredAction=null,this.deferredWork=null}perform(e,t){const n=this.currentState;if(n===a.SessionStateControllerState.NotConnected&&e===i.SessionStateControllerAction.Connect)this.transition(a.SessionStateControllerState.Connecting,e);else if(n===a.SessionStateControllerState.Connecting&&e===i.SessionStateControllerAction.Fail)this.transition(a.SessionStateControllerState.Disconnecting,e);else if(n===a.SessionStateControllerState.Connecting&&e===i.SessionStateControllerAction.FinishConnecting)this.transition(a.SessionStateControllerState.Connected,e);else if(n===a.SessionStateControllerState.Connected&&e===i.SessionStateControllerAction.Disconnect)this.transition(a.SessionStateControllerState.Disconnecting,e);else if(n===a.SessionStateControllerState.Connected&&e===i.SessionStateControllerAction.Reconnect)this.transition(a.SessionStateControllerState.Connecting,e);else if(n===a.SessionStateControllerState.Connected&&e===i.SessionStateControllerAction.Fail)this.transition(a.SessionStateControllerState.Disconnecting,e);else if(n===a.SessionStateControllerState.Connected&&e===i.SessionStateControllerAction.Update)this.transition(a.SessionStateControllerState.Updating,e);else if(n===a.SessionStateControllerState.Updating&&e===i.SessionStateControllerAction.Fail)this.transition(a.SessionStateControllerState.Disconnecting,e);else if(n===a.SessionStateControllerState.Updating&&e===i.SessionStateControllerAction.FinishUpdating)this.transition(a.SessionStateControllerState.Connected,e);else{if(n!==a.SessionStateControllerState.Disconnecting||e!==i.SessionStateControllerAction.FinishDisconnecting)return this.canDefer(e)?(this.logger.info(`deferring transition from ${a.SessionStateControllerState[this.currentState]} with ${i.SessionStateControllerAction[e]}`),this.deferAction(e,t),o.SessionStateControllerTransitionResult.DeferredTransition):(this.logger.warn(`no transition found from ${a.SessionStateControllerState[this.currentState]} with ${i.SessionStateControllerAction[e]}`),o.SessionStateControllerTransitionResult.NoTransitionAvailable);this.transition(a.SessionStateControllerState.NotConnected,e)}try{t()}catch(t){return this.logger.error(`error during state ${a.SessionStateControllerState[this.currentState]} with action ${i.SessionStateControllerAction[e]}: ${t}`),this.logger.info(`rolling back transition to ${a.SessionStateControllerState[n]}`),this.currentState=n,o.SessionStateControllerTransitionResult.TransitionFailed}return this.performDeferredAction(),o.SessionStateControllerTransitionResult.Transitioned}state(){return this.currentState}transition(e,t){this.logger.info(`transitioning from ${a.SessionStateControllerState[this.currentState]} to ${a.SessionStateControllerState[e]} with ${i.SessionStateControllerAction[t]}`),this.currentState=e}deferPriority(e){switch(e){case i.SessionStateControllerAction.Disconnect:return r.SessionStateControllerDeferPriority.VeryHigh;case i.SessionStateControllerAction.Fail:return r.SessionStateControllerDeferPriority.High;case i.SessionStateControllerAction.Reconnect:return r.SessionStateControllerDeferPriority.Medium;case i.SessionStateControllerAction.Update:return r.SessionStateControllerDeferPriority.Low;default:return r.SessionStateControllerDeferPriority.DoNotDefer}}deferAction(e,t){null!==this.deferredAction&&this.deferPriority(this.deferredAction)>this.deferPriority(e)||(this.deferredAction=e,this.deferredWork=t)}canDefer(e){return this.deferPriority(e)!==r.SessionStateControllerDeferPriority.DoNotDefer&&(this.currentState===a.SessionStateControllerState.Connecting||this.currentState===a.SessionStateControllerState.Updating)}performDeferredAction(){if(!this.deferredAction)return;const e=this.deferredAction,t=this.deferredWork;this.deferredAction=null,this.deferredWork=null,this.logger.info(`performing deferred action ${i.SessionStateControllerAction[e]}`),this.perform(e,t)!==o.SessionStateControllerTransitionResult.Transitioned&&this.logger.info(`unable to perform deferred action ${i.SessionStateControllerAction[e]} in state ${a.SessionStateControllerState[this.currentState]}`)}}},3860:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.SessionStateControllerAction=void 0,function(e){e[e.Connect=0]="Connect",e[e.FinishConnecting=1]="FinishConnecting",e[e.Update=2]="Update",e[e.FinishUpdating=3]="FinishUpdating",e[e.Reconnect=4]="Reconnect",e[e.Disconnect=5]="Disconnect",e[e.Fail=6]="Fail",e[e.FinishDisconnecting=7]="FinishDisconnecting"}(n=t.SessionStateControllerAction||(t.SessionStateControllerAction={})),t.default=n},6850:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.SessionStateControllerDeferPriority=void 0,function(e){e[e.DoNotDefer=0]="DoNotDefer",e[e.Low=1]="Low",e[e.Medium=2]="Medium",e[e.High=3]="High",e[e.VeryHigh=4]="VeryHigh"}(n=t.SessionStateControllerDeferPriority||(t.SessionStateControllerDeferPriority={})),t.default=n},9553:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.SessionStateControllerState=void 0,function(e){e[e.NotConnected=0]="NotConnected",e[e.Connecting=1]="Connecting",e[e.Connected=2]="Connected",e[e.Updating=3]="Updating",e[e.Disconnecting=4]="Disconnecting"}(n=t.SessionStateControllerState||(t.SessionStateControllerState={})),t.default=n},3013:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.SessionStateControllerTransitionResult=void 0,function(e){e[e.Transitioned=0]="Transitioned",e[e.NoTransitionAvailable=1]="NoTransitionAvailable",e[e.DeferredTransition=2]="DeferredTransition",e[e.TransitionFailed=3]="TransitionFailed"}(n=t.SessionStateControllerTransitionResult||(t.SessionStateControllerTransitionResult={})),t.default=n},1208:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(543)),a=i(n(4929)),o=n(289),s=n(8690),c=i(n(4046)),l=i(n(7387)),d=n(7103),u=i(n(2902)),f=i(n(9416));class h{constructor(e,t){this.webSocket=e,this.logger=t,this.unloadHandler=null,this.closeEventHandler=e=>{this.deactivatePageUnloadHandler(),this.resetConnection(),this.sendEvent(new u.default(this,f.default.WebSocketClosed,null,e.code,e.reason)),this.serviceConnectionRequestQueue()},this.observerQueue=new Set,this.connectionRequestQueue=[],this.resetConnection(),this.logger.debug((()=>"signaling client init")),this.audioSessionId=this.generateNewAudioSessionId()}registerObserver(e){this.logger.debug((()=>"registering signaling client observer")),this.observerQueue.add(e)}removeObserver(e){this.logger.debug((()=>"removing signaling client observer")),this.observerQueue.delete(e)}openConnection(e){this.logger.info("adding connection request to queue: "+e.url()),this.connectionRequestQueue.push(e),this.closeConnection()}pingPong(e){this.logger.debug((()=>"sending ping"));const t=o.SdkSignalFrame.create();return t.type=o.SdkSignalFrame.Type.PING_PONG,t.pingPong=e,this.sendMessage(t),t.timestampMs}join(e){this.logger.info("sending join");const t=o.SdkJoinFrame.create();t.protocolVersion=2,t.flags=o.SdkJoinFlags.HAS_STREAM_UPDATE;const n=new r.default,i={platformName:n.name(),platformVersion:n.version(),clientSource:c.default.sdkName,chimeSdkVersion:c.default.sdkVersion,clientUtcOffset:s.getFormattedOffset((new Date).getTimezoneOffset())};if(e.applicationMetadata){const{appName:t,appVersion:n}=e.applicationMetadata;i.appName=t,i.appVersion=n}t.clientDetails=o.SdkClientDetails.create(i),t.audioSessionId=this.audioSessionId,t.wantsCompressedSdp=h.CLIENT_SUPPORTS_COMPRESSION,t.disablePeriodicKeyframeRequestOnContentSender=e.disablePeriodicKeyframeRequestOnContentSender,t.serverSideNetworkAdaption=d.convertServerSideNetworkAdaptionEnumToSignaled(e.serverSideNetworkAdaption),t.supportedServerSideNetworkAdaptions=e.supportedServerSideNetworkAdaptions.map(d.convertServerSideNetworkAdaptionEnumToSignaled);const a=o.SdkSignalFrame.create();a.type=o.SdkSignalFrame.Type.JOIN,a.join=t,this.sendMessage(a)}subscribe(e){const t=o.SdkSubscribeFrame.create();if(t.sendStreams=[],t.sdpOffer=e.sdpOffer,e.connectionTypeHasVideo&&(t.receiveStreamIds=e.receiveStreamIds),e.audioHost&&(t.audioCheckin=e.audioCheckin,t.audioHost=e.audioHost,t.audioMuted=e.audioMuted,!e.audioCheckin)){const n=o.SdkStreamDescriptor.create();n.mediaType=o.SdkStreamMediaType.AUDIO,n.trackLabel="AmazonChimeExpressAudio",n.attendeeId=e.attendeeId,n.streamId=1,n.groupId=1,n.framerate=15,n.maxBitrateKbps=600,n.avgBitrateBps=4e5,t.sendStreams.push(n)}if(t.compressedSdpOffer=e.compressedSdpOffer,t.duplex=o.SdkStreamServiceType.RX,e.localVideoEnabled){t.duplex=o.SdkStreamServiceType.DUPLEX;for(let n=0;n0&&(t.videoSubscriptionConfiguration=e.videoSubscriptionConfiguration.map(this.convertSignalingClientVideoSubscriptionConfiguration));const n=o.SdkSignalFrame.create();n.type=o.SdkSignalFrame.Type.SUBSCRIBE,n.sub=t,this.sendMessage(n)}remoteVideoUpdate(e,t){const n=o.SdkRemoteVideoUpdateFrame.create();n.addedOrUpdatedVideoSubscriptions=e.map(this.convertSignalingClientVideoSubscriptionConfiguration),n.removedVideoSubscriptionMids=t;const i=o.SdkSignalFrame.create();i.type=o.SdkSignalFrame.Type.REMOTE_VIDEO_UPDATE,i.remoteVideoUpdate=n,this.sendMessage(i)}convertSignalingClientVideoSubscriptionConfiguration(e){const t=new o.SdkVideoSubscriptionConfiguration;return t.mid=e.mid,t.attendeeId=e.attendeeId,t.streamId=e.streamId,t.groupId=e.groupId,t.priority=e.priority,t.targetBitrateKbps=e.targetBitrateKbps,t}leave(){const e=o.SdkSignalFrame.create();e.type=o.SdkSignalFrame.Type.LEAVE,e.leave=o.SdkLeaveFrame.create(),this.sendMessage(e),this.logger.debug((()=>"sent leave"))}sendClientMetrics(e){const t=o.SdkSignalFrame.create();t.type=o.SdkSignalFrame.Type.CLIENT_METRIC,t.clientMetric=e,this.sendMessage(t)}sendDataMessage(e){const t=o.SdkSignalFrame.create();t.type=o.SdkSignalFrame.Type.DATA_MESSAGE,t.dataMessage=e,this.sendMessage(t)}closeConnection(){var e,t;if(this.webSocket.readyState()!==l.default.None&&this.webSocket.readyState()!==l.default.Closed){this.isClosing=!0,this.sendEvent(new u.default(this,f.default.WebSocketClosing,null));const n=new a.default(h.CLOSE_EVENT_TIMEOUT_MS),i=e=>{var t,r;null===(r=(t=this.webSocket).removeEventListener)||void 0===r||r.call(t,"close",i),n.stop(),this.closeEventHandler(e)};null===(t=(e=this.webSocket).removeEventListener)||void 0===t||t.call(e,"close",this.closeEventHandler),this.webSocket.addEventListener("close",i),n.start((()=>{i(new CloseEvent("close",{wasClean:!1,code:1005,reason:"",bubbles:!1}))})),this.webSocket.close(),this.deactivatePageUnloadHandler()}else this.logger.info("no existing signaling client connection needs closing"),this.serviceConnectionRequestQueue()}ready(){return this.webSocket.readyState()===l.default.Open&&!this.isClosing&&this.wasOpened}mute(e){const t=o.SdkSignalFrame.create();t.type=o.SdkSignalFrame.Type.AUDIO_CONTROL;const n=o.SdkAudioControlFrame.create();n.muted=e,t.audioControl=n,this.sendMessage(t)}pause(e){const t=o.SdkSignalFrame.create();t.type=o.SdkSignalFrame.Type.PAUSE,t.pause=o.SdkPauseResumeFrame.create(),t.pause.streamIds=e,this.sendMessage(t)}resume(e){const t=o.SdkSignalFrame.create();t.type=o.SdkSignalFrame.Type.RESUME,t.pause=o.SdkPauseResumeFrame.create(),t.pause.streamIds=e,this.sendMessage(t)}resetConnection(){this.webSocket.destroy(),this.wasOpened=!1}sendMessage(e){e.timestampMs=Date.now(),this.logger.debug((()=>`sending: ${JSON.stringify(e)}`));const t=this.prependWithFrameTypeRTC(o.SdkSignalFrame.encode(e).finish());if(this.ready()){if(!this.webSocket.send(t))return void this.sendEvent(new u.default(this,f.default.WebSocketSendMessageFailure,null));this.sendEvent(new u.default(this,f.default.WebSocketSentMessage,null))}else this.sendEvent(new u.default(this,f.default.WebSocketSkippedMessage,null))}receiveMessage(e){let t;try{t=o.SdkSignalFrame.decode(e)}catch(t){return this.logger.info(`failed to decode: ${e}`),void this.sendEvent(new u.default(this,f.default.ProtocolDecodeFailure,null))}this.logger.debug((()=>`received: ${JSON.stringify(t)}`)),this.webSocket.readyState()===l.default.Open?this.sendEvent(new u.default(this,f.default.ReceivedSignalFrame,t)):this.logger.info(`skipping notification of message since WebSocket is not open: ${JSON.stringify(t)}`)}stripFrameTypeRTC(e){const t=e[0];return t!==h.FRAME_TYPE_RTC&&2!==t&&this.logger.warn(`expected FrameTypeRTC for message but got ${t}`),e.slice(1)}prependWithFrameTypeRTC(e){const t=new Uint8Array(e.length+1);return t[0]=h.FRAME_TYPE_RTC,t.set(e,1),t}serviceConnectionRequestQueue(){if(0===this.connectionRequestQueue.length)return void this.logger.info("no connection requests to service");const e=this.connectionRequestQueue.shift();this.logger.info(`opening connection to ${e.url()}`),this.isClosing=!1,this.webSocket.create(e.url(),e.protocols()),this.setUpEventListeners(),this.sendEvent(new u.default(this,f.default.WebSocketConnecting,null))}sendEvent(e){switch(e.type){case f.default.WebSocketMessage:case f.default.ReceivedSignalFrame:case f.default.WebSocketSentMessage:this.logger.debug((()=>`notifying event: ${f.default[e.type]}`));break;case f.default.WebSocketSkippedMessage:this.logger.debug((()=>`notifying event: ${f.default[e.type]}, websocket state=${l.default[this.webSocket.readyState()]}`));break;case f.default.WebSocketClosed:this.logger.info(`notifying event: ${f.default[e.type]}, \n code: ${e.closeCode} reason: ${e.closeReason}`);break;default:this.logger.info(`notifying event: ${f.default[e.type]}`)}for(const t of this.observerQueue)t.handleSignalingClientEvent(e)}setUpEventListeners(){this.webSocket.addEventListener("open",(()=>{this.activatePageUnloadHandler(),this.wasOpened=!0,this.sendEvent(new u.default(this,f.default.WebSocketOpen,null))})),this.webSocket.addEventListener("message",(e=>{this.sendEvent(new u.default(this,f.default.WebSocketMessage,null)),this.receiveMessage(this.stripFrameTypeRTC(new Uint8Array(e.data)))})),this.webSocket.addEventListener("close",this.closeEventHandler),this.webSocket.addEventListener("error",(()=>{!this.isClosing||this.wasOpened?this.wasOpened?(this.logger.error("received error while connected"),this.sendEvent(new u.default(this,f.default.WebSocketError,null))):(this.logger.error("failed to connect"),this.sendEvent(new u.default(this,f.default.WebSocketFailed,null))):this.logger.info("ignoring error closing signaling while connecting")}))}activatePageUnloadHandler(){this.unloadHandler=()=>{this.leave()};const e=n.g;e.window&&e.window.addEventListener&&window.addEventListener("unload",this.unloadHandler)}deactivatePageUnloadHandler(){const e=n.g;e.window&&e.window.removeEventListener&&window.removeEventListener("unload",this.unloadHandler),this.unloadHandler=null}generateNewAudioSessionId(){const e=new Uint32Array(1);return window.crypto.getRandomValues(e)[0]}promoteToPrimaryMeeting(e){const t=o.SdkMeetingSessionCredentials.create();t.attendeeId=e.attendeeId,t.externalUserId=e.externalUserId,t.joinToken=e.joinToken;const n=o.SdkPrimaryMeetingJoinFrame.create();n.credentials=t;const i=o.SdkSignalFrame.create();i.type=o.SdkSignalFrame.Type.PRIMARY_MEETING_JOIN,i.primaryMeetingJoin=n,this.sendMessage(i)}demoteFromPrimaryMeeting(){const e=o.SdkPrimaryMeetingLeaveFrame.create(),t=o.SdkSignalFrame.create();t.type=o.SdkSignalFrame.Type.PRIMARY_MEETING_LEAVE,t.primaryMeetingLeave=e,this.sendMessage(t)}}t.default=h,h.FRAME_TYPE_RTC=5,h.CLOSE_EVENT_TIMEOUT_MS=2e3,h.CLIENT_SUPPORTS_COMPRESSION=!0},7103:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.convertServerSideNetworkAdaptionEnumToSignaled=t.convertServerSideNetworkAdaptionEnumFromSignaled=t.serverSideNetworkAdaptionIsNoneOrDefault=t.ServerSideNetworkAdaption=void 0;const i=n(289);var r;!function(e){e[e.Default=0]="Default",e[e.None=1]="None",e[e.BandwidthProbing=2]="BandwidthProbing",e[e.BandwidthProbingAndRemoteVideoQualityAdaption=3]="BandwidthProbingAndRemoteVideoQualityAdaption"}(r=t.ServerSideNetworkAdaption||(t.ServerSideNetworkAdaption={})),t.default=r,t.serverSideNetworkAdaptionIsNoneOrDefault=function(e){return e===r.None||e===r.Default},t.convertServerSideNetworkAdaptionEnumFromSignaled=function(e){switch(e){case i.SdkServerSideNetworkAdaption.DEFAULT:return r.Default;case i.SdkServerSideNetworkAdaption.NONE:return r.None;case i.SdkServerSideNetworkAdaption.BANDWIDTH_PROBING:return r.BandwidthProbing;case i.SdkServerSideNetworkAdaption.BANDWIDTH_PROBING_AND_VIDEO_QUALITY_ADAPTION:return r.BandwidthProbingAndRemoteVideoQualityAdaption}},t.convertServerSideNetworkAdaptionEnumToSignaled=function(e){switch(e){case r.Default:return i.SdkServerSideNetworkAdaption.DEFAULT;case r.None:return i.SdkServerSideNetworkAdaption.NONE;case r.BandwidthProbing:return i.SdkServerSideNetworkAdaption.BANDWIDTH_PROBING;case r.BandwidthProbingAndRemoteVideoQualityAdaption:return i.SdkServerSideNetworkAdaption.BANDWIDTH_PROBING_AND_VIDEO_QUALITY_ADAPTION}}},3920:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e,t){this.signalingURL=e,this.joinToken=t}url(){return this.signalingURL+"?X-Chime-Control-Protocol-Version=3&X-Amzn-Chime-Send-Close-On-Error=1"}protocols(){return["_aws_wt_session",this.joinToken]}}},2902:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(9416));t.default=class{constructor(e,t,n,i,r){this.client=e,this.type=t,this.message=n,this.closeCode=i,this.closeReason=r,this.timestampMs=Date.now()}isConnectionTerminated(){switch(this.type){case r.default.WebSocketFailed:case r.default.WebSocketError:case r.default.WebSocketClosing:case r.default.WebSocketClosed:return!0;default:return!1}}}},9416:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.SignalingClientEventType=void 0,function(e){e[e.WebSocketConnecting=0]="WebSocketConnecting",e[e.WebSocketOpen=1]="WebSocketOpen",e[e.WebSocketError=2]="WebSocketError",e[e.WebSocketClosing=3]="WebSocketClosing",e[e.WebSocketClosed=4]="WebSocketClosed",e[e.WebSocketFailed=5]="WebSocketFailed",e[e.WebSocketMessage=6]="WebSocketMessage",e[e.WebSocketSendMessageFailure=7]="WebSocketSendMessageFailure",e[e.WebSocketSentMessage=8]="WebSocketSentMessage",e[e.ProtocolDecodeFailure=9]="ProtocolDecodeFailure",e[e.ReceivedSignalFrame=10]="ReceivedSignalFrame",e[e.WebSocketSkippedMessage=11]="WebSocketSkippedMessage"}(n=t.SignalingClientEventType||(t.SignalingClientEventType={})),t.default=n},2168:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(7103));t.default=class{constructor(e){this.applicationMetadata=e,this.serverSideNetworkAdaption=r.default.Default,this.supportedServerSideNetworkAdaptions=[],this.disablePeriodicKeyframeRequestOnContentSender=!1}}},6729:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e,t,n,i,r,a,o,s,c,l){this.attendeeId=e,this.sdpOffer=t,this.audioHost=n,this.audioMuted=i,this.audioCheckin=r,this.receiveStreamIds=a,this.localVideoEnabled=o,this.videoStreamDescriptions=s,this.connectionTypeHasVideo=c,this.compressedSdpOffer=l,this.videoSubscriptionConfiguration=[]}}},9101:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{equals(e){return void 0!==e&&this.mid===e.mid&&this.attendeeId===e.attendeeId&&this.streamId===e.streamId&&this.groupId===e.groupId&&this.priority===e.priority&&this.targetBitrateKbps===e.targetBitrateKbps}}},289:(e,t,n)=>{"use strict";var i,r,a=n(2100),o=a.Reader,s=a.Writer,c=a.util,l=a.roots.default||(a.roots.default={});l.SdkSignalFrame=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.timestampMs=e.uint64();break;case 2:i.type=e.int32();break;case 3:i.error=l.SdkErrorFrame.decode(e,e.uint32());break;case 4:i.join=l.SdkJoinFrame.decode(e,e.uint32());break;case 5:i.joinack=l.SdkJoinAckFrame.decode(e,e.uint32());break;case 6:i.sub=l.SdkSubscribeFrame.decode(e,e.uint32());break;case 7:i.suback=l.SdkSubscribeAckFrame.decode(e,e.uint32());break;case 8:i.index=l.SdkIndexFrame.decode(e,e.uint32());break;case 10:i.pause=l.SdkPauseResumeFrame.decode(e,e.uint32());break;case 11:i.leave=l.SdkLeaveFrame.decode(e,e.uint32());break;case 12:i.leaveAck=l.SdkLeaveAckFrame.decode(e,e.uint32());break;case 14:i.bitrates=l.SdkBitrateFrame.decode(e,e.uint32());break;case 17:i.audioControl=l.SdkAudioControlFrame.decode(e,e.uint32());break;case 18:i.audioMetadata=l.SdkAudioMetadataFrame.decode(e,e.uint32());break;case 19:i.audioStreamIdInfo=l.SdkAudioStreamIdInfoFrame.decode(e,e.uint32());break;case 20:i.pingPong=l.SdkPingPongFrame.decode(e,e.uint32());break;case 21:i.audioStatus=l.SdkAudioStatusFrame.decode(e,e.uint32());break;case 22:i.clientMetric=l.SdkClientMetricFrame.decode(e,e.uint32());break;case 23:i.dataMessage=l.SdkDataMessageFrame.decode(e,e.uint32());break;case 25:i.remoteVideoUpdate=l.SdkRemoteVideoUpdateFrame.decode(e,e.uint32());break;case 26:i.primaryMeetingJoin=l.SdkPrimaryMeetingJoinFrame.decode(e,e.uint32());break;case 27:i.primaryMeetingJoinAck=l.SdkPrimaryMeetingJoinAckFrame.decode(e,e.uint32());break;case 28:i.primaryMeetingLeave=l.SdkPrimaryMeetingLeaveFrame.decode(e,e.uint32());break;case 35:i.notification=l.SdkNotificationFrame.decode(e,e.uint32());break;default:e.skipType(7&r)}}if(!i.hasOwnProperty("timestampMs"))throw c.ProtocolError("missing required 'timestampMs'",{instance:i});if(!i.hasOwnProperty("type"))throw c.ProtocolError("missing required 'type'",{instance:i});return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(!(c.isInteger(e.timestampMs)||e.timestampMs&&c.isInteger(e.timestampMs.low)&&c.isInteger(e.timestampMs.high)))return"timestampMs: integer|Long expected";switch(e.type){default:return"type: enum value expected";case 1:case 2:case 3:case 4:case 5:case 7:case 8:case 9:case 10:case 13:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 24:case 25:case 26:case 27:case 34:}var t;return null!=e.error&&e.hasOwnProperty("error")&&(t=l.SdkErrorFrame.verify(e.error))?"error."+t:null!=e.join&&e.hasOwnProperty("join")&&(t=l.SdkJoinFrame.verify(e.join))?"join."+t:null!=e.joinack&&e.hasOwnProperty("joinack")&&(t=l.SdkJoinAckFrame.verify(e.joinack))?"joinack."+t:null!=e.sub&&e.hasOwnProperty("sub")&&(t=l.SdkSubscribeFrame.verify(e.sub))?"sub."+t:null!=e.suback&&e.hasOwnProperty("suback")&&(t=l.SdkSubscribeAckFrame.verify(e.suback))?"suback."+t:null!=e.index&&e.hasOwnProperty("index")&&(t=l.SdkIndexFrame.verify(e.index))?"index."+t:null!=e.pause&&e.hasOwnProperty("pause")&&(t=l.SdkPauseResumeFrame.verify(e.pause))?"pause."+t:null!=e.leave&&e.hasOwnProperty("leave")&&(t=l.SdkLeaveFrame.verify(e.leave))?"leave."+t:null!=e.leaveAck&&e.hasOwnProperty("leaveAck")&&(t=l.SdkLeaveAckFrame.verify(e.leaveAck))?"leaveAck."+t:null!=e.bitrates&&e.hasOwnProperty("bitrates")&&(t=l.SdkBitrateFrame.verify(e.bitrates))?"bitrates."+t:null!=e.audioControl&&e.hasOwnProperty("audioControl")&&(t=l.SdkAudioControlFrame.verify(e.audioControl))?"audioControl."+t:null!=e.audioMetadata&&e.hasOwnProperty("audioMetadata")&&(t=l.SdkAudioMetadataFrame.verify(e.audioMetadata))?"audioMetadata."+t:null!=e.audioStreamIdInfo&&e.hasOwnProperty("audioStreamIdInfo")&&(t=l.SdkAudioStreamIdInfoFrame.verify(e.audioStreamIdInfo))?"audioStreamIdInfo."+t:null!=e.pingPong&&e.hasOwnProperty("pingPong")&&(t=l.SdkPingPongFrame.verify(e.pingPong))?"pingPong."+t:null!=e.audioStatus&&e.hasOwnProperty("audioStatus")&&(t=l.SdkAudioStatusFrame.verify(e.audioStatus))?"audioStatus."+t:null!=e.clientMetric&&e.hasOwnProperty("clientMetric")&&(t=l.SdkClientMetricFrame.verify(e.clientMetric))?"clientMetric."+t:null!=e.dataMessage&&e.hasOwnProperty("dataMessage")&&(t=l.SdkDataMessageFrame.verify(e.dataMessage))?"dataMessage."+t:null!=e.remoteVideoUpdate&&e.hasOwnProperty("remoteVideoUpdate")&&(t=l.SdkRemoteVideoUpdateFrame.verify(e.remoteVideoUpdate))?"remoteVideoUpdate."+t:null!=e.primaryMeetingJoin&&e.hasOwnProperty("primaryMeetingJoin")&&(t=l.SdkPrimaryMeetingJoinFrame.verify(e.primaryMeetingJoin))?"primaryMeetingJoin."+t:null!=e.primaryMeetingJoinAck&&e.hasOwnProperty("primaryMeetingJoinAck")&&(t=l.SdkPrimaryMeetingJoinAckFrame.verify(e.primaryMeetingJoinAck))?"primaryMeetingJoinAck."+t:null!=e.primaryMeetingLeave&&e.hasOwnProperty("primaryMeetingLeave")&&(t=l.SdkPrimaryMeetingLeaveFrame.verify(e.primaryMeetingLeave))?"primaryMeetingLeave."+t:null!=e.notification&&e.hasOwnProperty("notification")&&(t=l.SdkNotificationFrame.verify(e.notification))?"notification."+t:null},e.fromObject=function(e){if(e instanceof l.SdkSignalFrame)return e;var t=new l.SdkSignalFrame;switch(null!=e.timestampMs&&(c.Long?(t.timestampMs=c.Long.fromValue(e.timestampMs)).unsigned=!0:"string"==typeof e.timestampMs?t.timestampMs=parseInt(e.timestampMs,10):"number"==typeof e.timestampMs?t.timestampMs=e.timestampMs:"object"==typeof e.timestampMs&&(t.timestampMs=new c.LongBits(e.timestampMs.low>>>0,e.timestampMs.high>>>0).toNumber(!0))),e.type){case"JOIN":case 1:t.type=1;break;case"JOIN_ACK":case 2:t.type=2;break;case"SUBSCRIBE":case 3:t.type=3;break;case"SUBSCRIBE_ACK":case 4:t.type=4;break;case"INDEX":case 5:t.type=5;break;case"PAUSE":case 7:t.type=7;break;case"RESUME":case 8:t.type=8;break;case"LEAVE":case 9:t.type=9;break;case"LEAVE_ACK":case 10:t.type=10;break;case"BITRATES":case 13:t.type=13;break;case"AUDIO_CONTROL":case 16:t.type=16;break;case"AUDIO_METADATA":case 17:t.type=17;break;case"AUDIO_STREAM_ID_INFO":case 18:t.type=18;break;case"PING_PONG":case 19:t.type=19;break;case"AUDIO_STATUS":case 20:t.type=20;break;case"CLIENT_METRIC":case 21:t.type=21;break;case"DATA_MESSAGE":case 22:t.type=22;break;case"REMOTE_VIDEO_UPDATE":case 24:t.type=24;break;case"PRIMARY_MEETING_JOIN":case 25:t.type=25;break;case"PRIMARY_MEETING_JOIN_ACK":case 26:t.type=26;break;case"PRIMARY_MEETING_LEAVE":case 27:t.type=27;break;case"NOTIFICATION":case 34:t.type=34}if(null!=e.error){if("object"!=typeof e.error)throw TypeError(".SdkSignalFrame.error: object expected");t.error=l.SdkErrorFrame.fromObject(e.error)}if(null!=e.join){if("object"!=typeof e.join)throw TypeError(".SdkSignalFrame.join: object expected");t.join=l.SdkJoinFrame.fromObject(e.join)}if(null!=e.joinack){if("object"!=typeof e.joinack)throw TypeError(".SdkSignalFrame.joinack: object expected");t.joinack=l.SdkJoinAckFrame.fromObject(e.joinack)}if(null!=e.sub){if("object"!=typeof e.sub)throw TypeError(".SdkSignalFrame.sub: object expected");t.sub=l.SdkSubscribeFrame.fromObject(e.sub)}if(null!=e.suback){if("object"!=typeof e.suback)throw TypeError(".SdkSignalFrame.suback: object expected");t.suback=l.SdkSubscribeAckFrame.fromObject(e.suback)}if(null!=e.index){if("object"!=typeof e.index)throw TypeError(".SdkSignalFrame.index: object expected");t.index=l.SdkIndexFrame.fromObject(e.index)}if(null!=e.pause){if("object"!=typeof e.pause)throw TypeError(".SdkSignalFrame.pause: object expected");t.pause=l.SdkPauseResumeFrame.fromObject(e.pause)}if(null!=e.leave){if("object"!=typeof e.leave)throw TypeError(".SdkSignalFrame.leave: object expected");t.leave=l.SdkLeaveFrame.fromObject(e.leave)}if(null!=e.leaveAck){if("object"!=typeof e.leaveAck)throw TypeError(".SdkSignalFrame.leaveAck: object expected");t.leaveAck=l.SdkLeaveAckFrame.fromObject(e.leaveAck)}if(null!=e.bitrates){if("object"!=typeof e.bitrates)throw TypeError(".SdkSignalFrame.bitrates: object expected");t.bitrates=l.SdkBitrateFrame.fromObject(e.bitrates)}if(null!=e.audioControl){if("object"!=typeof e.audioControl)throw TypeError(".SdkSignalFrame.audioControl: object expected");t.audioControl=l.SdkAudioControlFrame.fromObject(e.audioControl)}if(null!=e.audioMetadata){if("object"!=typeof e.audioMetadata)throw TypeError(".SdkSignalFrame.audioMetadata: object expected");t.audioMetadata=l.SdkAudioMetadataFrame.fromObject(e.audioMetadata)}if(null!=e.audioStreamIdInfo){if("object"!=typeof e.audioStreamIdInfo)throw TypeError(".SdkSignalFrame.audioStreamIdInfo: object expected");t.audioStreamIdInfo=l.SdkAudioStreamIdInfoFrame.fromObject(e.audioStreamIdInfo)}if(null!=e.pingPong){if("object"!=typeof e.pingPong)throw TypeError(".SdkSignalFrame.pingPong: object expected");t.pingPong=l.SdkPingPongFrame.fromObject(e.pingPong)}if(null!=e.audioStatus){if("object"!=typeof e.audioStatus)throw TypeError(".SdkSignalFrame.audioStatus: object expected");t.audioStatus=l.SdkAudioStatusFrame.fromObject(e.audioStatus)}if(null!=e.clientMetric){if("object"!=typeof e.clientMetric)throw TypeError(".SdkSignalFrame.clientMetric: object expected");t.clientMetric=l.SdkClientMetricFrame.fromObject(e.clientMetric)}if(null!=e.dataMessage){if("object"!=typeof e.dataMessage)throw TypeError(".SdkSignalFrame.dataMessage: object expected");t.dataMessage=l.SdkDataMessageFrame.fromObject(e.dataMessage)}if(null!=e.remoteVideoUpdate){if("object"!=typeof e.remoteVideoUpdate)throw TypeError(".SdkSignalFrame.remoteVideoUpdate: object expected");t.remoteVideoUpdate=l.SdkRemoteVideoUpdateFrame.fromObject(e.remoteVideoUpdate)}if(null!=e.primaryMeetingJoin){if("object"!=typeof e.primaryMeetingJoin)throw TypeError(".SdkSignalFrame.primaryMeetingJoin: object expected");t.primaryMeetingJoin=l.SdkPrimaryMeetingJoinFrame.fromObject(e.primaryMeetingJoin)}if(null!=e.primaryMeetingJoinAck){if("object"!=typeof e.primaryMeetingJoinAck)throw TypeError(".SdkSignalFrame.primaryMeetingJoinAck: object expected");t.primaryMeetingJoinAck=l.SdkPrimaryMeetingJoinAckFrame.fromObject(e.primaryMeetingJoinAck)}if(null!=e.primaryMeetingLeave){if("object"!=typeof e.primaryMeetingLeave)throw TypeError(".SdkSignalFrame.primaryMeetingLeave: object expected");t.primaryMeetingLeave=l.SdkPrimaryMeetingLeaveFrame.fromObject(e.primaryMeetingLeave)}if(null!=e.notification){if("object"!=typeof e.notification)throw TypeError(".SdkSignalFrame.notification: object expected");t.notification=l.SdkNotificationFrame.fromObject(e.notification)}return t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(c.Long){var i=new c.Long(0,0,!0);n.timestampMs=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.timestampMs=t.longs===String?"0":0;n.type=t.enums===String?"JOIN":1,n.error=null,n.join=null,n.joinack=null,n.sub=null,n.suback=null,n.index=null,n.pause=null,n.leave=null,n.leaveAck=null,n.bitrates=null,n.audioControl=null,n.audioMetadata=null,n.audioStreamIdInfo=null,n.pingPong=null,n.audioStatus=null,n.clientMetric=null,n.dataMessage=null,n.remoteVideoUpdate=null,n.primaryMeetingJoin=null,n.primaryMeetingJoinAck=null,n.primaryMeetingLeave=null,n.notification=null}return null!=e.timestampMs&&e.hasOwnProperty("timestampMs")&&("number"==typeof e.timestampMs?n.timestampMs=t.longs===String?String(e.timestampMs):e.timestampMs:n.timestampMs=t.longs===String?c.Long.prototype.toString.call(e.timestampMs):t.longs===Number?new c.LongBits(e.timestampMs.low>>>0,e.timestampMs.high>>>0).toNumber(!0):e.timestampMs),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?l.SdkSignalFrame.Type[e.type]:e.type),null!=e.error&&e.hasOwnProperty("error")&&(n.error=l.SdkErrorFrame.toObject(e.error,t)),null!=e.join&&e.hasOwnProperty("join")&&(n.join=l.SdkJoinFrame.toObject(e.join,t)),null!=e.joinack&&e.hasOwnProperty("joinack")&&(n.joinack=l.SdkJoinAckFrame.toObject(e.joinack,t)),null!=e.sub&&e.hasOwnProperty("sub")&&(n.sub=l.SdkSubscribeFrame.toObject(e.sub,t)),null!=e.suback&&e.hasOwnProperty("suback")&&(n.suback=l.SdkSubscribeAckFrame.toObject(e.suback,t)),null!=e.index&&e.hasOwnProperty("index")&&(n.index=l.SdkIndexFrame.toObject(e.index,t)),null!=e.pause&&e.hasOwnProperty("pause")&&(n.pause=l.SdkPauseResumeFrame.toObject(e.pause,t)),null!=e.leave&&e.hasOwnProperty("leave")&&(n.leave=l.SdkLeaveFrame.toObject(e.leave,t)),null!=e.leaveAck&&e.hasOwnProperty("leaveAck")&&(n.leaveAck=l.SdkLeaveAckFrame.toObject(e.leaveAck,t)),null!=e.bitrates&&e.hasOwnProperty("bitrates")&&(n.bitrates=l.SdkBitrateFrame.toObject(e.bitrates,t)),null!=e.audioControl&&e.hasOwnProperty("audioControl")&&(n.audioControl=l.SdkAudioControlFrame.toObject(e.audioControl,t)),null!=e.audioMetadata&&e.hasOwnProperty("audioMetadata")&&(n.audioMetadata=l.SdkAudioMetadataFrame.toObject(e.audioMetadata,t)),null!=e.audioStreamIdInfo&&e.hasOwnProperty("audioStreamIdInfo")&&(n.audioStreamIdInfo=l.SdkAudioStreamIdInfoFrame.toObject(e.audioStreamIdInfo,t)),null!=e.pingPong&&e.hasOwnProperty("pingPong")&&(n.pingPong=l.SdkPingPongFrame.toObject(e.pingPong,t)),null!=e.audioStatus&&e.hasOwnProperty("audioStatus")&&(n.audioStatus=l.SdkAudioStatusFrame.toObject(e.audioStatus,t)),null!=e.clientMetric&&e.hasOwnProperty("clientMetric")&&(n.clientMetric=l.SdkClientMetricFrame.toObject(e.clientMetric,t)),null!=e.dataMessage&&e.hasOwnProperty("dataMessage")&&(n.dataMessage=l.SdkDataMessageFrame.toObject(e.dataMessage,t)),null!=e.remoteVideoUpdate&&e.hasOwnProperty("remoteVideoUpdate")&&(n.remoteVideoUpdate=l.SdkRemoteVideoUpdateFrame.toObject(e.remoteVideoUpdate,t)),null!=e.primaryMeetingJoin&&e.hasOwnProperty("primaryMeetingJoin")&&(n.primaryMeetingJoin=l.SdkPrimaryMeetingJoinFrame.toObject(e.primaryMeetingJoin,t)),null!=e.primaryMeetingJoinAck&&e.hasOwnProperty("primaryMeetingJoinAck")&&(n.primaryMeetingJoinAck=l.SdkPrimaryMeetingJoinAckFrame.toObject(e.primaryMeetingJoinAck,t)),null!=e.primaryMeetingLeave&&e.hasOwnProperty("primaryMeetingLeave")&&(n.primaryMeetingLeave=l.SdkPrimaryMeetingLeaveFrame.toObject(e.primaryMeetingLeave,t)),null!=e.notification&&e.hasOwnProperty("notification")&&(n.notification=l.SdkNotificationFrame.toObject(e.notification,t)),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e.Type=(t={},(n=Object.create(t))[t[1]="JOIN"]=1,n[t[2]="JOIN_ACK"]=2,n[t[3]="SUBSCRIBE"]=3,n[t[4]="SUBSCRIBE_ACK"]=4,n[t[5]="INDEX"]=5,n[t[7]="PAUSE"]=7,n[t[8]="RESUME"]=8,n[t[9]="LEAVE"]=9,n[t[10]="LEAVE_ACK"]=10,n[t[13]="BITRATES"]=13,n[t[16]="AUDIO_CONTROL"]=16,n[t[17]="AUDIO_METADATA"]=17,n[t[18]="AUDIO_STREAM_ID_INFO"]=18,n[t[19]="PING_PONG"]=19,n[t[20]="AUDIO_STATUS"]=20,n[t[21]="CLIENT_METRIC"]=21,n[t[22]="DATA_MESSAGE"]=22,n[t[24]="REMOTE_VIDEO_UPDATE"]=24,n[t[25]="PRIMARY_MEETING_JOIN"]=25,n[t[26]="PRIMARY_MEETING_JOIN_ACK"]=26,n[t[27]="PRIMARY_MEETING_LEAVE"]=27,n[t[34]="NOTIFICATION"]=34,n),e}(),l.SdkErrorFrame=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.status=e.uint32();break;case 2:i.description=e.string();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.status&&e.hasOwnProperty("status")&&!c.isInteger(e.status)?"status: integer expected":null!=e.description&&e.hasOwnProperty("description")&&!c.isString(e.description)?"description: string expected":null},e.fromObject=function(e){if(e instanceof l.SdkErrorFrame)return e;var t=new l.SdkErrorFrame;return null!=e.status&&(t.status=e.status>>>0),null!=e.description&&(t.description=String(e.description)),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.status=0,n.description=""),null!=e.status&&e.hasOwnProperty("status")&&(n.status=e.status),null!=e.description&&e.hasOwnProperty("description")&&(n.description=e.description),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkJoinFlags=(i={},(r=Object.create(i))[i[2]="HAS_STREAM_UPDATE"]=2,r[i[16]="COMPLETE_VIDEO_SOURCES_LIST"]=16,r[i[32]="EXCLUDE_SELF_CONTENT_IN_INDEX"]=32,r),l.SdkClientDetails=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.appName=e.string();break;case 2:i.appVersion=e.string();break;case 3:i.deviceModel=e.string();break;case 4:i.deviceMake=e.string();break;case 5:i.platformName=e.string();break;case 6:i.platformVersion=e.string();break;case 7:i.clientSource=e.string();break;case 8:i.chimeSdkVersion=e.string();break;case 9:i.clientUtcOffset=e.string();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.appName&&e.hasOwnProperty("appName")&&!c.isString(e.appName)?"appName: string expected":null!=e.appVersion&&e.hasOwnProperty("appVersion")&&!c.isString(e.appVersion)?"appVersion: string expected":null!=e.deviceModel&&e.hasOwnProperty("deviceModel")&&!c.isString(e.deviceModel)?"deviceModel: string expected":null!=e.deviceMake&&e.hasOwnProperty("deviceMake")&&!c.isString(e.deviceMake)?"deviceMake: string expected":null!=e.platformName&&e.hasOwnProperty("platformName")&&!c.isString(e.platformName)?"platformName: string expected":null!=e.platformVersion&&e.hasOwnProperty("platformVersion")&&!c.isString(e.platformVersion)?"platformVersion: string expected":null!=e.clientSource&&e.hasOwnProperty("clientSource")&&!c.isString(e.clientSource)?"clientSource: string expected":null!=e.chimeSdkVersion&&e.hasOwnProperty("chimeSdkVersion")&&!c.isString(e.chimeSdkVersion)?"chimeSdkVersion: string expected":null!=e.clientUtcOffset&&e.hasOwnProperty("clientUtcOffset")&&!c.isString(e.clientUtcOffset)?"clientUtcOffset: string expected":null},e.fromObject=function(e){if(e instanceof l.SdkClientDetails)return e;var t=new l.SdkClientDetails;return null!=e.appName&&(t.appName=String(e.appName)),null!=e.appVersion&&(t.appVersion=String(e.appVersion)),null!=e.deviceModel&&(t.deviceModel=String(e.deviceModel)),null!=e.deviceMake&&(t.deviceMake=String(e.deviceMake)),null!=e.platformName&&(t.platformName=String(e.platformName)),null!=e.platformVersion&&(t.platformVersion=String(e.platformVersion)),null!=e.clientSource&&(t.clientSource=String(e.clientSource)),null!=e.chimeSdkVersion&&(t.chimeSdkVersion=String(e.chimeSdkVersion)),null!=e.clientUtcOffset&&(t.clientUtcOffset=String(e.clientUtcOffset)),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.appName="",n.appVersion="",n.deviceModel="",n.deviceMake="",n.platformName="",n.platformVersion="",n.clientSource="",n.chimeSdkVersion="",n.clientUtcOffset=""),null!=e.appName&&e.hasOwnProperty("appName")&&(n.appName=e.appName),null!=e.appVersion&&e.hasOwnProperty("appVersion")&&(n.appVersion=e.appVersion),null!=e.deviceModel&&e.hasOwnProperty("deviceModel")&&(n.deviceModel=e.deviceModel),null!=e.deviceMake&&e.hasOwnProperty("deviceMake")&&(n.deviceMake=e.deviceMake),null!=e.platformName&&e.hasOwnProperty("platformName")&&(n.platformName=e.platformName),null!=e.platformVersion&&e.hasOwnProperty("platformVersion")&&(n.platformVersion=e.platformVersion),null!=e.clientSource&&e.hasOwnProperty("clientSource")&&(n.clientSource=e.clientSource),null!=e.chimeSdkVersion&&e.hasOwnProperty("chimeSdkVersion")&&(n.chimeSdkVersion=e.chimeSdkVersion),null!=e.clientUtcOffset&&e.hasOwnProperty("clientUtcOffset")&&(n.clientUtcOffset=e.clientUtcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkServerSideNetworkAdaption=function(){var e={},t=Object.create(e);return t[e[1]="DEFAULT"]=1,t[e[2]="NONE"]=2,t[e[3]="BANDWIDTH_PROBING"]=3,t[e[4]="BANDWIDTH_PROBING_AND_VIDEO_QUALITY_ADAPTION"]=4,t}(),l.SdkJoinFrame=function(){function e(e){if(this.supportedServerSideNetworkAdaptions=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.protocolVersion=e.uint32();break;case 2:i.maxNumOfVideos=e.uint32();break;case 3:i.flags=e.uint32();break;case 4:i.clientDetails=l.SdkClientDetails.decode(e,e.uint32());break;case 6:i.audioSessionId=e.uint64();break;case 7:i.wantsCompressedSdp=e.bool();break;case 10:i.serverSideNetworkAdaption=e.int32();break;case 11:if(i.supportedServerSideNetworkAdaptions&&i.supportedServerSideNetworkAdaptions.length||(i.supportedServerSideNetworkAdaptions=[]),2==(7&r))for(var a=e.uint32()+e.pos;e.pos>>0),null!=e.maxNumOfVideos&&(t.maxNumOfVideos=e.maxNumOfVideos>>>0),null!=e.flags&&(t.flags=e.flags>>>0),null!=e.clientDetails){if("object"!=typeof e.clientDetails)throw TypeError(".SdkJoinFrame.clientDetails: object expected");t.clientDetails=l.SdkClientDetails.fromObject(e.clientDetails)}switch(null!=e.audioSessionId&&(c.Long?(t.audioSessionId=c.Long.fromValue(e.audioSessionId)).unsigned=!0:"string"==typeof e.audioSessionId?t.audioSessionId=parseInt(e.audioSessionId,10):"number"==typeof e.audioSessionId?t.audioSessionId=e.audioSessionId:"object"==typeof e.audioSessionId&&(t.audioSessionId=new c.LongBits(e.audioSessionId.low>>>0,e.audioSessionId.high>>>0).toNumber(!0))),null!=e.wantsCompressedSdp&&(t.wantsCompressedSdp=Boolean(e.wantsCompressedSdp)),e.serverSideNetworkAdaption){case"DEFAULT":case 1:t.serverSideNetworkAdaption=1;break;case"NONE":case 2:t.serverSideNetworkAdaption=2;break;case"BANDWIDTH_PROBING":case 3:t.serverSideNetworkAdaption=3;break;case"BANDWIDTH_PROBING_AND_VIDEO_QUALITY_ADAPTION":case 4:t.serverSideNetworkAdaption=4}if(e.supportedServerSideNetworkAdaptions){if(!Array.isArray(e.supportedServerSideNetworkAdaptions))throw TypeError(".SdkJoinFrame.supportedServerSideNetworkAdaptions: array expected");t.supportedServerSideNetworkAdaptions=[];for(var n=0;n>>0,e.audioSessionId.high>>>0).toNumber(!0):e.audioSessionId),null!=e.wantsCompressedSdp&&e.hasOwnProperty("wantsCompressedSdp")&&(n.wantsCompressedSdp=e.wantsCompressedSdp),null!=e.serverSideNetworkAdaption&&e.hasOwnProperty("serverSideNetworkAdaption")&&(n.serverSideNetworkAdaption=t.enums===String?l.SdkServerSideNetworkAdaption[e.serverSideNetworkAdaption]:e.serverSideNetworkAdaption),e.supportedServerSideNetworkAdaptions&&e.supportedServerSideNetworkAdaptions.length){n.supportedServerSideNetworkAdaptions=[];for(var r=0;r>>3){case 1:i.turnCredentials=l.SdkTurnCredentials.decode(e,e.uint32());break;case 2:i.videoSubscriptionLimit=e.uint32();break;case 3:i.wantsCompressedSdp=e.bool();break;case 4:i.defaultServerSideNetworkAdaption=e.int32();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.turnCredentials&&e.hasOwnProperty("turnCredentials")){var t=l.SdkTurnCredentials.verify(e.turnCredentials);if(t)return"turnCredentials."+t}if(null!=e.videoSubscriptionLimit&&e.hasOwnProperty("videoSubscriptionLimit")&&!c.isInteger(e.videoSubscriptionLimit))return"videoSubscriptionLimit: integer expected";if(null!=e.wantsCompressedSdp&&e.hasOwnProperty("wantsCompressedSdp")&&"boolean"!=typeof e.wantsCompressedSdp)return"wantsCompressedSdp: boolean expected";if(null!=e.defaultServerSideNetworkAdaption&&e.hasOwnProperty("defaultServerSideNetworkAdaption"))switch(e.defaultServerSideNetworkAdaption){default:return"defaultServerSideNetworkAdaption: enum value expected";case 1:case 2:case 3:case 4:}return null},e.fromObject=function(e){if(e instanceof l.SdkJoinAckFrame)return e;var t=new l.SdkJoinAckFrame;if(null!=e.turnCredentials){if("object"!=typeof e.turnCredentials)throw TypeError(".SdkJoinAckFrame.turnCredentials: object expected");t.turnCredentials=l.SdkTurnCredentials.fromObject(e.turnCredentials)}switch(null!=e.videoSubscriptionLimit&&(t.videoSubscriptionLimit=e.videoSubscriptionLimit>>>0),null!=e.wantsCompressedSdp&&(t.wantsCompressedSdp=Boolean(e.wantsCompressedSdp)),e.defaultServerSideNetworkAdaption){case"DEFAULT":case 1:t.defaultServerSideNetworkAdaption=1;break;case"NONE":case 2:t.defaultServerSideNetworkAdaption=2;break;case"BANDWIDTH_PROBING":case 3:t.defaultServerSideNetworkAdaption=3;break;case"BANDWIDTH_PROBING_AND_VIDEO_QUALITY_ADAPTION":case 4:t.defaultServerSideNetworkAdaption=4}return t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.turnCredentials=null,n.videoSubscriptionLimit=0,n.wantsCompressedSdp=!1,n.defaultServerSideNetworkAdaption=t.enums===String?"DEFAULT":1),null!=e.turnCredentials&&e.hasOwnProperty("turnCredentials")&&(n.turnCredentials=l.SdkTurnCredentials.toObject(e.turnCredentials,t)),null!=e.videoSubscriptionLimit&&e.hasOwnProperty("videoSubscriptionLimit")&&(n.videoSubscriptionLimit=e.videoSubscriptionLimit),null!=e.wantsCompressedSdp&&e.hasOwnProperty("wantsCompressedSdp")&&(n.wantsCompressedSdp=e.wantsCompressedSdp),null!=e.defaultServerSideNetworkAdaption&&e.hasOwnProperty("defaultServerSideNetworkAdaption")&&(n.defaultServerSideNetworkAdaption=t.enums===String?l.SdkServerSideNetworkAdaption[e.defaultServerSideNetworkAdaption]:e.defaultServerSideNetworkAdaption),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkLeaveFrame=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.duplex=e.int32();break;case 2:i.sendStreams&&i.sendStreams.length||(i.sendStreams=[]),i.sendStreams.push(l.SdkStreamDescriptor.decode(e,e.uint32()));break;case 3:if(i.receiveStreamIds&&i.receiveStreamIds.length||(i.receiveStreamIds=[]),2==(7&r))for(var a=e.uint32()+e.pos;e.pos>>0}if(null!=e.sdpOffer&&(t.sdpOffer=String(e.sdpOffer)),null!=e.audioHost&&(t.audioHost=String(e.audioHost)),null!=e.audioCheckin&&(t.audioCheckin=Boolean(e.audioCheckin)),null!=e.audioMuted&&(t.audioMuted=Boolean(e.audioMuted)),null!=e.compressedSdpOffer&&("string"==typeof e.compressedSdpOffer?c.base64.decode(e.compressedSdpOffer,t.compressedSdpOffer=c.newBuffer(c.base64.length(e.compressedSdpOffer)),0):e.compressedSdpOffer.length&&(t.compressedSdpOffer=e.compressedSdpOffer)),e.videoSubscriptionConfiguration){if(!Array.isArray(e.videoSubscriptionConfiguration))throw TypeError(".SdkSubscribeFrame.videoSubscriptionConfiguration: array expected");for(t.videoSubscriptionConfiguration=[],n=0;n>>3){case 1:i.duplex=e.int32();break;case 2:i.allocations&&i.allocations.length||(i.allocations=[]),i.allocations.push(l.SdkStreamAllocation.decode(e,e.uint32()));break;case 3:i.sdpAnswer=e.string();break;case 4:i.tracks&&i.tracks.length||(i.tracks=[]),i.tracks.push(l.SdkTrackMapping.decode(e,e.uint32()));break;case 5:i.compressedSdpAnswer=e.bytes();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.duplex&&e.hasOwnProperty("duplex"))switch(e.duplex){default:return"duplex: enum value expected";case 1:case 2:case 3:}if(null!=e.allocations&&e.hasOwnProperty("allocations")){if(!Array.isArray(e.allocations))return"allocations: array expected";for(var t=0;t>>3){case 1:i.atCapacity=e.bool();break;case 2:i.sources&&i.sources.length||(i.sources=[]),i.sources.push(l.SdkStreamDescriptor.decode(e,e.uint32()));break;case 3:if(i.pausedAtSourceIds&&i.pausedAtSourceIds.length||(i.pausedAtSourceIds=[]),2==(7&r))for(var a=e.uint32()+e.pos;e.pos>>0}if(null!=e.numParticipants&&(t.numParticipants=e.numParticipants>>>0),e.supportedReceiveCodecIntersection){if(!Array.isArray(e.supportedReceiveCodecIntersection))throw TypeError(".SdkIndexFrame.supportedReceiveCodecIntersection: array expected");for(t.supportedReceiveCodecIntersection=[],n=0;n>>3){case 1:if(i.streamIds&&i.streamIds.length||(i.streamIds=[]),2==(7&r))for(var a=e.uint32()+e.pos;e.pos>>0}if(e.groupIds){if(!Array.isArray(e.groupIds))throw TypeError(".SdkPauseResumeFrame.groupIds: array expected");for(t.groupIds=[],n=0;n>>0}return t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.streamIds=[],n.groupIds=[]),e.streamIds&&e.streamIds.length){n.streamIds=[];for(var i=0;i>>3){case 1:i.bitrates&&i.bitrates.length||(i.bitrates=[]),i.bitrates.push(l.SdkBitrate.decode(e,e.uint32()));break;case 2:i.serverAvailableOutgoingBitrate=e.uint32();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.bitrates&&e.hasOwnProperty("bitrates")){if(!Array.isArray(e.bitrates))return"bitrates: array expected";for(var t=0;t>>0),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.bitrates=[]),t.defaults&&(n.serverAvailableOutgoingBitrate=0),e.bitrates&&e.bitrates.length){n.bitrates=[];for(var i=0;i>>3){case 1:i.streamId=e.uint32();break;case 2:i.framerate=e.uint32();break;case 3:i.maxBitrateKbps=e.uint32();break;case 4:i.trackLabel=e.string();break;case 6:i.groupId=e.uint32();break;case 7:i.avgBitrateBps=e.uint32();break;case 8:i.attendeeId=e.string();break;case 9:i.mediaType=e.int32();break;case 10:i.externalUserId=e.string();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.streamId&&e.hasOwnProperty("streamId")&&!c.isInteger(e.streamId))return"streamId: integer expected";if(null!=e.framerate&&e.hasOwnProperty("framerate")&&!c.isInteger(e.framerate))return"framerate: integer expected";if(null!=e.maxBitrateKbps&&e.hasOwnProperty("maxBitrateKbps")&&!c.isInteger(e.maxBitrateKbps))return"maxBitrateKbps: integer expected";if(null!=e.trackLabel&&e.hasOwnProperty("trackLabel")&&!c.isString(e.trackLabel))return"trackLabel: string expected";if(null!=e.groupId&&e.hasOwnProperty("groupId")&&!c.isInteger(e.groupId))return"groupId: integer expected";if(null!=e.avgBitrateBps&&e.hasOwnProperty("avgBitrateBps")&&!c.isInteger(e.avgBitrateBps))return"avgBitrateBps: integer expected";if(null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&!c.isString(e.attendeeId))return"attendeeId: string expected";if(null!=e.mediaType&&e.hasOwnProperty("mediaType"))switch(e.mediaType){default:return"mediaType: enum value expected";case 1:case 2:}return null!=e.externalUserId&&e.hasOwnProperty("externalUserId")&&!c.isString(e.externalUserId)?"externalUserId: string expected":null},e.fromObject=function(e){if(e instanceof l.SdkStreamDescriptor)return e;var t=new l.SdkStreamDescriptor;switch(null!=e.streamId&&(t.streamId=e.streamId>>>0),null!=e.framerate&&(t.framerate=e.framerate>>>0),null!=e.maxBitrateKbps&&(t.maxBitrateKbps=e.maxBitrateKbps>>>0),null!=e.trackLabel&&(t.trackLabel=String(e.trackLabel)),null!=e.groupId&&(t.groupId=e.groupId>>>0),null!=e.avgBitrateBps&&(t.avgBitrateBps=e.avgBitrateBps>>>0),null!=e.attendeeId&&(t.attendeeId=String(e.attendeeId)),e.mediaType){case"AUDIO":case 1:t.mediaType=1;break;case"VIDEO":case 2:t.mediaType=2}return null!=e.externalUserId&&(t.externalUserId=String(e.externalUserId)),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.streamId=0,n.framerate=0,n.maxBitrateKbps=0,n.trackLabel="",n.groupId=0,n.avgBitrateBps=0,n.attendeeId="",n.mediaType=t.enums===String?"AUDIO":1,n.externalUserId=""),null!=e.streamId&&e.hasOwnProperty("streamId")&&(n.streamId=e.streamId),null!=e.framerate&&e.hasOwnProperty("framerate")&&(n.framerate=e.framerate),null!=e.maxBitrateKbps&&e.hasOwnProperty("maxBitrateKbps")&&(n.maxBitrateKbps=e.maxBitrateKbps),null!=e.trackLabel&&e.hasOwnProperty("trackLabel")&&(n.trackLabel=e.trackLabel),null!=e.groupId&&e.hasOwnProperty("groupId")&&(n.groupId=e.groupId),null!=e.avgBitrateBps&&e.hasOwnProperty("avgBitrateBps")&&(n.avgBitrateBps=e.avgBitrateBps),null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&(n.attendeeId=e.attendeeId),null!=e.mediaType&&e.hasOwnProperty("mediaType")&&(n.mediaType=t.enums===String?l.SdkStreamMediaType[e.mediaType]:e.mediaType),null!=e.externalUserId&&e.hasOwnProperty("externalUserId")&&(n.externalUserId=e.externalUserId),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkStreamAllocation=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.trackLabel=e.string();break;case 2:i.streamId=e.uint32();break;case 3:i.groupId=e.uint32();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.trackLabel&&e.hasOwnProperty("trackLabel")&&!c.isString(e.trackLabel)?"trackLabel: string expected":null!=e.streamId&&e.hasOwnProperty("streamId")&&!c.isInteger(e.streamId)?"streamId: integer expected":null!=e.groupId&&e.hasOwnProperty("groupId")&&!c.isInteger(e.groupId)?"groupId: integer expected":null},e.fromObject=function(e){if(e instanceof l.SdkStreamAllocation)return e;var t=new l.SdkStreamAllocation;return null!=e.trackLabel&&(t.trackLabel=String(e.trackLabel)),null!=e.streamId&&(t.streamId=e.streamId>>>0),null!=e.groupId&&(t.groupId=e.groupId>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.trackLabel="",n.streamId=0,n.groupId=0),null!=e.trackLabel&&e.hasOwnProperty("trackLabel")&&(n.trackLabel=e.trackLabel),null!=e.streamId&&e.hasOwnProperty("streamId")&&(n.streamId=e.streamId),null!=e.groupId&&e.hasOwnProperty("groupId")&&(n.groupId=e.groupId),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkTrackMapping=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.streamId=e.uint32();break;case 2:i.ssrc=e.uint32();break;case 3:i.trackLabel=e.string();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.streamId&&e.hasOwnProperty("streamId")&&!c.isInteger(e.streamId)?"streamId: integer expected":null!=e.ssrc&&e.hasOwnProperty("ssrc")&&!c.isInteger(e.ssrc)?"ssrc: integer expected":null!=e.trackLabel&&e.hasOwnProperty("trackLabel")&&!c.isString(e.trackLabel)?"trackLabel: string expected":null},e.fromObject=function(e){if(e instanceof l.SdkTrackMapping)return e;var t=new l.SdkTrackMapping;return null!=e.streamId&&(t.streamId=e.streamId>>>0),null!=e.ssrc&&(t.ssrc=e.ssrc>>>0),null!=e.trackLabel&&(t.trackLabel=String(e.trackLabel)),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.streamId=0,n.ssrc=0,n.trackLabel=""),null!=e.streamId&&e.hasOwnProperty("streamId")&&(n.streamId=e.streamId),null!=e.ssrc&&e.hasOwnProperty("ssrc")&&(n.ssrc=e.ssrc),null!=e.trackLabel&&e.hasOwnProperty("trackLabel")&&(n.trackLabel=e.trackLabel),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkBitrate=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.sourceStreamId=e.uint32();break;case 2:i.avgBitrateBps=e.uint32();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.sourceStreamId&&e.hasOwnProperty("sourceStreamId")&&!c.isInteger(e.sourceStreamId)?"sourceStreamId: integer expected":null!=e.avgBitrateBps&&e.hasOwnProperty("avgBitrateBps")&&!c.isInteger(e.avgBitrateBps)?"avgBitrateBps: integer expected":null},e.fromObject=function(e){if(e instanceof l.SdkBitrate)return e;var t=new l.SdkBitrate;return null!=e.sourceStreamId&&(t.sourceStreamId=e.sourceStreamId>>>0),null!=e.avgBitrateBps&&(t.avgBitrateBps=e.avgBitrateBps>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.sourceStreamId=0,n.avgBitrateBps=0),null!=e.sourceStreamId&&e.hasOwnProperty("sourceStreamId")&&(n.sourceStreamId=e.sourceStreamId),null!=e.avgBitrateBps&&e.hasOwnProperty("avgBitrateBps")&&(n.avgBitrateBps=e.avgBitrateBps),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkAudioControlFrame=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3==1?i.muted=e.bool():e.skipType(7&r)}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.muted&&e.hasOwnProperty("muted")&&"boolean"!=typeof e.muted?"muted: boolean expected":null},e.fromObject=function(e){if(e instanceof l.SdkAudioControlFrame)return e;var t=new l.SdkAudioControlFrame;return null!=e.muted&&(t.muted=Boolean(e.muted)),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.muted=!1),null!=e.muted&&e.hasOwnProperty("muted")&&(n.muted=e.muted),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkAudioMetadataFrame=function(){function e(e){if(this.attendeeStates=[],e)for(var t=Object.keys(e),n=0;n>>3==1?(i.attendeeStates&&i.attendeeStates.length||(i.attendeeStates=[]),i.attendeeStates.push(l.SdkAudioAttendeeState.decode(e,e.uint32()))):e.skipType(7&r)}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.attendeeStates&&e.hasOwnProperty("attendeeStates")){if(!Array.isArray(e.attendeeStates))return"attendeeStates: array expected";for(var t=0;t>>3){case 1:i.audioStreamId=e.uint32();break;case 2:i.volume=e.uint32();break;case 3:i.muted=e.bool();break;case 4:i.signalStrength=e.uint32();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.audioStreamId&&e.hasOwnProperty("audioStreamId")&&!c.isInteger(e.audioStreamId)?"audioStreamId: integer expected":null!=e.volume&&e.hasOwnProperty("volume")&&!c.isInteger(e.volume)?"volume: integer expected":null!=e.muted&&e.hasOwnProperty("muted")&&"boolean"!=typeof e.muted?"muted: boolean expected":null!=e.signalStrength&&e.hasOwnProperty("signalStrength")&&!c.isInteger(e.signalStrength)?"signalStrength: integer expected":null},e.fromObject=function(e){if(e instanceof l.SdkAudioAttendeeState)return e;var t=new l.SdkAudioAttendeeState;return null!=e.audioStreamId&&(t.audioStreamId=e.audioStreamId>>>0),null!=e.volume&&(t.volume=e.volume>>>0),null!=e.muted&&(t.muted=Boolean(e.muted)),null!=e.signalStrength&&(t.signalStrength=e.signalStrength>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.audioStreamId=0,n.volume=0,n.muted=!1,n.signalStrength=0),null!=e.audioStreamId&&e.hasOwnProperty("audioStreamId")&&(n.audioStreamId=e.audioStreamId),null!=e.volume&&e.hasOwnProperty("volume")&&(n.volume=e.volume),null!=e.muted&&e.hasOwnProperty("muted")&&(n.muted=e.muted),null!=e.signalStrength&&e.hasOwnProperty("signalStrength")&&(n.signalStrength=e.signalStrength),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkAudioStreamIdInfoFrame=function(){function e(e){if(this.streams=[],e)for(var t=Object.keys(e),n=0;n>>3==1?(i.streams&&i.streams.length||(i.streams=[]),i.streams.push(l.SdkAudioStreamIdInfo.decode(e,e.uint32()))):e.skipType(7&r)}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.streams&&e.hasOwnProperty("streams")){if(!Array.isArray(e.streams))return"streams: array expected";for(var t=0;t>>3){case 1:i.audioStreamId=e.uint32();break;case 2:i.attendeeId=e.string();break;case 3:i.muted=e.bool();break;case 4:i.externalUserId=e.string();break;case 5:i.dropped=e.bool();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.audioStreamId&&e.hasOwnProperty("audioStreamId")&&!c.isInteger(e.audioStreamId)?"audioStreamId: integer expected":null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&!c.isString(e.attendeeId)?"attendeeId: string expected":null!=e.muted&&e.hasOwnProperty("muted")&&"boolean"!=typeof e.muted?"muted: boolean expected":null!=e.externalUserId&&e.hasOwnProperty("externalUserId")&&!c.isString(e.externalUserId)?"externalUserId: string expected":null!=e.dropped&&e.hasOwnProperty("dropped")&&"boolean"!=typeof e.dropped?"dropped: boolean expected":null},e.fromObject=function(e){if(e instanceof l.SdkAudioStreamIdInfo)return e;var t=new l.SdkAudioStreamIdInfo;return null!=e.audioStreamId&&(t.audioStreamId=e.audioStreamId>>>0),null!=e.attendeeId&&(t.attendeeId=String(e.attendeeId)),null!=e.muted&&(t.muted=Boolean(e.muted)),null!=e.externalUserId&&(t.externalUserId=String(e.externalUserId)),null!=e.dropped&&(t.dropped=Boolean(e.dropped)),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.audioStreamId=0,n.attendeeId="",n.muted=!1,n.externalUserId="",n.dropped=!1),null!=e.audioStreamId&&e.hasOwnProperty("audioStreamId")&&(n.audioStreamId=e.audioStreamId),null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&(n.attendeeId=e.attendeeId),null!=e.muted&&e.hasOwnProperty("muted")&&(n.muted=e.muted),null!=e.externalUserId&&e.hasOwnProperty("externalUserId")&&(n.externalUserId=e.externalUserId),null!=e.dropped&&e.hasOwnProperty("dropped")&&(n.dropped=e.dropped),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkPingPongType=function(){var e={},t=Object.create(e);return t[e[1]="PING"]=1,t[e[2]="PONG"]=2,t}(),l.SdkPingPongFrame=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.type=e.int32();break;case 2:i.pingId=e.uint32();break;default:e.skipType(7&r)}}if(!i.hasOwnProperty("type"))throw c.ProtocolError("missing required 'type'",{instance:i});if(!i.hasOwnProperty("pingId"))throw c.ProtocolError("missing required 'pingId'",{instance:i});return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 1:case 2:}return c.isInteger(e.pingId)?null:"pingId: integer expected"},e.fromObject=function(e){if(e instanceof l.SdkPingPongFrame)return e;var t=new l.SdkPingPongFrame;switch(e.type){case"PING":case 1:t.type=1;break;case"PONG":case 2:t.type=2}return null!=e.pingId&&(t.pingId=e.pingId>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.type=t.enums===String?"PING":1,n.pingId=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?l.SdkPingPongType[e.type]:e.type),null!=e.pingId&&e.hasOwnProperty("pingId")&&(n.pingId=e.pingId),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkAudioStatusFrame=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3==1?i.audioStatus=e.uint32():e.skipType(7&r)}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.audioStatus&&e.hasOwnProperty("audioStatus")&&!c.isInteger(e.audioStatus)?"audioStatus: integer expected":null},e.fromObject=function(e){if(e instanceof l.SdkAudioStatusFrame)return e;var t=new l.SdkAudioStatusFrame;return null!=e.audioStatus&&(t.audioStatus=e.audioStatus>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.audioStatus=0),null!=e.audioStatus&&e.hasOwnProperty("audioStatus")&&(n.audioStatus=e.audioStatus),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkMetric=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.type=e.int32();break;case 2:i.value=e.double();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 48:case 49:case 64:case 66:case 69:case 72:case 86:case 87:case 88:case 89:case 90:case 91:case 92:case 93:case 94:case 95:case 96:case 97:case 98:case 99:case 100:case 101:case 102:}return null!=e.value&&e.hasOwnProperty("value")&&"number"!=typeof e.value?"value: number expected":null},e.fromObject=function(e){if(e instanceof l.SdkMetric)return e;var t=new l.SdkMetric;switch(e.type){case"VIDEO_ACTUAL_ENCODER_BITRATE":case 1:t.type=1;break;case"VIDEO_AVAILABLE_SEND_BANDWIDTH":case 2:t.type=2;break;case"VIDEO_RETRANSMIT_BITRATE":case 3:t.type=3;break;case"VIDEO_AVAILABLE_RECEIVE_BANDWIDTH":case 4:t.type=4;break;case"VIDEO_TARGET_ENCODER_BITRATE":case 5:t.type=5;break;case"VIDEO_BUCKET_DELAY_MS":case 6:t.type=6;break;case"STUN_RTT_MS":case 7:t.type=7;break;case"SOCKET_DISCARDED_PPS":case 8:t.type=8;break;case"RTC_MIC_JITTER_MS":case 9:t.type=9;break;case"RTC_MIC_PPS":case 10:t.type=10;break;case"RTC_MIC_FRACTION_PACKET_LOST_PERCENT":case 11:t.type=11;break;case"RTC_MIC_BITRATE":case 12:t.type=12;break;case"RTC_MIC_RTT_MS":case 13:t.type=13;break;case"RTC_SPK_PPS":case 14:t.type=14;break;case"RTC_SPK_FRACTION_PACKET_LOST_PERCENT":case 15:t.type=15;break;case"RTC_SPK_JITTER_MS":case 16:t.type=16;break;case"RTC_SPK_FRACTION_DECODER_LOSS_PERCENT":case 17:t.type=17;break;case"RTC_SPK_BITRATE":case 18:t.type=18;break;case"RTC_SPK_CURRENT_DELAY_MS":case 19:t.type=19;break;case"RTC_SPK_JITTER_BUFFER_MS":case 20:t.type=20;break;case"VIDEO_SENT_RTT_MS":case 21:t.type=21;break;case"VIDEO_ENCODE_USAGE_PERCENT":case 22:t.type=22;break;case"VIDEO_NACKS_RECEIVED":case 23:t.type=23;break;case"VIDEO_PLIS_RECEIVED":case 24:t.type=24;break;case"VIDEO_ENCODE_MS":case 25:t.type=25;break;case"VIDEO_INPUT_FPS":case 26:t.type=26;break;case"VIDEO_ENCODE_FPS":case 27:t.type=27;break;case"VIDEO_SENT_FPS":case 28:t.type=28;break;case"VIDEO_FIRS_RECEIVED":case 29:t.type=29;break;case"VIDEO_SENT_PPS":case 30:t.type=30;break;case"VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT":case 31:t.type=31;break;case"VIDEO_SENT_BITRATE":case 32:t.type=32;break;case"VIDEO_DROPPED_FPS":case 33:t.type=33;break;case"VIDEO_TARGET_DELAY_MS":case 34:t.type=34;break;case"VIDEO_DECODE_MS":case 35:t.type=35;break;case"VIDEO_OUTPUT_FPS":case 36:t.type=36;break;case"VIDEO_RECEIVED_PPS":case 37:t.type=37;break;case"VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT":case 38:t.type=38;break;case"VIDEO_RENDER_DELAY_MS":case 39:t.type=39;break;case"VIDEO_RECEIVED_FPS":case 40:t.type=40;break;case"VIDEO_DECODE_FPS":case 41:t.type=41;break;case"VIDEO_NACKS_SENT":case 42:t.type=42;break;case"VIDEO_FIRS_SENT":case 43:t.type=43;break;case"VIDEO_RECEIVED_BITRATE":case 44:t.type=44;break;case"VIDEO_CURRENT_DELAY_MS":case 45:t.type=45;break;case"VIDEO_JITTER_BUFFER_MS":case 46:t.type=46;break;case"VIDEO_DISCARDED_PPS":case 47:t.type=47;break;case"VIDEO_PLIS_SENT":case 48:t.type=48;break;case"VIDEO_RECEIVED_JITTER_MS":case 49:t.type=49;break;case"VIDEO_ENCODE_HEIGHT":case 64:t.type=64;break;case"VIDEO_SENT_QP_SUM":case 66:t.type=66;break;case"VIDEO_DECODE_HEIGHT":case 69:t.type=69;break;case"VIDEO_RECEIVED_QP_SUM":case 72:t.type=72;break;case"VIDEO_ENCODE_WIDTH":case 86:t.type=86;break;case"VIDEO_DECODE_WIDTH":case 87:t.type=87;break;case"VIDEO_ENCODER_IS_HARDWARE":case 88:t.type=88;break;case"VIDEO_DECODER_IS_HARDWARE":case 89:t.type=89;break;case"VIDEO_FREEZE_DURATION":case 91:t.type=91;break;case"VIDEO_PAUSE_COUNT":case 92:t.type=92;break;case"VIDEO_PAUSE_DURATION":case 93:t.type=93;break;case"VIDEO_QUALITY_REASON":case 94:t.type=94;break;case"VIDEO_PROCESSING_TIME":case 95:t.type=95;break;case"RTC_SPK_AUDIO_LEVEL":case 96:t.type=96;break;case"RTC_MIC_AUDIO_LEVEL":case 97:t.type=97;case"RTC_SPK_TOTAL_LOST":case 98:t.type=98;break;case"RTC_SPK_TOTAL_EXPECTED":case 99:t.type=99;break;case"RTC_SPK_TOTAL_RECOVERED_RED":case 100:t.type=100;break;case"RTC_SPK_TOTAL_RECOVERED_FEC":case 101:t.type=101;break;case"RTC_SPK_TOTAL_LOST":case 98:t.type=98;break;case"RTC_SPK_TOTAL_EXPECTED":case 99:t.type=99;break;case"RTC_SPK_TOTAL_RECOVERED_RED":case 100:t.type=100;break;case"RTC_SPK_TOTAL_RECOVERED_FEC":case 101:t.type=101;break;case"VIDEO_QUALITY_LIMITATION_DURATION_CPU":case 102:t.type=102}return null!=e.value&&(t.value=Number(e.value)),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.type=t.enums===String?"VIDEO_ACTUAL_ENCODER_BITRATE":1,n.value=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?l.SdkMetric.Type[e.type]:e.type),null!=e.value&&e.hasOwnProperty("value")&&(n.value=t.json&&!isFinite(e.value)?String(e.value):e.value),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[1]="VIDEO_ACTUAL_ENCODER_BITRATE"]=1,t[e[2]="VIDEO_AVAILABLE_SEND_BANDWIDTH"]=2,t[e[3]="VIDEO_RETRANSMIT_BITRATE"]=3,t[e[4]="VIDEO_AVAILABLE_RECEIVE_BANDWIDTH"]=4,t[e[5]="VIDEO_TARGET_ENCODER_BITRATE"]=5,t[e[6]="VIDEO_BUCKET_DELAY_MS"]=6,t[e[7]="STUN_RTT_MS"]=7,t[e[8]="SOCKET_DISCARDED_PPS"]=8,t[e[9]="RTC_MIC_JITTER_MS"]=9,t[e[10]="RTC_MIC_PPS"]=10,t[e[11]="RTC_MIC_FRACTION_PACKET_LOST_PERCENT"]=11,t[e[12]="RTC_MIC_BITRATE"]=12,t[e[13]="RTC_MIC_RTT_MS"]=13,t[e[14]="RTC_SPK_PPS"]=14,t[e[15]="RTC_SPK_FRACTION_PACKET_LOST_PERCENT"]=15,t[e[16]="RTC_SPK_JITTER_MS"]=16,t[e[17]="RTC_SPK_FRACTION_DECODER_LOSS_PERCENT"]=17,t[e[18]="RTC_SPK_BITRATE"]=18,t[e[19]="RTC_SPK_CURRENT_DELAY_MS"]=19,t[e[20]="RTC_SPK_JITTER_BUFFER_MS"]=20,t[e[21]="VIDEO_SENT_RTT_MS"]=21,t[e[22]="VIDEO_ENCODE_USAGE_PERCENT"]=22,t[e[23]="VIDEO_NACKS_RECEIVED"]=23,t[e[24]="VIDEO_PLIS_RECEIVED"]=24,t[e[25]="VIDEO_ENCODE_MS"]=25,t[e[26]="VIDEO_INPUT_FPS"]=26,t[e[27]="VIDEO_ENCODE_FPS"]=27,t[e[28]="VIDEO_SENT_FPS"]=28,t[e[29]="VIDEO_FIRS_RECEIVED"]=29,t[e[30]="VIDEO_SENT_PPS"]=30,t[e[31]="VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT"]=31,t[e[32]="VIDEO_SENT_BITRATE"]=32,t[e[33]="VIDEO_DROPPED_FPS"]=33,t[e[34]="VIDEO_TARGET_DELAY_MS"]=34,t[e[35]="VIDEO_DECODE_MS"]=35,t[e[36]="VIDEO_OUTPUT_FPS"]=36,t[e[37]="VIDEO_RECEIVED_PPS"]=37,t[e[38]="VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT"]=38,t[e[39]="VIDEO_RENDER_DELAY_MS"]=39,t[e[40]="VIDEO_RECEIVED_FPS"]=40,t[e[41]="VIDEO_DECODE_FPS"]=41,t[e[42]="VIDEO_NACKS_SENT"]=42,t[e[43]="VIDEO_FIRS_SENT"]=43,t[e[44]="VIDEO_RECEIVED_BITRATE"]=44,t[e[45]="VIDEO_CURRENT_DELAY_MS"]=45,t[e[46]="VIDEO_JITTER_BUFFER_MS"]=46,t[e[47]="VIDEO_DISCARDED_PPS"]=47,t[e[48]="VIDEO_PLIS_SENT"]=48,t[e[49]="VIDEO_RECEIVED_JITTER_MS"]=49,t[e[64]="VIDEO_ENCODE_HEIGHT"]=64,t[e[66]="VIDEO_SENT_QP_SUM"]=66,t[e[69]="VIDEO_DECODE_HEIGHT"]=69,t[e[72]="VIDEO_RECEIVED_QP_SUM"]=72,t[e[86]="VIDEO_ENCODE_WIDTH"]=86,t[e[87]="VIDEO_DECODE_WIDTH"]=87,t[e[88]="VIDEO_ENCODER_IS_HARDWARE"]=88,t[e[89]="VIDEO_DECODER_IS_HARDWARE"]=89,t[e[90]="VIDEO_FREEZE_COUNT"]=90,t[e[91]="VIDEO_FREEZE_DURATION"]=91,t[e[92]="VIDEO_PAUSE_COUNT"]=92,t[e[93]="VIDEO_PAUSE_DURATION"]=93,t[e[94]="VIDEO_QUALITY_REASON"]=94,t[e[95]="VIDEO_PROCESSING_TIME"]=95,t[e[96]="RTC_SPK_AUDIO_LEVEL"]=96,t[e[97]="RTC_MIC_AUDIO_LEVEL"]=97,t[e[98]="RTC_SPK_TOTAL_LOST"]=98,t[e[99]="RTC_SPK_TOTAL_EXPECTED"]=99,t[e[100]="RTC_SPK_TOTAL_RECOVERED_RED"]=100,t[e[101]="RTC_SPK_TOTAL_RECOVERED_FEC"]=101,t[e[102]="VIDEO_QUALITY_LIMITATION_DURATION_CPU"]=102,t}(),e}(),l.SdkStreamMetricFrame=function(){function e(e){if(this.metrics=[],this.dimensions=[],e)for(var t=Object.keys(e),n=0;n>>3){case 3:i.streamId=e.uint32();break;case 4:i.groupId=e.uint32();break;case 5:i.metrics&&i.metrics.length||(i.metrics=[]),i.metrics.push(l.SdkMetric.decode(e,e.uint32()));break;case 6:i.dimensions&&i.dimensions.length||(i.dimensions=[]),i.dimensions.push(l.SdkStreamDimension.decode(e,e.uint32()));break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.streamId&&e.hasOwnProperty("streamId")&&!c.isInteger(e.streamId))return"streamId: integer expected";if(null!=e.groupId&&e.hasOwnProperty("groupId")&&!c.isInteger(e.groupId))return"groupId: integer expected";if(null!=e.metrics&&e.hasOwnProperty("metrics")){if(!Array.isArray(e.metrics))return"metrics: array expected";for(var t=0;t>>0),null!=e.groupId&&(t.groupId=e.groupId>>>0),e.metrics){if(!Array.isArray(e.metrics))throw TypeError(".SdkStreamMetricFrame.metrics: array expected");t.metrics=[];for(var n=0;n>>3){case 1:i.globalMetrics&&i.globalMetrics.length||(i.globalMetrics=[]),i.globalMetrics.push(l.SdkMetric.decode(e,e.uint32()));break;case 2:i.streamMetricFrames&&i.streamMetricFrames.length||(i.streamMetricFrames=[]),i.streamMetricFrames.push(l.SdkStreamMetricFrame.decode(e,e.uint32()));break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.globalMetrics&&e.hasOwnProperty("globalMetrics")){if(!Array.isArray(e.globalMetrics))return"globalMetrics: array expected";for(var t=0;t>>3){case 1:i.type=e.int32();break;case 2:i.value=l.SdkDimensionValue.decode(e,e.uint32());break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 1:case 2:}if(null!=e.value&&e.hasOwnProperty("value")){var t=l.SdkDimensionValue.verify(e.value);if(t)return"value."+t}return null},e.fromObject=function(e){if(e instanceof l.SdkStreamDimension)return e;var t=new l.SdkStreamDimension;switch(e.type){case"VIDEO_ENCODER_NAME":case 1:t.type=1;break;case"VIDEO_DECODER_NAME":case 2:t.type=2}if(null!=e.value){if("object"!=typeof e.value)throw TypeError(".SdkStreamDimension.value: object expected");t.value=l.SdkDimensionValue.fromObject(e.value)}return t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.type=t.enums===String?"VIDEO_ENCODER_NAME":1,n.value=null),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?l.SdkStreamDimension.Type[e.type]:e.type),null!=e.value&&e.hasOwnProperty("value")&&(n.value=l.SdkDimensionValue.toObject(e.value,t)),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[1]="VIDEO_ENCODER_NAME"]=1,t[e[2]="VIDEO_DECODER_NAME"]=2,t}(),e}(),l.SdkDimensionValue=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.stringValue=e.string();break;case 2:i.boolValue=e.bool();break;case 3:i.uintValue=e.uint64();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.stringValue&&e.hasOwnProperty("stringValue")&&!c.isString(e.stringValue)?"stringValue: string expected":null!=e.boolValue&&e.hasOwnProperty("boolValue")&&"boolean"!=typeof e.boolValue?"boolValue: boolean expected":null!=e.uintValue&&e.hasOwnProperty("uintValue")&&!(c.isInteger(e.uintValue)||e.uintValue&&c.isInteger(e.uintValue.low)&&c.isInteger(e.uintValue.high))?"uintValue: integer|Long expected":null},e.fromObject=function(e){if(e instanceof l.SdkDimensionValue)return e;var t=new l.SdkDimensionValue;return null!=e.stringValue&&(t.stringValue=String(e.stringValue)),null!=e.boolValue&&(t.boolValue=Boolean(e.boolValue)),null!=e.uintValue&&(c.Long?(t.uintValue=c.Long.fromValue(e.uintValue)).unsigned=!0:"string"==typeof e.uintValue?t.uintValue=parseInt(e.uintValue,10):"number"==typeof e.uintValue?t.uintValue=e.uintValue:"object"==typeof e.uintValue&&(t.uintValue=new c.LongBits(e.uintValue.low>>>0,e.uintValue.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults)if(n.stringValue="",n.boolValue=!1,c.Long){var i=new c.Long(0,0,!0);n.uintValue=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.uintValue=t.longs===String?"0":0;return null!=e.stringValue&&e.hasOwnProperty("stringValue")&&(n.stringValue=e.stringValue),null!=e.boolValue&&e.hasOwnProperty("boolValue")&&(n.boolValue=e.boolValue),null!=e.uintValue&&e.hasOwnProperty("uintValue")&&("number"==typeof e.uintValue?n.uintValue=t.longs===String?String(e.uintValue):e.uintValue:n.uintValue=t.longs===String?c.Long.prototype.toString.call(e.uintValue):t.longs===Number?new c.LongBits(e.uintValue.low>>>0,e.uintValue.high>>>0).toNumber(!0):e.uintValue),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkDataMessageFrame=function(){function e(e){if(this.messages=[],e)for(var t=Object.keys(e),n=0;n>>3==1?(i.messages&&i.messages.length||(i.messages=[]),i.messages.push(l.SdkDataMessagePayload.decode(e,e.uint32()))):e.skipType(7&r)}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.messages&&e.hasOwnProperty("messages")){if(!Array.isArray(e.messages))return"messages: array expected";for(var t=0;t>>3){case 1:i.topic=e.string();break;case 2:i.data=e.bytes();break;case 3:i.lifetimeMs=e.uint32();break;case 4:i.senderAttendeeId=e.string();break;case 5:i.ingestTimeNs=e.int64();break;case 6:i.senderExternalUserId=e.string();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.topic&&e.hasOwnProperty("topic")&&!c.isString(e.topic)?"topic: string expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"==typeof e.data.length||c.isString(e.data))?"data: buffer expected":null!=e.lifetimeMs&&e.hasOwnProperty("lifetimeMs")&&!c.isInteger(e.lifetimeMs)?"lifetimeMs: integer expected":null!=e.senderAttendeeId&&e.hasOwnProperty("senderAttendeeId")&&!c.isString(e.senderAttendeeId)?"senderAttendeeId: string expected":null!=e.ingestTimeNs&&e.hasOwnProperty("ingestTimeNs")&&!(c.isInteger(e.ingestTimeNs)||e.ingestTimeNs&&c.isInteger(e.ingestTimeNs.low)&&c.isInteger(e.ingestTimeNs.high))?"ingestTimeNs: integer|Long expected":null!=e.senderExternalUserId&&e.hasOwnProperty("senderExternalUserId")&&!c.isString(e.senderExternalUserId)?"senderExternalUserId: string expected":null},e.fromObject=function(e){if(e instanceof l.SdkDataMessagePayload)return e;var t=new l.SdkDataMessagePayload;return null!=e.topic&&(t.topic=String(e.topic)),null!=e.data&&("string"==typeof e.data?c.base64.decode(e.data,t.data=c.newBuffer(c.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.lifetimeMs&&(t.lifetimeMs=e.lifetimeMs>>>0),null!=e.senderAttendeeId&&(t.senderAttendeeId=String(e.senderAttendeeId)),null!=e.ingestTimeNs&&(c.Long?(t.ingestTimeNs=c.Long.fromValue(e.ingestTimeNs)).unsigned=!1:"string"==typeof e.ingestTimeNs?t.ingestTimeNs=parseInt(e.ingestTimeNs,10):"number"==typeof e.ingestTimeNs?t.ingestTimeNs=e.ingestTimeNs:"object"==typeof e.ingestTimeNs&&(t.ingestTimeNs=new c.LongBits(e.ingestTimeNs.low>>>0,e.ingestTimeNs.high>>>0).toNumber())),null!=e.senderExternalUserId&&(t.senderExternalUserId=String(e.senderExternalUserId)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.topic="",t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=c.newBuffer(n.data))),n.lifetimeMs=0,n.senderAttendeeId="",c.Long){var i=new c.Long(0,0,!1);n.ingestTimeNs=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.ingestTimeNs=t.longs===String?"0":0;n.senderExternalUserId=""}return null!=e.topic&&e.hasOwnProperty("topic")&&(n.topic=e.topic),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?c.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.lifetimeMs&&e.hasOwnProperty("lifetimeMs")&&(n.lifetimeMs=e.lifetimeMs),null!=e.senderAttendeeId&&e.hasOwnProperty("senderAttendeeId")&&(n.senderAttendeeId=e.senderAttendeeId),null!=e.ingestTimeNs&&e.hasOwnProperty("ingestTimeNs")&&("number"==typeof e.ingestTimeNs?n.ingestTimeNs=t.longs===String?String(e.ingestTimeNs):e.ingestTimeNs:n.ingestTimeNs=t.longs===String?c.Long.prototype.toString.call(e.ingestTimeNs):t.longs===Number?new c.LongBits(e.ingestTimeNs.low>>>0,e.ingestTimeNs.high>>>0).toNumber():e.ingestTimeNs),null!=e.senderExternalUserId&&e.hasOwnProperty("senderExternalUserId")&&(n.senderExternalUserId=e.senderExternalUserId),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkTurnCredentials=function(){function e(e){if(this.uris=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.username=e.string();break;case 2:i.password=e.string();break;case 3:i.ttl=e.uint32();break;case 4:i.uris&&i.uris.length||(i.uris=[]),i.uris.push(e.string());break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.username&&e.hasOwnProperty("username")&&!c.isString(e.username))return"username: string expected";if(null!=e.password&&e.hasOwnProperty("password")&&!c.isString(e.password))return"password: string expected";if(null!=e.ttl&&e.hasOwnProperty("ttl")&&!c.isInteger(e.ttl))return"ttl: integer expected";if(null!=e.uris&&e.hasOwnProperty("uris")){if(!Array.isArray(e.uris))return"uris: array expected";for(var t=0;t>>0),e.uris){if(!Array.isArray(e.uris))throw TypeError(".SdkTurnCredentials.uris: array expected");t.uris=[];for(var n=0;n>>3){case 1:i.content=e.string();break;case 2:i.endTime=e.int64();break;case 3:i.speakerAttendeeId=e.string();break;case 4:i.speakerExternalUserId=e.string();break;case 5:i.startTime=e.int64();break;case 6:i.type=e.int32();break;case 7:i.vocabularyFilterMatch=e.bool();break;case 8:i.confidence=e.double();break;case 9:i.stable=e.bool();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.content&&e.hasOwnProperty("content")&&!c.isString(e.content))return"content: string expected";if(null!=e.endTime&&e.hasOwnProperty("endTime")&&!(c.isInteger(e.endTime)||e.endTime&&c.isInteger(e.endTime.low)&&c.isInteger(e.endTime.high)))return"endTime: integer|Long expected";if(null!=e.speakerAttendeeId&&e.hasOwnProperty("speakerAttendeeId")&&!c.isString(e.speakerAttendeeId))return"speakerAttendeeId: string expected";if(null!=e.speakerExternalUserId&&e.hasOwnProperty("speakerExternalUserId")&&!c.isString(e.speakerExternalUserId))return"speakerExternalUserId: string expected";if(null!=e.startTime&&e.hasOwnProperty("startTime")&&!(c.isInteger(e.startTime)||e.startTime&&c.isInteger(e.startTime.low)&&c.isInteger(e.startTime.high)))return"startTime: integer|Long expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 1:case 2:}return null!=e.vocabularyFilterMatch&&e.hasOwnProperty("vocabularyFilterMatch")&&"boolean"!=typeof e.vocabularyFilterMatch?"vocabularyFilterMatch: boolean expected":null!=e.confidence&&e.hasOwnProperty("confidence")&&"number"!=typeof e.confidence?"confidence: number expected":null!=e.stable&&e.hasOwnProperty("stable")&&"boolean"!=typeof e.stable?"stable: boolean expected":null},e.fromObject=function(e){if(e instanceof l.SdkTranscriptItem)return e;var t=new l.SdkTranscriptItem;switch(null!=e.content&&(t.content=String(e.content)),null!=e.endTime&&(c.Long?(t.endTime=c.Long.fromValue(e.endTime)).unsigned=!1:"string"==typeof e.endTime?t.endTime=parseInt(e.endTime,10):"number"==typeof e.endTime?t.endTime=e.endTime:"object"==typeof e.endTime&&(t.endTime=new c.LongBits(e.endTime.low>>>0,e.endTime.high>>>0).toNumber())),null!=e.speakerAttendeeId&&(t.speakerAttendeeId=String(e.speakerAttendeeId)),null!=e.speakerExternalUserId&&(t.speakerExternalUserId=String(e.speakerExternalUserId)),null!=e.startTime&&(c.Long?(t.startTime=c.Long.fromValue(e.startTime)).unsigned=!1:"string"==typeof e.startTime?t.startTime=parseInt(e.startTime,10):"number"==typeof e.startTime?t.startTime=e.startTime:"object"==typeof e.startTime&&(t.startTime=new c.LongBits(e.startTime.low>>>0,e.startTime.high>>>0).toNumber())),e.type){case"PRONUNCIATION":case 1:t.type=1;break;case"PUNCTUATION":case 2:t.type=2}return null!=e.vocabularyFilterMatch&&(t.vocabularyFilterMatch=Boolean(e.vocabularyFilterMatch)),null!=e.confidence&&(t.confidence=Number(e.confidence)),null!=e.stable&&(t.stable=Boolean(e.stable)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.content="",c.Long){var i=new c.Long(0,0,!1);n.endTime=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.endTime=t.longs===String?"0":0;n.speakerAttendeeId="",n.speakerExternalUserId="",c.Long?(i=new c.Long(0,0,!1),n.startTime=t.longs===String?i.toString():t.longs===Number?i.toNumber():i):n.startTime=t.longs===String?"0":0,n.type=t.enums===String?"PRONUNCIATION":1,n.vocabularyFilterMatch=!1,n.confidence=0,n.stable=!1}return null!=e.content&&e.hasOwnProperty("content")&&(n.content=e.content),null!=e.endTime&&e.hasOwnProperty("endTime")&&("number"==typeof e.endTime?n.endTime=t.longs===String?String(e.endTime):e.endTime:n.endTime=t.longs===String?c.Long.prototype.toString.call(e.endTime):t.longs===Number?new c.LongBits(e.endTime.low>>>0,e.endTime.high>>>0).toNumber():e.endTime),null!=e.speakerAttendeeId&&e.hasOwnProperty("speakerAttendeeId")&&(n.speakerAttendeeId=e.speakerAttendeeId),null!=e.speakerExternalUserId&&e.hasOwnProperty("speakerExternalUserId")&&(n.speakerExternalUserId=e.speakerExternalUserId),null!=e.startTime&&e.hasOwnProperty("startTime")&&("number"==typeof e.startTime?n.startTime=t.longs===String?String(e.startTime):e.startTime:n.startTime=t.longs===String?c.Long.prototype.toString.call(e.startTime):t.longs===Number?new c.LongBits(e.startTime.low>>>0,e.startTime.high>>>0).toNumber():e.startTime),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?l.SdkTranscriptItem.Type[e.type]:e.type),null!=e.vocabularyFilterMatch&&e.hasOwnProperty("vocabularyFilterMatch")&&(n.vocabularyFilterMatch=e.vocabularyFilterMatch),null!=e.confidence&&e.hasOwnProperty("confidence")&&(n.confidence=t.json&&!isFinite(e.confidence)?String(e.confidence):e.confidence),null!=e.stable&&e.hasOwnProperty("stable")&&(n.stable=e.stable),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[1]="PRONUNCIATION"]=1,t[e[2]="PUNCTUATION"]=2,t}(),e}(),l.SdkTranscriptEntity=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.category=e.string();break;case 2:i.confidence=e.double();break;case 3:i.content=e.string();break;case 4:i.endTime=e.int64();break;case 5:i.startTime=e.int64();break;case 6:i.type=e.string();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.category&&e.hasOwnProperty("category")&&!c.isString(e.category)?"category: string expected":null!=e.confidence&&e.hasOwnProperty("confidence")&&"number"!=typeof e.confidence?"confidence: number expected":null!=e.content&&e.hasOwnProperty("content")&&!c.isString(e.content)?"content: string expected":null!=e.endTime&&e.hasOwnProperty("endTime")&&!(c.isInteger(e.endTime)||e.endTime&&c.isInteger(e.endTime.low)&&c.isInteger(e.endTime.high))?"endTime: integer|Long expected":null!=e.startTime&&e.hasOwnProperty("startTime")&&!(c.isInteger(e.startTime)||e.startTime&&c.isInteger(e.startTime.low)&&c.isInteger(e.startTime.high))?"startTime: integer|Long expected":null!=e.type&&e.hasOwnProperty("type")&&!c.isString(e.type)?"type: string expected":null},e.fromObject=function(e){if(e instanceof l.SdkTranscriptEntity)return e;var t=new l.SdkTranscriptEntity;return null!=e.category&&(t.category=String(e.category)),null!=e.confidence&&(t.confidence=Number(e.confidence)),null!=e.content&&(t.content=String(e.content)),null!=e.endTime&&(c.Long?(t.endTime=c.Long.fromValue(e.endTime)).unsigned=!1:"string"==typeof e.endTime?t.endTime=parseInt(e.endTime,10):"number"==typeof e.endTime?t.endTime=e.endTime:"object"==typeof e.endTime&&(t.endTime=new c.LongBits(e.endTime.low>>>0,e.endTime.high>>>0).toNumber())),null!=e.startTime&&(c.Long?(t.startTime=c.Long.fromValue(e.startTime)).unsigned=!1:"string"==typeof e.startTime?t.startTime=parseInt(e.startTime,10):"number"==typeof e.startTime?t.startTime=e.startTime:"object"==typeof e.startTime&&(t.startTime=new c.LongBits(e.startTime.low>>>0,e.startTime.high>>>0).toNumber())),null!=e.type&&(t.type=String(e.type)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.category="",n.confidence=0,n.content="",c.Long){var i=new c.Long(0,0,!1);n.endTime=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.endTime=t.longs===String?"0":0;c.Long?(i=new c.Long(0,0,!1),n.startTime=t.longs===String?i.toString():t.longs===Number?i.toNumber():i):n.startTime=t.longs===String?"0":0,n.type=""}return null!=e.category&&e.hasOwnProperty("category")&&(n.category=e.category),null!=e.confidence&&e.hasOwnProperty("confidence")&&(n.confidence=t.json&&!isFinite(e.confidence)?String(e.confidence):e.confidence),null!=e.content&&e.hasOwnProperty("content")&&(n.content=e.content),null!=e.endTime&&e.hasOwnProperty("endTime")&&("number"==typeof e.endTime?n.endTime=t.longs===String?String(e.endTime):e.endTime:n.endTime=t.longs===String?c.Long.prototype.toString.call(e.endTime):t.longs===Number?new c.LongBits(e.endTime.low>>>0,e.endTime.high>>>0).toNumber():e.endTime),null!=e.startTime&&e.hasOwnProperty("startTime")&&("number"==typeof e.startTime?n.startTime=t.longs===String?String(e.startTime):e.startTime:n.startTime=t.longs===String?c.Long.prototype.toString.call(e.startTime):t.longs===Number?new c.LongBits(e.startTime.low>>>0,e.startTime.high>>>0).toNumber():e.startTime),null!=e.type&&e.hasOwnProperty("type")&&(n.type=e.type),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkTranscriptAlternative=function(){function e(e){if(this.items=[],this.entities=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.items&&i.items.length||(i.items=[]),i.items.push(l.SdkTranscriptItem.decode(e,e.uint32()));break;case 2:i.transcript=e.string();break;case 3:i.entities&&i.entities.length||(i.entities=[]),i.entities.push(l.SdkTranscriptEntity.decode(e,e.uint32()));break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.items&&e.hasOwnProperty("items")){if(!Array.isArray(e.items))return"items: array expected";for(var t=0;t>>3){case 1:i.languageCode=e.string();break;case 2:i.score=e.double();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.languageCode&&e.hasOwnProperty("languageCode")&&!c.isString(e.languageCode)?"languageCode: string expected":null!=e.score&&e.hasOwnProperty("score")&&"number"!=typeof e.score?"score: number expected":null},e.fromObject=function(e){if(e instanceof l.SdkTranscriptLanguageWithScore)return e;var t=new l.SdkTranscriptLanguageWithScore;return null!=e.languageCode&&(t.languageCode=String(e.languageCode)),null!=e.score&&(t.score=Number(e.score)),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.languageCode="",n.score=0),null!=e.languageCode&&e.hasOwnProperty("languageCode")&&(n.languageCode=e.languageCode),null!=e.score&&e.hasOwnProperty("score")&&(n.score=t.json&&!isFinite(e.score)?String(e.score):e.score),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkTranscriptResult=function(){function e(e){if(this.alternatives=[],this.languageIdentification=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.alternatives&&i.alternatives.length||(i.alternatives=[]),i.alternatives.push(l.SdkTranscriptAlternative.decode(e,e.uint32()));break;case 2:i.channelId=e.string();break;case 3:i.endTime=e.int64();break;case 4:i.isPartial=e.bool();break;case 5:i.resultId=e.string();break;case 6:i.startTime=e.int64();break;case 7:i.languageCode=e.string();break;case 8:i.languageIdentification&&i.languageIdentification.length||(i.languageIdentification=[]),i.languageIdentification.push(l.SdkTranscriptLanguageWithScore.decode(e,e.uint32()));break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.alternatives&&e.hasOwnProperty("alternatives")){if(!Array.isArray(e.alternatives))return"alternatives: array expected";for(var t=0;t>>0,e.endTime.high>>>0).toNumber())),null!=e.isPartial&&(t.isPartial=Boolean(e.isPartial)),null!=e.resultId&&(t.resultId=String(e.resultId)),null!=e.startTime&&(c.Long?(t.startTime=c.Long.fromValue(e.startTime)).unsigned=!1:"string"==typeof e.startTime?t.startTime=parseInt(e.startTime,10):"number"==typeof e.startTime?t.startTime=e.startTime:"object"==typeof e.startTime&&(t.startTime=new c.LongBits(e.startTime.low>>>0,e.startTime.high>>>0).toNumber())),null!=e.languageCode&&(t.languageCode=String(e.languageCode)),e.languageIdentification){if(!Array.isArray(e.languageIdentification))throw TypeError(".SdkTranscriptResult.languageIdentification: array expected");for(t.languageIdentification=[],n=0;n>>0,e.endTime.high>>>0).toNumber():e.endTime),null!=e.isPartial&&e.hasOwnProperty("isPartial")&&(n.isPartial=e.isPartial),null!=e.resultId&&e.hasOwnProperty("resultId")&&(n.resultId=e.resultId),null!=e.startTime&&e.hasOwnProperty("startTime")&&("number"==typeof e.startTime?n.startTime=t.longs===String?String(e.startTime):e.startTime:n.startTime=t.longs===String?c.Long.prototype.toString.call(e.startTime):t.longs===Number?new c.LongBits(e.startTime.low>>>0,e.startTime.high>>>0).toNumber():e.startTime),null!=e.languageCode&&e.hasOwnProperty("languageCode")&&(n.languageCode=e.languageCode),e.languageIdentification&&e.languageIdentification.length)for(n.languageIdentification=[],r=0;r>>3==1?(i.results&&i.results.length||(i.results=[]),i.results.push(l.SdkTranscriptResult.decode(e,e.uint32()))):e.skipType(7&r)}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.results&&e.hasOwnProperty("results")){if(!Array.isArray(e.results))return"results: array expected";for(var t=0;t>>3){case 1:i.type=e.int32();break;case 2:i.eventTime=e.int64();break;case 3:i.transcriptionRegion=e.string();break;case 4:i.transcriptionConfiguration=e.string();break;case 5:i.message=e.string();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 1:case 2:case 3:case 4:case 5:}return null!=e.eventTime&&e.hasOwnProperty("eventTime")&&!(c.isInteger(e.eventTime)||e.eventTime&&c.isInteger(e.eventTime.low)&&c.isInteger(e.eventTime.high))?"eventTime: integer|Long expected":null!=e.transcriptionRegion&&e.hasOwnProperty("transcriptionRegion")&&!c.isString(e.transcriptionRegion)?"transcriptionRegion: string expected":null!=e.transcriptionConfiguration&&e.hasOwnProperty("transcriptionConfiguration")&&!c.isString(e.transcriptionConfiguration)?"transcriptionConfiguration: string expected":null!=e.message&&e.hasOwnProperty("message")&&!c.isString(e.message)?"message: string expected":null},e.fromObject=function(e){if(e instanceof l.SdkTranscriptionStatus)return e;var t=new l.SdkTranscriptionStatus;switch(e.type){case"STARTED":case 1:t.type=1;break;case"INTERRUPTED":case 2:t.type=2;break;case"RESUMED":case 3:t.type=3;break;case"STOPPED":case 4:t.type=4;break;case"FAILED":case 5:t.type=5}return null!=e.eventTime&&(c.Long?(t.eventTime=c.Long.fromValue(e.eventTime)).unsigned=!1:"string"==typeof e.eventTime?t.eventTime=parseInt(e.eventTime,10):"number"==typeof e.eventTime?t.eventTime=e.eventTime:"object"==typeof e.eventTime&&(t.eventTime=new c.LongBits(e.eventTime.low>>>0,e.eventTime.high>>>0).toNumber())),null!=e.transcriptionRegion&&(t.transcriptionRegion=String(e.transcriptionRegion)),null!=e.transcriptionConfiguration&&(t.transcriptionConfiguration=String(e.transcriptionConfiguration)),null!=e.message&&(t.message=String(e.message)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.type=t.enums===String?"STARTED":1,c.Long){var i=new c.Long(0,0,!1);n.eventTime=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.eventTime=t.longs===String?"0":0;n.transcriptionRegion="",n.transcriptionConfiguration="",n.message=""}return null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?l.SdkTranscriptionStatus.Type[e.type]:e.type),null!=e.eventTime&&e.hasOwnProperty("eventTime")&&("number"==typeof e.eventTime?n.eventTime=t.longs===String?String(e.eventTime):e.eventTime:n.eventTime=t.longs===String?c.Long.prototype.toString.call(e.eventTime):t.longs===Number?new c.LongBits(e.eventTime.low>>>0,e.eventTime.high>>>0).toNumber():e.eventTime),null!=e.transcriptionRegion&&e.hasOwnProperty("transcriptionRegion")&&(n.transcriptionRegion=e.transcriptionRegion),null!=e.transcriptionConfiguration&&e.hasOwnProperty("transcriptionConfiguration")&&(n.transcriptionConfiguration=e.transcriptionConfiguration),null!=e.message&&e.hasOwnProperty("message")&&(n.message=e.message),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[1]="STARTED"]=1,t[e[2]="INTERRUPTED"]=2,t[e[3]="RESUMED"]=3,t[e[4]="STOPPED"]=4,t[e[5]="FAILED"]=5,t}(),e}(),l.SdkTranscriptEvent=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.status=l.SdkTranscriptionStatus.decode(e,e.uint32());break;case 2:i.transcript=l.SdkTranscript.decode(e,e.uint32());break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";var t={};if(null!=e.status&&e.hasOwnProperty("status")&&(t.Event=1,n=l.SdkTranscriptionStatus.verify(e.status)))return"status."+n;if(null!=e.transcript&&e.hasOwnProperty("transcript")){if(1===t.Event)return"Event: multiple values";var n;if(t.Event=1,n=l.SdkTranscript.verify(e.transcript))return"transcript."+n}return null},e.fromObject=function(e){if(e instanceof l.SdkTranscriptEvent)return e;var t=new l.SdkTranscriptEvent;if(null!=e.status){if("object"!=typeof e.status)throw TypeError(".SdkTranscriptEvent.status: object expected");t.status=l.SdkTranscriptionStatus.fromObject(e.status)}if(null!=e.transcript){if("object"!=typeof e.transcript)throw TypeError(".SdkTranscriptEvent.transcript: object expected");t.transcript=l.SdkTranscript.fromObject(e.transcript)}return t},e.toObject=function(e,t){t||(t={});var n={};return null!=e.status&&e.hasOwnProperty("status")&&(n.status=l.SdkTranscriptionStatus.toObject(e.status,t),t.oneofs&&(n.Event="status")),null!=e.transcript&&e.hasOwnProperty("transcript")&&(n.transcript=l.SdkTranscript.toObject(e.transcript,t),t.oneofs&&(n.Event="transcript")),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkTranscriptFrame=function(){function e(e){if(this.events=[],e)for(var t=Object.keys(e),n=0;n>>3==1?(i.events&&i.events.length||(i.events=[]),i.events.push(l.SdkTranscriptEvent.decode(e,e.uint32()))):e.skipType(7&r)}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.events&&e.hasOwnProperty("events")){if(!Array.isArray(e.events))return"events: array expected";for(var t=0;t>>3){case 1:i.addedOrUpdatedVideoSubscriptions&&i.addedOrUpdatedVideoSubscriptions.length||(i.addedOrUpdatedVideoSubscriptions=[]),i.addedOrUpdatedVideoSubscriptions.push(l.SdkVideoSubscriptionConfiguration.decode(e,e.uint32()));break;case 2:i.removedVideoSubscriptionMids&&i.removedVideoSubscriptionMids.length||(i.removedVideoSubscriptionMids=[]),i.removedVideoSubscriptionMids.push(e.string());break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.addedOrUpdatedVideoSubscriptions&&e.hasOwnProperty("addedOrUpdatedVideoSubscriptions")){if(!Array.isArray(e.addedOrUpdatedVideoSubscriptions))return"addedOrUpdatedVideoSubscriptions: array expected";for(var t=0;t>>3){case 1:i.mid=e.string();break;case 2:i.attendeeId=e.string();break;case 3:i.streamId=e.uint32();break;case 4:i.priority=e.uint32();break;case 5:i.targetBitrateKbps=e.uint32();break;case 6:i.groupId=e.uint32();break;default:e.skipType(7&r)}}if(!i.hasOwnProperty("mid"))throw c.ProtocolError("missing required 'mid'",{instance:i});return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":c.isString(e.mid)?null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&!c.isString(e.attendeeId)?"attendeeId: string expected":null!=e.streamId&&e.hasOwnProperty("streamId")&&!c.isInteger(e.streamId)?"streamId: integer expected":null!=e.priority&&e.hasOwnProperty("priority")&&!c.isInteger(e.priority)?"priority: integer expected":null!=e.targetBitrateKbps&&e.hasOwnProperty("targetBitrateKbps")&&!c.isInteger(e.targetBitrateKbps)?"targetBitrateKbps: integer expected":null!=e.groupId&&e.hasOwnProperty("groupId")&&!c.isInteger(e.groupId)?"groupId: integer expected":null:"mid: string expected"},e.fromObject=function(e){if(e instanceof l.SdkVideoSubscriptionConfiguration)return e;var t=new l.SdkVideoSubscriptionConfiguration;return null!=e.mid&&(t.mid=String(e.mid)),null!=e.attendeeId&&(t.attendeeId=String(e.attendeeId)),null!=e.streamId&&(t.streamId=e.streamId>>>0),null!=e.priority&&(t.priority=e.priority>>>0),null!=e.targetBitrateKbps&&(t.targetBitrateKbps=e.targetBitrateKbps>>>0),null!=e.groupId&&(t.groupId=e.groupId>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.mid="",n.attendeeId="",n.streamId=0,n.priority=0,n.targetBitrateKbps=0,n.groupId=0),null!=e.mid&&e.hasOwnProperty("mid")&&(n.mid=e.mid),null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&(n.attendeeId=e.attendeeId),null!=e.streamId&&e.hasOwnProperty("streamId")&&(n.streamId=e.streamId),null!=e.priority&&e.hasOwnProperty("priority")&&(n.priority=e.priority),null!=e.targetBitrateKbps&&e.hasOwnProperty("targetBitrateKbps")&&(n.targetBitrateKbps=e.targetBitrateKbps),null!=e.groupId&&e.hasOwnProperty("groupId")&&(n.groupId=e.groupId),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkNotificationFrame=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.level=e.int32();break;case 2:i.message=e.string();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.level&&e.hasOwnProperty("level"))switch(e.level){default:return"level: enum value expected";case 1:case 2:case 3:}return null!=e.message&&e.hasOwnProperty("message")&&!c.isString(e.message)?"message: string expected":null},e.fromObject=function(e){if(e instanceof l.SdkNotificationFrame)return e;var t=new l.SdkNotificationFrame;switch(e.level){case"INFO":case 1:t.level=1;break;case"WARNING":case 2:t.level=2;break;case"ERROR":case 3:t.level=3}return null!=e.message&&(t.message=String(e.message)),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.level=t.enums===String?"ERROR":3,n.message=""),null!=e.level&&e.hasOwnProperty("level")&&(n.level=t.enums===String?l.SdkNotificationFrame.NotificationLevel[e.level]:e.level),null!=e.message&&e.hasOwnProperty("message")&&(n.message=e.message),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e.NotificationLevel=function(){var e={},t=Object.create(e);return t[e[1]="INFO"]=1,t[e[2]="WARNING"]=2,t[e[3]="ERROR"]=3,t}(),e}(),l.SdkPrimaryMeetingJoinFrame=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3==1?i.credentials=l.SdkMeetingSessionCredentials.decode(e,e.uint32()):e.skipType(7&r)}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.credentials&&e.hasOwnProperty("credentials")){var t=l.SdkMeetingSessionCredentials.verify(e.credentials);if(t)return"credentials."+t}return null},e.fromObject=function(e){if(e instanceof l.SdkPrimaryMeetingJoinFrame)return e;var t=new l.SdkPrimaryMeetingJoinFrame;if(null!=e.credentials){if("object"!=typeof e.credentials)throw TypeError(".SdkPrimaryMeetingJoinFrame.credentials: object expected");t.credentials=l.SdkMeetingSessionCredentials.fromObject(e.credentials)}return t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.credentials=null),null!=e.credentials&&e.hasOwnProperty("credentials")&&(n.credentials=l.SdkMeetingSessionCredentials.toObject(e.credentials,t)),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkPrimaryMeetingJoinAckFrame=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:i.attendeeId=e.string();break;case 2:i.externalUserId=e.string();break;case 3:i.joinToken=e.string();break;default:e.skipType(7&r)}}return i},e.decodeDelimited=function(e){return e instanceof o||(e=new o(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&!c.isString(e.attendeeId)?"attendeeId: string expected":null!=e.externalUserId&&e.hasOwnProperty("externalUserId")&&!c.isString(e.externalUserId)?"externalUserId: string expected":null!=e.joinToken&&e.hasOwnProperty("joinToken")&&!c.isString(e.joinToken)?"joinToken: string expected":null},e.fromObject=function(e){if(e instanceof l.SdkMeetingSessionCredentials)return e;var t=new l.SdkMeetingSessionCredentials;return null!=e.attendeeId&&(t.attendeeId=String(e.attendeeId)),null!=e.externalUserId&&(t.externalUserId=String(e.externalUserId)),null!=e.joinToken&&(t.joinToken=String(e.joinToken)),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.attendeeId="",n.externalUserId="",n.joinToken=""),null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&(n.attendeeId=e.attendeeId),null!=e.externalUserId&&e.hasOwnProperty("externalUserId")&&(n.externalUserId=e.externalUserId),null!=e.joinToken&&e.hasOwnProperty("joinToken")&&(n.joinToken=e.joinToken),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,a.util.toJSONOptions)},e}(),l.SdkVideoCodecCapability=function(){var e={},t=Object.create(e);return t[e[1]="VP8"]=1,t[e[3]="H264_CONSTRAINED_BASELINE_PROFILE"]=3,t}(),e.exports=l,c.Long=void 0,a.configure()},334:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=n(1938),o=n(3884),s=r(n(4046));t.default=class{constructor(e){this.chimeClient=e}makeTwoDigits(e){return e>9?e.toString():"0"+e.toString()}hmac(e,t){const n=new a.Sha256(t);return n.update(e),n.digest()}getDateTimeString(){const e=new Date;return e.getUTCFullYear()+this.makeTwoDigits(e.getUTCMonth()+1)+this.makeTwoDigits(e.getUTCDate())+"T"+this.makeTwoDigits(e.getUTCHours())+this.makeTwoDigits(e.getUTCMinutes())+this.makeTwoDigits(e.getUTCSeconds())+"Z"}getDateString(e){return e.substring(0,e.indexOf("T"))}getSignatureKey(e,t,n,r){return i(this,void 0,void 0,(function*(){const i=yield this.hmac(t,"AWS4"+e),a=yield this.hmac(n,i),o=yield this.hmac(r,a);return yield this.hmac("aws4_request",o)}))}signURL(e,t,n,r,a,c,l){return i(this,void 0,void 0,(function*(){const i=this.getDateTimeString(),d=this.getDateString(i);let u="";u=this.chimeClient.config.region instanceof Function?yield this.chimeClient.config.region():this.chimeClient.config.region;const f="host:"+r.toLowerCase()+"\n",h=d+"/"+u+"/"+n+"/aws4_request";let m;m=this.chimeClient.config.credentials instanceof Function?yield this.chimeClient.config.credentials():this.chimeClient.config.credentials;let p=new Map;p.set("X-Amz-Algorithm",["AWS4-HMAC-SHA256"]),p.set("X-Amz-Credential",[encodeURIComponent(m.accessKeyId+"/"+h)]),p.set("X-Amz-Date",[i]),p.set("X-Amz-Expires",["10"]),p.set("X-Amz-SignedHeaders",["host"]),m.sessionToken&&p.set("X-Amz-Security-Token",[encodeURIComponent(m.sessionToken)]),p.set(s.default.X_AMZN_VERSION,[encodeURIComponent(s.default.sdkVersion)]),p.set(s.default.X_AMZN_USER_AGENT,[encodeURIComponent(s.default.sdkUserAgentLowResolution)]),null==l||l.forEach(((e,t)=>{const n=encodeURIComponent(t);e.sort().forEach((e=>{p.has(n)||p.set(n,[]),p.get(n).push(encodeURIComponent(e))}))}));let g="";p=new Map([...p.entries()].sort()),p.forEach(((e,t)=>{e.forEach((e=>{g.length&&(g+="&"),g+=t+"="+e}))}));const v=e+"\n"+a+"\n"+g+"\n"+f+"\nhost\n"+o.toHex(yield this.hmac(c)),b=o.toHex(yield this.hmac(v)),y="AWS4-HMAC-SHA256\n"+i+"\n"+d+"/"+u+"/"+n+"/aws4_request\n"+b,S=yield this.getSignatureKey(m.secretAccessKey,d,u,n),C=o.toHex(yield this.hmac(y,S));return t+"://"+r+a+"?"+g+"&X-Amz-Signature="+C}))}}},7606:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.SimulcastLayers=void 0,function(e){e[e.Low=0]="Low",e[e.LowAndMedium=1]="LowAndMedium",e[e.LowAndHigh=2]="LowAndHigh",e[e.Medium=3]="Medium",e[e.MediumAndHigh=4]="MediumAndHigh",e[e.High=5]="High"}(n=t.SimulcastLayers||(t.SimulcastLayers={})),t.default=n},9880:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.AudioLogEvent=void 0,function(e){e[e.DeviceChanged=0]="DeviceChanged",e[e.MutedLocal=1]="MutedLocal",e[e.UnmutedLocal=2]="UnmutedLocal",e[e.Connected=3]="Connected",e[e.ConnectFailed=4]="ConnectFailed",e[e.RedmicStartLoss=5]="RedmicStartLoss",e[e.RedmicEndLoss=6]="RedmicEndLoss"}(n=t.AudioLogEvent||(t.AudioLogEvent={})),t.default=n},8597:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(4571)),o=r(n(6196)),s=r(n(9496)),c=r(n(2353)),l=r(n(2811)),d=r(n(7604)),u=r(n(1296)),f=r(n(3922)),h=n(289),m=n(8660),p=r(n(9880)),g=r(n(155));class v{constructor(e,t,n=v.INTERVAL_MS){this.audioVideoController=e,this.logger=t,this.interval=n,this.intervalScheduler=null,this.redRecoveryMetricReport=new c.default,this.lastRedRecoveryMetricReportConsumedTimestampMs=0,this.metricsAddTime=(e,t,n)=>{},this.metricsLogEvent=(e,t)=>{}}toAttribute(e){return this.toSuffix(e).substring(1)}toSuffix(e){return e.toLowerCase()===e?`_${e}`:e.toUpperCase()===e?`_${e.toLowerCase()}`:e.replace(/([A-Z][a-z]+)/g,(function(e){return`_${e}`})).replace(/([A-Z][A-Z]+)/g,(function(e){return`_${e}`})).toLowerCase()}logLatency(e,t,n){const i=this.toSuffix(e);this.logEventTime("meeting"+i,t,n)}logStateTimeout(e,t){const n=this.toSuffix(e);this.logEvent("meeting_session_state_timeout",Object.assign(Object.assign({},t),{state:`state${n}`}))}logAudioEvent(e,t){const n="audio"+this.toSuffix(p.default[e]);this.logEvent(n,t)}logVideoEvent(e,t){const n="video"+this.toSuffix(g.default[e]);this.logEvent(n,t)}logEventTime(e,t,n={}){const i=Object.assign(Object.assign({},n),{call_id:this.audioVideoController.configuration.meetingId,client_type:v.CLIENT_TYPE,metric_type:"latency"});this.logger.debug((()=>`[StatsCollector] ${e}: ${JSON.stringify(i)}`)),this.metricsAddTime(e,t,i)}logMeetingSessionStatus(e){const t=`${e.statusCode()}`;this.logEvent(t);const n={status:t,status_code:`${e.statusCode()}`};this.logEvent("meeting_session_status",n),e.isTerminal()&&this.logEvent("meeting_session_stopped",n),e.isAudioConnectionFailure()&&this.logEvent("meeting_session_audio_failed",n),e.isFailure()&&this.logEvent("meeting_session_failed",n)}logLifecycleEvent(e,t){const n={lifecycle_event:`lifecycle${this.toSuffix(d.default[e])}`,lifecycle_event_code:`${e}`,lifecycle_event_condition:`condition${this.toSuffix(u.default[t])}`,lifecycle_event_condition_code:`${t}`};this.logEvent("meeting_session_lifecycle",n)}logEvent(e,t={}){const n=Object.assign(Object.assign({},t),{call_id:this.audioVideoController.configuration.meetingId,client_type:v.CLIENT_TYPE});this.logger.debug((()=>`[StatsCollector] ${e}: ${JSON.stringify(n)}`)),this.metricsLogEvent(e,n)}start(e,t){return!this.intervalScheduler&&(this.logger.info("Starting StatsCollector"),this.signalingClient=e,this.videoStreamIndex=t,this.clientMetricReport=new a.default(this.logger,this.videoStreamIndex,this.audioVideoController.configuration.credentials.attendeeId),this.intervalScheduler=new f.default(this.interval),this.intervalScheduler.start((()=>i(this,void 0,void 0,(function*(){yield this.getStatsWrapper()})))),!0)}stop(){this.logger.info("Stopping StatsCollector"),this.intervalScheduler&&this.intervalScheduler.stop(),this.intervalScheduler=null}updateMetricValues(e,t){const n=t?this.clientMetricReport.streamMetricReports[Number(e.ssrc)]:this.clientMetricReport.globalMetricReport;let i;i=t?this.clientMetricReport.getMetricMap(n.mediaType,n.direction):this.clientMetricReport.getMetricMap();for(const t in e)t in i&&("number"==typeof e[t]?(n.previousMetrics[t]=n.currentMetrics[t],n.currentMetrics[t]=e[t]):"string"==typeof e[t]?n.currentStringMetrics[t]=e[t]:"object"==typeof e[t]?(n.previousObjectMetrics[t]=void 0===n.currentObjectMetrics[t]?e[t]:n.currentObjectMetrics[t],n.currentObjectMetrics[t]=e[t]):this.logger.error(`Unknown metric value type ${typeof e[t]} for metric ${t}`))}processRawMetricReports(e){this.clientMetricReport.currentSsrcs={};const t=Date.now();for(const t of e){const e=this.isStreamRawMetricReport(t.type);if(e){const e=this.clientMetricReport.streamMetricReports[Number(t.ssrc)];if(e)e.streamId=this.videoStreamIndex.streamIdForSSRC(Number(t.ssrc));else{const e=new l.default;e.mediaType=this.getMediaType(t),e.direction=this.getDirectionType(t),this.videoStreamIndex.allStreams().empty()||(e.streamId=this.videoStreamIndex.streamIdForSSRC(Number(t.ssrc)),void 0!==this.videoStreamIndex.groupIdForSSRC&&(e.groupId=this.videoStreamIndex.groupIdForSSRC(Number(t.ssrc)))),this.clientMetricReport.streamMetricReports[Number(t.ssrc)]=e}this.clientMetricReport.currentSsrcs[Number(t.ssrc)]=1}this.updateMetricValues(t,e)}this.clientMetricReport.removeDestroyedSsrcs(),this.clientMetricReport.previousTimestampMs=this.clientMetricReport.currentTimestampMs,this.clientMetricReport.currentTimestampMs=t,this.clientMetricReport.print()}addStreamMetricDimensionFrames(e,t){const n=this.clientMetricReport.getStreamDimensionMap();for(const i in t.currentStringMetrics)if(i in n){const r=h.SdkStreamDimension.create();r.type=n[i];const a=h.SdkDimensionValue.create();a.stringValue=t.currentStringMetrics[i],r.value=a,e.dimensions.push(r)}}addMetricFrame(e,t,n,i){const r=n.type,a=n.transform,o=n.source,s=t.streamMetricFrames.length,c=t.streamMetricFrames[s-1];if(r){const n=h.SdkMetric.create();n.type=r,n.value=a(o||e,i),i?c.metrics.push(n):t.globalMetrics.push(n)}}addGlobalMetricsToProtobuf(e){const t=this.clientMetricReport.getMetricMap();for(const n in this.clientMetricReport.globalMetricReport.currentMetrics)this.addMetricFrame(n,e,t[n])}addStreamMetricsToProtobuf(e){for(const t in this.clientMetricReport.streamMetricReports){const n=this.clientMetricReport.streamMetricReports[t],i=h.SdkStreamMetricFrame.create();i.streamId=n.streamId,i.metrics=[],this.addStreamMetricDimensionFrames(i,n),e.streamMetricFrames.push(i);const r=this.clientMetricReport.getMetricMap(n.mediaType,n.direction);for(const i in n.currentMetrics)this.addMetricFrame(i,e,r[i],Number(t));for(const i in n.currentStringMetrics)this.addMetricFrame(i,e,r[i],Number(t));for(const i in n.currentObjectMetrics)this.addMetricFrame(i,e,r[i],Number(t))}}makeClientMetricProtobuf(){const e=h.SdkClientMetricFrame.create();return e.globalMetrics=[],e.streamMetricFrames=[],this.addGlobalMetricsToProtobuf(e),this.addStreamMetricsToProtobuf(e),e}sendClientMetricProtobuf(e){this.signalingClient.sendClientMetrics(e)}isStreamRawMetricReport(e){return["inbound-rtp","inbound-rtp-red","outbound-rtp","remote-inbound-rtp","remote-outbound-rtp"].includes(e)}getMediaType(e){return"audio"===e.kind?s.default.AUDIO:s.default.VIDEO}getDirectionType(e){const{type:t}=e;return"inbound-rtp"===t||"remote-outbound-rtp"===t||"inbound-rtp-red"===t?o.default.DOWNSTREAM:o.default.UPSTREAM}isValidStandardRawMetric(e){return"inbound-rtp"===e.type||"inbound-rtp-red"===e.type||"outbound-rtp"===e.type||"remote-inbound-rtp"===e.type||"remote-outbound-rtp"===e.type||"candidate-pair"===e.type&&"succeeded"===e.state||"media-source"===e.type&&"audio"===e.kind}isValidSsrc(e){let t=!0;return this.isStreamRawMetricReport(e.type)&&this.getDirectionType(e)===o.default.DOWNSTREAM&&this.getMediaType(e)===s.default.VIDEO&&(t=this.videoStreamIndex.streamIdForSSRC(Number(e.ssrc))>0),t}isValidRawMetricReport(e){return this.isValidStandardRawMetric(e)&&this.isValidSsrc(e)}filterRawMetricReports(e){const t=[];for(const n of e)this.isValidRawMetricReport(n)&&t.push(n);return t}handleRawMetricReports(e){const t=this.filterRawMetricReports(e);this.logger.debug((()=>`Filtered raw metrics : ${JSON.stringify(t)}`));const n=[];this.maybeAddRedRecoveryMetrics(n),this.clientMetricReport.customStatsReports=n,t.push(...n),this.processRawMetricReports(t);const i=this.makeClientMetricProtobuf();this.sendClientMetricProtobuf(i),this.audioVideoController.forEachObserver((e=>{m.Maybe.of(e.metricsDidReceive).map((t=>t.bind(e)(this.clientMetricReport.clone())))}))}getStatsWrapper(){return i(this,void 0,void 0,(function*(){if(!this.audioVideoController.rtcPeerConnection)return;const e=[];try{const t=yield this.audioVideoController.rtcPeerConnection.getStats();this.clientMetricReport.rtcStatsReport=t,t.forEach((t=>{e.push(t)})),this.handleRawMetricReports(e)}catch(e){this.logger.error(e.message)}}))}overrideObservableMetric(e,t){this.clientMetricReport.overrideObservableMetric(e,t)}recoveryMetricsDidReceive(e){this.redRecoveryMetricReport=e}maybeAddRedRecoveryMetrics(e){this.redRecoveryMetricReport.currentTimestampMs!==this.lastRedRecoveryMetricReportConsumedTimestampMs&&(e.push({kind:"audio",type:"inbound-rtp-red",ssrc:this.redRecoveryMetricReport.ssrc,timestamp:this.redRecoveryMetricReport.currentTimestampMs,totalAudioPacketsLost:this.redRecoveryMetricReport.totalAudioPacketsLost,totalAudioPacketsExpected:this.redRecoveryMetricReport.totalAudioPacketsExpected,totalAudioPacketsRecoveredRed:this.redRecoveryMetricReport.totalAudioPacketsRecoveredRed,totalAudioPacketsRecoveredFec:this.redRecoveryMetricReport.totalAudioPacketsRecoveredFec}),this.lastRedRecoveryMetricReportConsumedTimestampMs=this.redRecoveryMetricReport.currentTimestampMs)}}t.default=v,v.INTERVAL_MS=1e3,v.CLIENT_TYPE="amazon-chime-sdk-js"},155:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.VideoLogEvent=void 0,function(e){e[e.InputAttached=0]="InputAttached",e[e.SendingFailed=1]="SendingFailed",e[e.SendingSuccess=2]="SendingSuccess"}(n=t.VideoLogEvent||(t.VideoLogEvent={})),t.default=n},8358:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(155)),o=r(n(1789));class s extends o.default{constructor(e){super(e.logger),this.context=e,this.taskName="AttachMediaInputTask"}run(){return i(this,void 0,void 0,(function*(){const e=this.context.transceiverController;e.setPeer(this.context.peer);try{e.setupLocalTransceivers()}catch(e){throw e}const t=this.context.activeAudioInput;if(t){const n=t.getAudioTracks();this.context.logger.info("attaching audio track to peer connection"),yield e.setAudioInput(n.length?n[0]:null)}else yield e.setAudioInput(null),this.context.logger.info("no audio track");this.setAudioCodecPreferences();const n=this.context.activeVideoInput;if(n){const t=n.getVideoTracks(),i=t.length?t[0]:null;if(this.context.logger.info("attaching video track to peer connection"),yield e.setVideoInput(i),this.context.enableSimulcast&&this.context.videoUplinkBandwidthPolicy){const t=this.context.videoUplinkBandwidthPolicy.chooseEncodingParameters();e.setEncodingParameters(t)}i&&this.context.statsCollector.logVideoEvent(a.default.InputAttached,this.context.videoDeviceInformation)}else yield e.setVideoInput(null),this.context.logger.info("no video track");this.context.videoSubscriptions=e.updateVideoTransceivers(this.context.videoStreamIndex,this.context.videosToReceive)}))}setAudioCodecPreferences(){const e=window.RTCRtpTransceiver&&"setCodecPreferences"in window.RTCRtpTransceiver.prototype,t=this.context.audioProfile.hasRedundancyEnabled();if(!e)return void this.context.logger.warn("Setting codec preferences not supported");const n=this.context.transceiverController.localAudioTransceiver(),{codecs:i}=RTCRtpSender.getCapabilities("audio");this.context.logger.debug(`Available audio codecs ${JSON.stringify(i,null,4)}`);const r=i.findIndex((e=>"audio/red"===e.mimeType));if(n){if(r>=0){const e=i[r];return i.splice(r,1),t?(i.unshift(e),this.context.logger.info("audio/red set as preferred codec")):this.context.logger.info("audio/red removed from preferred codec"),void n.setCodecPreferences(i)}this.context.logger.info("audio/red codec not supported")}else this.context.logger.error("audio transceiver is null")}}t.default=s},1789:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1124)),o=r(n(4456));t.default=class{constructor(e){this.logger=e,this.taskName="BaseTask",this.parentTask=null,this.status=o.default.IDLE,this.run=this.baseRun.bind(this,this.run),this.cancel=this.baseCancel.bind(this,this.cancel)}once(...e){return new a.default(this.logger,this,e)}cancel(){}name(){return this.parentTask?`${this.parentTask.name()}/${this.taskName}`:this.taskName}setParent(e){this.parentTask=e}getStatus(){return this.status}logAndThrow(e){throw this.logger.info(e),new Error(e)}baseRun(e){return i(this,void 0,void 0,(function*(){try{const t=Date.now();switch(this.logger.info(`running task ${this.name()}`),this.status){case o.default.RUNNING:this.logAndThrow(`${this.name()} is already running`);case o.default.CANCELED:this.logAndThrow(`${this.name()} was canceled before running`);case o.default.FINISHED:this.logAndThrow(`${this.name()} was already finished`)}this.status=o.default.RUNNING,yield e.call(this),this.logger.info(`${this.name()} took ${Math.round(Date.now()-t)} ms`)}catch(e){throw e}finally{this.status!==o.default.CANCELED&&(this.status=o.default.FINISHED)}}))}baseCancel(e){this.status!==o.default.CANCELED&&this.status!==o.default.FINISHED?(this.logger.info(`canceling task ${this.name()}`),this.status=o.default.CANCELED,e.call(this)):this.logger.info(`Not canceling ${this.name()}: state is ${this.status}`)}}},3216:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1789));class o extends a.default{constructor(e){super(e.logger),this.context=e,this.taskName="CleanRestartedSessionTask"}run(){return i(this,void 0,void 0,(function*(){this.context.resetConnectionSpecificState()}))}}t.default=o},7408:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(9416)),o=r(n(1789));class s extends o.default{constructor(e){super(e.logger),this.context=e,this.taskName="CleanStoppedSessionTask",this.taskCanceler=null}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}run(){return i(this,void 0,void 0,(function*(){try{this.context.signalingClient.ready()&&(this.context.signalingClient.closeConnection(),yield this.receiveWebSocketClosedEvent())}catch(e){throw e}finally{for(const e of this.context.removableObservers)e.removeObserver();this.context.resetConnectionSpecificState(),this.context.statsCollector.stop(),this.context.statsCollector=null,this.context.connectionMonitor.stop(),this.context.connectionMonitor=null,this.context.videoUplinkBandwidthPolicy.setTransceiverController&&this.context.videoUplinkBandwidthPolicy.setTransceiverController(void 0),this.context.videoDownlinkBandwidthPolicy.bindToTileController&&this.context.videoDownlinkBandwidthPolicy.bindToTileController(void 0);const e=this.context.videoTileController.getLocalVideoTile();e&&e.bindVideoStream("",!0,null,null,null,null),this.context.videoTileController.removeAllVideoTiles()}}))}receiveWebSocketClosedEvent(){return new Promise(((e,t)=>{const n=new class{constructor(e){this.signalingClient=e}cancel(){this.signalingClient.removeObserver(this),t(new Error("CleanStoppedSessionTask got canceled while waiting for the WebSocket closed event"))}handleSignalingClientEvent(t){t.type===a.default.WebSocketClosed&&(this.signalingClient.removeObserver(this),e())}}(this.context.signalingClient);this.taskCanceler=n,this.context.signalingClient.registerObserver(n)}))}}t.default=s},5482:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1789));class o extends a.default{constructor(e){super(e.logger),this.context=e,this.taskName="CreatePeerConnectionTask",this.removeTrackAddedEventListener=null,this.removeTrackRemovedEventListeners={},this.trackEvents=["ended","mute","unmute","isolationchange","overconstrained"],this.removeVideoTrackEventListeners={},this.trackAddedHandler=e=>{const t=e.track;if(this.context.logger.info(`received track event: kind=${t.kind} id=${t.id} label=${t.label}`),e.transceiver&&"inactive"===e.transceiver.currentDirection)return;if(0===e.streams.length)return void this.context.logger.warn("Track event but no stream");const n=e.streams[0];"audio"===t.kind?this.context.audioMixController.bindAudioStream(n):"video"!==t.kind||this.trackIsVideoInput(t)||this.addRemoteVideoTrack(t,n)}}removeObserver(){this.removeTrackAddedEventListener&&this.removeTrackAddedEventListener();for(const e in this.removeTrackRemovedEventListeners)this.removeTrackRemovedEventListeners[e]()}addPeerConnectionEventLogger(){const e=this.context.peer;e.addEventListener("connectionstatechange",(()=>{this.context.logger.info(`peer connection state changed: ${e.connectionState}`)})),e.addEventListener("negotiationneeded",(()=>{this.context.logger.info("peer connection negotiation is needed")})),e.addEventListener("icegatheringstatechange",(()=>{this.context.logger.info(`peer connection ice gathering state changed: ${e.iceGatheringState}`)})),e.addEventListener("icecandidate",(e=>{this.context.logger.info(`peer connection ice candidate: ${e.candidate?e.candidate.candidate:"(null)"}`)})),e.addEventListener("iceconnectionstatechange",(()=>{this.context.logger.info(`peer connection ice connection state changed: ${e.iceConnectionState}`)}))}run(){return i(this,void 0,void 0,(function*(){this.context.removableObservers.push(this);const e=this.context.turnCredentials&&this.context.turnCredentials.uris.length>0?{iceServers:[{urls:this.context.turnCredentials.uris,username:this.context.turnCredentials.username,credential:this.context.turnCredentials.password,credentialType:"password"}],iceTransportPolicy:"relay"}:{};e.bundlePolicy=this.context.browserBehavior.requiresBundlePolicy(),e.sdpSemantics="unified-plan",e.encodedInsertableStreams=this.context.audioProfile.hasRedundancyEnabled(),this.context.peer?this.context.logger.info("reusing peer connection"):(this.context.logger.info("creating new peer connection"),this.context.peer=new RTCPeerConnection(e),this.addPeerConnectionEventLogger()),this.removeTrackAddedEventListener=()=>{this.context.peer&&this.context.peer.removeEventListener("track",this.trackAddedHandler),this.removeTrackAddedEventListener=null},this.context.peer.addEventListener("track",this.trackAddedHandler)}))}trackIsVideoInput(e){return!!this.context.transceiverController.useTransceivers()&&(this.logger.debug((()=>"getting video track type")),this.context.transceiverController.trackIsVideoInput(e))}addRemoteVideoTrack(e,t){var n;const i=t.id,r=this.context.videoStreamIndex.attendeeIdForTrack(i);let a,o;if(this.context.videoTileController.getVideoTileForAttendeeId?(o=this.context.videoTileController.getVideoTileForAttendeeId(r),a=!!(null===(n=null==o?void 0:o.state())||void 0===n?void 0:n.boundVideoStream)):a=this.context.videoTileController.haveVideoTileForAttendeeId(r),a)return void this.context.logger.info(`Not adding remote track. Already have tile for attendeeId: ${r}`);o||(o=this.context.videoTileController.addVideoTile(),this.logger.info(`Created video tile ${o.id()}`));let s,c,l=this.context.videoStreamIndex.streamIdForTrack(i);void 0===l&&(this.logger.warn(`stream not found for tile=${o.id()} track=${i}`),l=null);for(let n=0;n{this.context.logger.info(`received the ${i} event for tile=${o.id()} id=${e.id} streamId=${l}`),"ended"===i&&this.removeRemoteVideoTrack(e,o.state())};t.addEventListener(i,n),this.removeVideoTrackEventListeners[e.id]||(this.removeVideoTrackEventListeners[e.id]=[]),this.removeVideoTrackEventListeners[e.id].push((()=>{t.removeEventListener(i,n)}))}}if(e.getSettings){const t=e.getSettings();s=t.width,c=t.height}else{const t=e.getCapabilities();s=t.width,c=t.height}const d=this.context.videoStreamIndex.externalUserIdForTrack(i);o.bindVideoStream(r,!1,t,s,c,l,d),this.logger.info(`video track added, use tile=${o.id()} track=${i} streamId=${l}`);const u="removetrack",f=t,h=()=>this.removeRemoteVideoTrack(e,o.state());this.removeTrackRemovedEventListeners[e.id]=()=>{f.removeEventListener(u,h),delete this.removeTrackRemovedEventListeners[e.id]},f.addEventListener(u,h)}removeRemoteVideoTrack(e,t){if(this.removeTrackRemovedEventListeners.hasOwnProperty(e.id)){this.removeTrackRemovedEventListeners[e.id]();for(const t of this.removeVideoTrackEventListeners[e.id])t();delete this.removeVideoTrackEventListeners[e.id]}this.logger.info(`video track ended, removing tile=${t.tileId} id=${e.id} stream=${t.streamId}`),t.streamId?this.context.videosPaused.remove(t.streamId):this.logger.warn(`no stream found for tile=${t.tileId}`),this.context.videoTileController.removeVideoTile(t.tileId)}}t.default=o,o.REMOVE_HANDLER_INTERVAL_MS=1e4},1129:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(5687)),o=r(n(326)),s=r(n(1789));class c extends s.default{constructor(e){super(e.logger),this.context=e,this.taskName="CreateSDPTask"}cancel(){if(this.cancelPromise){const e=new Error(`canceling ${this.name()}`);this.cancelPromise(e),delete this.cancelPromise}}sessionUsesAudio(){var e,t;return!!(null===(t=null===(e=this.context.meetingSessionConfiguration)||void 0===e?void 0:e.urls)||void 0===t?void 0:t.audioHostURL)}sessionUsesVideo(){let e;e=this.context.transceiverController.useTransceivers()?this.context.transceiverController.hasVideoInput():this.context.videoTileController.hasStartedLocalVideoTile();const t=!!this.context.videosToReceive&&!this.context.videosToReceive.empty(),n=e||t;return this.context.logger.info(`uses video: ${n} (enabled: true, sending: ${e}, receiving: ${t})`),n}run(){return i(this,void 0,void 0,(function*(){const e={offerToReceiveAudio:this.sessionUsesAudio(),offerToReceiveVideo:this.sessionUsesVideo()};this.logger.info(`peer connection offerOptions: ${JSON.stringify(e)}`),yield new Promise(((t,n)=>i(this,void 0,void 0,(function*(){this.cancelPromise=e=>{n(e)};try{if(this.context.sdpOfferInit=yield this.context.peer.createOffer(e),this.context.logger.info("peer connection created offer"),this.context.previousSdpOffer&&new o.default(this.context.sdpOfferInit.sdp).videoSendSectionHasDifferentSSRC(this.context.previousSdpOffer)){const e=new Error(`canceling ${this.name()} due to the meeting status code: ${a.default.IncompatibleSDP}`);return this.context.previousSdpOffer=null,void n(e)}t()}catch(e){n(e)}finally{delete this.cancelPromise}}))))}))}}t.default=c},6240:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(5687)),o=r(n(326)),s=r(n(1789));class c extends s.default{constructor(e,t=c.CHROME_VPN_TIMEOUT_MS){super(e.logger),this.context=e,this.chromeVpnTimeoutMs=t,this.taskName="FinishGatheringICECandidatesTask"}removeEventListener(){this.context.peer&&(this.context.peer.removeEventListener("icecandidate",this.context.iceCandidateHandler),this.context.turnCredentials||this.context.peer.removeEventListener("icegatheringstatechange",this.context.iceGatheringStateEventHandler))}cancel(){let e;this.context.browserBehavior.requiresIceCandidateGatheringTimeoutWorkaround()&&this.chromeVpnTimeoutMsthis.chromeVpnTimeoutMs&&(e=new Error(`canceling ${this.name()} due to the meeting status code: ${a.default.ICEGatheringTimeoutWorkaround}`)),this.cancelPromise&&(e=e||new Error(`canceling ${this.name()}`),this.cancelPromise(e),delete this.cancelPromise)}run(){return i(this,void 0,void 0,(function*(){if(this.context.peer||this.logAndThrow("session does not have peer connection; bypass ice gathering"),this.context.browserBehavior.requiresCheckForSdpConnectionAttributes()){if(new o.default(this.context.peer.localDescription.sdp).hasCandidatesForAllMLines())return void this.context.logger.info(`ice gathering already complete; bypass gathering, current local description ${this.context.peer.localDescription.sdp}`)}else this.context.logger.info(`iOS device does not require checking for connection attributes in SDP, current local description ${this.context.peer.localDescription.sdp}`);if(!this.context.browserBehavior.hasFirefoxWebRTC()&&"complete"!==this.context.peer.iceGatheringState||!new o.default(this.context.peer.localDescription.sdp).hasCandidates())try{yield new Promise(((e,t)=>{this.cancelPromise=e=>{this.removeEventListener(),t(e)},this.context.turnCredentials||(this.context.iceGatheringStateEventHandler=()=>{if("complete"===this.context.peer.iceGatheringState)return this.removeEventListener(),e(),void delete this.cancelPromise},this.context.peer.addEventListener("icegatheringstatechange",this.context.iceGatheringStateEventHandler)),this.context.iceCandidateHandler=n=>{if(this.context.logger.info(`ice candidate: ${n.candidate?n.candidate.candidate:"(null)"} state: ${this.context.peer.iceGatheringState}`),n.candidate&&(o.default.isRTPCandidate(n.candidate.candidate)&&this.context.iceCandidates.push(n.candidate),this.context.turnCredentials&&this.context.iceCandidates.length>=1))return this.context.logger.info("gathered at least one relay candidate"),this.removeEventListener(),e(),void delete this.cancelPromise;"complete"===this.context.peer.iceGatheringState&&(this.context.logger.info("done gathering ice candidates"),this.removeEventListener(),new o.default(this.context.peer.localDescription.sdp).hasCandidates()&&0!==this.context.iceCandidates.length?(e(),delete this.cancelPromise):(t(new Error("no ice candidates were gathered")),delete this.cancelPromise))},this.context.peer.addEventListener("icecandidate",this.context.iceCandidateHandler),this.startTimestampMs=Date.now()}))}catch(e){throw e}finally{this.startTimestampMs&&(this.context.iceGatheringDurationMs=Math.round(Date.now()-this.startTimestampMs))}else this.context.logger.info("ice gathering state is complete and candidates are in SDP; bypass gathering")}))}}t.default=c,c.CHROME_VPN_TIMEOUT_MS=5e3},1960:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t},o=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const c=s(n(3789)),l=s(n(5687)),d=s(n(7215)),u=a(n(7103)),f=s(n(9416)),h=s(n(2168)),m=n(289),p=s(n(1789));class g extends p.default{constructor(e){super(e.logger),this.context=e,this.taskName="JoinAndReceiveIndexTask",this.taskCanceler=null}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}run(){return o(this,void 0,void 0,(function*(){const e=yield new Promise(((e,t)=>{const n=this.context;n.turnCredentials=null;const i=new class{constructor(e){this.signalingClient=e}cancel(){this.signalingClient.removeObserver(this),t(new Error("JoinAndReceiveIndexTask got canceled while waiting for SdkIndexFrame"))}handleSignalingClientEvent(t){if(t.type===f.default.WebSocketClosed)return 4410===t.closeCode?void n.audioVideoController.handleMeetingSessionStatus(new c.default(l.default.MeetingEnded),new Error("The meeting already ended.")):void this.cancel();if(t.type!==f.default.ReceivedSignalFrame)return;if(t.message.type===m.SdkSignalFrame.Type.JOIN_ACK){const e=t.message.error;if(e)return n.audioVideoController.handleMeetingSessionStatus(new c.default(l.default.SignalingBadRequest),new Error(`Received error (status:${e.status}) when joining meeting ${e.description}`)),void this.cancel();const i=t.message.joinack;if(i&&i.videoSubscriptionLimit&&(n.videoSubscriptionLimit=i.videoSubscriptionLimit),n.serverSupportsCompression=null==i?void 0:i.wantsCompressedSdp,void 0!==(null==i?void 0:i.defaultServerSideNetworkAdaption)&&i.defaultServerSideNetworkAdaption!==u.default.Default&&void 0!==n.videoDownlinkBandwidthPolicy.setServerSideNetworkAdaption){const e=i.defaultServerSideNetworkAdaption;n.logger.info(`Overriding server side network adaption value to ${e}`),n.videoDownlinkBandwidthPolicy.setServerSideNetworkAdaption(u.convertServerSideNetworkAdaptionEnumFromSignaled(e))}return void(i&&i.turnCredentials?(n.turnCredentials=new d.default,n.turnCredentials.username=i.turnCredentials.username,n.turnCredentials.password=i.turnCredentials.password,n.turnCredentials.ttl=i.turnCredentials.ttl,n.turnCredentials.uris=i.turnCredentials.uris.map((e=>n.meetingSessionConfiguration.urls.urlRewriter(e))).filter((e=>!!e))):n.logger.error("missing TURN credentials in JoinAckFrame"))}if(t.message.type!==m.SdkSignalFrame.Type.INDEX)return;this.signalingClient.removeObserver(this);const i=t.message.index;e(i)}}(this.context.signalingClient);this.context.signalingClient.registerObserver(i),this.taskCanceler=i,this.context.previousSdpAnswerAsString="",this.context.previousSdpOffer=null,this.context.serverSupportsCompression=!1;const r=new h.default(this.context.meetingSessionConfiguration.applicationMetadata);void 0!==this.context.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption&&void 0!==this.context.videoDownlinkBandwidthPolicy.supportedServerSideNetworkAdaptions&&(r.serverSideNetworkAdaption=this.context.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption(),r.supportedServerSideNetworkAdaptions=this.context.videoDownlinkBandwidthPolicy.supportedServerSideNetworkAdaptions()),r.disablePeriodicKeyframeRequestOnContentSender=this.context.meetingSessionConfiguration.disablePeriodicKeyframeRequestOnContentSender,this.context.signalingClient.join(r)}));this.context.logger.info(`received first index ${JSON.stringify(e)}`),this.context.indexFrame=e}))}}t.default=g},6180:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(9416)),o=n(289),s=r(n(1789));class c extends s.default{constructor(e){super(e.logger),this.context=e,this.taskName="LeaveAndReceiveLeaveAckTask",this.taskCanceler=null}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}run(){return i(this,void 0,void 0,(function*(){this.context.signalingClient.ready()&&(this.context.signalingClient.leave(),this.context.logger.info("sent leave"),yield this.receiveLeaveAck())}))}receiveLeaveAck(){return new Promise(((e,t)=>{const n=new class{constructor(e,t){this.signalingClient=e,this.logger=t}cancel(){this.signalingClient.removeObserver(this),t(new Error("LeaveAndReceiveLeaveAckTask got canceled while waiting for IndexFrame"))}handleSignalingClientEvent(t){if(t.isConnectionTerminated())return this.signalingClient.removeObserver(this),this.logger.info("LeaveAndReceiveLeaveAckTask connection terminated"),void e();t.type===a.default.ReceivedSignalFrame&&t.message.type===o.SdkSignalFrame.Type.LEAVE_ACK&&(this.signalingClient.removeObserver(this),this.logger.info("got leave ack"),e())}}(this.context.signalingClient,this.context.logger);this.taskCanceler=n,this.context.signalingClient.registerObserver(n)}))}}t.default=c},2748:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(9416)),o=n(289),s=r(n(1789));class c extends s.default{constructor(e){super(e.logger),this.context=e,this.taskName="ListenForVolumeIndicatorsTask",this.realtimeMuteAndUnmuteHandler=e=>{this.context.signalingClient.mute(e)}}run(){return i(this,void 0,void 0,(function*(){this.context.removableObservers.push(this),this.context.signalingClient.registerObserver(this),this.context.realtimeController.realtimeSubscribeToMuteAndUnmuteLocalAudio(this.realtimeMuteAndUnmuteHandler)}))}removeObserver(){this.context.realtimeController.realtimeUnsubscribeToMuteAndUnmuteLocalAudio(this.realtimeMuteAndUnmuteHandler),this.context.signalingClient.removeObserver(this)}handleSignalingClientEvent(e){if(e.type===a.default.ReceivedSignalFrame)if(e.message.type===o.SdkSignalFrame.Type.AUDIO_STREAM_ID_INFO){const t=e.message.audioStreamIdInfo;this.context.volumeIndicatorAdapter.sendRealtimeUpdatesForAudioStreamIdInfo(t)}else if(e.message.type===o.SdkSignalFrame.Type.AUDIO_METADATA){const t=e.message.audioMetadata;this.context.volumeIndicatorAdapter.sendRealtimeUpdatesForAudioMetadata(t)}}}t.default=c},1981:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(6196)),o=r(n(9496)),s=r(n(9708)),c=r(n(2977)),l=r(n(1922)),d=r(n(3789)),u=r(n(5687)),f=r(n(9416)),h=n(289),m=r(n(9880)),p=n(8660),g=r(n(1789));class v extends g.default{constructor(e,t,n){super(e.logger),this.context=e,this.initialConnectionHealthData=n,this.taskName="MonitorTask",this.prevSignalStrength=1,this.currentAvailableStreamAvgBitrates=null,this.hasSignalingError=!1,this.presenceHandlerCalled=!1,this.isResubscribeCheckPaused=!1,this.pendingMetricsReport=void 0,this.isMeetingConnected=!1,this.checkAndSendWeakSignalEvent=e=>{const t=e<1,n=this.prevSignalStrength<1,i=t?n?null:m.default.RedmicStartLoss:n?m.default.RedmicEndLoss:null;i&&this.context.statsCollector.logAudioEvent(i),this.prevSignalStrength=e},this.realtimeFatalErrorCallback=e=>{this.logger.error(`realtime error: ${e}: ${e.stack}`),this.context.audioVideoController.handleMeetingSessionStatus(new d.default(u.default.RealtimeApiFailed),e)},this.realtimeAttendeeIdPresenceHandler=(e,t)=>{var n;const i=this.context.meetingSessionConfiguration.credentials.attendeeId;this.logger.info(`attendeePresenceReceived: ${i}`),i===e&&t&&!this.presenceHandlerCalled&&(this.presenceHandlerCalled=!0,this.context.attendeePresenceDurationMs=Date.now()-this.context.startAudioVideoTimestamp,null===(n=this.context.eventController)||void 0===n||n.publishEvent("attendeePresenceReceived",{attendeePresenceDurationMs:this.context.attendeePresenceDurationMs}))},this.generateBaseAudioVideoEventAttributes=()=>{const{signalingOpenDurationMs:e,startTimeMs:t,iceGatheringDurationMs:n,attendeePresenceDurationMs:i,meetingStartDurationMs:r}=this.context;return{meetingDurationMs:null===t?0:Math.round(Date.now()-t),signalingOpenDurationMs:e,iceGatheringDurationMs:n,attendeePresenceDurationMs:i,meetingStartDurationMs:r}},this.generateAudioVideoEventAttributesForReceivingAudioDropped=()=>{const e=this.generateBaseAudioVideoEventAttributes();return Object.assign(Object.assign({},e),{maxVideoTileCount:this.context.maxVideoTileCount,poorConnectionCount:this.context.poorConnectionCount})},this.reconnectionHealthPolicy=new s.default(e.logger,Object.assign({},t),this.initialConnectionHealthData.clone()),this.unusableAudioWarningHealthPolicy=new l.default(Object.assign({},t),this.initialConnectionHealthData.clone()),this.sendingAudioFailureHealthPolicy=new c.default(e.logger,Object.assign({},t),this.initialConnectionHealthData.clone())}removeObserver(){this.context.audioVideoController.removeObserver(this),this.context.realtimeController.realtimeUnsubscribeToFatalError(this.realtimeFatalErrorCallback),this.context.realtimeController.realtimeUnsubscribeToLocalSignalStrengthChange(this.checkAndSendWeakSignalEvent),this.context.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(this.realtimeAttendeeIdPresenceHandler),this.context.signalingClient.removeObserver(this)}run(){return i(this,void 0,void 0,(function*(){this.context.removableObservers.push(this),this.context.audioVideoController.addObserver(this),this.context.realtimeController.realtimeSubscribeToFatalError(this.realtimeFatalErrorCallback),this.context.realtimeController.realtimeSubscribeToLocalSignalStrengthChange(this.checkAndSendWeakSignalEvent),this.context.realtimeController.realtimeSubscribeToAttendeeIdPresence(this.realtimeAttendeeIdPresenceHandler),this.context.connectionMonitor.start(),this.context.statsCollector.start(this.context.signalingClient,this.context.videoStreamIndex),this.context.signalingClient.registerObserver(this)}))}pauseResubscribeCheck(){this.isResubscribeCheckPaused=!0}resumeResubscribeCheck(){this.isResubscribeCheckPaused&&(this.isResubscribeCheckPaused=!1,this.pendingMetricsReport&&(this.context.logger.info("Resuming resubscribe check with pending metrics report"),this.checkResubscribe(this.pendingMetricsReport)&&this.context.audioVideoController.update({needsRenegotiation:!1})))}videoTileDidUpdate(e){this.context.maxVideoTileCount=Math.max(this.context.maxVideoTileCount,this.context.videoTileController.getAllVideoTiles().length)}checkResubscribe(e){if(this.isResubscribeCheckPaused)return this.context.logger.info("Resubscribe check is paused, setting incoming client metric report as pending"),void(this.pendingMetricsReport=e);this.pendingMetricsReport=void 0;const t=e.getObservableMetrics(),n=t.availableOutgoingBitrate,i=t.nackCountReceivedPerSecond;let r=!1;this.context.videoDownlinkBandwidthPolicy.updateMetrics(e);const a=this.context.videoDownlinkBandwidthPolicy.wantsResubscribe();if(r=r||a,a){const e=this.context.videoDownlinkBandwidthPolicy.chooseSubscriptions();this.context.videosToReceive=e.truncate(this.context.videoSubscriptionLimit),e.size()>this.context.videosToReceive.size()&&this.logger.warn(`Video receive limit exceeded. Limiting the videos to ${this.context.videosToReceive.size()}. Please consider using AllHighestVideoBandwidthPolicy or VideoPriorityBasedPolicy along with chooseRemoteVideoSources api to select the video sources to be displayed.`),this.logger.info(`trigger resubscribe for down=${a}; videosToReceive=[${this.context.videosToReceive.array()}]`)}if(this.context.videoTileController.hasStartedLocalVideoTile()){this.context.videoUplinkBandwidthPolicy.updateConnectionMetric({uplinkKbps:n/1e3,nackCountPerSecond:i});const e=this.context.videoUplinkBandwidthPolicy.wantsResubscribe();r=r||e,e&&(this.logger.info(`trigger resubscribe for up=${e}; videosToReceive=[${this.context.videosToReceive.array()}]`),this.context.videoUplinkBandwidthPolicy.chooseEncodingParameters(),this.context.videoUplinkBandwidthPolicy.chooseMediaTrackConstraints())}return r}metricsDidReceive(e){if(this.checkResubscribe(e)&&this.context.audioVideoController.update({needsRenegotiation:!1}),!this.currentAvailableStreamAvgBitrates)return;const t=e.streamMetricReports,n=new Map;for(const e in t)t[e].mediaType===o.default.VIDEO&&t[e].direction===a.default.DOWNSTREAM&&n.set(t[e].streamId,t[e])}connectionHealthDidChange(e){0===e.consecutiveMissedPongs&&this.context.reconnectController&&this.context.reconnectController.setLastActiveTimestampMs(Date.now()),this.applyHealthPolicy(this.reconnectionHealthPolicy,e,(()=>{this.context.audioVideoController.handleMeetingSessionStatus(new d.default(u.default.ConnectionHealthReconnect),null)})),this.applyHealthPolicy(this.unusableAudioWarningHealthPolicy,e,(()=>{var e;this.context.poorConnectionCount+=1;const t=this.generateAudioVideoEventAttributesForReceivingAudioDropped();null===(e=this.context.eventController)||void 0===e||e.publishEvent("receivingAudioDropped",t),this.context.videoTileController.haveVideoTilesWithStreams()?this.context.audioVideoController.forEachObserver((e=>{p.Maybe.of(e.connectionDidSuggestStopVideo).map((t=>t.bind(e)()))})):this.context.audioVideoController.forEachObserver((e=>{p.Maybe.of(e.connectionDidBecomePoor).map((t=>t.bind(e)()))}))}),(()=>{this.context.audioVideoController.forEachObserver((e=>{p.Maybe.of(e.connectionDidBecomeGood).map((t=>t.bind(e)()))}))})),this.isMeetingConnected&&this.applyHealthPolicy(this.sendingAudioFailureHealthPolicy,e,(()=>{var e;const t=this.generateBaseAudioVideoEventAttributes();null===(e=this.context.eventController)||void 0===e||e.publishEvent("sendingAudioFailed",t)}),(()=>{var e;const t=this.generateBaseAudioVideoEventAttributes();null===(e=this.context.eventController)||void 0===e||e.publishEvent("sendingAudioRecovered",t)}))}audioVideoDidStart(){this.isMeetingConnected=!0}audioVideoDidStartConnecting(e){this.isMeetingConnected=!1}audioVideoDidStop(e){this.isMeetingConnected=!1}applyHealthPolicy(e,t,n,i){e.update(t);const r=e.healthIfChanged();null!==r&&(this.logger.info(`${e.name} value is now ${r}`),r<=e.minimumHealth()?p.Maybe.of(n).map((e=>e.bind(this)())):p.Maybe.of(i).map((e=>e.bind(this)())))}handleBitrateFrame(e){this.currentAvailableStreamAvgBitrates=e,e.serverAvailableOutgoingBitrate>0&&(this.logger.info(`Received server side estimation of available incoming bitrate ${e.serverAvailableOutgoingBitrate}kbps`),this.context.statsCollector.overrideObservableMetric("availableIncomingBitrate",1e3*e.serverAvailableOutgoingBitrate))}handleSignalingClientEvent(e){var t;if(e.type===f.default.WebSocketClosed&&this.isUnexpectedWebsocketCloseCode(e.closeCode)||e.type===f.default.WebSocketError||e.type===f.default.WebSocketFailed){if(e.type===f.default.WebSocketClosed&&this.context.logger.info(`The signaling connection was closed with code ${e.closeCode} and reason: ${e.closeReason}`),!this.hasSignalingError){const e=this.generateAudioVideoEventAttributesForReceivingAudioDropped();null===(t=this.context.eventController)||void 0===t||t.publishEvent("signalingDropped",e),this.hasSignalingError=!0}this.context.audioVideoController.handleMeetingSessionStatus(new d.default(u.default.SignalChannelClosedUnexpectedly),null)}else e.type===f.default.WebSocketOpen&&(this.hasSignalingError=!1);if(e.type===f.default.ReceivedSignalFrame){if(e.message.type===h.SdkSignalFrame.Type.NOTIFICATION){switch(e.message.notification.level){case h.SdkNotificationFrame.NotificationLevel.INFO:this.logger.info(`Received notification from server: ${e.message.notification.message}`);break;case h.SdkNotificationFrame.NotificationLevel.WARNING:this.logger.warn(`Received warning from server: ${e.message.notification.message}`);break;case h.SdkNotificationFrame.NotificationLevel.ERROR:this.logger.error(`Received error from server: ${e.message.notification.message}`);break;default:this.logger.error(`Received notification from server with unknown level ${e.message.notification.level}: ${e.message.notification.message}`)}return}if(e.message.bitrates){const t=e.message.bitrates;this.context.videoStreamIndex.integrateBitratesFrame(t),this.context.videoDownlinkBandwidthPolicy.updateIndex(this.context.videoStreamIndex),this.handleBitrateFrame(e.message.bitrates)}const t=d.default.fromSignalFrame(e.message);e.message.type!==h.SdkSignalFrame.Type.PRIMARY_MEETING_JOIN_ACK&&t.statusCode()!==u.default.OK&&this.context.audioVideoController.handleMeetingSessionStatus(t,null)}}isUnexpectedWebsocketCloseCode(e){return 1006===e||e>=4500&&e<4600}}t.default=v},8831:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{cancel(){}name(){return"NoOpTask"}run(){return Promise.resolve()}setParent(e){}}},1124:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(813)),a=i(n(7797));t.default=class{constructor(e,t,n){this.logger=e,this.task=t,this.dependencies=n,this.canceled=!1}name(){return`${this.task.name()} (once)`}cancel(){if(!this.canceled){if(this.dependencies)for(const e of this.dependencies)e.cancel();this.logger.info(`Canceling ${this.name()}`),a.default.nextTick((()=>this.task.cancel())),this.canceled=!0,this.cancelPromise&&a.default.nextTick((()=>this.cancelPromise(new Error(`canceling ${this.name()}`))))}}logDependencies(){if(this.logger.getLogLevel()>r.default.INFO)return;if(!this.dependencies)return;const e=this.dependencies.filter((e=>e)).map((e=>e.name())).join(", ");this.logger.info(`${this.task.name()} waiting for dependencies: ${e}`)}run(){if(this.promise)return this.promise;const e=this.dependencies?Promise.all(this.dependencies.map((e=>null==e?void 0:e.run()))):Promise.resolve();return this.logDependencies(),this.ongoing=e.then((()=>this.task.run())),this.promise=new Promise(((e,t)=>{this.cancelPromise=t,this.ongoing.then(e).catch(t)}))}setParent(e){this.task.setParent(e)}}},4543:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(3920)),o=r(n(9416)),s=r(n(1789));class c extends s.default{constructor(e){super(e.logger),this.context=e,this.taskName="OpenSignalingConnectionTask",this.taskCanceler=null}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}run(){return i(this,void 0,void 0,(function*(){const e=this.context.meetingSessionConfiguration;this.context.signalingClient.openConnection(new a.default(e.urls.signalingURL,e.credentials.joinToken));const t=Date.now();try{yield new Promise(((e,t)=>{const n=new class{constructor(e){this.signalingClient=e}cancel(){this.signalingClient.removeObserver(this),t(new Error("OpenSignalingConnectionTask got canceled while waiting to open signaling connection"))}handleSignalingClientEvent(n){switch(n.type){case o.default.WebSocketOpen:this.signalingClient.removeObserver(this),e();break;case o.default.WebSocketFailed:this.signalingClient.removeObserver(this),t(new Error("WebSocket connection failed"))}}}(this.context.signalingClient);this.context.signalingClient.registerObserver(n),this.taskCanceler=n}))}catch(e){throw e}finally{this.context.signalingOpenDurationMs=Math.round(Date.now()-t),this.logger.info(`Opening signaling connection took ${this.context.signalingOpenDurationMs} ms`)}}))}}t.default=c},8556:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1789));class o extends a.default{constructor(e,t,n){super(e),this.taskName=t,this.tasksToRunParallel=n;for(const e of n)e.setParent(this)}cancel(){for(const e of this.tasksToRunParallel)this.logger.info(`canceling parallel group task ${this.name()} subtask ${e.name()}`),e.cancel()}run(){return i(this,void 0,void 0,(function*(){const e=[];for(const t of this.tasksToRunParallel)this.logger.info(`parallel group task ${this.name()} running subtask ${t.name()}`),e.push(t.run());const t=[];for(let n=0;n0){const e=t.join(", ");this.logAndThrow(`parallel group task ${this.name()} failed for tasks: ${e}`)}this.logger.info(`parallel group task ${this.name()} completed`)}))}}t.default=o},9945:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=n(3204),o=r(n(9416)),s=n(289),c=r(n(1789));class l extends c.default{constructor(e,t,n){super(e.logger),this.context=e,this.credentials=t,this.completionCallback=n,this.taskName="PromoteToPrimaryMeetingTask",this.taskCanceler=null}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}run(){return i(this,void 0,void 0,(function*(){this.context.signalingClient.ready()?(this.context.signalingClient.promoteToPrimaryMeeting(this.credentials),this.context.logger.info("Sent request to join primary meeting"),yield this.receivePrimaryMeetingJoinAck()):this.completionCallback(new a.MeetingSessionStatus(a.MeetingSessionStatusCode.SignalingRequestFailed))}))}receivePrimaryMeetingJoinAck(){return new Promise(((e,t)=>{const n=new class{constructor(e,t,n){this.signalingClient=e,this.completionCallback=t,this.logger=n}cancel(){this.signalingClient.removeObserver(this),this.completionCallback(new a.MeetingSessionStatus(a.MeetingSessionStatusCode.SignalingRequestFailed)),e()}handleSignalingClientEvent(t){t.isConnectionTerminated()&&(this.signalingClient.removeObserver(this),this.logger.info("PromoteToPrimaryMeetingTask connection terminated"),this.completionCallback(new a.MeetingSessionStatus(a.MeetingSessionStatusCode.SignalingRequestFailed)),e()),t.type===o.default.ReceivedSignalFrame&&t.message.type===s.SdkSignalFrame.Type.PRIMARY_MEETING_JOIN_ACK&&(this.signalingClient.removeObserver(this),this.logger.info("Got a primary meeting join ACK"),this.completionCallback(a.MeetingSessionStatus.fromSignalFrame(t.message)),e())}}(this.context.signalingClient,this.completionCallback,this.context.logger);this.taskCanceler=n,this.context.signalingClient.registerObserver(n)}))}}t.default=l},1209:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1789));class o extends a.default{constructor(e){super(e.logger),this.context=e,this.taskName="ReceiveAudioInputTask"}run(){var e,t;return i(this,void 0,void 0,(function*(){if(!(null===(t=null===(e=this.context.meetingSessionConfiguration)||void 0===e?void 0:e.urls)||void 0===t?void 0:t.audioHostURL))return void this.context.logger.info("No audio connection: not acquiring audio input");if(this.context.activeAudioInput)return void this.context.logger.info("an active audio input exists");let n;try{n=yield this.context.mediaStreamBroker.acquireAudioInputStream()}catch(e){this.context.logger.warn("could not acquire audio input from current device")}n?this.context.activeAudioInput=n:this.context.logger.warn("an audio input is not available")}))}}t.default=o},6274:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(9416)),o=n(289),s=r(n(1789));class c extends s.default{constructor(e){super(e.logger),this.context=e,this.taskName="ReceiveRemoteVideoPauseResume",this.serverPausedVideoTileIds=new Set}removeObserver(){this.context.signalingClient.removeObserver(this)}run(){return i(this,void 0,void 0,(function*(){this.context.signalingClient.registerObserver(this),this.context.removableObservers.push(this)}))}handleSignalingClientEvent(e){if(e.type!==a.default.ReceivedSignalFrame||e.message.type!==o.SdkSignalFrame.Type.PAUSE&&e.message.type!==o.SdkSignalFrame.Type.RESUME)return;const t=e.message.pause,n=e.message.type;if(this.context.logger.info(`received new ${n===o.SdkSignalFrame.Type.PAUSE?"pause":"resume"} frame: ${JSON.stringify(t)}`),!t||void 0===this.context.videoTileController.getVideoTileForAttendeeId||void 0===this.context.videoDownlinkBandwidthPolicy.forEachObserver||void 0===this.context.videoStreamIndex.attendeeIdForGroupId)return;const i=t.groupIds.map((e=>{const t=this.context.videoStreamIndex.attendeeIdForGroupId(e);return this.context.videoTileController.getVideoTileForAttendeeId(t)}));for(const e of i)void 0!==e&&(n===o.SdkSignalFrame.Type.PAUSE?e.state().paused||(this.serverPausedVideoTileIds.add(e.id()),this.context.videoDownlinkBandwidthPolicy.forEachObserver((t=>{t.tileWillBePausedByDownlinkPolicy(e.id())})),e.pause()):e.state().paused&&this.serverPausedVideoTileIds.has(e.id())&&(this.serverPausedVideoTileIds.delete(e.id()),this.context.videoDownlinkBandwidthPolicy.forEachObserver((t=>{t.tileWillBeUnpausedByDownlinkPolicy(e.id())})),e.unpause()))}}t.default=c},5547:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(5687)),o=r(n(7215)),s=r(n(214)),c=r(n(4046)),l=r(n(1789));class d extends l.default{constructor(e){super(e.logger),this.context=e,this.taskName="ReceiveTURNCredentialsTask",this.url=e.meetingSessionConfiguration.urls.turnControlURL,this.meetingId=e.meetingSessionConfiguration.meetingId,this.joinToken=e.meetingSessionConfiguration.credentials.joinToken}cancel(){if(this.cancelPromise){const e=new Error(`canceling ${this.name()}`);this.cancelPromise(e),delete this.cancelPromise}}run(){return i(this,void 0,void 0,(function*(){if(this.context.turnCredentials)return void this.context.logger.info("TURN credentials available, skipping credentials fetch");if(this.context.logger.error("missing TURN credentials - falling back to fetch"),!this.url)return void this.context.logger.info("TURN control url not supplied, skipping credentials fetch");const e={method:"POST",mode:"cors",cache:"no-cache",credentials:"omit",headers:{"Content-Type":"application/json","X-Chime-Auth-Token":"_aws_wt_session="+new s.default(this.joinToken).base()},redirect:"follow",referrer:"no-referrer",body:JSON.stringify({meetingId:this.meetingId})};this.context.logger.info(`requesting TURN credentials from ${this.url}`);const t=yield new Promise(((t,n)=>i(this,void 0,void 0,(function*(){this.cancelPromise=e=>{n(e)};try{const i=yield fetch(c.default.urlWithVersion(this.url),e);if(this.context.logger.info("received TURN credentials"),i.status&&403===i.status)return void n(new Error(`canceling ${this.name()} due to the meeting status code: ${a.default.TURNCredentialsForbidden}`));if(i.status&&404===i.status)return void n(new Error(`canceling ${this.name()} due to the meeting status code: ${a.default.MeetingEnded}`));t(yield i.json())}catch(e){n(e)}finally{delete this.cancelPromise}}))));this.context.turnCredentials=new o.default,this.context.turnCredentials.password=t.password,this.context.turnCredentials.ttl=t.ttl,this.context.turnCredentials.uris=t.uris.map((e=>this.context.meetingSessionConfiguration.urls.urlRewriter(e))).filter((e=>!!e)),this.context.turnCredentials.username=t.username}))}}t.default=d},120:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(214)),o=n(289),s=r(n(1789));class c extends s.default{constructor(e){super(e.logger),this.context=e,this.taskName="ReceiveVideoInputTask"}run(){return i(this,void 0,void 0,(function*(){const e=this.context.videoDuplexMode===o.SdkStreamServiceType.RX||this.context.videoDuplexMode===o.SdkStreamServiceType.DUPLEX;if(this.context.videoTileController.hasStartedLocalVideoTile()?this.context.videoDuplexMode=e?o.SdkStreamServiceType.DUPLEX:o.SdkStreamServiceType.TX:this.context.videoDuplexMode=e?o.SdkStreamServiceType.RX:0,this.context.videoCaptureAndEncodeParameter=this.context.videoUplinkBandwidthPolicy.chooseCaptureAndEncodeParameters(),!this.context.videoTileController.hasStartedLocalVideoTile())return this.context.logger.info("has not started local video tile"),void(this.context.activeVideoInput&&(this.context.activeVideoInput=void 0,this.context.videoStreamIndex.integrateUplinkPolicyDecision([])));const t=this.context.videoTileController.getLocalVideoTile();let n;try{n=yield this.context.mediaStreamBroker.acquireVideoInputStream()}catch(e){this.context.logger.warn("could not acquire video input from current device"),this.context.videoTileController.stopLocalVideoTile()}if(this.context.enableSimulcast){const e=this.context.videoUplinkBandwidthPolicy.chooseEncodingParameters();this.context.videoStreamIndex.integrateUplinkPolicyDecision(Array.from(e.values()))}if(this.context.activeVideoInput=n,n){const i=n.getVideoTracks();if(!i||0===i.length)return;const r=this.context.meetingSessionConfiguration.credentials.attendeeId,o=new a.default(r).hasModality(a.default.MODALITY_CONTENT),s=i[0].getSettings();if(this.context.enableSimulcast&&!o){const t=this.context.videoUplinkBandwidthPolicy.chooseMediaTrackConstraints();this.context.logger.info(`simulcast: choose constraint ${JSON.stringify(t)}`);try{yield i[0].applyConstraints(t)}catch(e){this.context.logger.info("simulcast: pass video without more constraint")}}const c=this.context.audioVideoController.configuration.credentials.externalUserId;t.bindVideoStream(r,!0,n,s.width,s.height,null,c);for(let e=0;e{const n=new o.default(e.attendeeId);return!(n.base()===t&&n.hasModality(o.default.MODALITY_CONTENT))}));const{videoStreamIndex:n,videoDownlinkBandwidthPolicy:i,videoUplinkBandwidthPolicy:r}=this.context,a=n.allVideoSendingSourcesExcludingSelf(t);n.integrateIndexFrame(e),i.updateIndex(n),r.updateIndex(n),this.resubscribe(i,r),this.updateVideoAvailability(e),this.handleIndexVideosPausedAtSource(),e.supportedReceiveCodecIntersection.length>0&&this.handleSupportedVideoReceiveCodecIntersection(e);const s=n.allVideoSendingSourcesExcludingSelf(t);this.areVideoSourcesEqual(a,s)||this.context.audioVideoController.forEachObserver((e=>{d.Maybe.of(e.remoteVideoSourcesDidChange).map((t=>t.bind(e)(s)))}))}areVideoSourcesEqual(e,t){if(e.length!==t.length)return!1;const n=(e,t)=>e.attendee.attendeeId.localeCompare(t.attendee.attendeeId),i=[...e].sort(n),r=[...t].sort(n);for(let e=0;ethis.context.videosToReceive.size()&&this.logger.warn(`Video receive limit exceeded. Limiting the videos to ${this.context.videosToReceive.size()}. Please consider using AllHighestVideoBandwidthPolicy or VideoPriorityBasedPolicy along with chooseRemoteVideoSources api to select the video sources to be displayed.`),this.context.videoCaptureAndEncodeParameter=t.chooseCaptureAndEncodeParameters(),this.logger.info(`trigger resubscribe for up=${i} down=${n}; videosToReceive=[${this.context.videosToReceive.array()}] captureParams=${JSON.stringify(this.context.videoCaptureAndEncodeParameter)}`),this.context.audioVideoController.update({needsRenegotiation:!1})}updateVideoAvailability(e){if(!this.context.videosToReceive)return void this.logger.error("videosToReceive must be set in the meeting context.");const t=new a.default;t.remoteVideoAvailable=!this.context.videosToReceive.empty(),t.canStartLocalVideo=!e.atCapacity,this.context.lastKnownVideoAvailability&&this.context.lastKnownVideoAvailability.equal(t)||(this.context.lastKnownVideoAvailability=t.clone(),this.context.audioVideoController.forEachObserver((e=>{d.Maybe.of(e.videoAvailabilityDidChange).map((n=>n.bind(e)(t.clone())))})))}handleSupportedVideoReceiveCodecIntersection(e){if(void 0===this.context.videoSendCodecPreferences)return;const t=[];let n=!1;for(const i of this.context.videoSendCodecPreferences){let r=!1;for(const n of e.supportedReceiveCodecIntersection)if(i.equals(s.default.fromSignaled(n))){r=!0,t.push(i);break}void 0!==this.context.currentVideoSendCodec&&!r&&i.equals(this.context.currentVideoSendCodec)&&(n=!0)}t.length>0?this.context.meetingSupportedVideoSendCodecPreferences=t:(this.logger.warn("Interesection of meeting receive codec support and send codec preferences has no overlap, falling back to just values provided in `setVideoCodecSendPreferences`"),this.context.meetingSupportedVideoSendCodecPreferences=void 0),n&&this.context.audioVideoController.update({needsRenegotiation:!0})}handleIndexVideosPausedAtSource(){const e=this.context.videoStreamIndex.streamsPausedAtSource();for(const t of this.context.videoTileController.getAllVideoTiles()){const n=t.state();e.contain(n.streamId)?t.markPoorConnection()&&this.logger.info(`marks the tile ${n.tileId} as having a poor connection`):t.unmarkPoorConnection()&&this.logger.info(`unmarks the tile ${n.tileId} as having a poor connection`)}}}t.default=f},4191:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(1789));class a extends r.default{constructor(e,t,n="RunnableTask"){super(e),this.fn=t,this.taskName=n}run(){return this.fn().then((()=>{}))}}t.default=a},9485:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1018)),o=r(n(9416)),s=n(289),c=r(n(1789));class l extends c.default{constructor(e){super(e.logger),this.context=e,this.taskName="SendAndReceiveDataMessagesTask",this.sendDataMessageHandler=(e,t,n)=>{if(this.context.signalingClient.ready()){let i;i=t instanceof Uint8Array?t:"string"==typeof t?(new TextEncoder).encode(t):(new TextEncoder).encode(JSON.stringify(t)),this.validateDataMessage(e,i,n);const r=s.SdkDataMessagePayload.create();r.topic=e,r.lifetimeMs=n,r.data=i;const a=s.SdkDataMessageFrame.create();a.messages=[r],this.context.signalingClient.sendDataMessage(a)}else this.context.logger.error("Signaling client is not ready")}}run(){return i(this,void 0,void 0,(function*(){this.context.removableObservers.push(this),this.context.signalingClient.registerObserver(this),this.context.realtimeController.realtimeSubscribeToSendDataMessage(this.sendDataMessageHandler)}))}removeObserver(){this.context.realtimeController.realtimeUnsubscribeFromSendDataMessage(this.sendDataMessageHandler),this.context.signalingClient.removeObserver(this)}handleSignalingClientEvent(e){if(e.type===o.default.ReceivedSignalFrame&&e.message.type===s.SdkSignalFrame.Type.DATA_MESSAGE)for(const t of e.message.dataMessage.messages){const e=new a.default(t.ingestTimeNs/1e6,t.topic,t.data,t.senderAttendeeId,t.senderExternalUserId,0===t.ingestTimeNs);this.context.realtimeController.realtimeReceiveDataMessage(e)}}validateDataMessage(e,t,n){if(!l.TOPIC_REGEX.test(e))throw new Error("Invalid topic");if(t.length>l.DATA_SIZE)throw new Error("Data size has to be less than 2048 bytes");if(n&&n<0)throw new Error("The life time of the message has to be non negative")}}t.default=l,l.TOPIC_REGEX=new RegExp(/^[a-zA-Z0-9_-]{1,36}$/),l.DATA_SIZE=2048},7079:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1789)),o=r(n(4456));class s extends a.default{constructor(e,t,n){super(e),this.taskName=t,this.tasksToRunSerially=n,this.currentTask=null;for(const e of n)e.setParent(this)}cancel(){this.currentTask&&(this.logger.info(`canceling serial group task ${this.name()} subtask ${this.currentTask.name()}`),this.currentTask.cancel())}run(){return i(this,void 0,void 0,(function*(){for(const e of this.tasksToRunSerially){this.getStatus()===o.default.CANCELED&&this.logAndThrow(`serial group task ${this.name()} was canceled`);try{this.logger.info(`serial group task ${this.name()} running subtask ${e.name()}`),this.currentTask=e,yield e.run(),this.logger.info(`serial group task ${this.name()} completed subtask ${e.name()}`)}catch(e){this.logAndThrow(`serial group task ${this.name()} was canceled due to subtask ${this.currentTask.name()} error: ${e.message}`)}finally{this.currentTask=null}}this.logger.info(`serial group task ${this.name()} completed`)}))}}t.default=s},4833:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(543)),o=r(n(326)),s=r(n(1789));class c extends s.default{constructor(e){super(e.logger),this.context=e,this.taskName="SetLocalDescriptionTask"}cancel(){if(this.cancelPromise){const e=new Error(`canceling ${this.name()}`);this.cancelPromise(e),delete this.cancelPromise}}run(){return i(this,void 0,void 0,(function*(){const e=this.context.peer;let t=this.context.sdpOfferInit.sdp;if(this.context.browserBehavior.supportsVideoLayersAllocationRtpHeaderExtension()&&(t=new o.default(t).withVideoLayersAllocationRtpHeaderExtension(this.context.previousSdpOffer).sdp),(new a.default).requiresDisablingH264Encoding()&&(t=new o.default(t).removeH264SupportFromSendSection().sdp),void 0!==this.context.videoSendCodecPreferences&&this.context.videoSendCodecPreferences.length>0&&(t=new o.default(t).withVideoSendCodecPreferences(void 0!==this.context.meetingSupportedVideoSendCodecPreferences?this.context.meetingSupportedVideoSendCodecPreferences:this.context.videoSendCodecPreferences).sdp),this.context.audioProfile&&(t=new o.default(t).withAudioMaxAverageBitrate(this.context.audioProfile.audioBitrateBps).sdp,this.context.audioProfile.isStereo()&&(t=new o.default(t).withStereoAudio().sdp),this.context.audioProfile.hasRedundancyEnabled())){const e=new o.default(t).getAudioPayloadTypes();this.context.transceiverController&&this.context.transceiverController.setAudioPayloadTypes&&this.context.transceiverController.setAudioPayloadTypes(e)}this.logger.debug((()=>`local description is >>>${t}<<<`));const n={type:"offer",sdp:t,toJSON:null};yield new Promise(((t,r)=>i(this,void 0,void 0,(function*(){this.cancelPromise=e=>{r(e)};try{yield e.setLocalDescription(n),t()}catch(e){r(e)}finally{delete this.cancelPromise}})))),this.context.logger.info("set local description")}))}}t.default=c},5275:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(326)),o=r(n(1789));class s extends o.default{constructor(e){super(e.logger),this.context=e,this.taskName="SetRemoteDescriptionTask"}cancel(){this.cancelICEPromise&&this.cancelICEPromise()}run(){return i(this,void 0,void 0,(function*(){this.context.peer||this.logAndThrow("session does not have peer connection; bypass set remote description");let e=this.context.sdpAnswer;e=new a.default(e).withoutServerReflexiveCandidates().sdp,this.context.audioProfile&&(e=new a.default(e).withAudioMaxAverageBitrate(this.context.audioProfile.audioBitrateBps).sdp,this.context.audioProfile.isStereo()&&(e=new a.default(e).withStereoAudio().sdp)),void 0!==this.context.videoSendCodecPreferences&&this.context.videoSendCodecPreferences.length>0&&(e=new a.default(e).withVideoSendCodecPreferences(void 0!==this.context.meetingSupportedVideoSendCodecPreferences?this.context.meetingSupportedVideoSendCodecPreferences:this.context.videoSendCodecPreferences).sdp,this.context.currentVideoSendCodec=new a.default(e).highestPriorityVideoSendCodec()),this.logger.info(`processed remote description is >>>${e}<<<`);const t={type:"answer",sdp:e,toJSON:null};try{yield this.createICEConnectionCompletedPromise(t)}catch(e){throw e}}))}createICEConnectionCompletedPromise(e){return new Promise(((t,n)=>i(this,void 0,void 0,(function*(){const i=()=>{"connected"!==this.context.peer.iceConnectionState&&"completed"!==this.context.peer.iceConnectionState||(this.context.peer.removeEventListener("iceconnectionstatechange",i),t())};this.cancelICEPromise=()=>{this.context.peer&&this.context.peer.removeEventListener("iceconnectionstatechange",i),n(new Error(`${this.name()} got canceled while waiting for the ICE connection state`))},this.context.peer.addEventListener("iceconnectionstatechange",i);try{yield this.context.peer.setRemoteDescription(e),this.logger.info("set remote description, waiting for ICE connection"),i()}catch(e){n(e)}}))))}}t.default=s},5924:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(326)),o=r(n(3320)),s=n(7103),c=r(n(9416)),l=r(n(6729)),d=n(289),u=n(1819),f=r(n(1789));class h extends f.default{constructor(e){super(e.logger),this.context=e,this.taskName="SubscribeAndReceiveSubscribeAckTask",this.taskCanceler=null,this.textCompressor=new o.default(e.logger)}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}run(){return i(this,void 0,void 0,(function*(){let e="";if(this.context.peer&&this.context.peer.localDescription&&(e=new a.default(this.context.peer.localDescription.sdp).withUnifiedPlanFormat().sdp),!this.context.enableSimulcast){let e=0,t=0;this.context.videoCaptureAndEncodeParameter&&(e=this.context.videoCaptureAndEncodeParameter.captureFrameRate(),t=this.context.videoCaptureAndEncodeParameter.encodeBitrates()[0]);const n={rid:"hi",maxBitrate:1e3*t,maxFramerate:e,active:!0};this.context.videoStreamIndex.integrateUplinkPolicyDecision([n])}this.context.videoStreamIndex.subscribeFrameSent();const t=this.fixUpSubscriptionOrder(e,this.context.videoSubscriptions),n=this.context.videoDuplexMode===d.SdkStreamServiceType.TX||this.context.videoDuplexMode===d.SdkStreamServiceType.DUPLEX;let i;const r=e;if(this.context.serverSupportsCompression){const t=this.context.previousSdpOffer?this.context.previousSdpOffer.sdp:"";i=this.textCompressor.compress(r,t),this.context.logger.info(`Compressed the SDP message from ${r.length} to ${i.length} bytes.`),e=""}this.context.previousSdpOffer=new a.default(r);const o=new l.default(this.context.meetingSessionConfiguration.credentials.attendeeId,e,this.context.meetingSessionConfiguration.urls.audioHostURL,this.context.realtimeController.realtimeIsLocalAudioMuted(),!1,t,n,this.context.videoStreamIndex.localStreamDescriptions(),!0,i);void 0===this.context.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption||s.serverSideNetworkAdaptionIsNoneOrDefault(this.context.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption())||void 0===this.context.videoDownlinkBandwidthPolicy.getVideoPreferences||(o.videoSubscriptionConfiguration=u.convertVideoPreferencesToSignalingClientVideoSubscriptionConfiguration(this.context,t.map((e=>0===e?0:this.context.videoStreamIndex.groupIdForStreamId(e))),this.context.videoDownlinkBandwidthPolicy.getVideoPreferences())),this.context.logger.info(`sending subscribe: ${JSON.stringify(o)}`),this.context.signalingClient.subscribe(o);const c=yield this.receiveSubscribeAck();this.context.logger.info(`got subscribe ack: ${JSON.stringify(c)}`);let f="";c.compressedSdpAnswer&&c.compressedSdpAnswer.length?(f=this.textCompressor.decompress(c.compressedSdpAnswer,this.context.previousSdpAnswerAsString),0===f.length&&(this.context.sdpAnswer="",this.context.previousSdpAnswerAsString="",this.logAndThrow("Error occurred while trying to decompress the SDP answer.")),this.context.logger.info(`Decompressed the SDP message from ${c.compressedSdpAnswer.length} to ${f.length} bytes.`),this.context.sdpAnswer=f):this.context.sdpAnswer=c.sdpAnswer,this.context.previousSdpAnswerAsString=this.context.sdpAnswer,this.context.videoStreamIndex.integrateSubscribeAckFrame(c)}))}fixUpSubscriptionOrder(e,t){if(void 0===this.context.transceiverController.getMidForStreamId)return t;const n=new Map;for(const e of t){const t=this.context.transceiverController.getMidForStreamId(e);void 0!==t?n.set(t,e):0!==e&&this.logger.warn(`Could not find MID for stream ID: ${e}`)}const i=new a.default(e).mediaSections(),r=[];for(const e of i)if("video"===e.mediaType)if("recvonly"===e.direction){const t=n.get(e.mid);if(void 0===t){this.logger.warn(`Could not find stream ID for MID: ${e.mid}`);continue}r.push(t)}else r.push(0);return this.logger.info(`Fixed up ${JSON.stringify(t)} to ${JSON.stringify(r)} (may be same))}`),r}receiveSubscribeAck(){return new Promise(((e,t)=>{const n=new class{constructor(e){this.signalingClient=e}cancel(){this.signalingClient.removeObserver(this),t(new Error("SubscribeAndReceiveSubscribeAckTask got canceled while waiting for SdkSubscribeAckFrame"))}handleSignalingClientEvent(t){if(t.type===c.default.WebSocketClosed)return void this.cancel();if(t.type!==c.default.ReceivedSignalFrame||t.message.type!==d.SdkSignalFrame.Type.SUBSCRIBE_ACK)return;this.signalingClient.removeObserver(this);const n=t.message.suback;e(n)}}(this.context.signalingClient);this.context.signalingClient.registerObserver(n),this.taskCanceler=n}))}}t.default=h},4456:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.IDLE="IDLE",e.RUNNING="RUNNING",e.CANCELED="CANCELED",e.FINISHED="FINISHED"}(n||(n={})),t.default=n},250:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(4929)),o=r(n(1789));class s extends o.default{constructor(e,t,n){super(e),this.taskToRunBeforeTimeout=t,this.timeoutMs=n,this.taskName=`Timeout${this.timeoutMs}ms`,t.setParent(this)}cancel(){this.logger.info(`canceling timeout task ${this.name()} subtask ${this.taskToRunBeforeTimeout}`),this.taskToRunBeforeTimeout.cancel()}run(){return i(this,void 0,void 0,(function*(){const e=new a.default(this.timeoutMs);e.start((()=>{this.logger.info(`timeout reached for task ${this.name()}`),this.taskToRunBeforeTimeout.cancel()}));try{yield this.taskToRunBeforeTimeout.run()}finally{e.stop()}this.logger.info(`timeout task ${this.name()} completed`)}))}}t.default=s},6171:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(5687)),o=r(n(1789));class s extends o.default{constructor(e){super(e.logger),this.context=e,this.taskName="WaitForAttendeePresenceTask"}cancel(){if(this.cancelPromise){const e=new Error(`canceling ${this.name()} due to the meeting status code: ${a.default.NoAttendeePresent}`);this.cancelPromise(e),delete this.cancelPromise}}run(){return i(this,void 0,void 0,(function*(){const e=this.context.meetingSessionConfiguration.credentials.attendeeId;return new Promise(((t,n)=>{const i=(n,r,a,o,s)=>{e===n&&r&&(this.context.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(i),t(),delete this.cancelPromise)};this.cancelPromise=e=>{this.context.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(i),n(e)},this.context.realtimeController.realtimeSubscribeToAttendeeIdPresence(i)}))}))}}t.default=s},365:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(3765)),o=r(n(2353)),s=r(n(4773)),c=r(n(1044)),l=r(n(7797));t.default=class{constructor(e,t,n){this.logger=e,this.browserBehavior=t,this.meetingSessionContext=n,this._localCameraTransceiver=null,this._localAudioTransceiver=null,this.videoSubscriptions=[],this.defaultMediaStream=null,this.peer=null,this.streamIdToTransceiver=new Map,this.groupIdToTransceiver=new Map,this.audioRedWorker=null,this.audioRedWorkerURL=null,this.audioMetricsHistory=new Array,this.redMetricsObservers=new Set,this.currentNumRedundantEncodings=0,this.lastRedHolddownTimerStartTimestampMs=0,this.lastHighPacketLossEventTimestampMs=0,this.lastAudioRedTurnOffTimestampMs=0,this.maxAudioMetricsHistory=20,this.audioRedPacketLossShortEvalPeriodMs=5e3,this.audioRedPacketLossLongEvalPeriodMs=15e3,this.audioRedHoldDownTimeMs=3e5,this.redRecoveryTimeMs=6e4}setEncodingParameters(e){return i(this,void 0,void 0,(function*(){if(!this._localCameraTransceiver||"sendrecv"!==this._localCameraTransceiver.direction)return;const t=this._localCameraTransceiver.sender;if(!e||0===e.size)return;const n=Array.from(e.values()),i=t.getParameters();if(i.encodings&&0!==i.encodings.length)for(const e of i.encodings)for(const t of n){if((e.rid||t.rid)&&e.rid!==t.rid)continue;let n;for(n in t)"rid"!==n&&"codecPayloadType"!==n&&t.hasOwnProperty(n)&&(e[n]=t[n])}else i.encodings=n;yield t.setParameters(i)}))}localAudioTransceiver(){return this._localAudioTransceiver}localVideoTransceiver(){return this._localCameraTransceiver}setVideoSendingBitrateKbps(e){return i(this,void 0,void 0,(function*(){if(!this._localCameraTransceiver||"sendrecv"!==this._localCameraTransceiver.direction)return;const t=this._localCameraTransceiver.sender;if(!t||e<=0)return;const n=t.getParameters();n.encodings||(n.encodings=[{}]);for(const t of n.encodings)t.maxBitrate=1e3*e;yield t.setParameters(n)}))}setPeer(e){this.peer=e}reset(){this.destroyAudioRedWorkerAndStates(),this._localCameraTransceiver=null,this._localAudioTransceiver=null,this.videoSubscriptions=[],this.defaultMediaStream=null,this.peer=null}useTransceivers(){return!!this.peer&&void 0!==this.peer.getTransceivers}hasVideoInput(){return!(!this._localCameraTransceiver||"sendrecv"!==this._localCameraTransceiver.direction)}trackIsVideoInput(e){return!!this._localCameraTransceiver&&(e===this._localCameraTransceiver.sender.track||e===this._localCameraTransceiver.receiver.track)}setupLocalTransceivers(){var e,t;this.useTransceivers()&&(this.defaultMediaStream||"undefined"==typeof MediaStream||(this.defaultMediaStream=new MediaStream),this._localAudioTransceiver||(this._localAudioTransceiver=this.peer.addTransceiver("audio",{direction:"inactive",streams:[this.defaultMediaStream]}),(null===(t=null===(e=this.meetingSessionContext)||void 0===e?void 0:e.audioProfile)||void 0===t?void 0:t.hasRedundancyEnabled())&&this.setupAudioRedWorker()),this._localCameraTransceiver||(this._localCameraTransceiver=this.addTransceiver("video",{direction:"inactive",streams:[this.defaultMediaStream]})))}replaceAudioTrack(e){return i(this,void 0,void 0,(function*(){return this._localAudioTransceiver&&"sendrecv"===this._localAudioTransceiver.direction?(yield this._localAudioTransceiver.sender.replaceTrack(e),!0):(this.logger.info("audio transceiver direction is not set up or not activated"),!1)}))}setAudioInput(e){return i(this,void 0,void 0,(function*(){yield this.setTransceiverInput(this._localAudioTransceiver,e)}))}setVideoInput(e){return i(this,void 0,void 0,(function*(){yield this.setTransceiverInput(this._localCameraTransceiver,e)}))}updateVideoTransceivers(e,t){if(!this.useTransceivers())return t.array();const n=this.peer.getTransceivers();return this.videoSubscriptions=[0],t=t.clone(),this.updateTransceivers(n,e,t),this.logger.debug((()=>this.debugDumpTransceivers())),this.videoSubscriptions}updateTransceivers(e,t,n){const i=n.array();0===e.length||e[0].stop?0!==e.length&&this.updateTransceiverWithStop(e,t,i):(this.logger.info("Updating transceivers without `stop` function"),this.updateTransceiverWithoutStop(e,t,i));for(const e of i){const n=this.addTransceiver("video",{direction:"recvonly",streams:[new MediaStream]});this.streamIdToTransceiver.set(e,n),this.groupIdToTransceiver.set(t.groupIdForStreamId(e),n),this.videoSubscriptions.push(e),this.logger.info(`adding transceiver mid: ${n.mid} subscription: ${e} direction: recvonly`)}}updateTransceiverWithStop(e,t,n){let i=1;this.videoSubscriptions=[0];for(const r of e){if(r===this._localCameraTransceiver||!this.transceiverIsVideo(r)||!r.mid)continue;let e=!1;const a=t.streamIdForTrack("v_"+r.mid);if("inactive"!==r.direction&&void 0!==a)for(const[o,s]of n.entries())if(t.StreamIdsInSameGroup(a,s)){r.direction="recvonly",this.videoSubscriptions[i]=s,e=!0,this.streamIdToTransceiver.delete(a),this.streamIdToTransceiver.set(s,r),n.splice(o,1);break}if(!e){this.videoSubscriptions[i]=0,this.logger.info(`Stopping MID: ${r.mid}, direction: ${r.direction}, current direction: ${r.currentDirection}`),r.stop();for(const[e,n]of this.streamIdToTransceiver.entries())r.mid===n.mid&&(this.streamIdToTransceiver.delete(e),this.groupIdToTransceiver.delete(t.groupIdForStreamId(e)))}i+=1}}updateTransceiverWithoutStop(e,t,n){let i=1;for(const r of e)if(r!==this._localCameraTransceiver&&this.transceiverIsVideo(r)){if(this.videoSubscriptions[i]=0,"inactive"!==r.direction){const e=t.streamIdForTrack("v_"+r.mid);if(void 0!==e)for(const[a,o]of n.entries())if(t.StreamIdsInSameGroup(e,o)){r.direction="recvonly",this.videoSubscriptions[i]=o,this.streamIdToTransceiver.delete(e),this.streamIdToTransceiver.set(o,r),n.splice(a,1);break}}i+=1}i=1;for(const r of e)if(r!==this._localCameraTransceiver&&this.transceiverIsVideo(r)){if("inactive"===r.direction&&n.length>0){r.direction="recvonly";const e=n.shift();this.videoSubscriptions[i]=e,this.streamIdToTransceiver.set(e,r),this.groupIdToTransceiver.set(t.groupIdForStreamId(e),r)}else if(0===this.videoSubscriptions[i]){r.direction="inactive";for(const[e,n]of this.streamIdToTransceiver.entries())r===n&&(this.streamIdToTransceiver.delete(e),this.groupIdToTransceiver.delete(t.groupIdForStreamId(e)))}i+=1}}getMidForStreamId(e){var t;return null===(t=this.streamIdToTransceiver.get(e))||void 0===t?void 0:t.mid}setStreamIdForMid(e,t){for(const[n,i]of this.streamIdToTransceiver.entries())if(i.mid===e)return this.streamIdToTransceiver.delete(n),void this.streamIdToTransceiver.set(t,i)}getMidForGroupId(e){var t;return null===(t=this.groupIdToTransceiver.get(e))||void 0===t?void 0:t.mid}transceiverIsVideo(e){return e.receiver&&e.receiver.track&&"video"===e.receiver.track.kind||e.sender&&e.sender.track&&"video"===e.sender.track.kind}debugDumpTransceivers(){let e="",t=0;for(const n of this.peer.getTransceivers())this.transceiverIsVideo(n)&&(e+=`transceiver index=${t} mid=${n.mid} subscription=${this.videoSubscriptions[t]} direction=${n.direction}\n`,t+=1);return e}setTransceiverInput(e,t){return i(this,void 0,void 0,(function*(){e&&(e.direction=t?"sendrecv":"inactive",yield e.sender.replaceTrack(t))}))}forEachRedMetricsObserver(e){for(const t of this.redMetricsObservers)l.default.nextTick((()=>{this.redMetricsObservers.has(t)&&t.recoveryMetricsDidReceive(e)}))}disableAudioRedundancy(){this.meetingSessionContext.audioProfile=new a.default(this.meetingSessionContext.audioProfile.audioBitrateBps,!1),this.meetingSessionContext.audioVideoController.setAudioProfile(this.meetingSessionContext.audioProfile)}setupAudioRedWorker(){var e,t;const n=!!window.RTCRtpScriptTransform,i=!!RTCRtpSender.prototype.createEncodedStreams;if(n)this.logger.info("[AudioRed] Supports encoded insertable streams using RTCRtpScriptTransform");else{if(!i)throw this.disableAudioRedundancy(),new Error("[AudioRed] Encoded insertable streams not supported. Recreating peer connection with audio redundancy disabled.");this.logger.info("[AudioRed] Supports encoded insertable streams using TransformStream")}try{this.audioRedWorkerURL=URL.createObjectURL(new Blob([c.default],{type:"application/javascript"})),this.logger.info(`[AudioRed] Redundant audio worker URL ${this.audioRedWorkerURL}`),this.audioRedWorker=new Worker(this.audioRedWorkerURL)}catch(e){throw this.logger.error(`[AudioRed] Unable to create audio red worker due to ${e}`),URL.revokeObjectURL(this.audioRedWorkerURL),this.audioRedWorkerURL=null,this.audioRedWorker=null,this.disableAudioRedundancy(),this.logger.info("[AudioRed] Recreating peer connection with audio redundancy disabled"),e}if(this.audioRedEnabled=!0,this.audioRedWorker.onmessage=e=>{if("REDWorkerLog"===e.data.type)this.logger.info(e.data.log);else if("RedundantAudioEncoderStats"===e.data.type){const t=new o.default;t.currentTimestampMs=Date.now(),t.ssrc=e.data.ssrc,t.totalAudioPacketsLost=e.data.totalAudioPacketsLost,t.totalAudioPacketsExpected=e.data.totalAudioPacketsExpected,t.totalAudioPacketsRecoveredRed=e.data.totalAudioPacketsRecoveredRed,t.totalAudioPacketsRecoveredFec=e.data.totalAudioPacketsRecoveredFec,this.forEachRedMetricsObserver(t)}},n)this._localAudioTransceiver.sender.transform=new RTCRtpScriptTransform(this.audioRedWorker,{type:"SenderTransform"}),this._localAudioTransceiver.receiver.transform=new RTCRtpScriptTransform(this.audioRedWorker,{type:"ReceiverTransform"});else if(i){const e=this._localAudioTransceiver.sender.createEncodedStreams(),t=this._localAudioTransceiver.receiver.createEncodedStreams();this.audioRedWorker.postMessage({msgType:"StartRedWorker",send:e,receive:t},[e.readable,e.writable,t.readable,t.writable])}null===(e=this.meetingSessionContext)||void 0===e||e.audioVideoController.addObserver(this),this.addRedundantAudioRecoveryMetricsObserver(null===(t=this.meetingSessionContext)||void 0===t?void 0:t.statsCollector)}addTransceiver(e,t){var n;const i=this.peer.addTransceiver(e,t);if(!(null===(n=this.peer.getConfiguration())||void 0===n?void 0:n.encodedInsertableStreams)||!this.audioRedWorker)return i;const r=!!window.RTCRtpScriptTransform,a=!!RTCRtpSender.prototype.createEncodedStreams;if(r)i.sender.transform=new RTCRtpScriptTransform(this.audioRedWorker,{type:"PassthroughTransform"}),i.receiver.transform=new RTCRtpScriptTransform(this.audioRedWorker,{type:"PassthroughTransform"});else if(a){const e=i.sender.createEncodedStreams();e.readable.pipeTo(e.writable);const t=i.receiver.createEncodedStreams();t.readable.pipeTo(t.writable)}return i}destroyAudioRedWorkerAndStates(){var e,t;this.audioRedWorker&&(URL.revokeObjectURL(this.audioRedWorkerURL),this.audioRedWorkerURL=null,this.audioRedWorker=null,this.currentNumRedundantEncodings=0,this.lastRedHolddownTimerStartTimestampMs=0,this.lastAudioRedTurnOffTimestampMs=0,this.lastHighPacketLossEventTimestampMs=0,this.audioRedEnabled=!0,null===(e=this.meetingSessionContext)||void 0===e||e.audioVideoController.removeObserver(this),this.removeRedundantAudioRecoveryMetricsObserver(null===(t=this.meetingSessionContext)||void 0===t?void 0:t.statsCollector))}setAudioPayloadTypes(e){this.audioRedWorker&&(this.audioRedWorker.postMessage({msgType:"RedPayloadType",payloadType:e.get("red")}),this.audioRedWorker.postMessage({msgType:"OpusPayloadType",payloadType:e.get("opus")}))}metricsDidReceive(e){const{currentTimestampMs:t}=e,n=e.getRTCStatsReport();let i=0,r=0;if(n.forEach((e=>{"audio"===e.kind&&("outbound-rtp"===e.type?i=e.packetsSent:"remote-inbound-rtp"===e.type&&(r=e.packetsLost))})),this.audioMetricsHistory.length>0&&i<=this.audioMetricsHistory[this.audioMetricsHistory.length-1].totalPacketsSent)return;this.audioMetricsHistory.push({timestampMs:t,totalPacketsSent:i,totalPacketsLost:r}),this.audioMetricsHistory.length>this.maxAudioMetricsHistory&&this.audioMetricsHistory.shift();const a=this.lossPercent(this.audioRedPacketLossShortEvalPeriodMs),o=this.lossPercent(this.audioRedPacketLossLongEvalPeriodMs),c=Math.max(a,o),[l,d]=s.default.getNumRedundantEncodingsForPacketLoss(c);if(d)return this.lastHighPacketLossEventTimestampMs=t,void(this.audioRedEnabled&&(this.audioRedWorker&&this.audioRedWorker.postMessage({msgType:"Disable"}),this.audioRedEnabled=!1,this.lastAudioRedTurnOffTimestampMs=t));if(!this.audioRedEnabled){const e=t-this.lastAudioRedTurnOffTimestampMs,n=t-this.lastHighPacketLossEventTimestampMs;if(e>=this.audioRedPacketLossLongEvalPeriodMs&&n0&&(this.lastRedHolddownTimerStartTimestampMs=e)}lossPercent(e){if(this.audioMetricsHistory.length<2)return 0;const t=this.audioMetricsHistory[this.audioMetricsHistory.length-1].timestampMs,n=this.audioMetricsHistory[this.audioMetricsHistory.length-1].totalPacketsSent,i=this.audioMetricsHistory[this.audioMetricsHistory.length-1].totalPacketsLost;for(let r=this.audioMetricsHistory.length-2;r>=0;r--)if(t-this.audioMetricsHistory[r].timestampMs>=e){let e=(i-this.audioMetricsHistory[r].totalPacketsLost)/(n-this.audioMetricsHistory[r].totalPacketsSent)*100;return e<0?e=0:e>100&&(e=100),e}return 0}shouldUpdateAudioRedWorkerEncodings(e,t){return this.currentNumRedundantEncodings===t?(this.maybeResetHoldDownTimer(e),!1):!(t{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TRANSCRIPTION_DATA_MESSAGE_TOPIC=void 0;const i=n(1877);t.TRANSCRIPTION_DATA_MESSAGE_TOPIC="aws:chime:transcription",t.default=class{constructor(e){this.realtimeController=e,this.transcriptEventCallbacks=new Set}subscribeToTranscriptEvent(e){0===this.transcriptEventCallbacks.size&&this.realtimeController.realtimeSubscribeToReceiveDataMessage(t.TRANSCRIPTION_DATA_MESSAGE_TOPIC,(e=>{for(const t of i.TranscriptEventConverter.from(e))for(const e of this.transcriptEventCallbacks)e(t)})),this.transcriptEventCallbacks.add(e)}unsubscribeFromTranscriptEvent(e){this.transcriptEventCallbacks.delete(e),0===this.transcriptEventCallbacks.size&&this.realtimeController.realtimeUnsubscribeFromReceiveDataMessage(t.TRANSCRIPTION_DATA_MESSAGE_TOPIC)}}},4739:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{}},2471:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{}},7210:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{}},1877:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.TranscriptEventConverter=void 0;const r=n(289),a=i(n(4739)),o=i(n(1288)),s=i(n(1326)),c=i(n(6864)),l={[r.SdkTranscriptionStatus.Type.STARTED]:s.default.STARTED,[r.SdkTranscriptionStatus.Type.INTERRUPTED]:s.default.INTERRUPTED,[r.SdkTranscriptionStatus.Type.RESUMED]:s.default.RESUMED,[r.SdkTranscriptionStatus.Type.STOPPED]:s.default.STOPPED,[r.SdkTranscriptionStatus.Type.FAILED]:s.default.FAILED};t.TranscriptEventConverter=class{static from(e){let t;try{t=r.SdkTranscriptFrame.decode(e.data)}catch(e){throw new Error("Cannot decode transcript data message: "+e)}const n=[];for(const e of t.events)if(e.status){const t=l[e.status.type];if(!t)continue;const i=new o.default;i.type=t,i.eventTimeMs=e.status.eventTime,i.transcriptionRegion=e.status.transcriptionRegion,i.transcriptionConfiguration=e.status.transcriptionConfiguration,e.status.message&&(i.message=e.status.message),n.push(i)}else if(e.transcript){const t=new a.default;t.results=[];for(const n of e.transcript.results){const e={channelId:n.channelId,isPartial:n.isPartial,resultId:n.resultId,startTimeMs:n.startTime,endTimeMs:n.endTime,alternatives:[]};if(n.languageCode&&(e.languageCode=n.languageCode),n.languageIdentification&&n.languageIdentification.length>0){e.languageIdentification=[];for(const t of n.languageIdentification){const n={languageCode:t.languageCode,score:t.score};e.languageIdentification.push(n)}}for(const t of n.alternatives){const n={items:[],transcript:t.transcript};for(const e of t.items){const t={content:e.content,attendee:{attendeeId:e.speakerAttendeeId,externalUserId:e.speakerExternalUserId},startTimeMs:e.startTime,endTimeMs:e.endTime,type:null};switch(e.vocabularyFilterMatch&&(t.vocabularyFilterMatch=e.vocabularyFilterMatch),e.hasOwnProperty("stable")&&(t.stable=e.stable),e.hasOwnProperty("confidence")&&(t.confidence=e.confidence),e.type){case r.SdkTranscriptItem.Type.PRONUNCIATION:t.type=c.default.PRONUNCIATION;break;case r.SdkTranscriptItem.Type.PUNCTUATION:t.type=c.default.PUNCTUATION}n.items.push(t)}for(const e of t.entities){n.entities||(n.entities=[]);const t={category:e.category,confidence:e.confidence,content:e.content,startTimeMs:e.startTime,endTimeMs:e.endTime};e.type&&(t.type=e.type),n.entities.push(t)}e.alternatives.push(n)}t.results.push(e)}n.push(t)}return n}}},1741:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{}},6864:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.PRONUNCIATION="pronunciation",e.PUNCTUATION="punctuation"}(n||(n={})),t.default=n},9063:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{}},5323:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{}},1288:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{}},1326:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.STARTED="started",e.INTERRUPTED="interrupted",e.RESUMED="resumed",e.STOPPED="stopped",e.FAILED="failed"}(n||(n={})),t.default=n},8627:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(2238),a=i(n(4046));class o{constructor(e){var t,n,i,a,s,c,l;try{this.parserResult=navigator&&navigator.userAgent?new r.UAParser(navigator.userAgent).getResult():void 0}catch(t){e.error(t.message)}this.browserMajorVersion=(null===(i=null===(n=null===(t=this.parserResult)||void 0===t?void 0:t.browser)||void 0===n?void 0:n.version)||void 0===i?void 0:i.split(".")[0])||o.UNAVAILABLE,this.browserName=(null===(a=this.parserResult)||void 0===a?void 0:a.browser.name)||o.UNAVAILABLE,this.browserVersion=(null===(s=this.parserResult)||void 0===s?void 0:s.browser.version)||o.UNAVAILABLE,this.deviceName=[(null===(c=this.parserResult)||void 0===c?void 0:c.device.vendor)||"",(null===(l=this.parserResult)||void 0===l?void 0:l.device.model)||""].join(" ").trim()||o.UNAVAILABLE}getParserResult(){var e,t;return{browserMajorVersion:this.browserMajorVersion,browserName:this.browserName,browserVersion:this.browserVersion,deviceName:this.deviceName,osName:(null===(e=this.parserResult)||void 0===e?void 0:e.os.name)||o.UNAVAILABLE,osVersion:(null===(t=this.parserResult)||void 0===t?void 0:t.os.version)||o.UNAVAILABLE,sdkVersion:a.default.sdkVersion,sdkName:a.default.sdkName}}}t.default=o,o.UNAVAILABLE="Unavailable"},1515:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.queue=Promise.resolve()}add(e){return new Promise(((t,n)=>{this.queue=this.queue.then(e).then(t).catch(n)}))}}},8660:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.None=t.Some=t.Maybe=void 0;class n{static of(e){return null==e?r.of():i.of(e)}}t.Maybe=n;class i{constructor(e){this.value=e,this.isSome=!0,this.isNone=!1}map(e){return n.of(e(this.value))}flatMap(e){return e(this.value)}get(){return this.value}getOrElse(e){return this.value}defaulting(e){return n.of(this.getOrElse(e))}static of(e){if(null==e)throw new Error("value is ${value}");return new i(e)}}t.Some=i;class r{constructor(){this.isSome=!1,this.isNone=!0}get(){throw new Error("value is null")}getOrElse(e){return e}map(e){return new r}flatMap(e){return new r}defaulting(e){return n.of(this.getOrElse(e))}static of(){return new r}}t.None=r},8690:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getFormattedOffset=t.getDefaultAssetSpec=t.toLowerCasePropertyNames=t.isIFramed=t.wait=void 0;const r=i(n(4046));t.wait=function(e){return new Promise((t=>setTimeout(t,e)))},t.isIFramed=function(){var e;try{return"IFRAME"===(null===(e=window.frameElement)||void 0===e?void 0:e.nodeName)||parent!==top}catch(e){return!0}},t.toLowerCasePropertyNames=function e(t){return null===t?null:"object"!=typeof t?t:Array.isArray(t)?t.map(e):Object.keys(t).reduce(((n,i)=>{const r=t[i],a="object"==typeof r?e(r):r;return n[i.toLowerCase()]=a,n}),{})},t.getDefaultAssetSpec=function(){const e=r.default.sdkVersionSemVer;return{assetGroup:`sdk-${e.major}.${e.minor}`}},t.getFormattedOffset=function(e){const t=Math.abs(e);return`${e<=0?"+":"-"}${Math.floor(t/60).toString().padStart(2,"0")}:${Math.floor(t%60).toString().padStart(2,"0")}`}},4046:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(543)),a=i(n(2336));class o{static get sdkName(){return"amazon-chime-sdk-js"}static get sdkVersion(){return a.default.semverString}static get sdkVersionSemVer(){var e,t,n,i;const r=a.default.semverString.match(/^(?[0-9]+)\.(?[0-9]+)((?:\.(?[0-9]+))(?:-(?[a-zA-Z]+(\.[0-9])*))?)?/);return{major:null===(e=null==r?void 0:r.groups)||void 0===e?void 0:e.major,minor:null===(t=null==r?void 0:r.groups)||void 0===t?void 0:t.minor,patch:null===(n=null==r?void 0:r.groups)||void 0===n?void 0:n.patch,preRelease:null===(i=null==r?void 0:r.groups)||void 0===i?void 0:i.preRelease}}static get buildSHA(){return a.default.hash.substr(1)}static get sdkUserAgentLowResolution(){const e=new r.default;return`${e.name()}-${e.majorVersion()}`}static urlWithVersion(e){const t=new URL(e);return t.searchParams.append(o.X_AMZN_VERSION,o.sdkVersion),t.searchParams.append(o.X_AMZN_USER_AGENT,o.sdkUserAgentLowResolution),t.toString()}}t.default=o,o.X_AMZN_VERSION="X-Amzn-Version",o.X_AMZN_USER_AGENT="X-Amzn-User-Agent"},2336:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={hash:"b2290cc",raw:"v3.18.2",semverString:"3.18.2"}},1133:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class n{constructor(e,t,n,i,r,a=1){this.cameraWidth=e,this.cameraHeight=t,this.cameraFrameRate=n,this.maxEncodeBitrateKbps=i,this.isSimulcast=r,this.scaleResolutionDownBy=a}equal(e){let t=e.captureWidth()===this.cameraWidth&&e.captureHeight()===this.cameraHeight&&e.captureFrameRate()===this.cameraFrameRate&&e.encodeBitrates().length===this.encodeBitrates().length&&e.encodeScaleResolutionDownBy().length===this.encodeScaleResolutionDownBy().length&&e.encodeWidths().length===this.encodeWidths().length&&e.encodeHeights().length===this.encodeHeights().length;if(t)for(let n=0;n{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.TargetDisplaySize=void 0,function(e){e[e.Low=0]="Low",e[e.Medium=1]="Medium",e[e.High=2]="High",e[e.Maximum=3]="Maximum"}(n=t.TargetDisplaySize||(t.TargetDisplaySize={})),t.default=n},2880:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(8890)),a=i(n(1754)),o=n(1819),s=i(n(4992));class c extends s.default{constructor(e){super(e),this.logger=e,super.shouldPauseTiles=!1,this.videoPreferences=void 0}reset(){super.reset(),super.shouldPauseTiles=!1,this.videoPreferences=void 0}updateIndex(e){super.updateIndex(e);const t=o.VideoPreferences.prepare();let n=!1;const i=e.remoteStreamDescriptions();for(const e of i)t.some((t=>t.attendeeId===e.attendeeId))||(e.attendeeId.endsWith(r.default.Modality)?(t.add(new a.default(e.attendeeId,1)),n=!0):t.add(new a.default(e.attendeeId,2)));n?(this.videoPreferences=t.build(),this.videoPreferencesUpdated=!0):this.videoPreferences=void 0}chooseRemoteVideoSources(e){this.logger.error("chooseRemoteVideoSources should not be called by VideoAdaptiveProbePolicy")}}t.default=c},1754:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(2721));class a{constructor(e,t,n){this.attendeeId=e,this.priority=t,this.targetSize=void 0!==n?n:r.default.High}partialCompare(e){return this.priority-e.priority}equals(e){return this.attendeeId===e.attendeeId&&this.targetSize===e.targetSize&&this.priority===e.priority}clone(){return new a(this.attendeeId,this.priority,this.targetSize)}targetSizeToBitrateKbps(e){switch(e){case r.default.Maximum:return a.MAXIMUM_BITRATE_KBPS;case r.default.High:return a.HIGH_BITRATE_KBPS;case r.default.Medium:return a.MID_BITRATE_KBPS;case r.default.Low:return a.LOW_BITRATE_KBPS}}}t.default=a,a.LOW_BITRATE_KBPS=300,a.MID_BITRATE_KBPS=600,a.HIGH_BITRATE_KBPS=1400,a.MAXIMUM_BITRATE_KBPS=1e4},1819:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.VideoPreferences=t.MutableVideoPreferences=t.convertVideoPreferencesToSignalingClientVideoSubscriptionConfiguration=void 0;const r=i(n(9101));t.convertVideoPreferencesToSignalingClientVideoSubscriptionConfiguration=function(e,t,n){if(void 0===e.transceiverController.getMidForGroupId||void 0===e.videoStreamIndex.attendeeIdForGroupId||void 0===n)return[];const i=new Array,a=new Map,o=new Map;for(const n of t){const t=e.transceiverController.getMidForGroupId(n);if(void 0===t)continue;const i=e.videoStreamIndex.attendeeIdForGroupId(n);a.set(i,t),o.set(i,n)}for(const e of n){const t=new r.default,n=a.get(e.attendeeId);void 0!==n&&(t.mid=n,t.attendeeId=e.attendeeId,t.groupId=o.get(e.attendeeId),t.priority=Number.MAX_SAFE_INTEGER-e.priority,t.targetBitrateKbps=e.targetSizeToBitrateKbps(e.targetSize),i.push(t))}return i};class a{constructor(e=[]){this.items=e}static default(){return new a([])}[Symbol.iterator](){let e=0;const t=this.items;return{next:()=>e!t.equals(e)))}clear(){this.items=[]}isEmpty(){return 0===this.items.length}equals(e){if(e===this)return!0;if(e.items.length!==this.items.length)return!1;for(const t of this.items)if(!e.items.some((e=>e.equals(t))))return!1;return!0}has(e){return this.items.some((t=>t.equals(e)))}some(e){return this.items.some(e)}clone(){return new a([...this.items])}sort(){this.items.sort(((e,t)=>e.partialCompare(t)))}modify(){return new o(this)}}class o{constructor(e=new a){this.items=e,this.copied=!1}cow(){this.copied||(this.items=this.items.clone(),this.copied=!0)}add(e){this.items.has(e)||(this.cow(),this.items.add(e))}replaceFirst(e,t){this.items.has(e)&&!this.items.some(t)||(this.cow(),this.items.replaceFirst(e,t))}remove(e){this.items.has(e)&&(this.cow(),this.items.remove(e))}some(e){return this.items.some(e)}clear(){this.items.isEmpty()||(this.cow(),this.items.clear())}build(){return this.copied&&this.items.sort(),this.copied=!1,this.items}}class s{constructor(e){this.builder=e}add(e){this.builder.add(e)}replaceFirst(e,t){this.builder.replaceFirst(e,t)}remove(e){this.builder.remove(e)}some(e){return this.builder.some(e)}clear(){this.builder.clear()}build(){return new c(this.builder.build())}}t.MutableVideoPreferences=s;class c{constructor(e){this.items=e}static prepare(){return new s(new o)}static default(){return new c(a.default())}[Symbol.iterator](){return this.items[Symbol.iterator]()}highestPriority(){var e;return null===(e=this.items.first())||void 0===e?void 0:e.priority}sorted(){return this.items[Symbol.iterator]()}equals(e){return e===this||this.items.equals(e.items)}modify(){return new s(this.items.modify())}some(e){return this.items.some(e)}isEmpty(){return this.items.isEmpty()}clone(){const e=c.prepare();for(const t of this.items)e.add(t.clone());return e.build()}}t.VideoPreferences=c,t.default=c},4992:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=o(n(7602)),c=o(n(6196)),l=o(n(9496)),d=o(n(8890)),u=n(813),f=a(n(7103)),h=o(n(60)),m=o(n(1508)),p=o(n(5185)),g=o(n(2721)),v=o(n(1754)),b=n(1819),y=o(n(1034));class S{constructor(){this.bandwidthEstimateKbps=0,this.usedBandwidthKbps=0,this.packetsLost=0,this.nackCount=0,this.rttMs=0}}class C{constructor(e,t=y.default.Default){this.logger=e,this.videoPriorityBasedPolicyConfig=t,this.shouldPauseTiles=!0,this.observerQueue=new Set,this.pausedBwAttendeeIds=new Set,this.wantsResubscribeObserver=void 0,this.reset()}reset(){this.allHighestPolicy=new p.default(""),this.optimalReceiveSet=new m.default,this.optimalReceiveStreams=[],this.optimalNonPausedReceiveStreams=[],this.subscribedReceiveSet=new m.default,this.subscribedReceiveStreams=[],this.videoPreferences=void 0,this.defaultVideoPreferences=void 0,this.shouldPauseTiles=!0,this.pausedStreamIds=new m.default,this.pausedBwAttendeeIds=new Set,this.videoPreferencesUpdated=!1,this.logCount=0,this.startupPeriod=!0,this.usingPrevTargetRate=!1,this.rateProbeState="Not Probing",this.firstEstimateTimestamp=0,this.lastUpgradeRateKbps=0,this.timeBeforeAllowSubscribeMs=C.MIN_TIME_BETWEEN_SUBSCRIBE_MS,this.lastProbeTimestamp=Date.now(),this.timeBeforeAllowProbeMs=C.MIN_TIME_BETWEEN_PROBE_MS,this.downlinkStats=new S,this.prevDownlinkStats=new S,this.probeFailed=!1,this.serverSideNetworkAdaption=this.videoPriorityBasedPolicyConfig.serverSideNetworkAdaption,this.pendingActionAfterUpdatedPreferences=!1}bindToTileController(e){this.tileController=e,this.logger.info("tileController bound")}setWantsResubscribeObserver(e){this.wantsResubscribeObserver=e}chooseRemoteVideoSources(e){var t;if(!(null===(t=this.videoPreferences)||void 0===t?void 0:t.equals(e)))if(this.videoPreferences=null==e?void 0:e.clone(),f.serverSideNetworkAdaptionIsNoneOrDefault(this.serverSideNetworkAdaption)||(this.pendingActionAfterUpdatedPreferences=!0,void 0!==this.wantsResubscribeObserver&&(this.wantsResubscribeObserver(),this.pendingActionAfterUpdatedPreferences=!1),this.serverSideNetworkAdaption!==f.default.BandwidthProbingAndRemoteVideoQualityAdaption))this.videoPreferencesUpdated=!0,this.logger.info(`bwe: setVideoPreferences bwe: new preferences: ${JSON.stringify(e)}`);else{const e=new Array;for(const t of this.videoPreferences){const n=new h.default;n.attendee=new s.default,n.attendee.attendeeId=t.attendeeId,e.push(n)}this.allHighestPolicy.chooseRemoteVideoSources(e)}}updateIndex(e){this.videoIndex=e,this.serverSideNetworkAdaption===f.default.BandwidthProbingAndRemoteVideoQualityAdaption&&this.allHighestPolicy.updateIndex(e),this.videoPreferences||this.updateDefaultVideoPreferences()}updateDefaultVideoPreferences(){const e=new Set;for(const t of this.videoIndex.remoteStreamDescriptions())e.add(t.attendeeId);const t=b.VideoPreferences.prepare(),n=e.size;let i=g.default.Maximum;n>8?i=g.default.Low:n>4&&(i=g.default.Medium);for(const n of e)t.add(new v.default(n,1,i));this.defaultVideoPreferences=t.build()}updateMetrics(e){if(!this.videoIndex||this.videoIndex.allStreams().empty())return;this.prevDownlinkStats=this.downlinkStats,this.downlinkStats=new S;const t=e.getObservableMetrics();this.downlinkStats.bandwidthEstimateKbps=t.availableIncomingBitrate/1e3;for(const t in e.streamMetricReports){const n=Number.parseInt(t,10),i=e.streamMetricReports[n];i.direction===c.default.DOWNSTREAM&&i.mediaType===l.default.VIDEO&&(i.currentMetrics.hasOwnProperty("nackCount")&&(this.downlinkStats.nackCount+=e.countPerSecond("nackCount",n)),i.currentMetrics.hasOwnProperty("packetsLost")&&(this.downlinkStats.packetsLost+=e.countPerSecond("packetsLost",n)),i.currentMetrics.hasOwnProperty("bytesReceived")&&(this.downlinkStats.usedBandwidthKbps+=e.bitsPerSecond("bytesReceived",n)/1e3))}}wantsResubscribe(){let e=!1;return f.serverSideNetworkAdaptionIsNoneOrDefault(this.serverSideNetworkAdaption)||(e||(e=this.pendingActionAfterUpdatedPreferences),this.serverSideNetworkAdaption!==f.default.BandwidthProbingAndRemoteVideoQualityAdaption)?(this.calculateOptimalReceiveSet(),e||(e=!this.subscribedReceiveSet.equal(this.optimalReceiveSet)),e):e||this.allHighestPolicy.wantsResubscribe()}chooseSubscriptions(){return f.serverSideNetworkAdaptionIsNoneOrDefault(this.serverSideNetworkAdaption)||(this.pendingActionAfterUpdatedPreferences=!1,this.serverSideNetworkAdaption!==f.default.BandwidthProbingAndRemoteVideoQualityAdaption)?(this.subscribedReceiveSet.equal(this.optimalReceiveSet)||(this.lastSubscribeTimestamp=Date.now()),this.subscribedReceiveSet=this.optimalReceiveSet.clone(),this.subscribedReceiveStreams=this.optimalReceiveStreams.slice(),this.subscribedReceiveSet.clone()):this.allHighestPolicy.chooseSubscriptions()}addObserver(e){this.observerQueue.add(e)}removeObserver(e){this.observerQueue.delete(e)}forEachObserver(e){for(const t of this.observerQueue)e(t)}setVideoPriorityBasedPolicyConfigs(e){this.videoPriorityBasedPolicyConfig=e}calculateOptimalReceiveStreams(){var e;const t=[],n=this.videoIndex.remoteStreamDescriptions();if(0===n.length||(null===(e=this.videoPreferences)||void 0===e?void 0:e.isEmpty()))return void(this.optimalReceiveStreams=[]);const i=this.rateProbeState;this.cleanBwPausedTiles(n),this.handleAppPausedStreams(t,n);const r=this.availStreamsSameAsLast(n),a=!this.startupPeriod&&r;if(a&&Date.now()-this.lastSubscribeTimestampe.maxBitrateKbps===t.maxBitrateKbps?e.streamId-t.streamId:e.maxBitrateKbps-t.maxBitrateKbps));for(const e of n)(0===e.avgBitrateKbps||e.avgBitrateKbps>e.maxBitrateKbps)&&(e.attendeeId.endsWith(d.default.Modality)&&e.maxBitrateKbps<100?e.maxBitrateKbps=e.avgBitrateKbps:e.avgBitrateKbps=e.maxBitrateKbps);const o={targetDownlinkBitrate:0,chosenTotalBitrate:0,deltaToNextUpgrade:0};o.targetDownlinkBitrate=this.determineTargetRate();const s=this.subscribedReceiveSet.size(),c=this.downlinkStats.bandwidthEstimateKbps,l=!this.videoPriorityBasedPolicyConfig.allowSubscribe(s,c);if(this.probeFailed&&(this.probeFailed=!1,this.timeBeforeAllowSubscribeMs=C.MIN_TIME_BETWEEN_SUBSCRIBE_MS,a&&l))return;const h=this.priorityPolicy(o,n,t);let m=0;if(f.serverSideNetworkAdaptionIsNoneOrDefault(this.serverSideNetworkAdaption)&&!this.startupPeriod&&r?"Probing"===this.rateProbeState?m=this.handleProbe(t,o.targetDownlinkBitrate):0!==o.deltaToNextUpgrade&&(m=this.maybeOverrideOrProbe(t,o,h)):(this.setProbeState("Not Probing"),this.lastUpgradeRateKbps=0),this.prevRemoteInfos=n,this.videoPreferencesUpdated=!1,1===m)return this.logger.info(`bwe: keepSameSubscriptions stats:${JSON.stringify(this.downlinkStats)}`),void(this.prevTargetRateKbps=o.targetDownlinkBitrate);if(2===m){const e=this.calculateSubscribeRate(this.preProbeNonPausedReceiveStreams);return this.optimalReceiveStreams=this.preProbeReceiveStreams.slice(),this.processBwPausedStreams(n,this.preProbeNonPausedReceiveStreams),void this.logger.info("bwe: Use Pre-Probe subscription subscribedRate:"+e)}this.optimalNonPausedReceiveStreams=t.slice();const p=this.pausedBwAttendeeIds.size;this.processBwPausedStreams(n,t),this.logger.getLogLevel()<=u.LogLevel.INFO&&(this.logCount%15==0||this.rateProbeState!==i||this.optimalReceiveStreams.length!==t.length||p!==this.pausedBwAttendeeIds.size)&&(this.logger.info(this.policyStateLogStr(n,o.targetDownlinkBitrate)),this.logCount=0),this.logCount++,this.prevTargetRateKbps=o.targetDownlinkBitrate,this.optimalReceiveStreams=t.slice()}calculateOptimalReceiveSet(){const e=new m.default;this.calculateOptimalReceiveStreams();for(const t of this.optimalReceiveStreams)e.add(t.streamId);if(!this.optimalReceiveSet.equal(e)){const t=this.calculateSubscribeRate(this.optimalReceiveStreams);this.logger.info(`bwe: new streamSelection: ${JSON.stringify(e)} subscribedRate:${t}`)}this.optimalReceiveSet=e}determineTargetRate(){let e=0;const t=Date.now();return 0!==this.downlinkStats.bandwidthEstimateKbps?(0===this.firstEstimateTimestamp&&(this.firstEstimateTimestamp=t),this.startupPeriod&&(this.downlinkStats.bandwidthEstimateKbps>C.DEFAULT_BANDWIDTH_KBPS||this.downlinkStats.packetsLost>0||t-this.firstEstimateTimestamp>C.STARTUP_PERIOD_MS&&this.downlinkStats.bandwidthEstimateKbps<=this.prevDownlinkStats.bandwidthEstimateKbps)&&(this.startupPeriod=!1,this.prevTargetRateKbps=this.downlinkStats.bandwidthEstimateKbps),this.startupPeriod?e=C.DEFAULT_BANDWIDTH_KBPS:"Probing"===this.rateProbeState&&this.downlinkStats.usedBandwidthKbps>this.downlinkStats.bandwidthEstimateKbps&&this.downlinkStats.packetsLost"bwe: ValidateRate: Using Previous rate "+this.prevTargetRateKbps)),this.usingPrevTargetRate=!0,e=this.prevTargetRateKbps):this.usingPrevTargetRate=!1,e}setProbeState(e){if(this.rateProbeState===e)return!1;const t=Date.now();switch(e){case"Not Probing":this.probePendingStartTimestamp=0;break;case"Probe Pending":if(!(0===this.lastProbeTimestamp||t-this.lastProbeTimestamp>C.MIN_TIME_BETWEEN_PROBE_MS))return!1;this.probePendingStartTimestamp=t;break;case"Probing":if(!(t-this.probePendingStartTimestamp>this.timeBeforeAllowProbeMs))return!1;this.lastProbeTimestamp=t,this.preProbeReceiveStreams=this.subscribedReceiveStreams.slice(),this.preProbeNonPausedReceiveStreams=this.optimalNonPausedReceiveStreams,this.timeBeforeAllowProbeMs=Math.min(2*this.timeBeforeAllowProbeMs,C.MAX_HOLD_BEFORE_PROBE_MS)}return this.logger.info("bwe: setProbeState to "+e+" from "+this.rateProbeState),this.rateProbeState=e,!0}upgradeToStream(e,t){for(let n=0;nC.MAX_ALLOWED_PROBE_TIME_MS)return this.logger.info("bwe: Canceling probe due to timeout"),this.setProbeState("Not Probing"),0;if(this.downlinkStats.packetsLost>0&&(this.logger.info(`bwe: Probe encountering packets lost:${this.downlinkStats.packetsLost}`),this.downlinkStats.packetsLost>C.SPURIOUS_PACKET_LOST_THRESHOLD))return this.setProbeState("Not Probing"),this.logger.info(`bwe: Canceling probe due to packets lost:${this.downlinkStats.packetsLost}`),this.probeFailed=!0,this.timeBeforeAllowSubscribeMs=3*Math.max(C.MIN_TIME_BETWEEN_SUBSCRIBE_MS,this.timeBeforeAllowSubscribeMs),2;const n=this.calculateSubscribeRate(this.optimalReceiveStreams);return this.chosenStreamsSameAsLast(e)||t>n?(this.logger.info("bwe: Probe successful"),this.setProbeState("Not Probing"),this.timeBeforeAllowProbeMs=C.MIN_TIME_BETWEEN_PROBE_MS,0):1}maybeOverrideOrProbe(e,t,n){const i=this.chosenStreamsSameAsLast(e);let r=0;const a=t.targetDownlinkBitrate>C.LOW_BITRATE_THRESHOLD_KBPS?C.TARGET_RATE_CHANGE_TRIGGER_PERCENT:2*C.TARGET_RATE_CHANGE_TRIGGER_PERCENT,o=t.targetDownlinkBitrate*a/100;if(this.targetRateBaselineForDeltaCheckKbps=void 0!==this.targetRateBaselineForDeltaCheckKbps?this.targetRateBaselineForDeltaCheckKbps:this.prevTargetRateKbps,!i&&Math.abs(t.targetDownlinkBitrate-this.targetRateBaselineForDeltaCheckKbps)this.prevDownlinkStats.packetsLost)return this.setProbeState("Not Probing"),this.lastUpgradeRateKbps=0,r;if(i||1===r)switch(this.rateProbeState){case"Not Probing":this.setProbeState("Probe Pending");break;case"Probe Pending":this.setProbeState("Probing")&&(this.upgradeToStream(e,n),r=0)}else this.setProbeState("Not Probing");return r}calculateSubscribeRate(e){let t=0;for(const n of e)this.pausedStreamIds.contain(n.streamId)||this.pausedBwAttendeeIds.has(n.attendeeId)||(t+=n.maxBitrateKbps);return t}handleAppPausedStreams(e,t){if(!this.tileController)return void this.logger.warn("tileController not found!");this.pausedStreamIds=new m.default;const n=this.tileController.getAllRemoteVideoTiles();for(const i of n){const n=i.state();if(n.paused&&!this.pausedBwAttendeeIds.has(n.boundAttendeeId)){let i=t.length;for(;i--;)t[i].attendeeId===n.boundAttendeeId&&(this.logger.info("bwe: removed paused attendee "+n.boundAttendeeId+" streamId: "+t[i].streamId),this.pausedStreamIds.add(t[i].streamId),this.subscribedReceiveSet.contain(t[i].streamId)&&e.push(t[i]),t.splice(i,1))}}}processBwPausedStreams(e,t){if(!this.tileController)return void this.logger.warn("tileController not found!");const n=this.getCurrentVideoPreferences();if(n&&this.shouldPauseTiles){const i=this.tileController.getAllVideoTiles();for(const r of n){const n=this.getVideoTileForAttendeeId(r.attendeeId,i),a=(null==n?void 0:n.state().paused)||!1;if(t.some((e=>e.attendeeId===r.attendeeId)))a&&this.pausedBwAttendeeIds.has(r.attendeeId)&&(this.logger.info(`bwe: unpausing attendee ${r.attendeeId} due to bandwidth`),this.forEachObserver((e=>{e.tileWillBeUnpausedByDownlinkPolicy(n.id())})),this.tileController.unpauseVideoTile(n.id()),this.pausedBwAttendeeIds.delete(r.attendeeId));else{const i=e.some((e=>e.attendeeId===r.attendeeId));if(n&&i){const e=this.optimalReceiveStreams.find((e=>e.attendeeId===r.attendeeId));void 0!==e&&(a||(this.logger.info(`bwe: pausing streamId ${e.streamId} attendee ${r.attendeeId} due to bandwidth`),this.forEachObserver((e=>{e.tileWillBePausedByDownlinkPolicy(n.id())})),this.tileController.pauseVideoTile(n.id())),t.push(e)),this.pausedBwAttendeeIds.add(r.attendeeId)}else if(i){const e=this.tileController.addVideoTile();e.bindVideoStream(r.attendeeId,!1,null,0,0,0,null),this.forEachObserver((t=>{t.tileWillBePausedByDownlinkPolicy(e.id())})),e.pause(),this.logger.info(`bwe: Created video tile ${e.id()} for bw paused attendee ${r.attendeeId}`),this.pausedBwAttendeeIds.add(r.attendeeId)}}}}}cleanBwPausedTiles(e){if(!this.tileController)return void this.logger.warn("tileController not found!");const t=this.tileController.getAllRemoteVideoTiles(),n=this.getCurrentVideoPreferences();for(const i of t){const t=i.state();t.boundVideoStream||(e.some((e=>e.attendeeId===t.boundAttendeeId))?void 0===n||n.some((e=>e.attendeeId===t.boundAttendeeId))||this.tileController.removeVideoTile(t.tileId):(this.tileController.removeVideoTile(t.tileId),this.logger.info(`bwe: Removed video tile ${t.tileId} for bw paused attendee ${t.boundAttendeeId}`)))}}priorityPolicy(e,t,n){let i;const r=this.getCurrentVideoPreferences(),a=r.highestPriority();let o,s=a;for(;-1!==s;){o=-1;for(const a of r)if(a.priority===s)for(const r of t)r.attendeeId===a.attendeeId&&(n.some((e=>e.groupId===r.groupId))||(e.chosenTotalBitrate+r.avgBitrateKbps<=e.targetDownlinkBitrate?(n.push(r),e.chosenTotalBitrate+=r.avgBitrateKbps):0===e.deltaToNextUpgrade&&(e.deltaToNextUpgrade=r.avgBitrateKbps,i=r)));else if(a.priority>s){o=a.priority;break}for(const a of r)if(a.priority===s){for(const r of t)if(r.attendeeId===a.attendeeId){const o=n.findIndex((e=>e.groupId===r.groupId&&e.maxBitrateKbpss)break;if(s===a&&0!==e.deltaToNextUpgrade)break;s=o}return i}getVideoTileForAttendeeId(e,t){for(const n of t)if(n.state().boundAttendeeId===e)return n;return null}canUpgrade(e,t,n,i){let r=!1;return i?(t===g.default.High||t===g.default.Medium&&e<=n)&&(r=!0):e<=n&&(r=!0),r?(this.logger.info(`bwe: canUpgrade: bitrateKbp: ${e} targetBitrateKbp: ${n}`),!0):(this.logger.info(`bwe: cannot Upgrade: bitrateKbp: ${e} targetBitrateKbp: ${n}`),!1)}hasSimulcastStreams(e,t,n){let i=0;for(const r of e)r.attendeeId===t&&r.groupId===n&&i++;return this.logger.info(`bwe: attendeeId: ${t} groupId: ${n} hasSimulcastStreams: streamCount: ${i}`),i>1}availStreamsSameAsLast(e){if(void 0===this.prevRemoteInfos||e.length!==this.prevRemoteInfos.length||!0===this.videoPreferencesUpdated)return!1;for(const t of e)if(void 0===this.prevRemoteInfos.find((e=>e.groupId===t.groupId&&e.streamId===t.streamId&&e.maxBitrateKbps===t.maxBitrateKbps)))return!1;return!0}chosenStreamsSameAsLast(e){if(this.optimalNonPausedReceiveStreams.length!==e.length)return!1;for(const t of this.optimalNonPausedReceiveStreams)if(!e.some((e=>e.streamId===t.streamId)))return!1;return!0}policyStateLogStr(e,t){const n={targetBitrate:t,subscribedRate:this.calculateSubscribeRate(this.optimalReceiveStreams),probeState:this.rateProbeState,startupPeriod:this.startupPeriod};let i="remoteInfos: [";for(const t of e)i+=`{grpId:${t.groupId} strId:${t.streamId} maxBr:${t.maxBitrateKbps} avgBr:${t.avgBitrateKbps}}, `;i+="]";let r=`bwe: optimalReceiveSet ${JSON.stringify(n)}\nbwe: prev ${JSON.stringify(this.prevDownlinkStats)}\nbwe: now ${JSON.stringify(this.downlinkStats)}\nbwe: ${i}\n`;return(this.pausedStreamIds.size()>0||this.pausedBwAttendeeIds.size>0)&&(r+=`bwe: paused: app stream ids ${JSON.stringify(this.pausedStreamIds)} bw attendees { ${Array.from(this.pausedBwAttendeeIds).join(" ")} }\n`),this.videoPreferences?r+=`bwe: preferences: ${JSON.stringify(this.videoPreferences)}`:r+=`bwe: default preferences: ${JSON.stringify(this.defaultVideoPreferences)}`,r}getCurrentVideoPreferences(){return this.videoPreferences||this.defaultVideoPreferences}getServerSideNetworkAdaption(){return this.serverSideNetworkAdaption}setServerSideNetworkAdaption(e){this.serverSideNetworkAdaption=e,this.setProbeState("Not Probing")}supportedServerSideNetworkAdaptions(){return[f.default.None,f.default.BandwidthProbing,f.default.BandwidthProbingAndRemoteVideoQualityAdaption]}getVideoPreferences(){let e=this.getCurrentVideoPreferences();return e||(e=b.VideoPreferences.prepare().build()),e}}t.default=C,C.DEFAULT_BANDWIDTH_KBPS=2800,C.STARTUP_PERIOD_MS=6e3,C.LARGE_RATE_CHANGE_TRIGGER_PERCENT=20,C.TARGET_RATE_CHANGE_TRIGGER_PERCENT=15,C.LOW_BITRATE_THRESHOLD_KBPS=300,C.MIN_TIME_BETWEEN_PROBE_MS=5e3,C.MIN_TIME_BETWEEN_SUBSCRIBE_MS=2e3,C.MAX_HOLD_BEFORE_PROBE_MS=3e4,C.MAX_ALLOWED_PROBE_TIME_MS=6e4,C.SPURIOUS_PACKET_LOST_THRESHOLD=2,C.USED_BANDWIDTH_OVERRIDE_BUFFER_KBPS=100},1034:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(7103));class a{constructor(e=0,t=0){this.networkIssueResponseDelayFactor=e,this.networkIssueRecoveryDelayFactor=t,this.currentNetworkEvent=0,this.bandwidthDecreaseTimestamp=0,this.referenceBitrate=0,this.serverSideNetworkAdaption=r.default.Default,e<0?e=0:e>1&&(e=1),this.networkIssueResponseDelayFactor=e,t<0?t=0:t>1&&(t=1),this.networkIssueRecoveryDelayFactor=t}allowSubscribe(e,t){let n=0;const i=this.currentNetworkEvent;if(t>this.referenceBitrate)return this.currentNetworkEvent=2,this.referenceBitrate=t,!0;if(tn)return this.referenceBitrate=t,!0;return!1}return this.currentNetworkEvent=0,!1}getSubscribeDelay(e,t){let n=a.MINIMUM_DELAY_MS;const i=a.MAXIMUM_DELAY_MS-a.MINIMUM_DELAY_MS,r=this.networkIssueResponseDelayFactor;return 1===e&&(n+=i*r*(1+t/10),n=Math.min(a.MAXIMUM_DELAY_MS,n)),n}}t.default=a,a.MINIMUM_DELAY_MS=2e3,a.MAXIMUM_DELAY_MS=8e3,a.Default=new a(0,0),a.UnstableNetworkPreset=new a(0,1),a.StableNetworkPreset=new a(1,0)},3663:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{create(){const e={clientWidth:400,clientHeight:300,width:400,height:300,videoWidth:400,videoHeight:300,style:{transform:""},hasAttribute:()=>!1,removeAttribute:()=>{},setAttribute:()=>{},srcObject:!1,paused:!0,pause:()=>{e.paused=!0},play:()=>(e.paused=!1,Promise.resolve())};return e}}},9807:function(e,t){"use strict";var n=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e){this.canvas=e,this.destroyed=!1}destroy(){this.canvas=null,this.destroyed=!0}asCanvasImageSource(){return n(this,void 0,void 0,(function*(){return this.destroyed?Promise.reject("canvas buffer is destroyed"):Promise.resolve(this.canvas)}))}asCanvasElement(){return this.canvas}}},8919:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(9807));t.default=class{constructor(e,t){this.logger=e,this.stages=t,this.fr=15,this.outputMediaStream=new MediaStream,this.videoInput=document.createElement("video"),this.canvasOutput=document.createElement("canvas"),this.outputCtx=this.canvasOutput.getContext("2d"),this.canvasInput=document.createElement("canvas"),this.inputCtx=this.canvasInput.getContext("2d"),this.inputVideoStream=null,this.sourceBuffers=[],this.destBuffers=[],this.observers=new Set,this.hasStarted=!1,this.process=e=>i(this,void 0,void 0,(function*(){if(!this.inputVideoStream)return;const e=performance.now();this.videoInput.videoWidth&&(this.canvasInput.width!==this.videoInput.videoWidth&&(this.canvasInput.width=this.videoInput.videoWidth,this.canvasInput.height=this.videoInput.videoHeight,this.sourceBuffers[0].height=this.canvasInput.height,this.sourceBuffers[0].width=this.canvasInput.width,this.sourceBuffers[0].framerate=this.framerate),this.inputCtx.drawImage(this.videoInput,0,0));let t,n=[];n.push(this.sourceBuffers[0]);try{for(const e of this.processors)n=yield e.process(n)}catch(e){return void this.forEachObserver((e=>{e.processingDidFailToStart&&e.processingDidFailToStart()}))}this.destBuffers=n;try{t=yield this.destBuffers[0].asCanvasImageSource()}catch(e){return void(this.inputVideoStream&&(this.logger.info("buffers are destroyed and pipeline could not start"),this.forEachObserver((e=>{e.processingDidFailToStart&&e.processingDidFailToStart()}))))}const i=t.width,r=t.height;0!==i&&0!==r&&(this.canvasOutput.width!==i&&this.canvasOutput.height!==r&&(this.canvasOutput.width=i,this.canvasOutput.height=r),this.outputCtx.drawImage(t,0,0,i,r,0,0,i,r),this.hasStarted||(this.hasStarted=!0,this.forEachObserver((e=>{e.processingDidStart&&e.processingDidStart()}))));const a=performance.now()-e,o=2e3/this.framerate-a,s=Math.max(0,1e3/this.framerate-a);o<=0&&this.forEachObserver((e=>{e.processingLatencyTooHigh&&e.processingLatencyTooHigh(a)})),this.lastTimeOut=setTimeout(this.process,s)}))}destroy(){if(this.stop(),this.stages)for(const e of this.stages)e.destroy()}get framerate(){return this.fr}set framerate(e){this.fr=e<0?15:e}stop(){if(this.videoInput.removeEventListener("loadedmetadata",this.process),this.videoInput.srcObject=null,this.destroyInputMediaStreamAndBuffers(),this.outputMediaStream)for(const e of this.outputMediaStream.getVideoTracks())e.stop();this.lastTimeOut&&(clearTimeout(this.lastTimeOut),this.lastTimeOut=void 0),this.hasStarted&&(this.hasStarted=!1,this.forEachObserver((e=>{e.processingDidStop&&e.processingDidStop()})))}addObserver(e){this.observers.add(e)}removeObserver(e){this.observers.delete(e)}getInputMediaStream(){return i(this,void 0,void 0,(function*(){return this.inputVideoStream}))}getActiveOutputMediaStream(){return this.isOutputMediaStreamActive()||(this.outputMediaStream=this.canvasOutput.captureStream(this.framerate),this.cloneInputAudioTracksToOutput()),this.outputMediaStream}setInputMediaStream(e){return i(this,void 0,void 0,(function*(){if(!e)return void this.stop();if(0===e.getVideoTracks().length)return void this.logger.error("No video tracks in input media stream, ignoring");this.inputVideoStream=e;const t=this.inputVideoStream.getVideoTracks()[0].getSettings();this.logger.info(`processing pipeline input stream settings ${JSON.stringify(t)}`),this.canvasOutput.width=t.width,this.canvasOutput.height=t.height,this.videoInput.addEventListener("loadedmetadata",this.process),this.videoInput.srcObject=this.inputVideoStream,this.videoInput.setAttribute("playsinline","true");const n=new a.default(this.canvasInput);this.sourceBuffers.push(n),this.videoInput.load();try{yield this.videoInput.play()}catch(e){this.logger.warn("Video element play() overrided by another load().")}this.cloneInputAudioTracksToOutput()}))}cloneInputAudioTracksToOutput(){if(this.isOutputMediaStreamActive()&&null!==this.inputVideoStream){for(const e of this.outputMediaStream.getAudioTracks())this.logger.info(`Removing audio track ${e.id} from output stream`),this.outputMediaStream.removeTrack(e);for(const e of this.inputVideoStream.getAudioTracks())this.logger.info(`Adding audio track ${e.id} to output stream`),this.outputMediaStream.addTrack(e)}else this.logger.info("Not cloning input audio tracks to output, do not have media streams ready")}isOutputMediaStreamActive(){return this.outputMediaStream&&this.outputMediaStream.active}set processors(e){this.stages=e}get processors(){return this.stages}forEachObserver(e){for(const t of this.observers)setTimeout((()=>{e(t)}),0)}destroyInputMediaStreamAndBuffers(){if(this.inputVideoStream)for(const e of this.inputVideoStream.getTracks())e.stop();this.inputVideoStream=null;for(const e of this.sourceBuffers)e.destroy();this.sourceBuffers=[]}}},7673:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(543)),o=r(n(8919));class s{constructor(e,t,n,i=new a.default){this.logger=e,this.device=t,this.processors=n,this.browserBehavior=i,this.observers=new Set,this.pipe=new o.default(this.logger,this.processors),this.pipe.addObserver(this)}get outputMediaStream(){return this.pipe.outputMediaStream}passEventControllerToProcessors(e){if(this.pipe.processors)for(const t of this.pipe.processors)"function"==typeof t.setEventController&&t.setEventController(e)}chooseNewInnerDevice(e){const t=new s(this.logger,e,this.processors,this.browserBehavior);return t.pipe=this.pipe,t}getInnerDevice(){return this.device}intrinsicDevice(){return i(this,void 0,void 0,(function*(){return this.device}))}transformStream(e){return i(this,void 0,void 0,(function*(){return yield this.pipe.setInputMediaStream(e),this.inputMediaStream=e,this.pipe.getActiveOutputMediaStream()}))}onOutputStreamDisconnect(){this.logger.info("DefaultVideoTransformDevice: detach stopping input media stream");const e=this.device&&this.device.id;if(this.pipe.stop(),!e&&this.inputMediaStream)for(const e of this.inputMediaStream.getVideoTracks())e.stop()}stop(){return i(this,void 0,void 0,(function*(){if(this.inputMediaStream)for(const e of this.inputMediaStream.getVideoTracks())e.stop();this.pipe.destroy(),this.inputMediaStream=null}))}addObserver(e){this.observers.add(e)}removeObserver(e){this.observers.delete(e)}processingDidStart(){this.logger.info("video transform device processing started"),this.forEachObserver((e=>{e.processingDidStart&&e.processingDidStart()}))}processingLatencyTooHigh(e){this.forEachObserver((t=>{t.processingLatencyTooHigh&&t.processingLatencyTooHigh(e)}))}processingDidFailToStart(){this.logger.info("video transform device processing failed to start"),this.forEachObserver((e=>{e.processingDidFailToStart&&e.processingDidFailToStart()}))}processingDidStop(){this.logger.info("video transform device processing stopped"),this.forEachObserver((e=>{e.processingDidStop&&e.processingDidStop()}))}forEachObserver(e){for(const t of this.observers)setTimeout((()=>{e(t)}),0)}}t.default=s},2801:function(e,t){"use strict";var n=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{process(e){return n(this,void 0,void 0,(function*(){return e}))}destroy(){return n(this,void 0,void 0,(function*(){}))}}},2826:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeferredPromise=void 0,t.DeferredPromise=class{constructor(){this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}getPromise(){return this.promise}resolvePromise(e){this.resolve(e)}resolveAndReplacePromise(e){this.resolve(e),this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}rejectPromise(e){this.reject(e)}rejectAndReplacePromise(e){this.reject(e),this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}},8190:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VideoFxCanvasOpsManager=void 0;const r=n(2913);t.VideoFxCanvasOpsManager=class{constructor(e,t){this.streamParameters=e,this.outputCanvas=t,this.configureCanvasPipeline()}getInferenceInputData(e){return this.inferenceCtx.save(),this.inferenceCtx.scale(this.horizontalResizeScalar,this.verticalResizeScalar),this.inferenceCtx.drawImage(e,0,0),this.inferenceCtx.restore(),this.inferenceCtx.getImageData(0,0,r.SEGMENTATION_MODEL.WIDTH_IN_PIXELS,r.SEGMENTATION_MODEL.HEIGHT_IN_PIXELS)}configureForStreamParameters(e){return i(this,void 0,void 0,(function*(){if(this.streamParameters=e,this.outputCanvas.width=this.streamParameters.width,this.outputCanvas.height=this.streamParameters.height,this.backgroundReplacementCanvas){const e=document.createElement("canvas");e.width=this.streamParameters.width,e.height=this.streamParameters.height,e.getContext("2d").drawImage(this.backgroundReplacementCanvas,0,0,this.streamParameters.width,this.streamParameters.height),this.backgroundReplacementCanvas=e}this.configureCanvasPipeline()}))}configureCanvasPipeline(){this.inferenceCanvas=document.createElement("canvas"),this.inferenceCtx=this.inferenceCanvas.getContext("2d",{willReadFrequently:!0}),this.inferenceCanvas.width=r.SEGMENTATION_MODEL.WIDTH_IN_PIXELS,this.inferenceCanvas.height=r.SEGMENTATION_MODEL.HEIGHT_IN_PIXELS,this.horizontalResizeScalar=r.SEGMENTATION_MODEL.WIDTH_IN_PIXELS/this.streamParameters.width,this.verticalResizeScalar=r.SEGMENTATION_MODEL.HEIGHT_IN_PIXELS/this.streamParameters.height}getBackgroundReplacementCanvas(){return this.backgroundReplacementCanvas}loadReplacementBackground(e){return i(this,void 0,void 0,(function*(){const t=e.backgroundReplacement.backgroundImageURL,n=e.backgroundReplacement.defaultColor;if(t)try{const e=yield this.loadImage(t);this.backgroundReplacementImage=e,this.resizeAndSetReplacementImage(this.backgroundReplacementImage)}catch(e){throw this.logger.error(e),new Error("Failed to set the replacement image.")}else this.resizeAndSetReplacementColor(n)}))}resizeAndSetReplacementImage(e){const t=document.createElement("canvas"),n=t.getContext("2d");t.width=this.streamParameters.width,t.height=this.streamParameters.height,n.drawImage(e,0,0,this.streamParameters.width,this.streamParameters.height),this.backgroundReplacementCanvas=t}resizeAndSetReplacementColor(e){const t=document.createElement("canvas"),n=t.getContext("2d");t.width=this.streamParameters.width,t.height=this.streamParameters.height,n.fillStyle=e,n.fillRect(0,0,this.streamParameters.width,this.streamParameters.height),this.backgroundReplacementCanvas=t}loadImage(e){return i(this,void 0,void 0,(function*(){const t=yield fetch(e).catch((e=>{throw this.logger.error(e.toString()),new Error("Failed to fetch image.")})),n=yield t.blob(),i=new Image;return i.src=URL.createObjectURL(n),new Promise(((e,t)=>{i.onload=()=>{e(i)},i.onerror=e=>{t(e)}}))}))}}},2913:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FXLIB_PATH=t.WORKER_PATH=t.CDN_BASE_PATH=t.RESOURCE_CONSTRAINTS=t.SEGMENTATION_MODEL=t.DEFAULT_STREAM_PARAMETERS=t.WORKER_MSG=void 0,t.WORKER_MSG={BUILD_ENGINE_REQUEST:"BuildEngineRequest",BUILD_ENGINE_RESPONSE:"BuildEngineResponse",PERFORM_SEGMENTATION_REQUEST:"PerformSegmentationRequest",PERFORM_SEGMENTATION_RESPONSE:"PerformSegmentationResponse",PERFORM_SEGMENTATION_SAB_REQUEST:"PerformSegmentationSABRequest",PERFORM_SEGMENTATION_SAB_RESPONSE:"PerformSegmentationSABResponse",DESTROY_ASSETS_REQUEST:"DestroyAssetsRequest",DESTROY_ASSETS_RESPONSE:"DestroyAssetsResponse",CLOSE_WORKER_REQUEST:"CloseWorkerRequest"},t.DEFAULT_STREAM_PARAMETERS={FRAMES_PER_SECOND:15,WIDTH_IN_PIXEL:960,HEIGHT_IN_PIXEL:540,CHANNEL_COUNT:4},t.SEGMENTATION_MODEL={LOAD_SUCCESS:2,WIDTH_IN_PIXELS:176,HEIGHT_IN_PIXELS:160},t.RESOURCE_CONSTRAINTS={DEFAULT_PROCESSING_BUDGET_PER_FRAME:50,SEGMENTATION_DEFAULT_FRAMES_PER_SEGMENTATION:1,SEGMENTATION_SAMPLING_PERIOD_FRAME_COUNT:500,BLUR_DEFAULT_CYCLE_PERCENTAGE:10,BLUR_SAMPLING_PERIOD_FRAME_COUNT:1e3,MIN_PROCESSING_BUDGET:0,MAX_PROCESSING_BUDGET:100},t.CDN_BASE_PATH="https://static.sdkassets.chime.aws";const n="/ml_media_fx/otherassets";t.WORKER_PATH=`${n}/worker.js`,t.FXLIB_PATH=`${n}/fxlib.js`},7746:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=n(623),o=n(5021),s=n(9424),c=r(n(543)),l=r(n(7434)),d=n(8690),u=r(n(4046)),f=r(n(9807)),h=n(2826),m=n(8190),p=n(2913),g=n(9935);class v{constructor(e,t=p.RESOURCE_CONSTRAINTS.DEFAULT_PROCESSING_BUDGET_PER_FRAME,n){this.logger=e,this.outputCanvas=document.createElement("canvas"),this.canvasVideoFrameBuffer=new f.default(this.outputCanvas);try{this.validateProcessingBudgetPerFrame(t)}catch(e){throw this.logger.error(e),new Error(`Cannot instantiate VideoFxProcessor due to invalid processingBudgetPerFrame of ${t}`)}n&&(this.eventController=n),this.effectConfig={backgroundBlur:{isEnabled:!1,strength:"low"},backgroundReplacement:{isEnabled:!1,backgroundImageURL:null,defaultColor:"black"}},this.segmentationRequestPromise=new h.DeferredPromise,this.segmentationRateManager=new g.VideoFxSegmentationRateManager(this.logger,t),this.streamParameters={framerate:p.DEFAULT_STREAM_PARAMETERS.FRAMES_PER_SECOND,width:p.DEFAULT_STREAM_PARAMETERS.WIDTH_IN_PIXEL,height:p.DEFAULT_STREAM_PARAMETERS.HEIGHT_IN_PIXEL,channels:p.DEFAULT_STREAM_PARAMETERS.CHANNEL_COUNT},v.isSharedArrayBufferSupported&&(this.sharedImageBuffer=new SharedArrayBuffer(p.SEGMENTATION_MODEL.WIDTH_IN_PIXELS*p.SEGMENTATION_MODEL.HEIGHT_IN_PIXELS*this.streamParameters.channels),this.sharedImageData=new Uint8ClampedArray(this.sharedImageBuffer)),this.logger.info(`VideoFx supports Shared Array Buffer: ${v.isSharedArrayBufferSupported}`),this.canvasOpsManager=new m.VideoFxCanvasOpsManager(this.streamParameters,this.outputCanvas),this.outputCanvas.width=this.streamParameters.width,this.outputCanvas.height=this.streamParameters.height,this.segmentationMask=new ImageData(this.streamParameters.width,this.streamParameters.height),this.logger.info(`VideoFxProcessor instantiated with a processingBudgetPerFrame of ${t}`)}process(e){return i(this,void 0,void 0,(function*(){return e}))}fxProcess(e){return i(this,void 0,void 0,(function*(){const t=e[0].asCanvasElement();this.didStreamParametersChange(t)&&(yield this.adjustProcessorForNewStreamParameters(t));try{yield this.manageSegmentationMask(t)}catch(e){throw this.logger.error(e),new Error("Video stream could not be processed")}return yield this.renderer.render(t,this.segmentationMask),e[0]=this.canvasVideoFrameBuffer,e}))}noOpProcess(e){return i(this,void 0,void 0,(function*(){return e}))}didStreamParametersChange(e){return e.width!==this.streamParameters.width||e.height!==this.streamParameters.height}adjustProcessorForNewStreamParameters(e){return i(this,void 0,void 0,(function*(){this.streamParameters.width=e.width,this.streamParameters.height=e.height,yield this.canvasOpsManager.configureForStreamParameters(this.streamParameters),yield this.renderer.configure(this.streamParameters.width,this.streamParameters.height,this.effectConfig)}))}destroy(){return i(this,void 0,void 0,(function*(){this.canvasVideoFrameBuffer.destroy(),this.fxLibScript&&this.fxLibScript.parentNode&&this.fxLibScript.parentNode.removeChild(this.fxLibScript),this.engineWorker&&(this.destroyedAssetsPromise=new h.DeferredPromise,this.engineWorker.postMessage({msg:p.WORKER_MSG.DESTROY_ASSETS_REQUEST}),yield this.destroyedAssetsPromise.getPromise(),this.engineWorker.postMessage({msg:p.WORKER_MSG.CLOSE_WORKER_REQUEST})),this.logger.info("VideoFxProcessor destroyed.")}))}manageSegmentationMask(e){return i(this,void 0,void 0,(function*(){try{if(this.segmentationRateManager.submitFrame(),this.segmentationRateManager.shouldApplySegmentation()){this.segmentationRateManager.startSegmentation();const t=this.canvasOpsManager.getInferenceInputData(e);this.segmentationMask=yield this.generateSegmentationMask(t),this.segmentationRateManager.completeSegmentation()}}catch(e){throw this.logger.error(e.toString()),new Error("Can not properly manage the returned segmentation mask")}}))}generateSegmentationMask(e){return i(this,void 0,void 0,(function*(){v.isSharedArrayBufferSupported?(this.sharedImageData.set(e.data),this.engineWorker.postMessage({msg:p.WORKER_MSG.PERFORM_SEGMENTATION_SAB_REQUEST,payload:this.sharedImageBuffer})):this.engineWorker.postMessage({msg:p.WORKER_MSG.PERFORM_SEGMENTATION_REQUEST,payload:e},[e.data.buffer]);try{return yield this.segmentationRequestPromise.getPromise()}catch(e){throw this.logger.error(e.toString()),new Error("Segmentation mask could not be generated")}}))}cloneConfigFrom(e){return{backgroundBlur:{isEnabled:e.backgroundBlur.isEnabled,strength:e.backgroundBlur.strength},backgroundReplacement:{isEnabled:e.backgroundReplacement.isEnabled,backgroundImageURL:e.backgroundReplacement.backgroundImageURL,defaultColor:e.backgroundReplacement.defaultColor}}}setEffectConfig(e){return i(this,void 0,void 0,(function*(){if(this.sameVideoFxConfig(e,this.effectConfig))return;const t=this.cloneConfigFrom(e);try{yield this.validateEffectConfig(t)}catch(e){throw this.logger.error(e.toString()),new Error("Provided effect config is invalid, not updating VideoFxProcessor")}t.backgroundReplacement.isEnabled&&(yield this.canvasOpsManager.loadReplacementBackground(t),yield this.renderer.setBackgroundReplacementCanvas(this.canvasOpsManager.getBackgroundReplacementCanvas())),yield this.renderer.configure(this.streamParameters.width,this.streamParameters.height,t),this.effectConfig=t,this.effectConfig.backgroundBlur.isEnabled||this.effectConfig.backgroundReplacement.isEnabled?this.process=this.fxProcess:this.process=this.noOpProcess,this.logger.info(`VideoFxProcessor effect configuration updated to: ${JSON.stringify(this.effectConfig)}`),this.eventController&&this.publishVideoFxConfigEvent()}))}validateEffectConfig(e){return i(this,void 0,void 0,(function*(){if(e.backgroundBlur.isEnabled&&e.backgroundReplacement.isEnabled)throw new Error("Invalid VideoFx configuration: Background Blur and Background Replacement can not both be enabled");e.backgroundReplacement.isEnabled&&(yield this.validateReplacementConfig(e))}))}validateReplacementConfig(e){return i(this,void 0,void 0,(function*(){if(e.backgroundReplacement.backgroundImageURL&&e.backgroundReplacement.defaultColor)throw new Error("Invalid VideoFx configuration: Background Replacement can not have both an image URL and default color");if(!e.backgroundReplacement.backgroundImageURL&&!e.backgroundReplacement.defaultColor)throw new Error("Invalid VideoFx configuration: Background Replacement image URL and default can not both be null/undefined");try{e.backgroundReplacement.backgroundImageURL&&(yield this.canvasOpsManager.loadImage(e.backgroundReplacement.backgroundImageURL))}catch(e){throw this.logger.error(e.toString()),new Error("Invalid VideoFx configuration: backgroundImageURL failed to load")}const t=e.backgroundReplacement.defaultColor;if(t&&"black"!==t&&"#000000"!==t&&"#000"!==t){if(t.includes("#")&&!new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/).test(t))throw new Error(`Invalid hexadecimal color code for default replacement background: ${t}`);const e=document.createElement("canvas").getContext("2d"),n=e.fillStyle;if(e.fillStyle=t,e.fillStyle===n)throw new Error(`Invalid color for default replacement background: ${t}`)}}))}validateProcessingBudgetPerFrame(e){if(ep.RESOURCE_CONSTRAINTS.MAX_PROCESSING_BUDGET)throw new Error(`Invalid resource constraint: cycle percentage must be within range of ${p.RESOURCE_CONSTRAINTS.MIN_PROCESSING_BUDGET} and ${p.RESOURCE_CONSTRAINTS.MAX_PROCESSING_BUDGET}`)}loadAssets(){return i(this,void 0,void 0,(function*(){this.logger.info("Loading required assets for the VideoFxProcessor");try{const e=this.getVideoFxAssetParams();yield this.loadEngineWorker(e),yield this.buildEngine(e),yield this.loadFxLib(e),this.renderer=constructRenderer(p.SEGMENTATION_MODEL.WIDTH_IN_PIXELS,p.SEGMENTATION_MODEL.HEIGHT_IN_PIXELS,this.effectConfig,this.outputCanvas)}catch(e){throw this.logger.error(e.toString()),new Error("Failed to load necessary assets for the VideoFxProcessor")}this.logger.info("Finished loading of essential VideoFxProcessor assets.")}))}getVideoFxAssetParams(){const e=d.getDefaultAssetSpec();return{assetGroup:e.assetGroup,revisionID:e.revisionID,sdk:encodeURIComponent(u.default.sdkVersion),ua:encodeURIComponent(u.default.sdkUserAgentLowResolution)}}getPathFromVideoFxAssetParams(e,t){const n=new URL(e);for(const[e,i]of Object.entries(t))if(void 0!==i){const t=encodeURIComponent(e),r=encodeURIComponent(i);n.searchParams.set(t,r)}return n.toString()}loadEngineWorker(e){return i(this,void 0,void 0,(function*(){try{const t=this.getPathFromVideoFxAssetParams(p.CDN_BASE_PATH+p.WORKER_PATH,e);this.engineWorker=yield o.loadWorker(t,"VideoFxEngineWorker",{},null),this.logger.info("Successfully loaded the VideoFxProcessor's engine worker"),this.engineWorker.addEventListener("message",(e=>this.engineWorkerReceiver(e)))}catch(e){throw this.logger.error(e.toString()),new Error("Failed to load the VideoFxProcessor's engine worker")}}))}buildEngine(e){return i(this,void 0,void 0,(function*(){this.buildEnginePromise=new h.DeferredPromise,this.engineWorker.postMessage({msg:p.WORKER_MSG.BUILD_ENGINE_REQUEST,payload:{cdnBasePath:p.CDN_BASE_PATH,sdkVersioningParams:e}});try{yield this.buildEnginePromise.getPromise()}catch(e){throw this.logger.error(e.toString()),new Error("Failed to instantiate the VideoFxEngine")}}))}loadFxLib(e){return i(this,void 0,void 0,(function*(){const t=this.getPathFromVideoFxAssetParams(p.CDN_BASE_PATH+p.FXLIB_PATH,e),n={method:"GET",mode:"cors",credentials:"omit",redirect:"follow",referrerPolicy:"no-referrer"};try{const e=yield a.fetchWithBehavior(t,n,{});if(!e.ok)throw new Error("Fetch failed.");const i=window.URL.createObjectURL(yield e.blob());yield new Promise(((e,t)=>{this.fxLibScript=document.createElement("script"),this.fxLibScript.setAttribute("src",i),this.fxLibScript.setAttribute("type","module"),this.fxLibScript.setAttribute("async","false"),this.fxLibScript.addEventListener("load",e),this.fxLibScript.addEventListener("error",t),document.body.appendChild(this.fxLibScript)}))}catch(e){throw this.logger.error(e.toString()),new Error("Failed to load the fxlib")}}))}getEffectConfig(){return this.cloneConfigFrom(this.effectConfig)}engineWorkerReceiver(e){const t=e.data;switch(t.msg){case p.WORKER_MSG.BUILD_ENGINE_RESPONSE:this.settleEngineBuildPromise(t.payload);break;case p.WORKER_MSG.PERFORM_SEGMENTATION_RESPONSE:this.settleSegmentationPromise(t.payload.output);break;case p.WORKER_MSG.PERFORM_SEGMENTATION_SAB_RESPONSE:this.settleSegmentationPromiseSAB();break;case p.WORKER_MSG.DESTROY_ASSETS_RESPONSE:this.destroyedAssetsPromise.resolvePromise();break;default:this.logger.info(`VideoFx worker received unknown event msg: ${JSON.stringify(t)}`)}}settleEngineBuildPromise(e){e!==p.SEGMENTATION_MODEL.LOAD_SUCCESS?this.buildEnginePromise.rejectPromise(new Error("Failed to build VideoFxProcessor's engine")):(this.logger.info("Successfully built the VideoFxEngine"),this.buildEnginePromise.resolvePromise())}settleSegmentationPromise(e){e?this.segmentationRequestPromise.resolveAndReplacePromise(e):this.segmentationRequestPromise.rejectAndReplacePromise(new Error("Failed to perform a segmentation on the input image"))}settleSegmentationPromiseSAB(){try{const e=new ImageData(new Uint8ClampedArray(this.sharedImageData),p.SEGMENTATION_MODEL.WIDTH_IN_PIXELS,p.SEGMENTATION_MODEL.HEIGHT_IN_PIXELS);this.segmentationRequestPromise.resolveAndReplacePromise(e)}catch(e){this.segmentationRequestPromise.rejectAndReplacePromise(new Error("Failed to perform a segmentation with a shared array buffer on the input image"))}}setToNoOpProcess(){this.process=this.noOpProcess}static isSupported(e=new l.default,t=!0){return i(this,void 0,void 0,(function*(){let n=!0;const r=(t,i)=>{t&&(e.info(i),n=!1)};return r("undefined"==typeof globalThis,"Browser does not have globalThis."),r(!s.supportsWorker(globalThis,e),"Browser does not support web workers."),r(!s.supportsWASM(globalThis,e),"Browser does not support wasm."),r(!document.createElement("canvas").getContext("webgl2"),"Browser does not support webgl."),r(!(new c.default).isVideoFxSupportedBrowser(),"Browser is unsupported for VideoFxProcessor"),Promise.resolve(!!n&&(yield(()=>i(this,void 0,void 0,(function*(){if(t)try{const t=new v(e);yield t.loadAssets(),yield t.destroy()}catch(t){return e.info("Browser environment is unable to access the required external assets."),Promise.resolve(!1)}return Promise.resolve(!0)})))()))}))}static create(e,t,n=p.RESOURCE_CONSTRAINTS.DEFAULT_PROCESSING_BUDGET_PER_FRAME){return i(this,void 0,void 0,(function*(){const i=new v(e,n);try{return yield i.loadAssets(),yield i.setEffectConfig(t),i}catch(t){throw e.error(t.toString()),i.setToNoOpProcess(),new Error("VideoFxProcessor built with support for only NoOp processing")}}))}setEventController(e){this.eventController?this.eventController=e:(this.eventController=e,this.publishVideoFxConfigEvent())}publishVideoFxConfigEvent(){const e={backgroundBlurEnabled:this.effectConfig.backgroundBlur.isEnabled.toString(),backgroundBlurStrength:this.effectConfig.backgroundBlur.strength,backgroundReplacementEnabled:this.effectConfig.backgroundReplacement.isEnabled.toString(),backgroundFilterVersion:2};this.eventController.publishEvent("backgroundFilterConfigSelected",e)}sameVideoFxConfig(e,t){return e.backgroundBlur.isEnabled===t.backgroundBlur.isEnabled&&e.backgroundBlur.strength===t.backgroundBlur.strength&&e.backgroundReplacement.backgroundImageURL===t.backgroundReplacement.backgroundImageURL&&e.backgroundReplacement.defaultColor===t.backgroundReplacement.defaultColor&&e.backgroundReplacement.isEnabled===t.backgroundReplacement.isEnabled}}t.default=v,v.isSharedArrayBufferSupported="undefined"!=typeof SharedArrayBuffer},9935:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VideoFxSegmentationRateManager=void 0;const i=n(2913);t.VideoFxSegmentationRateManager=class{constructor(e,t){this.logger=e,this.targetSegmentationCyclePercentage=t/100,this.frameCountOverSamplingPeriod=0,this.totalSegmentationDurationOverSamplingPeriod=0,this.samplingPeriodStartTime=performance.now(),this.framesPerSegmentation=i.RESOURCE_CONSTRAINTS.SEGMENTATION_DEFAULT_FRAMES_PER_SEGMENTATION}submitFrame(){this.frameCountOverSamplingPeriod++}shouldApplySegmentation(){return this.frameCountOverSamplingPeriod%this.framesPerSegmentation==0}startSegmentation(){this.frameSegmentationStartTime=performance.now()}completeSegmentation(){this.totalSegmentationDurationOverSamplingPeriod+=performance.now()-this.frameSegmentationStartTime,this.frameCountOverSamplingPeriod>=i.RESOURCE_CONSTRAINTS.SEGMENTATION_SAMPLING_PERIOD_FRAME_COUNT&&this.adjustFramesPerSegmentation(this.totalSegmentationDurationOverSamplingPeriod/(performance.now()-this.samplingPeriodStartTime))}adjustFramesPerSegmentation(e){e>this.targetSegmentationCyclePercentage?(this.framesPerSegmentation++,this.logger.info(`Segmentation cycle percentage above the configured maximal value. Decreasing segmentation rate to 1 segmentation per ${this.framesPerSegmentation} frames`)):this.framesPerSegmentation>1&&e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{}},1508:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class n{constructor(e){this.ids=new Set(e)}add(e){this.ids.add(e)}array(){return Array.from(this.ids.values()).sort(((e,t)=>e-t))}contain(e){return this.ids.has(e)}forEach(e){this.ids.forEach(e)}empty(){return 0===this.ids.size}size(){return this.ids.size}equal(e){if(!e)return 0===this.ids.size;const t=this.array(),n=e.array();if(t.length!==n.length)return!1;for(let e=0;e0&&e<1e3?1:Math.trunc(e/1e3)}remoteStreamDescriptions(){if(!this.currentIndex||!this.currentIndex.sources)return[];const e=[];return this.currentIndex.sources.forEach((t=>{const n=new o.default;n.attendeeId=t.attendeeId,n.groupId=t.groupId,n.streamId=t.streamId,n.maxBitrateKbps=t.maxBitrateKbps,n.avgBitrateKbps=this.convertBpsToKbps(t.avgBitrateBps),e.push(n)})),e}integrateUplinkPolicyDecision(e){if(e&&e.length){const t=e[0];this.videoStreamDescription.maxBitrateKbps=t.maxBitrate/1e3,this.videoStreamDescription.maxFrameRate=t.maxFramerate}}integrateIndexFrame(e){if(this.currentIndex=e,!e)return;const t=new Map;let n=!1;for(const i of e.sources){if(!t.has(i.attendeeId)){t.set(i.attendeeId,i.groupId);continue}const e=t.get(i.attendeeId);et.get(e.attendeeId)===e.groupId))),this.streamToAttendeeMap=null,this.groupIdToAttendeeMap=null,this.streamToExternalUserIdMap=null}subscribeFrameSent(){this.indexForSubscribe=this.currentIndex}integrateSubscribeAckFrame(e){this.currentSubscribeAck=e,this.subscribeTrackToStreamMap=this.buildTrackToStreamMap(this.currentSubscribeAck),this.subscribeSsrcToStreamMap=this.buildSSRCToStreamMap(this.currentSubscribeAck),this.subscribeSsrcToGroupMap=this.buildSSRCToGroupMap(this.currentSubscribeAck),this.subscribeStreamToAttendeeMap=this.buildStreamToAttendeeMap(this.indexForSubscribe),this.subscribeStreamToExternalUserIdMap=this.buildStreamExternalUserIdMap(this.indexForSubscribe)}integrateBitratesFrame(e){if(this.currentIndex)for(const t of e.bitrates){const e=this.currentIndex.sources.find((e=>e.streamId===t.sourceStreamId));void 0!==e&&(e.avgBitrateBps=t.avgBitrateBps)}}allStreams(){const e=new a.default;if(this.currentIndex)for(const t of this.currentIndex.sources)e.add(t.streamId);return e}allVideoSendingSourcesExcludingSelf(e){const t=[],n=new Set;if(this.currentIndex&&this.currentIndex.sources&&this.currentIndex.sources.length)for(const i of this.currentIndex.sources){const{attendeeId:a,externalUserId:o,mediaType:s}=i;a!==e&&s===r.SdkStreamMediaType.VIDEO&&(n.has(a)||(t.push({attendee:{attendeeId:a,externalUserId:o}}),n.add(a)))}return t}streamSelectionUnderBandwidthConstraint(e,t,n,i){const o=new Set;if(this.currentIndex)for(const i of this.currentIndex.sources)i.attendeeId!==e&&i.mediaType===r.SdkStreamMediaType.VIDEO&&(t.has(i.attendeeId)||n.has(i.attendeeId)||o.add(i.attendeeId));const s=this.buildAttendeeToSortedStreamDescriptorMapExcludingSelf(e),c=new Map;let l=0;s.forEach(((e,t)=>{c.set(t,e[0]),l+=e[0].maxBitrateKbps})),l=this.trySelectHighBitrateForAttendees(s,t,l,i,c),this.trySelectHighBitrateForAttendees(s,o,l,i,c);const d=new a.default;for(const e of c.values())d.add(e.streamId);return d}highestQualityStreamFromEachGroupExcludingSelf(e){const t=new a.default;if(this.currentIndex){const n=new Map;for(const t of this.currentIndex.sources)t.attendeeId!==e&&t.mediaType===r.SdkStreamMediaType.VIDEO&&(!n.has(t.groupId)||t.maxBitrateKbps>n.get(t.groupId).maxBitrateKbps)&&n.set(t.groupId,t);for(const e of n.values())t.add(e.streamId)}return t}numberOfVideoPublishingParticipantsExcludingSelf(e){return this.highestQualityStreamFromEachGroupExcludingSelf(e).array().length}numberOfParticipants(){return this.currentIndex.numParticipants?this.currentIndex.numParticipants:-1}attendeeIdForTrack(e){const t=this.streamIdForTrack(e);return void 0!==t&&this.subscribeStreamToAttendeeMap?this.subscribeStreamToAttendeeMap.get(t)||(this.logger.info(`track ${e} (stream ${t}) does not correspond to a known attendee`),""):(this.logger.warn(`no attendee found for track ${e}`),"")}externalUserIdForTrack(e){const t=this.streamIdForTrack(e);return void 0!==t&&this.subscribeStreamToExternalUserIdMap?this.subscribeStreamToExternalUserIdMap.get(t)||(this.logger.info(`track ${e} (stream ${t}) does not correspond to a known externalUserId`),""):(this.logger.warn(`no external user id found for track ${e}`),"")}attendeeIdForStreamId(e){if(!this.streamToAttendeeMap){if(!this.currentIndex)return"";this.streamToAttendeeMap=this.buildStreamToAttendeeMap(this.currentIndex)}return this.streamToAttendeeMap.get(e)||(this.logger.info(`stream ID ${e} does not correspond to a known attendee`),"")}attendeeIdForGroupId(e){if(!this.groupIdToAttendeeMap){if(!this.currentIndex)return"";this.groupIdToAttendeeMap=this.buildGroupIdToAttendeeMap(this.currentIndex)}return this.groupIdToAttendeeMap.get(e)||(this.logger.info(`group ID ${e} does not correspond to a known attendee`),"")}groupIdForStreamId(e){if(this.currentIndex&&this.currentIndex.sources){for(const t of this.currentIndex.sources)if(t.streamId===e)return t.groupId;if(this.indexForSubscribe)for(const t of this.indexForSubscribe.sources)if(t.streamId===e)return t.groupId}}StreamIdsInSameGroup(e,t){return this.groupIdForStreamId(e)===this.groupIdForStreamId(t)}streamIdForTrack(e){if(this.subscribeTrackToStreamMap)return this.subscribeTrackToStreamMap.get(e)}streamIdForSSRC(e){if(this.subscribeSsrcToStreamMap)return this.subscribeSsrcToStreamMap.get(e)}overrideStreamIdMappings(e,t){if(this.subscribeTrackToStreamMap)for(const[n,i]of this.subscribeTrackToStreamMap.entries())if(e===i){this.subscribeTrackToStreamMap.set(n,t);break}if(this.subscribeSsrcToStreamMap)for(const[n,i]of this.subscribeSsrcToStreamMap.entries())if(e===i){this.subscribeSsrcToStreamMap.set(n,t);break}}groupIdForSSRC(e){if(this.subscribeSsrcToGroupMap)return this.subscribeSsrcToGroupMap.get(e)}streamsPausedAtSource(){const e=new a.default;if(this.currentIndex)for(const t of this.currentIndex.pausedAtSourceIds)e.add(t);return e}buildTrackToStreamMap(e){const t=new Map;this.logger.debug((()=>`trackMap ${JSON.stringify(e.tracks)}`));for(const n of e.tracks)n.trackLabel.length>0&&n.streamId>0&&t.set(n.trackLabel,n.streamId);return t}buildSSRCToStreamMap(e){const t=new Map;this.logger.debug((()=>`ssrcMap ${JSON.stringify(e.tracks)}`));for(const n of e.tracks)n.trackLabel.length>0&&n.streamId>0&&t.set(n.ssrc,n.streamId);return t}buildSSRCToGroupMap(e){const t=new Map;for(const n of e.tracks)n.trackLabel.length>0&&n.streamId>0&&t.set(n.ssrc,this.groupIdForStreamId(n.streamId));return t}buildStreamToAttendeeMap(e){const t=new Map;if(e)for(const n of e.sources)t.set(n.streamId,n.attendeeId);return t}buildGroupIdToAttendeeMap(e){const t=new Map;for(const n of e.sources)t.set(n.groupId,n.attendeeId);return t}buildStreamExternalUserIdMap(e){const t=new Map;if(e)for(const n of e.sources)n.externalUserId&&t.set(n.streamId,n.externalUserId);return t}trySelectHighBitrateForAttendees(e,t,n,i,r){for(const a of t){if(n>=i)break;if(e.has(a)){const t=e.get(a);for(const e of t.reverse())if(n-r.get(a).maxBitrateKbps+e.maxBitrateKbps{e.sort(((e,t)=>e.maxBitrateKbps>t.maxBitrateKbps?1:e.maxBitrateKbps{e.push(t.clone())})),e}integrateUplinkPolicyDecision(e){let t=!0,n=0;for(let i=0;i0&&(this._localStreamInfos[n].timeEnabled=Date.now()),this._localStreamInfos[n].maxBitrateKbps=r,this._localStreamInfos[n].maxFrameRate=a,this._localStreamInfos[n].disabledByUplinkPolicy=0===r,!0===this._localStreamInfos[n].disabledByUplinkPolicy&&(this._localStreamInfos[n].disabledByWebRTC=!1),n++;else{t=!1;const e=new o.default;e.maxBitrateKbps=r,e.maxFrameRate=a,e.disabledByUplinkPolicy=0===r,0!==r&&(e.timeEnabled=Date.now()),this._localStreamInfos.push(e),n++}}t&&this._localStreamInfos.splice(n)}integrateBitratesFrame(e){super.integrateBitratesFrame(e);const t=new Set,n=new Set(this.streamIdToBitrateKbpsMap.keys());for(const n of e.bitrates)t.add(n.sourceStreamId),this.streamIdToBitrateKbpsMap.set(n.sourceStreamId,this.convertBpsToKbps(n.avgBitrateBps));for(const e of n)t.has(e)||(this.streamIdToBitrateKbpsMap.get(e)===s.UNSEEN_STREAM_BITRATE?this.streamIdToBitrateKbpsMap.set(e,s.RECENTLY_INACTIVE_STREAM_BITRATE):this.streamIdToBitrateKbpsMap.set(e,s.NOT_SENDING_STREAM_BITRATE));for(let e=0;es.BitratesMsgFrequencyMs&&(this._localStreamInfos[e].disabledByWebRTC=!0):this._lastBitRateMsgTime-this._localStreamInfos[e].timeEnabled>s.BitratesMsgFrequencyMs&&(this._localStreamInfos[e].disabledByWebRTC=!0))}this._lastBitRateMsgTime=Date.now(),this.logLocalStreamDescriptions()}logLocalStreamDescriptions(){let e="";for(const t of this._localStreamInfos)e+=`streamId=${t.streamId} maxBitrate=${t.maxBitrateKbps} disabledByWebRTC=${t.disabledByWebRTC} disabledByUplink=${t.disabledByUplinkPolicy}\n`;this.logger.debug((()=>e))}integrateIndexFrame(e){super.integrateIndexFrame(e);const t=new Set,n=new Set(this.streamIdToBitrateKbpsMap.keys());for(const e of this.currentIndex.sources)e.mediaType===r.SdkStreamMediaType.VIDEO&&(t.add(e.streamId),this.streamIdToBitrateKbpsMap.has(e.streamId)||this.streamIdToBitrateKbpsMap.set(e.streamId,s.UNSEEN_STREAM_BITRATE));for(const e of n)t.has(e)||this.streamIdToBitrateKbpsMap.delete(e)}integrateSubscribeAckFrame(e){if(super.integrateSubscribeAckFrame(e),!e.allocations||void 0===e.allocations)return;let t=0;for(const n of e.allocations){if(this._localStreamInfos.length{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(289);class r{constructor(e,t,n,i,r){this.attendeeId="",this.groupId=0,this.streamId=0,this.ssrc=0,this.trackLabel="",this.maxBitrateKbps=0,this.avgBitrateKbps=0,this.maxFrameRate=0,this.timeEnabled=0,this.disabledByWebRTC=!1,this.disabledByUplinkPolicy=!1,this.attendeeId=e,this.groupId=t,this.streamId=n,this.maxBitrateKbps=i,this.avgBitrateKbps=r}clone(){const e=new r;return e.attendeeId=this.attendeeId,e.groupId=this.groupId,e.streamId=this.streamId,e.ssrc=this.ssrc,e.trackLabel=this.trackLabel,e.maxBitrateKbps=this.maxBitrateKbps,e.avgBitrateKbps=this.avgBitrateKbps,e.maxFrameRate=this.maxFrameRate,e.timeEnabled=this.timeEnabled,e.disabledByWebRTC=this.disabledByWebRTC,e.disabledByUplinkPolicy=this.disabledByUplinkPolicy,e}toStreamDescriptor(){const e=i.SdkStreamDescriptor.create();return e.mediaType=i.SdkStreamMediaType.VIDEO,e.trackLabel=this.trackLabel,e.attendeeId=this.attendeeId,e.streamId=this.streamId,e.groupId=this.groupId,e.framerate=this.maxFrameRate,e.maxBitrateKbps=this.disabledByUplinkPolicy||this.disabledByWebRTC?0:this.maxBitrateKbps,e.avgBitrateBps=this.avgBitrateKbps,e}}t.default=r},3327:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(543)),a=i(n(214)),o=i(n(7804));class s{constructor(e,t,n,i){this.tileController=n,this.devicePixelRatioMonitor=i,this.tileState=new o.default,this.tileState.tileId=e,this.tileState.localTile=t,this.devicePixelRatioMonitor.registerObserver(this)}static connectVideoStreamToVideoElement(e,t,n){const i=n&&"environment"!==e.getVideoTracks()[0].getSettings().facingMode?"rotateY(180deg)":"";if(s.setVideoElementFlag(t,"disablePictureInPicture",n),s.setVideoElementFlag(t,"disableRemotePlayback",n),t.style.transform!==i&&(t.style.transform=i),t.hasAttribute("controls")&&t.removeAttribute("controls"),t.hasAttribute("autoplay")||t.setAttribute("autoplay","true"),t.hasAttribute("playsinline")||t.setAttribute("playsinline","true"),t.hasAttribute("muted")||(t.setAttribute("muted","true"),t.muted=!0),t.srcObject!==e&&(t.srcObject=e,(new r.default).requiresVideoPlayWorkaround()&&t.paused)){const e=t.play();void 0!==e&&e.catch((e=>{console.warn("Error playing video in Safari",e)})).then((()=>{console.debug("Video played successfully in Safari")}))}}static disconnectVideoStreamFromVideoElement(e,t,n=!1){if(e)if(t)n||(e.srcObject=null,e.style.transform="");else{if(!e.srcObject)return;e.pause(),e.style.transform="",s.setVideoElementFlag(e,"disablePictureInPicture",!1),s.setVideoElementFlag(e,"disableRemotePlayback",!1),e.srcObject=null}}destroy(){this.devicePixelRatioMonitor.removeObserver(this),this.tileState.boundVideoElement&&this.tileState.boundVideoElement.srcObject===this.tileState.boundVideoStream&&s.disconnectVideoStreamFromVideoElement(this.tileState.boundVideoElement,!1),this.tileState=new o.default}devicePixelRatioChanged(e){this.tileState.devicePixelRatio=e,this.sendTileStateUpdate()}id(){return this.tileState.tileId}state(){return this.tileState.clone()}stateRef(){return this.tileState}bindVideoStream(e,t,n,i,r,o,s){let c=!1;this.tileState.boundAttendeeId!==e&&(this.tileState.boundAttendeeId=e,new a.default(e).hasModality(a.default.MODALITY_CONTENT)&&(this.tileState.isContent=!0),c=!0),this.tileState.boundExternalUserId!==s&&(this.tileState.boundExternalUserId=s,c=!0),this.tileState.localTile!==t&&(this.tileState.localTile=t,c=!0),this.tileState.boundVideoStream!==n&&(this.tileState.boundVideoStream=n,c=!0),this.tileState.videoStreamContentWidth!==i&&(this.tileState.videoStreamContentWidth=i,c=!0),this.tileState.videoStreamContentHeight!==r&&(this.tileState.videoStreamContentHeight=r,c=!0),this.tileState.streamId!==o&&(this.tileState.streamId=o,c=!0),c&&this.sendTileStateUpdate()}bindVideoElement(e){let t=!1;this.tileState.boundVideoElement!==e&&(this.tileState.boundVideoElement=e,t=!0),null!==this.tileState.boundVideoElement?(this.tileState.videoElementCSSWidthPixels!==e.clientWidth&&(this.tileState.videoElementCSSWidthPixels=e.clientWidth,t=!0),this.tileState.videoElementCSSHeightPixels!==e.clientHeight&&(this.tileState.videoElementCSSHeightPixels=e.clientHeight,t=!0)):(this.tileState.videoElementCSSWidthPixels=null,this.tileState.videoElementCSSHeightPixels=null),t&&this.sendTileStateUpdate()}pause(){this.tileState.paused||(this.tileState.paused=!0,this.sendTileStateUpdate())}unpause(){this.tileState.paused&&(this.tileState.paused=!1,this.sendTileStateUpdate())}markPoorConnection(){return!this.tileState.poorConnection&&(this.tileState.poorConnection=!0,this.sendTileStateUpdate(),!0)}unmarkPoorConnection(){return!!this.tileState.poorConnection&&(this.tileState.poorConnection=!1,this.sendTileStateUpdate(),!0)}capture(){if(!this.tileState.active)return null;const e=document.createElement("canvas"),t=this.tileState.boundVideoElement;e.width=t.videoWidth||t.width,e.height=t.videoHeight||t.height;const n=e.getContext("2d");return n.drawImage(t,0,0,e.width,e.height),n.getImageData(0,0,e.width,e.height)}setStreamId(e){this.tileState.streamId=e,this.tileController.sendTileStateUpdate(this.state())}sendTileStateUpdate(){this.updateActiveState(),this.updateVideoStreamOnVideoElement(),this.updateVideoElementPhysicalPixels(),this.tileController.sendTileStateUpdate(this.state())}updateActiveState(){this.tileState.active=!(this.tileState.paused||this.tileState.poorConnection||!this.tileState.boundAttendeeId||!this.tileState.boundVideoElement||!this.tileState.boundVideoStream)}updateVideoElementPhysicalPixels(){"number"==typeof this.tileState.videoElementCSSWidthPixels&&"number"==typeof this.tileState.videoElementCSSHeightPixels?(this.tileState.videoElementPhysicalWidthPixels=this.tileState.devicePixelRatio*this.tileState.videoElementCSSWidthPixels,this.tileState.videoElementPhysicalHeightPixels=this.tileState.devicePixelRatio*this.tileState.videoElementCSSHeightPixels):(this.tileState.videoElementPhysicalWidthPixels=null,this.tileState.videoElementPhysicalHeightPixels=null)}updateVideoStreamOnVideoElement(){this.tileState.active?s.connectVideoStreamToVideoElement(this.tileState.boundVideoStream,this.tileState.boundVideoElement,this.tileState.localTile):s.disconnectVideoStreamFromVideoElement(this.tileState.boundVideoElement,this.tileState.paused,this.tileController.keepLastFrameWhenPaused)}static setVideoElementFlag(e,t,n){t in e&&(e[t]=n)}}t.default=s},7804:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class n{constructor(){this.tileId=null,this.localTile=!1,this.localTileStarted=!1,this.isContent=!1,this.active=!1,this.paused=!1,this.poorConnection=!1,this.boundAttendeeId=null,this.boundExternalUserId=null,this.boundVideoStream=null,this.boundVideoElement=null,this.nameplate=null,this.videoStreamContentWidth=null,this.videoStreamContentHeight=null,this.videoElementCSSWidthPixels=null,this.videoElementCSSHeightPixels=null,this.devicePixelRatio=0,this.videoElementPhysicalWidthPixels=null,this.videoElementPhysicalHeightPixels=null,this.streamId=null}clone(){const e=new n;return e.tileId=this.tileId,e.localTile=this.localTile,e.isContent=this.isContent,e.active=this.active,e.paused=this.paused,e.poorConnection=this.poorConnection,e.boundAttendeeId=this.boundAttendeeId,e.boundExternalUserId=this.boundExternalUserId,e.boundVideoStream=this.boundVideoStream,e.boundVideoElement=this.boundVideoElement,e.nameplate=this.nameplate,e.videoStreamContentWidth=this.videoStreamContentWidth,e.videoStreamContentHeight=this.videoStreamContentHeight,e.videoElementCSSWidthPixels=this.videoElementCSSWidthPixels,e.videoElementCSSHeightPixels=this.videoElementCSSHeightPixels,e.devicePixelRatio=this.devicePixelRatio,e.videoElementPhysicalWidthPixels=this.videoElementPhysicalWidthPixels,e.videoElementPhysicalHeightPixels=this.videoElementPhysicalHeightPixels,e.streamId=this.streamId,e}}t.default=n},2958:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(8236)),o=r(n(9190)),s=n(8660),c=r(n(3327));t.default=class{constructor(e,t,n){this.tileFactory=e,this.audioVideoController=t,this.logger=n,this.tileMap=new Map,this.nextTileId=1,this.currentLocalTile=null,this.currentPausedTilesByIds=new Set,this.keepLastFrameWhenPaused=!1,this.keepLastFrameWhenPaused=t.configuration.keepLastFrameWhenPaused}createDevicePixelRatioMonitorIfNeeded(){this.devicePixelRatioMonitor||(this.devicePixelRatioMonitor=new a.default(new o.default,this.logger))}discardDevicePixelRatioMonitorIfNotNeeded(){return i(this,void 0,void 0,(function*(){if(this.tileMap.size||!this.devicePixelRatioMonitor)return;const e=this.devicePixelRatioMonitor;return this.devicePixelRatioMonitor=void 0,e.destroy()}))}bindVideoElement(e,t){const n=this.getVideoTile(e);null!==n?n.bindVideoElement(t):this.logger.warn(`Ignoring video element binding for unknown tile id ${e}`)}unbindVideoElement(e,t=!0){const n=this.getVideoTile(e);if(null===n)return void this.logger.warn(`Ignoring video element unbinding for unknown tile id ${e}`);this.logger.info("Unbinding the video element");const i=n.stateRef().boundVideoElement;n.bindVideoElement(null),t&&(this.logger.info("Cleaning up the video element"),c.default.disconnectVideoStreamFromVideoElement(i,!1))}startLocalVideoTile(){const e=this.findOrCreateLocalVideoTile();return this.currentLocalTile.stateRef().localTileStarted=!0,this.audioVideoController.update({needsRenegotiation:!0}),e.id()}stopLocalVideoTile(){this.currentLocalTile&&(this.currentLocalTile.stateRef().localTileStarted=!1,this.currentLocalTile.bindVideoStream(this.audioVideoController.configuration.credentials.attendeeId,!0,null,null,null,null,this.audioVideoController.configuration.credentials.externalUserId),this.audioVideoController.update({needsRenegotiation:!0}))}hasStartedLocalVideoTile(){return!(!this.currentLocalTile||!this.currentLocalTile.stateRef().localTileStarted)}removeLocalVideoTile(){this.currentLocalTile&&this.removeVideoTile(this.currentLocalTile.id())}getLocalVideoTile(){return this.currentLocalTile}pauseVideoTile(e){const t=this.getVideoTile(e);t&&(this.currentPausedTilesByIds.has(e)||(this.audioVideoController.pauseReceivingStream(t.stateRef().streamId),this.currentPausedTilesByIds.add(e)),t.pause())}unpauseVideoTile(e){const t=this.getVideoTile(e);t&&(this.currentPausedTilesByIds.has(e)&&(this.audioVideoController.resumeReceivingStream(t.stateRef().streamId),this.currentPausedTilesByIds.delete(e)),t.unpause())}getVideoTile(e){return this.tileMap.has(e)?this.tileMap.get(e):null}getVideoTileArea(e){const t=e.state();let n=0,i=0;return t.boundVideoElement&&(n=t.boundVideoElement.clientHeight*t.devicePixelRatio,i=t.boundVideoElement.clientWidth*t.devicePixelRatio),n*i}getAllRemoteVideoTiles(){const e=new Array;return this.tileMap.forEach(((t,n)=>{this.currentLocalTile&&n===this.currentLocalTile.id()||e.push(t)})),e}getAllVideoTiles(){return Array.from(this.tileMap.values())}addVideoTile(e=!1){const t=this.nextTileId;this.nextTileId+=1,this.createDevicePixelRatioMonitorIfNeeded();const n=this.tileFactory.makeTile(t,e,this,this.devicePixelRatioMonitor);return this.tileMap.set(t,n),n}removeVideoTile(e){if(!this.tileMap.has(e))return;const t=this.tileMap.get(e);this.currentLocalTile===t&&(this.currentLocalTile=null),t.destroy(),this.tileMap.delete(e),this.audioVideoController.forEachObserver((t=>{s.Maybe.of(t.videoTileWasRemoved).map((n=>n.bind(t)(e)))})),this.discardDevicePixelRatioMonitorIfNotNeeded()}removeVideoTilesByAttendeeId(e){const t=[];for(const n of this.getAllVideoTiles()){const i=n.state();i.boundAttendeeId===e&&(this.removeVideoTile(i.tileId),t.push(i.tileId))}return t}removeAllVideoTiles(){const e=Array.from(this.tileMap.keys());for(const t of e)this.removeVideoTile(t)}sendTileStateUpdate(e){this.audioVideoController.forEachObserver((t=>{s.Maybe.of(t.videoTileDidUpdate).map((n=>n.bind(t)(e)))}))}haveVideoTilesWithStreams(){for(const e of this.getAllVideoTiles())if(e.state().boundVideoStream)return!0;return!1}haveVideoTileForAttendeeId(e){return!!this.getVideoTileForAttendeeId(e)}getVideoTileForAttendeeId(e){for(const t of this.getAllVideoTiles())if(t.state().boundAttendeeId===e)return t}captureVideoTile(e){const t=this.getVideoTile(e);return t?t.capture():null}findOrCreateLocalVideoTile(){return this.currentLocalTile||(this.currentLocalTile=this.addVideoTile(!0),this.currentLocalTile.bindVideoStream(this.audioVideoController.configuration.credentials.attendeeId,!0,null,null,null,null,this.audioVideoController.configuration.credentials.externalUserId)),this.currentLocalTile}}},4922:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(3327));t.default=class{makeTile(e,t,n,i){return new r.default(e,t,n,i)}}},9394:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{}},4450:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(7606)),a=i(n(5785)),o=n(8660),s=i(n(1133)),c=i(n(9394));class l{constructor(e,t){this.selfAttendeeId=e,this.logger=t,this.numSenders=0,this.shouldDisableSimulcast=!1,this.newQualityMap=new Map,this.currentQualityMap=new Map,this.newActiveStreams=1,this.currentActiveStreams=1,this.lastUplinkBandwidthKbps=l.defaultUplinkBandwidthKbps,this.startTimeMs=0,this.lastUpdatedMs=Date.now(),this.videoIndex=null,this.currLocalDescriptions=[],this.nextLocalDescriptions=[],this.observerQueue=new Set,this.optimalParameters=new s.default(0,0,0,0,!0),this.parametersInEffect=new s.default(0,0,0,0,!0),this.lastUplinkBandwidthKbps=l.defaultUplinkBandwidthKbps,this.currentQualityMap=this.fillEncodingParamWithBitrates([300,0,1200]),this.newQualityMap=this.fillEncodingParamWithBitrates([300,0,1200])}updateConnectionMetric({uplinkKbps:e=0}){if(isNaN(e))return;0===this.startTimeMs&&(this.startTimeMs=Date.now()),Date.now()-this.startTimeMs`simulcast: uplink policy update metrics ${this.lastUplinkBandwidthKbps}`));let t=l.holdDownDurationMs;3===this.currentActiveStreams?t=2*l.holdDownDurationMs:(2===this.currentActiveStreams&&e<=l.kMidDisabledRate||1===this.currentActiveStreams&&e<=l.kHiDisabledRate)&&(t=l.holdDownDurationMs/2),Date.now()=n||this.lastUplinkBandwidthKbps<=i){this.shouldDisableSimulcast?(this.newActiveStreams=0,t[0].maxBitrateKbps=0,t[1].maxBitrateKbps=1200,t[2].maxBitrateKbps=0):this.numSenders<=4&&this.lastUplinkBandwidthKbps>=l.kHiDisabledRate?(this.newActiveStreams=1,t[0].maxBitrateKbps=300,t[1].maxBitrateKbps=0,t[2].maxBitrateKbps=1200):this.lastUplinkBandwidthKbps>=l.kMidDisabledRate?(this.newActiveStreams=2,t[0].maxBitrateKbps=this.lastUplinkBandwidthKbps>=350?200:150,t[1].maxBitrateKbps=this.numSenders<=6?600:350,t[2].maxBitrateKbps=0):(this.newActiveStreams=3,t[0].maxBitrateKbps=300,t[1].maxBitrateKbps=0,t[2].maxBitrateKbps=0);const e=t.map(((e,t,n)=>e.maxBitrateKbps));this.newQualityMap=this.fillEncodingParamWithBitrates(e),this.encodingParametersEqual()||this.logger.info(`simulcast: policy:calculateEncodingParameters bw:${this.lastUplinkBandwidthKbps} numSources:${this.numSenders} shouldDisableSimulcast:${this.shouldDisableSimulcast} newQualityMap: ${this.getQualityMapString(this.newQualityMap)}`)}return this.newQualityMap}chooseMediaTrackConstraints(){return{width:{ideal:1280},height:{ideal:768},frameRate:{ideal:15}}}chooseEncodingParameters(){return this.currentQualityMap=this.newQualityMap,this.currentActiveStreams=this.newActiveStreams,this.activeStreamsToPublish!==this.newActiveStreams&&(this.activeStreamsToPublish=this.newActiveStreams,this.publishEncodingSimulcastLayer()),this.currentQualityMap}updateIndex(e){const t=e.numberOfVideoPublishingParticipantsExcludingSelf(this.selfAttendeeId)+1,n=t!==this.numSenders,i=e.numberOfParticipants(),r=i>=0&&i<=2,a=this.shouldDisableSimulcast!==r;this.numSenders=t,this.shouldDisableSimulcast=r,this.optimalParameters=new s.default(this.captureWidth(),this.captureHeight(),this.captureFrameRate(),this.maxBandwidthKbps(),!1),this.videoIndex=e,this.newQualityMap=this.calculateEncodingParameters(n||a)}wantsResubscribe(){let e=!this.encodingParametersEqual();this.nextLocalDescriptions=this.videoIndex.localStreamDescriptions();for(let t=0;te.streamId===n));-1!==i&&this.nextLocalDescriptions[t].disabledByWebRTC!==this.currLocalDescriptions[i].disabledByWebRTC&&(e=!0)}}return e&&(this.lastUpdatedMs=Date.now()),this.currLocalDescriptions=this.nextLocalDescriptions,e}compareEncodingParameter(e,t){return JSON.stringify(e)===JSON.stringify(t)}encodingParametersEqual(){let e=!1;for(const t of a.default.NAME_ARR_ASCENDING)if(e=e||!this.compareEncodingParameter(this.newQualityMap.get(t),this.currentQualityMap.get(t)),e)break;return!e}chooseCaptureAndEncodeParameters(){return this.parametersInEffect=this.optimalParameters.clone(),this.parametersInEffect.clone()}captureWidth(){return 1280}captureHeight(){return 768}captureFrameRate(){return 15}maxBandwidthKbps(){return 1400}setIdealMaxBandwidthKbps(e){}setHasBandwidthPriority(e){}fillEncodingParamWithBitrates(e){const t=new Map,n=a.default.NAME_ARR_ASCENDING,i=e;let r=this.shouldDisableSimulcast?1:4;for(let e=0;e0,scaleResolutionDownBy:Math.max(r,1),maxBitrate:1e3*i[e]}),r/=2}return t}getQualityMapString(e){let t="";const n=this.videoIndex.localStreamDescriptions();return 3===n.length&&e.forEach((e=>{let i=!1;i="low"===e.rid?n[0].disabledByWebRTC:"mid"===e.rid?n[1].disabledByWebRTC:n[2].disabledByWebRTC,t+=`{ rid: ${e.rid} active:${e.active} disabledByWebRTC: ${i} maxBitrate:${e.maxBitrate}}`})),t}getEncodingSimulcastLayer(e){switch(e){case 0:return r.default.High;case 1:return r.default.LowAndHigh;case 2:return r.default.LowAndMedium;case 3:return r.default.Low}}publishEncodingSimulcastLayer(){const e=this.getEncodingSimulcastLayer(this.activeStreamsToPublish);this.forEachObserver((t=>{o.Maybe.of(t.encodingSimulcastLayersDidChange).map((n=>n.bind(t)(e)))}))}addObserver(e){this.logger.info("adding simulcast uplink observer"),this.observerQueue.add(e)}removeObserver(e){this.logger.info("removing simulcast uplink observer"),this.observerQueue.delete(e)}forEachObserver(e){for(const t of this.observerQueue)e(t)}}t.default=l,l.defaultUplinkBandwidthKbps=1200,l.startupDurationMs=6e3,l.holdDownDurationMs=4e3,l.defaultMaxFrameRate=15,l.kHiDisabledRate=700,l.kMidDisabledRate=240},3879:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(7377));t.default=class{constructor(e,t){this.logger=e,this.encodingParams=t,this.videoIndex=null,this.currLocalDescriptions=[],this.nextLocalDescriptions=[]}updateConnectionMetric(e){}chooseMediaTrackConstraints(){}chooseEncodingParameters(){var e,t,n,i,a,o,s,c,l,d,u,f;const h=new Map,m=r.default.NAME_ARR_ASCENDING;return h.set(m[0],{rid:m[0],active:!0,scaleResolutionDownBy:(null===(t=null===(e=this.encodingParams)||void 0===e?void 0:e.low)||void 0===t?void 0:t.scaleResolutionDownBy)||2,maxBitrate:1e3*((null===(i=null===(n=this.encodingParams)||void 0===n?void 0:n.low)||void 0===i?void 0:i.maxBitrateKbps)||300),maxFramerate:(null===(o=null===(a=this.encodingParams)||void 0===a?void 0:a.low)||void 0===o?void 0:o.maxFramerate)||5}),h.set(m[1],{rid:m[1],active:!0,scaleResolutionDownBy:(null===(c=null===(s=this.encodingParams)||void 0===s?void 0:s.high)||void 0===c?void 0:c.scaleResolutionDownBy)||1,maxBitrate:1e3*((null===(d=null===(l=this.encodingParams)||void 0===l?void 0:l.high)||void 0===d?void 0:d.maxBitrateKbps)||1200),maxFramerate:null===(f=null===(u=this.encodingParams)||void 0===u?void 0:u.high)||void 0===f?void 0:f.maxFramerate}),this.getQualityMapString(h),h}updateIndex(e){this.videoIndex=e}wantsResubscribe(){var e,t;let n=!1;this.nextLocalDescriptions=null===(e=this.videoIndex)||void 0===e?void 0:e.localStreamDescriptions();for(let e=0;e<(null===(t=this.nextLocalDescriptions)||void 0===t?void 0:t.length);e++){const t=this.nextLocalDescriptions[e].streamId;if(0!==t&&t){const i=this.currLocalDescriptions.findIndex((e=>e.streamId===t));-1!==i&&this.nextLocalDescriptions[e].disabledByWebRTC!==this.currLocalDescriptions[i].disabledByWebRTC&&(n=!0)}}return this.currLocalDescriptions=this.nextLocalDescriptions,n}chooseCaptureAndEncodeParameters(){}maxBandwidthKbps(){return 1200}setIdealMaxBandwidthKbps(e){}setHasBandwidthPriority(e){}getQualityMapString(e){var t;let n="";const i=null===(t=this.videoIndex)||void 0===t?void 0:t.localStreamDescriptions();(null==i?void 0:i.length)>0&&(e.forEach((e=>{let t=!1;t="low"===e.rid?i[0].disabledByWebRTC:i[1].disabledByWebRTC,n+=`{ rid: ${e.rid} active:${e.active} disabledByWebRTC: ${t} maxBitrate:${e.maxBitrate} scaleResolutionDownBy:${e.scaleResolutionDownBy} maxFrameRate:${e.maxFramerate}`})),this.logger.info(`simulcast: content policy:chooseEncodingParameters newQualityMap: ${n}`))}addObserver(e){}removeObserver(e){}forEachObserver(e){}}},4442:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1133));class o{constructor(e,t=!0,n=void 0,i=void 0){this.selfAttendeeId=e,this.scaleResolution=t,this.logger=n,this.browserBehavior=i,this.numberOfPublishedVideoSources=void 0,this.idealMaxBandwidthKbps=1500,this.hasBandwidthPriority=!1,this.encodingParamMap=new Map,this.reset()}reset(){this.numberOfPublishedVideoSources=void 0,this.optimalParameters=new a.default(0,0,0,0,!1),this.parametersInEffect=new a.default(0,0,0,0,!1),this.encodingParamMap.set(o.encodingMapKey,{maxBitrate:0})}updateConnectionMetric(e){}chooseMediaTrackConstraints(){return{}}chooseEncodingParameters(){return new Map}updateIndex(e){var t;let n=!0,i=1;this.transceiverController&&(n=this.transceiverController.hasVideoInput());const r=e.numberOfVideoPublishingParticipantsExcludingSelf(this.selfAttendeeId)+(n?1:0);if(this.numberOfPublishedVideoSources!==r){if(this.numberOfPublishedVideoSources=r,this.transceiverController){const e=this.getStreamCaptureSetting();e&&(i=this.calculateEncodingParameters(e).scaleResolutionDownBy)}this.optimalParameters=new a.default(this.captureWidth(),this.captureHeight(),this.captureFrameRate(),this.maxBandwidthKbps(),!1,i)}else null===(t=this.logger)||void 0===t||t.debug("Skipping update index; Number of participants has not changed")}wantsResubscribe(){return!this.parametersInEffect.equal(this.optimalParameters)}chooseCaptureAndEncodeParameters(){return this.parametersInEffect=this.optimalParameters.clone(),this.parametersInEffect.clone()}captureWidth(){let e=640;return this.getNumberOfPublishedVideoSources()>4&&(e=320),e}captureHeight(){let e=384;return this.getNumberOfPublishedVideoSources()>4&&(e=192),e}captureFrameRate(){return 15}maxBandwidthKbps(){if(this.hasBandwidthPriority)return Math.trunc(this.idealMaxBandwidthKbps);let e=0;return e=this.getNumberOfPublishedVideoSources()<=2?this.idealMaxBandwidthKbps:this.getNumberOfPublishedVideoSources()<=4?2*this.idealMaxBandwidthKbps/3:(544/11+14880/(11*this.getNumberOfPublishedVideoSources()))/600*this.idealMaxBandwidthKbps,Math.trunc(e)}setIdealMaxBandwidthKbps(e){this.idealMaxBandwidthKbps=e}setHasBandwidthPriority(e){this.hasBandwidthPriority=e}setTransceiverController(e){this.transceiverController=e}updateTransceiverController(){return i(this,void 0,void 0,(function*(){const e=this.getStreamCaptureSetting();if(!e)return;const t=this.calculateEncodingParameters(e);this.shouldUpdateEndcodingParameters(t)&&(this.encodingParamMap.set(o.encodingMapKey,t),this.transceiverController.setEncodingParameters(this.encodingParamMap))}))}shouldUpdateEndcodingParameters(e){var t,n;const i=null===(n=null===(t=this.transceiverController.localVideoTransceiver().sender.getParameters())||void 0===t?void 0:t.encodings)||void 0===n?void 0:n[0];return e.maxBitrate!==(null==i?void 0:i.maxBitrate)||e.scaleResolutionDownBy!==(null==i?void 0:i.scaleResolutionDownBy)}calculateEncodingParameters(e){var t,n;const i=1e3*this.maxBandwidthKbps();let r=1;if(void 0!==e.height&&void 0!==e.width&&this.scaleResolution&&!this.hasBandwidthPriority&&this.getNumberOfPublishedVideoSources()>2){let i=o.targetHeightArray[Math.min(this.getNumberOfPublishedVideoSources(),o.targetHeightArray.length-1)];480===i&&(null===(t=this.browserBehavior)||void 0===t?void 0:t.disable480pResolutionScaleDown())&&(i=360),r=Math.max(Math.min(e.height,e.width)/i,1),null===(n=this.logger)||void 0===n||n.info(`Resolution scale factor is ${r} for capture resolution ${e.width}x${e.height}. New dimension is ${e.width/r}x${e.height/r}`)}return{scaleResolutionDownBy:r,maxBitrate:i}}getStreamCaptureSetting(){var e,t,n,i;return null===(i=null===(n=null===(t=null===(e=this.transceiverController)||void 0===e?void 0:e.localVideoTransceiver())||void 0===t?void 0:t.sender)||void 0===n?void 0:n.track)||void 0===i?void 0:i.getSettings()}getNumberOfPublishedVideoSources(){var e;return null!==(e=this.numberOfPublishedVideoSources)&&void 0!==e?e:0}}t.default=o,o.encodingMapKey="video",o.targetHeightArray=[0,0,0,540,540,480,480,480,480,360,360,360,360,270,270,270,270,180,180,180,180,180,180,180,180,180]},657:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(1133));t.default=class{constructor(){}updateConnectionMetric(e){}chooseMediaTrackConstraints(){return{}}chooseEncodingParameters(){return new Map}updateIndex(e){}wantsResubscribe(){return!1}chooseCaptureAndEncodeParameters(){return new r.default(0,0,0,0,!1)}maxBandwidthKbps(){return 0}setIdealMaxBandwidthKbps(e){}setHasBandwidthPriority(e){}}},3928:(e,t)=>{"use strict";function n(e){return e.map((e=>"object"==typeof e?JSON.stringify(e):`${e}`)).join(" ")}Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e){this.base=e}debug(...e){this.base.debug(n(e))}info(...e){this.base.info(n(e))}warn(...e){this.base.warn(n(e))}error(...e){this.base.error(n(e))}}},2497:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.VoiceFocusDeviceTransformer=void 0;const a=n(6035),o=n(8690),s=r(n(4046)),c=r(n(3928)),l=r(n(8878)),d=r(n(851));class u{constructor(e,{preload:t=!0,logger:n,fetchBehavior:i=u.defaultFetchBehavior()},r){this.spec=e,this.supported=!0,this.logger=n,this.vfLogger=n?new c.default(n):void 0,this.preload=t,this.fetchBehavior=i,this.spec=u.augmentSpec(this.spec),r&&(this.configuration=Promise.resolve(r))}static isSupported(e,t){var n,i;const r={fetchBehavior:u.defaultFetchBehavior(),logger:(null==t?void 0:t.logger)?new c.default(t.logger):void 0};if(o.isIFramed()){if(!1===(null==t?void 0:t.allowIFrame))return null===(n=null==t?void 0:t.logger)||void 0===n||n.error("Amazon Voice Focus support check inside iframe: not supported."),Promise.resolve(!1);null===(i=null==t?void 0:t.logger)||void 0===i||i.warn("Amazon Voice Focus support check inside iframe: not recommended.")}return a.VoiceFocus.isSupported(u.augmentSpec(e),r)}static create(e={},t={},n,r,a){var o,s,c;return i(this,void 0,void 0,(function*(){r&&r.Meeting.Meeting&&(r=r.Meeting);const i="AVAILABLE"===(null===(c=null===(s=null===(o=null==r?void 0:r.Meeting)||void 0===o?void 0:o.MeetingFeatures)||void 0===s?void 0:s.Audio)||void 0===c?void 0:c.EchoReduction),a=n&&!0===n.supported&&"ns_es"===n.model.name&&!i,l="ns_es"===e.name&&!i;if(a||l)throw new Error("Echo Reduction requested but not enabled.");const d=new u(e,t,n);return yield d.init(),d}))}static configure(e={},t={}){return i(this,void 0,void 0,(function*(){return new u(e,t,void 0).configure(!0)}))}getConfiguration(){return this.configuration}isSupported(){return this.supported}createTransformDevice(e,t){return i(this,void 0,void 0,(function*(){if(this.supported)try{const n=!0,[i,r]=yield this.allocateVoiceFocus(n),a=Object.assign(Object.assign({},t),{es:"ns_es"===this.spec.name});return new l.default(e,i,r,a)}catch(e){return}}))}static destroyVoiceFocus(e){var t;return i(this,void 0,void 0,(function*(){null===(t=null==e?void 0:e.vf)||void 0===t||t.destroy()}))}static augmentSpec(e){return e&&(e.assetGroup||e.revisionID)?e:Object.assign(Object.assign({},e),{assetGroup:u.currentSDKAssetGroup()})}configure(e=!1){return i(this,void 0,void 0,(function*(){const t={fetchBehavior:this.fetchBehavior,preResolve:e,logger:this.vfLogger};return a.VoiceFocus.configure(this.spec,t)}))}init(){var e;return i(this,void 0,void 0,(function*(){this.configuration||(this.configuration=this.configure());const t=yield this.configuration;if(t.supported){this.pendingVoiceFocus=this.createVoiceFocus(t,this.preload);try{yield this.pendingVoiceFocus}catch(t){null===(e=this.logger)||void 0===e||e.error(`Unable to initialize Amazon Voice Focus: ${t}`),this.supported=!1}}else this.supported=!1}))}createVoiceFocus(e,t){return i(this,void 0,void 0,(function*(){const n=new d.default;return this.vf=yield a.VoiceFocus.init(e,{delegate:n,preload:t,logger:this.vfLogger}),[this.vf,n]}))}allocateVoiceFocus(e){return i(this,void 0,void 0,(function*(){if(!this.supported)throw new Error("Not supported.");if(this.pendingVoiceFocus){const e=this.pendingVoiceFocus;return this.pendingVoiceFocus=void 0,e}return this.createVoiceFocus(yield this.configuration,e)}))}static majorVersion(){return s.default.sdkVersion.match(/^[1-9][0-9]*\.(?:0|[1-9][0-9]*)/)[0]}static majorMinorVersion(){return s.default.sdkVersion.match(/^[1-9][0-9]*\.(?:0|(?:[1-9][0-9]*))\.(?:0|[1-9][0-9]*)/)[0]}static currentSDKAssetGroup(){const e=this.majorVersion();return e?`sdk-${e}`:"stable-v1"}static defaultFetchBehavior(){const e=u.majorMinorVersion()||"unknown",t=s.default.sdkUserAgentLowResolution;return{escapedQueryString:`sdk=${encodeURIComponent(e)}&ua=${encodeURIComponent(t)}`}}}t.VoiceFocusDeviceTransformer=u,t.default=u},8878:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(543));class o{constructor(e,t,n,i,r=!1,o=void 0,s=new a.default,c=new Map,l=void 0,d=void 0){this.device=e,this.voiceFocus=t,this.delegate=n,this.nodeOptions=i,this.failed=r,this.node=o,this.browserBehavior=s,this.farEndStreamToAudioSourceNode=c,this.mixDestNode=l,this.mixSourceNode=d}getInnerDevice(){return this.device}mute(e){return i(this,void 0,void 0,(function*(){this.node&&(e?yield this.node.disable():yield this.node.enable())}))}stop(){return i(this,void 0,void 0,(function*(){this.node&&(this.node.disconnect(),yield this.node.stop())}))}chooseNewInnerDevice(e){return i(this,void 0,void 0,(function*(){return this.device!==e||"default"===(t=e)||t&&"object"==typeof t&&("deviceId"in t&&"default"===t.deviceId||"id"in t&&"default"===t.id)?new o(e,this.voiceFocus,this.delegate,this.nodeOptions,this.failed,this.node,this.browserBehavior,this.farEndStreamToAudioSourceNode,this.mixDestNode,this.mixSourceNode):this;var t}))}intrinsicDevice(){return i(this,void 0,void 0,(function*(){if(this.failed)return this.device;const e=this.nodeOptions.es,t={echoCancellation:!e,googEchoCancellation:!e,googEchoCancellation2:!e,noiseSuppression:!1,googNoiseSuppression:!1,googHighpassFilter:!1,googNoiseSuppression2:!1};let n;return n=!this.nodeOptions||void 0===this.nodeOptions.agc||this.nodeOptions.agc.useBuiltInAGC,t.autoGainControl=n,t.googAutoGainControl=n,t.googAutoGainControl2=n,this.device?"string"==typeof this.device?(this.browserBehavior.requiresNoExactMediaStreamConstraints()?t.deviceId=this.device:t.deviceId={exact:this.device},t):this.device.id?this.device:Object.assign(Object.assign({},this.device),t):t}))}createAudioNode(e){var t,n;return i(this,void 0,void 0,(function*(){if((null===(t=this.node)||void 0===t?void 0:t.context)===e)return{start:this.node,end:this.node};const i=Object.assign({enabled:!0,agc:{useVoiceFocusAGC:!1}},this.nodeOptions);try{if(null===(n=this.node)||void 0===n||n.disconnect(),this.node=yield this.voiceFocus.createNode(e,i),this.nodeOptions.es){this.mixDestNode=new MediaStreamAudioDestinationNode(e,{channelCount:1,channelCountMode:"explicit"});for(const e of this.farEndStreamToAudioSourceNode.keys())this.assignFarEndStreamToAudioSourceNode(e);this.createMixSourceNode()}return{start:this.node,end:this.node}}catch(e){throw this.failed=!0,this.delegate.onFallback(this,e),e}}))}observeMeetingAudio(e){return i(this,void 0,void 0,(function*(){if(!this.nodeOptions.es)return;e.addAudioMixObserver(this);const t=yield e.getCurrentMeetingAudioStream();t&&this.addFarEndStream(t)}))}unObserveMeetingAudio(e){return i(this,void 0,void 0,(function*(){if(!this.nodeOptions.es)return;e.removeAudioMixObserver(this);const t=yield e.getCurrentMeetingAudioStream();t&&this.removeFarendStream(t)}))}addObserver(e){this.delegate.addObserver(e)}removeObserver(e){this.delegate.removeObserver(e)}addFarEndStream(e){return i(this,void 0,void 0,(function*(){this.nodeOptions.es&&e&&!this.farEndStreamToAudioSourceNode.has(e)&&(this.node?this.assignFarEndStreamToAudioSourceNode(e):this.farEndStreamToAudioSourceNode.set(e,null))}))}removeFarendStream(e){var t;return i(this,void 0,void 0,(function*(){null===(t=this.farEndStreamToAudioSourceNode.get(e))||void 0===t||t.disconnect(),this.farEndStreamToAudioSourceNode.delete(e)}))}meetingAudioStreamBecameActive(e){return i(this,void 0,void 0,(function*(){this.addFarEndStream(e)}))}meetingAudioStreamBecameInactive(e){return i(this,void 0,void 0,(function*(){this.removeFarendStream(e)}))}assignFarEndStreamToAudioSourceNode(e){const t=this.node.context.createMediaStreamSource(e);t.channelCount=1,t.channelCountMode="explicit",this.farEndStreamToAudioSourceNode.set(e,t),t.connect(this.mixDestNode,0)}createMixSourceNode(){this.mixSourceNode=this.node.context.createMediaStreamSource(this.mixDestNode.stream),this.mixSourceNode.channelCount=1,this.mixSourceNode.channelCountMode="explicit",this.mixSourceNode.connect(this.node,0,1)}}t.default=o},851:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.observers=new Set}addObserver(e){this.observers.add(e)}removeObserver(e){this.observers.delete(e)}onFallback(e,t){var n;for(const i of this.observers)null===(n=i.voiceFocusFellBackToInnerStream)||void 0===n||n.call(i,e,t)}onCPUWarning(){var e;for(const t of this.observers)null===(e=t.voiceFocusInsufficientResources)||void 0===e||e.call(t)}}},9751:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class n{constructor(e,t,n,i,r){this.logger=e,this.realtimeController=t,this.minVolumeDecibels=n,this.maxVolumeDecibels=i,this.selfAttendeeId=r,this.streamIdToAttendeeId={},this.streamIdToExternalUserId={},this.warnedAboutMissingStreamIdMapping={},this.attendeeIdToStreamId={},this.sessionReconnected=!1}onReconnect(){this.sessionReconnected=!0}sendRealtimeUpdatesForAudioStreamIdInfo(e){let t=0;for(const n of e.streams){const i=!!n.attendeeId,r=!!n.externalUserId,a=n.hasOwnProperty("muted"),o=!!n.dropped;if(i){this.attendeeIdToStreamId[n.attendeeId]&&this.attendeeIdToStreamId[n.attendeeId]n.audioStreamId&&this.streamIdToAttendeeId[t]===i){a=!0;break}}a||this.realtimeController.realtimeSetAttendeeIdPresence(i,!1,r,o,{attendeeIndex:t++,attendeesInFrame:e.streams.length})}}}this.sessionReconnected&&(this.cleanUpState(e),this.sessionReconnected=!1)}cleanUpState(e){const t=Object.values(this.streamIdToAttendeeId),n=e.streams.map((e=>e.attendeeId)),i=t.filter((e=>!n.includes(e)));for(const[e,t]of i.entries()){const n=this.attendeeIdToStreamId[t],i=this.streamIdToExternalUserId[n];delete this.streamIdToAttendeeId[n],delete this.streamIdToExternalUserId[n],delete this.warnedAboutMissingStreamIdMapping[n],delete this.attendeeIdToStreamId[t],t!==this.selfAttendeeId?this.realtimeController.realtimeSetAttendeeIdPresence(t,!1,i,!1,{attendeeIndex:e,attendeesInFrame:t.length}):this.logger.warn("the volume indicator adapter cleans up the current attendee (presence = false) after reconnection")}}sendRealtimeUpdatesForAudioMetadata(e){let t=null,n=null;for(const i of e.attendeeStates){const e=this.attendeeIdForStreamId(i.audioStreamId);i.hasOwnProperty("volume")&&(null===t&&(t={}),null!==e&&(t[e]=this.normalizedVolume(i))),i.hasOwnProperty("signalStrength")&&(null===n&&(n={}),null!==e&&(n[e]=this.normalizedSignalStrength(i)))}this.applyRealtimeUpdatesForAudioMetadata(t,n)}normalizedVolume(e){const t=1-(-e.volume-this.maxVolumeDecibels)/(this.minVolumeDecibels-this.maxVolumeDecibels);return Math.min(Math.max(t,0),1)}normalizedSignalStrength(e){const t=e.signalStrength/n.MAX_SIGNAL_STRENGTH_LEVELS;return Math.min(Math.max(t,0),1)}applyRealtimeUpdatesForAudioMetadata(e,t){for(const i in this.streamIdToAttendeeId){const r=this.streamIdToAttendeeId[i],a=this.streamIdToExternalUserId[i];let o=null,s=null;null!==e&&(o=e.hasOwnProperty(r)?e[r]:n.IMPLICIT_VOLUME),null!==t&&(s=t.hasOwnProperty(r)?t[r]:n.IMPLICIT_SIGNAL_STRENGTH),null===o&&null===s||this.realtimeController.realtimeUpdateVolumeIndicator(r,o,null,s,a)}}attendeeIdForStreamId(e){return 0===e?null:this.streamIdToAttendeeId[e]||(this.warnedAboutMissingStreamIdMapping[e]||(this.warnedAboutMissingStreamIdMapping[e]=!0,this.logger.warn(`volume indicator stream id ${e} seen before being defined`)),null)}}t.default=n,n.MAX_SIGNAL_STRENGTH_LEVELS=2,n.IMPLICIT_VOLUME=0,n.IMPLICIT_SIGNAL_STRENGTH=1},7631:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(4046)),a=i(n(7387));t.default=class{constructor(e){this.logger=e}create(e,t,n){this.connection=new WebSocket(n?e:r.default.urlWithVersion(e),t),this.connection.binaryType="arraybuffer"}send(e){if(!this.connection)return this.logger.error("WebSocket not yet created or already destroyed."),!1;try{return e instanceof Uint8Array?this.connection.send(e.buffer):this.connection.send(e),!0}catch(e){return this.logger.debug((()=>`send error: ${e.message}, websocket state=${a.default[this.readyState()]}`)),!1}}close(e,t){var n;null===(n=this.connection)||void 0===n||n.close(e,t)}destroy(){this.connection=void 0}addEventListener(e,t){this.connection?this.connection.addEventListener(e,t):this.logger.warn("Cannot add event listener with no WebSocket connection.")}removeEventListener(e,t){var n;null===(n=this.connection)||void 0===n||n.removeEventListener(e,t)}readyState(){if(!this.connection)return a.default.None;switch(this.connection.readyState){case WebSocket.CONNECTING:return a.default.Connecting;case WebSocket.OPEN:return a.default.Open;case WebSocket.CLOSING:return a.default.Closing;case WebSocket.CLOSED:return a.default.Closed}}}},7387:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.WebSocketReadyState=void 0,function(e){e[e.None=0]="None",e[e.Connecting=1]="Connecting",e[e.Open=2]="Open",e[e.Closing=3]="Closing",e[e.Closed=4]="Closed"}(n=t.WebSocketReadyState||(t.WebSocketReadyState={})),t.default=n},5995:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.decideModel=t.measureAndDecideExecutionApproach=void 0;const r=n(5021),a=n(9424),o={wasm:{noSupport:.07,inline:{c100:1,c50:.36,c20:.16,c10:.07},worker:{c100:.5,c50:.18,c20:.08,c10:.06}},simd:{noSupport:.1,inline:{c100:1,c50:.43,c20:.3,c10:.2},worker:{c100:.5,c50:.21,c20:.15,c10:.1}}};class s{constructor(e,t){this.fetchConfig=e,this.logger=t;const n=`${e.paths.workers}estimator-v1.js`;this.fetchBehavior={headers:e.headers,escapedQueryString:e.escapedQueryString},this.worker=r.loadWorker(n,"VoiceFocusEstimator",this.fetchBehavior,t)}roundtrip(e,t,n){return new Promise(((i,r)=>{this.worker.then((r=>{let a;a=e=>{const{message:o,key:s}=e.data;o===t&&s===n&&(r.removeEventListener("message",a),i(e.data))},r.addEventListener("message",a),r.postMessage(e)})).catch((e=>{var t;null===(t=this.logger)||void 0===t||t.error("Failed to load worker.",e),r(e)}))}))}supportsSIMD(e){const t="simd",n=e||`${this.fetchConfig.paths.wasm}simd-v1.wasm`,i={message:"supports-simd",fetchBehavior:this.fetchBehavior,path:n,key:t};return this.roundtrip(i,"simd-support",t).then((e=>e.supports))}measure(e,t){const n=`${this.fetchConfig.paths.wasm}bench-v1.wasm`,i=`${this.fetchConfig.paths.wasm}bench-v1_simd.wasm`,r=e?i:n,a=`bench:${e}`,o={message:"measure",fetchBehavior:this.fetchBehavior,budget:t,path:r,key:a};return this.roundtrip(o,"measurement",a).then((e=>{if(e.measurement)return e.measurement;throw new Error("Failed to measure.")}))}stop(){this.worker.then((e=>{var t;null===(t=this.logger)||void 0===t||t.debug("Stopping estimator worker."),e.terminate()})).catch((e=>{}))}}const c=(e,t,n,r)=>i(void 0,void 0,void 0,(function*(){const i={supportsSIMD:e,supportsSAB:a.supportsSharedArrayBuffer(globalThis,window,n),duration:-1};if(e)return null==n||n.info("Supports SIMD: true (force)"),i;const o=!r,c=r||new s(t,n);try{const t=!a.isOldChrome(window,n)&&(yield c.supportsSIMD());return null==n||n.info(`Supports SIMD: ${t} (force: ${e})`),i.supportsSIMD=t,i}finally{o&&c.stop()}}));t.measureAndDecideExecutionApproach=(e,t,n,r=o)=>i(void 0,void 0,void 0,(function*(){let l=e.executionPreference;const{usagePreference:d,variantPreference:u,namePreference:f,simdPreference:h,estimatorBudget:m,executionQuantaPreference:p}=e;"interactivity"===d&&"inline"!==l&&(null==n||n.debug(`Overriding execution preference ${l} to reflect interactivity preference.`),l="inline");const g="force"===h,v="auto"!==u,b="auto"!==l;let y;try{y=v&&b?yield c(g,t,n):yield((e,t,n,r)=>i(void 0,void 0,void 0,(function*(){const i=new s(t,r);try{const a=yield c(e,t,r,i);if(a.supportsSIMD)try{return a.duration=yield i.measure(!0,n),null==r||r.info("SIMD timing:",a.duration),a}catch(e){null==r||r.warn("Failed SIMD estimation; falling back to non-SIMD."),a.supportsSIMD=!1}return a.duration=yield i.measure(!1,n),null==r||r.info("No-SIMD timing:",a.duration),a}catch(e){throw null==r||r.error("Could not feature check.",e),e}finally{i.stop()}})))(g,t,m,n)}catch(e){throw null==n||n.error("Could not load estimator.",e),new Error("Could not load Voice Focus estimator.")}return(({supportsSIMD:e,supportsSAB:t,duration:n,executionPreference:i="auto",simdPreference:r,variantPreference:s="auto",namePreference:c="default",usagePreference:l,executionQuantaPreference:d=3},u=o,f)=>{const h="force"===r||"disable"!==r&&e,m=-1!==n,p=m?(h?2.5:2.63)/n:0,g=h?u.simd:u.wasm,v=m?((e,t)=>1===e?.6:"quality"===t?.65*e:.5*e)(d,l)*p:0,b=m?.7*p:0,y=c,S=e=>({supported:!1,reason:e});if(m){if(p({supported:!0,useSIMD:h,processor:e,executionApproach:t,variant:n,executionQuanta:"inline"===t?d:void 0,name:y}),w=(e,t,n)=>"auto"!==t?!m||e>n[t]?t:"failed":e>n.c100?"c100":e>n.c50?"c50":e>n.c20?"c20":e>n.c10?"c10":"failed",M=e=>{switch(e||"auto"){case"auto":{let e=M("inline"),t=M("worker");return null==f||f.debug(`Reducing auto preference: ${JSON.stringify(e)} vs ${JSON.stringify(t)}`),!1===e.supported||!1===t.supported?t:e.variant===t.variant||"c50"===e.variant?e:t}case"worker":return a.supportsSharedArrayBuffer(globalThis,window,f)?M("worker-sab"):M("worker-postMessage");case"inline":{const e=w(v,s,g.inline);return"failed"===e?S(`Performance score ${v} not sufficient for inline use with variant preference ${s}.`):C("voicefocus-inline-processor","inline",e)}case"worker-sab":{if(!t){const e="Requested worker-sab but no SharedArrayBuffer support.";return null==f||f.warn(e),{supported:!1,reason:e}}const e=w(b,s,g.worker);return"failed"===e?S(`Performance score ${b} not sufficient for worker use with variant preference ${s}.`):C("voicefocus-worker-sab-processor","worker-sab",e)}case"worker-postMessage":{const e=w(b,s,g.worker);if("failed"===e)return S(`Performance score ${b} not sufficient for worker use.`);if("ns_es"===y){const e="Requested echo suppression but postMessage executor does not support it.";return null==f||f.warn(e),{supported:!1,reason:e}}return C("voicefocus-worker-postMessage-processor","worker-postMessage",e)}}};return M(i)})(Object.assign(Object.assign({},y),{simdPreference:h,executionPreference:l,variantPreference:u,namePreference:f,usagePreference:d,executionQuantaPreference:p}),r,n)})),t.decideModel=({category:e,name:t,variant:n,simd:i,url:r})=>`${e}-${t}-${n}-v1${i?"_simd":""}`},623:(e,t)=>{"use strict";function n(e,t,n){if(!n)return fetch(e,t);const a=r(e,n),o=i(t,n);return fetch(a,o)}function i(e,t){return(null==t?void 0:t.headers)?e?Object.assign(Object.assign({},e),{headers:Object.assign(Object.assign({},e.headers||{}),t.headers)}):{headers:t.headers}:e}function r(e,t){if(!(null==t?void 0:t.escapedQueryString))return e;const n=-1!==e.lastIndexOf("?");return`${e}${n?"&":"?"}${t.escapedQueryString}`}Object.defineProperty(t,"__esModule",{value:!0}),t.isValidRevisionID=t.isValidAssetGroup=t.resolveURL=t.addQueryParams=t.withQueryString=t.withRequestHeaders=t.fetchWithBehavior=void 0,t.fetchWithBehavior=n,t.withRequestHeaders=i,t.withQueryString=r,t.addQueryParams=function(e,t){const n=Object.keys(t);if(!n.length)return e;const i=new URLSearchParams(null==e?void 0:e.escapedQueryString);for(const e of n)i.append(e,t[e]);return Object.assign(Object.assign({},e),{escapedQueryString:i.toString()})};const a={method:"HEAD",mode:"cors",credentials:"omit",redirect:"follow",referrerPolicy:"origin"};t.resolveURL=function(e,t){return n(e,a,t).then((t=>t.redirected?t.url:e))},t.isValidAssetGroup=function(e){return!!e&&/^[-.a-zA-Z0-9]+$/.test(e)},t.isValidRevisionID=function(e){return!!e&&/^[123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ]{22}$/.test(e)}},5021:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.loadWorker=void 0;const i=n(623),r={method:"GET",mode:"cors",credentials:"omit",redirect:"follow",referrerPolicy:"no-referrer"};t.loadWorker=(e,t,n,a)=>{null==a||a.debug(`Loading ${t} worker from ${e}.`);let o=!1;try{o=self.origin===new URL(e).origin}catch(e){null==a||a.error("Could not compare origins.",e)}if(o){const r=i.withQueryString(e,n);return Promise.resolve(new Worker(r,{name:t}))}return i.fetchWithBehavior(e,r,n).then((e=>{if(e.ok)return e.blob().then((e=>new Worker(window.URL.createObjectURL(e))));throw new Error("Fetch failed.")}))}},9424:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.isOldChrome=t.supportsWASMStreaming=t.supportsSharedArrayBuffer=t.supportsWASM=t.supportsAudioWorklet=t.supportsWorker=t.supportsVoiceFocusWorker=t.supportsWASMPostMessage=t.isSafari=void 0;const r=n(5021);t.isSafari=(e=globalThis)=>{const t=e.navigator.userAgent,n=t.match(/Safari\//),i=t.match(/Chrom(?:e|ium)\//);return!(!n||i)},t.supportsWASMPostMessage=(e=globalThis)=>!t.isSafari(e)&&(!((e=globalThis)=>!!e.navigator.userAgent.match(/Chrom(?:e|ium)\/([0-9]+)/))(e)||(a(e)||0)<95),t.supportsVoiceFocusWorker=(e=globalThis,n,a)=>i(void 0,void 0,void 0,(function*(){if(!t.supportsWorker(e,a))return!1;const i=`${n.paths.workers}worker-v1.js`;try{const e=yield r.loadWorker(i,"VoiceFocusTestWorker",n,a);try{e.terminate()}catch(e){null==a||a.debug("Failed to terminate worker.",e)}return!0}catch(e){return null==a||a.info("Failed to fetch and instantiate test worker",e),!1}})),t.supportsWorker=(e=globalThis,t)=>{try{return!!e.Worker}catch(e){return null==t||t.info("Does not support Worker",e),!1}},t.supportsAudioWorklet=(e=globalThis,t)=>{try{return!!e.AudioWorklet&&!!e.AudioWorkletNode}catch(e){return null==t||t.info("Does not support Audio Worklet",e),!1}},t.supportsWASM=(e=globalThis,t)=>{try{return!(!e.WebAssembly||!e.WebAssembly.compile&&!e.WebAssembly.compileStreaming)}catch(e){return null==t||t.info("Does not support WASM",e),!1}},t.supportsSharedArrayBuffer=(e=globalThis,t=globalThis,n)=>{try{return!(!e.SharedArrayBuffer||!t.chrome&&!e.crossOriginIsolated)}catch(e){return null==n||n.info("Does not support SharedArrayBuffer."),!1}},t.supportsWASMStreaming=(e=globalThis,t)=>{var n;try{return!!(null===(n=e.WebAssembly)||void 0===n?void 0:n.compileStreaming)}catch(e){return null==t||t.info("Does not support WASM streaming compilation",e),!1}};const a=(e=globalThis)=>{try{if(!e.chrome)return}catch(e){}const t=e.navigator.userAgent.match(/Chrom(?:e|ium)\/([0-9]+)/);if(t)return parseInt(t[1],10)};t.isOldChrome=(e=globalThis,t)=>{const n=a(e);return!!n&&n<90&&(null==t||t.debug(`Chrome ${n} has incomplete SIMD support.`),!0)}},103:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VoiceFocusAudioWorkletNode=void 0;class n extends("undefined"!=typeof globalThis&&globalThis.AudioWorkletNode||class{}){}t.VoiceFocusAudioWorkletNode=n},6035:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.getAudioInput=t.createAudioContext=t.VoiceFocus=void 0;const r=n(5995),a=n(623),o=n(5021),s=n(9424),c=n(2633),l=n(1678),d=n(271),u={useVoiceFocusAGC:!1,useBuiltInAGC:!0},f="stable-v1",h="https://static.sdkassets.chime.aws",m={processors:`${h}/processors/`,workers:`${h}/workers/`,wasm:`${h}/wasm/`,models:`${h}/wasm/`},p={latencyHint:0},g={channelCount:1,echoCancellation:!0,googEchoCancellation:!0,noiseSuppression:!1,googNoiseSuppression:!1,googHighpassFilter:!1,googTypingNoiseDetection:!1},v=Object.assign(Object.assign({},g),{autoGainControl:!0,googAutoGainControl:!0,googAutoGainControl2:!0}),b=Object.assign(Object.assign({},g),{autoGainControl:!1,googAutoGainControl:!1,googAutoGainControl2:!1}),y={"voicefocus-worker-sab-processor":{file:"worklet-worker-sab-processor-v1.js",node:l.default},"voicefocus-worker-postMessage-processor":{file:"worklet-worker-postMessage-processor-v1.js",node:d.default},"voicefocus-inline-processor":{file:"worklet-inline-processor-v1.js",node:c.default}},S=(e,t)=>{if(void 0!==e&&!a.isValidAssetGroup(e))throw new Error(`Invalid asset group ${e}`);if(void 0!==t&&!a.isValidRevisionID(t))throw new Error(`Invalid revision ID ${t}`)},C=(e,t)=>`${t.models}${r.decideModel(e)}.wasm`;class w{constructor(e,t,n,i,r){this.processorURL=t,this.nodeConstructor=n,this.nodeOptions=i,this.executionQuanta=r,this.internal={worker:e,nodeOptions:i,isDestroyed:!1}}static isSupported(e,t){const{fetchBehavior:n,logger:i}=t||{};if("undefined"==typeof globalThis)return null==i||i.debug("Browser does not have globalThis."),Promise.resolve(!1);if(!s.supportsAudioWorklet(globalThis,i))return null==i||i.debug("Browser does not support Audio Worklet."),Promise.resolve(!1);if(!s.supportsWASM(globalThis,i))return null==i||i.debug("Browser does not support WASM."),Promise.resolve(!1);s.supportsWASMStreaming(globalThis,i)||null==i||i.debug("Browser does not support streaming WASM compilation.");const{assetGroup:r=f,revisionID:o,paths:c=m}=e||{};S(r,o);const l=o?{revisionID:o}:{assetGroup:r},d=a.addQueryParams(n,l),u=Object.assign(Object.assign({},d),{paths:c});return s.supportsVoiceFocusWorker(globalThis,u,i)}static mungeExecutionPreference(e,t){const n=void 0===e||"auto"===e;if(s.isSafari(globalThis)){if(n||"inline"===e)return"inline";if(!n)throw new Error(`Unsupported execution preference ${e}`)}if("worker-sab"===e&&!s.supportsSharedArrayBuffer(globalThis,globalThis,t))throw new Error(`Unsupported execution preference ${e}`);return e||"auto"}static configure(e,t){return i(this,void 0,void 0,(function*(){const{fetchBehavior:n,preResolve:i,logger:o}=t||{},{category:s="voicefocus",name:c="default",variant:l="auto",assetGroup:d=f,revisionID:u,simd:h="detect",executionPreference:p="auto",executionQuantaPreference:g,usagePreference:v="interactivity",estimatorBudget:b=100,paths:y=m,thresholds:w}=e||{};if(null==o||o.debug("Configuring Voice Focus with spec",e),void 0!==s&&"voicefocus"!==s)throw new Error(`Unrecognized category ${s}`);if(void 0!==c&&"default"!==c&&"ns_es"!==c)throw new Error(`Unrecognized feature name ${c}`);if(void 0!==l&&!["auto","c100","c50","c20","c10"].includes(l))throw new Error(`Unrecognized feature variant ${l}`);if(void 0!==g&&![1,2,3].includes(g))throw new Error(`Unrecognized execution quanta preference ${g}`);if(S(d,u),void 0!==h&&!["detect","force","disable"].includes(h))throw new Error(`Unrecognized SIMD option ${h}`);if(void 0!==p&&!["auto","inline","worker","worker-sab","worker-postMessage"].includes(p))throw new Error(`Unrecognized execution preference ${p}`);if(void 0!==v&&!["quality","interactivity"].includes(v))throw new Error(`Unrecognized usage preference ${v}`);const M={executionPreference:this.mungeExecutionPreference(p,o),usagePreference:v,executionQuantaPreference:g,variantPreference:l,namePreference:c,simdPreference:h,estimatorBudget:b},z=u?{revisionID:u}:{assetGroup:d},x=a.addQueryParams(n,z),k=Object.assign({paths:y},x),V=yield r.measureAndDecideExecutionApproach(M,k,o,w);if(!1===V.supported)return{supported:!1,reason:V.reason};null==o||o.info("Decided execution approach",V);const{useSIMD:E,processor:H,variant:_,executionQuanta:L}=V,T={category:s||"voicefocus",name:c||"default",variant:_,simd:E};if(i){const e=C(T,y);T.url=yield a.resolveURL(e,x)}return{fetchConfig:k,model:T,processor:H,executionQuanta:L,supported:!0}}))}static init(e,{delegate:t,preload:n=!0,logger:r}){return i(this,void 0,void 0,(function*(){if(!1===e.supported)throw new Error("Voice Focus not supported. Reason: "+e.reason);const{model:i,processor:a,fetchConfig:c,executionQuanta:l}=e,{simd:d,name:u}=i,{paths:f}=c;if("voicefocus-inline-processor"!==a&&"voicefocus-worker-postMessage-processor"!==a&&"voicefocus-worker-sab-processor"!==a)throw new Error(`Unknown processor ${a}`);const h=i.url||C(i,f);null==r||r.debug(`Using model URL ${h}.`);const m=`${f.wasm}audio_buffer-v1${d?"_simd":""}.wasm`,p=`${f.wasm}resampler-v1${d?"_simd":""}.wasm`,g=`${f.workers}worker-v1.js`,{file:v,node:b}=y[a],S=`${f.processors}${v}`,M=yield o.loadWorker(g,"VoiceFocusWorker",c,r);if(n){null==r||r.debug("Preloading",h);let e=s.supportsWASMPostMessage(globalThis)?"get-module":"get-module-buffer";M.postMessage({message:e,preload:!0,key:"model",fetchBehavior:c,path:h})}const z=new w(M,S,b,{processor:a,worker:M,audioBufferURL:m,resamplerURL:p,fetchBehavior:c,modelURL:h,delegate:t,logger:r,numberOfInputs:"ns_es"===u?2:1},l);return Promise.resolve(z)}))}createNode(e,t){var n;if(this.internal.isDestroyed)throw new Error("Unable to create node because VoiceFocus worker has been destroyed.");const{voiceFocusSampleRate:i=(16e3===e.sampleRate?16e3:48e3),enabled:r=!0,agc:o=u}=t||{},s=null==t?void 0:t.es,c={voiceFocusSampleRate:i,enabled:r,sendBufferCount:10,prefill:6,agc:o,executionQuanta:this.executionQuanta,supportFarendStream:s},l=a.withQueryString(this.processorURL,null===(n=this.nodeOptions)||void 0===n?void 0:n.fetchBehavior);return e.audioWorklet.addModule(l).then((()=>new this.nodeConstructor(e,Object.assign(Object.assign({},this.nodeOptions),{processorOptions:c}))))}applyToStream(e,t,n){return i(this,void 0,void 0,(function*(){if(this.internal.isDestroyed)throw new Error("Unable to apply stream because VoiceFocus worker has been destroyed");const i=t.createMediaStreamSource(e),r=yield this.applyToSourceNode(i,t,n),a=t.createMediaStreamDestination();return r.connect(a),{node:r,source:i,destination:a,stream:a.stream}}))}applyToSourceNode(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.createNode(t,n);return e.connect(i),i}))}destroy(){this.internal.worker&&this.internal.worker.terminate(),this.internal.isDestroyed=!0}}t.VoiceFocus=w,t.createAudioContext=(e=p)=>new(window.AudioContext||window.webkitAudioContext)(e),t.getAudioInput=(e,t,n)=>i(void 0,void 0,void 0,(function*(){var i,r;const{constraints:a,spec:o,delegate:s,preload:c=!0,options:l}=t,{logger:d}=n,f=yield w.configure(o,n);if(!f.supported)return null===(i=n.logger)||void 0===i||i.warn("Voice Focus not supported; returning standard stream."),window.navigator.mediaDevices.getUserMedia(a);const h=yield w.init(f,{delegate:s,preload:c,logger:d}),m=(null===(r=t.options)||void 0===r?void 0:r.agc)||u,p=yield window.navigator.mediaDevices.getUserMedia(((e,t)=>{let n;if(n=t.useBuiltInAGC?v:b,!e)return{audio:n};if(!e.audio)return e;if(e.video)throw new Error("Not adding Voice Focus to multi-device getUserMedia call.");return Object.assign(Object.assign({},e),{audio:!0===e.audio?n:Object.assign(Object.assign({},e.audio),n)})})(a,m));return h.applyToStream(p,e,l).then((e=>e.stream))}))},2633:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0});const r=n(9424),a=n(103);class o extends a.VoiceFocusAudioWorkletNode{constructor(e,t){super(e,t.processor,t),this.cpuWarningCount=0,this.channelCountMode="explicit",this.channelCount=1;const{modelURL:n,worker:i,fetchBehavior:a,logger:o,delegate:s}=t;this.logger=o,this.port.onmessage=this.onProcessorMessage.bind(this),this.delegate=s,o&&o.debug("VoiceFocusInlineNode:",n),this.worker=i,this.worker.onmessage=this.onWorkerMessage.bind(this);const c=r.supportsWASMPostMessage(globalThis)?"get-module":"get-module-buffer";this.worker.postMessage({message:c,key:"model",fetchBehavior:a,path:n})}onModuleBufferLoaded(e,t){this.port.postMessage({message:"module-buffer",buffer:e,key:t})}onModuleLoaded(e,t){this.port.postMessage({message:"module",module:e,key:t})}enable(){return i(this,void 0,void 0,(function*(){this.port.postMessage({message:"enable"})}))}disable(){return i(this,void 0,void 0,(function*(){this.port.postMessage({message:"disable"})}))}stop(){var e;return i(this,void 0,void 0,(function*(){this.port.postMessage({message:"stop"});try{null===(e=this.worker)||void 0===e||e.terminate()}catch(e){console.error("failed to terminate worker:",e)}this.disconnect()}))}onProcessorMessage(e){var t,n,i;const r=e.data;if("cpu"===r.message){this.cpuWarningCount++;const e=Date.now(),i=this.cpuWarningLastTriggered||e,a=Math.abs(e-i);(!this.cpuWarningLastTriggered||a>5e3)&&(null===(t=this.logger)||void 0===t||t.warn(`CPU warning (count: ${this.cpuWarningCount}):`,r.message),this.cpuWarningCount=0,this.cpuWarningLastTriggered=e),null===(n=this.delegate)||void 0===n||n.onCPUWarning()}else null===(i=this.logger)||void 0===i||i.debug("Ignoring processor message.")}onWorkerMessage(e){const t=e.data;switch(t.message){case"module-buffer":if(!t.buffer||!t.key)return;this.onModuleBufferLoaded(t.buffer,t.key);break;case"module":if(!t.module||!t.key)return;this.onModuleLoaded(t.module,t.key);break;case"stopped":this.worker&&this.worker.terminate();break;default:return}}}t.default=o},271:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0});const r=n(9424),a=n(103);class o extends a.VoiceFocusAudioWorkletNode{constructor(e,t){super(e,t.processor,t),this.channelCountMode="explicit",this.channelCount=1;const{modelURL:n,audioBufferURL:i,worker:a,fetchBehavior:o,delegate:s}=t;this.delegate=s,this.worker=a,this.worker.onmessage=this.onWorkerMessage.bind(this),this.port.onmessage=this.onProcessorMessage.bind(this);const{enabled:c,agc:l,supportFarendStream:d}=t.processorOptions;this.worker.postMessage({message:"init",approach:"postMessage",frames:16e3===e.sampleRate?160:480,enabled:c,agc:l,fetchBehavior:o,model:n,supportFarendStream:d});const u=r.supportsWASMPostMessage(globalThis)?"get-module":"get-module-buffer";this.worker.postMessage({message:u,key:"buffer",fetchBehavior:o,path:i})}enable(){return i(this,void 0,void 0,(function*(){this.worker.postMessage({message:"enable"})}))}disable(){return i(this,void 0,void 0,(function*(){this.worker.postMessage({message:"disable"})}))}stop(){return i(this,void 0,void 0,(function*(){try{this.worker.postMessage({message:"stop"})}catch(e){}this.disconnect()}))}onWorkerMessage(e){var t;const n=e.data;switch(n.message){case"ready":this.port.postMessage({message:"ready",shared:n.shared},n.shared?Object.values(n.shared):[]);break;case"data":if(!n.buffer)return;this.port.postMessage({message:"data",buffer:n.buffer},[n.buffer]);break;case"stopped":this.worker.terminate();break;case"module-buffer":case"module":case"processing":this.port.postMessage(n);break;case"cpu":null===(t=this.delegate)||void 0===t||t.onCPUWarning();break;default:return}}onProcessorMessage(e){var t;const n=e.data;switch(n.message){case"data":if(!n.buffer)return;this.worker.postMessage({message:"data",buffer:n.buffer},[n.buffer]);break;case"cpu":null===(t=this.delegate)||void 0===t||t.onCPUWarning();break;case"prepare-for-frames":this.worker.postMessage(n);break;default:return}}}t.default=o},1678:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0});const r=n(9424),a=n(103);class o extends a.VoiceFocusAudioWorkletNode{constructor(e,t){super(e,t.processor,t),this.channelCountMode="explicit",this.channelCount=1;const{modelURL:n,resamplerURL:i,worker:a,fetchBehavior:o,delegate:s}=t;this.delegate=s,this.worker=a,this.worker.onmessage=this.onWorkerMessage.bind(this),this.port.onmessage=this.onProcessorMessage.bind(this);const{enabled:c,supportFarendStream:l}=t.processorOptions;this.worker.postMessage({message:"init",approach:"sab",frames:16e3===e.sampleRate?160:480,enabled:c,model:n,supportFarendStream:l});const d=r.supportsWASMPostMessage(globalThis)?"get-module":"get-module-buffer";this.worker.postMessage({message:d,key:"resampler",fetchBehavior:o,path:i})}enable(){return i(this,void 0,void 0,(function*(){this.state?(Atomics.store(this.state,1,1),Atomics.notify(this.state,0,1)):this.worker.postMessage({message:"enable"})}))}disable(){return i(this,void 0,void 0,(function*(){this.state?(Atomics.store(this.state,1,0),Atomics.notify(this.state,0,1)):this.worker.postMessage({message:"disable"})}))}stop(){return i(this,void 0,void 0,(function*(){if(this.state)Atomics.store(this.state,1,2),Atomics.notify(this.state,0,1);else try{this.worker.postMessage({message:"stop"})}catch(e){}this.disconnect()}))}onWorkerMessage(e){var t;const n=e.data;switch(n.message){case"ready":if(!n.shared)throw new Error("No shared state.");this.state=new Int32Array(n.shared.state),this.port.postMessage(n);break;case"stopped":this.worker.terminate();break;case"module-buffer":case"module":case"processing":this.port.postMessage(n);break;case"cpu":null===(t=this.delegate)||void 0===t||t.onCPUWarning();break;default:return}}onProcessorMessage(e){var t;const n=e.data;switch(n.message){case"cpu":null===(t=this.delegate)||void 0===t||t.onCPUWarning();break;case"prepare-for-frames":this.worker.postMessage(n)}}}t.default=o},9742:(e,t)=>{"use strict";t.byteLength=function(e){var t=s(e),n=t[0],i=t[1];return 3*(n+i)/4-i},t.toByteArray=function(e){var t,n,a=s(e),o=a[0],c=a[1],l=new r(function(e,t,n){return 3*(t+n)/4-n}(0,o,c)),d=0,u=c>0?o-4:o;for(n=0;n>16&255,l[d++]=t>>8&255,l[d++]=255&t;return 2===c&&(t=i[e.charCodeAt(n)]<<2|i[e.charCodeAt(n+1)]>>4,l[d++]=255&t),1===c&&(t=i[e.charCodeAt(n)]<<10|i[e.charCodeAt(n+1)]<<4|i[e.charCodeAt(n+2)]>>2,l[d++]=t>>8&255,l[d++]=255&t),l},t.fromByteArray=function(e){for(var t,i=e.length,r=i%3,a=[],o=16383,s=0,l=i-r;sl?l:s+o));return 1===r?(t=e[i-1],a.push(n[t>>2]+n[t<<4&63]+"==")):2===r&&(t=(e[i-2]<<8)+e[i-1],a.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"=")),a.join("")};for(var n=[],i=[],r="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0;o<64;++o)n[o]=a[o],i[a.charCodeAt(o)]=o;function s(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function c(e,t,i){for(var r,a,o=[],s=t;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},1206:function(e){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=90)}({17:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var i=n(18),r=function(){function e(){}return e.getFirstMatch=function(e,t){var n=t.match(e);return n&&n.length>0&&n[1]||""},e.getSecondMatch=function(e,t){var n=t.match(e);return n&&n.length>1&&n[2]||""},e.matchAndReturnConst=function(e,t,n){if(e.test(t))return n},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,n,i){void 0===i&&(i=!1);var r=e.getVersionPrecision(t),a=e.getVersionPrecision(n),o=Math.max(r,a),s=0,c=e.map([t,n],(function(t){var n=o-e.getVersionPrecision(t),i=t+new Array(n+1).join(".0");return e.map(i.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(i&&(s=o-Math.min(r,a)),o-=1;o>=s;){if(c[0][o]>c[1][o])return 1;if(c[0][o]===c[1][o]){if(o===s)return 0;o-=1}else if(c[0][o]1?r-1:0),o=1;o0){var o=Object.keys(n),c=s.default.find(o,(function(e){return t.isOS(e)}));if(c){var l=this.satisfies(n[c]);if(void 0!==l)return l}var d=s.default.find(o,(function(e){return t.isPlatform(e)}));if(d){var u=this.satisfies(n[d]);if(void 0!==u)return u}}if(a>0){var f=Object.keys(r),h=s.default.find(f,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(r[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var n=this.getBrowserName().toLowerCase(),i=e.toLowerCase(),r=s.default.getBrowserTypeByAlias(i);return t&&r&&(i=r.toLowerCase()),i===n},t.compareVersion=function(e){var t=[0],n=e,i=!1,r=this.getBrowserVersion();if("string"==typeof r)return">"===e[0]||"<"===e[0]?(n=e.substr(1),"="===e[1]?(i=!0,n=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?n=e.substr(1):"~"===e[0]&&(i=!0,n=e.substr(1)),t.indexOf(s.default.compareVersions(r,n,i))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=l,e.exports=t.default},92:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var i,r=(i=n(17))&&i.__esModule?i:{default:i},a=/version\/(\d+(\.?_?\d+)+)/i,o=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},n=r.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||r.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},n=r.default.getFirstMatch(a,e)||r.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},n=r.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||r.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},n=r.default.getFirstMatch(a,e)||r.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},n=r.default.getFirstMatch(a,e)||r.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},n=r.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||r.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},n=r.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||r.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},n=r.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||r.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},n=r.default.getFirstMatch(a,e)||r.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},n=r.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||r.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},n=r.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||r.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},n=r.default.getFirstMatch(a,e)||r.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},n=r.default.getFirstMatch(a,e)||r.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},n=r.default.getFirstMatch(a,e)||r.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},n=r.default.getFirstMatch(a,e)||r.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},n=r.default.getFirstMatch(a,e)||r.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},n=r.default.getFirstMatch(a,e)||r.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},n=r.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||r.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},n=r.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||r.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},n=r.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},n=r.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},n=r.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},n=r.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},n=r.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},n=r.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return n&&(t.version=n),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},n=r.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},n=r.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},n=r.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},n=r.default.getFirstMatch(a,e)||r.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},n=r.default.getFirstMatch(a,e)||r.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},n=r.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},n=r.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||r.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},n=r.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||r.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},n=r.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},n=r.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},n=r.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},n=r.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||r.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},n=r.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},n=r.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){var t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe:function(e){var t={name:"Android Browser"},n=r.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},n=r.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},n=r.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:r.default.getFirstMatch(t,e),version:r.default.getSecondMatch(t,e)}}}];t.default=o,e.exports=t.default},93:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var i,r=(i=n(17))&&i.__esModule?i:{default:i},a=n(18),o=[{test:[/Roku\/DVP/],describe:function(e){var t=r.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:a.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=r.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=r.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),n=r.default.getWindowsVersionName(t);return{name:a.OS_MAP.Windows,version:t,versionName:n}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:a.OS_MAP.iOS},n=r.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return n&&(t.version=n),t}},{test:[/macintosh/i],describe:function(e){var t=r.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),n=r.default.getMacOSVersionName(t),i={name:a.OS_MAP.MacOS,version:t};return n&&(i.versionName=n),i}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=r.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:a.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe:function(e){var t=r.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),n=r.default.getAndroidVersionName(t),i={name:a.OS_MAP.Android,version:t};return n&&(i.versionName=n),i}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=r.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),n={name:a.OS_MAP.WebOS};return t&&t.length&&(n.version=t),n}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=r.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||r.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||r.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:a.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=r.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=r.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:a.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:a.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=r.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.PlayStation4,version:t}}}];t.default=o,e.exports=t.default},94:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var i,r=(i=n(17))&&i.__esModule?i:{default:i},a=n(18),o=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=r.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",n={type:a.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(n.model=t),n}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),n=e.test(/like (ipod|iphone)/i);return t&&!n},describe:function(e){var t=r.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:a.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}}];t.default=o,e.exports=t.default},95:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var i,r=(i=n(17))&&i.__esModule?i:{default:i},a=n(18),o=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:a.ENGINE_MAP.Blink};var t=r.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:a.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:a.ENGINE_MAP.Trident},n=r.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:a.ENGINE_MAP.Presto},n=r.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){var t=e.test(/gecko/i),n=e.test(/like gecko/i);return t&&!n},describe:function(e){var t={name:a.ENGINE_MAP.Gecko},n=r.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:a.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:a.ENGINE_MAP.WebKit},n=r.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}}];t.default=o,e.exports=t.default}})},8764:(e,t,n)=>{"use strict";const i=n(9742),r=n(645),a="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.lW=c,t.h2=50;const o=2147483647;function s(e){if(e>o)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,c.prototype),t}function c(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return u(e)}return l(e,t,n)}function l(e,t,n){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!c.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const n=0|p(e,t);let i=s(n);const r=i.write(e,t);return r!==n&&(i=i.slice(0,r)),i}(e,t);if(ArrayBuffer.isView(e))return function(e){if(J(e,Uint8Array)){const t=new Uint8Array(e);return h(t.buffer,t.byteOffset,t.byteLength)}return f(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(J(e,ArrayBuffer)||e&&J(e.buffer,ArrayBuffer))return h(e,t,n);if("undefined"!=typeof SharedArrayBuffer&&(J(e,SharedArrayBuffer)||e&&J(e.buffer,SharedArrayBuffer)))return h(e,t,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const i=e.valueOf&&e.valueOf();if(null!=i&&i!==e)return c.from(i,t,n);const r=function(e){if(c.isBuffer(e)){const t=0|m(e.length),n=s(t);return 0===n.length||e.copy(n,0,0,t),n}return void 0!==e.length?"number"!=typeof e.length||Z(e.length)?s(0):f(e):"Buffer"===e.type&&Array.isArray(e.data)?f(e.data):void 0}(e);if(r)return r;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return c.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function d(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function u(e){return d(e),s(e<0?0:0|m(e))}function f(e){const t=e.length<0?0:0|m(e.length),n=s(t);for(let i=0;i=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|e}function p(e,t){if(c.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||J(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const n=e.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===n)return 0;let r=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return $(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return G(e).length;default:if(r)return i?-1:$(e).length;t=(""+t).toLowerCase(),r=!0}}function g(e,t,n){let i=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return _(this,t,n);case"utf8":case"utf-8":return k(this,t,n);case"ascii":return E(this,t,n);case"latin1":case"binary":return H(this,t,n);case"base64":return x(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,t,n);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}function v(e,t,n){const i=e[t];e[t]=e[n],e[n]=i}function b(e,t,n,i,r){if(0===e.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),Z(n=+n)&&(n=r?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(r)return-1;n=e.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof t&&(t=c.from(t,i)),c.isBuffer(t))return 0===t.length?-1:y(e,t,n,i,r);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,i,r);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,i,r){let a,o=1,s=e.length,c=t.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return-1;o=2,s/=2,c/=2,n/=2}function l(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(r){let i=-1;for(a=n;as&&(n=s-c),a=n;a>=0;a--){let n=!0;for(let i=0;ir&&(i=r):i=r;const a=t.length;let o;for(i>a/2&&(i=a/2),o=0;o>8,r=n%256,a.push(r),a.push(i);return a}(t,e.length-n),e,n,i)}function x(e,t,n){return 0===t&&n===e.length?i.fromByteArray(e):i.fromByteArray(e.slice(t,n))}function k(e,t,n){n=Math.min(e.length,n);const i=[];let r=t;for(;r239?4:t>223?3:t>191?2:1;if(r+o<=n){let n,i,s,c;switch(o){case 1:t<128&&(a=t);break;case 2:n=e[r+1],128==(192&n)&&(c=(31&t)<<6|63&n,c>127&&(a=c));break;case 3:n=e[r+1],i=e[r+2],128==(192&n)&&128==(192&i)&&(c=(15&t)<<12|(63&n)<<6|63&i,c>2047&&(c<55296||c>57343)&&(a=c));break;case 4:n=e[r+1],i=e[r+2],s=e[r+3],128==(192&n)&&128==(192&i)&&128==(192&s)&&(c=(15&t)<<18|(63&n)<<12|(63&i)<<6|63&s,c>65535&&c<1114112&&(a=c))}}null===a?(a=65533,o=1):a>65535&&(a-=65536,i.push(a>>>10&1023|55296),a=56320|1023&a),i.push(a),r+=o}return function(e){const t=e.length;if(t<=V)return String.fromCharCode.apply(String,e);let n="",i=0;for(;ii.length?(c.isBuffer(t)||(t=c.from(t)),t.copy(i,r)):Uint8Array.prototype.set.call(i,t,r);else{if(!c.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(i,r)}r+=t.length}return i},c.byteLength=p,c.prototype._isBuffer=!0,c.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tn&&(e+=" ... "),""},a&&(c.prototype[a]=c.prototype.inspect),c.prototype.compare=function(e,t,n,i,r){if(J(e,Uint8Array)&&(e=c.from(e,e.offset,e.byteLength)),!c.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),t<0||n>e.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&t>=n)return 0;if(i>=r)return-1;if(t>=n)return 1;if(this===e)return 0;let a=(r>>>=0)-(i>>>=0),o=(n>>>=0)-(t>>>=0);const s=Math.min(a,o),l=this.slice(i,r),d=e.slice(t,n);for(let e=0;e>>=0,isFinite(n)?(n>>>=0,void 0===i&&(i="utf8")):(i=n,n=void 0)}const r=this.length-t;if((void 0===n||n>r)&&(n=r),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let a=!1;for(;;)switch(i){case"hex":return S(this,e,t,n);case"utf8":case"utf-8":return C(this,e,t,n);case"ascii":case"latin1":case"binary":return w(this,e,t,n);case"base64":return M(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return z(this,e,t,n);default:if(a)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),a=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const V=4096;function E(e,t,n){let i="";n=Math.min(e.length,n);for(let r=t;ri)&&(n=i);let r="";for(let i=t;in)throw new RangeError("Trying to access beyond buffer length")}function A(e,t,n,i,r,a){if(!c.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||te.length)throw new RangeError("Index out of range")}function I(e,t,n,i,r){U(t,i,r,e,n,7);let a=Number(t&BigInt(4294967295));e[n++]=a,a>>=8,e[n++]=a,a>>=8,e[n++]=a,a>>=8,e[n++]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,n}function N(e,t,n,i,r){U(t,i,r,e,n,7);let a=Number(t&BigInt(4294967295));e[n+7]=a,a>>=8,e[n+6]=a,a>>=8,e[n+5]=a,a>>=8,e[n+4]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[n+3]=o,o>>=8,e[n+2]=o,o>>=8,e[n+1]=o,o>>=8,e[n]=o,n+8}function P(e,t,n,i,r,a){if(n+i>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function O(e,t,n,i,a){return t=+t,n>>>=0,a||P(e,0,n,4),r.write(e,t,n,i,23,4),n+4}function R(e,t,n,i,a){return t=+t,n>>>=0,a||P(e,0,n,8),r.write(e,t,n,i,52,8),n+8}c.prototype.slice=function(e,t){const n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||T(e,t,this.length);let i=this[e],r=1,a=0;for(;++a>>=0,t>>>=0,n||T(e,t,this.length);let i=this[e+--t],r=1;for(;t>0&&(r*=256);)i+=this[e+--t]*r;return i},c.prototype.readUint8=c.prototype.readUInt8=function(e,t){return e>>>=0,t||T(e,1,this.length),this[e]},c.prototype.readUint16LE=c.prototype.readUInt16LE=function(e,t){return e>>>=0,t||T(e,2,this.length),this[e]|this[e+1]<<8},c.prototype.readUint16BE=c.prototype.readUInt16BE=function(e,t){return e>>>=0,t||T(e,2,this.length),this[e]<<8|this[e+1]},c.prototype.readUint32LE=c.prototype.readUInt32LE=function(e,t){return e>>>=0,t||T(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},c.prototype.readUint32BE=c.prototype.readUInt32BE=function(e,t){return e>>>=0,t||T(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},c.prototype.readBigUInt64LE=Y((function(e){j(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||W(e,this.length-8);const i=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,r=this[++e]+256*this[++e]+65536*this[++e]+n*2**24;return BigInt(i)+(BigInt(r)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||W(e,this.length-8);const i=t*2**24+65536*this[++e]+256*this[++e]+this[++e],r=this[++e]*2**24+65536*this[++e]+256*this[++e]+n;return(BigInt(i)<>>=0,t>>>=0,n||T(e,t,this.length);let i=this[e],r=1,a=0;for(;++a=r&&(i-=Math.pow(2,8*t)),i},c.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||T(e,t,this.length);let i=t,r=1,a=this[e+--i];for(;i>0&&(r*=256);)a+=this[e+--i]*r;return r*=128,a>=r&&(a-=Math.pow(2,8*t)),a},c.prototype.readInt8=function(e,t){return e>>>=0,t||T(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},c.prototype.readInt16LE=function(e,t){e>>>=0,t||T(e,2,this.length);const n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},c.prototype.readInt16BE=function(e,t){e>>>=0,t||T(e,2,this.length);const n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},c.prototype.readInt32LE=function(e,t){return e>>>=0,t||T(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},c.prototype.readInt32BE=function(e,t){return e>>>=0,t||T(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},c.prototype.readBigInt64LE=Y((function(e){j(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||W(e,this.length-8);const i=this[e+4]+256*this[e+5]+65536*this[e+6]+(n<<24);return(BigInt(i)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||W(e,this.length-8);const i=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(i)<>>=0,t||T(e,4,this.length),r.read(this,e,!0,23,4)},c.prototype.readFloatBE=function(e,t){return e>>>=0,t||T(e,4,this.length),r.read(this,e,!1,23,4)},c.prototype.readDoubleLE=function(e,t){return e>>>=0,t||T(e,8,this.length),r.read(this,e,!0,52,8)},c.prototype.readDoubleBE=function(e,t){return e>>>=0,t||T(e,8,this.length),r.read(this,e,!1,52,8)},c.prototype.writeUintLE=c.prototype.writeUIntLE=function(e,t,n,i){e=+e,t>>>=0,n>>>=0,i||A(this,e,t,n,Math.pow(2,8*n)-1,0);let r=1,a=0;for(this[t]=255&e;++a>>=0,n>>>=0,i||A(this,e,t,n,Math.pow(2,8*n)-1,0);let r=n-1,a=1;for(this[t+r]=255&e;--r>=0&&(a*=256);)this[t+r]=e/a&255;return t+n},c.prototype.writeUint8=c.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,1,255,0),this[t]=255&e,t+1},c.prototype.writeUint16LE=c.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},c.prototype.writeUint16BE=c.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},c.prototype.writeUint32LE=c.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},c.prototype.writeUint32BE=c.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},c.prototype.writeBigUInt64LE=Y((function(e,t=0){return I(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),c.prototype.writeBigUInt64BE=Y((function(e,t=0){return N(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),c.prototype.writeIntLE=function(e,t,n,i){if(e=+e,t>>>=0,!i){const i=Math.pow(2,8*n-1);A(this,e,t,n,i-1,-i)}let r=0,a=1,o=0;for(this[t]=255&e;++r>0)-o&255;return t+n},c.prototype.writeIntBE=function(e,t,n,i){if(e=+e,t>>>=0,!i){const i=Math.pow(2,8*n-1);A(this,e,t,n,i-1,-i)}let r=n-1,a=1,o=0;for(this[t+r]=255&e;--r>=0&&(a*=256);)e<0&&0===o&&0!==this[t+r+1]&&(o=1),this[t+r]=(e/a>>0)-o&255;return t+n},c.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},c.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},c.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},c.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},c.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},c.prototype.writeBigInt64LE=Y((function(e,t=0){return I(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),c.prototype.writeBigInt64BE=Y((function(e,t=0){return N(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),c.prototype.writeFloatLE=function(e,t,n){return O(this,e,t,!0,n)},c.prototype.writeFloatBE=function(e,t,n){return O(this,e,t,!1,n)},c.prototype.writeDoubleLE=function(e,t,n){return R(this,e,t,!0,n)},c.prototype.writeDoubleBE=function(e,t,n){return R(this,e,t,!1,n)},c.prototype.copy=function(e,t,n,i){if(!c.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(r=t;r=i+4;n-=3)t=`_${e.slice(n-3,n)}${t}`;return`${e.slice(0,n)}${t}`}function U(e,t,n,i,r,a){if(e>n||e3?0===t||t===BigInt(0)?`>= 0${i} and < 2${i} ** ${8*(a+1)}${i}`:`>= -(2${i} ** ${8*(a+1)-1}${i}) and < 2 ** ${8*(a+1)-1}${i}`:`>= ${t}${i} and <= ${n}${i}`,new D.ERR_OUT_OF_RANGE("value",r,e)}!function(e,t,n){j(t,"offset"),void 0!==e[t]&&void 0!==e[t+n]||W(t,e.length-(n+1))}(i,r,a)}function j(e,t){if("number"!=typeof e)throw new D.ERR_INVALID_ARG_TYPE(t,"number",e)}function W(e,t,n){if(Math.floor(e)!==e)throw j(e,n),new D.ERR_OUT_OF_RANGE(n||"offset","an integer",e);if(t<0)throw new D.ERR_BUFFER_OUT_OF_BOUNDS;throw new D.ERR_OUT_OF_RANGE(n||"offset",`>= ${n?1:0} and <= ${t}`,e)}F("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),F("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),F("ERR_OUT_OF_RANGE",(function(e,t,n){let i=`The value of "${e}" is out of range.`,r=n;return Number.isInteger(n)&&Math.abs(n)>2**32?r=B(String(n)):"bigint"==typeof n&&(r=String(n),(n>BigInt(2)**BigInt(32)||n<-(BigInt(2)**BigInt(32)))&&(r=B(r)),r+="n"),i+=` It must be ${t}. Received ${r}`,i}),RangeError);const q=/[^+/0-9A-Za-z-_]/g;function $(e,t){let n;t=t||1/0;const i=e.length;let r=null;const a=[];for(let o=0;o55295&&n<57344){if(!r){if(n>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===i){(t-=3)>-1&&a.push(239,191,189);continue}r=n;continue}if(n<56320){(t-=3)>-1&&a.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(t-=3)>-1&&a.push(239,191,189);if(r=null,n<128){if((t-=1)<0)break;a.push(n)}else if(n<2048){if((t-=2)<0)break;a.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;a.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return a}function G(e){return i.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(q,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function K(e,t,n,i){let r;for(r=0;r=t.length||r>=e.length);++r)t[r+n]=e[r];return r}function J(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function Z(e){return e!=e}const Q=function(){const e="0123456789abcdef",t=new Array(256);for(let n=0;n<16;++n){const i=16*n;for(let r=0;r<16;++r)t[i+r]=e[n]+e[r]}return t}();function Y(e){return"undefined"==typeof BigInt?X:e}function X(){throw new Error("BigInt not supported")}},8767:e=>{function t(e){if(e)return function(e){return Object.assign(e,t.prototype),e._callbacks=new Map,e}(e);this._callbacks=new Map}t.prototype.on=function(e,t){const n=this._callbacks.get(e)??[];return n.push(t),this._callbacks.set(e,n),this},t.prototype.once=function(e,t){const n=(...i)=>{this.off(e,n),t.apply(this,i)};return n.fn=t,this.on(e,n),this},t.prototype.off=function(e,t){if(void 0===e&&void 0===t)return this._callbacks.clear(),this;if(void 0===t)return this._callbacks.delete(e),this;const n=this._callbacks.get(e);if(n){for(const[e,i]of n.entries())if(i===t||i.fn===t){n.splice(e,1);break}0===n.length?this._callbacks.delete(e):this._callbacks.set(e,n)}return this},t.prototype.emit=function(e,...t){const n=this._callbacks.get(e);if(n){const e=[...n];for(const n of e)n.apply(this,t)}return this},t.prototype.listeners=function(e){return this._callbacks.get(e)??[]},t.prototype.listenerCount=function(e){if(e)return this.listeners(e).length;let t=0;for(const e of this._callbacks.values())t+=e.length;return t},t.prototype.hasListeners=function(e){return this.listenerCount(e)>0},t.prototype.addEventListener=t.prototype.on,t.prototype.removeListener=t.prototype.off,t.prototype.removeEventListener=t.prototype.off,t.prototype.removeAllListeners=t.prototype.off,e.exports=t},3631:(e,t,n)=>{"use strict";n.r(t),n.d(t,{BotInfo:()=>s,BrowserInfo:()=>r,NodeInfo:()=>a,ReactNativeInfo:()=>c,SearchBotDeviceInfo:()=>o,browserName:()=>p,detect:()=>h,detectOS:()=>v,getNodeVersion:()=>b,parseUserAgent:()=>g});var i=function(e,t,n){if(n||2===arguments.length)for(var i,r=0,a=t.length;r{t.read=function(e,t,n,i,r){var a,o,s=8*r-i-1,c=(1<>1,d=-7,u=n?r-1:0,f=n?-1:1,h=e[t+u];for(u+=f,a=h&(1<<-d)-1,h>>=-d,d+=s;d>0;a=256*a+e[t+u],u+=f,d-=8);for(o=a&(1<<-d)-1,a>>=-d,d+=i;d>0;o=256*o+e[t+u],u+=f,d-=8);if(0===a)a=1-l;else{if(a===c)return o?NaN:1/0*(h?-1:1);o+=Math.pow(2,i),a-=l}return(h?-1:1)*o*Math.pow(2,a-i)},t.write=function(e,t,n,i,r,a){var o,s,c,l=8*a-r-1,d=(1<>1,f=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,h=i?0:a-1,m=i?1:-1,p=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=d):(o=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-o))<1&&(o--,c*=2),(t+=o+u>=1?f/c:f*Math.pow(2,1-u))*c>=2&&(o++,c/=2),o+u>=d?(s=0,o=d):o+u>=1?(s=(t*c-1)*Math.pow(2,r),o+=u):(s=t*Math.pow(2,u-1)*Math.pow(2,r),o=0));r>=8;e[n+h]=255&s,h+=m,s/=256,r-=8);for(o=o<0;e[n+h]=255&o,h+=m,o/=256,l-=8);e[n+h-m]|=128*p}},9483:(e,t,n)=>{e.exports=function e(t,n,i){function r(o,s){if(!n[o]){if(!t[o]){if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[o]={exports:{}};t[o][0].call(l.exports,(function(e){return r(t[o][1][e]||e)}),l,l.exports,e,t,n,i)}return n[o].exports}for(var a=void 0,o=0;o=43)}})).catch((function(){return!1}))}(e).then((function(e){return f=e}))}function y(e){var t=h[e.name],n={};n.promise=new o((function(e,t){n.resolve=e,n.reject=t})),t.deferredOperations.push(n),t.dbReady?t.dbReady=t.dbReady.then((function(){return n.promise})):t.dbReady=n.promise}function S(e){var t=h[e.name].deferredOperations.pop();if(t)return t.resolve(),t.promise}function C(e,t){var n=h[e.name].deferredOperations.pop();if(n)return n.reject(t),n.promise}function w(e,t){return new o((function(n,i){if(h[e.name]=h[e.name]||{forages:[],db:null,dbReady:null,deferredOperations:[]},e.db){if(!t)return n(e.db);y(e),e.db.close()}var a=[e.name];t&&a.push(e.version);var o=r.open.apply(r,a);t&&(o.onupgradeneeded=function(t){var n=o.result;try{n.createObjectStore(e.storeName),t.oldVersion<=1&&n.createObjectStore(u)}catch(n){if("ConstraintError"!==n.name)throw n;console.warn('The database "'+e.name+'" has been upgraded from version '+t.oldVersion+" to version "+t.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),o.onerror=function(e){e.preventDefault(),i(o.error)},o.onsuccess=function(){var t=o.result;t.onversionchange=function(e){e.target.close()},n(t),S(e)}}))}function M(e){return w(e,!1)}function z(e){return w(e,!0)}function x(e,t){if(!e.db)return!0;var n=!e.db.objectStoreNames.contains(e.storeName),i=e.versione.db.version;if(i&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),r||n){if(n){var a=e.db.version+1;a>e.version&&(e.version=a)}return!0}return!1}function k(e){return a([v(atob(e.data))],{type:e.type})}function V(e){return e&&e.__local_forage_encoded_blob}function E(e){var t=this,n=t._initReady().then((function(){var e=h[t._dbInfo.name];if(e&&e.dbReady)return e.dbReady}));return c(n,e,e),n}function H(e,t,n,i){void 0===i&&(i=1);try{var r=e.db.transaction(e.storeName,t);n(null,r)}catch(r){if(i>0&&(!e.db||"InvalidStateError"===r.name||"NotFoundError"===r.name))return o.resolve().then((function(){if(!e.db||"NotFoundError"===r.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),z(e)})).then((function(){return function(e){y(e);for(var t=h[e.name],n=t.forages,i=0;i>4,d[c++]=(15&i)<<4|r>>2,d[c++]=(3&r)<<6|63&a;return l}function G(e){var t,n=new Uint8Array(e),i="";for(t=0;t>2],i+=L[(3&n[t])<<4|n[t+1]>>4],i+=L[(15&n[t+1])<<2|n[t+2]>>6],i+=L[63&n[t+2]];return n.length%3==2?i=i.substring(0,i.length-1)+"=":n.length%3==1&&(i=i.substring(0,i.length-2)+"=="),i}var K={serialize:function(e,t){var n="";if(e&&(n=q.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===q.call(e.buffer))){var i,r=A;e instanceof ArrayBuffer?(i=e,r+=I):(i=e.buffer,"[object Int8Array]"===n?r+=P:"[object Uint8Array]"===n?r+=O:"[object Uint8ClampedArray]"===n?r+=R:"[object Int16Array]"===n?r+=D:"[object Uint16Array]"===n?r+=B:"[object Int32Array]"===n?r+=F:"[object Uint32Array]"===n?r+=U:"[object Float32Array]"===n?r+=j:"[object Float64Array]"===n?r+=W:t(new Error("Failed to get type for BinaryArray"))),t(r+G(i))}else if("[object Blob]"===n){var a=new FileReader;a.onload=function(){var n="~~local_forage_type~"+e.type+"~"+G(this.result);t(A+N+n)},a.readAsArrayBuffer(e)}else try{t(JSON.stringify(e))}catch(n){console.error("Couldn't convert value into a JSON string: ",e),t(null,n)}},deserialize:function(e){if(e.substring(0,9)!==A)return JSON.parse(e);var t,n=e.substring(13),i=e.substring(9,13);if(i===N&&T.test(n)){var r=n.match(T);t=r[1],n=n.substring(r[0].length)}var o=$(n);switch(i){case I:return o;case N:return a([o],{type:t});case P:return new Int8Array(o);case O:return new Uint8Array(o);case R:return new Uint8ClampedArray(o);case D:return new Int16Array(o);case B:return new Uint16Array(o);case F:return new Int32Array(o);case U:return new Uint32Array(o);case j:return new Float32Array(o);case W:return new Float64Array(o);default:throw new Error("Unkown type: "+i)}},stringToBuffer:$,bufferToString:G};function J(e,t,n,i){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],n,i)}function Z(e,t,n,i,r,a){e.executeSql(n,i,r,(function(e,o){o.code===o.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,s){s.rows.length?a(e,o):J(e,t,(function(){e.executeSql(n,i,r,a)}),a)}),a):a(e,o)}),a)}function Q(e,t,n,i){var r=this;e=l(e);var a=new o((function(a,o){r.ready().then((function(){void 0===t&&(t=null);var s=t,c=r._dbInfo;c.serializer.serialize(t,(function(t,l){l?o(l):c.db.transaction((function(n){Z(n,c,"INSERT OR REPLACE INTO "+c.storeName+" (key, value) VALUES (?, ?)",[e,t],(function(){a(s)}),(function(e,t){o(t)}))}),(function(t){if(t.code===t.QUOTA_ERR){if(i>0)return void a(Q.apply(r,[e,s,n,i-1]));o(t)}}))}))})).catch(o)}));return s(a,n),a}var Y={_driver:"webSQLStorage",_initStorage:function(e){var t=this,n={db:null};if(e)for(var i in e)n[i]="string"!=typeof e[i]?e[i].toString():e[i];var r=new o((function(e,i){try{n.db=openDatabase(n.name,String(n.version),n.description,n.size)}catch(e){return i(e)}n.db.transaction((function(r){J(r,n,(function(){t._dbInfo=n,e()}),(function(e,t){i(t)}))}),i)}));return n.serializer=K,r},_support:"function"==typeof openDatabase,iterate:function(e,t){var n=this,i=new o((function(t,i){n.ready().then((function(){var r=n._dbInfo;r.db.transaction((function(n){Z(n,r,"SELECT * FROM "+r.storeName,[],(function(n,i){for(var a=i.rows,o=a.length,s=0;s '__WebKitDatabaseInfoTable__'",[],(function(n,i){for(var r=[],a=0;a0?(this._dbInfo=t,t.serializer=K,o.resolve()):o.reject()},_support:function(){try{return"undefined"!=typeof localStorage&&"setItem"in localStorage&&!!localStorage.setItem}catch(e){return!1}}(),iterate:function(e,t){var n=this,i=n.ready().then((function(){for(var t=n._dbInfo,i=t.keyPrefix,r=i.length,a=localStorage.length,o=1,s=0;s=0;n--){var i=localStorage.key(n);0===i.indexOf(e)&&localStorage.removeItem(i)}}));return s(n,e),n},length:function(e){var t=this.keys().then((function(e){return e.length}));return s(t,e),t},key:function(e,t){var n=this,i=n.ready().then((function(){var t,i=n._dbInfo;try{t=localStorage.key(e)}catch(e){t=null}return t&&(t=t.substring(i.keyPrefix.length)),t}));return s(i,t),i},keys:function(e){var t=this,n=t.ready().then((function(){for(var e=t._dbInfo,n=localStorage.length,i=[],r=0;r=0;t--){var n=localStorage.key(t);0===n.indexOf(e)&&localStorage.removeItem(n)}})):o.reject("Invalid arguments"),s(i,t),i}},te=function(e,t){for(var n=e.length,i=0;i{"use strict";const{Deflate:i,deflate:r,deflateRaw:a,gzip:o}=n(4555),{Inflate:s,inflate:c,inflateRaw:l,ungzip:d}=n(8843),u=n(1619);e.exports.Deflate=i,e.exports.deflate=r,e.exports.deflateRaw=a,e.exports.gzip=o,e.exports.Inflate=s,e.exports.inflate=c,e.exports.inflateRaw=l,e.exports.ungzip=d,e.exports.constants=u},4555:(e,t,n)=>{"use strict";const i=n(405),r=n(6247),a=n(9373),o=n(8898),s=n(2292),c=Object.prototype.toString,{Z_NO_FLUSH:l,Z_SYNC_FLUSH:d,Z_FULL_FLUSH:u,Z_FINISH:f,Z_OK:h,Z_STREAM_END:m,Z_DEFAULT_COMPRESSION:p,Z_DEFAULT_STRATEGY:g,Z_DEFLATED:v}=n(1619);function b(e){this.options=r.assign({level:p,method:v,chunkSize:16384,windowBits:15,memLevel:8,strategy:g},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;let n=i.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==h)throw new Error(o[n]);if(t.header&&i.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?a.string2buf(t.dictionary):"[object ArrayBuffer]"===c.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,n=i.deflateSetDictionary(this.strm,e),n!==h)throw new Error(o[n]);this._dict_set=!0}}function y(e,t){const n=new b(t);if(n.push(e,!0),n.err)throw n.msg||o[n.err];return n.result}b.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize;let o,s;if(this.ended)return!1;for(s=t===~~t?t:!0===t?f:l,"string"==typeof e?n.input=a.string2buf(e):"[object ArrayBuffer]"===c.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;)if(0===n.avail_out&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(s===d||s===u)&&n.avail_out<=6)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else{if(o=i.deflate(n,s),o===m)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),o=i.deflateEnd(this.strm),this.onEnd(o),this.ended=!0,o===h;if(0!==n.avail_out){if(s>0&&n.next_out>0)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else if(0===n.avail_in)break}else this.onData(n.output)}return!0},b.prototype.onData=function(e){this.chunks.push(e)},b.prototype.onEnd=function(e){e===h&&(this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},e.exports.Deflate=b,e.exports.deflate=y,e.exports.deflateRaw=function(e,t){return(t=t||{}).raw=!0,y(e,t)},e.exports.gzip=function(e,t){return(t=t||{}).gzip=!0,y(e,t)},e.exports.constants=n(1619)},8843:(e,t,n)=>{"use strict";const i=n(6351),r=n(6247),a=n(9373),o=n(8898),s=n(2292),c=n(2401),l=Object.prototype.toString,{Z_NO_FLUSH:d,Z_FINISH:u,Z_OK:f,Z_STREAM_END:h,Z_NEED_DICT:m,Z_STREAM_ERROR:p,Z_DATA_ERROR:g,Z_MEM_ERROR:v}=n(1619);function b(e){this.options=r.assign({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;let n=i.inflateInit2(this.strm,t.windowBits);if(n!==f)throw new Error(o[n]);if(this.header=new c,i.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=a.string2buf(t.dictionary):"[object ArrayBuffer]"===l.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=i.inflateSetDictionary(this.strm,t.dictionary),n!==f)))throw new Error(o[n])}function y(e,t){const n=new b(t);if(n.push(e),n.err)throw n.msg||o[n.err];return n.result}b.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize,o=this.options.dictionary;let s,c,b;if(this.ended)return!1;for(c=t===~~t?t:!0===t?u:d,"[object ArrayBuffer]"===l.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(0===n.avail_out&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),s=i.inflate(n,c),s===m&&o&&(s=i.inflateSetDictionary(n,o),s===f?s=i.inflate(n,c):s===g&&(s=m));n.avail_in>0&&s===h&&n.state.wrap>0&&0!==e[n.next_in];)i.inflateReset(n),s=i.inflate(n,c);switch(s){case p:case g:case m:case v:return this.onEnd(s),this.ended=!0,!1}if(b=n.avail_out,n.next_out&&(0===n.avail_out||s===h))if("string"===this.options.to){let e=a.utf8border(n.output,n.next_out),t=n.next_out-e,i=a.buf2string(n.output,e);n.next_out=t,n.avail_out=r-t,t&&n.output.set(n.output.subarray(e,e+t),0),this.onData(i)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(s!==f||0!==b){if(s===h)return s=i.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===n.avail_in)break}}return!0},b.prototype.onData=function(e){this.chunks.push(e)},b.prototype.onEnd=function(e){e===f&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},e.exports.Inflate=b,e.exports.inflate=y,e.exports.inflateRaw=function(e,t){return(t=t||{}).raw=!0,y(e,t)},e.exports.ungzip=y,e.exports.constants=n(1619)},6247:e=>{"use strict";const t=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);e.exports.assign=function(e){const n=Array.prototype.slice.call(arguments,1);for(;n.length;){const i=n.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const n in i)t(i,n)&&(e[n]=i[n])}}return e},e.exports.flattenChunks=e=>{let t=0;for(let n=0,i=e.length;n{"use strict";let t=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){t=!1}const n=new Uint8Array(256);for(let e=0;e<256;e++)n[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;n[254]=n[254]=1,e.exports.string2buf=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,n,i,r,a,o=e.length,s=0;for(r=0;r>>6,t[a++]=128|63&n):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|63&n):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|63&n);return t},e.exports.buf2string=(e,i)=>{const r=i||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,i));let a,o;const s=new Array(2*r);for(o=0,a=0;a4)s[o++]=65533,a+=i-1;else{for(t&=2===i?31:3===i?15:7;i>1&&a1?s[o++]=65533:t<65536?s[o++]=t:(t-=65536,s[o++]=55296|t>>10&1023,s[o++]=56320|1023&t)}}return((e,n)=>{if(n<65534&&e.subarray&&t)return String.fromCharCode.apply(null,e.length===n?e:e.subarray(0,n));let i="";for(let t=0;t{(t=t||e.length)>e.length&&(t=e.length);let i=t-1;for(;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+n[e[i]]>t?i:t}},6069:e=>{"use strict";e.exports=(e,t,n,i)=>{let r=65535&e|0,a=e>>>16&65535|0,o=0;for(;0!==n;){o=n>2e3?2e3:n,n-=o;do{r=r+t[i++]|0,a=a+r|0}while(--o);r%=65521,a%=65521}return r|a<<16|0}},1619:e=>{"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},2869:e=>{"use strict";const t=new Uint32Array((()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t})());e.exports=(e,n,i,r)=>{const a=t,o=r+i;e^=-1;for(let t=r;t>>8^a[255&(e^n[t])];return-1^e}},405:(e,t,n)=>{"use strict";const{_tr_init:i,_tr_stored_block:r,_tr_flush_block:a,_tr_tally:o,_tr_align:s}=n(342),c=n(6069),l=n(2869),d=n(8898),{Z_NO_FLUSH:u,Z_PARTIAL_FLUSH:f,Z_FULL_FLUSH:h,Z_FINISH:m,Z_BLOCK:p,Z_OK:g,Z_STREAM_END:v,Z_STREAM_ERROR:b,Z_DATA_ERROR:y,Z_BUF_ERROR:S,Z_DEFAULT_COMPRESSION:C,Z_FILTERED:w,Z_HUFFMAN_ONLY:M,Z_RLE:z,Z_FIXED:x,Z_DEFAULT_STRATEGY:k,Z_UNKNOWN:V,Z_DEFLATED:E}=n(1619),H=258,_=262,L=42,T=113,A=666,I=(e,t)=>(e.msg=d[t],t),N=e=>2*e-(e>4?9:0),P=e=>{let t=e.length;for(;--t>=0;)e[t]=0},O=e=>{let t,n,i,r=e.w_size;t=e.hash_size,i=t;do{n=e.head[--i],e.head[i]=n>=r?n-r:0}while(--t);t=r,i=t;do{n=e.prev[--i],e.prev[i]=n>=r?n-r:0}while(--t)};let R=(e,t,n)=>(t<{const t=e.state;let n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))},F=(e,t)=>{a(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,D(e.strm)},B=(e,t)=>{e.pending_buf[e.pending++]=t},U=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},j=(e,t,n,i)=>{let r=e.avail_in;return r>i&&(r=i),0===r?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),n),1===e.state.wrap?e.adler=c(e.adler,t,r,n):2===e.state.wrap&&(e.adler=l(e.adler,t,r,n)),e.next_in+=r,e.total_in+=r,r)},W=(e,t)=>{let n,i,r=e.max_chain_length,a=e.strstart,o=e.prev_length,s=e.nice_match;const c=e.strstart>e.w_size-_?e.strstart-(e.w_size-_):0,l=e.window,d=e.w_mask,u=e.prev,f=e.strstart+H;let h=l[a+o-1],m=l[a+o];e.prev_length>=e.good_match&&(r>>=2),s>e.lookahead&&(s=e.lookahead);do{if(n=t,l[n+o]===m&&l[n+o-1]===h&&l[n]===l[a]&&l[++n]===l[a+1]){a+=2,n++;do{}while(l[++a]===l[++n]&&l[++a]===l[++n]&&l[++a]===l[++n]&&l[++a]===l[++n]&&l[++a]===l[++n]&&l[++a]===l[++n]&&l[++a]===l[++n]&&l[++a]===l[++n]&&ao){if(e.match_start=t,o=i,i>=s)break;h=l[a+o-1],m=l[a+o]}}}while((t=u[t&d])>c&&0!=--r);return o<=e.lookahead?o:e.lookahead},q=e=>{const t=e.w_size;let n,i,r;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-_)&&(e.window.set(e.window.subarray(t,t+t-i),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),O(e),i+=t),0===e.strm.avail_in)break;if(n=j(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=n,e.lookahead+e.insert>=3)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=R(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=R(e,e.ins_h,e.window[r+3-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<_&&0!==e.strm.avail_in)},$=(e,t)=>{let n,i,a,o=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,s=0,c=e.strm.avail_in;do{if(n=65535,a=e.bi_valid+42>>3,e.strm.avail_outi+e.strm.avail_in&&(n=i+e.strm.avail_in),n>a&&(n=a),n>8,e.pending_buf[e.pending-2]=~n,e.pending_buf[e.pending-1]=~n>>8,D(e.strm),i&&(i>n&&(i=n),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+i),e.strm.next_out),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i,e.block_start+=i,n-=i),n&&(j(e.strm,e.strm.output,e.strm.next_out,n),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n)}while(0===s);return c-=e.strm.avail_in,c&&(c>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=c&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-c,e.strm.next_in),e.strstart),e.strstart+=c,e.insert+=c>e.w_size-e.insert?e.w_size-e.insert:c),e.block_start=e.strstart),e.high_watera&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,a+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),a>e.strm.avail_in&&(a=e.strm.avail_in),a&&(j(e.strm,e.window,e.strstart,a),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.high_water>3,a=e.pending_buf_size-a>65535?65535:e.pending_buf_size-a,o=a>e.w_size?e.w_size:a,i=e.strstart-e.block_start,(i>=o||(i||t===m)&&t!==u&&0===e.strm.avail_in&&i<=a)&&(n=i>a?a:i,s=t===m&&0===e.strm.avail_in&&n===i?1:0,r(e,e.block_start,n,s),e.block_start+=n,D(e.strm)),s?3:1)},G=(e,t)=>{let n,i;for(;;){if(e.lookahead<_){if(q(e),e.lookahead<_&&t===u)return 1;if(0===e.lookahead)break}if(n=0,e.lookahead>=3&&(e.ins_h=R(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==n&&e.strstart-n<=e.w_size-_&&(e.match_length=W(e,n)),e.match_length>=3)if(i=o(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=R(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=R(e,e.ins_h,e.window[e.strstart+1]);else i=o(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(F(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===m?(F(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(F(e,!1),0===e.strm.avail_out)?1:2},K=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<_){if(q(e),e.lookahead<_&&t===u)return 1;if(0===e.lookahead)break}if(n=0,e.lookahead>=3&&(e.ins_h=R(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==n&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,i=o(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=R(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,i&&(F(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(i=o(e,0,e.window[e.strstart-1]),i&&F(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=o(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===m?(F(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(F(e,!1),0===e.strm.avail_out)?1:2};function J(e,t,n,i,r){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=i,this.func=r}const Z=[new J(0,0,0,0,$),new J(4,4,8,4,G),new J(4,5,16,8,G),new J(4,6,32,32,G),new J(4,4,16,16,K),new J(8,16,32,32,K),new J(8,16,128,128,K),new J(8,32,128,256,K),new J(32,128,258,1024,K),new J(32,258,258,4096,K)];function Q(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=E,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),P(this.dyn_ltree),P(this.dyn_dtree),P(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),P(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),P(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Y=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==L&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==T&&t.status!==A?1:0},X=e=>{if(Y(e))return I(e,b);e.total_in=e.total_out=0,e.data_type=V;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?L:T,e.adler=2===t.wrap?0:1,t.last_flush=-2,i(t),g},ee=e=>{const t=X(e);var n;return t===g&&((n=e.state).window_size=2*n.w_size,P(n.head),n.max_lazy_match=Z[n.level].max_lazy,n.good_match=Z[n.level].good_length,n.nice_match=Z[n.level].nice_length,n.max_chain_length=Z[n.level].max_chain,n.strstart=0,n.block_start=0,n.lookahead=0,n.insert=0,n.match_length=n.prev_length=2,n.match_available=0,n.ins_h=0),t},te=(e,t,n,i,r,a)=>{if(!e)return b;let o=1;if(t===C&&(t=6),i<0?(o=0,i=-i):i>15&&(o=2,i-=16),r<1||r>9||n!==E||i<8||i>15||t<0||t>9||a<0||a>x||8===i&&1!==o)return I(e,b);8===i&&(i=9);const s=new Q;return e.state=s,s.strm=e,s.status=L,s.wrap=o,s.gzhead=null,s.w_bits=i,s.w_size=1<te(e,t,E,15,8,k),e.exports.deflateInit2=te,e.exports.deflateReset=ee,e.exports.deflateResetKeep=X,e.exports.deflateSetHeader=(e,t)=>Y(e)||2!==e.state.wrap?b:(e.state.gzhead=t,g),e.exports.deflate=(e,t)=>{if(Y(e)||t>p||t<0)return e?I(e,b):b;const n=e.state;if(!e.output||0!==e.avail_in&&!e.input||n.status===A&&t!==m)return I(e,0===e.avail_out?S:b);const i=n.last_flush;if(n.last_flush=t,0!==n.pending){if(D(e),0===e.avail_out)return n.last_flush=-1,g}else if(0===e.avail_in&&N(t)<=N(i)&&t!==m)return I(e,S);if(n.status===A&&0!==e.avail_in)return I(e,S);if(n.status===L&&0===n.wrap&&(n.status=T),n.status===L){let t=E+(n.w_bits-8<<4)<<8,i=-1;if(i=n.strategy>=M||n.level<2?0:n.level<6?1:6===n.level?2:3,t|=i<<6,0!==n.strstart&&(t|=32),t+=31-t%31,U(n,t),0!==n.strstart&&(U(n,e.adler>>>16),U(n,65535&e.adler)),e.adler=1,n.status=T,D(e),0!==n.pending)return n.last_flush=-1,g}if(57===n.status)if(e.adler=0,B(n,31),B(n,139),B(n,8),n.gzhead)B(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),B(n,255&n.gzhead.time),B(n,n.gzhead.time>>8&255),B(n,n.gzhead.time>>16&255),B(n,n.gzhead.time>>24&255),B(n,9===n.level?2:n.strategy>=M||n.level<2?4:0),B(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(B(n,255&n.gzhead.extra.length),B(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=l(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69;else if(B(n,0),B(n,0),B(n,0),B(n,0),B(n,0),B(n,9===n.level?2:n.strategy>=M||n.level<2?4:0),B(n,3),n.status=T,D(e),0!==n.pending)return n.last_flush=-1,g;if(69===n.status){if(n.gzhead.extra){let t=n.pending,i=(65535&n.gzhead.extra.length)-n.gzindex;for(;n.pending+i>n.pending_buf_size;){let r=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+r),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>t&&(e.adler=l(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex+=r,D(e),0!==n.pending)return n.last_flush=-1,g;t=0,i-=r}let r=new Uint8Array(n.gzhead.extra);n.pending_buf.set(r.subarray(n.gzindex,n.gzindex+i),n.pending),n.pending+=i,n.gzhead.hcrc&&n.pending>t&&(e.adler=l(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex=0}n.status=73}if(73===n.status){if(n.gzhead.name){let t,i=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=l(e.adler,n.pending_buf,n.pending-i,i)),D(e),0!==n.pending)return n.last_flush=-1,g;i=0}t=n.gzindexi&&(e.adler=l(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=91}if(91===n.status){if(n.gzhead.comment){let t,i=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=l(e.adler,n.pending_buf,n.pending-i,i)),D(e),0!==n.pending)return n.last_flush=-1,g;i=0}t=n.gzindexi&&(e.adler=l(e.adler,n.pending_buf,n.pending-i,i))}n.status=103}if(103===n.status){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(D(e),0!==n.pending))return n.last_flush=-1,g;B(n,255&e.adler),B(n,e.adler>>8&255),e.adler=0}if(n.status=T,D(e),0!==n.pending)return n.last_flush=-1,g}if(0!==e.avail_in||0!==n.lookahead||t!==u&&n.status!==A){let i=0===n.level?$(n,t):n.strategy===M?((e,t)=>{let n;for(;;){if(0===e.lookahead&&(q(e),0===e.lookahead)){if(t===u)return 1;break}if(e.match_length=0,n=o(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(F(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===m?(F(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(F(e,!1),0===e.strm.avail_out)?1:2})(n,t):n.strategy===z?((e,t)=>{let n,i,r,a;const s=e.window;for(;;){if(e.lookahead<=H){if(q(e),e.lookahead<=H&&t===u)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(r=e.strstart-1,i=s[r],i===s[++r]&&i===s[++r]&&i===s[++r])){a=e.strstart+H;do{}while(i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&re.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=o(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=o(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(F(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===m?(F(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(F(e,!1),0===e.strm.avail_out)?1:2})(n,t):Z[n.level].func(n,t);if(3!==i&&4!==i||(n.status=A),1===i||3===i)return 0===e.avail_out&&(n.last_flush=-1),g;if(2===i&&(t===f?s(n):t!==p&&(r(n,0,0,!1),t===h&&(P(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),D(e),0===e.avail_out))return n.last_flush=-1,g}return t!==m?g:n.wrap<=0?v:(2===n.wrap?(B(n,255&e.adler),B(n,e.adler>>8&255),B(n,e.adler>>16&255),B(n,e.adler>>24&255),B(n,255&e.total_in),B(n,e.total_in>>8&255),B(n,e.total_in>>16&255),B(n,e.total_in>>24&255)):(U(n,e.adler>>>16),U(n,65535&e.adler)),D(e),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?g:v)},e.exports.deflateEnd=e=>{if(Y(e))return b;const t=e.state.status;return e.state=null,t===T?I(e,y):g},e.exports.deflateSetDictionary=(e,t)=>{let n=t.length;if(Y(e))return b;const i=e.state,r=i.wrap;if(2===r||1===r&&i.status!==L||i.lookahead)return b;if(1===r&&(e.adler=c(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){0===r&&(P(i.head),i.strstart=0,i.block_start=0,i.insert=0);let e=new Uint8Array(i.w_size);e.set(t.subarray(n-i.w_size,n),0),t=e,n=i.w_size}const a=e.avail_in,o=e.next_in,s=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,q(i);i.lookahead>=3;){let e=i.strstart,t=i.lookahead-2;do{i.ins_h=R(i,i.ins_h,i.window[e+3-1]),i.prev[e&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=e,e++}while(--t);i.strstart=e,i.lookahead=2,q(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,e.next_in=o,e.input=s,e.avail_in=a,i.wrap=r,g},e.exports.deflateInfo="pako deflate (from Nodeca project)"},2401:e=>{"use strict";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},4264:e=>{"use strict";const t=16209;e.exports=function(e,n){let i,r,a,o,s,c,l,d,u,f,h,m,p,g,v,b,y,S,C,w,M,z,x,k;const V=e.state;i=e.next_in,x=e.input,r=i+(e.avail_in-5),a=e.next_out,k=e.output,o=a-(n-e.avail_out),s=a+(e.avail_out-257),c=V.dmax,l=V.wsize,d=V.whave,u=V.wnext,f=V.window,h=V.hold,m=V.bits,p=V.lencode,g=V.distcode,v=(1<>>24,h>>>=S,m-=S,S=y>>>16&255,0===S)k[a++]=65535&y;else{if(!(16&S)){if(0==(64&S)){y=p[(65535&y)+(h&(1<>>=S,m-=S),m<15&&(h+=x[i++]<>>24,h>>>=S,m-=S,S=y>>>16&255,!(16&S)){if(0==(64&S)){y=g[(65535&y)+(h&(1<c){e.msg="invalid distance too far back",V.mode=t;break e}if(h>>>=S,m-=S,S=a-o,w>S){if(S=w-S,S>d&&V.sane){e.msg="invalid distance too far back",V.mode=t;break e}if(M=0,z=f,0===u){if(M+=l-S,S2;)k[a++]=z[M++],k[a++]=z[M++],k[a++]=z[M++],C-=3;C&&(k[a++]=z[M++],C>1&&(k[a++]=z[M++]))}else{M=a-w;do{k[a++]=k[M++],k[a++]=k[M++],k[a++]=k[M++],C-=3}while(C>2);C&&(k[a++]=k[M++],C>1&&(k[a++]=k[M++]))}break}}break}}while(i>3,i-=C,m-=C<<3,h&=(1<{"use strict";const i=n(6069),r=n(2869),a=n(4264),o=n(9241),{Z_FINISH:s,Z_BLOCK:c,Z_TREES:l,Z_OK:d,Z_STREAM_END:u,Z_NEED_DICT:f,Z_STREAM_ERROR:h,Z_DATA_ERROR:m,Z_MEM_ERROR:p,Z_BUF_ERROR:g,Z_DEFLATED:v}=n(1619),b=16180,y=16190,S=16191,C=16192,w=16194,M=16199,z=16200,x=16206,k=16209,V=16210,E=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function H(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const _=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode16211?1:0},L=e=>{if(_(e))return h;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=b,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,d},T=e=>{if(_(e))return h;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,L(e)},A=(e,t)=>{let n;if(_(e))return h;const i=e.state;return t<0?(n=0,t=-t):(n=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?h:(null!==i.window&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,T(e))},I=(e,t)=>{if(!e)return h;const n=new H;e.state=n,n.strm=e,n.window=null,n.mode=b;const i=A(e,t);return i!==d&&(e.state=null),i};let N,P,O=!0;const R=e=>{if(O){N=new Int32Array(512),P=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(o(1,e.lens,0,288,N,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;o(2,e.lens,0,32,P,0,e.work,{bits:5}),O=!1}e.lencode=N,e.lenbits=9,e.distcode=P,e.distbits=5},D=(e,t,n,i)=>{let r;const a=e.state;return null===a.window&&(a.wsize=1<=a.wsize?(a.window.set(t.subarray(n-a.wsize,n),0),a.wnext=0,a.whave=a.wsize):(r=a.wsize-a.wnext,r>i&&(r=i),a.window.set(t.subarray(n-i,n-i+r),a.wnext),(i-=r)?(a.window.set(t.subarray(n-i,n),0),a.wnext=i,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whaveI(e,15),e.exports.inflateInit2=I,e.exports.inflate=(e,t)=>{let n,H,L,T,A,I,N,P,O,F,B,U,j,W,q,$,G,K,J,Z,Q,Y,X=0;const ee=new Uint8Array(4);let te,ne;const ie=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(_(e)||!e.output||!e.input&&0!==e.avail_in)return h;n=e.state,n.mode===S&&(n.mode=C),A=e.next_out,L=e.output,N=e.avail_out,T=e.next_in,H=e.input,I=e.avail_in,P=n.hold,O=n.bits,F=I,B=N,Y=d;e:for(;;)switch(n.mode){case b:if(0===n.wrap){n.mode=C;break}for(;O<16;){if(0===I)break e;I--,P+=H[T++]<>>8&255,n.check=r(n.check,ee,2,0),P=0,O=0,n.mode=16181;break}if(n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&P)<<8)+(P>>8))%31){e.msg="incorrect header check",n.mode=k;break}if((15&P)!==v){e.msg="unknown compression method",n.mode=k;break}if(P>>>=4,O-=4,Q=8+(15&P),0===n.wbits&&(n.wbits=Q),Q>15||Q>n.wbits){e.msg="invalid window size",n.mode=k;break}n.dmax=1<>8&1),512&n.flags&&4&n.wrap&&(ee[0]=255&P,ee[1]=P>>>8&255,n.check=r(n.check,ee,2,0)),P=0,O=0,n.mode=16182;case 16182:for(;O<32;){if(0===I)break e;I--,P+=H[T++]<>>8&255,ee[2]=P>>>16&255,ee[3]=P>>>24&255,n.check=r(n.check,ee,4,0)),P=0,O=0,n.mode=16183;case 16183:for(;O<16;){if(0===I)break e;I--,P+=H[T++]<>8),512&n.flags&&4&n.wrap&&(ee[0]=255&P,ee[1]=P>>>8&255,n.check=r(n.check,ee,2,0)),P=0,O=0,n.mode=16184;case 16184:if(1024&n.flags){for(;O<16;){if(0===I)break e;I--,P+=H[T++]<>>8&255,n.check=r(n.check,ee,2,0)),P=0,O=0}else n.head&&(n.head.extra=null);n.mode=16185;case 16185:if(1024&n.flags&&(U=n.length,U>I&&(U=I),U&&(n.head&&(Q=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(H.subarray(T,T+U),Q)),512&n.flags&&4&n.wrap&&(n.check=r(n.check,H,U,T)),I-=U,T+=U,n.length-=U),n.length))break e;n.length=0,n.mode=16186;case 16186:if(2048&n.flags){if(0===I)break e;U=0;do{Q=H[T+U++],n.head&&Q&&n.length<65536&&(n.head.name+=String.fromCharCode(Q))}while(Q&&U>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=S;break;case 16189:for(;O<32;){if(0===I)break e;I--,P+=H[T++]<>>=7&O,O-=7&O,n.mode=x;break}for(;O<3;){if(0===I)break e;I--,P+=H[T++]<>>=1,O-=1,3&P){case 0:n.mode=16193;break;case 1:if(R(n),n.mode=M,t===l){P>>>=2,O-=2;break e}break;case 2:n.mode=16196;break;case 3:e.msg="invalid block type",n.mode=k}P>>>=2,O-=2;break;case 16193:for(P>>>=7&O,O-=7&O;O<32;){if(0===I)break e;I--,P+=H[T++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=k;break}if(n.length=65535&P,P=0,O=0,n.mode=w,t===l)break e;case w:n.mode=16195;case 16195:if(U=n.length,U){if(U>I&&(U=I),U>N&&(U=N),0===U)break e;L.set(H.subarray(T,T+U),A),I-=U,T+=U,N-=U,A+=U,n.length-=U;break}n.mode=S;break;case 16196:for(;O<14;){if(0===I)break e;I--,P+=H[T++]<>>=5,O-=5,n.ndist=1+(31&P),P>>>=5,O-=5,n.ncode=4+(15&P),P>>>=4,O-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=k;break}n.have=0,n.mode=16197;case 16197:for(;n.have>>=3,O-=3}for(;n.have<19;)n.lens[ie[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,te={bits:n.lenbits},Y=o(0,n.lens,0,19,n.lencode,0,n.work,te),n.lenbits=te.bits,Y){e.msg="invalid code lengths set",n.mode=k;break}n.have=0,n.mode=16198;case 16198:for(;n.have>>24,$=X>>>16&255,G=65535&X,!(q<=O);){if(0===I)break e;I--,P+=H[T++]<>>=q,O-=q,n.lens[n.have++]=G;else{if(16===G){for(ne=q+2;O>>=q,O-=q,0===n.have){e.msg="invalid bit length repeat",n.mode=k;break}Q=n.lens[n.have-1],U=3+(3&P),P>>>=2,O-=2}else if(17===G){for(ne=q+3;O>>=q,O-=q,Q=0,U=3+(7&P),P>>>=3,O-=3}else{for(ne=q+7;O>>=q,O-=q,Q=0,U=11+(127&P),P>>>=7,O-=7}if(n.have+U>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=k;break}for(;U--;)n.lens[n.have++]=Q}}if(n.mode===k)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=k;break}if(n.lenbits=9,te={bits:n.lenbits},Y=o(1,n.lens,0,n.nlen,n.lencode,0,n.work,te),n.lenbits=te.bits,Y){e.msg="invalid literal/lengths set",n.mode=k;break}if(n.distbits=6,n.distcode=n.distdyn,te={bits:n.distbits},Y=o(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,te),n.distbits=te.bits,Y){e.msg="invalid distances set",n.mode=k;break}if(n.mode=M,t===l)break e;case M:n.mode=z;case z:if(I>=6&&N>=258){e.next_out=A,e.avail_out=N,e.next_in=T,e.avail_in=I,n.hold=P,n.bits=O,a(e,B),A=e.next_out,L=e.output,N=e.avail_out,T=e.next_in,H=e.input,I=e.avail_in,P=n.hold,O=n.bits,n.mode===S&&(n.back=-1);break}for(n.back=0;X=n.lencode[P&(1<>>24,$=X>>>16&255,G=65535&X,!(q<=O);){if(0===I)break e;I--,P+=H[T++]<>K)],q=X>>>24,$=X>>>16&255,G=65535&X,!(K+q<=O);){if(0===I)break e;I--,P+=H[T++]<>>=K,O-=K,n.back+=K}if(P>>>=q,O-=q,n.back+=q,n.length=G,0===$){n.mode=16205;break}if(32&$){n.back=-1,n.mode=S;break}if(64&$){e.msg="invalid literal/length code",n.mode=k;break}n.extra=15&$,n.mode=16201;case 16201:if(n.extra){for(ne=n.extra;O>>=n.extra,O-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=16202;case 16202:for(;X=n.distcode[P&(1<>>24,$=X>>>16&255,G=65535&X,!(q<=O);){if(0===I)break e;I--,P+=H[T++]<>K)],q=X>>>24,$=X>>>16&255,G=65535&X,!(K+q<=O);){if(0===I)break e;I--,P+=H[T++]<>>=K,O-=K,n.back+=K}if(P>>>=q,O-=q,n.back+=q,64&$){e.msg="invalid distance code",n.mode=k;break}n.offset=G,n.extra=15&$,n.mode=16203;case 16203:if(n.extra){for(ne=n.extra;O>>=n.extra,O-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=k;break}n.mode=16204;case 16204:if(0===N)break e;if(U=B-N,n.offset>U){if(U=n.offset-U,U>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=k;break}U>n.wnext?(U-=n.wnext,j=n.wsize-U):j=n.wnext-U,U>n.length&&(U=n.length),W=n.window}else W=L,j=A-n.offset,U=n.length;U>N&&(U=N),N-=U,n.length-=U;do{L[A++]=W[j++]}while(--U);0===n.length&&(n.mode=z);break;case 16205:if(0===N)break e;L[A++]=n.length,N--,n.mode=z;break;case x:if(n.wrap){for(;O<32;){if(0===I)break e;I--,P|=H[T++]<{if(_(e))return h;let t=e.state;return t.window&&(t.window=null),e.state=null,d},e.exports.inflateGetHeader=(e,t)=>{if(_(e))return h;const n=e.state;return 0==(2&n.wrap)?h:(n.head=t,t.done=!1,d)},e.exports.inflateSetDictionary=(e,t)=>{const n=t.length;let r,a,o;return _(e)?h:(r=e.state,0!==r.wrap&&r.mode!==y?h:r.mode===y&&(a=1,a=i(a,t,n,0),a!==r.check)?m:(o=D(e,t,n,n),o?(r.mode=V,p):(r.havedict=1,d)))},e.exports.inflateInfo="pako inflate (from Nodeca project)"},9241:e=>{"use strict";const t=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),n=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),i=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),r=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);e.exports=(e,a,o,s,c,l,d,u)=>{const f=u.bits;let h,m,p,g,v,b,y=0,S=0,C=0,w=0,M=0,z=0,x=0,k=0,V=0,E=0,H=null;const _=new Uint16Array(16),L=new Uint16Array(16);let T,A,I,N=null;for(y=0;y<=15;y++)_[y]=0;for(S=0;S=1&&0===_[w];w--);if(M>w&&(M=w),0===w)return c[l++]=20971520,c[l++]=20971520,u.bits=1,0;for(C=1;C0&&(0===e||1!==w))return-1;for(L[1]=0,y=1;y<15;y++)L[y+1]=L[y]+_[y];for(S=0;S852||2===e&&V>592)return 1;for(;;){T=y-x,d[S]+1=b?(A=N[d[S]-b],I=H[d[S]-b]):(A=96,I=0),h=1<>x)+m]=T<<24|A<<16|I|0}while(0!==m);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,S++,0==--_[y]){if(y===w)break;y=a[o+d[S]]}if(y>M&&(E&g)!==p){for(0===x&&(x=M),v+=C,z=y-x,k=1<852||2===e&&V>592)return 1;p=E&g,c[p]=M<<24|z<<16|v-l|0}}return 0!==E&&(c[v+E]=y-x<<24|64<<16|0),u.bits=M,0}},8898:e=>{"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},342:e=>{"use strict";function t(e){let t=e.length;for(;--t>=0;)e[t]=0}const n=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),i=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),r=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),a=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),o=new Array(576);t(o);const s=new Array(60);t(s);const c=new Array(512);t(c);const l=new Array(256);t(l);const d=new Array(29);t(d);const u=new Array(30);function f(e,t,n,i,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=i,this.max_length=r,this.has_stree=e&&e.length}let h,m,p;function g(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}t(u);const v=e=>e<256?c[e]:c[256+(e>>>7)],b=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},y=(e,t,n)=>{e.bi_valid>16-n?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<{y(e,n[2*t],n[2*t+1])},C=(e,t)=>{let n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1},w=(e,t,n)=>{const i=new Array(16);let r,a,o=0;for(r=1;r<=15;r++)o=o+n[r-1]<<1,i[r]=o;for(a=0;a<=t;a++){let t=e[2*a+1];0!==t&&(e[2*a]=C(i[t]++,t))}},M=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},z=e=>{e.bi_valid>8?b(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},x=(e,t,n,i)=>{const r=2*t,a=2*n;return e[r]{const i=e.heap[n];let r=n<<1;for(;r<=e.heap_len&&(r{let a,o,s,c,f=0;if(0!==e.sym_next)do{a=255&e.pending_buf[e.sym_buf+f++],a+=(255&e.pending_buf[e.sym_buf+f++])<<8,o=e.pending_buf[e.sym_buf+f++],0===a?S(e,o,t):(s=l[o],S(e,s+256+1,t),c=n[s],0!==c&&(o-=d[s],y(e,o,c)),a--,s=v(a),S(e,s,r),c=i[s],0!==c&&(a-=u[s],y(e,a,c)))}while(f{const n=t.dyn_tree,i=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.elems;let o,s,c,l=-1;for(e.heap_len=0,e.heap_max=573,o=0;o>1;o>=1;o--)k(e,n,o);c=a;do{o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],k(e,n,1),s=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=s,n[2*c]=n[2*o]+n[2*s],e.depth[c]=(e.depth[o]>=e.depth[s]?e.depth[o]:e.depth[s])+1,n[2*o+1]=n[2*s+1]=c,e.heap[1]=c++,k(e,n,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const n=t.dyn_tree,i=t.max_code,r=t.stat_desc.static_tree,a=t.stat_desc.has_stree,o=t.stat_desc.extra_bits,s=t.stat_desc.extra_base,c=t.stat_desc.max_length;let l,d,u,f,h,m,p=0;for(f=0;f<=15;f++)e.bl_count[f]=0;for(n[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)d=e.heap[l],f=n[2*n[2*d+1]+1]+1,f>c&&(f=c,p++),n[2*d+1]=f,d>i||(e.bl_count[f]++,h=0,d>=s&&(h=o[d-s]),m=n[2*d],e.opt_len+=m*(f+h),a&&(e.static_len+=m*(r[2*d+1]+h)));if(0!==p){do{for(f=c-1;0===e.bl_count[f];)f--;e.bl_count[f]--,e.bl_count[f+1]+=2,e.bl_count[c]--,p-=2}while(p>0);for(f=c;0!==f;f--)for(d=e.bl_count[f];0!==d;)u=e.heap[--l],u>i||(n[2*u+1]!==f&&(e.opt_len+=(f-n[2*u+1])*n[2*u],n[2*u+1]=f),d--)}})(e,t),w(n,l,e.bl_count)},H=(e,t,n)=>{let i,r,a=-1,o=t[1],s=0,c=7,l=4;for(0===o&&(c=138,l=3),t[2*(n+1)+1]=65535,i=0;i<=n;i++)r=o,o=t[2*(i+1)+1],++s{let i,r,a=-1,o=t[1],s=0,c=7,l=4;for(0===o&&(c=138,l=3),i=0;i<=n;i++)if(r=o,o=t[2*(i+1)+1],!(++s{y(e,0+(i?1:0),3),z(e),b(e,n),b(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n};e.exports._tr_init=e=>{L||((()=>{let e,t,a,g,v;const b=new Array(16);for(a=0,g=0;g<28;g++)for(d[g]=a,e=0;e<1<>=7;g<30;g++)for(u[g]=v<<7,e=0;e<1<{let r,c,l=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),E(e,e.l_desc),E(e,e.d_desc),l=(e=>{let t;for(H(e,e.dyn_ltree,e.l_desc.max_code),H(e,e.dyn_dtree,e.d_desc.max_code),E(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*a[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),r=e.opt_len+3+7>>>3,c=e.static_len+3+7>>>3,c<=r&&(r=c)):r=c=n+5,n+4<=r&&-1!==t?T(e,t,n,i):4===e.strategy||c===r?(y(e,2+(i?1:0),3),V(e,o,s)):(y(e,4+(i?1:0),3),((e,t,n,i)=>{let r;for(y(e,t-257,5),y(e,n-1,5),y(e,i-4,4),r=0;r(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(l[n]+256+1)]++,e.dyn_dtree[2*v(t)]++),e.sym_next===e.sym_end),e.exports._tr_align=e=>{y(e,2,3),S(e,256,o),(e=>{16===e.bi_valid?(b(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}},2292:e=>{"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},2100:(e,t,n)=>{"use strict";e.exports=n(9482)},9482:(e,t,n)=>{"use strict";var i=t;function r(){i.util._configure(),i.Writer._configure(i.BufferWriter),i.Reader._configure(i.BufferReader)}i.build="minimal",i.Writer=n(1173),i.BufferWriter=n(3155),i.Reader=n(1408),i.BufferReader=n(593),i.util=n(9693),i.rpc=n(5994),i.roots=n(5054),i.configure=r,r()},1408:(e,t,n)=>{"use strict";e.exports=c;var i,r=n(9693),a=r.LongBits,o=r.utf8;function s(e,t){return RangeError("index out of range: "+e.pos+" + "+(t||1)+" > "+e.len)}function c(e){this.buf=e,this.pos=0,this.len=e.length}var l,d="undefined"!=typeof Uint8Array?function(e){if(e instanceof Uint8Array||Array.isArray(e))return new c(e);throw Error("illegal buffer")}:function(e){if(Array.isArray(e))return new c(e);throw Error("illegal buffer")},u=function(){return r.Buffer?function(e){return(c.create=function(e){return r.Buffer.isBuffer(e)?new i(e):d(e)})(e)}:d};function f(){var e=new a(0,0),t=0;if(!(this.len-this.pos>4)){for(;t<3;++t){if(this.pos>=this.len)throw s(this);if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(127&this.buf[this.pos++])<<7*t)>>>0,e}for(;t<4;++t)if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(127&this.buf[this.pos])<<28)>>>0,e.hi=(e.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return e;if(t=0,this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw s(this);if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}function h(e,t){return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0}function m(){if(this.pos+8>this.len)throw s(this,8);return new a(h(this.buf,this.pos+=4),h(this.buf,this.pos+=4))}c.create=u(),c.prototype._slice=r.Array.prototype.subarray||r.Array.prototype.slice,c.prototype.uint32=(l=4294967295,function(){if(l=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return l;if(l=(l|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return l;if(l=(l|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return l;if(l=(l|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return l;if(l=(l|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return l;if((this.pos+=5)>this.len)throw this.pos=this.len,s(this,10);return l}),c.prototype.int32=function(){return 0|this.uint32()},c.prototype.sint32=function(){var e=this.uint32();return e>>>1^-(1&e)|0},c.prototype.bool=function(){return 0!==this.uint32()},c.prototype.fixed32=function(){if(this.pos+4>this.len)throw s(this,4);return h(this.buf,this.pos+=4)},c.prototype.sfixed32=function(){if(this.pos+4>this.len)throw s(this,4);return 0|h(this.buf,this.pos+=4)},c.prototype.float=function(){if(this.pos+4>this.len)throw s(this,4);var e=r.float.readFloatLE(this.buf,this.pos);return this.pos+=4,e},c.prototype.double=function(){if(this.pos+8>this.len)throw s(this,4);var e=r.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,e},c.prototype.bytes=function(){var e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw s(this,e);if(this.pos+=e,Array.isArray(this.buf))return this.buf.slice(t,n);if(t===n){var i=r.Buffer;return i?i.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,t,n)},c.prototype.string=function(){var e=this.bytes();return o.read(e,0,e.length)},c.prototype.skip=function(e){if("number"==typeof e){if(this.pos+e>this.len)throw s(this,e);this.pos+=e}else do{if(this.pos>=this.len)throw s(this)}while(128&this.buf[this.pos++]);return this},c.prototype.skipType=function(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;4!=(e=7&this.uint32());)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+e+" at offset "+this.pos)}return this},c._configure=function(e){i=e,c.create=u(),i._configure();var t=r.Long?"toLong":"toNumber";r.merge(c.prototype,{int64:function(){return f.call(this)[t](!1)},uint64:function(){return f.call(this)[t](!0)},sint64:function(){return f.call(this).zzDecode()[t](!1)},fixed64:function(){return m.call(this)[t](!0)},sfixed64:function(){return m.call(this)[t](!1)}})}},593:(e,t,n)=>{"use strict";e.exports=a;var i=n(1408);(a.prototype=Object.create(i.prototype)).constructor=a;var r=n(9693);function a(e){i.call(this,e)}a._configure=function(){r.Buffer&&(a.prototype._slice=r.Buffer.prototype.slice)},a.prototype.string=function(){var e=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+e,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+e,this.len))},a._configure()},5054:e=>{"use strict";e.exports={}},5994:(e,t,n)=>{"use strict";t.Service=n(7948)},7948:(e,t,n)=>{"use strict";e.exports=r;var i=n(9693);function r(e,t,n){if("function"!=typeof e)throw TypeError("rpcImpl must be a function");i.EventEmitter.call(this),this.rpcImpl=e,this.requestDelimited=Boolean(t),this.responseDelimited=Boolean(n)}(r.prototype=Object.create(i.EventEmitter.prototype)).constructor=r,r.prototype.rpcCall=function e(t,n,r,a,o){if(!a)throw TypeError("request must be specified");var s=this;if(!o)return i.asPromise(e,s,t,n,r,a);if(s.rpcImpl)try{return s.rpcImpl(t,n[s.requestDelimited?"encodeDelimited":"encode"](a).finish(),(function(e,n){if(e)return s.emit("error",e,t),o(e);if(null!==n){if(!(n instanceof r))try{n=r[s.responseDelimited?"decodeDelimited":"decode"](n)}catch(e){return s.emit("error",e,t),o(e)}return s.emit("data",n,t),o(null,n)}s.end(!0)}))}catch(e){return s.emit("error",e,t),void setTimeout((function(){o(e)}),0)}else setTimeout((function(){o(Error("already ended"))}),0)},r.prototype.end=function(e){return this.rpcImpl&&(e||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},1945:(e,t,n)=>{"use strict";e.exports=r;var i=n(9693);function r(e,t){this.lo=e>>>0,this.hi=t>>>0}var a=r.zero=new r(0,0);a.toNumber=function(){return 0},a.zzEncode=a.zzDecode=function(){return this},a.length=function(){return 1};var o=r.zeroHash="\0\0\0\0\0\0\0\0";r.fromNumber=function(e){if(0===e)return a;var t=e<0;t&&(e=-e);var n=e>>>0,i=(e-n)/4294967296>>>0;return t&&(i=~i>>>0,n=~n>>>0,++n>4294967295&&(n=0,++i>4294967295&&(i=0))),new r(n,i)},r.from=function(e){if("number"==typeof e)return r.fromNumber(e);if(i.isString(e)){if(!i.Long)return r.fromNumber(parseInt(e,10));e=i.Long.fromString(e)}return e.low||e.high?new r(e.low>>>0,e.high>>>0):a},r.prototype.toNumber=function(e){if(!e&&this.hi>>>31){var t=1+~this.lo>>>0,n=~this.hi>>>0;return t||(n=n+1>>>0),-(t+4294967296*n)}return this.lo+4294967296*this.hi},r.prototype.toLong=function(e){return i.Long?new i.Long(0|this.lo,0|this.hi,Boolean(e)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(e)}};var s=String.prototype.charCodeAt;r.fromHash=function(e){return e===o?a:new r((s.call(e,0)|s.call(e,1)<<8|s.call(e,2)<<16|s.call(e,3)<<24)>>>0,(s.call(e,4)|s.call(e,5)<<8|s.call(e,6)<<16|s.call(e,7)<<24)>>>0)},r.prototype.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},r.prototype.zzEncode=function(){var e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this},r.prototype.zzDecode=function(){var e=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this},r.prototype.length=function(){var e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return 0===n?0===t?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}},9693:function(e,t,n){"use strict";var i=t;function r(e,t,n){for(var i=Object.keys(t),r=0;r0)},i.Buffer=function(){try{var e=i.inquire("buffer").Buffer;return e.prototype.utf8Write?e:null}catch(e){return null}}(),i._Buffer_from=null,i._Buffer_allocUnsafe=null,i.newBuffer=function(e){return"number"==typeof e?i.Buffer?i._Buffer_allocUnsafe(e):new i.Array(e):i.Buffer?i._Buffer_from(e):"undefined"==typeof Uint8Array?e:new Uint8Array(e)},i.Array="undefined"!=typeof Uint8Array?Uint8Array:Array,i.Long=i.global.dcodeIO&&i.global.dcodeIO.Long||i.global.Long||i.inquire("long"),i.key2Re=/^true|false|0|1$/,i.key32Re=/^-?(?:0|[1-9][0-9]*)$/,i.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,i.longToHash=function(e){return e?i.LongBits.from(e).toHash():i.LongBits.zeroHash},i.longFromHash=function(e,t){var n=i.LongBits.fromHash(e);return i.Long?i.Long.fromBits(n.lo,n.hi,t):n.toNumber(Boolean(t))},i.merge=r,i.lcFirst=function(e){return e.charAt(0).toLowerCase()+e.substring(1)},i.newError=a,i.ProtocolError=a("ProtocolError"),i.oneOfGetter=function(e){for(var t={},n=0;n-1;--n)if(1===t[e[n]]&&void 0!==this[e[n]]&&null!==this[e[n]])return e[n]}},i.oneOfSetter=function(e){return function(t){for(var n=0;n{"use strict";e.exports=u;var i,r=n(9693),a=r.LongBits,o=r.base64,s=r.utf8;function c(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}function l(){}function d(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}function u(){this.len=0,this.head=new c(l,0,0),this.tail=this.head,this.states=null}var f=function(){return r.Buffer?function(){return(u.create=function(){return new i})()}:function(){return new u}};function h(e,t,n){t[n]=255&e}function m(e,t){this.len=e,this.next=void 0,this.val=t}function p(e,t,n){for(;e.hi;)t[n++]=127&e.lo|128,e.lo=(e.lo>>>7|e.hi<<25)>>>0,e.hi>>>=7;for(;e.lo>127;)t[n++]=127&e.lo|128,e.lo=e.lo>>>7;t[n++]=e.lo}function g(e,t,n){t[n]=255&e,t[n+1]=e>>>8&255,t[n+2]=e>>>16&255,t[n+3]=e>>>24}u.create=f(),u.alloc=function(e){return new r.Array(e)},r.Array!==Array&&(u.alloc=r.pool(u.alloc,r.Array.prototype.subarray)),u.prototype._push=function(e,t,n){return this.tail=this.tail.next=new c(e,t,n),this.len+=t,this},m.prototype=Object.create(c.prototype),m.prototype.fn=function(e,t,n){for(;e>127;)t[n++]=127&e|128,e>>>=7;t[n]=e},u.prototype.uint32=function(e){return this.len+=(this.tail=this.tail.next=new m((e>>>=0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this},u.prototype.int32=function(e){return e<0?this._push(p,10,a.fromNumber(e)):this.uint32(e)},u.prototype.sint32=function(e){return this.uint32((e<<1^e>>31)>>>0)},u.prototype.uint64=function(e){var t=a.from(e);return this._push(p,t.length(),t)},u.prototype.int64=u.prototype.uint64,u.prototype.sint64=function(e){var t=a.from(e).zzEncode();return this._push(p,t.length(),t)},u.prototype.bool=function(e){return this._push(h,1,e?1:0)},u.prototype.fixed32=function(e){return this._push(g,4,e>>>0)},u.prototype.sfixed32=u.prototype.fixed32,u.prototype.fixed64=function(e){var t=a.from(e);return this._push(g,4,t.lo)._push(g,4,t.hi)},u.prototype.sfixed64=u.prototype.fixed64,u.prototype.float=function(e){return this._push(r.float.writeFloatLE,4,e)},u.prototype.double=function(e){return this._push(r.float.writeDoubleLE,8,e)};var v=r.Array.prototype.set?function(e,t,n){t.set(e,n)}:function(e,t,n){for(var i=0;i>>0;if(!t)return this._push(h,1,0);if(r.isString(e)){var n=u.alloc(t=o.length(e));o.decode(e,n,0),e=n}return this.uint32(t)._push(v,t,e)},u.prototype.string=function(e){var t=s.length(e);return t?this.uint32(t)._push(s.write,t,e):this._push(h,1,0)},u.prototype.fork=function(){return this.states=new d(this),this.head=this.tail=new c(l,0,0),this.len=0,this},u.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new c(l,0,0),this.len=0),this},u.prototype.ldelim=function(){var e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n&&(this.tail.next=e.next,this.tail=t,this.len+=n),this},u.prototype.finish=function(){for(var e=this.head.next,t=this.constructor.alloc(this.len),n=0;e;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t},u._configure=function(e){i=e,u.create=f(),i._configure()}},3155:(e,t,n)=>{"use strict";e.exports=a;var i=n(1173);(a.prototype=Object.create(i.prototype)).constructor=a;var r=n(9693);function a(){i.call(this)}function o(e,t,n){e.length<40?r.utf8.write(e,t,n):t.utf8Write?t.utf8Write(e,n):t.write(e,n)}a._configure=function(){a.alloc=r._Buffer_allocUnsafe,a.writeBytesBuffer=r.Buffer&&r.Buffer.prototype instanceof Uint8Array&&"set"===r.Buffer.prototype.set.name?function(e,t,n){t.set(e,n)}:function(e,t,n){if(e.copy)e.copy(t,n,0,e.length);else for(var i=0;i>>0;return this.uint32(t),t&&this._push(a.writeBytesBuffer,t,e),this},a.prototype.string=function(e){var t=r.Buffer.byteLength(e);return this.uint32(t),t&&this._push(o,t,e),this},a._configure()},655:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__assign:()=>a,__asyncDelegator:()=>S,__asyncGenerator:()=>y,__asyncValues:()=>C,__await:()=>b,__awaiter:()=>d,__classPrivateFieldGet:()=>x,__classPrivateFieldSet:()=>k,__createBinding:()=>f,__decorate:()=>s,__exportStar:()=>h,__extends:()=>r,__generator:()=>u,__importDefault:()=>z,__importStar:()=>M,__makeTemplateObject:()=>w,__metadata:()=>l,__param:()=>c,__read:()=>p,__rest:()=>o,__spread:()=>g,__spreadArrays:()=>v,__values:()=>m});var i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},i(e,t)};function r(e,t){function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var a=function(){return a=Object.assign||function(e){for(var t,n=1,i=arguments.length;n=0;s--)(r=e[s])&&(o=(a<3?r(o):a>3?r(t,n,o):r(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o}function c(e,t){return function(n,i){t(n,i,e)}}function l(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function d(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((i=i.apply(e,t||[])).next())}))}function u(e,t){var n,i,r,a,o={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,i&&(r=2&a[0]?i.return:a[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,a[1])).done)return r;switch(i=0,r&&(a=[2&a[0],r.value]),a[0]){case 0:case 1:r=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,i=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!((r=(r=o.trys).length>0&&r[r.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function p(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var i,r,a=n.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(i=a.next()).done;)o.push(i.value)}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}return o}function g(){for(var e=[],t=0;t1||s(e,t)}))})}function s(e,t){try{(n=r[e](t)).value instanceof b?Promise.resolve(n.value.v).then(c,l):d(a[0][2],n)}catch(e){d(a[0][3],e)}var n}function c(e){s("next",e)}function l(e){s("throw",e)}function d(e,t){e(t),a.shift(),a.length&&s(a[0][0],a[0][1])}}function S(e){var t,n;return t={},i("next"),i("throw",(function(e){throw e})),i("return"),t[Symbol.iterator]=function(){return this},t;function i(i,r){t[i]=e[i]?function(t){return(n=!n)?{value:b(e[i](t)),done:"return"===i}:r?r(t):t}:r}}function C(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=m(e),t={},i("next"),i("throw"),i("return"),t[Symbol.asyncIterator]=function(){return this},t);function i(n){t[n]=e[n]&&function(t){return new Promise((function(i,r){!function(e,t,n,i){Promise.resolve(i).then((function(t){e({value:t,done:n})}),t)}(i,r,(t=e[n](t)).done,t.value)}))}}}function w(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function M(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function z(e){return e&&e.__esModule?e:{default:e}}function x(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)}function k(e,t,n){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,n),n}},2238:function(e,t,n){var i;!function(r,a){"use strict";var o="function",s="undefined",c="object",l="string",d="major",u="model",f="name",h="type",m="vendor",p="version",g="architecture",v="console",b="mobile",y="tablet",S="smarttv",C="wearable",w="embedded",M="Amazon",z="Apple",x="ASUS",k="BlackBerry",V="Browser",E="Chrome",H="Firefox",_="Google",L="Huawei",T="LG",A="Microsoft",I="Motorola",N="Opera",P="Samsung",O="Sharp",R="Sony",D="Xiaomi",F="Zebra",B="Facebook",U="Chromium OS",j="Mac OS",W=function(e){for(var t={},n=0;n0?2===s.length?typeof s[1]==o?this[s[0]]=s[1].call(this,d):this[s[0]]=s[1]:3===s.length?typeof s[1]!==o||s[1].exec&&s[1].test?this[s[0]]=d?d.replace(s[1],s[2]):a:this[s[0]]=d?s[1].call(this,d,s[2]):a:4===s.length&&(this[s[0]]=d?s[3].call(this,d.replace(s[1],s[2])):a):this[s]=d||a;u+=2}},J=function(e,t){for(var n in t)if(typeof t[n]===c&&t[n].length>0){for(var i=0;i2&&(e[u]="iPad",e[h]=y),e},this.getEngine=function(){var e={};return e[f]=a,e[p]=a,K.call(e,i,S.engine),e},this.getOS=function(){var e={};return e[f]=a,e[p]=a,K.call(e,i,S.os),C&&!e[f]&&v&&"Unknown"!=v.platform&&(e[f]=v.platform.replace(/chrome os/i,U).replace(/macos/i,j)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return i},this.setUA=function(e){return i=typeof e===l&&e.length>500?G(e,500):e,this},this.setUA(i),this};Y.VERSION="1.0.37",Y.BROWSER=W([f,p,d]),Y.CPU=W([g]),Y.DEVICE=W([u,m,h,v,b,S,y,C,w]),Y.ENGINE=Y.OS=W([f,p]),typeof t!==s?(e.exports&&(t=e.exports=Y),t.UAParser=Y):n.amdO?(i=function(){return Y}.call(t,n,t,e))===a||(e.exports=i):typeof r!==s&&(r.UAParser=Y);var X=typeof r!==s&&(r.jQuery||r.Zepto);if(X&&!X.ua){var ee=new Y;X.ua=ee.getResult(),X.ua.get=function(){return ee.getUA()},X.ua.set=function(e){ee.setUA(e);var t=ee.getResult();for(var n in t)X.ua[n]=t[n]}}}("object"==typeof window?window:this)},8156:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__8156__}},__webpack_module_cache__={};function __nested_webpack_require_1209539__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(n.exports,n,n.exports,__nested_webpack_require_1209539__),n.exports}__nested_webpack_require_1209539__.amdO={},__nested_webpack_require_1209539__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __nested_webpack_require_1209539__.d(t,{a:t}),t},__nested_webpack_require_1209539__.d=(e,t)=>{for(var n in t)__nested_webpack_require_1209539__.o(t,n)&&!__nested_webpack_require_1209539__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__nested_webpack_require_1209539__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__nested_webpack_require_1209539__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__nested_webpack_require_1209539__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __nested_webpack_exports__={};return(()=>{"use strict";__nested_webpack_require_1209539__.r(__nested_webpack_exports__),__nested_webpack_require_1209539__.d(__nested_webpack_exports__,{DefaultClientSettng:()=>m,DefaultServerSetting:()=>l,DiffMethod:()=>o,DownSamplingMode:()=>f,F0Detector:()=>a,INDEXEDDB_DB_APP_NAME:()=>g,INDEXEDDB_DB_NAME:()=>v,INDEXEDDB_KEY_CLIENT:()=>b,INDEXEDDB_KEY_MODEL_DATA:()=>S,INDEXEDDB_KEY_SERVER:()=>y,InputSampleRate:()=>i,ModelAssetName:()=>$n,ModelFileKind:()=>Gn,ModelLoadException:()=>C,ModelSamplingRate:()=>r,Protocol:()=>d,RVCModelType:()=>s,SampleRate:()=>h,SendingSampleRate:()=>u,ServerSettingKey:()=>c,VOICE_CHANGER_CLIENT_EXCEPTION:()=>p,VoiceChangerClient:()=>Bn,VoiceChangerType:()=>n,createDummyMediaStream:()=>Nn,fileSelector:()=>Pn,fileSelectorAsDataURL:()=>On,useClient:()=>Jn,useIndexedDB:()=>qn,useServerSetting:()=>Kn,validateUrl:()=>Rn});var e={};__nested_webpack_require_1209539__.r(e),__nested_webpack_require_1209539__.d(e,{Decoder:()=>Ie,Encoder:()=>Te,PacketType:()=>Le,protocol:()=>_e});var t={};__nested_webpack_require_1209539__.r(t),__nested_webpack_require_1209539__.d(t,{Decoder:()=>Tn,Encoder:()=>Ln,PacketType:()=>Vn,protocol:()=>kn});const n={RVC:"RVC"},i={48e3:48e3,44100:44100,24e3:24e3},r={48e3:48e3,4e4:4e4,32e3:32e3},a={dio:"dio",harvest:"harvest",crepe_full:"crepe_full",crepe_tiny:"crepe_tiny",crepe_full_onnx:"crepe_full_onnx",crepe_tiny_onnx:"crepe_tiny_onnx",rmvpe:"rmvpe",rmvpe_onnx:"rmvpe_onnx",fcpe:"fcpe",fcpe_onnx:"fcpe_onnx"},o={pndm:"pndm","dpm-solver":"dpm-solver"},s={pyTorchRVC:"pyTorchRVC",pyTorchRVCNono:"pyTorchRVCNono",pyTorchRVCv2:"pyTorchRVCv2",pyTorchRVCv2Nono:"pyTorchRVCv2Nono",pyTorchWebUI:"pyTorchWebUI",pyTorchWebUINono:"pyTorchWebUINono",onnxRVC:"onnxRVC",onnxRVCNono:"onnxRVCNono"},c={passThrough:"passThrough",srcId:"srcId",dstId:"dstId",gpu:"gpu",crossFadeOverlapSize:"crossFadeOverlapSize",framework:"framework",onnxExecutionProvider:"onnxExecutionProvider",f0Factor:"f0Factor",f0Detector:"f0Detector",recordIO:"recordIO",enableServerAudio:"enableServerAudio",serverAudioStated:"serverAudioStated",serverAudioSampleRate:"serverAudioSampleRate",serverInputAudioSampleRate:"serverInputAudioSampleRate",serverOutputAudioSampleRate:"serverOutputAudioSampleRate",serverMonitorAudioSampleRate:"serverMonitorAudioSampleRate",serverInputAudioBufferSize:"serverInputAudioBufferSize",serverOutputAudioBufferSize:"serverOutputAudioBufferSize",serverInputDeviceId:"serverInputDeviceId",serverOutputDeviceId:"serverOutputDeviceId",serverMonitorDeviceId:"serverMonitorDeviceId",serverReadChunkSize:"serverReadChunkSize",serverInputAudioGain:"serverInputAudioGain",serverOutputAudioGain:"serverOutputAudioGain",serverMonitorAudioGain:"serverMonitorAudioGain",tran:"tran",formantShift:"formantShift",silentThreshold:"silentThreshold",extraConvertSize:"extraConvertSize",indexRatio:"indexRatio",protect:"protect",forceFp32:"forceFp32",modelSamplingRate:"modelSamplingRate",silenceFront:"silenceFront",modelSlotIndex:"modelSlotIndex",inputSampleRate:"inputSampleRate"},l={passThrough:!1,inputSampleRate:48e3,crossFadeOverlapSize:.1,recordIO:0,enableServerAudio:0,serverAudioStated:0,serverAudioSampleRate:48e3,serverInputAudioSampleRate:48e3,serverOutputAudioSampleRate:48e3,serverMonitorAudioSampleRate:48e3,serverInputAudioBufferSize:24576,serverOutputAudioBufferSize:24576,serverInputDeviceId:-1,serverOutputDeviceId:-1,serverMonitorDeviceId:-1,serverReadChunkSize:192,serverInputAudioGain:1,serverOutputAudioGain:1,serverMonitorAudioGain:1,srcId:0,dstId:1,gpu:0,f0Factor:1,f0Detector:a.rmvpe_onnx,tran:0,formantShift:0,silentThreshold:0,extraConvertSize:0,indexRatio:0,protect:.5,modelSamplingRate:48e3,silenceFront:1,forceFp32:0,modelSlotIndex:0,sampleModels:[],gpus:[],status:"ok",modelSlots:[],serverAudioInputDevices:[],serverAudioOutputDevices:[],maxInputLength:262144,voiceChangerParams:{model_dir:""}},d={sio:"sio",rest:"rest"},u={48e3:48e3,44100:44100,24e3:24e3},f={decimate:"decimate",average:"average"},h={48e3:48e3},m={workletSetting:{},workletNodeSetting:{serverUrl:"",protocol:"sio",sendingSampleRate:48e3,inputChunkNum:192,downSamplingMode:"average"},voiceChangerClientSetting:{audioInput:null,sampleRate:48e3,echoCancel:!1,noiseSuppression:!1,noiseSuppression2:!1,inputGain:1,outputGain:1,monitorGain:1,passThroughConfirmationSkip:!1}},p={ERR_SIO_CONNECT_FAILED:"ERR_SIO_CONNECT_FAILED",ERR_SIO_INVALID_RESPONSE:"ERR_SIO_INVALID_RESPONSE",ERR_REST_INVALID_RESPONSE:"ERR_REST_INVALID_RESPONSE",ERR_MIC_STREAM_NOT_INITIALIZED:"ERR_MIC_STREAM_NOT_INITIALIZED",ERR_INTERNAL_AUDIO_PROCESS_CALLBACK_IS_NOT_INITIALIZED:"ERR_INTERNAL_AUDIO_PROCESS_CALLBACK_IS_NOT_INITIALIZED",ERR_GENERIC_VOICE_CHANGER_EXCEPTION:"ERR_GENERIC_VOICE_CHANGER_EXCEPTION"},g="INDEXEDDB_KEY_VOICE_CHANGER",v="INDEXEDDB_KEY_VOICE_CHANGER_DB",b="INDEXEDDB_KEY_VOICE_CHANGER_LIB_CLIENT",y="INDEXEDDB_KEY_VOICE_CHANGER_LIB_SERVER",S="INDEXEDDB_KEY_VOICE_CHANGER_LIB_MODEL_DATA";class C extends Error{constructor(e){super(`Model Load Exception:${e}`),this.causeFileType="",this.causeFileType=e,this.name=this.constructor.name,Error.captureStackTrace(this)}}const w=Object.create(null);w.open="0",w.close="1",w.ping="2",w.pong="3",w.message="4",w.upgrade="5",w.noop="6";const M=Object.create(null);Object.keys(w).forEach((e=>{M[w[e]]=e}));const z={type:"error",data:"parser error"},x="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),k="function"==typeof ArrayBuffer,V=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,E=({type:e,data:t},n,i)=>x&&t instanceof Blob?n?i(t):H(t,i):k&&(t instanceof ArrayBuffer||V(t))?n?i(t):H(new Blob([t]),i):i(w[e]+(t||"")),H=(e,t)=>{const n=new FileReader;return n.onload=function(){const e=n.result.split(",")[1];t("b"+(e||""))},n.readAsDataURL(e)};function _(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let L;const T="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)T["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(e)]=e;const A="function"==typeof ArrayBuffer,I=(e,t)=>{if("string"!=typeof e)return{type:"message",data:P(e,t)};const n=e.charAt(0);return"b"===n?{type:"message",data:N(e.substring(1),t)}:M[n]?e.length>1?{type:M[n],data:e.substring(1)}:{type:M[n]}:z},N=(e,t)=>{if(A){const n=(e=>{let t,n,i,r,a,o=.75*e.length,s=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);const l=new ArrayBuffer(o),d=new Uint8Array(l);for(t=0;t>4,d[c++]=(15&i)<<4|r>>2,d[c++]=(3&r)<<6|63&a;return l})(e);return P(n,t)}return{base64:!0,data:e}},P=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,O=String.fromCharCode(30);let R;function D(e){return e.reduce(((e,t)=>e+t.length),0)}function F(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let i=0;for(let r=0;r(e.hasOwnProperty(n)&&(t[n]=e[n]),t)),{})}const W=U.setTimeout,q=U.clearTimeout;function $(e,t){t.useNativeTimers?(e.setTimeoutFn=W.bind(U),e.clearTimeoutFn=q.bind(U)):(e.setTimeoutFn=U.setTimeout.bind(U),e.clearTimeoutFn=U.clearTimeout.bind(U))}class G extends Error{constructor(e,t,n){super(e),this.description=t,this.context=n,this.type="TransportError"}}class K extends B{constructor(e){super(),this.writable=!1,$(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,n){return super.emitReserved("error",new G(e,t,n)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=I(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}(e);return t.length?"?"+t:""}}const J="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),Z=64,Q={};let Y,X=0,ee=0;function te(e){let t="";do{t=J[e%Z]+t,e=Math.floor(e/Z)}while(e>0);return t}function ne(){const e=te(+new Date);return e!==Y?(X=0,Y=e):e+"."+te(X++)}for(;ee{var e;3===n.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(n)),4===n.readyState&&(200===n.status||1223===n.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof n.status?n.status:0)}),0))},n.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=ce.requestsCount++,ce.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=oe,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete ce.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}function le(){for(let e in ce.requests)ce.requests.hasOwnProperty(e)&&ce.requests[e].abort()}ce.requestsCount=0,ce.requests={},"undefined"!=typeof document&&("function"==typeof attachEvent?attachEvent("onunload",le):"function"==typeof addEventListener&&addEventListener("onpagehide"in U?"pagehide":"unload",le,!1));const de="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),ue=U.WebSocket||U.MozWebSocket;__nested_webpack_require_1209539__(8764).lW;const fe="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),he={websocket:class extends K{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,n=fe?{}:j(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=fe?new ue(e,t,n):t?new ue(e,t):new ue(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t{try{this.ws.send(e)}catch(e){}i&&de((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=ne()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!ue}},webtransport:class extends K{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){R||(R=new TextDecoder);const n=[];let i=0,r=-1,a=!1;return new TransformStream({transform(o,s){for(n.push(o);;){if(0===i){if(D(n)<1)break;const e=F(n,1);a=128==(128&e[0]),r=127&e[0],i=r<126?3:126===r?1:2}else if(1===i){if(D(n)<2)break;const e=F(n,2);r=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),i=3}else if(2===i){if(D(n)<8)break;const e=F(n,8),t=new DataView(e.buffer,e.byteOffset,e.length),a=t.getUint32(0);if(a>Math.pow(2,21)-1){s.enqueue(z);break}r=a*Math.pow(2,32)+t.getUint32(4),i=3}else{if(D(n)e){s.enqueue(z);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),n=e.readable.pipeThrough(t).getReader(),i=new TransformStream({transform(e,t){!function(e,t){x&&e.data instanceof Blob?e.data.arrayBuffer().then(_).then(t):k&&(e.data instanceof ArrayBuffer||V(e.data))?t(_(e.data)):E(e,!1,(e=>{L||(L=new TextEncoder),t(L.encode(e))}))}(e,(n=>{const i=n.length;let r;if(i<126)r=new Uint8Array(1),new DataView(r.buffer).setUint8(0,i);else if(i<65536){r=new Uint8Array(3);const e=new DataView(r.buffer);e.setUint8(0,126),e.setUint16(1,i)}else{r=new Uint8Array(9);const e=new DataView(r.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(i))}e.data&&"string"!=typeof e.data&&(r[0]|=128),t.enqueue(r),t.enqueue(n)}))}});i.readable.pipeTo(e.writable),this.writer=i.writable.getWriter();const r=()=>{n.read().then((({done:e,value:t})=>{e||(this.onPacket(t),r())})).catch((e=>{}))};r();const a={type:"open"};this.query.sid&&(a.data=`{"sid":"${this.query.sid}"}`),this.writer.write(a).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t{i&&de((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends K{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let n=location.port;n||(n=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||n!==e.port}const t=e&&e.forceBase64;this.supportsBinary=se&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const n=e.split(O),i=[];for(let e=0;e{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const n=e.length,i=new Array(n);let r=0;e.forEach(((e,a)=>{E(e,!1,(e=>{i[a]=e,++r===n&&t(i.join(O))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=ne()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new ce(this.uri(),e)}doWrite(e,t){const n=this.request({method:"POST",data:e});n.on("success",t),n.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},me=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,pe=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function ge(e){if(e.length>2e3)throw"URI too long";const t=e,n=e.indexOf("["),i=e.indexOf("]");-1!=n&&-1!=i&&(e=e.substring(0,n)+e.substring(n,i).replace(/:/g,";")+e.substring(i,e.length));let r=me.exec(e||""),a={},o=14;for(;o--;)a[pe[o]]=r[o]||"";return-1!=n&&-1!=i&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(e,t){const n=t.replace(/\/{2,9}/g,"/").split("/");return"/"!=t.slice(0,1)&&0!==t.length||n.splice(0,1),"/"==t.slice(-1)&&n.splice(n.length-1,1),n}(0,a.path),a.queryKey=function(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,i){t&&(n[t]=i)})),n}(0,a.query),a}class ve extends B{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=ge(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=ge(t.host).host),$(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},n=e.split("&");for(let e=0,i=n.length;e{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const n=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new he[e](n)}open(){let e;if(this.opts.rememberUpgrade&&ve.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(e=>this.onClose("transport close",e)))}probe(e){let t=this.createTransport(e),n=!1;ve.priorWebsocketSuccess=!1;const i=()=>{n||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!n)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;ve.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{n||"closed"!==this.readyState&&(l(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function r(){n||(n=!0,l(),t.close(),t=null)}const a=e=>{const n=new Error("probe error: "+e);n.transport=t.name,r(),this.emitReserved("upgradeError",n)};function o(){a("transport closed")}function s(){a("socket closed")}function c(e){t&&e.name!==t.name&&r()}const l=()=>{t.removeListener("open",i),t.removeListener("error",a),t.removeListener("close",o),this.off("close",s),this.off("upgrading",c)};t.once("open",i),t.once("error",a),t.once("close",o),this.once("close",s),this.once("upgrading",c),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==e?this.setTimeoutFn((()=>{n||t.open()}),200):t.open()}onOpen(){if(this.readyState="open",ve.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let e=0;const t=this.upgrades.length;for(;e{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let n=0;n=57344?n+=3:(i++,n+=4);return n}(t):Math.ceil(1.33*(t.byteLength||t.size))),n>0&&e>this.maxPayload)return this.writeBuffer.slice(0,n);e+=2}var t;return this.writeBuffer}write(e,t,n){return this.sendPacket("message",e,t,n),this}send(e,t,n){return this.sendPacket("message",e,t,n),this}sendPacket(e,t,n,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof n&&(i=n,n=null),"closing"===this.readyState||"closed"===this.readyState)return;(n=n||{}).compress=!1!==n.compress;const r={type:e,data:t,options:n};this.emitReserved("packetCreate",r),this.writeBuffer.push(r),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},n=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?n():e()})):this.upgrading?n():e()),this}onError(e){ve.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let n=0;const i=e.length;for(;n"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,Se=Object.prototype.toString,Ce="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Se.call(Blob),we="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Se.call(File);function Me(e){return be&&(e instanceof ArrayBuffer||ye(e))||Ce&&e instanceof Blob||we&&e instanceof File}function ze(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,n=e.length;t=0&&e.num{delete this.acks[e];for(let t=0;t{this.io.clearTimeoutFn(r),t.apply(this,[null,...e])}}emitWithAck(e,...t){const n=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((i,r)=>{t.push(((e,t)=>n?e?r(e):i(t):i(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const n={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...i)=>{if(n===this._queue[0])return null!==e?n.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...i)),n.pending=!1,this._drainQueue()})),this._queue.push(n),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:Le.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Le.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Le.EVENT:case Le.BINARY_EVENT:this.onevent(e);break;case Le.ACK:case Le.BINARY_ACK:this.onack(e);break;case Le.DISCONNECT:this.ondisconnect();break;case Le.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const n of t)n.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let n=!1;return function(...i){n||(n=!0,t.packet({type:Le.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Le.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let n=0;n0&&e.jitter<=1?e.jitter:0,this.attempts=0}De.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-n:e+n}return 0|Math.min(e,this.max)},De.prototype.reset=function(){this.attempts=0},De.prototype.setMin=function(e){this.ms=e},De.prototype.setMax=function(e){this.max=e},De.prototype.setJitter=function(e){this.jitter=e};class Fe extends B{constructor(t,n){var i;super(),this.nsps={},this.subs=[],t&&"object"==typeof t&&(n=t,t=void 0),(n=n||{}).path=n.path||"/socket.io",this.opts=n,$(this,n),this.reconnection(!1!==n.reconnection),this.reconnectionAttempts(n.reconnectionAttempts||1/0),this.reconnectionDelay(n.reconnectionDelay||1e3),this.reconnectionDelayMax(n.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(i=n.randomizationFactor)&&void 0!==i?i:.5),this.backoff=new De({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==n.timeout?2e4:n.timeout),this._readyState="closed",this.uri=t;const r=n.parser||e;this.encoder=new r.Encoder,this.decoder=new r.Decoder,this._autoConnect=!1!==n.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new ve(this.uri,this.opts);const t=this.engine,n=this;this._readyState="opening",this.skipReconnect=!1;const i=Pe(t,"open",(function(){n.onopen(),e&&e()})),r=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},a=Pe(t,"error",r);if(!1!==this._timeout){const e=this._timeout,n=this.setTimeoutFn((()=>{i(),r(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&n.unref(),this.subs.push((()=>{this.clearTimeoutFn(n)}))}return this.subs.push(i),this.subs.push(a),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(Pe(e,"ping",this.onping.bind(this)),Pe(e,"data",this.ondata.bind(this)),Pe(e,"error",this.onerror.bind(this)),Pe(e,"close",this.onclose.bind(this)),Pe(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){de((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let n=this.nsps[e];return n?this._autoConnect&&!n.active&&n.connect():(n=new Re(this,e,t),this.nsps[e]=n),n}_destroy(e){const t=Object.keys(this.nsps);for(const e of t)if(this.nsps[e].active)return;this._close()}_packet(e){const t=this.encoder.encode(e);for(let n=0;ne())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const n=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&n.unref(),this.subs.push((()=>{this.clearTimeoutFn(n)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Be={};function Ue(e,t){"object"==typeof e&&(t=e,e=void 0);const n=function(e,t="",n){let i=e;n=n||"undefined"!=typeof location&&location,null==e&&(e=n.protocol+"//"+n.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?n.protocol+e:n.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==n?n.protocol+"//"+e:"https://"+e),i=ge(e)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";const r=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+r+":"+i.port+t,i.href=i.protocol+"://"+r+(n&&n.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=n.source,r=n.id,a=n.path,o=Be[r]&&a in Be[r].nsps;let s;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?s=new Fe(i,t):(Be[r]||(Be[r]=new Fe(i,t)),s=Be[r]),n.query&&!t.query&&(t.query=n.queryKey),s.socket(n.path,t)}Object.assign(Ue,{Manager:Fe,Socket:Re,io:Ue,connect:Ue});var je,We,qe,$e=__nested_webpack_require_1209539__(8764).lW;try{je=new TextDecoder}catch(e){}var Ge=0;const Ke=[];var Je,Ze,Qe,Ye,Xe,et=Ke,tt=0,nt={},it=0,rt=0,at=[],ot={useRecords:!1,mapsAsObjects:!0};class st{}const ct=new st;ct.name="MessagePack 0xC1";var lt,dt=!1,ut=2;try{new Function("")}catch(e){ut=1/0}class ft{constructor(e){e&&(!1===e.useRecords&&void 0===e.mapsAsObjects&&(e.mapsAsObjects=!0),e.sequential&&!1!==e.trusted&&(e.trusted=!0,e.structures||0==e.useRecords||(e.structures=[],e.maxSharedStructures||(e.maxSharedStructures=0))),e.structures?e.structures.sharedLength=e.structures.length:e.getStructures&&((e.structures=[]).uninitialized=!0,e.structures.sharedLength=0),e.int64AsNumber&&(e.int64AsType="number")),Object.assign(this,e)}unpack(e,t){if(We)return Bt((()=>(Ut(),this?this.unpack(e,t):ft.prototype.unpack.call(ot,e,t))));e.buffer||e.constructor!==ArrayBuffer||(e=void 0!==$e?$e.from(e):new Uint8Array(e)),"object"==typeof t?(qe=t.end||e.length,Ge=t.start||0):(Ge=0,qe=t>-1?t:e.length),tt=0,rt=0,Ze=null,et=Ke,Qe=null,We=e;try{Xe=e.dataView||(e.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength))}catch(t){if(We=null,e instanceof Uint8Array)throw t;throw new Error("Source must be a Uint8Array or Buffer but was a "+(e&&"object"==typeof e?e.constructor.name:typeof e))}if(this instanceof ft){if(nt=this,this.structures)return Je=this.structures,ht(t);(!Je||Je.length>0)&&(Je=[])}else nt=ot,(!Je||Je.length>0)&&(Je=[]);return ht(t)}unpackMultiple(e,t){let n,i=0;try{dt=!0;let r=e.length,a=this?this.unpack(e,r):Wt.unpack(e,r);if(!t){for(n=[a];Gee.slice(0))));for(let t=0,n=e.length;t=32&&(n.highByte=t-32>>5))}e.sharedLength=e.length;for(let n in t||[])if(n>=0){let i=e[n],r=t[n];r&&(i&&((e.restoreStructures||(e.restoreStructures=[]))[n]=i),e[n]=r)}return this.structures=e}decode(e,t){return this.unpack(e,t)}}function ht(e){try{if(!nt.trusted&&!dt){let e=Je.sharedLength||0;eqe)throw new Error("Unexpected end of MessagePack data");if(!dt){let n;try{n=JSON.stringify(t,((e,t)=>"bigint"==typeof t?`${t}n`:t)).slice(0,100)}catch(e){n="(JSON view not available "+e+")"}throw new Error("Data read, but end of buffer not reached "+n)}}return t}catch(e){throw Je&&Je.restoreStructures&&mt(),Ut(),(e instanceof RangeError||e.message.startsWith("Unexpected end of buffer")||Ge>qe)&&(e.incomplete=!0),e}}function mt(){for(let e in Je.restoreStructures)Je[e]=Je.restoreStructures[e];Je.restoreStructures=null}function pt(){let e=We[Ge++];if(e<160){if(e<128){if(e<64)return e;{let t=Je[63&e]||nt.getStructures&&yt()[63&e];return t?(t.read||(t.read=vt(t,63&e)),t.read()):e}}if(e<144){if(e-=128,nt.mapsAsObjects){let t={};for(let n=0;n=Ge)return Ze.slice(Ge-it,(Ge+=t)-it);if(0==rt&&qe<140){let e=t<16?Ht(t):Et(t);if(null!=e)return e}return St(t)}{let t;switch(e){case 192:return null;case 193:return Qe?(t=pt(),t>0?Qe[1].slice(Qe.position1,Qe.position1+=t):Qe[0].slice(Qe.position0,Qe.position0-=t)):ct;case 194:return!1;case 195:return!0;case 196:if(t=We[Ge++],void 0===t)throw new Error("Unexpected end of buffer");return Lt(t);case 197:return t=Xe.getUint16(Ge),Ge+=2,Lt(t);case 198:return t=Xe.getUint32(Ge),Ge+=4,Lt(t);case 199:return Tt(We[Ge++]);case 200:return t=Xe.getUint16(Ge),Ge+=2,Tt(t);case 201:return t=Xe.getUint32(Ge),Ge+=4,Tt(t);case 202:if(t=Xe.getFloat32(Ge),nt.useFloat32>2){let e=jt[(127&We[Ge])<<1|We[Ge+1]>>7];return Ge+=4,(e*t+(t>0?.5:-.5)>>0)/e}return Ge+=4,t;case 203:return t=Xe.getFloat64(Ge),Ge+=8,t;case 204:return We[Ge++];case 205:return t=Xe.getUint16(Ge),Ge+=2,t;case 206:return t=Xe.getUint32(Ge),Ge+=4,t;case 207:return"number"===nt.int64AsType?(t=4294967296*Xe.getUint32(Ge),t+=Xe.getUint32(Ge+4)):"string"===nt.int64AsType?t=Xe.getBigUint64(Ge).toString():"auto"===nt.int64AsType?(t=Xe.getBigUint64(Ge),t<=BigInt(2)<=BigInt(-2)<=Ge?Ze.slice(Ge-it,(Ge+=t)-it):Ct(t);case 218:return t=Xe.getUint16(Ge),rt>=(Ge+=2)?Ze.slice(Ge-it,(Ge+=t)-it):wt(t);case 219:return t=Xe.getUint32(Ge),rt>=(Ge+=4)?Ze.slice(Ge-it,(Ge+=t)-it):Mt(t);case 220:return t=Xe.getUint16(Ge),Ge+=2,xt(t);case 221:return t=Xe.getUint32(Ge),Ge+=4,xt(t);case 222:return t=Xe.getUint16(Ge),Ge+=2,kt(t);case 223:return t=Xe.getUint32(Ge),Ge+=4,kt(t);default:if(e>=224)return e-256;if(void 0===e){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+e)}}}const gt=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function vt(e,t){function n(){if(n.count++>ut){let n=e.read=new Function("r","return function(){return "+(nt.freezeData?"Object.freeze":"")+"({"+e.map((e=>"__proto__"===e?"__proto_:r()":gt.test(e)?e+":r()":"["+JSON.stringify(e)+"]:r()")).join(",")+"})}")(pt);return 0===e.highByte&&(e.read=bt(t,e.read)),n()}let i={};for(let t=0,n=e.length;tfunction(){let n=We[Ge++];if(0===n)return t();let i=e<32?-(e+(n<<5)):e+(n<<5),r=Je[i]||yt()[i];if(!r)throw new Error("Record id is not defined for "+i);return r.read||(r.read=vt(r,e)),r.read()};function yt(){let e=Bt((()=>(We=null,nt.getStructures())));return Je=nt._mergeStructures(e,Je)}var St=zt,Ct=zt,wt=zt,Mt=zt;function zt(e){let t;if(e<16&&(t=Ht(e)))return t;if(e>64&&je)return je.decode(We.subarray(Ge,Ge+=e));const n=Ge+e,i=[];for(t="";Ge65535&&(t-=65536,i.push(t>>>10&1023|55296),t=56320|1023&t),i.push(t)}else i.push(e);i.length>=4096&&(t+=Vt.apply(String,i),i.length=0)}return i.length>0&&(t+=Vt.apply(String,i)),t}function xt(e){let t=new Array(e);for(let n=0;n0)return void(Ge=t);n[i]=e}return Vt.apply(String,n)}function Ht(e){if(e<4){if(e<2){if(0===e)return"";{let e=We[Ge++];return(128&e)>1?void(Ge-=1):Vt(e)}}{let t=We[Ge++],n=We[Ge++];if((128&t)>0||(128&n)>0)return void(Ge-=2);if(e<3)return Vt(t,n);let i=We[Ge++];return(128&i)>0?void(Ge-=3):Vt(t,n,i)}}{let t=We[Ge++],n=We[Ge++],i=We[Ge++],r=We[Ge++];if((128&t)>0||(128&n)>0||(128&i)>0||(128&r)>0)return void(Ge-=4);if(e<6){if(4===e)return Vt(t,n,i,r);{let e=We[Ge++];return(128&e)>0?void(Ge-=5):Vt(t,n,i,r,e)}}if(e<8){let a=We[Ge++],o=We[Ge++];if((128&a)>0||(128&o)>0)return void(Ge-=6);if(e<7)return Vt(t,n,i,r,a,o);let s=We[Ge++];return(128&s)>0?void(Ge-=7):Vt(t,n,i,r,a,o,s)}{let a=We[Ge++],o=We[Ge++],s=We[Ge++],c=We[Ge++];if((128&a)>0||(128&o)>0||(128&s)>0||(128&c)>0)return void(Ge-=8);if(e<10){if(8===e)return Vt(t,n,i,r,a,o,s,c);{let e=We[Ge++];return(128&e)>0?void(Ge-=9):Vt(t,n,i,r,a,o,s,c,e)}}if(e<12){let l=We[Ge++],d=We[Ge++];if((128&l)>0||(128&d)>0)return void(Ge-=10);if(e<11)return Vt(t,n,i,r,a,o,s,c,l,d);let u=We[Ge++];return(128&u)>0?void(Ge-=11):Vt(t,n,i,r,a,o,s,c,l,d,u)}{let l=We[Ge++],d=We[Ge++],u=We[Ge++],f=We[Ge++];if((128&l)>0||(128&d)>0||(128&u)>0||(128&f)>0)return void(Ge-=12);if(e<14){if(12===e)return Vt(t,n,i,r,a,o,s,c,l,d,u,f);{let e=We[Ge++];return(128&e)>0?void(Ge-=13):Vt(t,n,i,r,a,o,s,c,l,d,u,f,e)}}{let h=We[Ge++],m=We[Ge++];if((128&h)>0||(128&m)>0)return void(Ge-=14);if(e<15)return Vt(t,n,i,r,a,o,s,c,l,d,u,f,h,m);let p=We[Ge++];return(128&p)>0?void(Ge-=15):Vt(t,n,i,r,a,o,s,c,l,d,u,f,h,m,p)}}}}}function _t(){let e,t=We[Ge++];if(t<192)e=t-160;else switch(t){case 217:e=We[Ge++];break;case 218:e=Xe.getUint16(Ge),Ge+=2;break;case 219:e=Xe.getUint32(Ge),Ge+=4;break;default:throw new Error("Expected string")}return zt(e)}function Lt(e){return nt.copyBuffers?Uint8Array.prototype.slice.call(We,Ge,Ge+=e):We.subarray(Ge,Ge+=e)}function Tt(e){let t=We[Ge++];if(at[t]){let n;return at[t](We.subarray(Ge,n=Ge+=e),(e=>{Ge=e;try{return pt()}finally{Ge=n}}))}throw new Error("Unknown extension type "+t)}var At=new Array(4096);function It(){let e=We[Ge++];if(!(e>=160&&e<192))return Ge--,Nt(pt());if(e-=160,rt>=Ge)return Ze.slice(Ge-it,(Ge+=e)-it);if(!(0==rt&&qe<180))return St(e);let t,n=4095&(e<<5^(e>1?Xe.getUint16(Ge):e>0?We[Ge]:0)),i=At[n],r=Ge,a=Ge+e-3,o=0;if(i&&i.bytes==e){for(;r{let n=pt().map(Nt),i=e;void 0!==t&&(e=e<32?-((t<<5)+e):(t<<5)+e,n.highByte=t);let r=Je[e];return r&&(r.isShared||dt)&&((Je.restoreStructures||(Je.restoreStructures=[]))[e]=r),Je[e]=n,n.read=vt(n,i),n.read()};at[0]=()=>{},at[0].noBuffer=!0,at[66]=e=>{let t=e.length,n=BigInt(128&e[0]?e[0]-256:e[0]);for(let i=1;i{let e=pt();return(Ot[e[0]]||Error)(e[1],{cause:e[2]})},at[105]=e=>{if(!1===nt.structuredClone)throw new Error("Structured clone extension is disabled");let t=Xe.getUint32(Ge-4);Ye||(Ye=new Map);let n,i=We[Ge];n=i>=144&&i<160||220==i||221==i?[]:{};let r={target:n};Ye.set(t,r);let a=pt();return r.used?Object.assign(n,a):(r.target=a,a)},at[112]=e=>{if(!1===nt.structuredClone)throw new Error("Structured clone extension is disabled");let t=Xe.getUint32(Ge-4),n=Ye.get(t);return n.used=!0,n.target},at[115]=()=>new Set(pt());const Rt=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map((e=>e+"Array"));let Dt="object"==typeof globalThis?globalThis:window;at[116]=e=>{let t=e[0],n=Rt[t];if(!n){if(16===t){let t=new ArrayBuffer(e.length-1);return new Uint8Array(t).set(e.subarray(1)),t}throw new Error("Could not find typed array for code "+t)}return new Dt[n](Uint8Array.prototype.slice.call(e,1).buffer)},at[120]=()=>{let e=pt();return new RegExp(e[0],e[1])};const Ft=[];function Bt(e){lt&<();let t=qe,n=Ge,i=tt,r=it,a=rt,o=Ze,s=et,c=Ye,l=Qe,d=new Uint8Array(We.slice(0,qe)),u=Je,f=Je.slice(0,Je.length),h=nt,m=dt,p=e();return qe=t,Ge=n,tt=i,it=r,rt=a,Ze=o,et=s,Ye=c,Qe=l,We=d,dt=m,(Je=u).splice(0,Je.length,...f),nt=h,Xe=new DataView(We.buffer,We.byteOffset,We.byteLength),p}function Ut(){We=null,Ye=null,Je=null}at[98]=e=>{let t=(e[0]<<24)+(e[1]<<16)+(e[2]<<8)+e[3],n=Ge;return Ge+=t-e.length,Qe=Ft,(Qe=[_t(),_t()]).position0=0,Qe.position1=0,Qe.postBundlePosition=Ge,Ge=n,pt()},at[255]=e=>4==e.length?new Date(1e3*(16777216*e[0]+(e[1]<<16)+(e[2]<<8)+e[3])):8==e.length?new Date(((e[0]<<22)+(e[1]<<14)+(e[2]<<6)+(e[3]>>2))/1e6+1e3*(4294967296*(3&e[3])+16777216*e[4]+(e[5]<<16)+(e[6]<<8)+e[7])):12==e.length?new Date(((e[0]<<24)+(e[1]<<16)+(e[2]<<8)+e[3])/1e6+1e3*((128&e[4]?-281474976710656:0)+1099511627776*e[6]+4294967296*e[7]+16777216*e[8]+(e[9]<<16)+(e[10]<<8)+e[11])):new Date("invalid");const jt=new Array(147);for(let e=0;e<256;e++)jt[e]=+("1e"+Math.floor(45.15-.30103*e));var Wt=new ft({useRecords:!1});const qt=Wt.unpack;Wt.unpackMultiple,Wt.unpack;let $t=new Float32Array(1);new Uint8Array($t.buffer,0,4);var Gt=__nested_webpack_require_1209539__(8764).lW;let Kt,Jt,Zt;try{Kt=new TextEncoder}catch(e){}const Qt=void 0!==Gt,Yt=Qt?function(e){return Gt.allocUnsafeSlow(e)}:Uint8Array,Xt=Qt?Gt:Uint8Array,en=Qt?4294967296:2144337920;let tn,nn,rn,an,on=0,sn=null;const cn=/[\u0080-\uFFFF]/,ln=Symbol("record-id");function dn(e,t,n,i){let r=e.byteLength;if(r+1<256){var{target:a,position:o}=n(4+r);a[o++]=199,a[o++]=r+1}else if(r+1<65536){var{target:a,position:o}=n(5+r);a[o++]=200,a[o++]=r+1>>8,a[o++]=r+1&255}else{var{target:a,position:o,targetView:s}=n(7+r);a[o++]=201,s.setUint32(o,r+1),o+=4}a[o++]=116,a[o++]=t,e.buffer||(e=new Uint8Array(e)),a.set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength),o)}function un(e,t){let n=e.byteLength;var i,r;if(n<256){var{target:i,position:r}=t(n+2);i[r++]=196,i[r++]=n}else if(n<65536){var{target:i,position:r}=t(n+3);i[r++]=197,i[r++]=n>>8,i[r++]=255&n}else{var{target:i,position:r,targetView:a}=t(n+5);i[r++]=198,a.setUint32(r,n),r+=4}i.set(e,r)}function fn(e,t,n,i){let r=e.length;switch(r){case 1:t[n++]=212;break;case 2:t[n++]=213;break;case 4:t[n++]=214;break;case 8:t[n++]=215;break;case 16:t[n++]=216;break;default:r<256?(t[n++]=199,t[n++]=r):r<65536?(t[n++]=200,t[n++]=r>>8,t[n++]=255&r):(t[n++]=201,t[n++]=r>>24,t[n++]=r>>16&255,t[n++]=r>>8&255,t[n++]=255&r)}return t[n++]=i,t.set(e,n),n+r}function hn(e,t,n){if(sn.length>0){rn.setUint32(sn.position+e,on+n-sn.position-e),sn.stringsPosition=on-e;let i=sn;sn=null,t(i[0]),t(i[1])}}Zt=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,st],Jt=[{pack(e,t,n){let i=e.getTime()/1e3;if((this.useTimestamp32||0===e.getMilliseconds())&&i>=0&&i<4294967296){let{target:e,targetView:n,position:r}=t(6);e[r++]=214,e[r++]=255,n.setUint32(r,i)}else if(i>0&&i<4294967296){let{target:n,targetView:r,position:a}=t(10);n[a++]=215,n[a++]=255,r.setUint32(a,4e6*e.getMilliseconds()+(i/1e3/4294967296>>0)),r.setUint32(a+4,i)}else if(isNaN(i)){if(this.onInvalidDate)return t(0),n(this.onInvalidDate());let{target:e,targetView:i,position:r}=t(3);e[r++]=212,e[r++]=255,e[r++]=255}else{let{target:n,targetView:r,position:a}=t(15);n[a++]=199,n[a++]=12,n[a++]=255,r.setUint32(a,1e6*e.getMilliseconds()),r.setBigInt64(a+4,BigInt(Math.floor(i)))}}},{pack(e,t,n){if(this.setAsEmptyObject)return t(0),n({});let i=Array.from(e),{target:r,position:a}=t(this.moreTypes?3:0);this.moreTypes&&(r[a++]=212,r[a++]=115,r[a++]=0),n(i)}},{pack(e,t,n){let{target:i,position:r}=t(this.moreTypes?3:0);this.moreTypes&&(i[r++]=212,i[r++]=101,i[r++]=0),n([e.name,e.message,e.cause])}},{pack(e,t,n){let{target:i,position:r}=t(this.moreTypes?3:0);this.moreTypes&&(i[r++]=212,i[r++]=120,i[r++]=0),n([e.source,e.flags])}},{pack(e,t){this.moreTypes?dn(e,16,t):un(Qt?Gt.from(e):new Uint8Array(e),t)}},{pack(e,t){let n=e.constructor;n!==Xt&&this.moreTypes?dn(e,Rt.indexOf(n.name),t):un(e,t)}},{pack(e,t){let{target:n,position:i}=t(1);n[i]=193}}];let mn=new class extends ft{constructor(e){let t,n,i,r;super(e),this.offset=0;let a=Xt.prototype.utf8Write?function(e,t){return tn.utf8Write(e,t,4294967295)}:!(!Kt||!Kt.encodeInto)&&function(e,t){return Kt.encodeInto(e,tn.subarray(t)).written},o=this;e||(e={});let s=e&&e.sequential,c=e.structures||e.saveStructures,l=e.maxSharedStructures;if(null==l&&(l=c?32:0),l>8160)throw new Error("Maximum maxSharedStructure is 8160");e.structuredClone&&null==e.moreTypes&&(this.moreTypes=!0);let d=e.maxOwnStructures;null==d&&(d=c?32:64),this.structures||0==e.useRecords||(this.structures=[]);let u=l>32||d+l>64,f=l+64,h=l+d+64;if(h>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let m=[],p=0,g=0;this.pack=this.encode=function(e,a){if(tn||(tn=new Yt(8192),rn=tn.dataView||(tn.dataView=new DataView(tn.buffer,0,8192)),on=0),an=tn.length-10,an-on<2048?(tn=new Yt(tn.length),rn=tn.dataView||(tn.dataView=new DataView(tn.buffer,0,tn.length)),an=tn.length-10,on=0):on=on+7&2147483640,t=on,a&wn&&(on+=255&a),r=o.structuredClone?new Map:null,o.bundleStrings&&"string"!=typeof e?(sn=[],sn.size=1/0):sn=null,i=o.structures,i){i.uninitialized&&(i=o._mergeStructures(o.getStructures()));let e=i.sharedLength||0;if(e>l)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+i.sharedLength);if(!i.transitions){i.transitions=Object.create(null);for(let t=0;te.offset>t.offset?1:-1)),i=e.length,a=-1;for(;n&&i>0;){let r=e[--i].offset+t;rn.position+t?a>=0&&(a+=6):(a>=0&&(rn.setUint32(n.position+t,rn.getUint32(n.position+t)+a),a=-1),n=n.previous,i++)}a>=0&&n&&rn.setUint32(n.position+t,rn.getUint32(n.position+t)+a),on+=6*e.length,on>an&&z(on),o.offset=on;let s=function(e,t){let n,i=6*t.length,r=e.length-i;for(;n=t.pop();){let t=n.offset,a=n.id;e.copyWithin(t+i,t,r),i-=6;let o=t+i;e[o++]=214,e[o++]=105,e[o++]=a>>24,e[o++]=a>>16&255,e[o++]=a>>8&255,e[o++]=255&a,r=t}return e}(tn.subarray(t,on),e);return r=null,s}return o.offset=on,a&Sn?(tn.start=t,tn.end=on,tn):tn.subarray(t,on)}catch(e){throw c=e,e}finally{if(i&&(v(),n&&o.saveStructures)){let n=i.sharedLength||0,r=tn.subarray(t,on),s=function(e,t){return e.isCompatible=e=>{let n=!e||(t.lastNamedStructuresLength||0)===e.length;return n||t._mergeStructures(e),n},e}(i,o);if(!c)return!1===o.saveStructures(s,s.isCompatible)?o.pack(e,a):(o.lastNamedStructuresLength=n,tn.length>1073741824&&(tn=null),r)}tn.length>1073741824&&(tn=null),a&Cn&&(on=t)}};const v=()=>{g<10&&g++;let e=i.sharedLength||0;if(i.length>e&&!s&&(i.length=e),p>1e4)i.transitions=null,g=0,p=0,m.length>0&&(m=[]);else if(m.length>0&&!s){for(let e=0,t=m.length;e{var t=e.length;t<16?tn[on++]=144|t:t<65536?(tn[on++]=220,tn[on++]=t>>8,tn[on++]=255&t):(tn[on++]=221,rn.setUint32(on,t),on+=4);for(let n=0;n{on>an&&(tn=z(on));var n,i=typeof e;if("string"===i){let i,r=e.length;if(sn&&r>=4&&r<4096){if((sn.size+=r)>21760){let e,n,i=(sn[0]?3*sn[0].length+sn[1].length:0)+10;on+i>an&&(tn=z(on+i)),sn.position?(n=sn,tn[on]=200,on+=3,tn[on++]=98,e=on-t,on+=4,hn(t,y,0),rn.setUint16(e+t-3,on-t-e)):(tn[on++]=214,tn[on++]=98,e=on-t,on+=4),sn=["",""],sn.previous=n,sn.size=0,sn.position=e}let n=cn.test(e);return sn[n?0:1]+=e,tn[on++]=193,void y(n?-r:r)}i=r<32?1:r<256?2:r<65536?3:5;let o=3*r;if(on+o>an&&(tn=z(on+o)),r<64||!a){let t,a,o,s=on+i;for(t=0;t>6|192,tn[s++]=63&a|128):55296==(64512&a)&&56320==(64512&(o=e.charCodeAt(t+1)))?(a=65536+((1023&a)<<10)+(1023&o),t++,tn[s++]=a>>18|240,tn[s++]=a>>12&63|128,tn[s++]=a>>6&63|128,tn[s++]=63&a|128):(tn[s++]=a>>12|224,tn[s++]=a>>6&63|128,tn[s++]=63&a|128);n=s-on-i}else n=a(e,on+i);n<32?tn[on++]=160|n:n<256?(i<2&&tn.copyWithin(on+2,on+1,on+1+n),tn[on++]=217,tn[on++]=n):n<65536?(i<3&&tn.copyWithin(on+3,on+2,on+2+n),tn[on++]=218,tn[on++]=n>>8,tn[on++]=255&n):(i<5&&tn.copyWithin(on+5,on+3,on+3+n),tn[on++]=219,rn.setUint32(on,n),on+=4),on+=n}else if("number"===i)if(e>>>0===e)e<32||e<128&&!1===this.useRecords||e<64&&!this.randomAccessStructure?tn[on++]=e:e<256?(tn[on++]=204,tn[on++]=e):e<65536?(tn[on++]=205,tn[on++]=e>>8,tn[on++]=255&e):(tn[on++]=206,rn.setUint32(on,e),on+=4);else if(e>>0===e)e>=-32?tn[on++]=256+e:e>=-128?(tn[on++]=208,tn[on++]=e+256):e>=-32768?(tn[on++]=209,rn.setInt16(on,e),on+=2):(tn[on++]=210,rn.setInt32(on,e),on+=4);else{let t;if((t=this.useFloat32)>0&&e<4294967296&&e>=-2147483648){let n;if(tn[on++]=202,rn.setFloat32(on,e),t<4||(n=e*jt[(127&tn[on])<<1|tn[on+1]>>7])>>0===n)return void(on+=4);on--}tn[on++]=203,rn.setFloat64(on,e),on+=8}else if("object"===i||"function"===i)if(e){if(r){let n=r.get(e);if(n){if(!n.id){let e=r.idsToInsert||(r.idsToInsert=[]);n.id=e.push(n)}return tn[on++]=214,tn[on++]=112,rn.setUint32(on,n.id),void(on+=4)}r.set(e,{offset:on-t})}let a=e.constructor;if(a===Object)M(e);else if(a===Array)b(e);else if(a===Map)if(this.mapAsEmptyObject)tn[on++]=128;else{(n=e.size)<16?tn[on++]=128|n:n<65536?(tn[on++]=222,tn[on++]=n>>8,tn[on++]=255&n):(tn[on++]=223,rn.setUint32(on,n),on+=4);for(let[t,n]of e)y(t),y(n)}else{for(let t=0,n=Jt.length;t(tn=r,r=null,on+=e,on>an&&z(on),{target:tn,targetView:rn,position:on-e})),y)}finally{r&&(tn=r,rn=a,on=o,an=tn.length-10)}return void(i&&(i.length+on>an&&z(i.length+on),on=fn(i,tn,on,n.type)))}if(Array.isArray(e))b(e);else{if(e.toJSON){const t=e.toJSON();if(t!==e)return y(t)}if("function"===i)return y(this.writeFunction&&this.writeFunction(e));M(e)}}}else tn[on++]=192;else if("boolean"===i)tn[on++]=e?195:194;else if("bigint"===i){if(e=-(BigInt(1)<0)tn[on++]=207,rn.setBigUint64(on,e);else{if(!this.largeBigIntToFloat){if(this.useBigIntExtension&&e<2n**1023n&&e>-(2n**1023n)){tn[on++]=199,on++,tn[on++]=66;let t,n=[];do{let i=0xffn&e;t=(0x80n&i)===(e<0n?0x80n:0n),n.push(i),e>>=8n}while(0n!==e&&-1n!==e||!t);tn[on-2]=n.length;for(let e=n.length;e>0;)tn[on++]=Number(n[--e]);return}throw new RangeError(e+" was too large to fit in MessagePack 64-bit integer format, use useBigIntExtension or set largeBigIntToFloat to convert to float-64")}tn[on++]=203,rn.setFloat64(on,Number(e))}on+=8}else{if("undefined"!==i)throw new Error("Unknown type: "+i);this.encodeUndefinedAsNil?tn[on++]=192:(tn[on++]=212,tn[on++]=0,tn[on++]=0)}},S=this.variableMapSize||this.coercibleKeyAsNumber||this.skipValues?e=>{let t;if(this.skipValues){t=[];for(let n in e)"function"==typeof e.hasOwnProperty&&!e.hasOwnProperty(n)||this.skipValues.includes(e[n])||t.push(n)}else t=Object.keys(e);let n,i=t.length;if(i<16?tn[on++]=128|i:i<65536?(tn[on++]=222,tn[on++]=i>>8,tn[on++]=255&i):(tn[on++]=223,rn.setUint32(on,i),on+=4),this.coercibleKeyAsNumber)for(let r=0;r{tn[on++]=222;let n=on-t;on+=2;let i=0;for(let t in e)("function"!=typeof e.hasOwnProperty||e.hasOwnProperty(t))&&(y(t),y(e[t]),i++);tn[n+++t]=i>>8,tn[n+t]=255&i},C=!1===this.useRecords?S:e.progressiveRecords&&!u?e=>{let n,r,a=i.transitions||(i.transitions=Object.create(null)),o=on++-t;for(let s in e)if("function"!=typeof e.hasOwnProperty||e.hasOwnProperty(s)){if(n=a[s],n)a=n;else{let c=Object.keys(e),l=a;a=i.transitions;let d=0;for(let e=0,t=c.length;e{let t,n=i.transitions||(i.transitions=Object.create(null)),r=0;for(let i in e)("function"!=typeof e.hasOwnProperty||e.hasOwnProperty(i))&&(t=n[i],t||(t=n[i]=Object.create(null),r++),n=t);let a=n[ln];a?a>=96&&u?(tn[on++]=96+(31&(a-=96)),tn[on++]=a>>5):tn[on++]=a:x(n,n.__keys__||Object.keys(e),r);for(let t in e)("function"!=typeof e.hasOwnProperty||e.hasOwnProperty(t))&&y(e[t])},w="function"==typeof this.useRecords&&this.useRecords,M=w?e=>{w(e)?C(e):S(e)}:C,z=e=>{let n;if(e>16777216){if(e-t>en)throw new Error("Packed buffer would be larger than maximum buffer size");n=Math.min(en,4096*Math.round(Math.max((e-t)*(e>67108864?1.25:2),4194304)/4096))}else n=1+(Math.max(e-t<<2,tn.length-1)>>12)<<12;let i=new Yt(n);return rn=i.dataView||(i.dataView=new DataView(i.buffer,0,n)),e=Math.min(e,tn.length),tn.copy?tn.copy(i,0,t,e):i.set(tn.slice(t,e)),on-=t,t=0,an=i.length-10,tn=i},x=(e,t,r)=>{let a=i.nextId;a||(a=64),a=h&&(a=f),i.nextId=a+1);let o=t.highByte=a>=96&&u?a-96>>5:-1;e[ln]=a,e.__keys__=t,i[a-64]=t,a=0?(tn[on++]=96+(31&a),tn[on++]=o):tn[on++]=a):(o>=0?(tn[on++]=213,tn[on++]=114,tn[on++]=96+(31&a),tn[on++]=o):(tn[on++]=212,tn[on++]=114,tn[on++]=a),r&&(p+=g*r),m.length>=d&&(m.shift()[ln]=0),m.push(e),y(t))},k=(e,n,i,r)=>{let a=tn,o=on,s=an,c=t;tn=nn,on=0,t=0,tn||(nn=tn=new Yt(8192)),an=tn.length-10,x(e,n,r),nn=tn;let l=on;if(tn=a,on=o,an=s,t=c,l>1){let e=on+l-1;e>an&&z(e);let n=i+t;tn.copyWithin(n+l,n+1,on),tn.set(nn.slice(0,l),n),on=e}else tn[i+t]=nn[0]},V=e=>{let r=(void 0)(e,tn,t,on,i,z,((e,t,i)=>{if(i)return n=!0;on=t;let r=tn;return y(e),v(),r!==tn?{position:on,targetView:rn,target:tn}:on}),this);if(0===r)return M(e);on=r}}useBuffer(e){tn=e,tn.dataView||(tn.dataView=new DataView(tn.buffer,tn.byteOffset,tn.byteLength)),on=0}set position(e){on=e}get position(){return on}clearSharedData(){this.structures&&(this.structures=[]),this.typedStructs&&(this.typedStructs=[])}}({useRecords:!1});const pn=mn.pack,{NEVER:gn,ALWAYS:vn,DECIMAL_ROUND:bn,DECIMAL_FIT:yn}=(mn.pack,{NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4}),Sn=512,Cn=1024,wn=2048;__nested_webpack_require_1209539__(8764).lW;class Mn{constructor(e){this.serverUrl="",this.getSettings=async()=>{const e=this.serverUrl+"/info";return await new Promise((t=>{const n=new Request(e,{method:"GET"});fetch(n).then((async e=>{const n=await e.json();t(n)}))}))},this.getPerformance=async()=>{const e=this.serverUrl+"/performance";return await new Promise((t=>{const n=new Request(e,{method:"GET"});fetch(n).then((async e=>{const n=await e.json();t(n)}))}))},this.updateSettings=async(e,t)=>{const n=this.serverUrl+"/update_settings";return await new Promise((async i=>{const r=new FormData;r.append("key",e),r.append("val",t);const a=new Request(n,{method:"POST",body:r});i(await(await fetch(a)).json())}))},this.uploadFile2=async(e,t,n)=>new Promise(((i,r)=>{const a=this.serverUrl+"/upload_file",o=e+t.name,s=new XMLHttpRequest;s.upload.addEventListener("progress",(e=>n(e.loaded/e.total*100,!1))),s.addEventListener("load",(()=>i({status:s.status,body:s.responseText}))),s.addEventListener("error",(()=>r(new Error("File upload failed")))),s.addEventListener("abort",(()=>r(new Error("File upload aborted")))),s.open("POST",a,!0);const c=new FormData;c.append("file",t),c.append("filename",o),s.send(c)})),this.uploadFile=async(e,t,n)=>{const i=this.serverUrl+"/upload_file";n(0,!1);const r=1048576,a=[];let o=0;for(let t=0;t{const r=new FormData;r.append("file",new Blob([n.chunk])),r.append("filename",`${t}_${n.hash}`);const a=new Request(i,{method:"POST",body:r});fetch(a).then((async t=>{e()}))}));e.push(r)}if(await Promise.all(e),0==a.length)break;n(Math.floor((s-a.length)/(s+1)*100),!1)}return s},this.concatUploadedFile=async(e,t)=>{const n=this.serverUrl+"/concat_uploaded_file";await new Promise((i=>{const r=new FormData;r.append("filename",e),r.append("filenameChunkNum",""+t);const a=new Request(n,{method:"POST",body:r});fetch(a).then((async e=>{console.log(await e.text()),i()}))}))},this.loadModel=async(e,t,n="{}")=>{null!=t&&null!=t||(console.warn("isHalf is invalid value",t),t=!1);const i=this.serverUrl+"/load_model";return new Promise((async r=>{const a=new FormData;a.append("slot",""+e),a.append("isHalf",""+t),a.append("params",n);const o=new Request(i,{method:"POST",body:a});r(await(await fetch(o)).json())}))},this.uploadAssets=async e=>{const t=this.serverUrl+"/upload_model_assets";return new Promise((async n=>{const i=new FormData;i.append("params",e);const r=new Request(t,{method:"POST",body:i});n(await(await fetch(r)).json())}))},this.getModelType=async()=>{const e=this.serverUrl+"/model_type";return new Promise((async t=>{const n=new Request(e,{method:"GET"});t(await(await fetch(n)).json())}))},this.export2onnx=async()=>{const e=this.serverUrl+"/onnx";return new Promise((async t=>{const n=new Request(e,{method:"GET"});t(await(await fetch(n)).json())}))},this.mergeModel=async e=>{const t=this.serverUrl+"/merge_model";return new Promise((async n=>{const i=new FormData;i.append("request",JSON.stringify(e));const r=new Request(t,{method:"POST",body:i}),a=await(await fetch(r)).json();console.log("RESPONSE",a),n(a)}))},this.updateModelDefault=async()=>{const e=this.serverUrl+"/update_model_default";return new Promise((async t=>{const n=new Request(e,{method:"POST"}),i=await(await fetch(n)).json();console.log("RESPONSE",i),t(i)}))},this.updateModelInfo=async(e,t,n)=>{const i=this.serverUrl+"/update_model_info",r={slot:e,key:t,val:n};return new Promise((async e=>{const t=new FormData;t.append("newData",JSON.stringify(r));const n=new Request(i,{method:"POST",body:t}),a=await(await fetch(n)).json();console.log("RESPONSE",a),e(a)}))},this.postVoice=async(e,t)=>{const n=this.serverUrl+"/test",i=pn([e,t]),r=await fetch(n,{method:"POST",headers:{Accept:"application/octet-stream","Content-Type":"application/octet-stream"},body:i}),a=new Uint8Array(await r.arrayBuffer());return qt(a)},this.serverUrl=e}}var zn=__nested_webpack_require_1209539__(8767),xn=__nested_webpack_require_1209539__.n(zn);const kn=5,Vn={CONNECT:0,DISCONNECT:1,EVENT:2,ACK:3,CONNECT_ERROR:4},En=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},Hn=function(e){return"string"==typeof e},_n=function(e){return"[object Object]"===Object.prototype.toString.call(e)};function Ln(){}function Tn(){}Ln.prototype.encode=function(e){return[pn(e)]},xn()(Tn.prototype),Tn.prototype.add=function(e){const t=qt(e);this.checkPacket(t),this.emit("decoded",t)},Tn.prototype.checkPacket=function(e){if(!(En(e.type)&&e.type>=Vn.CONNECT&&e.type<=Vn.CONNECT_ERROR))throw new Error("invalid packet type");if(!Hn(e.nsp))throw new Error("invalid namespace");if(!function(e){switch(e.type){case Vn.CONNECT:return void 0===e.data||_n(e.data);case Vn.DISCONNECT:return void 0===e.data;case Vn.CONNECT_ERROR:return Hn(e.data)||_n(e.data);default:return Array.isArray(e.data)}}(e))throw new Error("invalid payload");if(void 0!==e.id&&!En(e.id))throw new Error("invalid packet id")},Tn.prototype.destroy=function(){};class An extends AudioWorkletNode{constructor(e,n){super(e,"voice-changer-worklet-processor"),this.setting=m.workletNodeSetting,this.requestChunks=new Int16Array(128*this.setting.inputChunkNum),this.chunkCounter=0,this.socket=null,this.bufferStart=0,this.isOutputRecording=!1,this.recordingOutputChunk=[],this.outputNode=null,this.startPromiseResolve=null,this.stopPromiseResolve=null,this.setOutputNode=e=>{this.outputNode=e},this.updateSetting=e=>{if(console.log("[WorkletNode] Updating WorkletNode Setting,",this.setting,e),e.inputChunkNum!==this.setting.inputChunkNum&&(this.requestChunks=new Int16Array(128*e.inputChunkNum),this.chunkCounter=0),this.outputNode)this.setting=e;else{let t=this.setting.serverUrl!==e.serverUrl||this.setting.protocol!==e.protocol;this.setting=e,t&&this.createSocketIO()}},this.getSettings=()=>this.setting,this.getSocketId=()=>this.socket?.id,this.createSocketIO=()=>{this.socket&&this.socket.close(),"sio"===this.setting.protocol&&(this.socket=Ue(this.setting.serverUrl+"/test",{parser:t}),this.socket.on("connect_error",(e=>{this.listener.notifyException(p.ERR_SIO_CONNECT_FAILED,`[SIO] rconnection failed ${e}`)})),this.socket.on("connect",(()=>{console.log(`[SIO] connect to ${this.setting.serverUrl}`),console.log(`[SIO] ${this.socket?.id}`)})),this.socket.on("close",(function(e){console.log(`[SIO] close ${e.id}`)})),this.socket.on("message",(e=>{console.log("message:",e)})),this.socket.on("error",(e=>{const[t,n]=e;"ERR_SAMPLE_RATE_NOT_SUPPORTED"==t?this.listener.notifyException(t,n):this.listener.notifyException("ERR_GENERIC_VOICE_CHANGER_EXCEPTION","An error occurred during voice conversion. Check command line window for more details.")})),this.socket.on("server_stats",(e=>{const[t,n]=e;this.listener.notifyPerformanceStats(0,t,n)})),this.socket.on("response",(e=>{const[t,n,i,r,a]=e,o=Date.now()-Number(t)+i;n.byteLength<256?this.listener.notifyException(p.ERR_SIO_INVALID_RESPONSE,`[SIO] Received data is too short ${n.byteLength}`):(null!=this.outputNode?this.outputNode.postReceivedVoice(n):this.postReceivedVoice(n),this.listener.notifyPerformanceStats(o,r,a))})))},this.postReceivedVoice=e=>{const t=Math.floor(e.length/2),n=new Float32Array(t);for(let i=0;i=32768?-(65536-t)/32768:t/32767}this.isOutputRecording&&this.recordingOutputChunk.push(n.slice());const i={requestType:"voice",voice:n};this.port.postMessage(i,[n.buffer])},this.sendBuffer=async e=>{const t=Date.now();if("sio"===this.setting.protocol){if(!this.socket)return void console.warn("sio is not initialized");this.socket.emit("request_message",[t,e])}else{if("rest"!==this.setting.protocol)throw"unknown protocol";{const n=new Mn(this.setting.serverUrl),i=await n.postVoice(t,e),r=Date.now()-Number(i.sendTimestamp)+i.ping;if(i.error){const{code:e,message:t}=i.details;return void("ERR_SAMPLE_RATE_NOT_SUPPORTED"==e?this.listener.notifyException(e,t):this.listener.notifyException("ERR_GENERIC_VOICE_CHANGER_EXCEPTION","An error occurred during voice conversion. Check command line window for more details."))}const a=i.audio;a.byteLength<256?this.listener.notifyException(p.ERR_SIO_INVALID_RESPONSE,`[REST] Received data is too short ${a.byteLength}`):null!=this.outputNode?this.outputNode.postReceivedVoice(a):this.postReceivedVoice(a),this.listener.notifyPerformanceStats(r,i.vol,i.perf)}}},this.configure=e=>{const t={requestType:"config",voice:new Float32Array(1)};this.port.postMessage(t)},this.start=async()=>{this.requestChunks=new Int16Array(128*this.setting.inputChunkNum),this.chunkCounter=0;const e=new Promise((e=>{this.startPromiseResolve=e})),t={requestType:"start",voice:new Float32Array(1)};this.port.postMessage(t),await e},this.stop=async()=>{const e=new Promise((e=>{this.stopPromiseResolve=e})),t={requestType:"stop",voice:new Float32Array(1)};this.port.postMessage(t),await e},this.trancateBuffer=()=>{const e={requestType:"trancateBuffer",voice:new Float32Array(1)};this.port.postMessage(e)},this.startOutputRecording=()=>{this.recordingOutputChunk=[],this.isOutputRecording=!0},this.stopOutputRecording=()=>{this.isOutputRecording=!1;const e=this.recordingOutputChunk.reduce(((e,t)=>e+t.length),0),t=new Float32Array(e);let n=0;for(let e=0;e{const t=e.createMediaStreamDestination(),n=e.createGain();n.gain.value=0,n.connect(t);const i=e.createOscillator();return i.frequency.value=440,i.connect(n),i.start(),t.stream},Pn=async e=>{const t=document.createElement("input");t.type="file";const n=new Promise(((n,i)=>{t.onchange=t=>{if(t.target instanceof HTMLInputElement==0)return console.log("invalid target!",t.target),i("invalid target"),null;const r=t.target;return r.files&&0!=r.files.length?""!=e&&r.files[0].type.match(e)?(i(`not target file type ${r.files[0].type}`),null):(n(r.files[0]),null):(i("no file selected"),null)},t.click()}));return await n},On=async e=>{const t=await Pn(e);return t?await new Promise((e=>{const n=new FileReader;n.onload=()=>{console.log("load data",n.result),e(n.result)},n.readAsDataURL(t)})):t},Rn=e=>e?.endsWith("/")?e.substring(0,e.length-1):e;class Dn{constructor(e){this.getSettings=async()=>this.restClient.getSettings(),this.getPerformance=async()=>this.restClient.getPerformance(),this.updateSettings=async(e,t)=>this.restClient.updateSettings(e,t),this.uploadFile2=async(e,t,n)=>this.restClient.uploadFile2(e,t,n),this.uploadFile=async(e,t,n)=>this.restClient.uploadFile(e,t,n),this.concatUploadedFile=async(e,t)=>this.restClient.concatUploadedFile(e,t),this.loadModel=async(e,t,n="{}")=>this.restClient.loadModel(e,t,n),this.uploadAssets=async e=>this.restClient.uploadAssets(e),this.getModelType=async()=>this.restClient.getModelType(),this.export2onnx=async()=>this.restClient.export2onnx(),this.mergeModel=async e=>this.restClient.mergeModel(e),this.updateModelDefault=async()=>this.restClient.updateModelDefault(),this.updateModelInfo=async(e,t,n)=>this.restClient.updateModelInfo(e,t,n),this.restClient=new Mn(e)}}class Fn{constructor(){this._resolvers=[],this._promises=[]}_add(){this._promises.push(new Promise((e=>{this._resolvers.push(e)})))}enqueue(e){0==this._resolvers.length&&this._add(),this._resolvers.shift()(e)}dequeue(){return 0==this._promises.length&&this._add(),this._promises.shift()}isEmpty(){return 0==this._promises.length}isBlocked(){return 0!=this._resolvers.length}get length(){return this._promises.length-this._resolvers.length}}class Bn{constructor(e,t,n){this.vfEnable=!1,this.vf=null,this.currentDevice=null,this.currentMediaStream=null,this.currentMediaStreamAudioSourceNode=null,this.inputGainNode=null,this.outputGainNode=null,this.monitorGainNode=null,this._isVoiceChanging=!1,this.setting=m.voiceChangerClientSetting,this.sslCertified=[],this.sem=new Fn,this.lock=async()=>await this.sem.dequeue(),this.unlock=e=>{this.sem.enqueue(e+1)},this.isInitialized=async()=>(this.promiseForInitialize&&await this.promiseForInitialize,!0),this.setup=async()=>{const e=await this.lock();if(console.log(`Input Setup=> echo: ${this.setting.echoCancel}, noise1: ${this.setting.noiseSuppression}, noise2: ${this.setting.noiseSuppression2}`),!this.vcInNode)throw console.warn("vc node is not initialized."),"vc node is not initialized.";if(this.currentMediaStream&&(this.currentMediaStream.getTracks().forEach((e=>{e.stop()})),this.currentMediaStream=null),!this.setting.audioInput)return console.log(`Input Setup=> client mic is disabled. ${this.setting.audioInput}`),this.vcInNode.stop(),void await this.unlock(e);if("string"==typeof this.setting.audioInput)try{"none"==this.setting.audioInput?this.currentMediaStream=Nn(this.ctx):this.currentMediaStream=await navigator.mediaDevices.getUserMedia({audio:{deviceId:this.setting.audioInput,channelCount:1,sampleRate:this.ctx.sampleRate,sampleSize:16,autoGainControl:!1,echoCancellation:this.setting.echoCancel,noiseSuppression:this.setting.noiseSuppression},video:!1})}catch(t){throw console.warn(t),this.vcInNode.stop(),await this.unlock(e),t}else this.currentMediaStream=this.setting.audioInput;if(this.currentMediaStreamAudioSourceNode=this.ctx.createMediaStreamSource(this.currentMediaStream),this.inputGainNode=this.ctx.createGain(),this.inputGainNode.gain.value=this.setting.inputGain,this.currentMediaStreamAudioSourceNode.connect(this.inputGainNode),this.currentDevice&&this.setting.noiseSuppression2){this.currentDevice.chooseNewInnerDevice(this.currentMediaStream);const e=await this.currentDevice.createAudioNode(this.ctx);this.inputGainNode.connect(e.start),e.end.connect(this.vcInNode)}else this.inputGainNode.connect(this.vcInNode);this.vcInNode.setOutputNode(this.vcOutNode),console.log("Input Setup=> success"),await this.unlock(e)},this.start=async()=>{await this.vcInNode.start(),this._isVoiceChanging=!0},this.stop=async()=>{await this.vcInNode.stop(),this._isVoiceChanging=!1},this.setServerUrl=(e,t=!1)=>{const n=Rn(e);n!=`${location.protocol}//${location.host}`&&0!=n.length&&"https:"==location.protocol&&0==this.sslCertified.includes(n)&&t&&(window.confirm("MMVC Server is different from this page's origin. Open tab to open ssl connection. OK? (You can close the opened tab after ssl connection succeed.)")?(window.open(n,"_blank"),this.sslCertified.push(n)):alert("Your voice conversion may fail...")),this.vcInNode.updateSetting({...this.vcInNode.getSettings(),serverUrl:n}),this.configurator=new Dn(n)},this.updateClientSetting=async e=>{let t=!1;this.setting.audioInput==e.audioInput&&this.setting.echoCancel==e.echoCancel&&this.setting.noiseSuppression==e.noiseSuppression&&this.setting.noiseSuppression2==e.noiseSuppression2&&this.setting.sampleRate==e.sampleRate||(t=!0),this.setting.inputGain!=e.inputGain&&this.setInputGain(e.inputGain),this.setting.outputGain!=e.outputGain&&this.setOutputGain(e.outputGain),this.setting.monitorGain!=e.monitorGain&&this.setMonitorGain(e.monitorGain),this.setting=e,t&&await this.setup()},this.setInputGain=e=>{this.setting.inputGain=e,this.inputGainNode&&e&&(this.inputGainNode.gain.value=e)},this.setOutputGain=e=>{this.outputGainNode&&e&&(this.outputGainNode.gain.value=e)},this.setMonitorGain=e=>{this.monitorGainNode&&e&&(this.monitorGainNode.gain.value=e)},this.getModelType=()=>this.configurator.getModelType(),this.getOnnx=async()=>this.configurator.export2onnx(),this.mergeModel=async e=>this.configurator.mergeModel(e),this.updateModelDefault=async()=>this.configurator.updateModelDefault(),this.updateModelInfo=async(e,t,n)=>this.configurator.updateModelInfo(e,t,n),this.updateServerSettings=(e,t)=>this.configurator.updateSettings(e,t),this.uploadFile=(e,t,n)=>this.configurator.uploadFile(e,t,n),this.uploadFile2=(e,t,n)=>this.configurator.uploadFile2(e,t,n),this.concatUploadedFile=(e,t)=>this.configurator.concatUploadedFile(e,t),this.loadModel=(e,t,n)=>this.configurator.loadModel(e,t,n),this.uploadAssets=e=>this.configurator.uploadAssets(e),this.configureWorklet=e=>{this.vcInNode.configure(e),this.vcOutNode.configure(e)},this.startOutputRecording=()=>{this.vcOutNode.startOutputRecording()},this.stopOutputRecording=()=>this.vcOutNode.stopOutputRecording(),this.trancateBuffer=()=>{this.vcOutNode.trancateBuffer()},this.updateWorkletNodeSetting=e=>{this.vcInNode.updateSetting(e),this.vcOutNode.updateSetting(e)},this.getClientSettings=()=>this.vcInNode.getSettings(),this.getServerSettings=()=>this.configurator.getSettings(),this.getPerformance=()=>this.configurator.getPerformance(),this.getSocketId=()=>this.vcInNode.getSocketId(),this.sem.enqueue(0),this.configurator=new Dn(""),this.ctx=e,this.vfEnable=t,this.promiseForInitialize=new Promise((async e=>{const t=URL.createObjectURL(new Blob(['(()=>{"use strict";class e extends AudioWorkletProcessor{constructor(){super(),this.BLOCK_SIZE=128,this.initialized=!1,this.isRecording=!1,this.playBuffer=[],this.trancateBuffer=(e,t)=>{console.log(`[worklet] Play buffer size ${this.playBuffer.length}. Truncating with offset ${e}`),this.playBuffer=this.playBuffer.slice(e,t)},this.pushData=e=>{const t={responseType:"inputData",inputData:e};this.port.postMessage(t,[e.buffer])},console.log("[AudioWorkletProcessor] created."),this.initialized=!0,this.port.onmessage=this.handleMessage.bind(this)}handleMessage(e){const t=e.data;if("config"===t.requestType)return void console.log("[worklet] worklet configured",t);if("start"===t.requestType){if(this.isRecording)return void console.warn("[worklet] recoring is already started");this.isRecording=!0;const e={responseType:"start_ok"};return void this.port.postMessage(e)}if("stop"===t.requestType){if(!this.isRecording)return void console.warn("[worklet] recoring is not started");this.isRecording=!1;const e={responseType:"stop_ok"};return void this.port.postMessage(e)}if("trancateBuffer"===t.requestType)return void this.trancateBuffer(0,0);const s=t.voice,r=Math.floor(s.length/this.BLOCK_SIZE);this.playBuffer.length>r&&(console.log(`[worklet] Truncate ${this.playBuffer.length} > ${r}`),this.trancateBuffer(this.playBuffer.length-r));for(let e=0;e0&&e[0].length>0&&this.pushData(e[0][0]);const r=this.playBuffer.shift();return r&&(t[0][0].set(r),2==t[0].length&&t[0][1].set(r)),!0}}registerProcessor("voice-changer-worklet-processor",e)})();'],{type:"text/javascript"}));try{this.vcInNode=new An(this.ctx,n)}catch(e){await this.ctx.audioWorklet.addModule(t),this.vcInNode=new An(this.ctx,n)}this.vcInNode.createSocketIO();try{this.vcOutNode=new An(this.ctx,n)}catch(e){await this.ctx.audioWorklet.addModule(t),this.vcOutNode=new An(this.ctx,n)}if(this.currentMediaStreamAudioDestinationNode=this.ctx.createMediaStreamDestination(),this.outputGainNode=this.ctx.createGain(),this.outputGainNode.gain.value=this.setting.outputGain,this.vcOutNode.connect(this.outputGainNode),this.outputGainNode.connect(this.currentMediaStreamAudioDestinationNode),this.currentMediaStreamAudioDestinationMonitorNode=this.ctx.createMediaStreamDestination(),this.monitorGainNode=this.ctx.createGain(),this.monitorGainNode.gain.value=this.setting.monitorGain,this.vcOutNode.connect(this.monitorGainNode),this.monitorGainNode.connect(this.currentMediaStreamAudioDestinationMonitorNode),this.vfEnable){this.vf=await In.VoiceFocusDeviceTransformer.create({variant:"c20"});const e=Nn(this.ctx);this.currentDevice=await this.vf.createTransformDevice(e)||null}e()}))}get stream(){return this.currentMediaStreamAudioDestinationNode.stream}get monitorStream(){return this.currentMediaStreamAudioDestinationMonitorNode.stream}get isVoiceChanging(){return this._isVoiceChanging}}var Un=__nested_webpack_require_1209539__(8156),jn=__nested_webpack_require_1209539__(9483),Wn=__nested_webpack_require_1209539__.n(jn);const qn=e=>{const t=e.clientType||"default";Wn().config({driver:Wn().INDEXEDDB,name:g,version:1,storeName:`${v}`,description:"appStorage"});const n=(0,Un.useMemo)((()=>async(e,n)=>{const i=`${t}_${e}`;await Wn().setItem(i,n)}),[e.clientType]);return{dummy:"",setItem:n,getItem:(0,Un.useMemo)((()=>async e=>{const n=`${t}_${e}`;return await Wn().getItem(n)}),[e.clientType]),removeItem:(0,Un.useMemo)((()=>async e=>{const n=`${t}_${e}`;return console.log("remove key:",n),await Wn().removeItem(n)}),[e.clientType]),removeDB:(0,Un.useMemo)((()=>async()=>{const e=await Wn().keys();for(const t of e)console.log("remove key:",t),await Wn().removeItem(t)}),[e.clientType])}},$n={iconFile:"iconFile"},Gn={rvcModel:"rvcModel",rvcIndex:"rvcIndex"},Kn=e=>{const[t,n]=(0,Un.useState)(l),i=e=>{e.modelSlots&&n(e)},r=(0,Un.useMemo)((()=>async n=>{if(e.voiceChangerClient)for(let r=0;rasync(t,n,i="")=>{e.voiceChangerClient&&await e.voiceChangerClient.uploadFile2(i,t,n)}),[e.voiceChangerClient]),f=(0,Un.useMemo)((()=>async t=>{if(!e.voiceChangerClient)return;if(o(0),d(!0),0==t.isSampleMode){const e=1/t.files.length;for(let n=0;n{o(t*e+i)}),t.files[n].dir)}}const n={...t,files:t.files.map((e=>({name:e.file.name,kind:e.kind,dir:e.dir})))},i=e.voiceChangerClient.loadModel(0,!1,JSON.stringify(n));await i,o(0),d(!1),m()}),[e.voiceChangerClient]),h=(0,Un.useMemo)((()=>async(t,n,i)=>{if(!e.voiceChangerClient)return;await u(i,((e,t)=>{console.log(e,t)}));const r={slot:t,name:n,file:i.name};await e.voiceChangerClient.uploadAssets(JSON.stringify(r)),m()}),[e.voiceChangerClient]),m=(0,Un.useMemo)((()=>async()=>{if(!e.voiceChangerClient)return;const t=await e.voiceChangerClient.getServerSettings();return i(t),t}),[e.voiceChangerClient]);return{serverSetting:t,updateServerSettings:r,reloadServerInfo:m,uploadModel:f,uploadProgress:a,isUploading:s,getOnnx:async()=>e.voiceChangerClient.getOnnx(),mergeModel:async t=>{const n=await e.voiceChangerClient.mergeModel(t);return i(n),n},updateModelDefault:async()=>{const t=await e.voiceChangerClient.updateModelDefault();return i(t),t},updateModelInfo:async(t,n,r)=>{const a=await e.voiceChangerClient.updateModelInfo(t,n,r);return i(a),a},uploadAssets:h}},Jn=e=>{const[t,n]=(0,Un.useState)(!1),[i,r]=(0,Un.useState)(m),a=(0,Un.useRef)(null),[o,s]=(0,Un.useState)(a.current),c=(0,Un.useRef)(),l=(0,Un.useMemo)((()=>new Promise((e=>{c.current=e}))),[]),d=(e=>{const[t,n]=(0,Un.useState)(e.voiceChangerClientSetting);return(0,Un.useEffect)((()=>{(async()=>{if(e.voiceChangerClient)for(let i in e.voiceChangerClientSetting)if(t[i]!=e.voiceChangerClientSetting[i]){n(e.voiceChangerClientSetting),await e.voiceChangerClient.updateClientSetting(e.voiceChangerClientSetting);break}})()}),[e.voiceChangerClient,e.voiceChangerClientSetting]),{setServerUrl:(0,Un.useMemo)((()=>t=>{e.voiceChangerClient&&e.voiceChangerClient.setServerUrl(t,!0)}),[e.voiceChangerClient]),start:(0,Un.useMemo)((()=>async()=>{e.voiceChangerClient&&await e.voiceChangerClient.start()}),[e.voiceChangerClient]),stop:(0,Un.useMemo)((()=>async()=>{e.voiceChangerClient&&await e.voiceChangerClient.stop()}),[e.voiceChangerClient]),reloadClientSetting:(0,Un.useMemo)((()=>async()=>{e.voiceChangerClient&&e.voiceChangerClient.getClientSettings()}),[e.voiceChangerClient])}})({voiceChangerClient:o,voiceChangerClientSetting:i.voiceChangerClientSetting}),u=(e=>{const[t,n]=(0,Un.useState)(e.workletNodeSetting);return(0,Un.useEffect)((()=>{if(e.voiceChangerClient)for(let i in e.workletNodeSetting)if(t[i]!=e.workletNodeSetting[i]){n(e.workletNodeSetting),e.voiceChangerClient.updateWorkletNodeSetting(e.workletNodeSetting);break}}),[e.voiceChangerClient,e.workletNodeSetting]),{startOutputRecording:(0,Un.useMemo)((()=>()=>{e.voiceChangerClient&&e.voiceChangerClient.startOutputRecording()}),[e.voiceChangerClient]),stopOutputRecording:(0,Un.useMemo)((()=>async()=>e.voiceChangerClient?e.voiceChangerClient.stopOutputRecording():new Float32Array),[e.voiceChangerClient]),trancateBuffer:(0,Un.useMemo)((()=>async()=>{e.voiceChangerClient&&e.voiceChangerClient.trancateBuffer()}),[e.voiceChangerClient])}})({voiceChangerClient:o,workletNodeSetting:i.workletNodeSetting});(e=>{const[t,n]=(0,Un.useState)(e.workletSetting);(0,Un.useEffect)((()=>{e.voiceChangerClient&&e.voiceChangerClient.configureWorklet(t)}),[e.voiceChangerClient,e.workletSetting])})({voiceChangerClient:o,workletSetting:i.workletSetting});const f=Kn({voiceChangerClient:o}),h=qn({clientType:null}),[p,g]=(0,Un.useState)(0),[v,b]=(0,Un.useState)({vol:0,responseTime:0,preprocessTime:0,mainprocessTime:0,postprocessTime:0}),[y,S]=(0,Un.useState)(""),{setItem:C,getItem:w,removeItem:M}=qn({clientType:null}),z=e=>{const t={...e};t.voiceChangerClientSetting={...t.voiceChangerClientSetting},"string"!=typeof t.voiceChangerClientSetting.audioInput&&(t.voiceChangerClientSetting.audioInput="none"),C("clientSetting",t),r(e)};(0,Un.useEffect)((()=>{o&&(async()=>{const e=await f.reloadServerInfo(),t=await w("clientSetting");t?(t.workletNodeSetting.inputChunkNum=e.serverReadChunkSize,r(t)):r({...i,workletNodeSetting:{...i.workletNodeSetting,inputChunkNum:e.serverReadChunkSize}})})()}),[o]),(0,Un.useEffect)((()=>{(async()=>{if(!e.audioContext)return;const t=new Bn(e.audioContext,!0,{notifySendBufferingTime:e=>{g(e)},notifyPerformanceStats:(e,t,n)=>{const[i,r,a]=n;b({vol:t,responseTime:e,preprocessTime:Math.ceil(1e3*i),mainprocessTime:Math.ceil(1e3*r),postprocessTime:Math.ceil(1e3*a)})},notifyException:(e,t)=>{S(t)}});await t.isInitialized(),a.current=t,s(a.current),console.log("[useClient] client initialized"),c.current(),n(!0)})()}),[e.audioContext]);const x=(0,Un.useMemo)((()=>async()=>{await l,await d.reloadClientSetting()}),[d.reloadClientSetting]);return{initialized:t,setting:i,setVoiceChangerClientSetting:e=>{i.voiceChangerClientSetting=e,console.log("setting.voiceChangerClientSetting",i.voiceChangerClientSetting),z({...i})},setServerUrl:d.setServerUrl,start:d.start,stop:d.stop,reloadClientSetting:d.reloadClientSetting,setWorkletNodeSetting:e=>{i.workletNodeSetting=e,console.log("setting.workletNodeSetting",i.workletNodeSetting),z({...i})},startOutputRecording:u.startOutputRecording,stopOutputRecording:u.stopOutputRecording,trancateBuffer:u.trancateBuffer,setWorkletSetting:e=>{i.workletSetting=e,console.log("setting.workletSetting",i.workletSetting),z({...i})},serverSetting:f,indexedDBState:h,bufferingTime:p,performance:v,getInfo:x,clearSetting:async()=>{await M("clientSetting")},setAudioOutputElementId:e=>{if(!a.current)return void console.warn("[voiceChangerClient] is not ready for set audio output.");const t=document.getElementById(e);t.paused&&(t.srcObject=a.current.stream,t.play())},setAudioMonitorElementId:e=>{if(!a.current)return void console.warn("[voiceChangerClient] is not ready for set audio output.");const t=document.getElementById(e);t.paused&&(t.srcObject=a.current.monitorStream,t.play())},errorMessage:y,resetErrorMessage:()=>{S("")}}}})(),__nested_webpack_exports__})(),module.exports=t(__webpack_require__(294))},288:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var i=n(81),r=n.n(i),a=n(645),o=n.n(a)()(r());o.push([e.id,':root {\n --toastify-color-light: #fff;\n --toastify-color-dark: #121212;\n --toastify-color-info: #3498db;\n --toastify-color-success: #07bc0c;\n --toastify-color-warning: #f1c40f;\n --toastify-color-error: #e74c3c;\n --toastify-color-transparent: rgba(255, 255, 255, 0.7);\n --toastify-icon-color-info: var(--toastify-color-info);\n --toastify-icon-color-success: var(--toastify-color-success);\n --toastify-icon-color-warning: var(--toastify-color-warning);\n --toastify-icon-color-error: var(--toastify-color-error);\n --toastify-toast-width: 320px;\n --toastify-toast-offset: 16px;\n --toastify-toast-top: max(var(--toastify-toast-offset), env(safe-area-inset-top));\n --toastify-toast-right: max(var(--toastify-toast-offset), env(safe-area-inset-right));\n --toastify-toast-left: max(var(--toastify-toast-offset), env(safe-area-inset-left));\n --toastify-toast-bottom: max(var(--toastify-toast-offset), env(safe-area-inset-bottom));\n --toastify-toast-background: #fff;\n --toastify-toast-min-height: 64px;\n --toastify-toast-max-height: 800px;\n --toastify-toast-bd-radius: 6px;\n --toastify-font-family: sans-serif;\n --toastify-z-index: 9999;\n --toastify-text-color-light: #757575;\n --toastify-text-color-dark: #fff;\n --toastify-text-color-info: #fff;\n --toastify-text-color-success: #fff;\n --toastify-text-color-warning: #fff;\n --toastify-text-color-error: #fff;\n --toastify-spinner-color: #616161;\n --toastify-spinner-color-empty-area: #e0e0e0;\n --toastify-color-progress-light: linear-gradient(\n to right,\n #4cd964,\n #5ac8fa,\n #007aff,\n #34aadc,\n #5856d6,\n #ff2d55\n );\n --toastify-color-progress-dark: #bb86fc;\n --toastify-color-progress-info: var(--toastify-color-info);\n --toastify-color-progress-success: var(--toastify-color-success);\n --toastify-color-progress-warning: var(--toastify-color-warning);\n --toastify-color-progress-error: var(--toastify-color-error);\n --toastify-color-progress-bgo: 0.2;\n}\n\n.Toastify__toast-container {\n z-index: var(--toastify-z-index);\n -webkit-transform: translate3d(0, 0, var(--toastify-z-index));\n position: fixed;\n padding: 4px;\n width: var(--toastify-toast-width);\n box-sizing: border-box;\n color: #fff;\n}\n.Toastify__toast-container--top-left {\n top: var(--toastify-toast-top);\n left: var(--toastify-toast-left);\n}\n.Toastify__toast-container--top-center {\n top: var(--toastify-toast-top);\n left: 50%;\n transform: translateX(-50%);\n}\n.Toastify__toast-container--top-right {\n top: var(--toastify-toast-top);\n right: var(--toastify-toast-right);\n}\n.Toastify__toast-container--bottom-left {\n bottom: var(--toastify-toast-bottom);\n left: var(--toastify-toast-left);\n}\n.Toastify__toast-container--bottom-center {\n bottom: var(--toastify-toast-bottom);\n left: 50%;\n transform: translateX(-50%);\n}\n.Toastify__toast-container--bottom-right {\n bottom: var(--toastify-toast-bottom);\n right: var(--toastify-toast-right);\n}\n\n@media only screen and (max-width : 480px) {\n .Toastify__toast-container {\n width: 100vw;\n padding: 0;\n left: env(safe-area-inset-left);\n margin: 0;\n }\n .Toastify__toast-container--top-left, .Toastify__toast-container--top-center, .Toastify__toast-container--top-right {\n top: env(safe-area-inset-top);\n transform: translateX(0);\n }\n .Toastify__toast-container--bottom-left, .Toastify__toast-container--bottom-center, .Toastify__toast-container--bottom-right {\n bottom: env(safe-area-inset-bottom);\n transform: translateX(0);\n }\n .Toastify__toast-container--rtl {\n right: env(safe-area-inset-right);\n left: initial;\n }\n}\n.Toastify__toast {\n --y: 0;\n position: relative;\n touch-action: none;\n min-height: var(--toastify-toast-min-height);\n box-sizing: border-box;\n margin-bottom: 1rem;\n padding: 8px;\n border-radius: var(--toastify-toast-bd-radius);\n box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.1);\n display: flex;\n justify-content: space-between;\n max-height: var(--toastify-toast-max-height);\n font-family: var(--toastify-font-family);\n cursor: default;\n direction: ltr;\n /* webkit only issue #791 */\n z-index: 0;\n overflow: hidden;\n}\n.Toastify__toast--stacked {\n position: absolute;\n width: 100%;\n transform: translate3d(0, var(--y), 0) scale(var(--s));\n transition: transform 0.3s;\n}\n.Toastify__toast--stacked[data-collapsed] .Toastify__toast-body, .Toastify__toast--stacked[data-collapsed] .Toastify__close-button {\n transition: opacity 0.1s;\n}\n.Toastify__toast--stacked[data-collapsed=false] {\n overflow: visible;\n}\n.Toastify__toast--stacked[data-collapsed=true]:not(:last-child) > * {\n opacity: 0;\n}\n.Toastify__toast--stacked:after {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n height: calc(var(--g) * 1px);\n bottom: 100%;\n}\n.Toastify__toast--stacked[data-pos=top] {\n top: 0;\n}\n.Toastify__toast--stacked[data-pos=bot] {\n bottom: 0;\n}\n.Toastify__toast--stacked[data-pos=bot].Toastify__toast--stacked:before {\n transform-origin: top;\n}\n.Toastify__toast--stacked[data-pos=top].Toastify__toast--stacked:before {\n transform-origin: bottom;\n}\n.Toastify__toast--stacked:before {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: 100%;\n transform: scaleY(3);\n z-index: -1;\n}\n.Toastify__toast--rtl {\n direction: rtl;\n}\n.Toastify__toast--close-on-click {\n cursor: pointer;\n}\n.Toastify__toast-body {\n margin: auto 0;\n flex: 1 1 auto;\n padding: 6px;\n display: flex;\n align-items: center;\n}\n.Toastify__toast-body > div:last-child {\n word-break: break-word;\n flex: 1;\n}\n.Toastify__toast-icon {\n margin-inline-end: 10px;\n width: 20px;\n flex-shrink: 0;\n display: flex;\n}\n\n.Toastify--animate {\n animation-fill-mode: both;\n animation-duration: 0.5s;\n}\n\n.Toastify--animate-icon {\n animation-fill-mode: both;\n animation-duration: 0.3s;\n}\n\n@media only screen and (max-width : 480px) {\n .Toastify__toast {\n margin-bottom: 0;\n border-radius: 0;\n }\n}\n.Toastify__toast-theme--dark {\n background: var(--toastify-color-dark);\n color: var(--toastify-text-color-dark);\n}\n.Toastify__toast-theme--light {\n background: var(--toastify-color-light);\n color: var(--toastify-text-color-light);\n}\n.Toastify__toast-theme--colored.Toastify__toast--default {\n background: var(--toastify-color-light);\n color: var(--toastify-text-color-light);\n}\n.Toastify__toast-theme--colored.Toastify__toast--info {\n color: var(--toastify-text-color-info);\n background: var(--toastify-color-info);\n}\n.Toastify__toast-theme--colored.Toastify__toast--success {\n color: var(--toastify-text-color-success);\n background: var(--toastify-color-success);\n}\n.Toastify__toast-theme--colored.Toastify__toast--warning {\n color: var(--toastify-text-color-warning);\n background: var(--toastify-color-warning);\n}\n.Toastify__toast-theme--colored.Toastify__toast--error {\n color: var(--toastify-text-color-error);\n background: var(--toastify-color-error);\n}\n\n.Toastify__progress-bar-theme--light {\n background: var(--toastify-color-progress-light);\n}\n.Toastify__progress-bar-theme--dark {\n background: var(--toastify-color-progress-dark);\n}\n.Toastify__progress-bar--info {\n background: var(--toastify-color-progress-info);\n}\n.Toastify__progress-bar--success {\n background: var(--toastify-color-progress-success);\n}\n.Toastify__progress-bar--warning {\n background: var(--toastify-color-progress-warning);\n}\n.Toastify__progress-bar--error {\n background: var(--toastify-color-progress-error);\n}\n.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info, .Toastify__progress-bar-theme--colored.Toastify__progress-bar--success, .Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning, .Toastify__progress-bar-theme--colored.Toastify__progress-bar--error {\n background: var(--toastify-color-transparent);\n}\n\n.Toastify__close-button {\n color: #fff;\n background: transparent;\n outline: none;\n border: none;\n padding: 0;\n cursor: pointer;\n opacity: 0.7;\n transition: 0.3s ease;\n align-self: flex-start;\n z-index: 1;\n}\n.Toastify__close-button--light {\n color: #000;\n opacity: 0.3;\n}\n.Toastify__close-button > svg {\n fill: currentColor;\n height: 16px;\n width: 14px;\n}\n.Toastify__close-button:hover, .Toastify__close-button:focus {\n opacity: 1;\n}\n\n@keyframes Toastify__trackProgress {\n 0% {\n transform: scaleX(1);\n }\n 100% {\n transform: scaleX(0);\n }\n}\n.Toastify__progress-bar {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: var(--toastify-z-index);\n opacity: 0.7;\n transform-origin: left;\n border-bottom-left-radius: var(--toastify-toast-bd-radius);\n}\n.Toastify__progress-bar--animated {\n animation: Toastify__trackProgress linear 1 forwards;\n}\n.Toastify__progress-bar--controlled {\n transition: transform 0.2s;\n}\n.Toastify__progress-bar--rtl {\n right: 0;\n left: initial;\n transform-origin: right;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: var(--toastify-toast-bd-radius);\n}\n.Toastify__progress-bar--wrp {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 5px;\n border-bottom-left-radius: var(--toastify-toast-bd-radius);\n}\n.Toastify__progress-bar--wrp[data-hidden=true] {\n opacity: 0;\n}\n.Toastify__progress-bar--bg {\n opacity: var(--toastify-color-progress-bgo);\n width: 100%;\n height: 100%;\n}\n\n.Toastify__spinner {\n width: 20px;\n height: 20px;\n box-sizing: border-box;\n border: 2px solid;\n border-radius: 100%;\n border-color: var(--toastify-spinner-color-empty-area);\n border-right-color: var(--toastify-spinner-color);\n animation: Toastify__spin 0.65s linear infinite;\n}\n\n@keyframes Toastify__bounceInRight {\n from, 60%, 75%, 90%, to {\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n from {\n opacity: 0;\n transform: translate3d(3000px, 0, 0);\n }\n 60% {\n opacity: 1;\n transform: translate3d(-25px, 0, 0);\n }\n 75% {\n transform: translate3d(10px, 0, 0);\n }\n 90% {\n transform: translate3d(-5px, 0, 0);\n }\n to {\n transform: none;\n }\n}\n@keyframes Toastify__bounceOutRight {\n 20% {\n opacity: 1;\n transform: translate3d(-20px, var(--y), 0);\n }\n to {\n opacity: 0;\n transform: translate3d(2000px, var(--y), 0);\n }\n}\n@keyframes Toastify__bounceInLeft {\n from, 60%, 75%, 90%, to {\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n 0% {\n opacity: 0;\n transform: translate3d(-3000px, 0, 0);\n }\n 60% {\n opacity: 1;\n transform: translate3d(25px, 0, 0);\n }\n 75% {\n transform: translate3d(-10px, 0, 0);\n }\n 90% {\n transform: translate3d(5px, 0, 0);\n }\n to {\n transform: none;\n }\n}\n@keyframes Toastify__bounceOutLeft {\n 20% {\n opacity: 1;\n transform: translate3d(20px, var(--y), 0);\n }\n to {\n opacity: 0;\n transform: translate3d(-2000px, var(--y), 0);\n }\n}\n@keyframes Toastify__bounceInUp {\n from, 60%, 75%, 90%, to {\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n from {\n opacity: 0;\n transform: translate3d(0, 3000px, 0);\n }\n 60% {\n opacity: 1;\n transform: translate3d(0, -20px, 0);\n }\n 75% {\n transform: translate3d(0, 10px, 0);\n }\n 90% {\n transform: translate3d(0, -5px, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes Toastify__bounceOutUp {\n 20% {\n transform: translate3d(0, calc(var(--y) - 10px), 0);\n }\n 40%, 45% {\n opacity: 1;\n transform: translate3d(0, calc(var(--y) + 20px), 0);\n }\n to {\n opacity: 0;\n transform: translate3d(0, -2000px, 0);\n }\n}\n@keyframes Toastify__bounceInDown {\n from, 60%, 75%, 90%, to {\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n 0% {\n opacity: 0;\n transform: translate3d(0, -3000px, 0);\n }\n 60% {\n opacity: 1;\n transform: translate3d(0, 25px, 0);\n }\n 75% {\n transform: translate3d(0, -10px, 0);\n }\n 90% {\n transform: translate3d(0, 5px, 0);\n }\n to {\n transform: none;\n }\n}\n@keyframes Toastify__bounceOutDown {\n 20% {\n transform: translate3d(0, calc(var(--y) - 10px), 0);\n }\n 40%, 45% {\n opacity: 1;\n transform: translate3d(0, calc(var(--y) + 20px), 0);\n }\n to {\n opacity: 0;\n transform: translate3d(0, 2000px, 0);\n }\n}\n.Toastify__bounce-enter--top-left, .Toastify__bounce-enter--bottom-left {\n animation-name: Toastify__bounceInLeft;\n}\n.Toastify__bounce-enter--top-right, .Toastify__bounce-enter--bottom-right {\n animation-name: Toastify__bounceInRight;\n}\n.Toastify__bounce-enter--top-center {\n animation-name: Toastify__bounceInDown;\n}\n.Toastify__bounce-enter--bottom-center {\n animation-name: Toastify__bounceInUp;\n}\n\n.Toastify__bounce-exit--top-left, .Toastify__bounce-exit--bottom-left {\n animation-name: Toastify__bounceOutLeft;\n}\n.Toastify__bounce-exit--top-right, .Toastify__bounce-exit--bottom-right {\n animation-name: Toastify__bounceOutRight;\n}\n.Toastify__bounce-exit--top-center {\n animation-name: Toastify__bounceOutUp;\n}\n.Toastify__bounce-exit--bottom-center {\n animation-name: Toastify__bounceOutDown;\n}\n\n@keyframes Toastify__zoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n 50% {\n opacity: 1;\n }\n}\n@keyframes Toastify__zoomOut {\n from {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n transform: translate3d(0, var(--y), 0) scale3d(0.3, 0.3, 0.3);\n }\n to {\n opacity: 0;\n }\n}\n.Toastify__zoom-enter {\n animation-name: Toastify__zoomIn;\n}\n\n.Toastify__zoom-exit {\n animation-name: Toastify__zoomOut;\n}\n\n@keyframes Toastify__flipIn {\n from {\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n animation-timing-function: ease-in;\n opacity: 0;\n }\n 40% {\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n animation-timing-function: ease-in;\n }\n 60% {\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n opacity: 1;\n }\n 80% {\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n to {\n transform: perspective(400px);\n }\n}\n@keyframes Toastify__flipOut {\n from {\n transform: translate3d(0, var(--y), 0) perspective(400px);\n }\n 30% {\n transform: translate3d(0, var(--y), 0) perspective(400px) rotate3d(1, 0, 0, -20deg);\n opacity: 1;\n }\n to {\n transform: translate3d(0, var(--y), 0) perspective(400px) rotate3d(1, 0, 0, 90deg);\n opacity: 0;\n }\n}\n.Toastify__flip-enter {\n animation-name: Toastify__flipIn;\n}\n\n.Toastify__flip-exit {\n animation-name: Toastify__flipOut;\n}\n\n@keyframes Toastify__slideInRight {\n from {\n transform: translate3d(110%, 0, 0);\n visibility: visible;\n }\n to {\n transform: translate3d(0, var(--y), 0);\n }\n}\n@keyframes Toastify__slideInLeft {\n from {\n transform: translate3d(-110%, 0, 0);\n visibility: visible;\n }\n to {\n transform: translate3d(0, var(--y), 0);\n }\n}\n@keyframes Toastify__slideInUp {\n from {\n transform: translate3d(0, 110%, 0);\n visibility: visible;\n }\n to {\n transform: translate3d(0, var(--y), 0);\n }\n}\n@keyframes Toastify__slideInDown {\n from {\n transform: translate3d(0, -110%, 0);\n visibility: visible;\n }\n to {\n transform: translate3d(0, var(--y), 0);\n }\n}\n@keyframes Toastify__slideOutRight {\n from {\n transform: translate3d(0, var(--y), 0);\n }\n to {\n visibility: hidden;\n transform: translate3d(110%, var(--y), 0);\n }\n}\n@keyframes Toastify__slideOutLeft {\n from {\n transform: translate3d(0, var(--y), 0);\n }\n to {\n visibility: hidden;\n transform: translate3d(-110%, var(--y), 0);\n }\n}\n@keyframes Toastify__slideOutDown {\n from {\n transform: translate3d(0, var(--y), 0);\n }\n to {\n visibility: hidden;\n transform: translate3d(0, 500px, 0);\n }\n}\n@keyframes Toastify__slideOutUp {\n from {\n transform: translate3d(0, var(--y), 0);\n }\n to {\n visibility: hidden;\n transform: translate3d(0, -500px, 0);\n }\n}\n.Toastify__slide-enter--top-left, .Toastify__slide-enter--bottom-left {\n animation-name: Toastify__slideInLeft;\n}\n.Toastify__slide-enter--top-right, .Toastify__slide-enter--bottom-right {\n animation-name: Toastify__slideInRight;\n}\n.Toastify__slide-enter--top-center {\n animation-name: Toastify__slideInDown;\n}\n.Toastify__slide-enter--bottom-center {\n animation-name: Toastify__slideInUp;\n}\n\n.Toastify__slide-exit--top-left, .Toastify__slide-exit--bottom-left {\n animation-name: Toastify__slideOutLeft;\n animation-timing-function: ease-in;\n animation-duration: 0.3s;\n}\n.Toastify__slide-exit--top-right, .Toastify__slide-exit--bottom-right {\n animation-name: Toastify__slideOutRight;\n animation-timing-function: ease-in;\n animation-duration: 0.3s;\n}\n.Toastify__slide-exit--top-center {\n animation-name: Toastify__slideOutUp;\n animation-timing-function: ease-in;\n animation-duration: 0.3s;\n}\n.Toastify__slide-exit--bottom-center {\n animation-name: Toastify__slideOutDown;\n animation-timing-function: ease-in;\n animation-duration: 0.3s;\n}\n\n@keyframes Toastify__spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}',""]);const s=o},689:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var i=n(81),r=n.n(i),a=n(645),o=n.n(a)()(r());o.push([e.id,":root{--rt-color-white:#fff;--rt-color-dark:#222;--rt-color-success:#8dc572;--rt-color-error:#be6464;--rt-color-warning:#f0ad4e;--rt-color-info:#337ab7;--rt-opacity:0.9;--rt-transition-show-delay:0.15s;--rt-transition-closing-delay:0.15s}.core-styles-module_tooltip__3vRRp{left:0;opacity:0;pointer-events:none;position:absolute;top:0;will-change:opacity}.core-styles-module_fixed__pcSol{position:fixed}.core-styles-module_arrow__cvMwQ{background:inherit;position:absolute}.core-styles-module_noArrow__xock6{display:none}.core-styles-module_clickable__ZuTTB{pointer-events:auto}.core-styles-module_show__Nt9eE{opacity:var(--rt-opacity);transition:opacity var(--rt-transition-show-delay) ease-out}.core-styles-module_closing__sGnxF{opacity:0;transition:opacity var(--rt-transition-closing-delay) ease-in}.styles-module_tooltip__mnnfp{border-radius:3px;font-size:90%;padding:8px 16px;width:-webkit-max-content;width:max-content}.styles-module_arrow__K0L3T{height:8px;width:8px}[class*=react-tooltip__place-top]>.styles-module_arrow__K0L3T{transform:rotate(45deg)}[class*=react-tooltip__place-right]>.styles-module_arrow__K0L3T{transform:rotate(135deg)}[class*=react-tooltip__place-bottom]>.styles-module_arrow__K0L3T{transform:rotate(225deg)}[class*=react-tooltip__place-left]>.styles-module_arrow__K0L3T{transform:rotate(315deg)}.styles-module_dark__xNqje{background:var(--rt-color-dark);color:var(--rt-color-white)}.styles-module_light__Z6W-X{background-color:var(--rt-color-white);color:var(--rt-color-dark)}.styles-module_success__A2AKt{background-color:var(--rt-color-success);color:var(--rt-color-white)}.styles-module_warning__SCK0X{background-color:var(--rt-color-warning);color:var(--rt-color-white)}.styles-module_error__JvumD{background-color:var(--rt-color-error);color:var(--rt-color-white)}.styles-module_info__BWdHW{background-color:var(--rt-color-info);color:var(--rt-color-white)}",""]);const s=o},870:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var i=n(81),r=n.n(i),a=n(645),o=n.n(a)()(r());o.push([e.id,"/* 前提条件 */\n\n.rotate-button-container {\n height: var(--header-height);\n width: var(--header-height);\n position: relative;\n}\n.rotate-button {\n display: none;\n}\n.rotate-button ~ .rotate-lable {\n padding: 2px;\n position: absolute;\n transition: all 0.3s;\n cursor: pointer;\n height: var(--header-height);\n width: var(--header-height);\n}\n.rotate-button ~ .rotate-lable > * {\n width: 100%;\n height: 100%;\n float: left;\n transition: all 0.3s;\n}\n.rotate-button ~ .rotate-lable > * .spin-on {\n width: 100%;\n height: 100%;\n display: none;\n }\n.rotate-button ~ .rotate-lable > * .spin-off {\n width: 100%;\n height: 100%;\n display: blcok;\n }\n.rotate-button ~ .rotate-lable > .colored {\n color: rgba(200, 200, 200, 0.8);\n background: rgba(0, 0, 0, 1);\n transition: all 0.3s;\n}\n.rotate-button ~ .rotate-lable > .colored .spin-on {\n display: none;\n }\n.rotate-button ~ .rotate-lable > .colored .spin-off {\n display: block;\n }\n.rotate-button:checked ~ .rotate-lable > .colored {\n color: rgba(50, 240, 50, 0.8);\n background: rgba(60, 60, 60, 1);\n transition: all 0.3s;\n}\n.rotate-button:checked ~ .rotate-lable > .colored .spin-on {\n display: block;\n }\n.rotate-button:checked ~ .rotate-lable > .colored .spin-off {\n display: none;\n }\n\n.rotate-button:checked ~ .rotate-lable > .spinner {\n width: 100%;\n height: 100%;\n transform: rotate(180deg);\n transition: all 0.3s;\n box-sizing: border-box;\n}\n\n.rotate-button:checked ~ .rotate-lable > .spinner .spin-on {\n display: block;\n }\n\n.rotate-button:checked ~ .rotate-lable > .spinner .spin-off {\n display: none;\n }\n",""]);const s=o},90:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var i=n(81),r=n.n(i),a=n(645),o=n.n(a),s=n(288),c=n(689),l=n(870),d=n(513),u=o()(r());u.push([e.id,"@import url(https://fonts.googleapis.com/css2?family=Chicle&family=Poppins:ital,wght@0,200;0,400;0,600;1,200;1,400;1,600&display=swap);"]),u.push([e.id,"@import url(https://fonts.googleapis.com/css2?family=Yusei+Magic&display=swap);"]),u.i(s.Z),u.i(c.Z),u.i(l.Z),u.i(d.Z),u.push([e.id,':root {\n --text-color: #333;\n --company-color1: rgba(64, 119, 187, 1);\n --company-color2: rgba(29, 47, 78, 1);\n --company-color3: rgba(255, 255, 255, 1);\n --company-color1-alpha: rgba(64, 119, 187, 0.3);\n --company-color2-alpha: rgba(29, 47, 78, 0.3);\n --company-color3-alpha: rgba(255, 255, 255, 0.3);\n --global-shadow-color: rgba(0, 0, 0, 0.4);\n\n --sidebar-transition-time: 0.2s;\n --sidebar-transition-time-quick: 0.1s;\n --sidebar-transition-animation: ease-in-out;\n\n --header-height: 1.5rem;\n --right-sidebar-width: 320px;\n\n --dialog-border-color: rgba(100, 100, 100, 1);\n --dialog-shadow-color: rgba(0, 0, 0, 0.3);\n --dialog-background-color: rgba(255, 255, 255, 1);\n --dialog-primary-color: rgba(19, 70, 209, 1);\n --dialog-active-color: rgba(40, 70, 209, 1);\n --dialog-input-border-color: rgba(200, 200, 200, 1);\n --dialog-submit-button-color: rgba(180, 190, 230, 1);\n --dialog-cancel-button-color: rgba(235, 80, 80, 1);\n\n --body-video-seeker-height: 3rem;\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n font-family: "Poppins", sans-serif;\n}\nhtml {\n font-size: 16px;\n}\nbody {\n height: 100%;\n width: 100%;\n overflow-y: scroll;\n overflow-x: hidden;\n color: var(--text-color);\n /* background: linear-gradient(45deg, var(--company-color1) 0, 5%, var(--company-color2) 5% 10%, var(--company-color3) 10% 80%, var(--company-color1) 80% 85%, var(--company-color2) 85% 100%); */\n background: linear-gradient(45deg, var(--company-color1) 0, 1%, var(--company-color2) 1% 5%, var(--company-color3) 5% 90%, var(--company-color1) 90% 95%, var(--company-color2) 95% 100%);\n}\n\n.Toastify__toast-body {\n white-space: pre-line;\n}\n\na.hint-text {\n text-decoration: underline;\n text-decoration-style: dotted;\n text-underline-offset: 4px;\n}\n\n#app {\n height: 100%;\n width: 100%;\n}\n.first-gesture {\n background: rgba(200, 0, 0, 0.2);\n width: 100%;\n height: 100%;\n position: absolute;\n}\n\n/* Main + Section Partition*/\n.main-body {\n height: 100%;\n width: 100%;\n padding: 2rem;\n font-family: "Yusei Magic", sans-serif;\n display: flex;\n flex-direction: column;\n font-size: 1rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n/* Title */\n.main-body .top-title .title {\n font-size: 3rem;\n }\n.main-body .top-title .top-title-version {\n margin-left: 2rem;\n font-size: 1.2rem;\n background: linear-gradient(transparent 60%, yellow 30%);\n }\n.main-body .top-title .top-title-version-number {\n margin-left: 0.3rem;\n font-size: 0.8rem;\n }\n.main-body .top-title .belongings {\n margin-left: 1rem;\n margin-right: 1rem;\n }\n.main-body .top-title .belongings .link {\n margin-left: 1rem;\n font-weight: 700;\n text-decoration: underline;\n }\n/* Partition */\n.main-body .partition {\n width: 100%;\n }\n.main-body .partition .partition-header {\n font-weight: 700;\n color: rgb(71, 69, 69);\n display: flex;\n }\n.main-body .partition .partition-header .caret {\n width: 2rem;\n }\n.main-body .partition .partition-header .title {\n font-size: 1.1rem;\n }\n.main-body .partition .partition-header .belongings {\n font-weight: 400;\n font-size: 0.8rem;\n display: flex;\n flex-direction: row;\n align-items: flex-end;\n margin-left: 10px;\n }\n.main-body .partition .partition-header .belongings .belongings-checkbox {\n margin-bottom: 3px;\n }\n.main-body .partition .partition-content {\n position: static;\n overflow-y: hidden;\n }\n.main-body .partition .row-split {\n }\n.state-control-checkbox:checked + .partition .partition-content {\n max-height: 700px;\n background: rgba(255, 255, 255, 0.3);\n transition: all var(--sidebar-transition-time) var(--sidebar-transition-animation);\n}\n.state-control-checkbox + .partition .partition-content {\n max-height: 0px;\n background: rgba(233, 233, 255, 0.3);\n transition: all var(--sidebar-transition-time) var(--sidebar-transition-animation);\n}\n/* ROW */\n\n.split-8-2 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n\n.split-8-2 > div:nth-child(1) {\n left: 0px;\n width: 80%;\n }\n\n.split-8-2 > div:nth-child(2) {\n left: 80%;\n width: 20%;\n }\n.split-6-4 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n.split-6-4 > div:nth-child(1) {\n left: 0px;\n width: 60%;\n }\n.split-6-4 > div:nth-child(2) {\n left: 60%;\n width: 40%;\n }\n.split-5-5 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n.split-5-5 > div:nth-child(1) {\n left: 0px;\n width: 50%;\n }\n.split-5-5 > div:nth-child(2) {\n left: 50%;\n width: 50%;\n }\n.split-4-6 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n.split-4-6 > div:nth-child(1) {\n left: 0px;\n width: 40%;\n }\n.split-4-6 > div:nth-child(2) {\n left: 40%;\n width: 60%;\n }\n.split-3-7 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n.split-3-7 > div:nth-child(1) {\n left: 0px;\n width: 30%;\n }\n.split-3-7 > div:nth-child(2) {\n left: 30%;\n width: 70%;\n }\n\n.split-2-8 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n\n.split-2-8 > div:nth-child(1) {\n left: 0px;\n width: 20%;\n }\n\n.split-2-8 > div:nth-child(2) {\n left: 20%;\n width: 80%;\n }\n\n.split-1-8-1 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n\n.split-1-8-1 > div:nth-child(1) {\n left: 0px;\n width: 10%;\n }\n\n.split-1-8-1 > div:nth-child(2) {\n left: 10%;\n width: 80%;\n }\n\n.split-1-8-1 > div:nth-child(3) {\n left: 90%;\n width: 10%;\n }\n.split-2-2-6 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n.split-2-2-6 > div:nth-child(1) {\n left: 0px;\n width: 20%;\n }\n.split-2-2-6 > div:nth-child(2) {\n left: 20%;\n width: 20%;\n }\n.split-2-2-6 > div:nth-child(3) {\n left: 40%;\n width: 60%;\n }\n.split-3-3-4 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n.split-3-3-4 > div:nth-child(1) {\n left: 0px;\n width: 30%;\n }\n.split-3-3-4 > div:nth-child(2) {\n left: 30%;\n width: 30%;\n }\n.split-3-3-4 > div:nth-child(3) {\n left: 60%;\n width: 40%;\n }\n\n.split-3-4-3 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n\n.split-3-4-3 > div:nth-child(1) {\n left: 0px;\n width: 30%;\n }\n\n.split-3-4-3 > div:nth-child(2) {\n left: 30%;\n width: 40%;\n }\n\n.split-3-4-3 > div:nth-child(3) {\n left: 70%;\n width: 30%;\n }\n.split-2-5-3 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n.split-2-5-3 > div:nth-child(1) {\n left: 0px;\n width: 20%;\n }\n.split-2-5-3 > div:nth-child(2) {\n left: 20%;\n width: 50%;\n }\n.split-2-5-3 > div:nth-child(3) {\n left: 70%;\n width: 30%;\n }\n.split-4-4-2 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n.split-4-4-2 > div:nth-child(1) {\n left: 0px;\n width: 40%;\n }\n.split-4-4-2 > div:nth-child(2) {\n left: 40%;\n width: 40%;\n }\n.split-4-4-2 > div:nth-child(3) {\n left: 80%;\n width: 20%;\n }\n.split-1-4-4-1 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n.split-1-4-4-1 > div:nth-child(1) {\n left: 0px;\n width: 10%;\n }\n.split-1-4-4-1 > div:nth-child(2) {\n left: 10%;\n width: 40%;\n }\n.split-1-4-4-1 > div:nth-child(3) {\n left: 50%;\n width: 40%;\n }\n.split-1-4-4-1 > div:nth-child(4) {\n left: 90%;\n width: 10%;\n }\n\n.split-3-2-2-3 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n\n.split-3-2-2-3 > div:nth-child(1) {\n left: 0px;\n width: 30%;\n }\n\n.split-3-2-2-3 > div:nth-child(2) {\n left: 30%;\n width: 20%;\n }\n\n.split-3-2-2-3 > div:nth-child(3) {\n left: 50%;\n width: 20%;\n }\n\n.split-3-2-2-3 > div:nth-child(4) {\n left: 70%;\n width: 30%;\n }\n.split-3-2-3-2 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n.split-3-2-3-2 > div:nth-child(1) {\n left: 0px;\n width: 30%;\n }\n.split-3-2-3-2 > div:nth-child(2) {\n left: 30%;\n width: 20%;\n }\n.split-3-2-3-2 > div:nth-child(3) {\n left: 50%;\n width: 30%;\n }\n.split-3-2-3-2 > div:nth-child(4) {\n left: 80%;\n width: 20%;\n }\n.split-3-1-2-4 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n.split-3-1-2-4 > div:nth-child(1) {\n left: 0px;\n width: 30%;\n }\n.split-3-1-2-4 > div:nth-child(2) {\n left: 30%;\n width: 10%;\n }\n.split-3-1-2-4 > div:nth-child(3) {\n left: 40%;\n width: 20%;\n }\n.split-3-1-2-4 > div:nth-child(4) {\n left: 60%;\n width: 40%;\n }\n.split-3-2-1-4 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n.split-3-2-1-4 > div:nth-child(1) {\n left: 0px;\n width: 30%;\n }\n.split-3-2-1-4 > div:nth-child(2) {\n left: 30%;\n width: 20%;\n }\n.split-3-2-1-4 > div:nth-child(3) {\n left: 50%;\n width: 10%;\n }\n.split-3-2-1-4 > div:nth-child(4) {\n left: 60%;\n width: 40%;\n }\n.split-3-2-2-2-1 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n.split-3-2-2-2-1 > div:nth-child(1) {\n left: 0px;\n width: 30%;\n }\n.split-3-2-2-2-1 > div:nth-child(2) {\n left: 30%;\n width: 20%;\n }\n.split-3-2-2-2-1 > div:nth-child(3) {\n left: 50%;\n width: 20%;\n }\n.split-3-2-2-2-1 > div:nth-child(4) {\n left: 70%;\n width: 20%;\n }\n.split-3-2-2-2-1 > div:nth-child(5) {\n left: 90%;\n width: 10%;\n }\n.split-3-1-1-1-4 {\n display: flex;\n width: 100%;\n justify-content: center;\n margin: 1px 0px 1px 0px;\n}\n.split-3-1-1-1-4 > div:nth-child(1) {\n left: 0px;\n width: 30%;\n }\n.split-3-1-1-1-4 > div:nth-child(2) {\n left: 30%;\n width: 10%;\n }\n.split-3-1-1-1-4 > div:nth-child(3) {\n left: 40%;\n width: 10%;\n }\n.split-3-1-1-1-4 > div:nth-child(4) {\n left: 50%;\n width: 10%;\n }\n.split-3-1-1-1-4 > div:nth-child(5) {\n left: 60%;\n width: 40%;\n }\n.w20 {\n width: 20%;\n}\n.bold {\n font-weight: 700;\n}\n.w40 {\n width: 40%;\n}\n\n.underline {\n border-bottom: 3px solid #333;\n}\n.left-padding-05 {\n padding-left: 0.5rem;\n}\n.left-padding-1 {\n padding-left: 1rem;\n}\n.left-padding-2 {\n padding-left: 2rem;\n}\n.left-margin-1 {\n margin-left: 1rem;\n}\n.left-margin-2 {\n margin-left: 2rem;\n}\n.highlight {\n background-color: rgba(200, 200, 255, 0.3);\n}\n.guided {\n /* background-color: rgba(9, 133, 67, 0.3); */\n background-color: rgba(159, 165, 162, 0.1);\n /* border-bottom: 1px solid rgba(9, 133, 67, 0.3); */\n}\n\n.divider {\n height: 0.8rem;\n /* background-color: rgba(16, 210, 113, 0.1); */\n background-color: rgba(31, 42, 36, 0.1);\n}\n\n.body-section-title {\n font-size: 1.5rem;\n color: rgb(51, 49, 49);\n}\n.body-sub-section-title {\n font-size: 1.1rem;\n font-weight: 700;\n color: rgb(3, 53, 12);\n}\n\n.body-item-title {\n color: rgb(51, 99, 49);\n display: flex;\n}\n.body-item-text {\n color: rgb(30, 30, 30);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.body-item-text .body-item-text-item {\n padding-left: 1rem;\n }\n.body-item-text-small {\n color: rgb(30, 30, 30);\n font-size: 0.7rem;\n}\n.body-item-text-em {\n color: rgb(250, 30, 30);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 700;\n}\n\n.body-input-container {\n display: flex;\n}\n.body-item-input {\n width: 60%;\n}\n.body-item-input-slider {\n width: 60%;\n}\n.body-item-input-slider-label {\n margin-right: 1rem;\n}\n.body-item-input-slider-val {\n margin-left: 1rem;\n}\n.body-item-input-slider-2nd {\n width: 60%;\n accent-color: #33f;\n}\n\n.body-button-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.body-button-container > div {\n margin-left: 5px;\n margin-right: 5px;\n padding-left: 20px;\n padding-right: 20px;\n }\n\n.body-button-container .body-button {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: solid 1px #999;\n border-radius: 2px;\n cursor: pointer;\n vertical-align: middle;\n text-align: center;\n }\n\n.body-button-container .body-button:hover {\n border: solid 1px #000;\n }\n\n.body-button-container .body-button-disabled {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: solid 1px #999;\n border-radius: 2px;\n vertical-align: middle;\n background: #ddd;\n }\n\n.body-button-container .body-button-active {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: solid 1px #333;\n border-radius: 2px;\n background: #ada;\n }\n\n.body-button-container .body-button-stanby {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: solid 1px #999;\n border-radius: 2px;\n background: #aba;\n cursor: pointer;\n }\n\n.body-button-container .body-button-stanby:hover {\n border: solid 1px #000;\n }\n\n.body-button-container-space-around {\n justify-content: space-around;\n}\n\n.body-select {\n color: rgb(30, 30, 30);\n max-width: 100%;\n}\n\n.body-select-50 {\n color: rgb(30, 30, 30);\n max-width: 50%;\n height: 1.5rem;\n}\n.select-option-red {\n color: #f66;\n font-weight: 700;\n}\n\n.body-image-container,\n.body-wav-container {\n display: flex;\n width: 100%;\n}\n\n.body-image-container .body-image-container-title,\n .body-image-container .body-wav-container-title,\n .body-wav-container .body-image-container-title,\n .body-wav-container .body-wav-container-title {\n width: 20%;\n }\n\n.body-image-container .body-image-container-img,\n .body-image-container .body-wav-container-wav,\n .body-wav-container .body-image-container-img,\n .body-wav-container .body-wav-container-wav {\n width: 80%;\n }\n\n.donate-img {\n border-radius: 35px;\n height: 1.5rem;\n}\n\n/* Dialog */\n.dialog-container,\n.dialog-container2 {\n justify-content: center;\n align-items: center;\n position: absolute;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: -1;\n display: none;\n}\n.dialog-container .dialog-frame, .dialog-container2 .dialog-frame {\n color: var(--company-color2);\n width: 40rem;\n max-height: 80vh;\n border: 2px solid var(--dialog-border-color);\n border-radius: 20px;\n flex-direction: column;\n align-items: center;\n box-shadow: 5px 5px 5px var(--dialog-shadow-color);\n background: var(--dialog-background-color);\n overflow: hidden;\n display: flex;\n }\n.dialog-container .dialog-frame .dialog-title, .dialog-container2 .dialog-frame .dialog-title {\n margin-top: 20px;\n background: var(--company-color2);\n color: #fff;\n width: 100%;\n text-align: center;\n }\n.dialog-container .dialog-frame .dialog-content, .dialog-container2 .dialog-frame .dialog-content {\n width: 90%;\n }\n.dialog-container .dialog-frame .dialog-content .dialog-application-title, .dialog-container2 .dialog-frame .dialog-content .dialog-application-title {\n font-family: "Chicle", cursive;\n font-size: 3rem;\n text-align: center;\n }\n.dialog-container .dialog-frame .dialog-content .dialog-content-part, .dialog-container2 .dialog-frame .dialog-content .dialog-content-part {\n margin-top: 1rem;\n margin-bottom: 1rem;\n }\n.dialog-container .dialog-frame .dialog-content .input-text-container, .dialog-container2 .dialog-frame .dialog-content .input-text-container {\n display: flex;\n flex-direction: row;\n margin: 20px;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content, .dialog-container2 .dialog-frame .dialog-fixed-size-content {\n width: 90%;\n max-height: 70vh;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-header,\n .dialog-container .dialog-frame .dialog-fixed-size-content .file-uploader-header,\n .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-header,\n .dialog-container2 .dialog-frame .dialog-fixed-size-content .file-uploader-header {\n font-weight: 700;\n margin: 5px 5px 5px 5px;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-header .model-slot-header-button,\n .dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-header .file-uploader-header-button,\n .dialog-container .dialog-frame .dialog-fixed-size-content .file-uploader-header .model-slot-header-button,\n .dialog-container .dialog-frame .dialog-fixed-size-content .file-uploader-header .file-uploader-header-button,\n .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-header .model-slot-header-button,\n .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-header .file-uploader-header-button,\n .dialog-container2 .dialog-frame .dialog-fixed-size-content .file-uploader-header .model-slot-header-button,\n .dialog-container2 .dialog-frame .dialog-fixed-size-content .file-uploader-header .file-uploader-header-button {\n font-weight: 400;\n font-size: 0.8rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: solid 1px #999;\n border-radius: 2px;\n cursor: pointer;\n vertical-align: middle;\n text-align: center;\n padding: 1px 5px 1px 5px;\n margin-left: 1rem;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-header .model-slot-header-button:hover, .dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-header .file-uploader-header-button:hover, .dialog-container .dialog-frame .dialog-fixed-size-content .file-uploader-header .model-slot-header-button:hover, .dialog-container .dialog-frame .dialog-fixed-size-content .file-uploader-header .file-uploader-header-button:hover, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-header .model-slot-header-button:hover, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-header .file-uploader-header-button:hover, .dialog-container2 .dialog-frame .dialog-fixed-size-content .file-uploader-header .model-slot-header-button:hover, .dialog-container2 .dialog-frame .dialog-fixed-size-content .file-uploader-header .file-uploader-header-button:hover {\n border: solid 1px #000;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container {\n max-height: 60vh;\n width: 100%;\n overflow-y: scroll;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container::-webkit-scrollbar, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container::-webkit-scrollbar-track, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container::-webkit-scrollbar-track {\n background-color: #eee;\n border-radius: 3px;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container::-webkit-scrollbar-thumb, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container::-webkit-scrollbar-thumb {\n background: #f7cfec80;\n border-radius: 3px;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot {\n height: 5rem;\n display: flex;\n flex-direction: row;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-icon, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-icon {\n width: 5rem;\n height: 5rem;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-icon-pointable, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-icon-pointable {\n width: 5rem;\n height: 5rem;\n cursor: pointer;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail {\n display: flex;\n flex-direction: column;\n font-size: 0.8rem;\n border-bottom: solid 1px #aaa;\n width: 80%;\n overflow-y: scroll;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail::-webkit-scrollbar, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail::-webkit-scrollbar-track, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail::-webkit-scrollbar-track {\n background-color: #eee;\n border-radius: 3px;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail::-webkit-scrollbar-thumb, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail::-webkit-scrollbar-thumb {\n background: #f7cfec80;\n border-radius: 3px;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail .model-slot-detail-row, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail .model-slot-detail-row {\n display: flex;\n flex-direction: row;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail .model-slot-detail-row .model-slot-detail-row-label, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail .model-slot-detail-row .model-slot-detail-row-label {\n width: 20%;\n white-space: nowrap;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail .model-slot-detail-row .model-slot-detail-row-value, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail .model-slot-detail-row .model-slot-detail-row-value {\n width: 55%;\n white-space: nowrap;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail .model-slot-detail-row .model-slot-detail-row-value-download, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail .model-slot-detail-row .model-slot-detail-row-value-download {\n width: 55%;\n white-space: nowrap;\n cursor: pointer;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail .model-slot-detail-row .model-slot-detail-row-value-pointable, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail .model-slot-detail-row .model-slot-detail-row-value-pointable {\n width: 55%;\n white-space: nowrap;\n cursor: pointer;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail .model-slot-detail-row .model-slot-detail-row-value-edit, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail .model-slot-detail-row .model-slot-detail-row-value-edit {\n width: 55%;\n font-weight: 700;\n color: #f00;\n white-space: nowrap;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail .model-slot-detail-row .model-slot-detail-row-button, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-detail .model-slot-detail-row .model-slot-detail-row-button {\n width: 15%;\n height: 90%;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-buttons, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-buttons {\n display: flex;\n flex-direction: column;\n border-bottom: solid 1px #a00;\n width: 20%;\n font-size: 0.8rem;\n padding: 4px;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-button, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-button {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: solid 1px #999;\n border-radius: 2px;\n cursor: pointer;\n vertical-align: middle;\n text-align: center;\n padding: 1px;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-button:hover, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-button:hover {\n border: solid 1px #000;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-button-disabled, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-button-disabled {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: solid 1px #999;\n border-radius: 2px;\n vertical-align: middle;\n background: #ddd;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-button-active, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-button-active {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: solid 1px #333;\n border-radius: 2px;\n background: #ada;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-button-stanby, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-button-stanby {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: solid 1px #999;\n border-radius: 2px;\n background: #aba;\n cursor: pointer;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-button-stanby:hover, .dialog-container2 .dialog-frame .dialog-fixed-size-content .model-slot-container .model-slot .model-slot-button-stanby:hover {\n border: solid 1px #000;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .file-uploader-voice-changer-select,\n .dialog-container .dialog-frame .dialog-fixed-size-content .edit-model-slot-title,\n .dialog-container2 .dialog-frame .dialog-fixed-size-content .file-uploader-voice-changer-select,\n .dialog-container2 .dialog-frame .dialog-fixed-size-content .edit-model-slot-title {\n font-size: 1rem;\n padding-left: 0.5rem;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-container, .dialog-container2 .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-container {\n font-size: 0.9rem;\n padding-left: 1rem;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-container .file-uploader-file-select-row, .dialog-container2 .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-container .file-uploader-file-select-row {\n display: flex;\n flex-direction: row;\n margin: 0.2rem;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-container .file-uploader-file-select-row .file-uploader-file-select-row-label, .dialog-container2 .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-container .file-uploader-file-select-row .file-uploader-file-select-row-label {\n width: 10rem;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-container .file-uploader-file-select-row .file-uploader-file-select-row-value, .dialog-container2 .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-container .file-uploader-file-select-row .file-uploader-file-select-row-value {\n width: 15rem;\n color: #f00;\n white-space: nowrap;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-container .file-uploader-file-select-row .file-uploader-file-select-row-button, .dialog-container2 .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-container .file-uploader-file-select-row .file-uploader-file-select-row-button {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: solid 1px #999;\n border-radius: 2px;\n cursor: pointer;\n vertical-align: middle;\n text-align: center;\n padding: 1px;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-container .file-uploader-file-select-row .file-uploader-file-select-row-button:hover, .dialog-container2 .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-container .file-uploader-file-select-row .file-uploader-file-select-row-button:hover {\n border: solid 1px #000;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-upload-button-container, .dialog-container2 .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-upload-button-container {\n display: flex;\n flex-direction: row;\n margin-top: 1rem;\n margin-bottom: 0.5rem;\n justify-content: center;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-upload-button-container .file-uploader-file-select-upload-button, .dialog-container2 .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-upload-button-container .file-uploader-file-select-upload-button {\n /* width: 12rem; */\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: solid 1px #999;\n border-radius: 2px;\n cursor: pointer;\n vertical-align: middle;\n text-align: center;\n padding: 1px 10px 1px 10px;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-upload-button-container .file-uploader-file-select-upload-button:hover, .dialog-container2 .dialog-frame .dialog-fixed-size-content .file-uploader-file-select-upload-button-container .file-uploader-file-select-upload-button:hover {\n border: solid 1px #000;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .edit-model-slot-row, .dialog-container2 .dialog-frame .dialog-fixed-size-content .edit-model-slot-row {\n display: flex;\n flex-direction: row;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .edit-model-slot-row .edit-model-slot-title, .dialog-container2 .dialog-frame .dialog-fixed-size-content .edit-model-slot-row .edit-model-slot-title {\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .edit-model-slot-row .edit-model-slot-speakers, .dialog-container2 .dialog-frame .dialog-fixed-size-content .edit-model-slot-row .edit-model-slot-speakers {\n display: flex;\n flex-direction: row;\n margin: 0px 0px 0px 1rem;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .edit-model-slot-row .edit-model-slot-speakers .edit-model-slot-speakers-id-label,\n .dialog-container .dialog-frame .dialog-fixed-size-content .edit-model-slot-row .edit-model-slot-speakers .edit-model-slot-speakers-name-label,\n .dialog-container2 .dialog-frame .dialog-fixed-size-content .edit-model-slot-row .edit-model-slot-speakers .edit-model-slot-speakers-id-label,\n .dialog-container2 .dialog-frame .dialog-fixed-size-content .edit-model-slot-row .edit-model-slot-speakers .edit-model-slot-speakers-name-label {\n margin: 0px 0px 0px 0.5rem;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .edit-model-slot-row .edit-model-slot-speakers .edit-model-slot-speakers-buttons, .dialog-container2 .dialog-frame .dialog-fixed-size-content .edit-model-slot-row .edit-model-slot-speakers .edit-model-slot-speakers-buttons {\n margin: 0px 0px 0px 0.5rem;\n display: flex;\n flex-direction: row;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .edit-model-slot-row .edit-model-slot-speakers .edit-model-slot-speakers-buttons .edit-model-slot-speakers-button, .dialog-container2 .dialog-frame .dialog-fixed-size-content .edit-model-slot-row .edit-model-slot-speakers .edit-model-slot-speakers-buttons .edit-model-slot-speakers-button {\n margin: 0px 0.5rem 0px 0.5rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: solid 1px #999;\n border-radius: 2px;\n cursor: pointer;\n vertical-align: middle;\n text-align: center;\n padding: 0px 10px 0px 10px;\n }\n.dialog-container .dialog-frame .dialog-fixed-size-content .edit-model-slot-row .edit-model-slot-speakers .edit-model-slot-speakers-buttons .edit-model-slot-speakers-button:hover, .dialog-container2 .dialog-frame .dialog-fixed-size-content .edit-model-slot-row .edit-model-slot-speakers .edit-model-slot-speakers-buttons .edit-model-slot-speakers-button:hover {\n border: solid 1px #000;\n }\n.dialog-container-show {\n display: flex;\n}\n\n.state-control-checkbox:checked ~ .dialog-container {\n background: rgba(200, 200, 200, 0.4);\n animation-name: dialog-show;\n animation-duration: 0.4s;\n animation-iteration-count: 1;\n animation-fill-mode: forwards;\n animation-direction: normal;\n}\n.state-control-checkbox ~ .dialog-container {\n background: rgba(100, 100, 100, 0.4);\n animation-name: dialog-hide;\n animation-duration: 0.4s;\n animation-iteration-count: 1;\n animation-fill-mode: forwards;\n animation-direction: normal;\n}\n.state-control-checkbox:checked + .dialog-frame {\n display: flex;\n}\n.state-control-checkbox + .dialog-frame {\n display: none;\n}\n\n@keyframes dialog-hide {\n from {\n opacity: 1;\n z-index: 200;\n }\n 90% {\n opacity: 0;\n z-index: -1;\n }\n to {\n opacity: 0;\n z-index: -1;\n }\n}\n\n@keyframes dialog-show {\n from {\n opacity: 0;\n z-index: -1;\n }\n 10% {\n z-index: 200;\n }\n to {\n opacity: 1;\n z-index: 200;\n }\n}\n\n.state-control-checkbox:checked ~ .dialog-container2 {\n background: rgba(200, 200, 200, 0.4);\n animation-name: dialog-show2;\n animation-duration: 0.4s;\n animation-iteration-count: 1;\n animation-fill-mode: forwards;\n animation-direction: normal;\n}\n.state-control-checkbox ~ .dialog-container2 {\n background: rgba(100, 100, 100, 0.4);\n animation-name: dialog-hide2;\n animation-duration: 0.4s;\n animation-iteration-count: 1;\n animation-fill-mode: forwards;\n animation-direction: normal;\n}\n/* .state-control-checkbox:checked + .dialog-frame {\n display: flex;\n}\n.state-control-checkbox + .dialog-frame {\n display: none;\n} */\n\n@keyframes dialog-hide2 {\n from {\n opacity: 1;\n z-index: 400;\n }\n 90% {\n opacity: 0;\n z-index: -1;\n }\n to {\n opacity: 0;\n z-index: -1;\n }\n}\n\n@keyframes dialog-show2 {\n from {\n opacity: 0;\n z-index: -1;\n }\n 10% {\n z-index: 400;\n }\n to {\n opacity: 1;\n z-index: 400;\n }\n}\n\n.tooltip-text {\n display: none;\n position: absolute;\n padding: 4px;\n font-size: 0.7rem;\n line-height: 2rem;\n color: #ddd;\n border-radius: 5px;\n background: #444;\n /* width: 100px; */\n}\n.tooltip-text-100px {\n width: 100px;\n}\n.tooltip-text-thin {\n line-height: 1rem;\n}\n.tooltip-text-right {\n line-height: 1rem;\n}\n.tooltip-text:before {\n content: "";\n position: absolute;\n top: -1.4rem;\n border: 12px solid transparent;\n border-top: 16px solid #444;\n margin-left: 0rem;\n transform: rotateZ(180deg);\n}\n.tooltip:hover .tooltip-text {\n display: inline-block;\n top: 30px;\n left: 0px;\n}\n.tooltip:hover .tooltip-text-lower {\n display: inline-block;\n top: 60px;\n left: 0px;\n}\n\n.tooltip {\n position: relative;\n cursor: pointer;\n display: inline-block;\n z-index: 10;\n}\n\n/* ################## */\n.merge-field-container {\n display: flex;\n flex-direction: column;\n}\n.merge-field-container .merge-field {\n display: flex;\n flex-direction: row;\n }\n.merge-field-container .merge-field .merge-field-elem {\n padding-left: 5px;\n }\n.merge-field-container .merge-field .red {\n color: #f00;\n }\n.merge-field-container .merge-field .purple {\n color: #33f;\n }\n.merge-field-container .merge-field .grey-bold {\n color: #555;\n font-weight: 800;\n }\n.model-slot-area {\n display: inline-block;\n background: var(--company-color2);\n border-radius: 10px;\n padding: 20px;\n}\n.model-slot-area .model-slot-panel {\n display: flex;\n flex-direction: row;\n gap: 5px;\n }\n.model-slot-area .model-slot-panel .model-slot-tiles-container {\n display: flex;\n flex-direction: row;\n gap: 2px;\n flex-wrap: wrap;\n overflow-y: scroll;\n max-height: 12rem;\n\n /* width: calc(30rem + 40px + 10px); */\n }\n.model-slot-area .model-slot-panel .model-slot-tiles-container::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n }\n.model-slot-area .model-slot-panel .model-slot-tiles-container::-webkit-scrollbar-track {\n background-color: #eee;\n border-radius: 3px;\n }\n.model-slot-area .model-slot-panel .model-slot-tiles-container::-webkit-scrollbar-thumb {\n background: #f7cfec80;\n border-radius: 3px;\n }\n.model-slot-area .model-slot-panel .model-slot-buttons {\n display: flex;\n gap: 5px;\n flex-direction: column;\n justify-content: space-between;\n width: 4rem;\n }\n.model-slot-area .model-slot-panel .model-slot-buttons .model-slot-button {\n border: solid 2px #999;\n color: white;\n font-size: 0.8rem;\n border-radius: 2px;\n background: #333;\n cursor: pointer;\n padding: 5px;\n text-align: center;\n width: 3rem;\n }\n.model-slot-area .model-slot-panel .model-slot-buttons .model-slot-button:hover {\n border: solid 2px #faa;\n }\n.model-slot-area .model-slot-panel .model-slot-buttons .model-slot-sort-buttons {\n height: 50%;\n }\n.model-slot-area .model-slot-panel .model-slot-buttons .model-slot-sort-buttons .model-slot-sort-button {\n color: white;\n font-size: 0.8rem;\n border-radius: 4px;\n background: #333;\n border: solid 2px #444;\n cursor: pointer;\n padding: 1px;\n text-align: center;\n width: 3rem;\n }\n.model-slot-area .model-slot-panel .model-slot-buttons .model-slot-sort-buttons .model-slot-sort-button-active {\n color: white;\n font-size: 0.8rem;\n border-radius: 4px;\n background: #595;\n border: solid 2px #595;\n cursor: pointer;\n padding: 1px;\n text-align: center;\n width: 3rem;\n }\n.model-slot-area .model-slot-panel .model-slot-buttons .model-slot-sort-buttons .model-slot-sort-button:hover {\n border: solid 2px #faa;\n background: #343;\n }\n.model-slot-tile-container,\n.model-slot-tile-container-selected {\n width: 6rem;\n height: 6rem;\n border-radius: 2px;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n.model-slot-tile-container-selected {\n background: #43030c;\n}\n.model-slot-tile-container:hover {\n background: #43030c;\n}\n\n.model-slot-tile-icon-div {\n width: 5rem;\n height: 5rem;\n padding-top: 4px;\n position: relative;\n}\n.model-slot-tile-icon {\n width: 5rem;\n height: 5rem;\n -o-object-fit: contain;\n object-fit: contain;\n border-radius: 10px;\n position: absolute;\n}\n.model-slot-tile-vctype {\n position: absolute;\n font-size: 0.6rem;\n font-weight: 800;\n top: 5px;\n left: 2px;\n background: RGBA(10, 200, 100, 0.6);\n border-radius: 5px;\n padding: 0px 2px 0px 2px;\n}\n.model-slot-tile-icon-no-entry {\n color: gray;\n position: absolute;\n top: 2rem;\n}\n.model-slot-tile-dscription {\n font-size: 0.7rem;\n font-weight: 700;\n color: navajowhite;\n padding-top: 4px;\n}\n\n.character-area {\n display: flex;\n gap: 5px;\n padding: 20px;\n}\n\n.character-area .portrait-area {\n width: 20rem;\n height: 20rem;\n }\n\n.character-area .portrait-area .portrait-container {\n position: relative;\n width: 20rem;\n height: 20rem;\n }\n\n.character-area .portrait-area .portrait-container .portrait {\n width: 20rem;\n height: 20rem;\n -o-object-fit: contain;\n object-fit: contain;\n border-radius: 10px;\n position: absolute;\n }\n\n.character-area .portrait-area .portrait-container .portrait-area-status {\n width: 5.5rem;\n background: var(--company-color2);\n color: white;\n position: absolute;\n padding: 3px;\n font-size: 0.7rem;\n left: 5px;\n top: 5px;\n border-radius: 2px;\n }\n\n.character-area .portrait-area .portrait-container .portrait-area-status .portrait-area-status-vctype {\n font-weight: 800;\n color: #FFF;\n }\n\n.character-area .portrait-area .portrait-container .portrait-area-terms-of-use {\n width: 5rem;\n background: rgba(100, 100, 100, 0.5);\n color: white;\n position: absolute;\n padding: 2px;\n font-size: 0.7rem;\n right: 5px;\n bottom: 5px;\n }\n\n.character-area .portrait-area .portrait-container .portrait-area-terms-of-use .portrait-area-terms-of-use-link {\n color: white;\n }\n\n.character-area .character-area-control-area {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n.character-area .character-area-control-area .character-area-control {\n display: flex;\n gap: 3px;\n align-items: center;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-buttons {\n display: flex;\n flex-direction: row;\n gap: 10px;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-buttons .character-area-control-button-active {\n width: 5rem;\n border: solid 1px #333;\n border-radius: 2px;\n background: #ada;\n font-weight: 700;\n text-align: center;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-buttons .character-area-control-button-stanby {\n width: 5rem;\n border: solid 1px #999;\n border-radius: 2px;\n background: #aba;\n cursor: pointer;\n font-weight: 700;\n text-align: center;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-buttons .character-area-control-button-stanby:hover {\n border: solid 1px #000;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-buttons .character-area-control-button-disable {\n width: 5rem;\n border: solid 1px #333;\n border-radius: 2px;\n background: #d3d7d3;\n font-weight: 700;\n text-align: center;\n color: grey;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-buttons .character-area-control-passthru-button-stanby {\n width: 5rem;\n border: solid 1px #999;\n border-radius: 15px;\n padding: 2px;\n background: #aba;\n cursor: pointer;\n font-weight: 700;\n font-size: 0.8rem;\n text-align: center;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-buttons .character-area-control-passthru-button-stanby:hover {\n border: solid 1px #000;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-buttons .character-area-control-passthru-button-active {\n width: 5rem;\n border: solid 1px #955;\n border-radius: 15px;\n padding: 2px;\n background: #fdd;\n cursor: pointer;\n font-weight: 700;\n font-size: 0.8rem;\n text-align: center;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-buttons .character-area-control-passthru-button-active:hover {\n border: solid 1px #000;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-title {\n width: 4rem;\n font-weight: 700;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-field {\n /* width: 20rem; */\n display: flex;\n flex-direction: column;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-field .character-area-text {\n font-size: 0.9rem;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-field .character-area-slider-control {\n display: flex;\n flex-direction: row;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-field .character-area-slider-control .character-area-slider-control-kind {\n width: 3rem;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-field .character-area-slider-control .character-area-slider-control-slider {\n width: 10rem;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-field .character-area-slider-control .character-area-slider-control-val {\n width: 3rem;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-field .character-area-slider-control .character-area-slider-control-text {\n padding: 0px 1px 0px 1px;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-field .character-area-buttons {\n display: flex;\n flex-direction: row;\n gap: 5px;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-field .character-area-buttons .character-area-button {\n border: solid 2px #999;\n color: white;\n font-size: 0.8rem;\n border-radius: 2px;\n background: #666;\n cursor: pointer;\n padding: 5px;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-field .character-area-buttons .character-area-button:hover {\n border: solid 2px #faa;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-field .character-area-buttons .character-area-toggle-button {\n border: solid 2px #999;\n color: white;\n background: #666;\n\n cursor: pointer;\n\n font-size: 0.8rem;\n border-radius: 5px;\n height: 1.2rem;\n padding-left: 2px;\n padding-right: 2px;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-field .character-area-buttons .character-area-toggle-button:hover {\n border: solid 2px #faa;\n }\n\n.character-area .character-area-control-area .character-area-control .character-area-control-field .character-area-buttons .character-area-toggle-button-active {\n border: solid 2px #999;\n color: white;\n background: #844;\n\n cursor: pointer;\n\n font-size: 0.8rem;\n border-radius: 5px;\n height: 1.2rem;\n padding-left: 2px;\n padding-right: 2px;\n }\n\n/* audio::-webkit-media-controls-play-button,\naudio::-webkit-media-controls-panel {\n background-color: #ff0;\n height: 1rem;\n}\naudio::-webkit-media-controls-enclosure {\n max-height: 1rem;\n}\naudio::-webkit-media-controls {\n justify-content: start;\n}\naudio::-webkit-media-controls-overlay-enclosure{\n height: 1rem;\n} */\n\n.config-area {\n display: flex;\n gap: 5px;\n padding: 20px;\n}\n\n.config-area .config-sub-area {\n display: flex;\n flex-direction: column;\n gap: 3px;\n }\n\n.config-area .config-sub-area .config-sub-area-control {\n display: flex;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-title {\n width: 5rem;\n font-weight: 700;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-title-long {\n width: 20rem;\n font-weight: 700;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field {\n width: 15rem;\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-noise-container {\n display: flex;\n gap: 10px;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-noise-container .config-sub-area-noise-checkbox-container {\n display: flex;\n gap: 5px;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-slider-control {\n display: flex;\n flex-direction: row;\n /*.config-sub-area-slider-control-val {\n width: 3rem;\n }*/\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-slider-control .config-sub-area-slider-control-kind {\n width: 1rem;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-slider-control .config-sub-area-slider-control-slider {\n width: 10rem;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-buttons {\n display: flex;\n flex-direction: row;\n gap: 5px;\n align-items: center;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-buttons .config-sub-area-button {\n border: solid 2px #999;\n color: white;\n background: #666;\n\n cursor: pointer;\n\n font-size: 0.8rem;\n border-radius: 5px;\n height: 1.2rem;\n padding-left: 2px;\n padding-right: 2px;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-buttons .config-sub-area-button:hover {\n border: solid 2px #faa;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-buttons .config-sub-area-button-active {\n border: solid 2px #999;\n color: white;\n background: #844;\n\n cursor: pointer;\n\n font-size: 0.8rem;\n border-radius: 5px;\n height: 1.2rem;\n padding-left: 2px;\n padding-right: 2px;\n white-space: nowrap;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-buttons .config-sub-area-button-text-small {\n font-size: 0.5rem;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-control-field-auido-io {\n display: flex;\n flex-direction: row;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-control-field-auido-io .config-sub-area-control-field-auido-io-filter {\n max-width: 30%;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-control-field-auido-io .config-sub-area-control-field-auido-io-select {\n max-width: 70%;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-control-field-screen-select {\n display: flex;\n flex-direction: row-reverse;\n gap: 5px;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-control-field-screen-select .config-sub-area-control-field-screen-select-button-active {\n font-size: 0.8rem;\n border: solid 1px #333;\n border-radius: 5px;\n background: #ada;\n height: 1.2rem;\n padding-left: 2px;\n padding-right: 2px;\n cursor: pointer;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-control-field-screen-select .config-sub-area-control-field-screen-select-button {\n border: solid 1px #333;\n background: #fff;\n font-size: 0.8rem;\n border-radius: 5px;\n height: 1.2rem;\n padding-left: 2px;\n padding-right: 2px;\n cursor: pointer;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-control-field-wav-file {\n display: flex;\n flex-direction: row;\n gap: 5px;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-control-field-wav-file .config-sub-area-control-field-wav-file-audio-container {\n height: 1rem;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-control-field-wav-file .config-sub-area-control-field-wav-file-audio-container .config-sub-area-control-field-wav-file-audio {\n height: 1rem;\n width: 15rem;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-control-field-wav-file .config-sub-area-control-field-wav-file-folder {\n height: 1rem;\n width: 1rem;\n cursor: pointer;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-control-field-wav-file .config-sub-area-control-field-wav-file-echoback-button {\n border: solid 1px #333;\n background: #fff;\n font-size: 0.8rem;\n border-radius: 5px;\n height: 1.2rem;\n padding-left: 2px;\n padding-right: 2px;\n cursor: pointer;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field .config-sub-area-control-field-wav-file .config-sub-area-control-field-wav-file-echoback-button-active {\n font-size: 0.8rem;\n border: solid 1px #333;\n border-radius: 5px;\n background: #ada;\n height: 1.2rem;\n padding-left: 2px;\n padding-right: 2px;\n cursor: pointer;\n }\n\n.config-area .config-sub-area .config-sub-area-control .config-sub-area-control-field-long {\n width: 30rem;\n }\n\n.headerArea {\n display: flex;\n flex-direction: column;\n}\n\n.headerArea .title1 {\n display: flex;\n flex-direction: row;\n gap: 5px;\n align-items: flex-end;\n }\n\n.headerArea .title1 .title {\n font-size: 1.8rem;\n font-weight: 700;\n color: #333;\n text-shadow: 0 0 2px #333;\n }\n\n.headerArea .title1 .title-version {\n font-size: 0.9rem;\n }\n\n.headerArea .title1 .title-version-number {\n font-size: 0.7rem;\n }\n\n.headerArea .icons {\n display: flex;\n flex-direction: row;\n gap: 20px;\n }\n\n.headerArea .icons .belongings {\n display: flex;\n flex-direction: row;\n gap: 3px;\n }\n\n.headerArea .icons .belongings .belongings-button {\n border: solid 2px #999;\n color: white;\n font-size: 0.8rem;\n border-radius: 5px;\n background: #666;\n cursor: pointer;\n padding: 5px;\n height: 1.7rem;\n top: -2px;\n }\n\n.headerArea .icons .belongings .belongings-button:hover {\n border: solid 2px #cc6;\n }\n\n.advanced-setting-container {\n display: flex;\n flex-direction: column;\n gap: 5px;\n margin: 10px;\n}\n\n.advanced-setting-container .advanced-setting-container-row {\n display: flex;\n flex-direction: row;\n gap: 5px;\n }\n\n.advanced-setting-container .advanced-setting-container-row .advanced-setting-container-row-title {\n width: 7rem;\n font-weight: 700;\n font-size: 0.9rem;\n }\n\n.advanced-setting-container .advanced-setting-container-row .advanced-setting-container-row-title-long {\n width: 20rem;\n font-weight: 700;\n font-size: 0.9rem;\n }\n\n.advanced-setting-container .advanced-setting-container-row .advanced-setting-container-row-field {\n width: 15rem;\n font-size: 0.9rem;\n }\n\n.advanced-setting-container .advanced-setting-container-row .advanced-setting-container-row-field .advanced-setting-container-row-field-crossfade-container {\n display: flex;\n flex-direction: row;\n gap: 5px;\n width: 10rem;\n }\n\n.advanced-setting-container .advanced-setting-container-row .advanced-setting-container-row-field .advanced-setting-container-row-field-crossfade-container > div {\n display: flex;\n flex-direction: row;\n gap: 3px;\n }\n\n.advanced-setting-container .advanced-setting-container-row .advanced-setting-container-row-field .advanced-setting-container-row-field-crossfade-container > div > div:nth-child(1) {\n color: #333;\n }\n\n.advanced-setting-container .advanced-setting-container-row .advanced-setting-container-row-field .advanced-setting-container-row-field-crossfade-container > div > div:nth-child(2) {\n }\n.get-server-information-container {\n margin: 10px;\n}\n.get-server-information-container .get-server-information-text-area {\n width: 100%;\n height: 20rem;\n }\n.merge-lab-container {\n display: flex;\n flex-direction: column;\n margin: 10px;\n gap: 10px;\n}\n.merge-lab-container .merge-lab-type-filter {\n display: flex;\n flex-direction: row;\n }\n.merge-lab-container .merge-lab-type-filter > div:nth-child(1) {\n width: 50%;\n }\n.merge-lab-container .merge-lab-type-filter > div:nth-child(2) {\n width: 50%;\n }\n.merge-lab-container .merge-lab-manipulator {\n display: flex;\n flex-direction: row;\n }\n.merge-lab-container .merge-lab-manipulator .merge-lab-model-list {\n width: 70%;\n overflow-y: scroll;\n max-height: 20rem;\n }\n.merge-lab-container .merge-lab-manipulator .merge-lab-model-list::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n }\n.merge-lab-container .merge-lab-manipulator .merge-lab-model-list::-webkit-scrollbar-track {\n background-color: #eee;\n border-radius: 3px;\n }\n.merge-lab-container .merge-lab-manipulator .merge-lab-model-list::-webkit-scrollbar-thumb {\n background: #f7cfec80;\n border-radius: 3px;\n }\n.merge-lab-container .merge-lab-manipulator .merge-lab-model-list .merge-lab-model-item {\n display: flex;\n flex-direction: row;\n }\n.merge-lab-container .merge-lab-manipulator .merge-lab-model-list .merge-lab-model-item > div:nth-child(1) {\n width: 50%;\n }\n.merge-lab-container .merge-lab-manipulator .merge-lab-model-list .merge-lab-model-item > div:nth-child(2) {\n width: 50%;\n }\n.merge-lab-container .merge-lab-manipulator .merge-lab-merge-buttons {\n display: flex;\n flex-direction: column-reverse;\n width: 30%;\n }\n.merge-lab-container .merge-lab-manipulator .merge-lab-merge-buttons .merge-lab-merge-button {\n border: solid 2px #ddd;\n color: black;\n font-size: 0.8rem;\n border-radius: 5px;\n background: #eee;\n cursor: pointer;\n padding: 5px;\n height: 1.7rem;\n text-align: center;\n }\n.merge-lab-container .merge-lab-manipulator .merge-lab-merge-buttons .merge-lab-merge-button:hover {\n border: solid 2px #aaa;\n }\n.merge-lab-container .merge-lab-manipulator .merge-lab-merge-buttons .merge-lab-merge-buttons-notice {\n font-size: 0.7rem;\n font-weight: 700;\n color: #333;\n text-align: center;\n }\n\n.blinking {\n animation: flash 0.7s cubic-bezier(0.91, -0.14, 0, 1.4) infinite;\n}\n\n@keyframes flash {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.5;\n }\n}\n\n.blink {\n animation: blinking 0.8s ease-in-out infinite alternate;\n}\n\n@keyframes blinking {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n',""]);const f=u},513:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var i=n(81),r=n.n(i),a=n(645),o=n.n(a)()(r());o.push([e.id,".error-container {\n margin: 2rem;\n}\n .error-container .top-error-message {\n color: #44a;\n font-size: 2rem;\n font-weight: 100;\n }\n .error-container .top-error-description {\n color: #444;\n font-size: 1rem;\n font-weight: 100;\n }\n .error-container .error-detail {\n margin-top: 2rem;\n padding: 1rem;\n border: 1px solid;\n }\n .error-container .error-detail .error-name {\n font-weight: 700;\n }\n .error-container .error-detail .error-message {\n margin-top: 0.5rem;\n }\n .error-container .error-detail .error-info-container {\n margin-top: 0.5rem;\n font-size: 0.8rem;\n }\n .error-container .error-detail .error-info-container .error-info-line {\n }\n",""]);const s=o},645:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",i=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),i&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),i&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,i,r,a){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(i)for(var s=0;s0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=a),n&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=n):d[2]=n),r&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=r):d[4]="".concat(r)),t.push(d))}},t}},81:e=>{"use strict";e.exports=function(e){return e[1]}},703:(e,t,n)=>{"use strict";var i=n(414);function r(){}function a(){}a.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,a,o){if(o!==i){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:r};return n.PropTypes=n,n}},697:(e,t,n)=>{e.exports=n(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},448:(e,t,n)=>{"use strict";var i=n(294),r=n(840);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n